# libsip
libsip is a library implementation of the sip protocol as described in
[rfc3261](https://tools.ietf.org/html/rfc3261). libsip intends to implement
parsing the entire SIP Protocol, but will only provide helpers for certain
common use cases. I begin developing this library because i was frustrated with
many of the SIP clients / Libraries on linux.
**WIP** This library is still very much under construction.
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Crates.io](https://img.shields.io/crates/v/libsip.svg)](https://crates.io/crates/libsip)
[![Docs.rs](https://docs.rs/libsip/badge.svg)](https://docs.rs/libsip)
[![Build Status](https://travis-ci.org/byteheathen/libsip.svg?branch=master)](https://travis-ci.org/byteheathen/libsip)
[![Build status](https://ci.appveyor.com/api/projects/status/5ritiyyl4jva3n4d?svg=true)](https://ci.appveyor.com/project/bytebuddha/libsip)
#### Running the examples
```bash
git clone https://github.com/ByteHeathen/libsip
cd /libsip
# This example expects a server with the credentials in examples/udp_register.rs
# to be running without it will fail.
cargo run --example registration
# This example expects a server with the credentials in examples/console.rs
# to be running without it will fail. It prints all requests received to the terminal.
cargo run --example console
```
#### dependencies
- **[nom](https://crates.io/crates/nom) 6.0.0-alpha1**
- **[rand](https://crates.io/crates/rand) 0.7.3**
- **[md5](https://crates.io/crates/md5) 0.7.0**
- **[sha](https://crates.io/crates/sha) 1.0.3**
- **[serde](https://crates.io/crates/serde) 1.0.107**
### Development
I've been using [fusionpbx](https://fusionpbx.com) as the testing server for this library.
I use a VirtualBox virtual machine running in bridged mode to simulate a PBX server running
on my local network. At this point i have only been able to implement Placing Calls,
Sending Messages and SIP registration.
#### Alternatives
- **[parsip](https://crates/crates/parsip)**
Is only for parsing SIP messages. I wanted libsip to be able to handle some user case's
specifically Registration.
- **[sip-codec](https://crates/crates/sip-codec)**
I attempted to use this library first, lots of features are not implemented like writing
sip requests and a few other fairly common things. I also wanted SIP Headers to be in the form of an enum witch would have required
basically rewriting the whole crate.
- **[sip](https://crates/crates/sip)**
This crate appears to be empty
- **[tokio-sip](https://crates.io/crates/tokio-sip)**
This crate also appears to be empty