Wednesday, October 29, 2008

Simple Web UI

Graham Wooden posted on Kamailio (OpenSER) users mailing list the news about a simple web UI.

After seeing that CDRTool was a little too complex and complicated for that matter, he decided to take the CDR gathering and add a "simple" web UI to it, allowing to maintain SIP users and various settings (some are not shown in this version right now).

As a preface - this is very plain, not stylized, no CSS, no fancy layouts, etc.


I hope people see value with this as Graham too, and will start contributing to develop it to a nice and robust web UI for Kamailio (OpenSER).

Further details:

Thursday, October 23, 2008

Kamailio v1.4.2 Released

A new release in 1.4 series is out. Kamailio (OpenSER) 1.4.2 is based on the latest version of branch 1.4, including many fixes in code and documentation, therefore those running 1.4.0 or 1.4.1 are advised to upgrade. This is a minor release that includes updates since v1.4.1 - configuration file and database compatibility is preserved.

Source tarballs are available at:

Detailed changelog:

Download via SVN:

svn co kamailio

Tag for this release can be browsed at:

Project site at

Modules' documentation:

What is new in 1.4.x release series is summarized in the announcement of v1.4.0:

Note: Kamailio is the new name of OpenSER project. First version under Kamailio name was 1.4.0. Older versions will continue to use OpenSER name.

Analysis of a VoIP Attack

Klaus Darilion, developer and member of management team of Kamailio (OpenSER) project, published a deep analysis of a recent VoIP attack.

Several IT news websites reported VoIP attacks against home users containing lots of myths and incorrect statements. Unfortunately, they also give wrong security advices.

Klaus decided to write an article about this attack and give some advices for protection. The document is available for download at:

Friday, October 17, 2008

LCR Module Enhancements

Juha Heinanen just committed to Kamailio (OpenSER) trunk an enhanced version of lcr module, including new features and increasing performance:

* New high-performance implementation that keeps lcr information in in-memory hash table, whose size can be given in a new module parameter 'lcr_hash_size'. See lcr/README for lcr functions' execution time.
* New 'weight' field in 'gw' table that can be used to assign a gateway a weight among gateways of its group.
* Support for prefix_mode=1 has been dropped.
* lcr_dump MI function has been split into lcr_gw_dump and lcr_lcr_dump functions.
* lcr_reload function is now executed under a lock thus minimizing race conditions.
* Regular expressions are now Perl 5.x, instead of POSIX, compatible due to use of PCRE regular expression library. This allow pre-compile in shared memory at load time, avoiding checks and regexp compilation at runtime.

Track what is new in upcoming Kamailio 1.5.0 at:

You can download trunk version of Kamailio via SVN:

svn co kamailio

Thursday, October 16, 2008

Asynchronous syslogging

Courtesy of Henning Westerholt, Kamailio (OpenSER) development version has now support for non-blocking logging. This was implemented using the syslog-async functionality from the dnsmasq server [1] from Simon Kelley.

The standard Unix syslog() library routine can block waiting for the syslog daemon. On some systems, using a datagram socket for /dev/log avoids endless waits, but on Linux, even this does not work. Try typing:

killall -SIGSTOP $pid_of_syslog

into a root terminal on a non-critical machine. Then generate traffic to get some logs, eventually, the server will stop. This blocking of the syslog daemon can happens because of bugs, or if the daemon waits for external events, like DNS lookups.

Instead of blocking, log-lines are buffered in memory. The buffer size is limited and if the buffer overflows log lines are lost. When lines are lost this fact is logged with a message.

This functionality can be enabled with setting the define SYSLOG_ASYNC in the Makefile.defs file. The default is the normal log functionality from the system library, nothing changed if the define is not set.

You can get the code from the svn repository:

svn co kamailio

Debian packages for several debian releases are available at:


Tuesday, October 14, 2008

sip:wise - launch of new products

SIPWISE, the creator of Kamailio/OpenSER Web Configuration Wizard launched two new products:

- sip:carrier - a secure and scalable Class5 SIP platform for ISPs, ITSPs, Telcos, Mobile Operators and Carriers, packed in highly available, high-performance hardware.
- sip:provider - a turnkey platform enabling small and medium size operators to launch professional VoIP services within a couple of days.

It is just wonderful to see new products that uses Kamailio/OpenSER on the market, especially coming from those being tight involved in the project, this time is the case of Andreas Granig, long time developer of Kamailio/OpenSER.

Just few time ago, I wrote about Oigaa Virtual PBX Service, coming from Voztelecom and Jesus Rodriguez, another long time developer and supporter of Kamailio/OpenSER.

Monday, October 6, 2008

Registrar Enhancements

In the last time several enhancements were added to registrar module to help in dealing with user location records. This correlated with the new modue pv shall give lot of control over the destination set for calls.

To get the latest Kamailio (OpenSER) devel version, check out the latest svn:

svn co kamailio

The news in registrar module are:

- ability to unregister all contacts for a SIP addres - there is a new function: unregister(table, uri)
- ability to store and maintain single contact per user - the save() function accepts a new value for flags parameter (0x04) to restrict to one single record in location table
- ability to access the attributes of all contacts for a user - there are two new functions: reg_fetch_contacts(table, uri, profile) and reg_free_contacts(profile) to make available/release the contacts for a SIP uri. After fetching the contacts, the attributes can be accessed via pseudo variable $ulc(profile=>attr).

For more details see the README:

Here are couple of use cases:

1) only one contact per user

save("location", "0x04");

Note that if you have couple of phones registering for same user, the one that sent last REGISTER message will be the only ringing.

2) check if a user is calling from a registered device and if not, deny the call

if(!reg_fetch_contacts("location", "$fu", "caller"))
sl_send_reply("403", "Please register first");
$var(i) = 0;
$var(found) = 0;
$var(contact) = $(ct{nameaddr.uri});
while($var(found) == 0 && $var(i) < $(ulc(caller=>count)))
$var(found) = 1;
$var(i) = $var(i) + 1;
if($var(found) == 0)
sl_send_reply("403", "Please register first");

For the future:
- unregister() to get a $ulc(...) variable as parameter to unregister a specific contact
- drop a branch via pv module

Wednesday, October 1, 2008

Towards Kamailio v1.5.0

Recently we just released 1.4.1 in the latest stable branch, so it is time to give updates on the development version of the project to be released as v1.5.0. In less that two months since 1.4.x release series was branched, lot of new things happened - new modules and features, code refactoring and fixes.

The outline of the new additions:

A drafted version of the roadmap is available at:

As shortcut, those links are hosted on the website page:

For a deeper track of all changes you can browse the SVN repository at Source Forge.

Download the version from SVN and try out. Your feedback is very much appreciated!

svn co kamailio