SIPX (SIP eXchange) е SIP сървър, който има базовата функционалност за проксиране на разговор между два SIP клиента (телефона или програми). Той не претендира да бъде напълно завършено SIP решение, но е добър пример колко малко трябва, за да направите напълно фунционално SIP прокси, програмирано на C.

SIPX беше стартиран и разработен за забавление като домашен тестов проект (без някаква конкретна крайна цел, която да се постигне - просто изучавайки SIP протокола и експериментирайки с него на C). За моя изненада аз успях да завърша базовата функционалност на едно такова SIP прокси на по-малко от 500 реда програмен код на C! Това е нещото, което нарекох SIPX версия 1.0. Ден или два по-късно реших да го направя малко по-структурирано и ето как се появи малко по-струткурирана версия/вариант на този мой бета тест, който го маркирах като SIPX версия 2.0.

Както вече отбелязах, SIPX не претендира да бъде напълно функционално прокси с много опции. Всъщност то НЯМА никакви допълнителни опции (освен проксирането на разговорите и приемането на всички регистрации от крайни клиенти - SIP телефони или програми).
SIPX дори не е добър пример за структурирана програма ;)
НО SIPX Е много добър пример, за това колко лесно е да програмираш софтуер, поддържащ SIP протокол, и че винаги може да се направи базова SIP функционалност от всякакъв вид на 'няколко реда', без нуждата от огромни и комплексни библиотеки.

И още нещо - постарах се SIPX да се компилира и на LINUX и на Windows. Всъщност кода е достатъчно прост, нахвърлян, леко структуриран (може би;), но тепърва може да се доразвива (ако има заинтересовани и желаещи да помагат).

За да го стартирате и тествате:
sipx <ip> <port>

След като го стартирате можете да регистрирате SIP клиенти (телефони или програми) на указаните IP:port. Използвайте различни идентификатори за потребителско име при регистрация за всеки отделен SIP клиент. SIPX приема всяка една заявка за регистрация. За да наберете от SIP клиент A до SIP клиент B, въведете идентификацията, с която се е регистрирал SIP клиент B (т.е. потребителското му име). Това трябва да е всичко до момента!

Успешно е тестван с SJ Phone и X-Lite SIP програми. Би трябвало да работи с всеки друг SIP клиент (поне не виждам проблем защо да не стане).

Ако имате някакви коментари, идеи или предложения, драснете някой ред на: tsvetozar@gmail.com