• Stars
    star
    429
  • Rank 97,768 (Top 2 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created about 9 years ago
  • Updated 9 months 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
15,150
star
2

blink

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

sectorlisp

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

hiptext

Turn images into text better than caca/aalib
C++
749
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
80
star
12

jtckdint

C23 Checked Arithmetic
C++
61
star
13

asterisk-voicechanger

Asterisk module for adjusting pitch of voices
C
31
star
14

spandsp

C
28
star
15

tokenbucket

Atomic SWAR Token Buckets
C
27
star
16

poemy2

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

django-bone

Generates Django Project Skeletons Simply and Properly
JavaScript
23
star
18

swatpd

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

zsh

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

sofia-sip

Forked for features and packaging
C
14
star
21

blink-isystem

C++
11
star
22

includeme

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

justinemacs

My emacs25 text editor configuration
Emacs Lisp
9
star
24

timespan

Check if timestamp falls within specific boundaries
Python
7
star
25

js2-closure

Automatic goog.require for Closure
Emacs Lisp
5
star
26

sparkles

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

web_library_example

Bootstrap Web Apps for ML Visualization
HTML
5
star
28

emacs-copilot

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

poemy

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

asterisk-parrot

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

jart.github.io

4
star
32

tensorflow-makefile

C++
3
star
33

libc-test

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

long-s.org

Vintage Engliſh Tranſlator
CoffeeScript
2
star
36

freeswitch

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

verobject

Version controlled object database on Redis
Python
1
star