亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? a2billing-callback-daemon

?? asterisk用 的voip記費軟件
??
字號:
#!/usr/bin/perl -wuse strict;use DBI;use POSIX qw(setsid);use vars qw($dbh);use lib '/var/lib/asterisk/a2billing/callback-daemon/lib';use Asterisk::Manager;use Config::IniFiles;$|++;######################### GLOBALS ########################my $path_daemon = "/var/lib/asterisk/a2billing/callback-daemon/";my $daemon = "CallBack-Daemon";######################### READ THE CONFIG FILE ########################my $conf_file = "/etc/asterisk/a2billing.conf";# Read the config filemy $cfg = Config::IniFiles->new( -file => $conf_file );######################### DB PARAMETER ########################my $dbname = $cfg->val('database', 'dbname');my $dbhost = $cfg->val('database', 'hostname');my $dbport = $cfg->val('database', 'port');my $login = $cfg->val('database', 'user');my $pwd = $cfg->val('database', 'password');my $dbtype = $cfg->val('database', 'dbtype');######################### LOG FILE ########################my $log_file = "/var/log/asterisk/a2billing-daemon-callback.log";######################### ASTERISK MANAGER ########################my $manager_host = "localhost";my $manager_username = "myasterisk";my $manager_secret = "mycode";###################### BEHAVIOUR PARAMETER ########################my $pass_nb = 0;my $trace  = '/tmp/pgtrace.out';my ($conn, $result, $i);my ($status, $timestamp);my $DEBUG  = 0; # set this to 1 for tracesmy @childs; # define child in the daemonif (($path_daemon eq "") or ($daemon eq "")){  print "Error in Config File check it!!\n";  exit(0);}#### SET SIGNAL HANDLER #######$SIG{'TERM'} = 'INT_handler';my $set_exit = 0;#### TEST MANAGER PARAMETER my $astman = new Asterisk::Manager;# $astman->user($manager_username);# $astman->secret($manager_secret);# $astman->host($manager_host);# $status = $astman->connect;# my @res_manager = $astman->sendcommand( Action => 'Command', Command => 'show channels');# print @res_manager;# exit(0);&daemonize($path_daemon);open(LOGFILE, ">>".$log_file) || warn "Could not open >> $log_file.\n";$timestamp = &longfmt();print LOGFILE "$timestamp";print LOGFILE "[DAEMON START FORK]\n";close LOGFILE;#### our infinite loop###while(1) {	# check if there're changes	&func_callback_processing(); 	# wait for 5 secondes	sleep(10);		foreach (@childs) {		waitpid($_, 0);	}	foreach (@childs) {		my $childpid = $_;		# print "CHILD = $childpid \n";	}	@childs = ();	foreach (@childs) {		my $childpid = $_;		# print "AFTER EMPTY CHILD = $childpid \n";	}	if ($set_exit) { exit(0); }}#### Subroutine that daemonize this proccess###sub daemonize {    # chdir '/home/areski/bin'   or die "Can't chdir to /: $!";    chdir $_[0]   or die "Can't chdir to /: $!";    open STDIN, '/dev/null'   or die "Can't read /dev/null: $!";    open STDOUT, '>>/dev/null' or die "Can't write to /dev/null: $!";    open STDERR, '>>/dev/null' or die "Can't write to /dev/null: $!";    defined(my $pid = fork)   or die "Can't fork: $!";    exit if $pid;    setsid                    or die "Can't start a new session: $!";    umask 0;}#### This Subroutine check if there new emails to import###sub func_callback_processing{ 	my ($direlem,$LINES);	my ($dbh, $sth, $sth2 , $sth3, $res);	my $SQL="";	my $QUERY="";	my @server_manager;	my @row;	my @row2;	my ($line, $count, $id, $uniqueid, $status, $server_ip, $num_attempt, $channel, $exten, $context, $priority, $application, $data, $timeout, $callerid, $variable, $account, $async, $actionid, $id_server_group);	my $timestamp;	my $pid;	$pass_nb++;	open(LOGFILE, ">>".$log_file)		|| warn "Could not open >> $log_file.\n";		if ($dbtype eq "mysql")	{		$dbh ||= DBI->connect("dbi:mysql:$dbname:$dbhost", "$login", "$pwd");			}else{		$dbh ||= DBI->connect("dbi:Pg:dbname=$dbname;host=$dbhost;port=$dbport", "$login", "$pwd");		#$dbh ||= DBI->connect("dbi:Pg:dbname=$dbname;host=$dbhost;port=$dbport", "$login");	}		if (!$dbh) {		$timestamp = &longfmt();		print LOGFILE "[$timestamp]";		print LOGFILE "ERR: Couldn't open connection: ".$DBI::errstr."\n";		die "ERR: Couldn't open connection: ".$DBI::errstr."\n";	}		if ($dbtype eq "mysql")	{		$SQL = "SELECT id, uniqueid, entry_time, status, server_ip, num_attempt, last_attempt_time, manager_result, agi_result, callback_time, channel, exten, context, priority, application, data, timeout, callerid, variable, account, async, actionid, id_server_group FROM cc_callback_spool WHERE status='PENDING' AND entry_time > SUBDATE( CURRENT_TIMESTAMP, INTERVAL 24 HOUR ) AND ( callback_time IS NULL OR callback_time <= CURRENT_TIMESTAMP ) LIMIT 0, 5";	} else {		$SQL = "SELECT id, uniqueid, entry_time, status, server_ip, num_attempt, last_attempt_time, manager_result, agi_result, callback_time, channel, exten, context, priority, application, data, timeout, callerid, variable, account, async, actionid, id_server_group FROM cc_callback_spool WHERE status='PENDING' AND entry_time > (CURRENT_TIMESTAMP - INTERVAL '24 HOUR') AND (callback_time IS NULL OR callback_time <= CURRENT_TIMESTAMP) LIMIT 5 OFFSET 0";	}		$timestamp = &longfmt();	print LOGFILE "$timestamp : TRY TO FIND PENDING CALLBACK";		$sth = $dbh->prepare($SQL);	$sth->execute();	print LOGFILE "\n ** Number of PENDING callbacks ".$sth->rows." **\n";	while ( @row = $sth->fetchrow ) {   				$id = $row[0]; $uniqueid = $row[1]; $status = $row[3]; $server_ip = $row[4]; $num_attempt = $row[5];		$channel = $row[10]; $exten = $row[11]; $context = $row[12]; $priority = $row[13]; $application = $row[14];		$data = $row[15]; $timeout = $row[16]; $callerid = $row[17]; $variable = $row[18]; $account = $row[19];		$async = $row[20]; $actionid = $row[21]; $id_server_group = $row[22];				## UPDATE THE CALLBACK BEFORE FORK		$QUERY = "UPDATE cc_callback_spool SET status='PROCESSING' WHERE id='$id'";		print LOGFILE $QUERY."\n";		$sth3 = $dbh->prepare($QUERY);		$sth3->execute();				if ($pid = fork){			# PARENT -> PID = CHILD PID			print LOGFILE "\n WE ARE IN THE PARENT PROCESS -> CHILD PID = $pid -> RECORD ID = $id \n";			push(@childs, $pid); # Add Child pid in the array			sleep(1);			next;		} elsif ($pid == 0) {			# PID = 0			# CHILD			print LOGFILE "\n WE ARE IN THE CHILD PROCESS\n";		} else {			$QUERY = "UPDATE cc_callback_spool SET status='PENDING' WHERE id='$id'";			print LOGFILE $QUERY."\n";			$sth3 = $dbh->prepare($QUERY);			$sth3 -> execute();			$sth3 -> finish;			die "couldnt fork: $!\n";		}				# Save existing handler.		 my $saved_warn_handler = $SIG{__WARN__};		# Suppress warnings.		$SIG{__WARN__} = sub {};				# OPEN THE DB CONNECTION FOR THE CHILD		my $dbh_child = $dbh->clone();				# Restore saved handler.		$SIG{__WARN__} = $saved_warn_handler;				$dbh->{InactiveDestroy} = 1;		undef $dbh;						# my $dbh_child ||= DBI->connect("dbi:Pg:dbname=$dbname;host=$pghost;port=$pgport", "$login");				$id_server_group = 1;		@server_manager = &get_server($dbh_child, $id_server_group);						if (!(@server_manager)){			print LOGFILE " server_manager not find for the id_server_group= $id_server_group \n";			$QUERY = "UPDATE cc_callback_spool SET status='ERROR', last_attempt_time=now() WHERE id='$id'";			print LOGFILE "\n".$QUERY."\n";			$sth2 = $dbh_child->prepare($QUERY);			$sth2 -> execute();			$sth2 -> finish;			#next;			exit(0);		}		$timestamp = &longfmt();		print LOGFILE "$timestamp\n";				$astman->user($server_manager[3]);		$astman->secret($server_manager[4]);		$astman->host($server_manager[1]);						$status = $astman->connect;		if ( defined $status ){			$timestamp = &longfmt();			print LOGFILE "[$timestamp]\n";			print LOGFILE " ::>>> $status \n";						# Action: Originate			# Parameters: Channel, Exten, Context, Priority, Timeout, CallerID, Variable, Account, Application, Data			my @res_manager = $astman->sendcommand( Action => 'Originate',                                       Channel => $channel,                                       Exten => $exten,                                       Context => $context,                                       Priority => $priority,                                       Timeout => $timeout,                                       CallerID => $callerid,                                       Variable => $variable,                                       Account => $account,                                       Application => $application,                                       Data => $data );			$timestamp = &longfmt();			print LOGFILE "[$timestamp]";			print LOGFILE $res_manager[0] . ' - ' . $res_manager[1] . ' - ' . $res_manager[2] . ' - ' . $res_manager[3] . "\n";						if (is_integer($num_attempt)){  $num_attempt++;			}else{$num_attempt = 0;}						if ( $res_manager[1] =~ /^Success/ ){				print LOGFILE "[$timestamp]\n";				print LOGFILE "\n ## SUCCESS CALLBACK -> ($channel, $exten, $context, $priority)\n";				$QUERY = "UPDATE cc_callback_spool SET status='SENT', manager_result='".$res_manager[1].'-'.$res_manager[3]."', num_attempt='$num_attempt', last_attempt_time=now(), id_server='".$server_manager[0]."' WHERE id='$id'";				print LOGFILE $QUERY;				$sth2 = $dbh_child->prepare($QUERY);				$sth2->execute();								$QUERY = $SQL = "UPDATE cc_server_manager SET lasttime_used=current_timestamp WHERE id ='".$server_manager[0]."'";				print LOGFILE "[$timestamp]\n";				$sth2 = $dbh_child->prepare($QUERY);				$sth2->execute();				$sth2->finish;							}else{				print LOGFILE "[$timestamp]\n";				print LOGFILE "\n ## CALLBACK FAIL \n";				$QUERY = "UPDATE cc_callback_spool SET status='ERROR', manager_result='".$res_manager[1].'-'.$res_manager[3]."', num_attempt='$num_attempt', last_attempt_time=now(), id_server='".$server_manager[0]."' WHERE id='$id'";				print LOGFILE $QUERY;							$sth2 = $dbh_child->prepare($QUERY);				$sth2->execute();								$QUERY = $SQL = "UPDATE cc_server_manager SET lasttime_used=current_timestamp WHERE id ='".$server_manager[0]."'";				print LOGFILE "[$timestamp]\n";				print LOGFILE $QUERY;				$sth2 = $dbh_child->prepare($QUERY);				$sth2->execute();				$sth2->finish;			}									$astman->disconnect;			}else{			$timestamp = &longfmt();			print LOGFILE "[$timestamp]\n";			print LOGFILE "## ERROR Cannot connect to the asterisk manager! \n Please check the manager configuration...\n";						## UPDATE THE CALLBACK AFTER FORK			$QUERY = "UPDATE cc_callback_spool SET status='ERROR' WHERE id='$id'";			print LOGFILE $QUERY."\n";			$sth2 = $dbh_child->prepare($QUERY);			$sth2->execute();			$sth2->finish;		}				$timestamp = &longfmt();		print LOGFILE "[$timestamp]\n";		print LOGFILE " [END SELECT] \n";				# CLOSE THE DB CONNECTION OF THE CHILD		$dbh_child->disconnect;		exit(0);	} # end while fetchrow			$sth->finish;	$dbh->disconnect;		# print LOGFILE "   ++++ \n";	close LOGFILE;}## Get the less recently used manager server# Return an array with the selected row#sub get_server{	my ($dbh) = shift(@_);	my ($id_server_group) = shift(@_);	my $sth;	my $SQL="";	my @row;	if ($id_server_group > 0){		$SQL = "SELECT id, server_ip, manager_host, manager_username, manager_secret, lasttime_used FROM cc_server_manager WHERE id_group='".$id_server_group."' ORDER BY lasttime_used ASC LIMIT 1 OFFSET 0";	}else{		$SQL = "SELECT id, server_ip, manager_host, manager_username, manager_secret, lasttime_used FROM cc_server_manager ORDER BY lasttime_used ASC LIMIT 1 OFFSET 0";	}	print LOGFILE " SQL =".$SQL." \n";		$sth = $dbh->prepare($SQL);	$sth->execute();	@row = $sth->fetchrow;	return @row;}#### Perl trim function to remove whitespace from the start and end of the string###sub trim($) {	my $string = shift;	$string =~ s/^\s+//;	$string =~ s/\s+$//;	return $string;}#### check if a variable is an integer###sub is_integer { 	$_[0] =~ /^[+-]?\d+$/ }sub insert0 {	my ($date) = shift;	if ($date < 10) {		return "0$date";	}	return $date;}#### Long format: Custom datestring for the logfile###sub longfmt {	my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$iddst) = localtime(time);	my $datestring;	$year += 1900;	$mon++;	$mon  = insert0($mon);	$mday = insert0($mday);	$min  = insert0($min);	$sec  = insert0($sec);	$datestring = "\n[$year-$mon-$mday $hour:$min:$sec]";	return($datestring);}sub INT_handler {	$set_exit = 1;	print LOGFILE "\n *** Recieved signal to exit *** \n";}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
性久久久久久久久| 日本一区二区三区在线不卡 | 成人激情免费视频| 欧美激情一区二区三区四区| 东方aⅴ免费观看久久av| 国产日本一区二区| 99精品国产一区二区三区不卡| 国产亚洲欧美一区在线观看| 国产精品一区二区免费不卡| 中文字幕久久午夜不卡| 91在线视频官网| 视频在线观看国产精品| 日韩视频在线永久播放| 国内成人自拍视频| 国产精品久久久久久久久免费桃花| 波多野结衣亚洲| 亚洲在线视频一区| 精品乱人伦小说| 99精品视频一区二区三区| 亚洲午夜一区二区| 欧美videos中文字幕| 成人综合激情网| 亚洲一区二区美女| 精品免费日韩av| 色哟哟国产精品| 九九九精品视频| 中文字幕在线不卡国产视频| 欧美性猛片aaaaaaa做受| 国产在线精品免费av| 亚洲男人的天堂一区二区| 欧美影院午夜播放| 极品少妇xxxx精品少妇| 亚洲欧洲三级电影| 欧美成人一级视频| 欧美在线视频全部完| 九九国产精品视频| 亚洲精品日产精品乱码不卡| 精品日韩在线一区| 欧美在线观看禁18| 成人午夜在线视频| 日韩**一区毛片| 亚洲日本韩国一区| 中文字幕亚洲欧美在线不卡| 欧美日韩精品是欧美日韩精品| 国产很黄免费观看久久| 亚洲成精国产精品女| 国产精品免费观看视频| 日韩一二在线观看| 色香蕉成人二区免费| 久久丁香综合五月国产三级网站| 亚洲欧洲日产国码二区| 精品久久久久久无| 欧美精品日韩综合在线| aaa亚洲精品| 国产黄人亚洲片| 久久不见久久见中文字幕免费| 一区二区三区在线观看欧美| 久久久精品蜜桃| 欧美不卡一区二区| 69堂亚洲精品首页| 欧美吻胸吃奶大尺度电影| 97se亚洲国产综合自在线| 男女男精品视频网| 日韩成人精品视频| 同产精品九九九| 亚洲午夜免费视频| 亚洲人快播电影网| 亚洲视频一区在线| 国产精品婷婷午夜在线观看| 精品国精品国产| 日韩精品在线一区| 91精品欧美福利在线观看| 欧美人与性动xxxx| 在线免费不卡电影| 欧美色图一区二区三区| 欧美在线|欧美| 欧美亚洲高清一区二区三区不卡| 色婷婷精品久久二区二区蜜臂av | 久久99久久99| 精品在线播放午夜| 毛片基地黄久久久久久天堂| 日本v片在线高清不卡在线观看| 无码av免费一区二区三区试看| 亚洲图片欧美综合| 天堂va蜜桃一区二区三区| 亚洲成av人片一区二区梦乃| 五月婷婷激情综合网| 爽爽淫人综合网网站| 日韩激情视频在线观看| 麻豆成人免费电影| 国产suv精品一区二区三区| 成人理论电影网| 色综合天天综合狠狠| 日本伦理一区二区| 欧美日韩午夜在线| 日韩一区二区精品| 久久九九国产精品| 亚洲色图.com| 五月激情综合网| 韩国女主播一区二区三区| 国产成人精品免费视频网站| 91一区二区在线| 欧美性猛交xxxx乱大交退制版| 91精品在线麻豆| 国产日韩精品一区二区三区 | 伊人色综合久久天天| 亚洲成av人片| 国产乱子轮精品视频| k8久久久一区二区三区| 欧美日韩午夜在线视频| 国产亚洲综合在线| 亚洲欧美日韩一区二区| 蜜桃免费网站一区二区三区| 成人av动漫在线| 欧美色精品在线视频| 精品久久人人做人人爽| 国产精品成人一区二区艾草| 日韩精品久久理论片| 成人白浆超碰人人人人| 欧美日韩免费一区二区三区| 久久精品这里都是精品| 亚洲午夜免费电影| 国产麻豆日韩欧美久久| 日本道在线观看一区二区| 日韩免费视频一区二区| 亚洲色图第一区| 国产一区二区三区香蕉| 在线日韩国产精品| 久久综合狠狠综合| 亚洲成精国产精品女| 成人国产电影网| 91精品国产福利| 亚洲欧美偷拍卡通变态| 精品写真视频在线观看| 91成人在线观看喷潮| 欧美国产禁国产网站cc| 蜜臀久久99精品久久久画质超高清| 97久久精品人人澡人人爽| 日韩免费观看高清完整版| 亚洲欧美经典视频| 国产精品18久久久久久久网站| 欧美日韩精品一区二区三区蜜桃 | 一区二区三区中文字幕| 久久精品国产99国产| 精品视频全国免费看| 中文字幕一区二区三区不卡| 国产精品综合一区二区| 欧美日韩国产区一| 亚洲女子a中天字幕| 丁香啪啪综合成人亚洲小说| 欧美成人国产一区二区| 午夜精品123| 在线观看av一区二区| 国产精品久久毛片a| 久久se这里有精品| 91麻豆精品91久久久久同性| 亚洲高清不卡在线观看| 91蝌蚪porny九色| 成人欧美一区二区三区小说| 国产一区二区三区蝌蚪| 精品国产伦理网| 久久电影国产免费久久电影| 4438亚洲最大| 全国精品久久少妇| 日韩一区二区三| 精一区二区三区| 精品国产露脸精彩对白| 久久99精品久久久| 精品噜噜噜噜久久久久久久久试看| 另类调教123区| 精品国产一区二区亚洲人成毛片| 日本sm残虐另类| 欧美成人国产一区二区| 国产乱理伦片在线观看夜一区 | 日本一区免费视频| 懂色av一区二区夜夜嗨| 国产精品久久久久婷婷| av亚洲精华国产精华| 亚洲天堂av一区| 欧美在线短视频| 青青国产91久久久久久| 精品国产精品网麻豆系列| 国产一区二区美女诱惑| 国产日韩欧美精品电影三级在线| 国产99久久久精品| 亚洲嫩草精品久久| 欧美日韩在线观看一区二区 | 曰韩精品一区二区| 欧美无砖专区一中文字| 日本人妖一区二区| 精品999在线播放| 国产91丝袜在线18| 亚洲最新在线观看| 欧美一区二区三区系列电影| 韩国欧美一区二区| 国产精品美女www爽爽爽| 91福利视频久久久久| 伦理电影国产精品| 国产精品久久久久精k8| 欧美艳星brazzers|