[Asterisk-Users] SIP REGISTER script

John Todd jtodd at loligo.com
Tue Jun 24 11:40:11 MST 2003


Some of you have unusual SIP configurations, and this SIP perl script 
may be useful to get remote devices registering with your Asterisk or 
other SIP server.  Most Cisco routers, as an example, are too stupid 
to REGISTER, so this script would be required to dynamically register 
them with a remote server.  This may not be 100% applicable to 
Asterisk, since static registrations are possible, but who knows? 
Maybe someone will find this useful.  There is no password support on 
this version.  I haven't fooled around extensively with the script - 
feel free to modify and re-submit a better working copy.

If anyone wants to build the password-capable version of this, some 
tools can be found in the SER package (http://www.iptel.org/ser/) in 
the "utils/gen_ha1" directory - there is a password generator in 
there, along with C routines for WWW-Authorize responses.


Notes:

Replace "123.123.123.123" with the IP address of the remote SIP 
server that you're trying to REGISTER with.

Replace "sipdomain.company.com" with the domain you're using.  This 
may not matter much for some SIP servers, but others are fussy about 
it.

Change the "Expires: " value to whatever you think is useful.  It's 
measured in seconds.

Change "John Doe <sip:jdoe at foo.bar.net>" to your contact info 
(probably something like "<sip:99999 at 1.2.3.4>")

JT




Original script by Marian Durkovic


---------------------------- cut here -------------------------------

#!/usr/bin/perl
use Socket;


# USAGE register { local IP address, Extension number, SIP contact address }
register("1.2.3.4", "99999", "John Doe <sip:jdoe\@foo.bar.net>");

sub register {
     $local_ip = shift;
     $ext_number = shift;
     $contact = shift;
     $proxy_ip = "123.123.123.123";
     $tm = time();
     $seq = $tm % 65536;

$MESG="REGISTER sip:sipdomain.company.com SIP/2.0
Via: SIP/2.0/UDP $local_ip:5060
From: <sip:$ext_number\@sipdomain.company.com>
To: <sip:$ext_number\@sipdomain.company.com>
Contact: $contact
Call-ID: $tm\@$local_ip
CSeq: $seq REGISTER
Expires: 3700
Content-Length: 0

";


$proto = getprotobyname('udp');
socket(SOCKET, PF_INET, SOCK_DGRAM, $proto) ;
$iaddr = inet_aton("$local_ip");
$paddr = sockaddr_in(5060, $iaddr);
bind(SOCKET, $paddr)   ;
$port=5060;

$hisiaddr = inet_aton($proxy_ip)  ;
$hispaddr = sockaddr_in($port, $hisiaddr);

send(SOCKET, $MESG, 0,$hispaddr  ) || warn "send $host $!\n";


}

---------------------------- cut here -------------------------------



More information about the asterisk-users mailing list