Giter Site home page Giter Site logo

viska's Introduction

Viska

A SIP server/framework built in Rust.

This is a wip, many things will change until it takes the final shape

Why

  • because building a customized modern SIP service on top of kamailio/asterisk/opensips as a developer is not intuitive.
  • because although there are some other servers like routr, but these are not made with development in mind, rather they have configuration that you can change. For instance you can't manipulate incoming or outgoing requests/responses.
  • because although there is nksip it requires you to not only understand how nkserver works but also Erlang and OTP in general
  • because the only real alternative is pjsip and if you are looking to build a SIP service you should probably look into that.

Having worked many years on HTTP frameworks, I really think that we can do something better in SIP.

How

It is built in Rust because that's a low lever, thread safe, performant language that I know well. It's built based on traits+generics, so that anything can be overriden at your will.

The idea is to create a small framework around the basic SIP layers, and then create libraries and implementations based on public traits for each SIP extension or service that is needed (like Registrar, Auth, Push notifications (RFC 8599) etc)

Progress

  • SIP general purpose library/parser with types
  • SDP general purpose library/parser with type
  • Transport layer
    • Udp transport
    • Tcp transport
    • WS transport
  • Transaction layer
    • Invite transaction + impl
    • Non Invite transaction + impl
  • TU layer trait
    • Registrar
    • Capabilities
    • Authentication
    • Dialogs
    • Sessions
      • Initiate a session
      • Modify a session
      • Terminating a session
    • Proxy behavior

viska's People

Contributors

vasilakisfil avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.