Go SIP Stack

Related tags

Network gosips
Overview

GoSIPs

Go SIP Stack (http://www.GoSIPs.org)

The objective of GoSIPs is to develop a Golang stack interface and implementation to the Session Initiation Protocol (SIP) that can be used independently or by higher level programming entities and environments.

GoSIPs is still in heavy development stage. Currently, SIP Message Parser/Encoder is almost done, but it still need more polish and torture-test.

Issues
  • Remove extra trailing \r\n

    Remove extra trailing \r\n

    Both ContentLengthImpl.String() and SIPMessage.String() append core.SIPSeparatorNames_NEWLINE.

    In addition to SIPRequest.String() adding another newline, empty messages will have 3 newlines, resulting in responses like:

    SIP/2.0 400 Content-Length mis-match

    opened by bonan 1
  • fix errors found by vet

    fix errors found by vet

    This pull request was made with an automated tool.

    The suggested change fixes one or more problems discovered by "go vet".

    See https://github.com/functionary/functionary for more details on the @functionary GitHub user.

    opened by functionary 0
  • Tests failing

    Tests failing

    This is for go version 1.14.2

    --- FAIL: TestHostNameParser (0.00s)
        HostNameParser_test.go:23: foo.bar.com:1234
        HostNameParser_test.go:23: proxima.chaplin.bt.co.uk
        HostNameParser_test.go:23: 129.6.55.181:2345
    FAIL
    FAIL	gosips/core	0.397s
    ?   	gosips/rtp	[no test files]
    ?   	gosips/sip	[no test files]
    ?   	gosips/sip/address	[no test files]
    ?   	gosips/sip/header	[no test files]
    ?   	gosips/sip/message	[no test files]
    --- FAIL: TestTorture2 (0.00s)
        Torture2_test.go:35: 1
        Torture2_test.go:38: ParseException: Via: SIP/2.0/UDP 192.0.2.15;;,;,,
    
            :Protcoal Not Supported error
        Torture2_test.go:35: 2
        Torture2_test.go:38: Content Length Larger Than Message
        Torture2_test.go:35: 3
        Torture2_test.go:38: ParseException: unexpected token "-"
        Torture2_test.go:35: 4
        Torture2_test.go:38: strconv.Atoi: parsing "36893488147419103232": value out of range
        Torture2_test.go:35: 5
        Torture2_test.go:38: strconv.Atoi: parsing "9292394834772304023312": value out of range
        Torture2_test.go:35: 6
        Torture2_test.go:38: StringTokenizer::GetNextChar: End of buffer
        Torture2_test.go:35: 7
        Torture2_test.go:38: ParseException: INVITE <sip:[email protected]> SIP/2.0
    
            :Expecting SIP
        Torture2_test.go:35: 8
        Torture2_test.go:38: ParseException: INVITE sip:[email protected]; lr SIP/2.0
    
            :Expecting SIP
        Torture2_test.go:35: 9
        Torture2_test.go:35: 10
        Torture2_test.go:35: 11
        Torture2_test.go:35: 12
        Torture2_test.go:38: GMT is only acceptable time zone
        Torture2_test.go:35: 13
        Torture2_test.go:35: 14
        Torture2_test.go:35: 15
        Torture2_test.go:35: 16
        Torture2_test.go:38: ParseException: OPTIONS sip:[email protected] SIP/7.0
    
            :Expecting SIP/2.0
        Torture2_test.go:35: 17
        Torture2_test.go:38: Start Line and CSeq Method Mismatch
        Torture2_test.go:35: 18
        Torture2_test.go:38: Start Line and CSeq Method Mismatch
        Torture2_test.go:35: 19
        Torture2_test.go:44: golden = SIP/2.0 4294967301 better not break the receiver
            Via: SIP/2.0/UDP 192.0.2.105;branch=z9hG4bK2398ndaoe
            Call-ID: bigcode.asdof3uj203asdnf3429uasdhfas3ehjasdfas9i
            CSeq: 353494 INVITE
            From: <sip:[email protected]>;tag=39ansfi3
            To: <sip:[email protected]>;tag=902jndnke3
            Content-Length: 0
            Contact: <sip:[email protected]>
    
    
        Torture2_test.go:45: failed = SIP/2.0 4294967301 better not break the receiver
            Via: SIP/2.0/UDP 192.0.2.105;branch=z9hG4bK2398ndaoe
            Call-ID: bigcode.asdof3uj203asdnf3429uasdhfas3ehjasdfas9i
            CSeq: 353494 INVITE
            From: <sip:[email protected]>;tag=39ansfi3
            To: <sip:[email protected]>;tag=902jndnke3
            Contact: <sip:[email protected]>
            Content-Length: 0
    
    
    
        Torture2_test.go:49: 274:e vs a
        Torture2_test.go:49: 275:n vs c
        Torture2_test.go:49: 277:- vs :
        Torture2_test.go:49: 278:L vs
        Torture2_test.go:49: 279:e vs <
        Torture2_test.go:49: 280:n vs s
        Torture2_test.go:49: 281:g vs i
        Torture2_test.go:49: 282:t vs p
        Torture2_test.go:49: 283:h vs :
        Torture2_test.go:49: 284:: vs u
    --- FAIL: TestTorture4 (0.00s)
        Torture4_test.go:37: Invalid: Contact: "Joe" <sip:[email protected]>;;;;
    
        Torture4_test.go:39: ParseException: ID expected
        Torture4_test.go:37: Invalid: Content-Length: -999
    
        Torture4_test.go:39: ParseException: unexpected token "-"
        Torture4_test.go:37: Invalid: CSeq: 36893488147419103232 REGISTER
    
        Torture4_test.go:39: strconv.Atoi: parsing "36893488147419103232": value out of range
        Torture4_test.go:37: Invalid: CSeq: 9292394834772304023312 OPTIONS
    
        Torture4_test.go:39: strconv.Atoi: parsing "9292394834772304023312": value out of range
        Torture4_test.go:48: golden = Invalid: Contact: <sip:[email protected]>;expires=280297596632815
    
        Torture4_test.go:49: failed = Contact: <sip:[email protected]>;expires=280297596632815
    
        Torture4_test.go:53: 0:I vs C
        Torture4_test.go:53: 1:n vs o
        Torture4_test.go:53: 2:v vs n
        Torture4_test.go:53: 3:a vs t
        Torture4_test.go:53: 4:l vs a
        Torture4_test.go:53: 5:i vs c
        Torture4_test.go:53: 6:d vs t
        Torture4_test.go:53: 9:C vs <
        Torture4_test.go:53: 10:o vs s
        Torture4_test.go:53: 11:n vs i
        Torture4_test.go:37: Invalid: Date: Fri, 01 Jan 2010 16:00:00 EST
    
        Torture4_test.go:39: GMT is only acceptable time zone
        Torture4_test.go:37: Invalid: Expires: 1000000000000000000000000000000000000000000000000</repeat>
    
        Torture4_test.go:39: strconv.ParseInt: parsing "1000000000000000000000000000000000000000000000000": value out of range
        Torture4_test.go:37: Invalid: Max-Forwards: 300
    
        Torture4_test.go:39: bad max forwards value 300
        Torture4_test.go:37: Invalid: Retry-After: 949302838503028349304023988
    
        Torture4_test.go:39: strconv.Atoi: parsing "949302838503028349304023988": value out of range
        Torture4_test.go:37: Invalid: To: "Mr. J. User <sip:[email protected]>
    
        Torture4_test.go:39: StringTokenizer::GetNextChar: End of buffer
        Torture4_test.go:37: Invalid: Via: SIP/2.0/UDP 192.0.2.15;;,;,,
    
        Torture4_test.go:39: ParseException: Via: SIP/2.0/UDP 192.0.2.15;;,;,,
            :Protcoal Not Supported error
        Torture4_test.go:37: Invalid: Via: SIP/7.0/UDP c.example.com;branch=z9hG4bKkdjuw
    
        Torture4_test.go:39: ParseException: Via: SIP/7.0/UDP c.example.com;branch=z9hG4bKkdjuw
            :Version Not Supported error
        Torture4_test.go:37: Invalid: Warning: 1812 overture "In Progress"
    
        Torture4_test.go:39: InvalidArgumentException: Code parameter in the Warning header is invalid
    FAIL
    FAIL	gosips/sip/parser	0.473s
    FAIL
    
    opened by kyteague 0
Owner
Rain Liu
Rustacean/Gopher, VoIP/RTC, Audio/Video Systems
Rain Liu
Diameter stack and Base Protocol (RFC 6733) for the Go programming language

Diameter Base Protocol Package go-diameter is an implementation of the Diameter Base Protocol RFC 6733 and a stack for the Go programming language. St

Alexandre Fiori 200 Jun 20, 2022
A RTP stack for Go

RTP/RTCP stack for Go This Go package implements a RTP/RTCP stack for Go. The package is a sub-package of the standard Go net package and uses standar

Werner Dittmann 292 Jun 20, 2022
A decentralized P2P networking stack written in Go.

noise noise is an opinionated, easy-to-use P2P network stack for decentralized applications, and cryptographic protocols written in Go. noise is made

Perlin Network 1.7k Jun 22, 2022
The Dual-Stack Dynamic DNS client, the world's first dynamic DNS client built for IPv6.

dsddns DsDDNS is the Dual-Stack Dynamic DNS client. A dynamic DNS client keeps your DNS records in sync with the IP addresses associated with your hom

Ryan Young 10 Jun 20, 2022
A modular is an opinionated, easy-to-use P2P network stack for decentralized applications written in Go.

xlibp2p xlibp2p is an opinionated, easy-to-use P2P network stack for decentralized applications written in Go. xlibp2p is made to be minimal, robust,

XFS Network 62 Jun 7, 2022
Carbyne Stack serverless compute service for secure multiparty computation

Carbyne Stack Ephemeral Service Ephemeral is a serverless compute service for secure multiparty computation based on Knative, Istio and Kubernetes. DI

Carbyne Stack 9 Jun 17, 2022
Technical specifications for the IPFS protocol stack

IPFS Specifications This repository contains the specs for the IPFS Protocol and associated subsystems. Understanding the meaning of the spec badges a

IPFS 953 Jun 25, 2022
Xlibp2p: an opinionated, easy-to-use P2P network stack for decentralized applications written in Go

xlibp2p xlibp2p is an opinionated, easy-to-use P2P network stack for decentraliz

null 2 Feb 21, 2022
Fix Burp Suite's horrible TLS stack & spoof any browser fingerprint

Awesome TLS This extension hijacks Burp's HTTP and TLS stack to make it more powerful and less prone to fingerprinting by all kinds of WAFs. It does t

Sleeyax 57 Jun 17, 2022
Go SIP Stack

GoSIPs Go SIP Stack (http://www.GoSIPs.org) The objective of GoSIPs is to develop a Golang stack interface and implementation to the Session Initiatio

Rain Liu 119 May 26, 2022
Sipexer - Modern and flexible SIP (RFC3261) command line tool

sipexer Modern and flexible SIP (RFC3261) command line tool. Overview sipexer is

Daniel-Constantin Mierla 120 Jun 25, 2022
Package gostackparse parses goroutines stack traces as produced by panic() or debug.Stack() at ~300 MiB/s.

gostackparse Package gostackparse parses goroutines stack traces as produced by panic() or debug.Stack() at ~300 MiB/s. Parsing this data can be usefu

Datadog, Inc. 75 Apr 25, 2022
Elastic Stack Docker + Sample Go AppElastic Stack Docker + Sample Go App

?? Elastic Stack Docker + Sample Go App Test Elastic Stack which includes Elasticsearch, Kibana, Filebeat and Metricbeat. It comes with a very simple

Ruben Delgado 0 Jan 14, 2022
A slice-based implementation of a stack. In Go!

Stackgo Stackgo is a slice-based implementation of a simple stack in Go. It uses a pre-alloc pagination strategy which adds little memory overhead to

Alessandro Diaferia 15 Dec 13, 2021
Lightweight RESTful database engine based on stack data structures

piladb [pee-lah-dee-bee]. pila means stack or battery in Spanish. piladb is a lightweight RESTful database engine based on stack data structures. Crea

Fernando Álvarez 194 Mar 21, 2022
Reduce debugging time while programming Go. Use static and stack-trace analysis to determine which func call causes the error.

Errlog: reduce debugging time while programming Introduction Use errlog to improve error logging and speed up debugging while you create amazing code

Martin Joly 406 Jun 15, 2022
Golang errors with stack trace and source fragments.

Golang Errors with Stack Trace and Source Fragments Tired of uninformative error output? Probably this will be more convenient: Example package main

null 727 Jun 26, 2022
A safe way to execute functions asynchronously, recovering them in case of panic. It also provides an error stack aiming to facilitate fail causes discovery.

Async Provides a safe way to execute functions asynchronously, recovering them in case of panic. It also provides an error stack aiming to facilitate

Studio Sol Comunicação Digital Ltda 108 Jun 7, 2022
A high productivity, full-stack web framework for the Go language.

Revel Framework A high productivity, full-stack web framework for the Go language. Current Version: 1.0.0 (2020-07-11) Supports go.mod package managem

Revel Framework 12.6k Jun 25, 2022
Diameter stack and Base Protocol (RFC 6733) for the Go programming language

Diameter Base Protocol Package go-diameter is an implementation of the Diameter Base Protocol RFC 6733 and a stack for the Go programming language. St

Alexandre Fiori 200 Jun 20, 2022
A RTP stack for Go

RTP/RTCP stack for Go This Go package implements a RTP/RTCP stack for Go. The package is a sub-package of the standard Go net package and uses standar

Werner Dittmann 292 Jun 20, 2022
Go http.Hander based middleware stack with context sharing

wrap Package wrap creates a fast and flexible middleware stack for http.Handlers. Features small; core is only 13 LOC based on http.Handler interface;

go-on - web toolkit in Go 59 Apr 5, 2022
Sample full stack micro services application built using the go-Micro framework.

goTemp goTemp is a full stack Golang microservices sample application built using go-micro. The application is built as a series of services that prov

null 58 Jun 20, 2022
Lambda stack to turn off and destroy all resources from your personal AWS Account to avoid billing surprises

AWS, Turn off my Account, please Lambda stack to turn off and destroy all resources from your personal AWS Account to avoid billing surprises Resource

Matheus Fidelis 63 Apr 10, 2022
goTempM is a full stack Golang microservices sample application built on top of the Micro platform.

goTempM is a full stack Golang microservices sample application built on top of the Micro platform.

null 26 Jun 13, 2022
Same as fmt.Errorf but with stack trace.

Annotation with stack trace for go1.13 Go 1.13 contains support for error wrapping. Now you can add additional information to an error by wrapping it

Roman Budnikov 39 Dec 25, 2020
stack-rpc 快速开发包

Micro 快速开发工具包 项目进行中 本仓库旨在提供面向 stack-rpc 生产环境的快速开发包。 目录 快速开始示例 控制台示例 以最常见的登录流程为例,实现一个场景简单,但包含微服务各种治理能力的示例 Hipster Shop示例 参考GoogleCloudPlatform/microser

Stack Labs 383 May 31, 2022
Golang && Back-end Stack , Continually updated

Stack Here Golang OS Net Note Tool Delve Authentication Paper Paper ?? Link GO官方文档 GO Official Doc GO官方博客 GO Official Blog GO官方仓库

G 211 Jun 17, 2022
A decentralized P2P networking stack written in Go.

noise noise is an opinionated, easy-to-use P2P network stack for decentralized applications, and cryptographic protocols written in Go. noise is made

Perlin Network 1.7k Jun 22, 2022