⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jabberreg.pl

📁 性能优秀的SIP Proxy
💻 PL
字号:
#!/usr/bin/perl -w## Register a new user with Jabber gateway## The parameters must be only the username part of the sip address# Change the $sip_domain according with your SIP server domain name#use Socket;use DBD::mysql;if(@ARGV == 0){	die ("Syntax: regjab.pl username1 username2 ...");}$db_driver = "mysql";$sip_domain = "voip.org";##### MySQL connection to JabberGW database$jab_db_nm = "sip_jab";			#JabberGW's database name$jab_db_hn = "127.0.0.1";		#JabberGW's database server address$jab_db_pt = "3306";			#JabberGW's database server port$jab_db_us = "user";			#JabberGW's database username$jab_db_ps = "*********";		#JabberGW's database password$jab_db_dsn = "DBI:$db_driver:database=$jab_db_nm;host=$jab_db_hn;port=$jab_db_pt";##### users table$jab_tb_nm = "jusers";			#JabberGW's subscriber table##### username column$jab_cl_usj = "jab_id";$jab_cl_psj = "jab_passwd";$jab_cl_uss = "sip_id";$jab_server = "localhost";		#Jabber server address$jab_srvid = "jabber.x.com";		#Jabber server id$jab_port = 5222;			#Jabber server port$iaddr = inet_aton($jab_server)   or die "no host: $jab_server";$paddr = sockaddr_in($jab_port, $iaddr);$proto = getprotobyname('tcp');### Connect to MySQL database$jab_dbh = DBI->connect($jab_db_dsn, $jab_db_us, $jab_db_ps);if(!$jab_dbh ){	print ('ERROR: Jabber\'s MySQL server not responding!');	exit;}foreach $jab_usr (@ARGV){	print "Subscribe SIP user <$jab_usr> to Jabber gateway\n";	#checkif user has already a Jabber ID	$sip_uri = "sip:$jab_usr\@$sip_domain";	$jab_pwd = "qw1$jab_usr#";	$jab_sth = $jab_dbh->prepare("SELECT $jab_cl_usj FROM $jab_tb_nm WHERE $jab_cl_uss='$sip_uri'");	if (!$jab_sth)	{		die($jab_dbh->errstr);	}	if (!$jab_sth->execute)	{		die($jab_sth->errstr);	}	if(!($jab_sth->fetchrow_hashref()))	{		# create Jabber account		print "Register SIP user <$jab_usr> to Jabber server\n";		socket(SOCK, PF_INET,SOCK_STREAM, $proto)  or die "socket: $!";		connect(SOCK, $paddr) or die "connect: $!";		$jcid = 0;		$err_no = 0;		$line = "<stream:stream to='$jab_srvid' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>";		send(SOCK, $line, 0);		recv(SOCK, $line, 256, 0);		$jid_p = index($line, "id=");		if($jid_p > 0)		{			$jid_p = $jid_p+4;			$jid_p1 = index($line, "'", $jid_p);			if($jid_p1 > 0)			{				$jid = substr($line, $jid_p, $jid_p1-$jid_p);				print("JID: $jid\n");			}		}		$jcid =$jcid + 1;		$line = "<iq id='$jcid' to='$jab_srvid' type='get'><query xmlns='jabber:iq:register'/></iq>";		send(SOCK, $line, 0);			recv(SOCK, $line, 512, 0);		# here we should check what Jabber really wants		# - I know for our srv, so skip it		# 		$jcid =$jcid + 1;		$line = "<iq id='$jcid' to='$jab_srvid' type='set'><query xmlns='jabber:iq:register'><username>$jab_usr</username><password>$jab_pwd</password></query></iq>";		send(SOCK, $line, 0);		recv(SOCK, $line, 512, 0);		if(index($line, " id='$jcid'")>0 && index($line, " type='error'")>0)		{			#error creating Jabber user			print("Error: creating Jabber user <$jab_usr>\n$line\n");			$err_no = 1;		}		$line = "</stream:stream>";		send(SOCK, $line, 0);		close(SOCK) or die "close: $!";						# add to Jabber database		if($err_no == 0)		{			$rows = $jab_dbh->do("INSERT INTO $jab_tb_nm ($jab_cl_usj, $jab_cl_psj, $jab_cl_uss) VALUES ('$jab_usr', '$jab_pwd', '$sip_uri')");			if($rows == 1)			{				print("SIP user <$jab_usr> added to Jabber database\n");			}			else			{				print("Error: SIP user <$jab_usr> not added to Jabber database\n");			}		}	}	else	{		print("SIP user <$jab_usr> is already in Jabber database\n");	}}$jab_sth->finish();#### Disconnect from the database.$jab_dbh->disconnect();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -