Files
ViciDialSVN/agc_2-X/branches/agc_2.0.4/install.pl
T
mattf 7cca3032db Created stable release branch of 2.0.4
git-svn-id: svn://192.168.202.10@751 3d104415-ff17-0410-8863-d5cf3c621b8a
2007-12-22 08:20:56 +00:00

1919 lines
58 KiB
Perl

#!/usr/bin/perl
# install.pl
#
# Copyright (C) 2007 Matt Florell <vicidial@gmail.com> LICENSE: GPLv2
#
# CHANGES
# 71004-1155 - Added FTP and REPORT connection variables
# 71012-1251 - Added PATHDONEmonitor setting
# 71121-1048 - Added -p flag to mkdir to not show errors
#
############################################
# install.pl - puts server files in the right places and creates conf file
#
# default paths.
#
# default path to astguiclient configuration file:
$PATHconf = '/etc/astguiclient.conf';
# default path to home directory:
$PATHhome = '/usr/share/astguiclient';
# default path to astguiclient logs directory:
$PATHlogs = '/var/log/astguiclient';
# default path to asterisk agi-bin directory:
$PATHagi = '/var/lib/asterisk/agi-bin';
# default path to web root directory:
#$PATHweb = '/var/www/html';
#$PATHweb = '/home/www/htdocs';
$PATHweb = '/usr/local/apache2/htdocs';
# default path to asterisk sounds directory:
$PATHsounds = '/var/lib/asterisk/sounds';
# default path to asterisk recordings directory:
$PATHmonitor = '/var/spool/asterisk/monitor';
# default path to asterisk recordings DONE directory:
$PATHDONEmonitor = '/var/spool/asterisk/monitorDONE';
# default database server variables:
$VARDB_server = 'localhost';
$VARDB_database = 'asterisk';
$VARDB_user = 'cron';
$VARDB_pass = '1234';
$VARDB_port = '3306';
# default keepalive processes:
$VARactive_keepalives = '123456';
# default recording FTP archive variables:
$VARFTP_host = '10.0.0.4';
$VARFTP_user = 'cron';
$VARFTP_pass = 'test';
$VARFTP_port = '21';
$VARFTP_dir = 'RECORDINGS';
$VARHTTP_path = 'http://10.0.0.4';
# default report FTP variables:
$VARREPORT_host = '10.0.0.4';
$VARREPORT_user = 'cron';
$VARREPORT_pass = 'test';
$VARREPORT_port = '21';
$VARREPORT_dir = 'REPORTS';
# defaults for FastAGI Server PreFork
$VARfastagi_log_min_servers = '3';
$VARfastagi_log_max_servers = '16';
$VARfastagi_log_min_spare_servers = '2';
$VARfastagi_log_max_spare_servers = '8';
$VARfastagi_log_max_requests = '1000';
$VARfastagi_log_checkfordead = '30';
$VARfastagi_log_checkforwait = '60';
############################################
$CLIhome=0;
$CLIlogs=0;
$CLIagi=0;
$CLIweb=0;
$CLIsounds=0;
$CLImonitor=0;
$CLIserver_ip=0;
$CLIDB_server=0;
$CLIDB_database=0;
$CLIDB_user=0;
$CLIDB_pass=0;
$CLIDB_port=0;
$CLIVARactive_keepalives=0;
$CLIFTP_host=0;
$CLIFTP_user=0;
$CLIFTP_pass=0;
$CLIFTP_port=0;
$CLIFTP_dir=0;
$CLIHTTP_path=0;
$CLIREPORT_host=0;
$CLIREPORT_user=0;
$CLIREPORT_pass=0;
$CLIREPORT_port=0;
$CLIREPORT_dir=0;
$CLIVARfastagi_log_min_servers=0;
$CLIVARfastagi_log_max_servers=0;
$CLIVARfastagi_log_min_spare_servers=0;
$CLIVARfastagi_log_max_spare_servers=0;
$CLIVARfastagi_log_max_requests=0;
$CLIVARfastagi_log_checkfordead=0;
$CLIVARfastagi_log_checkforwait=0;
$COPYhome=0;
$COPYlogs=0;
$COPYagi=0;
$COPYweb=0;
$COPYsounds=0;
$COPYmonitor=0;
$secX = time();
# constants
$DB=1; # Debug flag, set to 0 for no debug messages, lots of output
$US='_';
$MT[0]='';
### begin parsing run-time options ###
if (length($ARGV[0])>1)
{
$i=0;
while ($#ARGV >= $i)
{
$args = "$args $ARGV[$i]";
$i++;
}
if ($args =~ /--help/i)
{
print "install.pl - installs astGUIclient server files in the proper places, this\n";
print "script will look for an /etc/astguiclient.conf file for existing settings, and\n";
print "if not present will prompt for proper information then copy files.\n";
print "\n";
print "installation options:\n";
print " [--help] = this help screen\n";
print " [--test] = test (will not copy files)\n";
print " [--debug] = verbose debug messages\n";
print " [--web-only] = only copy files/directories for web server install\n";
print " [--without-web] = do not copy web files/directories\n\n";
print "configuration options:\n";
print " [--home=/path/from/root] = define home path from root at runtime\n";
print " [--logs=/path/from/root] = define logs path from root at runtime\n";
print " [--agi=/path/from/root] = define agi-bin path from root at runtime\n";
print " [--web=/path/from/root] = define webroot path from root at runtime\n";
print " [--sounds=/path/from/root] = define sounds path from root at runtime\n";
print " [--monitor=/path/from/root] = define monitor path from root at runtime\n";
print " [--DONEmonitor=/path/from/root] = define monitor DONE path from root at runtime\n";
print " [--server_ip=192.168.0.1] = define server IP address at runtime\n";
print " [--DB_server=localhost] = define database server IP address at runtime\n";
print " [--DB_database=asterisk] = define database name at runtime\n";
print " [--DB_user=cron] = define database user login at runtime\n";
print " [--DB_pass=1234] = define database user password at runtime\n";
print " [--DB_port=3306] = define database connection port at runtime\n";
print " [--active_keepalives=123456] = define processes to keepalive\n";
print " X - NO KEEPALIVE PROCESSES (use only if you want none to be keepalive)\n";
print " 1 - AST_update\n";
print " 2 - AST_send_listen\n";
print " 3 - AST_VDauto_dial\n";
print " 4 - AST_VDremote_agents\n";
print " 5 - AST_VDadapt (If multi-server system, this must only be on one server)\n";
print " 6 - FastAGI_log\n";
print " 7 - AST_VDauto_dial_FILL (only for multi-server, this must only be on one server)\n";
print " [--copy_sample_conf_files] = copies the sample conf files to /etc/asterisk/\n";
print " [--FTP_host=192.168.0.2] = define recording archive server IP address at runtime\n";
print " [--FTP_user=cron] = define archive server name at runtime\n";
print " [--FTP_pass=test] = define archive server user login at runtime\n";
print " [--FTP_port=21] = define archive server user password at runtime\n";
print " [--FTP_dir=RECORDINGS] = define archive server connection port at runtime\n";
print " [--HTTP_path=http://192.168.0.2] = define archive web root at runtime\n";
print " [--REPORT_host=192.168.0.2] = define report server IP address at runtime\n";
print " [--REPORT_user=cron] = define report server name at runtime\n";
print " [--REPORT_pass=test] = define report server user login at runtime\n";
print " [--REPORT_port=21] = define report server user password at runtime\n";
print " [--REPORT_dir=REPORTS] = define report server connection port at runtime\n";
print " [--fastagi_log_min_servers=3] = define FastAGI log min servers\n";
print " [--fastagi_log_max_servers=16] = define FastAGI log max servers\n";
print " [--fastagi_log_min_spare_servers=2] = define FastAGI log min spare servers\n";
print " [--fastagi_log_max_spare_servers=8] = define FastAGI log max spare servers\n";
print " [--fastagi_log_max_requests=1000] = define FastAGI log max requests\n";
print " [--fastagi_log_checkfordead=30] = define FastAGI log check-for-dead seconds\n";
print " [--fastagi_log_checkforwait=60] = define FastAGI log check-for-wait seconds\n";
print "\n";
exit;
}
else
{
if ($args =~ /--debug/i) # Debug flag
{
$DB=1;
}
if ($args =~ /--test/i) # test flag
{
$TEST=1; $T=1;
}
if ($args =~ /--web-only/i) # web-only flag
{
$WEBONLY=1;
}
if ($args =~ /--without-web/i) # without web flag
{
$NOWEB=1;
}
else
{
$NOWEB=0;
}
if ($args =~ /--home=/i) # CLI defined home path
{
@CLIhomeARY = split(/--home=/,$args);
@CLIhomeARX = split(/ /,$CLIhomeARY[1]);
if (length($CLIhomeARX[0])>2)
{
$PATHhome = $CLIhomeARX[0];
$PATHhome =~ s/\/$| |\r|\n|\t//gi;
$CLIhome=1;
print " CLI defined home path: $PATHhome\n";
}
}
if ($args =~ /--logs=/i) # CLI defined logs path
{
@CLIlogsARY = split(/--logs=/,$args);
@CLIlogsARX = split(/ /,$CLIlogsARY[1]);
if (length($CLIlogsARX[0])>2)
{
$PATHlogs = $CLIlogsARX[0];
$PATHlogs =~ s/\/$| |\r|\n|\t//gi;
$CLIlogs=1;
print " CLI defined logs path: $PATHlogs\n";
}
}
if ($args =~ /--agi=/i) # CLI defined agi-bin path
{
@CLIagiARY = split(/--agi=/,$args);
@CLIagiARX = split(/ /,$CLIagiARY[1]);
if (length($CLIagiARX[0])>2)
{
$PATHagi = $CLIagiARX[0];
$PATHagi =~ s/\/$| |\r|\n|\t//gi;
$CLIagi=1;
print " CLI defined agi-bin path: $PATHagi\n";
}
}
if ($args =~ /--web=/i) # CLI defined webroot path
{
@CLIwebARY = split(/--web=/,$args);
@CLIwebARX = split(/ /,$CLIwebARY[1]);
if (length($CLIwebARX[0])>2)
{
$PATHweb = $CLIwebARX[0];
$PATHweb =~ s/\/$| |\r|\n|\t//gi;
$CLIweb=1;
print " CLI defined webroot path: $PATHweb\n";
}
}
if ($args =~ /--sounds=/i) # CLI defined sounds path
{
@CLIsoundsARY = split(/--sounds=/,$args);
@CLIsoundsARX = split(/ /,$CLIsoundsARY[1]);
if (length($CLIsoundsARX[0])>2)
{
$PATHsounds = $CLIsoundsARX[0];
$PATHsounds =~ s/\/$| |\r|\n|\t//gi;
$CLIsounds=1;
print " CLI defined sounds path: $PATHsounds\n";
}
}
if ($args =~ /--monitor=/i) # CLI defined monitor path
{
@CLImonitorARY = split(/--monitor=/,$args);
@CLImonitorARX = split(/ /,$CLImonitorARY[1]);
if (length($CLImonitorARX[0])>2)
{
$PATHmonitor = $CLImonitorARX[0];
$PATHmonitor =~ s/\/$| |\r|\n|\t//gi;
$CLImonitor=1;
print " CLI defined monitor path: $PATHmonitor\n";
}
}
if ($args =~ /--DONEmonitor=/i) # CLI defined DONEmonitor path
{
@CLIDONEmonitorARY = split(/--DONEmonitor=/,$args);
@CLIDONEmonitorARX = split(/ /,$CLIDONEmonitorARY[1]);
if (length($CLIDONEmonitorARX[0])>2)
{
$PATHDONEmonitor = $CLIDONEmonitorARX[0];
$PATHDONEmonitor =~ s/\/$| |\r|\n|\t//gi;
$CLIDONEmonitor=1;
print " CLI defined DONEmonitor: $PATHDONEmonitor\n";
}
}
if ($args =~ /--server_ip=/i) # CLI defined server IP address
{
@CLIserver_ipARY = split(/--server_ip=/,$args);
@CLIserver_ipARX = split(/ /,$CLIserver_ipARY[1]);
if (length($CLIserver_ipARX[0])>2)
{
$VARserver_ip = $CLIserver_ipARX[0];
$VARserver_ip =~ s/\/$| |\r|\n|\t//gi;
$CLIserver_ip=1;
print " CLI defined server IP: $VARserver_ip\n";
}
}
if ($args =~ /--DB_server=/i) # CLI defined Database server address
{
@CLIDB_serverARY = split(/--DB_server=/,$args);
@CLIDB_serverARX = split(/ /,$CLIDB_serverARY[1]);
if (length($CLIDB_serverARX[0])>2)
{
$VARDB_server = $CLIDB_serverARX[0];
$VARDB_server =~ s/\/$| |\r|\n|\t//gi;
$CLIDB_server=1;
print " CLI defined DB server: $VARDB_server\n";
}
}
if ($args =~ /--DB_database=/i) # CLI defined Database name
{
@CLIDB_databaseARY = split(/--DB_database=/,$args);
@CLIDB_databaseARX = split(/ /,$CLIDB_databaseARY[1]);
if (length($CLIDB_databaseARX[0])>1)
{
$VARDB_database = $CLIDB_databaseARX[0];
$VARDB_database =~ s/ |\r|\n|\t//gi;
$CLIDB_database=1;
print " CLI defined DB database: $VARDB_database\n";
}
}
if ($args =~ /--DB_user=/i) # CLI defined Database user login
{
@CLIDB_userARY = split(/--DB_user=/,$args);
@CLIDB_userARX = split(/ /,$CLIDB_userARY[1]);
if (length($CLIDB_userARX[0])>1)
{
$VARDB_user = $CLIDB_userARX[0];
$VARDB_user =~ s/ |\r|\n|\t//gi;
$CLIDB_user=1;
print " CLI defined DB user: $VARDB_user\n";
}
}
if ($args =~ /--DB_pass=/i) # CLI defined Database user password
{
@CLIDB_passARY = split(/--DB_pass=/,$args);
@CLIDB_passARX = split(/ /,$CLIDB_passARY[1]);
if (length($CLIDB_passARX[0])>1)
{
$VARDB_pass = $CLIDB_passARX[0];
$VARDB_pass =~ s/ |\r|\n|\t//gi;
$CLIDB_pass=1;
print " CLI defined DB password: $VARDB_pass\n";
}
}
if ($args =~ /--DB_port=/i) # CLI defined Database connection port
{
@CLIDB_portARY = split(/--DB_port=/,$args);
@CLIDB_portARX = split(/ /,$CLIDB_portARY[1]);
if (length($CLIDB_portARX[0])>1)
{
$VARDB_port = $CLIDB_portARX[0];
$VARDB_port =~ s/ |\r|\n|\t//gi;
$CLIDB_port=1;
print " CLI defined DB port: $VARDB_port\n";
}
}
if ($args =~ /--active_keepalives=/i) # CLI defined keepalive processes
{
@CLIkeepaliveARY = split(/--active_keepalives=/,$args);
@CLIkeepaliveARX = split(/ /,$CLIkeepaliveARY[1]);
if (length($CLIkeepaliveARX[0])>1)
{
$VARactive_keepalives = $CLIkeepaliveARX[0];
$VARactive_keepalives =~ s/ |\r|\n|\t//gi;
$CLIactive_keepalives=1;
print " CLI active keepalive procs: $VARactive_keepalives\n";
}
}
if ($args =~ /--FTP_host=/i) # CLI defined archive server address
{
@CLIFTP_hostARY = split(/--FTP_host=/,$args);
@CLIFTP_hostARX = split(/ /,$CLIFTP_hostARY[1]);
if (length($CLIFTP_hostARX[0])>2)
{
$VARFTP_host = $CLIFTP_hostARX[0];
$VARFTP_host =~ s/\/$| |\r|\n|\t//gi;
$CLIFTP_host=1;
print " CLI defined FTP host: $VARFTP_host\n";
}
}
if ($args =~ /--FTP_user=/i) # CLI defined archive FTP user
{
@CLIFTP_userARY = split(/--FTP_user=/,$args);
@CLIFTP_userARX = split(/ /,$CLIFTP_userARY[1]);
if (length($CLIFTP_userARX[0])>2)
{
$VARFTP_user = $CLIFTP_userARX[0];
$VARFTP_user =~ s/\/$| |\r|\n|\t//gi;
$CLIFTP_user=1;
print " CLI defined FTP user: $VARFTP_user\n";
}
}
if ($args =~ /--FTP_pass=/i) # CLI defined archive FTP pass
{
@CLIFTP_passARY = split(/--FTP_pass=/,$args);
@CLIFTP_passARX = split(/ /,$CLIFTP_passARY[1]);
if (length($CLIFTP_passARX[0])>2)
{
$VARFTP_pass = $CLIFTP_passARX[0];
$VARFTP_pass =~ s/\/$| |\r|\n|\t//gi;
$CLIFTP_pass=1;
print " CLI defined FTP pass: $VARFTP_pass\n";
}
}
if ($args =~ /--FTP_port=/i) # CLI defined archive FTP port
{
@CLIFTP_portARY = split(/--FTP_port=/,$args);
@CLIFTP_portARX = split(/ /,$CLIFTP_portARY[1]);
if (length($CLIFTP_portARX[0])>2)
{
$VARFTP_port = $CLIFTP_portARX[0];
$VARFTP_port =~ s/\/$| |\r|\n|\t//gi;
$CLIFTP_port=1;
print " CLI defined FTP port: $VARFTP_port\n";
}
}
if ($args =~ /--FTP_dir=/i) # CLI defined archive FTP directory
{
@CLIFTP_dirARY = split(/--FTP_dir=/,$args);
@CLIFTP_dirARX = split(/ /,$CLIFTP_dirARY[1]);
if (length($CLIFTP_dirARX[0])>2)
{
$VARFTP_dir = $CLIFTP_dirARX[0];
$VARFTP_dir =~ s/\/$| |\r|\n|\t//gi;
$CLIFTP_dir=1;
print " CLI defined FTP dir: $VARFTP_dir\n";
}
}
if ($args =~ /--HTTP_path=/i) # CLI defined archive HTTP path
{
@CLIHTTP_pathARY = split(/--HTTP_path=/,$args);
@CLIHTTP_pathARX = split(/ /,$CLIHTTP_pathARY[1]);
if (length($CLIHTTP_pathARX[0])>2)
{
$VARHTTP_path = $CLIHTTP_pathARX[0];
$VARHTTP_path =~ s/\/$| |\r|\n|\t//gi;
$CLIHTTP_path=1;
print " CLI defined HTTP path: $VARHTTP_path\n";
}
}
if ($args =~ /--REPORT_host=/i) # CLI defined archive server address
{
@CLIREPORT_hostARY = split(/--REPORT_host=/,$args);
@CLIREPORT_hostARX = split(/ /,$CLIREPORT_hostARY[1]);
if (length($CLIREPORT_hostARX[0])>2)
{
$VARREPORT_host = $CLIREPORT_hostARX[0];
$VARREPORT_host =~ s/\/$| |\r|\n|\t//gi;
$CLIREPORT_host=1;
print " CLI defined REPORT host: $VARREPORT_host\n";
}
}
if ($args =~ /--REPORT_user=/i) # CLI defined archive REPORT user
{
@CLIREPORT_userARY = split(/--REPORT_user=/,$args);
@CLIREPORT_userARX = split(/ /,$CLIREPORT_userARY[1]);
if (length($CLIREPORT_userARX[0])>2)
{
$VARREPORT_user = $CLIREPORT_userARX[0];
$VARREPORT_user =~ s/\/$| |\r|\n|\t//gi;
$CLIREPORT_user=1;
print " CLI defined REPORT user: $VARREPORT_user\n";
}
}
if ($args =~ /--REPORT_pass=/i) # CLI defined archive REPORT pass
{
@CLIREPORT_passARY = split(/--REPORT_pass=/,$args);
@CLIREPORT_passARX = split(/ /,$CLIREPORT_passARY[1]);
if (length($CLIREPORT_passARX[0])>2)
{
$VARREPORT_pass = $CLIREPORT_passARX[0];
$VARREPORT_pass =~ s/\/$| |\r|\n|\t//gi;
$CLIREPORT_pass=1;
print " CLI defined REPORT pass: $VARREPORT_pass\n";
}
}
if ($args =~ /--REPORT_port=/i) # CLI defined archive REPORT port
{
@CLIREPORT_portARY = split(/--REPORT_port=/,$args);
@CLIREPORT_portARX = split(/ /,$CLIREPORT_portARY[1]);
if (length($CLIREPORT_portARX[0])>2)
{
$VARREPORT_port = $CLIREPORT_portARX[0];
$VARREPORT_port =~ s/\/$| |\r|\n|\t//gi;
$CLIREPORT_port=1;
print " CLI defined REPORT port: $VARREPORT_port\n";
}
}
if ($args =~ /--REPORT_dir=/i) # CLI defined archive REPORT directory
{
@CLIREPORT_dirARY = split(/--REPORT_dir=/,$args);
@CLIREPORT_dirARX = split(/ /,$CLIREPORT_dirARY[1]);
if (length($CLIREPORT_dirARX[0])>2)
{
$VARREPORT_dir = $CLIREPORT_dirARX[0];
$VARREPORT_dir =~ s/\/$| |\r|\n|\t//gi;
$CLIREPORT_dir=1;
print " CLI defined REPORT dir: $VARREPORT_dir\n";
}
}
if ($args =~ /--copy_sample_conf_files/i) # CLI defined conf files
{
$CLIcopy_conf_files='y';
print " CLI copy conf files: YES\n";
}
else
{
$CLIcopy_conf_files='n';
}
if ($args =~ /--fastagi_log_min_servers=/i) # CLI defined fastagi min servers
{
@CLIDB_minserARY = split(/--fastagi_log_min_servers=/,$args);
@CLIDB_minserARX = split(/ /,$CLIDB_minserARY[1]);
if (length($CLIDB_minserARX[0])>1)
{
$VARfastagi_log_min_servers = $CLIDB_minserARX[0];
$VARfastagi_log_min_servers =~ s/ |\r|\n|\t//gi;
$CLIfastagi_log_min_servers=1;
print " CLI defined log min server: $VARfastagi_log_min_servers\n";
}
}
if ($args =~ /--fastagi_log_max_servers=/i) # CLI defined fastagi max servers
{
@CLIDB_maxserARY = split(/--fastagi_log_max_servers=/,$args);
@CLIDB_maxserARX = split(/ /,$CLIDB_maxserARY[1]);
if (length($CLIDB_maxserARX[0])>1)
{
$VARfastagi_log_max_servers = $CLIDB_maxserARX[0];
$VARfastagi_log_max_servers =~ s/ |\r|\n|\t//gi;
$CLIfastagi_log_max_servers=1;
print " CLI defined log max server: $VARfastagi_log_max_servers\n";
}
}
if ($args =~ /--fastagi_log_min_spare_servers=/i) # CLI defined fastagi min spare servers
{
@CLIDB_minspaARY = split(/--fastagi_log_min_spare_servers=/,$args);
@CLIDB_minspaARX = split(/ /,$CLIDB_minspaARY[1]);
if (length($CLIDB_minspaARX[0])>1)
{
$VARfastagi_log_min_spare_servers = $CLIDB_minspaARX[0];
$VARfastagi_log_min_spare_servers =~ s/ |\r|\n|\t//gi;
$CLIfastagi_log_min_spare_servers=1;
print " CLI defined log min spare: $VARfastagi_log_min_spare_servers\n";
}
}
if ($args =~ /--fastagi_log_max_spare_servers=/i) # CLI defined fastagi max spare servers
{
@CLIDB_maxspaARY = split(/--fastagi_log_max_spare_servers=/,$args);
@CLIDB_maxspaARX = split(/ /,$CLIDB_maxspaARY[1]);
if (length($CLIDB_maxspaARX[0])>1)
{
$VARfastagi_log_max_spare_servers = $CLIDB_maxspaARX[0];
$VARfastagi_log_max_spare_servers =~ s/ |\r|\n|\t//gi;
$CLIfastagi_log_max_spare_servers=1;
print " CLI defined log max spare: $VARfastagi_log_max_spare_servers\n";
}
}
if ($args =~ /--fastagi_log_max_requests=/i) # CLI defined fastagi max requests
{
@CLIDB_maxreqARY = split(/--fastagi_log_max_requests=/,$args);
@CLIDB_maxreqARX = split(/ /,$CLIDB_maxreqARY[1]);
if (length($CLIDB_maxreqARX[0])>1)
{
$VARfastagi_log_max_requests = $CLIDB_maxreqARX[0];
$VARfastagi_log_max_requests =~ s/ |\r|\n|\t//gi;
$CLIfastagi_log_max_requests=1;
print " CLI defined log max request:$VARfastagi_log_max_requests\n";
}
}
if ($args =~ /--fastagi_log_checkfordead=/i) # CLI defined fastagi check-for-dead seconds
{
@CLIDB_ckdeadARY = split(/--fastagi_log_checkfordead=/,$args);
@CLIDB_ckdeadARX = split(/ /,$CLIDB_ckdeadARY[1]);
if (length($CLIDB_ckdeadARX[0])>1)
{
$VARfastagi_log_checkfordead = $CLIDB_ckdeadARX[0];
$VARfastagi_log_checkfordead =~ s/ |\r|\n|\t//gi;
$CLIfastagi_log_checkfordead=1;
print " CLI defined log ckdead sec: $VARfastagi_log_checkfordead\n";
}
}
if ($args =~ /--fastagi_log_checkforwait=/i) # CLI defined fastagi check-for-wait seconds
{
@CLIDB_ckwaitARY = split(/--fastagi_log_checkforwait=/,$args);
@CLIDB_ckwaitARX = split(/ /,$CLIDB_ckwaitARY[1]);
if (length($CLIDB_ckwaitARX[0])>1)
{
$VARfastagi_log_checkforwait = $CLIDB_ckwaitARX[0];
$VARfastagi_log_checkforwait =~ s/ |\r|\n|\t//gi;
$CLIfastagi_log_checkforwait=1;
print " CLI defined log ckwait sec: $VARfastagi_log_checkforwait\n";
}
}
}
}
else
{
# print "no command line options set\n";
$CLIcopy_conf_files='n';
}
### end parsing run-time options ###
if (-e "$PATHconf")
{
print "Previous astGUIclient configuration file found at: $PATHconf\n";
open(conf, "$PATHconf") || die "can't open $PATHconf: $!\n";
@conf = <conf>;
close(conf);
$i=0;
foreach(@conf)
{
$line = $conf[$i];
$line =~ s/ |>|\n|\r|\t|\#.*|;.*//gi;
if ( ($line =~ /^PATHhome/) && ($CLIhome < 1) )
{$PATHhome = $line; $PATHhome =~ s/.*=//gi;}
if ( ($line =~ /^PATHlogs/) && ($CLIlogs < 1) )
{$PATHlogs = $line; $PATHlogs =~ s/.*=//gi;}
if ( ($line =~ /^PATHagi/) && ($CLIagi < 1) )
{$PATHagi = $line; $PATHagi =~ s/.*=//gi;}
if ( ($line =~ /^PATHweb/) && ($CLIweb < 1) )
{$PATHweb = $line; $PATHweb =~ s/.*=//gi;}
if ( ($line =~ /^PATHsounds/) && ($CLIsounds < 1) )
{$PATHsounds = $line; $PATHsounds =~ s/.*=//gi;}
if ( ($line =~ /^PATHmonitor/) && ($CLImonitor < 1) )
{$PATHmonitor = $line; $PATHmonitor =~ s/.*=//gi;}
if ( ($line =~ /^PATHDONEmonitor/) && ($CLIDONEmonitor < 1) )
{$PATHDONEmonitor = $line; $PATHDONEmonitor =~ s/.*=//gi;}
if ( ($line =~ /^VARserver_ip/) && ($CLIserver_ip < 1) )
{$VARserver_ip = $line; $VARserver_ip =~ s/.*=//gi;}
if ( ($line =~ /^VARDB_server/) && ($CLIDB_server < 1) )
{$VARDB_server = $line; $VARDB_server =~ s/.*=//gi;}
if ( ($line =~ /^VARDB_database/) && ($CLIDB_database < 1) )
{$VARDB_database = $line; $VARDB_database =~ s/.*=//gi;}
if ( ($line =~ /^VARDB_user/) && ($CLIDB_user < 1) )
{$VARDB_user = $line; $VARDB_user =~ s/.*=//gi;}
if ( ($line =~ /^VARDB_pass/) && ($CLIDB_pass < 1) )
{$VARDB_pass = $line; $VARDB_pass =~ s/.*=//gi;}
if ( ($line =~ /^VARDB_port/) && ($CLIDB_port < 1) )
{$VARDB_port = $line; $VARDB_port =~ s/.*=//gi;}
if ( ($line =~ /^VARactive_keepalives/) && ($CLIactive_keepalives < 1) )
{$VARactive_keepalives = $line; $VARactive_keepalives =~ s/.*=//gi;}
if ( ($line =~ /^VARFTP_host/) && ($CLIFTP_host < 1) )
{$VARFTP_host = $line; $VARFTP_host =~ s/.*=//gi;}
if ( ($line =~ /^VARFTP_user/) && ($CLIFTP_user < 1) )
{$VARFTP_user = $line; $VARFTP_user =~ s/.*=//gi;}
if ( ($line =~ /^VARFTP_pass/) && ($CLIFTP_pass < 1) )
{$VARFTP_pass = $line; $VARFTP_pass =~ s/.*=//gi;}
if ( ($line =~ /^VARFTP_port/) && ($CLIFTP_port < 1) )
{$VARFTP_port = $line; $VARFTP_port =~ s/.*=//gi;}
if ( ($line =~ /^VARFTP_dir/) && ($CLIFTP_dir < 1) )
{$VARFTP_dir = $line; $VARFTP_dir =~ s/.*=//gi;}
if ( ($line =~ /^VARHTTP_path/) && ($CLIHTTP_path < 1) )
{$VARHTTP_path = $line; $VARHTTP_path =~ s/.*=//gi;}
if ( ($line =~ /^VARREPORT_host/) && ($CLIREPORT_host < 1) )
{$VARREPORT_host = $line; $VARREPORT_host =~ s/.*=//gi;}
if ( ($line =~ /^VARREPORT_user/) && ($CLIREPORT_user < 1) )
{$VARREPORT_user = $line; $VARREPORT_user =~ s/.*=//gi;}
if ( ($line =~ /^VARREPORT_pass/) && ($CLIREPORT_pass < 1) )
{$VARREPORT_pass = $line; $VARREPORT_pass =~ s/.*=//gi;}
if ( ($line =~ /^VARREPORT_port/) && ($CLIREPORT_port < 1) )
{$VARREPORT_port = $line; $VARREPORT_port =~ s/.*=//gi;}
if ( ($line =~ /^VARREPORT_dir/) && ($CLIREPORT_dir < 1) )
{$VARREPORT_dir = $line; $VARREPORT_dir =~ s/.*=//gi;}
if ( ($line =~ /^VARfastagi_log_min_servers/) && ($CLIVARfastagi_log_min_servers < 1) )
{$VARfastagi_log_min_servers = $line; $VARfastagi_log_min_servers =~ s/.*=//gi;}
if ( ($line =~ /^VARfastagi_log_max_servers/) && ($CLIVARfastagi_log_max_servers < 1) )
{$VARfastagi_log_max_servers = $line; $VARfastagi_log_max_servers =~ s/.*=//gi;}
if ( ($line =~ /^VARfastagi_log_min_spare_servers/) && ($CLIVARfastagi_log_min_spare_servers < 1) )
{$VARfastagi_log_min_spare_servers = $line; $VARfastagi_log_min_spare_servers =~ s/.*=//gi;}
if ( ($line =~ /^VARfastagi_log_max_spare_servers/) && ($CLIVARfastagi_log_max_spare_servers < 1) )
{$VARfastagi_log_max_spare_servers = $line; $VARfastagi_log_max_spare_servers =~ s/.*=//gi;}
if ( ($line =~ /^VARfastagi_log_max_requests/) && ($CLIVARfastagi_log_max_requests < 1) )
{$VARfastagi_log_max_requests = $line; $VARfastagi_log_max_requests =~ s/.*=//gi;}
if ( ($line =~ /^VARfastagi_log_checkfordead/) && ($CLIVARfastagi_log_checkfordead < 1) )
{$VARfastagi_log_checkfordead = $line; $VARfastagi_log_checkfordead =~ s/.*=//gi;}
if ( ($line =~ /^VARfastagi_log_checkforwait/) && ($CLIVARfastagi_log_checkforwait < 1) )
{$VARfastagi_log_checkforwait = $line; $VARfastagi_log_checkforwait =~ s/.*=//gi;}
$i++;
}
}
print("\nWould you like to use manual configuration and installation(y/n): [y] ");
$manual = <STDIN>;
chomp($manual);
if ($manual =~ /n/i)
{
$manual=0;
}
else
{
$config_finished='NO';
while ($config_finished =~/NO/)
{
print "\nSTARTING ASTGUICLIENT MANUAL CONFIGURATION PHASE...\n";
##### BEGIN astguiclient home directory prompting and existence check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nastguiclient home path or press enter for default: [$PATHhome] ");
$PROMPThome = <STDIN>;
chomp($PROMPThome);
if (length($PROMPThome)>2)
{
$PROMPThome =~ s/ |\n|\r|\t|\/$//gi;
if (!-e "$PROMPThome")
{
print("$PROMPThome does not exist, would you like me to create it?(y/n) [y] ");
$createPROMPThome = <STDIN>;
chomp($createPROMPThome);
if ($createPROMPThome =~ /n/i)
{
$continue='NO';
}
else
{
`mkdir -p $PROMPThome`;
print " $PROMPThome directory created\n";
$PATHhome=$PROMPThome;
$continue='YES';
}
}
else
{
$PATHhome=$PROMPThome;
$continue='YES';
}
}
else
{
if (!-e "$PATHhome")
{
print("$PATHhome does not exist, would you like me to create it?(y/n) [y] ");
$createPATHhome = <STDIN>;
chomp($createPATHhome);
if ($createPATHhome =~ /n/i)
{
$continue='NO';
}
else
{
`mkdir -p $PATHhome`;
print " $PATHhome directory created\n";
$continue='YES';
}
}
else
{
$continue='YES';
}
}
}
##### END astguiclient home directory prompting and existence check #####
##### BEGIN astguiclient logs directory prompting and existence check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nastguiclient logs path or press enter for default: [$PATHlogs] ");
$PROMPTlogs = <STDIN>;
chomp($PROMPTlogs);
if (length($PROMPTlogs)>2)
{
$PROMPTlogs =~ s/ |\n|\r|\t|\/$//gi;
if (!-e "$PROMPTlogs")
{
print("$PROMPTlogs does not exist, would you like me to create it?(y/n) [y] ");
$createPROMPTlogs = <STDIN>;
chomp($createPROMPTlogs);
if ($createPROMPTlogs =~ /n/i)
{
$continue='NO';
}
else
{
`mkdir -p $PROMPTlogs`;
print " $PROMPTlogs directory created\n";
$PATHlogs=$PROMPTlogs;
$continue='YES';
}
}
else
{
$PATHlogs=$PROMPTlogs;
$continue='YES';
}
}
else
{
if (!-e "$PATHlogs")
{
print("$PATHlogs does not exist, would you like me to create it?(y/n) [y] ");
$createPATHlogs = <STDIN>;
chomp($createPATHlogs);
if ($createPATHlogs =~ /n/i)
{
$continue='NO';
}
else
{
`mkdir -p --mode=0666 $PATHlogs`;
print " $PATHlogs directory created\n";
$continue='YES';
}
}
else
{
$continue='YES';
}
}
}
##### END astguiclient logs directory prompting and existence check #####
##### BEGIN asterisk agi-bin directory prompting and existence check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nasterisk agi-bin path or press enter for default: [$PATHagi] ");
$PROMPTagi = <STDIN>;
chomp($PROMPTagi);
if (length($PROMPTagi)>2)
{
$PROMPTagi =~ s/ |\n|\r|\t|\/$//gi;
if (!-e "$PROMPTagi")
{
print("$PROMPTagi does not exist, would you like me to create it?(y/n) [y] ");
$createPROMPTagi = <STDIN>;
chomp($createPROMPTagi);
if ($createPROMPTagi =~ /n/i)
{
$continue='NO';
}
else
{
`mkdir -p $PROMPTagi`;
print " $PROMPTagi directory created\n";
$PATHagi=$PROMPTagi;
$continue='YES';
}
}
else
{
$PATHagi=$PROMPTagi;
$continue='YES';
}
}
else
{
if (!-e "$PATHagi")
{
print("$PATHagi does not exist, would you like me to create it?(y/n) [y] ");
$createPATHagi = <STDIN>;
chomp($createPATHagi);
if ($createPATHagi =~ /n/i)
{
$continue='NO';
}
else
{
`mkdir -p $PATHagi`;
print " $PATHagi directory created\n";
$continue='YES';
}
}
else
{
$continue='YES';
}
}
}
##### END asterisk agi-bin directory prompting and existence check #####
##### BEGIN server webroot directory prompting and existence check #####
$continue='NO';
while ( ($continue =~/NO/) && ($NOWEB < 1) )
{
print("\nserver webroot path or press enter for default: [$PATHweb] ");
$PROMPTweb = <STDIN>;
chomp($PROMPTweb);
if (length($PROMPTweb)>2)
{
$PROMPTweb =~ s/ |\n|\r|\t|\/$//gi;
if (!-e "$PROMPTweb")
{
print("$PROMPTweb does not exist, would you like me to create it?(y/n) [y] ");
$createPROMPTweb = <STDIN>;
chomp($createPROMPTweb);
if ($createPROMPTweb =~ /n/i)
{
$continue='NO';
}
else
{
`mkdir -p $PROMPTweb`;
print " $PROMPTweb directory created\n";
$PATHweb=$PROMPTweb;
$continue='YES';
}
}
else
{
$PATHweb=$PROMPTweb;
$continue='YES';
}
}
else
{
if (!-e "$PATHweb")
{
print("$PATHweb does not exist, would you like me to create it?(y/n) [y] ");
$createPATHweb = <STDIN>;
chomp($createPATHweb);
if ($createPATHweb =~ /n/i)
{
$continue='NO';
}
else
{
`mkdir -p $PATHweb`;
print " $PATHweb directory created\n";
$continue='YES';
}
}
else
{
$continue='YES';
}
}
}
##### END server webroot directory prompting and existence check #####
##### BEGIN asterisk sounds directory prompting and existence check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nasterisk sounds path or press enter for default: [$PATHsounds] ");
$PROMPTsounds = <STDIN>;
chomp($PROMPTsounds);
if (length($PROMPTsounds)>2)
{
$PROMPTsounds =~ s/ |\n|\r|\t|\/$//gi;
if (!-e "$PROMPTsounds")
{
print("$PROMPTsounds does not exist, would you like me to create it?(y/n) [y] ");
$createPROMPTsounds = <STDIN>;
chomp($createPROMPTsounds);
if ($createPROMPTsounds =~ /n/i)
{
$continue='NO';
}
else
{
`mkdir -p $PROMPTsounds`;
print " $PROMPTsounds directory created\n";
$PATHsounds=$PROMPTsounds;
$continue='YES';
}
}
else
{
$PATHsounds=$PROMPTsounds;
$continue='YES';
}
}
else
{
if (!-e "$PATHsounds")
{
print("$PATHsounds does not exist, would you like me to create it?(y/n) [y] ");
$createPATHsounds = <STDIN>;
chomp($createPATHsounds);
if ($createPATHsounds =~ /n/i)
{
$continue='NO';
}
else
{
`mkdir -p $PATHsounds`;
print " $PATHsounds directory created\n";
$continue='YES';
}
}
else
{
$continue='YES';
}
}
}
##### END asterisk sounds directory prompting and existence check #####
##### BEGIN asterisk monitor directory prompting and existence check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nasterisk monitor path or press enter for default: [$PATHmonitor] ");
$PROMPTmonitor = <STDIN>;
chomp($PROMPTmonitor);
if (length($PROMPTmonitor)>2)
{
$PROMPTmonitor =~ s/ |\n|\r|\t|\/$//gi;
if (!-e "$PROMPTmonitor")
{
print("$PROMPTmonitor does not exist, would you like me to create it?(y/n) [y] ");
$createPROMPTmonitor = <STDIN>;
chomp($createPROMPTmonitor);
if ($createPROMPTmonitor =~ /n/i)
{
$continue='NO';
}
else
{
`mkdir -p $PROMPTmonitor`;
print " $PROMPTmonitor directory created\n";
$PATHmonitor=$PROMPTmonitor;
$continue='YES';
}
}
else
{
$PATHmonitor=$PROMPTmonitor;
$continue='YES';
}
}
else
{
if (!-e "$PATHmonitor")
{
print("$PATHmonitor does not exist, would you like me to create it?(y/n) [y] ");
$createPATHmonitor = <STDIN>;
chomp($createPATHmonitor);
if ($createPATHmonitor =~ /n/i)
{
$continue='NO';
}
else
{
`mkdir -p $PATHmonitor`;
print " $PATHmonitor directory created\n";
$continue='YES';
}
}
else
{
$continue='YES';
}
}
}
##### END asterisk monitor directory prompting and existence check #####
##### BEGIN asterisk DONEmonitor directory prompting and existence check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nasterisk DONEmonitor path or press enter for default: [$PATHDONEmonitor] ");
$PROMPTDONEmonitor = <STDIN>;
chomp($PROMPTDONEmonitor);
if (length($PROMPTDONEmonitor)>2)
{
$PROMPTDONEmonitor =~ s/ |\n|\r|\t|\/$//gi;
if (!-e "$PROMPTDONEmonitor")
{
print("$PROMPTDONEmonitor does not exist, would you like me to create it?(y/n) [y] ");
$createPROMPTDONEmonitor = <STDIN>;
chomp($createPROMPTDONEmonitor);
if ($createPROMPTDONEmonitor =~ /n/i)
{
$continue='NO';
}
else
{
`mkdir -p $PROMPTDONEmonitor`;
print " $PROMPTDONEmonitor directory created\n";
$PATHDONEmonitor=$PROMPTDONEmonitor;
$continue='YES';
}
}
else
{
$PATHDONEmonitor=$PROMPTDONEmonitor;
$continue='YES';
}
}
else
{
if (!-e "$PATHDONEmonitor")
{
print("$PATHDONEmonitor does not exist, would you like me to create it?(y/n) [y] ");
$createPATHDONEmonitor = <STDIN>;
chomp($createPATHDONEmonitor);
if ($createPATHDONEmonitor =~ /n/i)
{
$continue='NO';
}
else
{
`mkdir -p $PATHDONEmonitor`;
print " $PATHDONEmonitor directory created\n";
$continue='YES';
}
}
else
{
$continue='YES';
}
}
}
##### END asterisk DONEmonitor directory prompting and existence check #####
##### BEGIN server_ip prompting and check #####
if (length($VARserver_ip)<7)
{
### get best guess of IP address from ifconfig output ###
# inet addr:10.10.11.17 Bcast:10.10.255.255 Mask:255.255.0.0
@ip = `/sbin/ifconfig`;
$j=0;
while($#ip>=$j)
{
if ($ip[$j] =~ /inet addr/) {$VARserver_ip = $ip[$j]; $j=1000;}
$j++;
}
$VARserver_ip =~ s/.*addr:| Bcast.*|\r|\n|\t| //gi;
}
$continue='NO';
while ($continue =~/NO/)
{
print("\nserver IP address or press enter for default: [$VARserver_ip] ");
$PROMPTserver_ip = <STDIN>;
chomp($PROMPTserver_ip);
if (length($PROMPTserver_ip)>6)
{
$PROMPTserver_ip =~ s/ |\n|\r|\t|\/$//gi;
$VARserver_ip=$PROMPTserver_ip;
$continue='YES';
}
else
{
$continue='YES';
}
}
##### END server_ip prompting and check #####
##### BEGIN DB_server prompting and check #####
if (length($VARDB_server)<7)
{
$VARDB_server = 'localhost';
}
$continue='NO';
while ($continue =~/NO/)
{
print("\nDB server address or press enter for default: [$VARDB_server] ");
$PROMPTDB_server = <STDIN>;
chomp($PROMPTDB_server);
if (length($PROMPTDB_server)>6)
{
$PROMPTDB_server =~ s/ |\n|\r|\t|\/$//gi;
$VARDB_server=$PROMPTDB_server;
$continue='YES';
}
else
{
$continue='YES';
}
}
##### END DB_server prompting and check #####
##### BEGIN DB_database prompting and check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nDB database name or press enter for default: [$VARDB_database] ");
$PROMPTDB_database = <STDIN>;
chomp($PROMPTDB_database);
if (length($PROMPTDB_database)>1)
{
$PROMPTDB_database =~ s/ |\n|\r|\t|\/$//gi;
$VARDB_database=$PROMPTDB_database;
$continue='YES';
}
else
{
$continue='YES';
}
}
##### END DB_database prompting and check #####
##### BEGIN DB_user prompting and check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nDB user login or press enter for default: [$VARDB_user] ");
$PROMPTDB_user = <STDIN>;
chomp($PROMPTDB_user);
if (length($PROMPTDB_user)>1)
{
$PROMPTDB_user =~ s/ |\n|\r|\t|\/$//gi;
$VARDB_user=$PROMPTDB_user;
$continue='YES';
}
else
{
$continue='YES';
}
}
##### END DB_user prompting and check #####
##### BEGIN DB_pass prompting and check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nDB user password or press enter for default: [$VARDB_pass] ");
$PROMPTDB_pass = <STDIN>;
chomp($PROMPTDB_pass);
if (length($PROMPTDB_pass)>1)
{
$PROMPTDB_pass =~ s/ |\n|\r|\t|\/$//gi;
$VARDB_pass=$PROMPTDB_pass;
$continue='YES';
}
else
{
$continue='YES';
}
}
##### END DB_pass prompting and check #####
##### BEGIN DB_port prompting and check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nDB connection port or press enter for default: [$VARDB_port] ");
$PROMPTDB_port = <STDIN>;
chomp($PROMPTDB_port);
if (length($PROMPTDB_port)>1)
{
$PROMPTDB_port =~ s/ |\n|\r|\t|\/$//gi;
$VARDB_port=$PROMPTDB_port;
$continue='YES';
}
else
{
$continue='YES';
}
}
##### END DB_port prompting and check #####
##### BEGIN active_keepalives prompting and check #####
$continue='NO';
while ($continue =~/NO/)
{
print "\nNumeric list of the astGUIclient processes to be kept running\n";
print "(value should be listing of characters with no spaces: 123456)\n";
print " X - NO KEEPALIVE PROCESSES (use only if you want none to be keepalive)\n";
print " 1 - AST_update\n";
print " 2 - AST_send_listen\n";
print " 3 - AST_VDauto_dial\n";
print " 4 - AST_VDremote_agents\n";
print " 5 - AST_VDadapt (If multi-server system, this must only be on one server)\n";
print " 6 - FastAGI_log\n";
print " 7 - AST_VDauto_dial_FILL (only for multi-server, this must only be on one server)\n";
print "Enter active keepalives or press enter for default: [$VARactive_keepalives] ";
$PROMPTactive_keepalives = <STDIN>;
chomp($PROMPTactive_keepalives);
if (length($PROMPTactive_keepalives)>0)
{
$PROMPTactive_keepalives =~ s/ |\n|\r|\t|\/$//gi;
$VARactive_keepalives=$PROMPTactive_keepalives;
$continue='YES';
}
else
{
$continue='YES';
}
}
##### END active_keepalives prompting and check #####
##### BEGIN copy asterisk sample conf files prompt #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nCopy sample configuration files to /etc/asterisk/ ? [$CLIcopy_conf_files] ");
$PROMPTcopy_conf_files = <STDIN>;
chomp($PROMPTcopy_conf_files);
if (length($PROMPTcopy_conf_files)<1)
{$PROMPTcopy_conf_files = $CLIcopy_conf_files;}
if ($PROMPTcopy_conf_files =~ /y/i)
{
if (!-e "/etc/asterisk")
{
print("/etc/asterisk does not exist, would you like me to create it?(y/n) [y] ");
$createPROMPTmonitor = <STDIN>;
chomp($createPROMPTmonitor);
if ($createPROMPTmonitor =~ /n/i)
{
$continue='NO';
}
else
{
`mkdir -p /etc/asterisk`;
print " /etc/asterisk directory created\n";
$continue='YES';
}
}
else
{
$continue='YES';
}
}
else
{
$continue='YES';
}
}
##### END copy asterisk sample conf files prompt #####
##### BEGIN FTP_host prompting and check #####
if (length($VARFTP_host)<7)
{
$VARFTP_host = 'localhost';
}
$continue='NO';
while ($continue =~/NO/)
{
print("\nFTP host address or press enter for default: [$VARFTP_host] ");
$PROMPTFTP_host = <STDIN>;
chomp($PROMPTFTP_host);
if (length($PROMPTFTP_host)>6)
{
$PROMPTFTP_host =~ s/ |\n|\r|\t|\/$//gi;
$VARFTP_host=$PROMPTFTP_host;
$continue='YES';
}
else
{
$continue='YES';
}
}
##### END FTP_host prompting and check #####
##### BEGIN FTP_user prompting and check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nFTP user login or press enter for default: [$VARFTP_user] ");
$PROMPTFTP_user = <STDIN>;
chomp($PROMPTFTP_user);
if (length($PROMPTFTP_user)>1)
{
$PROMPTFTP_user =~ s/ |\n|\r|\t|\/$//gi;
$VARFTP_user=$PROMPTFTP_user;
$continue='YES';
}
else
{
$continue='YES';
}
}
##### END FTP_user prompting and check #####
##### BEGIN FTP_pass prompting and check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nFTP user password or press enter for default: [$VARFTP_pass] ");
$PROMPTFTP_pass = <STDIN>;
chomp($PROMPTFTP_pass);
if (length($PROMPTFTP_pass)>1)
{
$PROMPTFTP_pass =~ s/ |\n|\r|\t|\/$//gi;
$VARFTP_pass=$PROMPTFTP_pass;
$continue='YES';
}
else
{
$continue='YES';
}
}
##### END FTP_pass prompting and check #####
##### BEGIN FTP_port prompting and check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nFTP connection port or press enter for default: [$VARFTP_port] ");
$PROMPTFTP_port = <STDIN>;
chomp($PROMPTFTP_port);
if (length($PROMPTFTP_port)>1)
{
$PROMPTFTP_port =~ s/ |\n|\r|\t|\/$//gi;
$VARFTP_port=$PROMPTFTP_port;
$continue='YES';
}
else
{
$continue='YES';
}
}
##### END FTP_port prompting and check #####
##### BEGIN FTP_dir prompting and check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nFTP directory or press enter for default: [$VARFTP_dir] ");
$PROMPTFTP_dir = <STDIN>;
chomp($PROMPTFTP_dir);
if (length($PROMPTFTP_dir)>1)
{
$PROMPTFTP_dir =~ s/ |\n|\r|\t|\/$//gi;
$VARFTP_dir=$PROMPTFTP_dir;
$continue='YES';
}
else
{
$continue='YES';
}
}
##### END FTP_dir prompting and check #####
##### BEGIN HTTP_path prompting and check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nHTTP path for archive or press enter for default: [$VARHTTP_path] ");
$PROMPTHTTP_path = <STDIN>;
chomp($PROMPTHTTP_path);
if (length($PROMPTHTTP_path)>1)
{
$PROMPTHTTP_path =~ s/ |\n|\r|\t|\/$//gi;
$VARHTTP_path=$PROMPTHTTP_path;
$continue='YES';
}
else
{
$continue='YES';
}
}
##### END HTTP_path prompting and check #####
##### BEGIN REPORT_host prompting and check #####
if (length($VARREPORT_host)<7)
{
$VARREPORT_host = 'localhost';
}
$continue='NO';
while ($continue =~/NO/)
{
print("\nREPORT host address or press enter for default: [$VARREPORT_host] ");
$PROMPTREPORT_host = <STDIN>;
chomp($PROMPTREPORT_host);
if (length($PROMPTREPORT_host)>6)
{
$PROMPTREPORT_host =~ s/ |\n|\r|\t|\/$//gi;
$VARREPORT_host=$PROMPTREPORT_host;
$continue='YES';
}
else
{
$continue='YES';
}
}
##### END REPORT_host prompting and check #####
##### BEGIN REPORT_user prompting and check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nREPORT user login or press enter for default: [$VARREPORT_user] ");
$PROMPTREPORT_user = <STDIN>;
chomp($PROMPTREPORT_user);
if (length($PROMPTREPORT_user)>1)
{
$PROMPTREPORT_user =~ s/ |\n|\r|\t|\/$//gi;
$VARREPORT_user=$PROMPTREPORT_user;
$continue='YES';
}
else
{
$continue='YES';
}
}
##### END REPORT_user prompting and check #####
##### BEGIN REPORT_pass prompting and check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nREPORT user password or press enter for default: [$VARREPORT_pass] ");
$PROMPTREPORT_pass = <STDIN>;
chomp($PROMPTREPORT_pass);
if (length($PROMPTREPORT_pass)>1)
{
$PROMPTREPORT_pass =~ s/ |\n|\r|\t|\/$//gi;
$VARREPORT_pass=$PROMPTREPORT_pass;
$continue='YES';
}
else
{
$continue='YES';
}
}
##### END REPORT_pass prompting and check #####
##### BEGIN REPORT_port prompting and check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nREPORT connection port or press enter for default: [$VARREPORT_port] ");
$PROMPTREPORT_port = <STDIN>;
chomp($PROMPTREPORT_port);
if (length($PROMPTREPORT_port)>1)
{
$PROMPTREPORT_port =~ s/ |\n|\r|\t|\/$//gi;
$VARREPORT_port=$PROMPTREPORT_port;
$continue='YES';
}
else
{
$continue='YES';
}
}
##### END REPORT_port prompting and check #####
##### BEGIN REPORT_dir prompting and check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nREPORT directory or press enter for default: [$VARREPORT_dir] ");
$PROMPTREPORT_dir = <STDIN>;
chomp($PROMPTREPORT_dir);
if (length($PROMPTREPORT_dir)>1)
{
$PROMPTREPORT_dir =~ s/ |\n|\r|\t|\/$//gi;
$VARREPORT_dir=$PROMPTREPORT_dir;
$continue='YES';
}
else
{
$continue='YES';
}
}
##### END REPORT_dir prompting and check #####
##### BEGIN fastagi_log_min_servers prompting and check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nFastAGI log minimum child servers: [$VARfastagi_log_min_servers] ");
$PROMPTfastagi_log_min_servers = <STDIN>;
chomp($PROMPTfastagi_log_min_servers);
if (length($PROMPTfastagi_log_min_servers)>0)
{
$PROMPTfastagi_log_min_servers =~ s/ |\n|\r|\t|\/$//gi;
$VARfastagi_log_min_servers=$PROMPTfastagi_log_min_servers;
$continue='YES';
}
else
{
$continue='YES';
}
}
##### END fastagi_log_min_servers prompting and check #####
##### BEGIN fastagi_log_max_servers prompting and check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nFastAGI log maximum child servers: [$VARfastagi_log_max_servers] ");
$PROMPTfastagi_log_max_servers = <STDIN>;
chomp($PROMPTfastagi_log_max_servers);
if (length($PROMPTfastagi_log_max_servers)>0)
{
$PROMPTfastagi_log_max_servers =~ s/ |\n|\r|\t|\/$//gi;
$VARfastagi_log_max_servers=$PROMPTfastagi_log_max_servers;
$continue='YES';
}
else
{
$continue='YES';
}
}
##### END fastagi_log_max_servers prompting and check #####
##### BEGIN fastagi_log_min_spare_servers prompting and check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nFastAGI log minimum spare child servers: [$VARfastagi_log_min_spare_servers] ");
$PROMPTfastagi_log_min_spare_servers = <STDIN>;
chomp($PROMPTfastagi_log_min_spare_servers);
if (length($PROMPTfastagi_log_min_spare_servers)>0)
{
$PROMPTfastagi_log_min_spare_servers =~ s/ |\n|\r|\t|\/$//gi;
$VARfastagi_log_min_spare_servers=$PROMPTfastagi_log_min_spare_servers;
$continue='YES';
}
else
{
$continue='YES';
}
}
##### END fastagi_log_min_spare_servers prompting and check #####
##### BEGIN fastagi_log_max_spare_servers prompting and check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nFastAGI log maximum spare child servers: [$VARfastagi_log_max_spare_servers] ");
$PROMPTfastagi_log_max_spare_servers = <STDIN>;
chomp($PROMPTfastagi_log_max_spare_servers);
if (length($PROMPTfastagi_log_max_spare_servers)>0)
{
$PROMPTfastagi_log_max_spare_servers =~ s/ |\n|\r|\t|\/$//gi;
$VARfastagi_log_max_spare_servers=$PROMPTfastagi_log_max_spare_servers;
$continue='YES';
}
else
{
$continue='YES';
}
}
##### END fastagi_log_max_spare_servers prompting and check #####
##### BEGIN fastagi_log_max_requests prompting and check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nFastAGI log maximum requests per child server: [$VARfastagi_log_max_requests] ");
$PROMPTfastagi_log_max_requests = <STDIN>;
chomp($PROMPTfastagi_log_max_requests);
if (length($PROMPTfastagi_log_max_requests)>0)
{
$PROMPTfastagi_log_max_requests =~ s/ |\n|\r|\t|\/$//gi;
$VARfastagi_log_max_requests=$PROMPTfastagi_log_max_requests;
$continue='YES';
}
else
{
$continue='YES';
}
}
##### END fastagi_log_max_requests prompting and check #####
##### BEGIN fastagi_log_checkfordead prompting and check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nFastAGI log check-for-dead seconds: [$VARfastagi_log_checkfordead] ");
$PROMPTfastagi_log_checkfordead = <STDIN>;
chomp($PROMPTfastagi_log_checkfordead);
if (length($PROMPTfastagi_log_checkfordead)>0)
{
$PROMPTfastagi_log_checkfordead =~ s/ |\n|\r|\t|\/$//gi;
$VARfastagi_log_checkfordead=$PROMPTfastagi_log_checkfordead;
$continue='YES';
}
else
{
$continue='YES';
}
}
##### END fastagi_log_checkfordead prompting and check #####
##### BEGIN fastagi_log_checkforwait prompting and check #####
$continue='NO';
while ($continue =~/NO/)
{
print("\nFastAGI log check-for-wait seconds: [$VARfastagi_log_checkforwait] ");
$PROMPTfastagi_log_checkforwait = <STDIN>;
chomp($PROMPTfastagi_log_checkforwait);
if (length($PROMPTfastagi_log_checkforwait)>0)
{
$PROMPTfastagi_log_checkforwait =~ s/ |\n|\r|\t|\/$//gi;
$VARfastagi_log_checkforwait=$PROMPTfastagi_log_checkforwait;
$continue='YES';
}
else
{
$continue='YES';
}
}
##### END fastagi_log_checkforwait prompting and check #####
print "\n";
print " defined home path: $PATHhome\n";
print " defined logs path: $PATHlogs\n";
print " defined agi-bin path: $PATHagi\n";
print " defined webroot path: $PATHweb\n";
print " defined sounds path: $PATHsounds\n";
print " defined monitor path: $PATHmonitor\n";
print " defined DONEmonitor path: $PATHDONEmonitor\n";
print " defined server_ip: $VARserver_ip\n";
print " defined DB_server: $VARDB_server\n";
print " defined DB_database: $VARDB_database\n";
print " defined DB_user: $VARDB_user\n";
print " defined DB_pass: $VARDB_pass\n";
print " defined DB_port: $VARDB_port\n";
print " defined active_keepalives $VARactive_keepalives\n";
print " defined copying conf files: $PROMPTcopy_conf_files\n";
print " defined FTP_host: $VARFTP_host\n";
print " defined FTP_user: $VARFTP_user\n";
print " defined FTP_pass: $VARFTP_pass\n";
print " defined FTP_port: $VARFTP_port\n";
print " defined FTP_dir: $VARFTP_dir\n";
print " defined HTTP_path: $VARHTTP_path\n";
print " defined REPORT_host: $VARREPORT_host\n";
print " defined REPORT_user: $VARREPORT_user\n";
print " defined REPORT_pass: $VARREPORT_pass\n";
print " defined REPORT_port: $VARREPORT_port\n";
print " defined REPORT_dir: $VARREPORT_dir\n";
print " defined fastagi_log_min_servers: $VARfastagi_log_min_servers\n";
print " defined fastagi_log_max_servers: $VARfastagi_log_max_servers\n";
print " defined fastagi_log_min_spare_servers: $VARfastagi_log_min_spare_servers\n";
print " defined fastagi_log_max_spare_servers: $VARfastagi_log_max_spare_servers\n";
print " defined fastagi_log_max_requests: $VARfastagi_log_max_requests\n";
print " defined fastagi_log_checkfordead: $VARfastagi_log_checkfordead\n";
print " defined fastagi_log_checkforwait: $VARfastagi_log_checkforwait\n";
print "\n";
print("Are these settings correct?(y/n): [y] ");
$PROMPTconfig = <STDIN>;
chomp($PROMPTconfig);
if ( (length($PROMPTconfig)<1) or ($PROMPTconfig =~ /y/i) )
{
$config_finished='YES';
}
}
}
print "Writing to astguiclient.conf file: $PATHconf\n";
open(conf, ">$PATHconf") || die "can't open $PATHconf: $!\n";
print conf "# astguiclient.conf - configuration elements for the astguiclient package\n";
print conf "# this is the astguiclient configuration file \n";
print conf "# all comments will be lost if you run install.pl again\n";
print conf "\n";
print conf "# Paths used by astGUIclient\n";
print conf "PATHhome => $PATHhome\n";
print conf "PATHlogs => $PATHlogs\n";
print conf "PATHagi => $PATHagi\n";
print conf "PATHweb => $PATHweb\n";
print conf "PATHsounds => $PATHsounds\n";
print conf "PATHmonitor => $PATHmonitor\n";
print conf "PATHDONEmonitor => $PATHDONEmonitor\n";
print conf "\n";
print conf "# The IP address of this machine\n";
print conf "VARserver_ip => $VARserver_ip\n";
print conf "\n";
print conf "# Database connection information\n";
print conf "VARDB_server => $VARDB_server\n";
print conf "VARDB_database => $VARDB_database\n";
print conf "VARDB_user => $VARDB_user\n";
print conf "VARDB_pass => $VARDB_pass\n";
print conf "VARDB_port => $VARDB_port\n";
print conf "\n";
print conf "# Alpha-Numeric list of the astGUIclient processes to be kept running\n";
print conf "# (value should be listing of characters with no spaces: 123456)\n";
print conf "# X - NO KEEPALIVE PROCESSES (use only if you want none to be keepalive)\n";
print conf "# 1 - AST_update\n";
print conf "# 2 - AST_send_listen\n";
print conf "# 3 - AST_VDauto_dial\n";
print conf "# 4 - AST_VDremote_agents\n";
print conf "# 5 - AST_VDadapt (If multi-server system, this must only be on one server)\n";
print conf "# 6 - FastAGI_log\n";
print conf "# 7 - AST_VDauto_dial_FILL (only for multi-server, this must only be on one server)\n";
print conf "VARactive_keepalives => $VARactive_keepalives\n";
print conf "\n";
print conf "# FTP recording archive connection information\n";
print conf "VARFTP_host => $VARFTP_host\n";
print conf "VARFTP_user => $VARFTP_user\n";
print conf "VARFTP_pass => $VARFTP_pass\n";
print conf "VARFTP_port => $VARFTP_port\n";
print conf "VARFTP_dir => $VARFTP_dir\n";
print conf "VARHTTP_path => $VARHTTP_path\n";
print conf "\n";
print conf "# REPORT server connection information\n";
print conf "VARREPORT_host => $VARREPORT_host\n";
print conf "VARREPORT_user => $VARREPORT_user\n";
print conf "VARREPORT_pass => $VARREPORT_pass\n";
print conf "VARREPORT_port => $VARREPORT_port\n";
print conf "VARREPORT_dir => $VARREPORT_dir\n";
print conf "\n";
print conf "# Settings for FastAGI logging server\n";
print conf "VARfastagi_log_min_servers => $VARfastagi_log_min_servers\n";
print conf "VARfastagi_log_max_servers => $VARfastagi_log_max_servers\n";
print conf "VARfastagi_log_min_spare_servers => $VARfastagi_log_min_spare_servers\n";
print conf "VARfastagi_log_max_spare_servers => $VARfastagi_log_max_spare_servers\n";
print conf "VARfastagi_log_max_requests => $VARfastagi_log_max_requests\n";
print conf "VARfastagi_log_checkfordead => $VARfastagi_log_checkfordead\n";
print conf "VARfastagi_log_checkforwait => $VARfastagi_log_checkforwait\n";
close(conf);
print "\nSTARTING ASTGUICLIENT INSTALLATION PHASE...\n";
if ($WEBONLY < 1)
{
print "Creating $PATHhome/LEADS_IN/DONE directories...\n";
`mkdir -p $PATHhome/libs`;
`mkdir -p $PATHhome/libs/Asterisk`;
`mkdir -p $PATHhome/LEADS_IN`;
`mkdir -p $PATHhome/LEADS_IN/DONE`;
`chmod -R 0766 $PATHhome/LEADS_IN`;
print "Creating $PATHmonitor directories...\n";
`mkdir -p $PATHmonitor`;
`mkdir -p $PATHDONEmonitor`;
`mkdir -p $PATHDONEmonitor/ORIG`;
`chmod -R 0766 $PATHmonitor`;
`chmod -R 0766 $PATHDONEmonitor`;
print "Copying bin scripts to $PATHhome ...\n";
`cp -f ./bin/* $PATHhome/`;
print "Copying libs to $PATHhome ...\n";
`cp -f ./extras/Asterisk.pm $PATHhome/libs/`;
`cp -f ./extras/Asterisk/* $PATHhome/libs/Asterisk/`;
print "setting cron scripts to executable...\n";
`chmod 0755 $PATHhome/*`;
print "Copying extras files to $PATHhome ...\n";
`cp -f ./extras/GMT_USA_zip.txt $PATHhome/`;
`cp -f ./extras/phone_codes_GMT.txt $PATHhome/`;
`cp -f ./extras/MySQL_AST_CREATE_tables.sql $PATHhome/`;
print "Copying agi-bin scripts to $PATHagi ...\n";
`cp -f ./agi/* $PATHagi/`;
print "setting agi-bin scripts to executable...\n";
`chmod 0755 $PATHagi/*`;
print "Copying sounds to $PATHsounds...\n";
`cp -f ./sounds/* $PATHsounds/`;
}
if ($NOWEB < 1)
{
print "Creating $PATHweb web directories...\n";
`mkdir -p $PATHweb/agc/`;
`mkdir -p $PATHweb/astguiclient/`;
`mkdir -p $PATHweb/vicidial/`;
`mkdir -p $PATHweb/vicidial/ploticus/`;
`mkdir -p $PATHweb/vicidial/agent_reports/`;
`mkdir -p $PATHweb/vicidial/server_reports/`;
print "Copying web files...\n";
`cp -f -R ./www/* $PATHweb/`;
print "setting web scripts to executable...\n";
`chmod -R 0755 $PATHweb/agc/`;
`chmod -R 0755 $PATHweb/astguiclient/`;
`chmod -R 0755 $PATHweb/vicidial/`;
`chmod 0777 $PATHweb/agc/`;
`chmod 0777 $PATHweb/astguiclient/`;
`chmod 0777 $PATHweb/vicidial/`;
`chmod 0777 $PATHweb/vicidial/ploticus/`;
`chmod 0777 $PATHweb/vicidial/agent_reports/`;
`chmod 0777 $PATHweb/vicidial/server_reports/`;
}
if ($PROMPTcopy_conf_files =~ /y/i)
{
print "Copying sample conf files to /etc/asterisk/...\n";
`cp -f ./docs/conf_examples/extensions.conf.sample /etc/asterisk/extensions.conf`;
`cp -f ./docs/conf_examples/meetme.conf.sample /etc/asterisk/meetme.conf`;
`cp -f ./docs/conf_examples/manager.conf.sample /etc/asterisk/manager.conf`;
`cp -f ./docs/conf_examples/musiconhold.conf.sample /etc/asterisk/musiconhold.conf`;
`cp -f ./docs/conf_examples/voicemail.conf.sample /etc/asterisk/voicemail.conf`;
`cp -f ./docs/conf_examples/sip.conf.sample /etc/asterisk/sip.conf`;
`cp -f ./docs/conf_examples/logger.conf.sample /etc/asterisk/logger.conf`;
`cp -f ./docs/conf_examples/iax.conf.sample /etc/asterisk/iax.conf`;
`cp -f ./docs/conf_examples/dnsmgr.conf.sample /etc/asterisk/dnsmgr.conf`;
}
### format the new server_ip dialstring for example to use with extensions.conf
$S='*';
if( $VARserver_ip =~ m/(\S+)\.(\S+)\.(\S+)\.(\S+)/ )
{
$a = leading_zero($1);
$b = leading_zero($2);
$c = leading_zero($3);
$d = leading_zero($4);
$VARremDIALstr = "$a$S$b$S$c$S$d";
}
print "\nIMPORTANT NOTE!\n";
print "\nPlease remember to put these lines in your extensions.conf file:\n";
print "exten => _$VARremDIALstr*8600XXX,1,Goto(default,${EXTEN:16},1)\n";
print "exten => _$VARremDIALstr*8600XXX*.,1,Goto(default,${EXTEN:16},1)\n";
print "exten => _$VARremDIALstr*78600XXX,1,Goto(default,${EXTEN:16},1)\n";
print "exten => _$VARremDIALstr*78600XXX*.,1,Goto(default,${EXTEN:16},1)\n";
print "exten => _8600XXX*.,1,AGI(agi-VDADfixCXFER.agi)\n";
print "exten => _78600XXX*.,1,AGI(agi-VDADfixCXFER.agi)\n";
print "\nASTGUICLIENT INSTALLATION FINISHED! ENJOY!\n";
$secy = time(); $secz = ($secy - $secX); $minz = ($secz/60); # calculate script runtime so far
print "\n - process runtime ($secz sec) ($minz minutes)\n";
exit;
sub leading_zero($)
{
$_ = $_[0];
s/^(\d)$/0$1/;
s/^(\d\d)$/0$1/;
return $_;
} # End of the leading_zero() routine.