Fix for Asterisk manager changes since version 13.
Added optionnal Asterisk security logging script. git-svn-id: svn://192.168.202.10@3230 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
@@ -139,9 +139,10 @@
|
||||
# 190713-0900 - Added vicidial_lead_call_quota_counts log archiving
|
||||
# 191017-2039 - Added reset of calls_today_filtered fields
|
||||
# 200122-0847 - Added CID Groups auto-rotate feature
|
||||
# 200422-1544 - Added purging of vicidial_security_event_log table after 7 days
|
||||
#
|
||||
|
||||
$build = '200122-0847';
|
||||
$build = '200422-1544';
|
||||
|
||||
$DB=0; # Debug flag
|
||||
$teodDB=0; # flag to log Timeclock End of Day processes to log file
|
||||
@@ -1836,6 +1837,24 @@ if ($timeclock_end_of_day_NOW > 0)
|
||||
##### END vicidial_sessions_recent_archive end of day process removing records older than 7 days #####
|
||||
|
||||
|
||||
##### BEGIN vicidial_security_event_log end of day process removing records older than 7 days #####
|
||||
$stmtA = "DELETE from vicidial_security_event_log where event_time < \"$SDSQLdate\";";
|
||||
if($DBX){print STDERR "\n|$stmtA|\n";}
|
||||
$affected_rows = $dbhA->do($stmtA);
|
||||
if($DB){print STDERR "\n|$affected_rows vicidial_security_event_log records older than 7 days purged|\n";}
|
||||
if ($teodDB) {$event_string = "vicidial_security_event_log records older than 7 days purged: |$stmtA|$affected_rows|"; &teod_logger;}
|
||||
|
||||
$stmtA = "optimize table vicidial_security_event_log;";
|
||||
if($DBX){print STDERR "\n|$stmtA|\n";}
|
||||
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
|
||||
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
|
||||
$sthArows=$sthA->rows;
|
||||
@aryA = $sthA->fetchrow_array;
|
||||
if ($DB) {print "|",$aryA[0],"|",$aryA[1],"|",$aryA[2],"|",$aryA[3],"|","\n";}
|
||||
$sthA->finish();
|
||||
##### END vicidial_security_event_log end of day process removing records older than 7 days #####
|
||||
|
||||
|
||||
##### BEGIN usacan_phone_dialcode_fix funciton #####
|
||||
if ($usacan_phone_dialcode_fix > 0)
|
||||
{
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
# This script checks if there are channels in reserved conferences
|
||||
#
|
||||
# Copyright (C) 2018 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
||||
# Copyright (C) 2020 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
||||
#
|
||||
# 50810-1532 - Added database server variable definitions lookup
|
||||
# 50823-1456 - Added commandline arguments for debug at runtime
|
||||
@@ -20,10 +20,12 @@
|
||||
# 150610-1200 - Added support for AMI version 1.3
|
||||
# 170916-0947 - Added support for AMI version 2+
|
||||
# 180420-2302 - Fix for high-volume systems, added varibles to hangup queryCID
|
||||
# 200413-1356 - Fix for \n\n at the end of PING commands causing errors in AMI
|
||||
#
|
||||
|
||||
# constants
|
||||
$DB=0; # Debug flag, set to 0 for no debug messages per minute
|
||||
$DBX=0;
|
||||
$US='__';
|
||||
$MT[0]='';
|
||||
$no_vc_3way_check=0;
|
||||
@@ -43,6 +45,7 @@ if (length($ARGV[0])>1)
|
||||
print "allowed run time options:\n";
|
||||
print " [-t] = test\n";
|
||||
print " [-debug] = verbose debug messages\n";
|
||||
print " [-debugX] = extra verbose debug messages\n";
|
||||
print " [--no-vc-3way-check] = separate 3way script is running\n";
|
||||
print "\n";
|
||||
exit;
|
||||
@@ -54,6 +57,12 @@ if (length($ARGV[0])>1)
|
||||
$DB=1; # Debug flag
|
||||
print "-- DEBUGGING ENABLED --\n\n";
|
||||
}
|
||||
if ($args =~ /-debugX/i)
|
||||
{
|
||||
$DB=1;
|
||||
$DBX=1;
|
||||
print "-- SUPER DEBUGGING ENABLED --\n\n";
|
||||
}
|
||||
if ($args =~ /-no-vc-3way-check/i)
|
||||
{
|
||||
$no_vc_3way_check=1; # no 3way check flag
|
||||
@@ -158,8 +167,12 @@ if ($sthArows > 0)
|
||||
if ($DBext_context) {$ext_context = $DBext_context;}
|
||||
if ($vicidial_recording_limit < 60) {$vicidial_recording_limit=60;}
|
||||
}
|
||||
$sthA->finish();
|
||||
$sthA->finish();
|
||||
|
||||
# determine if we should use a \n\n at the end of the AMI commands
|
||||
$command_end = "\n\n";
|
||||
%ast_ver_str = parse_asterisk_version($asterisk_version);
|
||||
if (( $ast_ver_str{major} = 1 ) && ($ast_ver_str{minor} >= 13)) { $command_end = ''; };
|
||||
|
||||
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
|
||||
$year = ($year + 1900);
|
||||
@@ -256,7 +269,24 @@ if ($no_vc_3way_check < 1)
|
||||
|
||||
$max_buffer = 4*1024*1024; # 4 meg buffer
|
||||
|
||||
|
||||
$t='';
|
||||
$telnet_log_file = '';
|
||||
### connect to asterisk manager through telnet
|
||||
if ($DBX)
|
||||
{
|
||||
$telnet_log_file = "$PATHlogs/AST_conf_telnet_log.$now_date_epoch";
|
||||
$t = new Net::Telnet (
|
||||
Port => $telnet_port,
|
||||
Prompt => '/\r\n/',
|
||||
Output_record_separator => "\n\n",
|
||||
Max_buffer_length => $max_buffer,
|
||||
Telnetmode => 0,
|
||||
Dump_log => $telnet_log_file
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$t = new Net::Telnet (
|
||||
Port => $telnet_port,
|
||||
Prompt => '/\r\n/',
|
||||
@@ -264,8 +294,7 @@ if ($no_vc_3way_check < 1)
|
||||
Max_buffer_length => $max_buffer,
|
||||
Telnetmode => 0,
|
||||
);
|
||||
$LItelnetlog = "$PATHlogs/listen_telnet_log.txt"; # uncomment for telnet log
|
||||
#$fh = $t->dump_log("$LItelnetlog"); # uncomment for telnet log
|
||||
}
|
||||
if (length($ASTmgrUSERNAMEsend) > 3) {$telnet_login = $ASTmgrUSERNAMEsend;}
|
||||
else {$telnet_login = $ASTmgrUSERNAME;}
|
||||
$t->open("$telnet_host");
|
||||
@@ -291,7 +320,7 @@ if ($no_vc_3way_check < 1)
|
||||
|
||||
if ($ami_version =~ /^1\./i)
|
||||
{
|
||||
$COMMAND = "Action: Command\nCommand: Meetme list $PT_conf_extens[$i]\n\nAction: Ping\n\n";
|
||||
$COMMAND = "Action: Command\nCommand: Meetme list $PT_conf_extens[$i]\n\nAction: Ping$command_end";
|
||||
if ($DB) {print "|$PTextensions[$i]|$PT_conf_extens[$i]|$COMMAND|\n";}
|
||||
%ast_ver_str = parse_asterisk_version($asterisk_version);
|
||||
if (( $ast_ver_str{major} = 1 ) && ($ast_ver_str{minor} < 6))
|
||||
@@ -384,7 +413,7 @@ if ($no_vc_3way_check < 1)
|
||||
}
|
||||
|
||||
$t->buffer_empty;
|
||||
@hangup = $t->cmd(String => "Action: Logoff\n\n", Prompt => "/.*/");
|
||||
@hangup = $t->cmd(String => "Action: Logoff$command_end", Prompt => "/.*/");
|
||||
$t->buffer_empty;
|
||||
$t->waitfor(Match => '/Message:.*\n\n/', Timeout => 10);
|
||||
$ok = $t->close;
|
||||
@@ -393,7 +422,14 @@ if ($no_vc_3way_check < 1)
|
||||
sleep(5);
|
||||
}
|
||||
|
||||
if($DBX)
|
||||
{
|
||||
open (FILE, '<', "$telnet_log_file") or die "could not open the log file\n";
|
||||
print <FILE>;
|
||||
close (FILE);
|
||||
|
||||
unlink($telnet_log_file) or die "Can't delete $telnet_log_file: $!\n";
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -422,16 +458,32 @@ if (!$telnet_port) {$telnet_port = '5038';}
|
||||
|
||||
$max_buffer = 4*1024*1024; # 4 meg buffer
|
||||
|
||||
$t='';
|
||||
$telnet_log_file = '';
|
||||
### connect to asterisk manager through telnet
|
||||
$t = new Net::Telnet (
|
||||
if ($DBX)
|
||||
{
|
||||
$telnet_log_file = "$PATHlogs/AST_conf_telnet_log.$now_date_epoch";
|
||||
$t = new Net::Telnet (
|
||||
Port => $telnet_port,
|
||||
Prompt => '/\r\n/',
|
||||
Output_record_separator => "\n\n",
|
||||
Max_buffer_length => $max_buffer,
|
||||
Telnetmode => 0,
|
||||
);
|
||||
$LItelnetlog = "$PATHlogs/listen_telnet_log.txt"; # uncomment for telnet log
|
||||
#$fh = $t->dump_log("$LItelnetlog"); # uncomment for telnet log
|
||||
Dump_log => $telnet_log_file
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$t = new Net::Telnet (
|
||||
Port => $telnet_port,
|
||||
Prompt => '/\r\n/',
|
||||
Output_record_separator => "\n\n",
|
||||
Max_buffer_length => $max_buffer,
|
||||
Telnetmode => 0,
|
||||
);
|
||||
}
|
||||
|
||||
if (length($ASTmgrUSERNAMEsend) > 3) {$telnet_login = $ASTmgrUSERNAMEsend;}
|
||||
else {$telnet_login = $ASTmgrUSERNAME;}
|
||||
$t->open("$telnet_host");
|
||||
@@ -459,7 +511,7 @@ if ( !( ( @PTextensions == 1 ) && ( $PTextensions[0] eq '') ) )
|
||||
|
||||
if ($ami_version =~ /^1\./i)
|
||||
{
|
||||
$COMMAND = "Action: Command\nCommand: Meetme list $PT_conf_extens[$i]\n\nAction: Ping\n\n";
|
||||
$COMMAND = "Action: Command\nCommand: Meetme list $PT_conf_extens[$i]\n\nAction: Ping$command_end";
|
||||
if ($DB) {print "|$PT_conf_extens[$i]|$COMMAND|\n";}
|
||||
%ast_ver_str = parse_asterisk_version($asterisk_version);
|
||||
if (( $ast_ver_str{major} = 1 ) && ($ast_ver_str{minor} < 6))
|
||||
@@ -542,13 +594,23 @@ if ( !( ( @PTextensions == 1 ) && ( $PTextensions[0] eq '') ) )
|
||||
|
||||
|
||||
$t->buffer_empty;
|
||||
@hangup = $t->cmd(String => "Action: Logoff\n\n", Prompt => "/.*/");
|
||||
@hangup = $t->cmd(String => "Action: Logoff$command_end", Prompt => "/.*/");
|
||||
$t->buffer_empty;
|
||||
$t->waitfor(Match => '/Message:.*\n\n/', Timeout => 10);
|
||||
$ok = $t->close;
|
||||
|
||||
$dbhA->disconnect();
|
||||
|
||||
if($DBX)
|
||||
{
|
||||
open (FILE, '<', "$telnet_log_file") or die "could not open the log file\n";
|
||||
print <FILE>;
|
||||
close (FILE);
|
||||
|
||||
unlink($telnet_log_file) or die "Can't delete $telnet_log_file: $!\n";
|
||||
}
|
||||
|
||||
|
||||
if($DB){print "DONE... Exiting... Goodbye... See you later... \n";}
|
||||
|
||||
exit;
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
# script's crontab entry that does some of these functions:
|
||||
# AST_conf_update.pl --no-vc-3way-check
|
||||
#
|
||||
# Copyright (C) 2018 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
||||
# Copyright (C) 2020 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
||||
#
|
||||
# 100811-2119 - First build, based upon AST_conf_update.pl script
|
||||
# 100928-1506 - Changed from hard-coded 60 minute limit to servers.vicidial_recording_limit
|
||||
@@ -20,6 +20,7 @@
|
||||
# 170222-0939 - Changed to file logging using server settings
|
||||
# 170921-1814 - Added support for AMI2
|
||||
# 180420-2301 - Fix for high-volume systems, added varibles to hangup queryCID
|
||||
# 200413-1356 - Fix for \n\n at the end of PING commands causing errors in AMI
|
||||
#
|
||||
|
||||
# constants
|
||||
@@ -181,7 +182,12 @@ if ($sthArows > 0)
|
||||
if ($DBvd_server_logs =~ /Y/) {$SYSLOG = '1';}
|
||||
else {$SYSLOG = '0';}
|
||||
}
|
||||
$sthA->finish();
|
||||
$sthA->finish();
|
||||
|
||||
# determine if we should use a \n\n at the end of the AMI commands
|
||||
%ast_ver_str = parse_asterisk_version($asterisk_version);
|
||||
$command_end = "\n\n";
|
||||
if (( $ast_ver_str{major} = 1 ) && ($ast_ver_str{minor} >= 13)) { $command_end = '';}
|
||||
|
||||
if (!$telnet_port) {$telnet_port = '5038';}
|
||||
if (length($ASTmgrUSERNAMEsend) > 3) {$telnet_login = $ASTmgrUSERNAMEsend;}
|
||||
@@ -261,7 +267,24 @@ while ($loops > $loop_counter)
|
||||
{
|
||||
$max_buffer = 4*1024*1024; # 4 meg buffer
|
||||
|
||||
$t='';
|
||||
$telnet_log_file = '';
|
||||
### connect to asterisk manager through telnet
|
||||
if ($DBX)
|
||||
{
|
||||
$telnet_log_file = "$PATHlogs/AST_conf_telnet_log.$now_date_epoch";
|
||||
print "$telnet_log_file\n";
|
||||
$t = new Net::Telnet (
|
||||
Port => $telnet_port,
|
||||
Prompt => '/\r\n/',
|
||||
Output_record_separator => "\n\n",
|
||||
Max_buffer_length => $max_buffer,
|
||||
Telnetmode => 0,
|
||||
Dump_log => $telnet_log_file
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$t = new Net::Telnet (
|
||||
Port => $telnet_port,
|
||||
Prompt => '/\r\n/',
|
||||
@@ -269,8 +292,8 @@ while ($loops > $loop_counter)
|
||||
Max_buffer_length => $max_buffer,
|
||||
Telnetmode => 0,
|
||||
);
|
||||
$LItelnetlog = "$PATHlogs/3way_telnet_log.txt"; # uncomment for telnet log
|
||||
# $fh = $t->dump_log("$LItelnetlog"); # uncomment for telnet log
|
||||
}
|
||||
|
||||
if (length($ASTmgrUSERNAMEsend) > 3) {$telnet_login = $ASTmgrUSERNAMEsend;}
|
||||
else {$telnet_login = $ASTmgrUSERNAME;}
|
||||
$t->open("$telnet_host");
|
||||
@@ -294,7 +317,7 @@ while ($loops > $loop_counter)
|
||||
|
||||
if ($ami_version =~ /^1\./i)
|
||||
{
|
||||
$COMMAND = "Action: Command\nCommand: Meetme list $PT_conf_extens[$i]\n\nAction: Ping\n\n";
|
||||
$COMMAND = "Action: Command\nCommand: Meetme list $PT_conf_extens[$i]\n\nAction: Ping$command_end";
|
||||
$event_string = "|$PT_conf_extens[$i]|$COMMAND|";
|
||||
&event_logger;
|
||||
%ast_ver_str = parse_asterisk_version($asterisk_version);
|
||||
@@ -396,10 +419,19 @@ while ($loops > $loop_counter)
|
||||
}
|
||||
|
||||
$t->buffer_empty;
|
||||
@hangup = $t->cmd(String => "Action: Logoff\n\n", Prompt => "/.*/");
|
||||
@hangup = $t->cmd(String => "Action: Logoff$command_end", Prompt => "/.*/");
|
||||
$t->buffer_empty;
|
||||
$t->waitfor(Match => '/Message:.*\n\n/', Timeout => 10);
|
||||
$ok = $t->close;
|
||||
|
||||
if($DBX)
|
||||
{
|
||||
open (FILE, '<', "$telnet_log_file") or die "could not open the log file\n";
|
||||
print <FILE>;
|
||||
close (FILE);
|
||||
|
||||
unlink($telnet_log_file) or die "Can't delete $telnet_log_file: $!\n";
|
||||
}
|
||||
}
|
||||
|
||||
### sleep for X delay seconds between runs
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -5,11 +5,11 @@
|
||||
# DESCRIPTION:
|
||||
# populates "show peers" output for SIP and IAX as well as tail of last 1000 lines of Asterisk output into database
|
||||
#
|
||||
# Copyright (C) 2018 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
||||
# Copyright (C) 2020 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
||||
#
|
||||
# 151229-1548 - first build
|
||||
# 180403-1546 - Updated telnet login process to work with newer Asterisk versions
|
||||
#
|
||||
# 200413-2156 - Fix for \n\n at the end of PING commands causing errors in AMI
|
||||
|
||||
# constants
|
||||
$DB=0; # Debug flag, set to 0 for no debug messages per minute
|
||||
@@ -158,6 +158,11 @@ $sthA->finish();
|
||||
|
||||
$secX = time();
|
||||
|
||||
# determine if we should use a \n\n at the end of the AMI commands
|
||||
$command_end = "\n\n";
|
||||
%ast_ver_str = parse_asterisk_version($asterisk_version);
|
||||
if (( $ast_ver_str{major} = 1 ) && ($ast_ver_str{minor} >= 13)) { $command_end = ''; };
|
||||
|
||||
$BDtarget = ($secX - 86400);
|
||||
($Bsec,$Bmin,$Bhour,$Bmday,$Bmon,$Byear,$Bwday,$Byday,$Bisdst) = localtime($BDtarget);
|
||||
$Byear = ($Byear + 1900);
|
||||
@@ -174,10 +179,33 @@ $BDtsSQLdate = "$Byear$Bmon$Bmday$Bhour$Bmin$Bsec";
|
||||
############# BEGIN GATHER SECTION ################################################
|
||||
if($DB){print "\n\nSIP SHOW PEERS:\n";}
|
||||
|
||||
$max_buffer = 4*1024*1024; # 4 meg buffer
|
||||
|
||||
$t='';
|
||||
$telnet_log_file = '';
|
||||
### connect to asterisk manager through telnet
|
||||
$t = new Net::Telnet (Port => 5038,
|
||||
if ($DBX)
|
||||
{
|
||||
$telnet_log_file = "$PATHlogs/AST_output_telnet_log.$secX";
|
||||
$t = new Net::Telnet (
|
||||
Port => $telnet_port,
|
||||
Prompt => '/\r\n/',
|
||||
Output_record_separator => '',);
|
||||
Output_record_separator => "\n\n",
|
||||
Max_buffer_length => $max_buffer,
|
||||
Dump_log => $telnet_log_file
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$t = new Net::Telnet (
|
||||
Port => $telnet_port,
|
||||
Prompt => '/\r\n/',
|
||||
Output_record_separator => "\n\n",
|
||||
Max_buffer_length => $max_buffer,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
##### uncomment both lines below for telnet log
|
||||
# $LItelnetlog = "$PATHlogs/output_telnet_log.txt";
|
||||
@@ -194,7 +222,7 @@ $ami_version =~ s/\n//gi;
|
||||
if ($DB) {print "----- AMI Version $ami_version -----\n";}
|
||||
|
||||
# Login
|
||||
$t->print("Action: Login\nUsername: $telnet_login\nSecret: $ASTmgrSECRET\n\n");
|
||||
$t->print("Action: Login\nUsername: $telnet_login\nSecret: $ASTmgrSECRET$command_end");
|
||||
$t->waitfor('/Authentication accepted/'); # waitfor auth accepted
|
||||
|
||||
$t->buffer_empty;
|
||||
@@ -206,11 +234,11 @@ $t->buffer_empty;
|
||||
%ast_ver_str = parse_asterisk_version($asterisk_version);
|
||||
if (( $ast_ver_str{major} = 1 ) && ($ast_ver_str{minor} < 6))
|
||||
{
|
||||
@list_channels = $t->cmd(String => "Action: Command\nCommand: sip show peers\n\nAction: Ping\n\n", Prompt => '/Response: Pong.*/');
|
||||
@list_channels = $t->cmd(String => "Action: Command\nCommand: sip show peers\n\nAction: Ping$command_end", Prompt => '/Response: Pong.*/');
|
||||
}
|
||||
else
|
||||
{
|
||||
@list_channels = $t->cmd(String => "Action: Command\nCommand: sip show peers\n\nAction: Ping\n\n", Prompt => '/Response: Success\nPing: Pong.*/');
|
||||
@list_channels = $t->cmd(String => "Action: Command\nCommand: sip show peers\n\nAction: Ping$command_end", Prompt => '/Response: Success\nPing: Pong.*/');
|
||||
}
|
||||
|
||||
$j=0;
|
||||
@@ -226,11 +254,11 @@ $t->buffer_empty;
|
||||
%ast_ver_str = parse_asterisk_version($asterisk_version);
|
||||
if (( $ast_ver_str{major} = 1 ) && ($ast_ver_str{minor} < 6))
|
||||
{
|
||||
@list_channels = $t->cmd(String => "Action: Command\nCommand: sip show registry\n\nAction: Ping\n\n", Prompt => '/Response: Pong.*/');
|
||||
@list_channels = $t->cmd(String => "Action: Command\nCommand: sip show registry\n\nAction: Ping$command_end", Prompt => '/Response: Pong.*/');
|
||||
}
|
||||
else
|
||||
{
|
||||
@list_channels = $t->cmd(String => "Action: Command\nCommand: sip show registry\n\nAction: Ping\n\n", Prompt => '/Response: Success\nPing: Pong.*/');
|
||||
@list_channels = $t->cmd(String => "Action: Command\nCommand: sip show registry\n\nAction: Ping$command_end", Prompt => '/Response: Success\nPing: Pong.*/');
|
||||
}
|
||||
|
||||
$j=0;
|
||||
@@ -260,11 +288,11 @@ $t->buffer_empty;
|
||||
%ast_ver_str = parse_asterisk_version($asterisk_version);
|
||||
if (( $ast_ver_str{major} = 1 ) && ($ast_ver_str{minor} < 6))
|
||||
{
|
||||
@list_channels = $t->cmd(String => "Action: Command\nCommand: iax2 show peers\n\nAction: Ping\n\n", Prompt => '/Response: Pong.*/');
|
||||
@list_channels = $t->cmd(String => "Action: Command\nCommand: iax2 show peers\n\nAction: Ping$command_end", Prompt => '/Response: Pong.*/');
|
||||
}
|
||||
else
|
||||
{
|
||||
@list_channels = $t->cmd(String => "Action: Command\nCommand: iax2 show peers\n\nAction: Ping\n\n", Prompt => '/Response: Success\nPing: Pong.*/');
|
||||
@list_channels = $t->cmd(String => "Action: Command\nCommand: iax2 show peers\n\nAction: Ping$command_end", Prompt => '/Response: Success\nPing: Pong.*/');
|
||||
}
|
||||
|
||||
$j=0;
|
||||
@@ -280,11 +308,11 @@ $t->buffer_empty;
|
||||
%ast_ver_str = parse_asterisk_version($asterisk_version);
|
||||
if (( $ast_ver_str{major} = 1 ) && ($ast_ver_str{minor} < 6))
|
||||
{
|
||||
@list_channels = $t->cmd(String => "Action: Command\nCommand: iax2 show registry\n\nAction: Ping\n\n", Prompt => '/Response: Pong.*/');
|
||||
@list_channels = $t->cmd(String => "Action: Command\nCommand: iax2 show registry\n\nAction: Ping$command_end", Prompt => '/Response: Pong.*/');
|
||||
}
|
||||
else
|
||||
{
|
||||
@list_channels = $t->cmd(String => "Action: Command\nCommand: iax2 show registry\n\nAction: Ping\n\n", Prompt => '/Response: Success\nPing: Pong.*/');
|
||||
@list_channels = $t->cmd(String => "Action: Command\nCommand: iax2 show registry\n\nAction: Ping$command_end", Prompt => '/Response: Success\nPing: Pong.*/');
|
||||
}
|
||||
|
||||
$j=0;
|
||||
@@ -304,10 +332,20 @@ usleep(1*100*1000);
|
||||
|
||||
|
||||
$t->buffer_empty;
|
||||
@hangup = $t->cmd(String => "Action: Logoff\n\n", Prompt => "/.*/");
|
||||
@hangup = $t->cmd(String => "Action: Logoff$command_end", Prompt => "/.*/");
|
||||
$t->buffer_empty;
|
||||
$t->waitfor(Match => '/Message:.*\n\n/', Timeout => 10);
|
||||
$ok = $t->close;
|
||||
|
||||
if($DBX)
|
||||
{
|
||||
open (FILE, '<', "$telnet_log_file") or die "could not open the log file\n";
|
||||
print <FILE>;
|
||||
close (FILE);
|
||||
|
||||
unlink($telnet_log_file) or die "Can't delete $telnet_log_file: $!\n";
|
||||
}
|
||||
|
||||
############# END GATHER SECTION ################################################
|
||||
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
# DESCRIPTION:
|
||||
# checks the registered IP address of the phone and updates the phones table
|
||||
#
|
||||
# Copyright (C) 2018 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
||||
# Copyright (C) 2020 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
||||
#
|
||||
# 70521-1529 - first build
|
||||
# 100625-1220 - Added waitfors after logout to fix broken pipe errors in asterisk <MikeC>
|
||||
@@ -13,7 +13,7 @@
|
||||
# 131210-1305 - Added Asterisk 1.8 compatibility
|
||||
# 150610-1200 - Added support for AMI version 1.3
|
||||
# 180403-1545 - Updated telnet login process to work with newer Asterisk versions
|
||||
#
|
||||
# 200413-2156 - Fix for \n\n at the end of PING commands causing errors in AMI
|
||||
|
||||
# constants
|
||||
$DB=0; # Debug flag, set to 0 for no debug messages per minute
|
||||
@@ -157,6 +157,13 @@ $sthA->finish();
|
||||
|
||||
$secX = time();
|
||||
|
||||
# determine if we should use a \n\n at the end of the AMI commands
|
||||
$command_end = "\n\n";
|
||||
%ast_ver_str = parse_asterisk_version($asterisk_version);
|
||||
if (( $ast_ver_str{major} = 1 ) && ($ast_ver_str{minor} >= 13)) { $command_end = ''; };
|
||||
$max_buffer = 4*1024*1024; # 4 meg buffer
|
||||
|
||||
|
||||
$BDtarget = ($secX - 86400);
|
||||
($Bsec,$Bmin,$Bhour,$Bmday,$Bmon,$Byear,$Bwday,$Byday,$Bisdst) = localtime($BDtarget);
|
||||
$Byear = ($Byear + 1900);
|
||||
@@ -214,15 +221,29 @@ if ( ($sip_count > 0) || ($agent_lookup < 1) )
|
||||
}
|
||||
$sthA->finish();
|
||||
|
||||
|
||||
$t='';
|
||||
$telnet_log_file = '';
|
||||
### connect to asterisk manager through telnet
|
||||
$t = new Net::Telnet (Port => 5038,
|
||||
if ($DBX)
|
||||
{
|
||||
$telnet_log_file = "$PATHlogs/AST_phone_telnet_log.$secX";
|
||||
$t = new Net::Telnet (
|
||||
Port => $telnet_port,
|
||||
Prompt => '/\r\n/',
|
||||
Output_record_separator => '',);
|
||||
|
||||
##### uncomment both lines below for telnet log
|
||||
# $LItelnetlog = "$PATHlogs/phone_telnet_log.txt";
|
||||
# $fh = $t->dump_log("$LItelnetlog");
|
||||
Output_record_separator => "\n\n",
|
||||
Max_buffer_length => $max_buffer,
|
||||
Dump_log => $telnet_log_file
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$t = new Net::Telnet (
|
||||
Port => $telnet_port,
|
||||
Prompt => '/\r\n/',
|
||||
Output_record_separator => "\n\n",
|
||||
Max_buffer_length => $max_buffer,
|
||||
);
|
||||
}
|
||||
|
||||
if (length($ASTmgrUSERNAMEsend) > 3) {$telnet_login = $ASTmgrUSERNAMEsend;}
|
||||
else {$telnet_login = $ASTmgrUSERNAME;}
|
||||
@@ -235,7 +256,7 @@ if ( ($sip_count > 0) || ($agent_lookup < 1) )
|
||||
if ($DB) {print "----- AMI Version $ami_version -----\n";}
|
||||
|
||||
# Login
|
||||
$t->print("Action: Login\nUsername: $telnet_login\nSecret: $ASTmgrSECRET\n\n");
|
||||
$t->print("Action: Login\nUsername: $telnet_login\nSecret: $ASTmgrSECRET$command_end");
|
||||
$t->waitfor('/Authentication accepted/'); # waitfor auth accepted
|
||||
|
||||
$t->buffer_empty;
|
||||
@@ -249,11 +270,11 @@ if ( ($sip_count > 0) || ($agent_lookup < 1) )
|
||||
%ast_ver_str = parse_asterisk_version($asterisk_version);
|
||||
if (( $ast_ver_str{major} = 1 ) && ($ast_ver_str{minor} < 6))
|
||||
{
|
||||
@list_channels = $t->cmd(String => "Action: Command\nCommand: sip show peer $PTextensions[$i]\n\nAction: Ping\n\n", Prompt => '/Response: Pong.*/');
|
||||
@list_channels = $t->cmd(String => "Action: Command\nCommand: sip show peer $PTextensions[$i]\n\nAction: Ping$command_end", Prompt => '/Response: Pong.*/');
|
||||
}
|
||||
else
|
||||
{
|
||||
@list_channels = $t->cmd(String => "Action: Command\nCommand: sip show peer $PTextensions[$i]\n\nAction: Ping\n\n", Prompt => '/Response: Success\nPing: Pong.*/');
|
||||
@list_channels = $t->cmd(String => "Action: Command\nCommand: sip show peer $PTextensions[$i]\n\nAction: Ping$command_end", Prompt => '/Response: Success\nPing: Pong.*/');
|
||||
}
|
||||
|
||||
$j=0;
|
||||
@@ -299,10 +320,19 @@ if ( ($sip_count > 0) || ($agent_lookup < 1) )
|
||||
}
|
||||
|
||||
$t->buffer_empty;
|
||||
@hangup = $t->cmd(String => "Action: Logoff\n\n", Prompt => "/.*/");
|
||||
@hangup = $t->cmd(String => "Action: Logoff$command_end", Prompt => "/.*/");
|
||||
$t->buffer_empty;
|
||||
$t->waitfor(Match => '/Message:.*\n\n/', Timeout => 10);
|
||||
$ok = $t->close;
|
||||
|
||||
if($DBX)
|
||||
{
|
||||
open (FILE, '<', "$telnet_log_file") or die "could not open the log file\n";
|
||||
print <FILE>;
|
||||
close (FILE);
|
||||
|
||||
unlink($telnet_log_file) or die "Can't delete $telnet_log_file: $!\n";
|
||||
}
|
||||
}
|
||||
############# END SIP SECTION ################################################
|
||||
|
||||
@@ -355,14 +385,29 @@ if ( ($iax_count > 0) || ($agent_lookup < 1) )
|
||||
$sthA->finish();
|
||||
|
||||
|
||||
$t='';
|
||||
$telnet_log_file = '';
|
||||
### connect to asterisk manager through telnet
|
||||
$t = new Net::Telnet (Port => 5038,
|
||||
if ($DBX)
|
||||
{
|
||||
$telnet_log_file = "$PATHlogs/AST_phone_telnet_log.$secX";
|
||||
$t = new Net::Telnet (
|
||||
Port => $telnet_port,
|
||||
Prompt => '/\r\n/',
|
||||
Output_record_separator => '',);
|
||||
|
||||
##### uncomment both lines below for telnet log
|
||||
# $LItelnetlog = "$PATHlogs/phone_telnet_log.txt";
|
||||
# $fh = $t->dump_log("$LItelnetlog");
|
||||
Output_record_separator => "\n\n",
|
||||
Max_buffer_length => $max_buffer,
|
||||
Dump_log => $telnet_log_file
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$t = new Net::Telnet (
|
||||
Port => $telnet_port,
|
||||
Prompt => '/\r\n/',
|
||||
Output_record_separator => "\n\n",
|
||||
Max_buffer_length => $max_buffer,
|
||||
);
|
||||
}
|
||||
|
||||
if (length($ASTmgrUSERNAMEsend) > 3) {$telnet_login = $ASTmgrUSERNAMEsend;}
|
||||
else {$telnet_login = $ASTmgrUSERNAME;}
|
||||
@@ -375,7 +420,7 @@ if ( ($iax_count > 0) || ($agent_lookup < 1) )
|
||||
if ($DB) {print "----- AMI Version $ami_version -----\n";}
|
||||
|
||||
# Login
|
||||
$t->print("Action: Login\nUsername: $telnet_login\nSecret: $ASTmgrSECRET\n\n");
|
||||
$t->print("Action: Login\nUsername: $telnet_login\nSecret: $ASTmgrSECRET$command_end");
|
||||
$t->waitfor('/Authentication accepted/'); # waitfor auth accepted
|
||||
|
||||
$t->buffer_empty;
|
||||
@@ -388,11 +433,11 @@ if ( ($iax_count > 0) || ($agent_lookup < 1) )
|
||||
%ast_ver_str = parse_asterisk_version($asterisk_version);
|
||||
if (( $ast_ver_str{major} = 1 ) && ($ast_ver_str{minor} < 6))
|
||||
{
|
||||
@list_channels = $t->cmd(String => "Action: Command\nCommand: iax2 show peer $PTextensions[$i]\n\nAction: Ping\n\n", Prompt => '/Response: Pong.*/');
|
||||
@list_channels = $t->cmd(String => "Action: Command\nCommand: iax2 show peer $PTextensions[$i]\n\nAction: Ping$command_end", Prompt => '/Response: Pong.*/');
|
||||
}
|
||||
else
|
||||
{
|
||||
@list_channels = $t->cmd(String => "Action: Command\nCommand: iax2 show peer $PTextensions[$i]\n\nAction: Ping\n\n", Prompt => '/Response: Success\nPing: Pong.*/');
|
||||
@list_channels = $t->cmd(String => "Action: Command\nCommand: iax2 show peer $PTextensions[$i]\n\nAction: Ping$command_end", Prompt => '/Response: Success\nPing: Pong.*/');
|
||||
}
|
||||
|
||||
$j=0;
|
||||
@@ -438,10 +483,19 @@ if ( ($iax_count > 0) || ($agent_lookup < 1) )
|
||||
}
|
||||
|
||||
$t->buffer_empty;
|
||||
@hangup = $t->cmd(String => "Action: Logoff\n\n", Prompt => "/.*/");
|
||||
@hangup = $t->cmd(String => "Action: Logoff$command_end", Prompt => "/.*/");
|
||||
$t->buffer_empty;
|
||||
$t->waitfor(Match => '/Message:.*\n\n/', Timeout => 10);
|
||||
$ok = $t->close;
|
||||
|
||||
if($DBX)
|
||||
{
|
||||
open (FILE, '<', "$telnet_log_file") or die "could not open the log file\n";
|
||||
print <FILE>;
|
||||
close (FILE);
|
||||
|
||||
unlink($telnet_log_file) or die "Can't delete $telnet_log_file: $!\n";
|
||||
}
|
||||
}
|
||||
############# END IAX2 SECTION ################################################
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#
|
||||
# NOTE: THIS SHOULD ONLY BE RUN ON THE DESIGNATED VOICEMAIL SERVER IN A CLUSTER!
|
||||
#
|
||||
# Copyright (C) 2017 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
||||
# Copyright (C) 2020 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
||||
#
|
||||
# 50823-1422 - Added database server variable definitions lookup
|
||||
# 50823-1452 - Added commandline arguments for debug at runtime
|
||||
@@ -26,6 +26,7 @@
|
||||
# 141124-1019 - Changed to only allow running on designated voicemail server, run for all mailboxes
|
||||
# 150610-1200 - Added support for AMI version 1.3
|
||||
# 170609-0936 - Added support for Asterisk 13
|
||||
# 200413-1356 - Fix for \n\n at the end of PING commands causing errors in AMI
|
||||
#
|
||||
|
||||
# constants
|
||||
@@ -204,18 +205,31 @@ $sthA->finish();
|
||||
|
||||
$max_buffer = 4*1024*1024; # 4 meg buffer
|
||||
|
||||
$t = '';
|
||||
$telnet_log_file = '';
|
||||
### connect to asterisk manager through telnet
|
||||
$t = new Net::Telnet (
|
||||
if ($DBX)
|
||||
{
|
||||
$telnet_log_file = "$PATHlogs/AST_vm_telnet_log.$secX";
|
||||
$t = new Net::Telnet (
|
||||
Port => $telnet_port,
|
||||
Prompt => '/\r\n/',
|
||||
Output_record_separator => "\n\n",
|
||||
Max_buffer_length => $max_buffer,
|
||||
Telnetmode => 0,
|
||||
);
|
||||
|
||||
##### uncomment both lines below for telnet log
|
||||
# $LItelnetlog = "$PATHlogs/listen_telnet_log.txt";
|
||||
# $fh = $t->dump_log("$LItelnetlog");
|
||||
Dump_log => $telnet_log_file
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$t = new Net::Telnet (
|
||||
Port => $telnet_port,
|
||||
Prompt => '/\r\n/',
|
||||
Output_record_separator => "\n\n",
|
||||
Max_buffer_length => $max_buffer,
|
||||
Telnetmode => 0,
|
||||
);
|
||||
}
|
||||
|
||||
if (length($ASTmgrUSERNAMEsend) > 3) {$telnet_login = $ASTmgrUSERNAMEsend;}
|
||||
else {$telnet_login = $ASTmgrUSERNAME;}
|
||||
@@ -233,16 +247,20 @@ $t->waitfor('/Authentication accepted/'); # waitfor auth accepted
|
||||
|
||||
$t->buffer_empty;
|
||||
|
||||
# determine if we should use a \n\n at the end of the AMI commands
|
||||
%ast_ver_str = parse_asterisk_version($asterisk_version);
|
||||
$command_end = "\n\n";
|
||||
if (( $ast_ver_str{major} = 1 ) && ($ast_ver_str{minor} >= 13)) { $command_end = '';}
|
||||
|
||||
|
||||
$i=0;
|
||||
foreach(@PTvoicemail_ids)
|
||||
{
|
||||
@list_channels=@MT;
|
||||
$t->buffer_empty;
|
||||
%ast_ver_str = parse_asterisk_version($asterisk_version);
|
||||
if (( $ast_ver_str{major} = 1 ) && ($ast_ver_str{minor} < 6))
|
||||
{
|
||||
@list_channels = $t->cmd(String => "Action: MailboxCount\nMailbox: $PTvoicemail_ids[$i]\n\nAction: Ping\n\n", Prompt => '/Response: Pong.*/');
|
||||
@list_channels = $t->cmd(String => "Action: MailboxCount\nMailbox: $PTvoicemail_ids[$i]\n\nAction: Ping$command_end", Prompt => '/Response: Pong.*/');
|
||||
|
||||
$j=0;
|
||||
foreach(@list_channels)
|
||||
@@ -259,7 +277,7 @@ foreach(@PTvoicemail_ids)
|
||||
}
|
||||
elsif (( $ast_ver_str{major} = 1 ) && ($ast_ver_str{minor} < 13))
|
||||
{
|
||||
@list_channels = $t->cmd(String => "Action: MailboxCount\nMailbox: $PTvoicemail_ids[$i]\n\nAction: Ping\n\n", Prompt => '/Response: Success\nPing: Pong.*/');
|
||||
@list_channels = $t->cmd(String => "Action: MailboxCount\nMailbox: $PTvoicemail_ids[$i]\n\nAction: Ping$command_end", Prompt => '/Response: Success\nPing: Pong.*/');
|
||||
|
||||
$j=0;
|
||||
foreach(@list_channels)
|
||||
@@ -291,7 +309,7 @@ foreach(@PTvoicemail_ids)
|
||||
# create a new action id
|
||||
$action_id = "$now_sec.$now_micro_sec";
|
||||
|
||||
@list_channels = $t->cmd(String => "Action: MailboxCount\nActionID: $action_id\nMailbox: $PTvoicemail_ids[$i]\n\nAction: Ping\n\n", Prompt => '/Response: Success\nPing: Pong.*/');
|
||||
@list_channels = $t->cmd(String => "Action: MailboxCount\nActionID: $action_id\nMailbox: $PTvoicemail_ids[$i]\n\nAction: Ping$command_end", Prompt => '/Response: Success\nPing: Pong.*/');
|
||||
|
||||
$j=0;
|
||||
foreach(@list_channels)
|
||||
@@ -397,7 +415,7 @@ if ($active_voicemail_server > 0)
|
||||
%ast_ver_str = parse_asterisk_version($asterisk_version);
|
||||
if (( $ast_ver_str{major} = 1 ) && ($ast_ver_str{minor} < 6))
|
||||
{
|
||||
@list_channels = $t->cmd(String => "Action: MailboxCount\nMailbox: $PTvoicemail_ids[$i]\n\nAction: Ping\n\n", Prompt => '/Response: Pong.*/');
|
||||
@list_channels = $t->cmd(String => "Action: MailboxCount\nMailbox: $PTvoicemail_ids[$i]\n\nAction: Ping$command_end", Prompt => '/Response: Pong.*/');
|
||||
|
||||
$j=0;
|
||||
foreach(@list_channels)
|
||||
@@ -414,7 +432,7 @@ if ($active_voicemail_server > 0)
|
||||
}
|
||||
elsif (( $ast_ver_str{major} = 1 ) && ($ast_ver_str{minor} < 13))
|
||||
{
|
||||
@list_channels = $t->cmd(String => "Action: MailboxCount\nMailbox: $PTvoicemail_ids[$i]\n\nAction: Ping\n\n", Prompt => '/Response: Success\nPing: Pong.*/');
|
||||
@list_channels = $t->cmd(String => "Action: MailboxCount\nMailbox: $PTvoicemail_ids[$i]\n\nAction: Ping$command_end", Prompt => '/Response: Success\nPing: Pong.*/');
|
||||
|
||||
$j=0;
|
||||
foreach(@list_channels)
|
||||
@@ -446,7 +464,7 @@ if ($active_voicemail_server > 0)
|
||||
# create a new action id
|
||||
$action_id = "$now_sec.$now_micro_sec";
|
||||
|
||||
@list_channels = $t->cmd(String => "Action: MailboxCount\nActionID: $action_id\nMailbox: $PTvoicemail_ids[$i]\n\nAction: Ping\n\n", Prompt => '/Response: Success\nPing: Pong.*/');
|
||||
@list_channels = $t->cmd(String => "Action: MailboxCount\nActionID: $action_id\nMailbox: $PTvoicemail_ids[$i]\n\nAction: Ping$command_end", Prompt => '/Response: Success\nPing: Pong.*/');
|
||||
|
||||
$j=0;
|
||||
foreach(@list_channels)
|
||||
@@ -491,7 +509,7 @@ if ($active_voicemail_server > 0)
|
||||
|
||||
|
||||
$t->buffer_empty;
|
||||
@hangup = $t->cmd(String => "Action: Logoff\n\n", Prompt => "/.*/");
|
||||
@hangup = $t->cmd(String => "Action: Logoff$command_end", Prompt => "/.*/");
|
||||
$t->buffer_empty;
|
||||
$t->waitfor(Match => '/Message:.*\n\n/', Timeout => 10);
|
||||
$ok = $t->close;
|
||||
@@ -500,6 +518,15 @@ $ok = $t->close;
|
||||
$dbhA->disconnect();
|
||||
|
||||
|
||||
if($DBX)
|
||||
{
|
||||
open (FILE, '<', "$telnet_log_file") or die "could not open the log file\n";
|
||||
print <FILE>;
|
||||
close (FILE);
|
||||
|
||||
unlink($telnet_log_file) or die "Can't delete $telnet_log_file: $!\n";
|
||||
}
|
||||
|
||||
if($DB)
|
||||
{
|
||||
$secY = time();
|
||||
|
||||
@@ -4272,6 +4272,31 @@ index (call_date),
|
||||
index (lead_id)
|
||||
) ENGINE=MyISAM;
|
||||
|
||||
CREATE TABLE vicidial_security_event_log (
|
||||
event_id int(9) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,
|
||||
server_ip varchar(15),
|
||||
event VARCHAR(25) NOT NULL,
|
||||
event_time DATETIME(3) NOT NULL,
|
||||
severity ENUM('Informational','Error') NOT NULL,
|
||||
service VARCHAR(25) NOT NULL,
|
||||
event_version VARCHAR(25) NOT NULL,
|
||||
account_id VARCHAR(25) NOT NULL,
|
||||
session_id VARCHAR(25) NOT NULL,
|
||||
local_address VARCHAR(15) NOT NULL,
|
||||
local_port SMALLINT NOT NULL,
|
||||
remote_address VARCHAR(15) NOT NULL,
|
||||
remote_port SMALLINT NOT NULL,
|
||||
module VARCHAR(25),
|
||||
session_time DATETIME(3),
|
||||
optional_one VARCHAR(100),
|
||||
optional_two VARCHAR(100),
|
||||
optional_three VARCHAR(100),
|
||||
index (server_ip),
|
||||
index (event),
|
||||
index (event_time),
|
||||
index (remote_address)
|
||||
) ENGINE=MyISAM;
|
||||
|
||||
|
||||
ALTER TABLE vicidial_email_list MODIFY message text character set utf8;
|
||||
|
||||
@@ -4600,4 +4625,4 @@ INSERT INTO vicidial_settings_containers(container_id,container_notes,container_
|
||||
|
||||
UPDATE system_settings set vdc_agent_api_active='1';
|
||||
|
||||
UPDATE system_settings SET db_schema_version='1592',db_schema_update_date=NOW(),reload_timestamp=NOW();
|
||||
UPDATE system_settings SET db_schema_version='1593',db_schema_update_date=NOW(),reload_timestamp=NOW();
|
||||
|
||||
@@ -1199,3 +1199,30 @@ ALTER TABLE vicidial_inbound_groups ADD browser_alert_sound VARCHAR(20) default
|
||||
ALTER TABLE vicidial_inbound_groups ADD browser_alert_volume TINYINT(3) UNSIGNED default '50';
|
||||
|
||||
UPDATE system_settings SET db_schema_version='1592',db_schema_update_date=NOW() where db_schema_version < 1592;
|
||||
|
||||
CREATE TABLE vicidial_security_event_log (
|
||||
event_id int(9) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,
|
||||
server_ip varchar(15),
|
||||
event VARCHAR(25) NOT NULL,
|
||||
event_time DATETIME(3) NOT NULL,
|
||||
severity ENUM('Informational','Error') NOT NULL,
|
||||
service VARCHAR(25) NOT NULL,
|
||||
event_version VARCHAR(25) NOT NULL,
|
||||
account_id VARCHAR(25) NOT NULL,
|
||||
session_id VARCHAR(25) NOT NULL,
|
||||
local_address VARCHAR(15) NOT NULL,
|
||||
local_port SMALLINT NOT NULL,
|
||||
remote_address VARCHAR(15) NOT NULL,
|
||||
remote_port SMALLINT NOT NULL,
|
||||
module VARCHAR(25),
|
||||
session_time DATETIME(3),
|
||||
optional_one VARCHAR(100),
|
||||
optional_two VARCHAR(100),
|
||||
optional_three VARCHAR(100),
|
||||
index (server_ip),
|
||||
index (event),
|
||||
index (event_time),
|
||||
index (remote_address)
|
||||
) ENGINE=MyISAM;
|
||||
|
||||
UPDATE system_settings SET db_schema_version='1593',db_schema_update_date=NOW() where db_schema_version < 1593;
|
||||
|
||||
@@ -567,7 +567,7 @@ if ($stage == "log_agent_out")
|
||||
$kick_local_channel = "$local_DEF$VLA_conf_exten$local_AMP$ext_context";
|
||||
$queryCID = "ULGH3457$StarTtimE";
|
||||
|
||||
$stmtC="INSERT INTO vicidial_manager values('','','$NOW_TIME','NEW','N','$VLA_server_ip','','Originate','$queryCID','Channel: $kick_local_channel','Context: $ext_context','Exten: 8300','Priority: 1','Callerid: $queryCID','','','','$channel','$exten');";
|
||||
$stmtC="INSERT INTO vicidial_manager values('','','$NOW_TIME','NEW','N','$VLA_server_ip','','Originate','$queryCID','Channel: $kick_local_channel','Context: $ext_context','Exten: 8300','Priority: 1','Callerid: $queryCID','','','','','');";
|
||||
if ($DB) {echo "<BR>$stmtC\n";}
|
||||
$rslt=mysql_to_mysqli($stmtC, $link);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user