• Stars
    star
    429
  • Rank 101,271 (Top 2 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created over 9 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Public Switched Telecommunications Network Unleashed

gosip

Version: 0.1

About

gosip (pronounced "gossip") is a library that lets you make phone calls using the Go programming language. It provides a full-stack SIP/RTP implementation that's tailored towards making calls over the PSTN through services such as Flowroute.

gosip is most suitable for backend telephony applications. This is especially true for apps that do interesting things with audio. gosip supports DSP out of the box by providing SSE optimised audio mixing, an assembly implementation of the µLaw codec (no other codecs are supported), and a comfort noise generator.

Telephony applications have traditionally been written on top of PBX systems like Asterisk via an extension interface. Frameworks such as Adhearsion have introduced further layers of abstraction to this unwieldy regime. These systems are slow, difficult to administer, and in many cases superfluous to the needs of the telephony app developer. gosip sets you free from Asterisk because you can have everything in a single easy-to-deploy binary.

gosip has excellent support for SRV/NAPTR failover by way of timeouts, ICMP refusal, and 502 Service Unavailable responses. It also supports SIP redirects as well as changing the audio/signalling path mid-call. But most importantly, gosip is lightweight enough that you can actually design your app to use a single process for each phone call (assuming your app is in the audio path.) By taking this non-monolithic approach to design, you can actually build a higher availability global telephony service with zero interruptions during software upgrades.

gosip parses SIP messages using the Ragel finite state machine compiler. Much of the BNF was copied directly from the SIP RFC. This implementation approach offers a fair amount of confidence that the parser is not only fast, but also correct and secure.

gosip is less suitable for PBX, IVR, and VoIP reselling. For these things, you should consider Asterisk, FreeSWITCH, or SER.

RFCs

Example RFCs

More Repositories

1

cosmopolitan

build-once run-anywhere c library
C
18,192
star
2

blink

tiniest x86-64-linux emulator
C
6,951
star
3

sectorlisp

Bootstrapping LISP in a Boot Sector
C
1,255
star
4

hiptext

Turn images into text better than caca/aalib
C++
761
star
5

bestline

ANSI Standard X3.64 Teletypewriter Command Session Library
C
349
star
6

fabulous

Print images, colors, and stylish text to the terminal with Python
Python
340
star
7

disaster

Disassemble C/C++ code under cursor in Emacs
Emacs Lisp
287
star
8

landlock-make

Sandboxing for GNU Make has never been easier
C++
178
star
9

redisbayes

Naïve Bayesian Text Classifier on Redis
Python
114
star
10

occupywallst

Stomping out capitalism, one line of code at a time
JavaScript
94
star
11

pledge

OpenBSD APIs ported to Linux userspace using SECCOMP BPF and Landlock LSM
C
93
star
12

jtckdint

C23 Checked Arithmetic
C++
61
star
13

json.cpp

JSON for Classic C++
C++
31
star
14

asterisk-voicechanger

Asterisk module for adjusting pitch of voices
C
31
star
15

spandsp

C
28
star
16

tokenbucket

Atomic SWAR Token Buckets
C
27
star
17

poemy2

poemy (a poetry generator) rewritten in C++
C++
24
star
18

django-bone

Generates Django Project Skeletons Simply and Properly
JavaScript
23
star
19

swatpd

Stolen WiFi Aggregate Tunneling Protocol Dæmon (RAID your internet connections!)
C
18
star
20

zsh

Zsh patched to support Actually Portable Executables git://git.code.sf.net/p/zsh/code (upstream pending)
C
15
star
21

sofia-sip

Forked for features and packaging
C
14
star
22

blink-isystem

C++
11
star
23

includeme

Automatic C/C++ '#include' and 'using' in Emacs (WORK IN PROGRESS)
Emacs Lisp
10
star
24

justinemacs

My emacs25 text editor configuration
Emacs Lisp
9
star
25

timespan

Check if timestamp falls within specific boundaries
Python
7
star
26

js2-closure

Automatic goog.require for Closure
Emacs Lisp
5
star
27

sparkles

A decision making tool (defunct, incomplete)
JavaScript
5
star
28

web_library_example

Bootstrap Web Apps for ML Visualization
HTML
5
star
29

emacs-copilot

Large language model code completion for Emacs
Emacs Lisp
5
star
30

asterisk-parrot

Annoying robot that repeats what you say on the phone
C
4
star
31

jart.github.io

4
star
32

poemy

Poetry Generator (DEPRECATED: See poemy2)
JavaScript
4
star
33

tensorflow-makefile

C++
3
star
34

chessy

A happy toy chess engine, just for fun :) If you want a proper chess engine, check out Stockfish.
C++
3
star
35

libc-test

C
3
star
36

long-s.org

Vintage Engliſh Tranſlator
CoffeeScript
2
star
37

freeswitch

Open Source Telecommunications Platform (Unofficial Fork)
C
2
star
38

verobject

Version controlled object database on Redis
Python
1
star