function install() { $unix = new unix(); $DISTRICODE = $unix->LINUX_CODE_NAME(); $arch = $unix->LINUX_ARCHITECTURE(); $VERS = $unix->LINUX_VERS(); $dpkg = $unix->find_program("dpkg"); echo "DISTRICODE:{$DISTRICODE} \n"; if (!python_verify_modules("MySQLdb")) { $unix->DEBIAN_INSTALL_PACKAGE("python-mysqldb"); } if (!python_verify_modules("ldap")) { echo "Installing python-ldap\n"; if ($DISTRICODE == "DEBIAN") { if ($arch == 64) { if ($VERS[0] == 6) { if (is_file("/usr/share/artica-postfix/bin/install/postfix/python-6-ldap-amd64.deb")) { shell_exec("{$dpkg} -i --force-all /usr/share/artica-postfix/bin/install/postfix/python-6-ldap-amd64.deb"); } } if ($VERS[0] == 7) { if (is_file("/usr/share/artica-postfix/bin/install/postfix/python-7-ldap-amd64.deb")) { shell_exec("{$dpkg} -i --force-all /usr/share/artica-postfix/bin/install/postfix/python-7-ldap-amd64.deb"); } } } } } if (!python_verify_modules("ldap")) { $unix->DEBIAN_INSTALL_PACKAGE("python-ldap"); } if (!python_verify_modules("ldap")) { echo "Warning, ldap/python-ldap not installed...\n"; return; } if (!python_verify_modules("MySQLdb")) { echo "Warning, MySQLdb/python-mysqldb not installed...\n"; return; } echo "MySQLdb / python-mysqldb OK\n"; echo "LDAP / python-ldap OK\n"; $tmpdir = $unix->TEMP_DIR() . "/iredmail"; $tar = $unix->find_program("tar"); $rm = $unix->find_program("rm"); if (!is_file("/usr/share/artica-postfix/bin/install/postfix/iredapd.tar.gz")) { return; } @mkdir($tmpdir, 0755, true); shell_exec("{$tar} xf /usr/share/artica-postfix/bin/install/postfix/iredapd.tar.gz -C /"); if (!is_file("/opt/iRedAPD/iredapd.py")) { return; } @chmod("/opt/iRedAPD/iredapd.py", 0755); }
function installapt() { @unlink($GLOBALS["LOGFILE"]); $unix = new unix(); $mount = $unix->find_program("mount"); $umount = $unix->find_program("umount"); $tar = $unix->find_program("tar"); $rm = $unix->find_program("rm"); echo "Please wait...\n"; build_progress("{update_debian_repository}", 5); $aptget = $unix->find_program("apt-get"); build_progress("{updating_repository}", 15); echo "Please wait, running apt-get install\n"; $cmd = "DEBIAN_FRONTEND=noninteractive {$aptget} --force-yes update"; system($cmd); build_progress("{INSTALL_VMWARE_TOOLS}", 50); $unix->DEBIAN_INSTALL_PACKAGE("open-vm-tools"); if (!is_file("/usr/bin/vmware-toolbox-cmd")) { build_progress("{INSTALL_VMWARE_TOOLS} {failed_to_install}", 110); return; } build_progress("{INSTALL_VMWARE_TOOLS} {success}", 90); build_progress("{removing_caches}", 95); $unix->REMOVE_INTERFACE_CACHE(); build_progress("{success}", 100); }
function Checks() { $GLOBALS["NORELOAD"] = true; $unix = new unix(); if (!is_file("/usr/lib/x86_64-linux-gnu/autofs/lookup_ldap.so")) { build_progress_rs("{install} autofs-ldap", 15); $unix->DEBIAN_INSTALL_PACKAGE("autofs-ldap"); } if (!is_file("/usr/lib/x86_64-linux-gnu/autofs/lookup_ldap.so")) { build_progress_rs("{install} autofs-ldap {failed}", 110); return; } if (!$unix->is_socket("/var/run/slapd/slapd.sock")) { build_progress_rs("{restarting_service} OpenLDAP", 15); system("/etc/init.d/slapd restart"); } else { if ($GLOBALS["PROGRESS"]) { build_progress_rs("{restarting_service} OpenLDAP", 15); system("/etc/init.d/slapd restart"); } } $curlftpfs = $unix->find_program("curlftpfs"); $fusermount = $unix->find_program("fusermount"); if (is_file($curlftpfs)) { if (!is_file("/sbin/mount.curl")) { build_progress_rs("/sbin/mount.curl", 15); $curlftpfsZ[] = "#! /bin/sh"; $curlftpfsZ[] = "{$curlftpfs} \$1 \$2 -o \$5,disable_eprt"; $curlftpfsZ[] = ""; @file_put_contents("/sbin/mount.curl", @implode("\n", $curlftpfsZ)); @chmod("/sbin/mount.curl", 0755); } if (!is_file("/sbin/umount.curl")) { build_progress_rs("/sbin/umount.curl", 15); $curlftpfsZ = array(); $curlftpfsZ[] = "#! /bin/sh"; $curlftpfsZ[] = "{$fusermount} -u \$1"; $curlftpfsZ[] = ""; @file_put_contents("/sbin/umount.curl", @implode("\n", $curlftpfsZ)); @chmod("/sbin/umount.curl", 0755); } } $ldap = new clladp(); $data = "<?xml version=\"1.0\" ?>\n <autofs_ldap_sasl_conf\n usetls=\"no\"\n tlsrequired=\"no\"\n authrequired=\"yes\"\n authtype=\"PLAIN\"\n user=\"{$ldap->ldap_admin}\"\n secret=\"{$ldap->ldap_password}\"\n />"; @file_put_contents("/etc/autofs_ldap_auth.conf", $data); if (is_file("/etc/autofs_ldap_auth.conf")) { @chmod("/etc/autofs_ldap_auth.conf", 0600); @chown("/etc/autofs_ldap_auth.conf", "root"); @chgrp("/etc/autofs_ldap_auth.conf", "root"); } build_progress_rs("{checking_configuration}", 15); $auto = new autofs(); build_progress_rs("{checking_configuration}", 20); autofs_default(); build_progress_rs("{checking_configuration}", 25); Autocount(); build_progress_rs("{checking_configuration}", 30); davfs(); }
function install() { $unix = new unix(); $unix->DEBIAN_INSTALL_PACKAGE("console-setup"); if (is_file("/bin/setupcon")) { echo "* * * * * SUCCESS * * * * *\n"; return; } echo "* * * * * FAILED * * * * *\n"; }
function install() { if (extension_loaded('snmp')) { return; } $unix = new unix(); $FileTime = "/etc/artica-postfix/pids/" . basename(__FILE__) . ".time"; if ($unix->file_time_min($FileTime) < 15) { return; } @unlink($FileTime); @file_put_contents($FileTime, time()); $unix->DEBIAN_INSTALL_PACKAGE("php5-snmp"); system("/etc/init.d/artica-webconsole restart"); system("/etc/init.d/artica-status restart"); }
function pgsql() { if (extension_loaded('pgsql')) { return; } $unix = new unix(); $FileTime = "/etc/artica-postfix/pids/" . basename(__FILE__) . ".time"; if ($unix->file_time_min($FileTime) < 15) { return; } @unlink($FileTime); @file_put_contents($FileTime, time()); squid_admin_mysql(1, "Installing missing package php5-pgsql", null, __FILE__, __LINE__); $unix->DEBIAN_INSTALL_PACKAGE("php5-pgsql"); system("/usr/share/artica-postfix/exec.php.ini.php"); system("/etc/init.d/artica-webconsole restart"); system("/etc/init.d/artica-status restart"); }
function install() { $unix = new unix(); $timefile = "/etc/artica-postfix/pids/" . __FILE__ . ".time"; if ($unix->file_time_min($timefile) < 240) { return; } @unlink($timefile); @file_put_contents($timefile, time()); $bin = $unix->find_program("fail2ban-server"); if (!is_file($bin)) { $unix->DEBIAN_INSTALL_PACKAGE("fail2ban"); } $bin = $unix->find_program("fail2ban-server"); $fail2ban = new fail2ban(); if (is_file($bin)) { $fail2ban->buildinit(); build(); } }
function arp_scanner($net, $insert = false) { if (!is_file("/usr/bin/arp-scan")) { if (!isset($GLOBALS["DEBIAN_INSTALL_PACKAGE_ARP_SCAN"])) { $unix = new unix(); $unix->DEBIAN_INSTALL_PACKAGE("arp-scan"); $GLOBALS["DEBIAN_INSTALL_PACKAGE_ARP_SCAN"] = true; } if (!is_file("/usr/bin/arp-scan")) { return array(); } } exec("/usr/bin/arp-scan --quiet --retry=1 {$net} 2>&1", $results); $MAIN = array(); while (list($num, $line) = each($results)) { $line = trim($line); if ($line == null) { continue; } if (!preg_match("#^([0-9]+).([0-9]+).([0-9]+).([0-9]+)\\s+(.+?)\\s+(.+)#", $line, $re)) { continue; } $ipaddr = "{$re[1]}.{$re[2]}.{$re[3]}.{$re[4]}"; $mac = $re[5]; $vendor = $re[6]; echo "Found {$ipaddr} -> {$mac} ( {$vendor} )\n"; $date = date("Y-m-d H:i:s"); $GLOBALS[$mac]["IP"] = $ipaddr; $GLOBALS[$mac]["MACHINE_TYPE"] = $vendor; $MAIN[] = "('{$ipaddr}','{$mac}','{$vendor}','{$date}')"; } if (!$insert) { return $MAIN; } if (count($MAIN) == 0) { return; } while (list($mac, $array) = each($MAIN)) { $cmp = new computers(); $uid = $cmp->ComputerIDFromMAC($mac); $array["HOSTNAME"] = gethostbyname($array["IP"]); $ipaddr = $array["IP"]; if (preg_match("#^[0-9\\.]+\$#", $array["HOSTNAME"])) { $array["HOSTNAME"] = null; } if ($uid != null) { if ($GLOBALS["VERBOSE"]) { echo "{$mac} = {$uid}\n"; } $cmp = new computers($uid); $ldap_ipaddr = $cmp->ComputerIP; $ComputerRealName = $cmp->ComputerRealName; if ($GLOBALS["VERBOSE"]) { echo "{$mac} = {$uid}\nLDAP:{$ldap_ipaddr}<>NMAP:{$ipaddr}\nLDAP CMP:{$ComputerRealName}<>NMAP:{$array["HOSTNAME"]}"; } if ($array["HOSTNAME"] != null) { $EXPECTED_UID = strtoupper($array["HOSTNAME"]) . "\$"; if ($EXPECTED_UID != $uid) { $RAISON[] = "UID: {$uid} is different from {$EXPECTED_UID}"; nmap_logs("EDIT UID: {$mac}:[{$array["HOSTNAME"]}] ({$ipaddr})", @implode("\n", $array) . "\n" . @implode("\n", $RAISON), $uid); $cmp->update_uid($EXPECTED_UID); } } if ($ldap_ipaddr != $ipaddr) { writelogs("Change {$ldap_ipaddr} -> to {$ipaddr} for {$cmp->uid}", __FUNCTION__, __FILE__, __LINE__); $RAISON[] = "LDAP IP ADDR: {$ldap_ipaddr} is different from {$ipaddr}"; $RAISON[] = "DN: {$cmp->dn}"; $RAISON[] = "UID: {$cmp->uid}"; $RAISON[] = "MAC: {$cmp->ComputerMacAddress}"; if (!$cmp->update_ipaddr($ipaddr)) { $RAISON[] = "ERROR:{$cmp->ldap_last_error}"; } nmap_logs("EDIT IP: {$mac}:[{$array["HOSTNAME"]}] ({$ipaddr})", @implode("\n", $array) . "\n" . @implode("\n", $RAISON), $uid); } continue; } if ($array["HOSTNAME"] != null) { $uid = "{$array["HOSTNAME"]}\$"; } else { continue; } nmap_logs("ADD NEW: {$mac}:[{$array["HOSTNAME"]}] ({$ipaddr})", @implode("\n", $array) . "\n" . @implode("\n", $RAISON), "{$uid}"); $cmp = new computers(); $cmp->ComputerIP = $ipaddr; $cmp->ComputerMacAddress = $mac; $cmp->uid = "{$uid}"; $cmp->ComputerRunning = 1; $cmp->ComputerMachineType = $array["MACHINE_TYPE"]; $cmp->Add(); } }
function php_snmp() { $unix = new unix(); php_snmp_progress("{checking_php_snmp}", 20); $unix->DEBIAN_INSTALL_PACKAGE("php5-snmp"); $nohup = $unix->find_program("nohup"); if (is_file("/usr/lib/php5/20090626/snmp.so")) { php_snmp_progress("{checking_php_snmp} {success}", 100); sleep(5); system("{$nohup} /etc/init.d/artica-webconsole restart >/dev/null 2>&1 &"); system("{$nohup} /etc/init.d/artica-status restart >/dev/null 2>&1 &"); } if (is_file("/usr/lib/php5/20100525/snmp.so")) { php_snmp_progress("{checking_php_snmp} {success}", 100); sleep(5); system("{$nohup} /etc/init.d/artica-webconsole restart >/dev/null 2>&1 &"); system("{$nohup} /etc/init.d/artica-status restart >/dev/null 2>&1 &"); } php_snmp_progress("{checking_php_snmp} {failed}", 110); //php5-snmp }
function install() { $unix = new unix(); $rm = $unix->find_program("rm"); $cgrulesengd = $unix->find_program("cgrulesengd"); echo "cgrulesengd = {$cgrulesengd}\n"; if (is_file($cgrulesengd)) { build_progress_install("{success}", 100); return; } $GLOBALS["OUTPUT"] = true; build_progress_install("{installing} {please_wait}", 15); $unix = new unix(); $cgrulesengd = null; $unix->DEBIAN_INSTALL_PACKAGE("cgroup-bin", true); if (is_file("/usr/sbin/cgrulesengd")) { $cgrulesengd = "/usr/sbin/cgrulesengd"; } if ($cgrulesengd == null) { $cgrulesengd = $unix->find_program("cgrulesengd", true); } if (is_file($cgrulesengd)) { build_progress_install("{learning_artica}", 80); system("/usr/share/artica-postfix/bin/process1 --force --verbose --" . time()); build_progress_install("{removing_caches}", 90); $unix->REMOVE_INTERFACE_CACHE(); start(); build_progress_install("{success}", 100); return; } build_progress_install("{failed_to_install}", 110); }
function start($aspid = false) { $unix = new unix(); $sock = new sockets(); $users = new usersMenus(); $Masterbin = "/usr/local/ArticaStats/bin/postgres"; if (!is_file($Masterbin)) { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]}, arpd not installed\n"; } return; } if (!$aspid) { $pidfile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".pid"; $pid = $unix->get_pid_from_file($pidfile); if ($unix->process_exists($pid, basename(__FILE__))) { $time = $unix->PROCCESS_TIME_MIN($pid); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Already Artica task running PID {$pid} since {$time}mn\n"; } return; } @file_put_contents($pidfile, getmypid()); } $pid = PID_NUM(); if ($unix->MEM_TOTAL_INSTALLEE() < 624288) { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} not enough memory\n"; } if ($unix->process_exists($pid)) { stop(); } build_progress_restart("{starting} {failed} no memory", 110); return; } if ($unix->process_exists($pid)) { $timepid = $unix->PROCCESS_TIME_MIN($pid); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Service already started {$pid} since {$timepid}Mn...\n"; } build_progress_restart("{starting} {success}", 30); return true; } $php5 = $unix->LOCATE_PHP5_BIN(); $sysctl = $unix->find_program("sysctl"); $echo = $unix->find_program("echo"); $nohup = $unix->find_program("nohup"); $su = $unix->find_program("su"); $rm = $unix->find_program("rm"); $SquidPerformance = intval($sock->GET_INFO("SquidPerformance")); $EnableInfluxDB = intval($sock->GET_INFO("EnableInfluxDB")); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} EnableInfluxDB: {$EnableInfluxDB}\n"; } $InfluxUseRemote = intval($sock->GET_INFO("InfluxUseRemote")); if ($users->POSTFIX_INSTALLED) { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Postfix installed: True\n"; } } if ($InfluxUseRemote == 1) { $EnableInfluxDB = 0; } $FreeZePostGres = intval(@file_get_contents("/etc/artica-postfix/settings/Daemons/FreeZePostGres")); if ($FreeZePostGres == 1) { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Freeze !!! Aborting...\n"; } return; } if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Use Remote statistics.: {$InfluxUseRemote}\n"; } if (!$users->POSTFIX_INSTALLED) { $EnableIntelCeleron = intval(@file_get_contents("/etc/artica-postfix/settings/Daemons/EnableIntelCeleron")); if ($EnableIntelCeleron == 1) { $EnableInfluxDB = 0; } } if (is_file("/etc/artica-postfix/STATS_APPLIANCE")) { $EnableInfluxDB = 1; $SquidPerformance = 0; $EnableIntelCeleron = 0; } if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Use Statistics DB.....: {$EnableInfluxDB}\n"; } if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Use Intel Celeron mode: {$EnableIntelCeleron}\n"; } if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Use Performance.......: {$SquidPerformance}\n"; } if ($EnableInfluxDB == 0) { build_progress_restart("{starting} {failed} {disabled}", 110); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} service disabled (see EnableInflux)\n"; } return; } if (!function_exists("pg_connect")) { build_progress_restart("{starting} installing php5-pgsql", 35); $unix->DEBIAN_INSTALL_PACKAGE("php5-pgsql"); system("/usr/share/artica-postfix/exec.php.ini.php"); if (!function_exists("pg_connect")) { build_progress_restart("{starting} installing php5-pgsql {failed}", 110); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} pg_connect no such function\n"; } return; } system("/etc/init.d/artica-webconsole restart"); } build_progress_restart("{starting}", 40); if (!$unix->UnixUserExists("ArticaStats")) { $unix->CreateUnixUser("ArticaStats", "ArticaStats"); } @mkdir("/var/run/ArticaStats", 0755, true); @mkdir("/home/ArticaStatsDB", 0700, true); @mkdir("/var/log/ArticaStatsDB", 0755, true); @chown("/home/ArticaStatsDB", "ArticaStats"); @chgrp("/home/ArticaStatsDB", "ArticaStats"); @chown("/var/run/ArticaStats", "ArticaStats"); @chgrp("/var/run/ArticaStats", "ArticaStats"); @chown("/var/log/ArticaStatsDB", "ArticaStats"); @chgrp("/var/log/ArticaStatsDB", "ArticaStats"); if (is_file("/var/log/ArticaStatsDB/ArticaStatsDB.log")) { @unlink("/var/log/ArticaStatsDB/ArticaStatsDB.log"); @touch("/var/log/ArticaStatsDB/ArticaStatsDB.log"); } @chown("/var/log/ArticaStatsDB/ArticaStatsDB.log", "ArticaStats"); @chgrp("/var/log/ArticaStatsDB/ArticaStatsDB.log", "ArticaStats"); if (is_file("/var/run/ArticaStats/.s.PGSQL.8086")) { @unlink("/var/run/ArticaStats/.s.PGSQL.8086"); } $php = $unix->LOCATE_PHP5_BIN(); if (!is_file("/etc/artica-postfix/locales.gen")) { squid_admin_mysql(1, "Generating languages for the PostGreSQL compatibility", null, __FILE__, __LINE__); build_progress_restart("{generating_langs}", 42); system("{$php} /usr/share/artica-postfix/exec.locale.gen.php"); } if (!is_dir("/home/ArticaStatsDB/base/1")) { squid_admin_mysql(0, "Creating a new PostgreSQL database in ArticaStatsDB", null, __FILE__, __LINE__); build_progress_restart("{starting}", 45); $rm = $unix->find_program("rm"); shell_exec("{$rm} -rf /home/ArticaStatsDB/*"); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} initialize database...\n"; } system("{$su} -c \"/usr/local/ArticaStats/bin/initdb --username=ArticaStats /home/ArticaStatsDB --no-locale -E UTF8\" ArticaStats"); } if (!is_dir("/home/ArticaStatsDB/base/1")) { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} initialize database failed...\n"; } $rm = $unix->find_program("rm"); shell_exec("{$rm} -rf /home/ArticaStatsDB/*"); return; } build_progress_restart("{starting}", 50); xbuild(); fuser_port(); build_progress_restart("{starting} {permissions}", 55); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Apply permissions on /home/ArticaStatsDB\n"; } $chown = $unix->find_program("chown"); $chmod = $unix->find_program("chmod"); shell_exec("{$chown} -R ArticaStats:ArticaStats /home/ArticaStatsDB"); shell_exec("{$chmod} 0700 /home/ArticaStatsDB"); if (is_file("/home/ArticaStatsDB/postmaster.pid")) { @unlink("/home/ArticaStatsDB/postmaster.pid"); } $f[] = "su -l ArticaStats -c '"; $f[] = "/usr/local/ArticaStats/bin/pg_ctl -o \"-k /tmp,/var/run/ArticaStats\" -D /home/ArticaStatsDB -l /var/log/ArticaStatsDB/ArticaStatsDB.log start'"; $cmd = @implode(" ", $f) . " >/dev/null 2>&1 &"; if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} service\n"; } shell_exec($cmd); for ($i = 1; $i < 5; $i++) { build_progress_restart("{starting} {wait} {$i}/5", 70); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} waiting {$i}/5\n"; } sleep(1); $pid = PID_NUM(); if ($unix->process_exists($pid)) { break; } } $pid = PID_NUM(); if ($unix->process_exists($pid)) { build_progress_restart("{starting} {success}", 75); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Success PID {$pid}\n"; } $pg = new postgres_sql(); $pg->CREATE_TABLES(); return true; } else { build_progress_restart("{starting} {failed}", 110); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Failed\n"; } if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} {$cmd}\n"; } } }
function varlog() { $unix = new unix(); $rsync = $unix->find_program("rsync"); $rm = $unix->find_program("rm"); if (!is_file($rsync)) { $unix->DEBIAN_INSTALL_PACKAGE("rsync"); } //$GLOBALS["ArticaMaxLogsSize"]=$ArticaMaxLogsSize; //$GLOBALS["logs_cleaning"]=$sock->GET_NOTIFS("logs_cleaning"); //$GLOBALS["MaxTempLogFilesDay"]=$sock->GET_INFO("MaxTempLogFilesDay"); //if($GLOBALS["MaxTempLogFilesDay"]==null){$GLOBALS["MaxTempLogFilesDay"]=5;} if (!is_numeric($GLOBALS["ArticaMaxLogsSize"])) { init(); } $sock = new sockets(); $LogsRotateDefaultSizeRotation = $sock->GET_INFO("LogsRotateDefaultSizeRotation"); if (!is_numeric($LogsRotateDefaultSizeRotation)) { $LogsRotateDefaultSizeRotation = 100; } $LogsDirectoryStorage = $sock->GET_INFO("LogsDirectoryStorage"); if (trim($LogsDirectoryStorage) == null) { $LogsDirectoryStorage = "/home/logs-backup"; } $echo = $unix->find_program("echo"); $LogRotatePath = $sock->GET_INFO("LogRotatePath"); if ($LogRotatePath == null) { $LogRotatePath = "/home/logrotate"; } $SQUIDEnable = $sock->GET_INFO("SQUIDEnable"); if (!is_numeric($SQUIDEnable)) { $SQUIDEnable = 1; } $REMOVE_PHP_SCRIPTS[] = "/usr/share/artica-postfix/miniadm.logon.php"; $REMOVE_PHP_SCRIPTS[] = "/usr/share/artica-postfix/miniadm.index.php"; $REMOVE_PHP_SCRIPTS[] = "/usr/share/artica-postfix/miniadm.logoff.php"; while (list($index, $filepath) = each($REMOVE_PHP_SCRIPTS)) { if (is_file($filepath)) { @unlink($filepath); } } $RESTART_SQUID = false; $syslog[] = "/var/log/syslog"; $syslog[] = "/var/log/messages"; $syslog[] = "/var/log/daemon.log"; $syslog[] = "/var/log/auth.log"; $syslog[] = "/var/log/kern.log"; $syslog[] = "/var/log/user.log"; $other[] = "/var/log/php.log"; $other[] = "/var/log/artica-postfix/framework.log"; $other[] = "/usr/share/artica-postfix/ressources/logs/php.log"; $other[] = "/var/log/artica-postfix/logrotate.debug"; $other[] = "/var/log/ArticaProc.log"; $other[] = "/var/log/clamav/clamav.log"; $other[] = "/var/log/clamav/clamd.log"; $other[] = "/var/log/clamav/freshclam.log"; $other[] = "/var/log/lighttpd/access.log"; $other[] = "/var/log/lighttpd/apache-access.log"; $other[] = "/var/log/apt/history.log"; $other[] = "/var/log/apt/term.log"; $other[] = "/var/log/redis/redis-server.log"; $other[] = "/var/log/clamav-unofficial-sigs.log"; $other[] = "/var/log/influxdb/influxdb.startup"; $other[] = "/var/log/influxdb/influxd.log"; $other[] = "/var/log/influxdb/influxd.service.log"; if (is_dir("/usr/share/artica-postfix/ressources/ressources")) { shell_exec("{$rm} -rf /usr/share/artica-postfix/ressources/ressources"); } if (is_file("/var/log/artica-postfix/squid-logger-start.log")) { shell_exec("{$echo} \"\">/var/log/artica-postfix/squid-logger-start.log"); } if (is_file("/var/log/artica-postfix/exec.syslog-engine.php.log")) { shell_exec("{$echo} \"\">/var/log/artica-postfix/exec.syslog-engine.php.log"); } if (is_file("/var/log/squid/squidtail.log")) { $size = @filesize("/var/log/squid/squidtail.log") / 1024 / 1000; if ($size > $LogsRotateDefaultSizeRotation) { if (@copy("/var/log/squid/squidtail.log", "{$LogRotatePath}/squidtail.log." . time())) { shell_exec("{$echo} \"\">/var/log/squid/squidtail.log"); $RESTART_SYSLOG = true; $RESTART_SQUID = true; } } } if (is_file("/var/log/squid/logfile_daemon.debug")) { $size = @filesize("/var/log/squid/logfile_daemon.debug") / 1024 / 1000; if ($size > $LogsRotateDefaultSizeRotation) { shell_exec("{$echo} \"\">/var/log/squid/logfile_daemon.debug"); $RESTART_SYSLOG = true; } } if (is_file("/var/log/squid/ext_time_quota_acl.log")) { $size = @filesize("/var/log/squid/ext_time_quota_acl.log") / 1024 / 1000; if ($size > $LogsRotateDefaultSizeRotation) { shell_exec("{$echo} \"\">/var/log/squid/ext_time_quota_acl.log"); } } $RESTART_SYSLOG = false; $checks = array(); while (list($index, $filepath) = each($syslog)) { $size = @filesize($filepath) / 1024 / 1000; echo "{$filepath} {$size}MB <> {$LogsRotateDefaultSizeRotation}M\n"; if ($size > $LogsRotateDefaultSizeRotation) { $nextfile = "{$LogsDirectoryStorage}/" . basename($filepath) . "-" . time(); if (!@copy($filepath, $nextfile)) { @unlink($nextfile); continue; } $checks[] = $nextfile; shell_exec("{$echo} \"\" >{$filepath}"); $RESTART_SYSLOG = true; } } if ($RESTART_SQUID) { $squidbin = $unix->LOCATE_SQUID_BIN(); if (is_file($squidbin)) { if ($SQUIDEnable == 1) { $restart_squid_stamp = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __LINE__; if ($unix->file_time_min($restart_squid_stamp) > 240) { system_admin_mysql(1, "Ask to rotate logs after cleaning log files", null, __FILE__, __LINE__); shell_exec("{$squidbin} -f /etc/squid3/squid.conf -k reconfigure"); shell_exec("{$squidbin} -f /etc/squid3/squid.conf -k rotate"); @unlink($restart_squid_stamp); @file_put_contents($restart_squid_stamp, time()); } } } } if ($RESTART_SYSLOG) { squid_admin_mysql(1, "Restarting Syslog after a rotation", null, __FILE__, __LINE__); $unix->RESTART_SYSLOG(); } while (list($index, $filepath) = each($other)) { $size = @filesize($filepath) / 1024 / 1000; echo "{$filepath} {$size}MB <> {$LogsRotateDefaultSizeRotation}M\n"; if ($size > 50) { shell_exec("{$echo} \"\" >{$filepath}"); } } $q = new mysql_storelogs(); if ($handle = opendir($LogsDirectoryStorage)) { while (false !== ($fileZ = readdir($handle))) { if ($fileZ == ".") { continue; } if ($fileZ == "..") { continue; } $filename = "{$LogsDirectoryStorage}/{$fileZ}"; $q->events("Injecting {$filename}", __FUNCTION__, __LINE__); $q->InjectFile($filename, null); } } if ($handle = opendir("/var/log")) { while (false !== ($fileZ = readdir($handle))) { if ($fileZ == ".") { continue; } if ($fileZ == "..") { continue; } $path = "/var/log/{$filename}"; if (is_dir($path)) { continue; } if (!preg_match("#artica-status\\.log\\.[0-9]+\$#", $fileZ)) { continue; } if ($unix->file_time_min($path) > 1440) { @unlink($path); } } } if ($handle = opendir("/var/log/influxdb")) { while (false !== ($fileZ = readdir($handle))) { if ($fileZ == ".") { continue; } if ($fileZ == "..") { continue; } $path = "/var/log/influxdb/{$filename}"; if (is_dir($path)) { continue; } if (preg_match("#\\.log\\.[0-9]+\$#", $fileZ)) { @unlink($path); continue; } } } if ($handle = opendir("/var/log/squid")) { while (false !== ($fileZ = readdir($handle))) { if ($fileZ == ".") { continue; } if ($fileZ == "..") { continue; } $path = "/var/log/squid/{$filename}"; if (is_dir($path)) { continue; } if (preg_match("#ufdbguardd\\.log\\.[0-9]+\$#", $fileZ)) { @unlink($path); continue; } } } $BackupMaxDays = $sock->GET_INFO("BackupMaxDays"); $BackupMaxDaysDir = $sock->GET_INFO("BackupMaxDaysDir"); $BackupMaxDaysAccess = $sock->GET_INFO("BackupMaxDaysAccess"); if (!is_numeric($BackupMaxDaysAccess)) { $BackupMaxDaysAccess = 365; } $LogRotatePath = $sock->GET_INFO("LogRotatePath"); if (!is_numeric($BackupMaxDays)) { $BackupMaxDays = 30; } $BackupMaxHours = $BackupMaxDays * 24; $BackupMaxMins = $BackupMaxHours * 60; $BackupMaxDaysAccess = $BackupMaxDaysAccess * 24; $BackupMaxDaysAccess = $BackupMaxDaysAccess * 60; if ($BackupMaxDaysDir == null) { $BackupMaxDaysDir = "/home/logrotate_backup"; } if ($LogRotatePath == null) { $LogRotatePath = "/home/logrotate"; } if (is_dir($BackupMaxDaysDir)) { if ($handle = opendir($BackupMaxDaysDir)) { while (false !== ($fileZ = readdir($handle))) { if ($fileZ == ".") { continue; } if ($fileZ == "..") { continue; } $filename = "{$BackupMaxDaysDir}/{$fileZ}"; $mins = $unix->file_time_min($filename); if (preg_match("#^access\\.#", $filename)) { if ($mins >= $BackupMaxDaysAccess) { $q->events("Removing {$filename} {$mins}>=BackupMaxDaysAccess:{$BackupMaxDaysAccess}", __FUNCTION__, __LINE__); echo "Removing {$filename}\n"; @unlink($filename); } continue; } if ($GLOBALS["VERBOSE"]) { echo "{$filename} = {$mins}Mn\n"; } if ($mins >= $BackupMaxMins) { $q->events("Removing {$filename} {$mins}>=BackupMaxMins:{$BackupMaxMins}", __FUNCTION__, __LINE__); echo "Removing {$filename}\n"; @unlink($filename); } $q->events("Injecting {$filename}", __FUNCTION__, __LINE__); $q->InjectFile($filename); } } } if (is_dir($LogRotatePath)) { if ($handle = opendir($LogRotatePath)) { while (false !== ($fileZ = readdir($handle))) { if ($fileZ == ".") { continue; } if ($fileZ == "..") { continue; } $filename = "{$LogRotatePath}/{$fileZ}"; $mins = $unix->file_time_min($filename); if ($GLOBALS["VERBOSE"]) { echo "{$filename} = {$mins}Mn\n"; } if ($mins >= $BackupMaxMins) { $q->events("Removing {$filename} {$mins}>=BackupMaxMins:{$BackupMaxMins}", __FUNCTION__, __LINE__); echo "Removing {$filename}\n"; @unlink($filename); } $q->events("Injecting {$filename}", __FUNCTION__, __LINE__); $q->InjectFile($filename); } } } $LogRotatePath = $LogRotatePath . "/work"; if (is_dir($LogRotatePath)) { if ($handle = opendir($LogRotatePath)) { while (false !== ($fileZ = readdir($handle))) { if ($fileZ == ".") { continue; } if ($fileZ == "..") { continue; } $filename = "{$LogRotatePath}/{$fileZ}"; $filemd5 = md5_file($filename); if (isset($ARRAYMD[$filemd5])) { @unlink($filename); continue; } $ARRAYMD[$filemd5] = $filename; } } if ($handle = opendir($LogRotatePath)) { while (false !== ($fileZ = readdir($handle))) { if ($fileZ == ".") { continue; } if ($fileZ == "..") { continue; } $filename = "{$LogRotatePath}/{$fileZ}"; $mins = $unix->file_time_min($filename); if ($GLOBALS["VERBOSE"]) { echo "{$filename} = {$mins}Mn\n"; } if (preg_match("#^access\\.#", $filename)) { if ($mins >= $BackupMaxDaysAccess) { echo "Removing {$filename}\n"; $q->events("Removing {$filename} {$mins}>=BackupMaxDaysAccess:{$BackupMaxDaysAccess}", __FUNCTION__, __LINE__); @unlink($filename); continue; } $q->events("Injecting {$filename}", __FUNCTION__, __LINE__); $q->InjectFile($filename); continue; } if ($mins >= $BackupMaxMins) { $q->events("Removing {$filename} {$mins}>=BackupMaxMins:{$BackupMaxMins}", __FUNCTION__, __LINE__); echo "Removing {$filename}\n"; @unlink($filename); } $q->events("Injecting {$filename}", __FUNCTION__, __LINE__); $q->InjectFile($filename); } } } }
function start_prepare() { if ($GLOBALS["CRASHED"]) { return; } buil_init_squid_cache_log(); initd_squid(); $reconfigure = false; $unix = new unix(); $sock = new sockets(); $NtpdateAD = $sock->GET_INFO("NtpdateAD"); $php = $unix->LOCATE_PHP5_BIN(); $nohup = $unix->find_program("nohup"); if (!is_file("/etc/squid3/malwares.acl")) { @file_put_contents("/etc/squid3/malwares.acl", "\n"); } if (!is_file("/etc/squid3/squid-block.acl")) { @file_put_contents("/etc/squid3/squid-block.acl", "\n"); } $EXPLODED = explode("\n", @file_get_contents("/etc/squid3/squid.conf")); while (list($index, $val) = each($EXPLODED)) { if (preg_match("#INSERT YOUR OWN RULE#", $val)) { if ($GLOBALS["OUTPUT"]) { echo "Preparing.....: " . date("H:i:s") . " squid must be reconfigured...\n"; } $reconfigure = true; } } if ($reconfigure) { if ($GLOBALS["OUTPUT"]) { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " Rebuild configuration\n"; } system("{$php} /usr/share/artica-postfix/exec.squid.php --build --withoutloading"); } else { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " Rebuild configuration\n"; } exec("{$php} /usr/share/artica-postfix/exec.squid.php --build --withoutloading 2>&1", $GLOBALS["LOGS"]); } } if ($NtpdateAD == 1) { shell_exec("{$nohup} {$php} /usr/share/artica-postfix/exec.kerbauth.php --ntpdate >/dev/null 2>&1 &"); } $unix->CreateUnixUser("squid", "squid"); if (!is_file("/etc/squid3/squid.conf")) { if ($GLOBALS["OUTPUT"]) { echo "Preparing.....: " . date("H:i:s") . " Warning /etc/squid3/squid.conf no such file\n"; } if ($GLOBALS["OUTPUT"]) { echo "Preparing.....: " . date("H:i:s") . " Ask to build it and die\n"; } shell_exec("{$php} /usr/share/artica-postfix/exec.squid.php --build --force --withoutloading"); die; } if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " initd-squid\n"; } shell_exec("{$php} /usr/share/artica-postfix/exec.initd-squid.php >/dev/null 2>&1"); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " Watchdog config\n"; } shell_exec("{$php} /usr/share/artica-postfix/exec.squid.php --watchdog-config >/dev/null 2>&1"); exec("{$php} /usr/share/artica-postfix/exec.squid.transparent.php", $GLOBALS["LOGS"]); if (!is_file("/etc/init.d/tproxy start")) { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " Building transparent method\n"; } exec("{$php} /usr/share/artica-postfix/exec.squid.transparent.php", $GLOBALS["LOGS"]); } else { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " Starting transparent method\n"; } exec("/etc/init.d/tproxy start", $GLOBALS["LOGS"]); } $directories_squid[] = "/var/squid"; $directories_squid[] = "/var/squid/cache"; $directories_squid[] = "/usr/share/squid3/icons"; $directories_squid[] = "/var/log/squid"; $directories_squid[] = "/etc/squid3"; $directories_squid[] = "/var/lib/squidguard"; $directories_squid[] = "/var/run/squid"; $directories_squid[] = "/lib/squid3"; $directories_chmod[] = "/var/logs"; $directories_chmod[] = "/var/log"; $directories_chmod[] = "/var"; $directories_chmod_owned[] = "/home/squid"; $filesOblig[] = "/etc/squid3/url_rewrite_program.deny.db"; $filesOblig[] = "/var/run/squid/squid.pid"; while (list($num, $directory) = each($directories_squid)) { if ($GLOBALS["OUTPUT"]) { echo "Preparing.....: " . date("H:i:s") . " {$directory}\n"; } if (!is_dir($directory)) { @mkdir($directory, 0755, true); } @chmod($directory, 0755); $unix->chmod_func(0755, "{$directory}/*"); $unix->chown_func("squid", "squid", "{$directory}/*"); } while (list($num, $directory) = each($directories_chmod)) { if ($GLOBALS["OUTPUT"]) { echo "Preparing.....: " . date("H:i:s") . " {$directory}\n"; } if (!is_dir($directory)) { @mkdir($directory, 0755, true); } @chmod($directory, 0755); } while (list($num, $directory) = each($directories_chmod)) { if ($GLOBALS["OUTPUT"]) { echo "Preparing.....: " . date("H:i:s") . " {$directory}\n"; } if (!is_dir($directory)) { @mkdir($directory, 0755, true); } $unix->chmod_func(0755, "{$directory}"); $unix->chown_func("squid", "squid", "{$directory}"); } while (list($num, $filepath) = each($filesOblig)) { if ($GLOBALS["OUTPUT"]) { echo "Preparing.....: " . date("H:i:s") . " {$filepath}\n"; } if (!is_file($filepath)) { @touch("{$filepath}"); } @chmod($filepath, 0755); @chown($filepath, "squid"); @chgrp($filepath, "squid"); } $articafiles[] = "exec.logfile_daemon.php"; $articafiles[] = "external_acl_squid_ldap.php"; $articafiles[] = "external_acl_dynamic.php"; $articafiles[] = "external_acl_quota.php"; $articafiles[] = "external_acl_basic_auth.php"; $articafiles[] = "external_acl_squid.php"; while (list($num, $filename) = each($articafiles)) { $filepath = "/usr/share/artica-postfix/{$filename}"; if ($GLOBALS["OUTPUT"]) { echo "Preparing.....: " . date("H:i:s") . " {$filepath}\n"; } @chmod($filepath, 0755); @chown($filepath, "squid"); @chgrp($filepath, "squid"); } $squid_locate_pinger = $unix->squid_locate_pinger(); $setcap = $unix->find_program("setcap"); if (is_file($squid_locate_pinger)) { @chmod($squid_locate_pinger, 0755); @chown($squid_locate_pinger, "squid"); @chgrp($squid_locate_pinger, "squid"); if (is_file("{$setcap}")) { shell_exec("{$setcap} cap_net_raw=pe {$squid_locate_pinger}"); } else { if ($GLOBALS["OUTPUT"]) { echo "Preparing.....: " . date("H:i:s") . " WARNING! setcap, no such binary!!\n"; } $unix->DEBIAN_INSTALL_PACKAGE("libcap2-bin"); } } }
function start($nopid = false) { $unix = new unix(); $sock = new sockets(); $unix = new unix(); $pidfile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".pid"; if (!$nopid) { $pid = $unix->get_pid_from_file($pidfile); if ($unix->process_exists($pid, basename(__FILE__))) { $time = $unix->PROCCESS_TIME_MIN($pid); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Already Artica task running PID {$pid} since {$time}mn\n"; } return; } } $pid = redis_pid(); if ($unix->process_exists($pid)) { $time = $unix->PROCCESS_TIME_MIN($pid); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Already running since {$time}Mn...\n"; } return; } $Enablentopng = $sock->GET_INFO("Enablentopng"); if (!is_numeric($Enablentopng)) { $Enablentopng = 0; } $SquidPerformance = intval($sock->GET_INFO("SquidPerformance")); if ($SquidPerformance > 2) { $Enablentopng = 0; } if ($Enablentopng == 0) { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Disabled ( see Enablentopng )...\n"; } return; } $masterbin = $unix->find_program("redis-server"); $masterbin = $unix->find_program("redis-server"); if (!is_file($masterbin)) { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} installing redis-server\n"; } $unix->DEBIAN_INSTALL_PACKAGE("redis-server"); $masterbin = $unix->find_program("redis-server"); } if (!is_file($masterbin)) { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Not installed...\n"; } return; } CheckFilesAndSecurity(); $version = redis_version(); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Starting service v{$version}\n"; } $cmd = "{$masterbin} /etc/redis/redis.conf"; shell_exec($cmd); $c = 1; for ($i = 0; $i < 10; $i++) { sleep(1); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Starting service waiting {$c}/10\n"; } $pid = redis_pid(); if ($unix->process_exists($pid)) { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Success PID {$pid}\n"; } break; } $c++; } $pid = redis_pid(); if (!$unix->process_exists($pid)) { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Failed\n"; } if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} {$cmd}\n"; } } }
function install() { $unix = new unix(); build_progress("{installing_firewall_service}", 10); $src_package = "/usr/share/artica-postfix/bin/install/firehol-debian7-64.tar.gz"; if (!is_file($src_package)) { build_progress("{source_package_not_found}", 110); return; } $tar = $unix->find_program("tar"); $php = $unix->LOCATE_PHP5_BIN(); build_progress("{uncompress}", 20); shell_exec("{$tar} xvf /usr/share/artica-postfix/bin/install/firehol-debian7-64.tar.gz -C /"); build_progress("{installing_service}", 30); $ipset = $unix->find_program("ipset"); if (!is_file($ipset)) { build_progress("{installing_service} - IPSET -", 35); $unix->DEBIAN_INSTALL_PACKAGE("ipset"); } build_init(true); build_progress("{refresh_settings}", 60); system("/usr/share/artica-postfix/bin/process1 --force --verbose --" . time()); build_progress("{restart_status_service}", 70); system("/etc/init.d/artica-status restart --force"); build_progress("{done}", 100); }
function ebtables_rules() { $unix = new unix(); $sock = new sockets(); $ebtables = $unix->find_program("ebtables"); $aptget = $unix->find_program("apt-get"); if ($GLOBALS["VERBOSE"]) { echo "EBTABLES: [" . __LINE__ . "] ebtables = {$ebtables}\n"; } $NETWORK_ALL_INTERFACES = $unix->NETWORK_ALL_INTERFACES(); $squid = new squidbee(); $SSL_BUMP = $squid->SSL_BUMP; if ($GLOBALS["VERBOSE"]) { echo "EBTABLES: [" . __LINE__ . "] SSL_BUMP = {$SSL_BUMP}\n"; } if (!is_file($ebtables)) { if ($GLOBALS["VERBOSE"]) { echo "EBTABLES: [" . __LINE__ . "] NO BINARY apt-get = \"{$aptget}\"\n"; } if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " ebtables no such binary...\n"; } $unix->DEBIAN_INSTALL_PACKAGE("ebtables"); } $conntrack = $unix->find_program("conntrack"); if (!is_file($conntrack)) { $unix->DEBIAN_INSTALL_PACKAGE("conntrack"); } $ebtables = $unix->find_program("ebtables"); if (!is_file($ebtables)) { return "# ebtables, no such binary"; } $q = new mysql(); $sql = "SELECT `Interface` FROM `nics` WHERE `Bridged`=1"; if ($GLOBALS["VERBOSE"]) { echo "[" . __LINE__ . "] {$sql}\n"; } $results = $q->QUERY_SQL($sql, "artica_backup"); if (!$q->ok) { echo "{$q->mysql_error}\n"; } $count = mysql_num_rows($results); if ($count == 0) { $sock->SET_INFO("HotSpotAsBridge", 0); return "# ebtables, no bridge defined..."; } $sock->SET_INFO("HotSpotAsBridge", 1); $GLOBALS["EBTABLES"] = true; if ($GLOBALS["VERBOSE"]) { echo "[" . __LINE__ . "] EBTABLES = TRUE\n"; } //iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128 $f[] = "# ebtables, {$count} Interfaces SSL_BUMP = {$SSL_BUMP}"; $f[] = "{$ebtables} -t broute -A BROUTING -p IPv4 --ip-protocol 6 --ip-destination-port 80 -j redirect --redirect-target ACCEPT"; if ($SSL_BUMP == 1) { $f[] = "{$ebtables} -t broute -A BROUTING -p IPv4 --ip-protocol 6 --ip-destination-port 443 -j redirect --redirect-target ACCEPT"; } return @implode("\n", $f); }
function installapt() { if (!is_file("/etc/artica-postfix/settings/Daemons/SQUIDEnable")) { @file_put_contents("/etc/artica-postfix/settings/Daemons/SQUIDEnable", 1); } $GLOBALS["OUTPUT"] = true; @unlink($GLOBALS["LOGFILE"]); $unix = new unix(); $mount = $unix->find_program("mount"); $umount = $unix->find_program("umount"); $tar = $unix->find_program("tar"); $rm = $unix->find_program("rm"); $git_proxy = null; $gem_proxy = null; $curl_proxy = null; $squidbin = $unix->LOCATE_SQUID_BIN(); $SQUIDEnable = intval(@file_get_contents("/etc/artica-postfix/settings/Daemons/SQUIDEnable")); if ($SQUIDEnable == 1) { $SquidMgrListenPort = trim(@file_get_contents("/etc/artica-postfix/settings/Daemons/SquidMgrListenPort")); echo "* * * Force git to use http.proxy http://127.0.0.1:{$SquidMgrListenPort} * * *\n"; $gem_proxy = "--http-proxy 127.0.0.1:{$SquidMgrListenPort}"; $curl_proxy = "--proxy http://127.0.0.1:{$SquidMgrListenPort}"; $git_proxy = "--global http.proxy http://127.0.0.1:{$SquidMgrListenPort}"; } $prc = 20; echo "Please wait...\n"; //------------------------------------------------------------------------------------------------- $prc++; if (!is_file("/usr/lib/x86_64-linux-gnu/libyaml.so")) { build_progress("{install_package} libyaml", $prc); build_progress_reconfigure("{install_package} libyaml", 46); $unix->DEBIAN_INSTALL_PACKAGE("libyaml-dev"); if (!is_file("/usr/lib/x86_64-linux-gnu/libyaml.so")) { build_progress("{install_package} libyaml {failed_to_install}", 110); return; } else { echo "libyaml..........: OK\n"; } } //------------------------------------------------------------------------------------------------- //------------------------------------------------------------------------------------------------- $prc++; if (!is_file("/usr/lib/perl5/Crypt/SSLeay.pm")) { build_progress("{install_package} libcrypt-ssleay-perl", $prc); build_progress_reconfigure("{install_package} libcrypt-ssleay-perl", 46); $unix->DEBIAN_INSTALL_PACKAGE("libcrypt-ssleay-perl"); if (!is_file("/usr/lib/perl5/Crypt/SSLeay.pm")) { build_progress("{install_package} libcrypt-ssleay-perl {failed_to_install}", 110); return; } else { echo "libcrypt-ssleay-perl OK\n"; } } //------------------------------------------------------------------------------------------------- $prc++; if (!is_file("/usr/lib/x86_64-linux-gnu/libpng.so")) { build_progress("{install_package} libpng12-dev", $prc); build_progress_reconfigure("{install_package} libpng12-dev", 46); $unix->DEBIAN_INSTALL_PACKAGE("libpng12-dev"); if (!is_file("/usr/lib/x86_64-linux-gnu/libpng.so")) { build_progress("{install_package} libpng12-dev {failed_to_install}", 110); return; } else { echo "libpng12-dev.....: OK\n"; } } $prc++; if (!is_file("/usr/lib/x86_64-linux-gnu/libgd.so")) { build_progress("{install_package} libgd2-xpm-dev", $prc); build_progress_reconfigure("{install_package} libgd2-xpm-dev", 46); $unix->DEBIAN_INSTALL_PACKAGE("libgd2-xpm-dev"); if (!is_file("/usr/lib/x86_64-linux-gnu/libgd.so")) { build_progress("{install_package} libgd2-xpm-dev {failed_to_install}", 110); return; } else { echo "libgd2-xpm-dev.: OK\n"; } } $prc++; if (!is_file("/usr/lib/x86_64-linux-gnu/libjansson.so.4")) { build_progress("{install_package} libjansson4", $prc); build_progress_reconfigure("{install_package} libjansson4", 47); $unix->DEBIAN_INSTALL_PACKAGE("libjansson4"); if (!is_file("/usr/lib/x86_64-linux-gnu/libjansson.so.4")) { build_progress("{install_package} libjansson {failed_to_install}", 110); return; } else { echo "libjansson4......: OK\n"; } } $prc++; if (!is_file("/usr/lib/x86_64-linux-gnu/libnss3.so")) { build_progress("{install_package} libnss3", $prc); build_progress_reconfigure("{install_package} libnss3", 47); $unix->DEBIAN_INSTALL_PACKAGE("libnss3"); if (!is_file("/usr/lib/x86_64-linux-gnu/libnss3.so")) { build_progress("{install_package} libnss3 {failed_to_install}", 110); return; } else { echo "libnss3..........: OK\n"; } } $prc++; if (!is_file("/usr/share/pyshared/yaml/__init__.py")) { build_progress("{install_package} python-yaml", $prc); build_progress_reconfigure("{install_package} python-yaml", 47); $unix->DEBIAN_INSTALL_PACKAGE("python-yaml"); if (!is_file("/usr/share/pyshared/yaml/__init__.py")) { build_progress("{install_package} python-yaml {failed_to_install}", 110); return; } else { echo "python-yaml......: OK\n"; } } $prc++; if (!is_file("/usr/share/pyshared/MySQLdb/__init__.py")) { build_progress("{install_package} python-mysqldb", $prc); build_progress_reconfigure("{install_package} python-mysqldb", 47); $unix->DEBIAN_INSTALL_PACKAGE("python-mysqldb"); if (!is_file("/usr/share/pyshared/MySQLdb/__init__.py")) { build_progress("{install_package} python-mysqldb {failed_to_install}", 110); return; } else { echo "python-mysqldb...: OK\n"; } } $prc++; if (!is_file("/usr/share/pyshared/psycopg2/__init__.py")) { build_progress("{install_package} python-psycopg2", $prc); build_progress_reconfigure("{install_package} python-psycopg2", 47); $unix->DEBIAN_INSTALL_PACKAGE("python-psycopg2"); if (!is_file("/usr/share/pyshared/psycopg2/__init__.py")) { build_progress("{install_package} python-psycopg2 {failed_to_install}", 110); return; } else { echo "python-psycopg2..: OK\n"; } } $prc++; if (!is_file("/usr/sbin/oinkmaster")) { build_progress_reconfigure("{install_package} oinkmaster", 48); build_progress("{install_package} oinkmaster", $prc); $unix->DEBIAN_INSTALL_PACKAGE("oinkmaster"); if (!is_file("/usr/sbin/oinkmaster")) { build_progress("{install_package} oinkmaster {failed_to_install}", 110); return; } else { echo "oinkmaster.......: OK\n"; } } //------------------------------------------------------------------------------------------------- return true; }
function start($aspid = false) { $unix = new unix(); $sock = new sockets(); $Masterbin = $unix->find_program("pdns_server"); $PowerDNSLogLevel = $sock->GET_INFO("PowerDNSLogLevel"); $PowerDNSDNSSEC = $sock->GET_INFO("PowerDNSDNSSEC"); $PowerDNSLogsQueries = $sock->GET_INFO("PowerDNSLogsQueries"); if (!is_numeric($PowerDNSLogLevel)) { $PowerDNSLogLevel = 0; } if (!is_numeric($PowerDNSDNSSEC)) { $PowerDNSDNSSEC = 0; } if (!is_numeric($PowerDNSLogsQueries)) { $PowerDNSLogsQueries = 0; } if (!is_file($Masterbin)) { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]}, not installed\n"; } return; } if (!$aspid) { $pidfile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".pid"; $pid = $unix->get_pid_from_file($pidfile); if ($unix->process_exists($pid, basename(__FILE__))) { $time = $unix->PROCCESS_TIME_MIN($pid); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Already Artica task running PID {$pid} since {$time}mn\n"; } return; } @file_put_contents($pidfile, getmypid()); } $pid = PID_NUM(); $EnablePDNS = $sock->GET_INFO("EnablePDNS"); if (!is_numeric($EnablePDNS)) { $EnablePDNS = 0; } if ($EnablePDNS == 0) { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} service disabled (see EnablePDNS)\n"; } stop(true); return; } if ($unix->process_exists($pid)) { $timepid = $unix->PROCCESS_TIME_MIN($pid); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Service already started {$pid} since {$timepid}Mn...\n"; } return; } if (!is_file("/usr/lib/libboost_serialization.so.1.49.0")) { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]}: Please wait, installing libboost-serialization1.49.0\n"; } $unix->DEBIAN_INSTALL_PACKAGE("libboost-serialization1.49.0"); } $php5 = $unix->LOCATE_PHP5_BIN(); $sysctl = $unix->find_program("sysctl"); $echo = $unix->find_program("echo"); $nohup = $unix->find_program("nohup"); $dnsmasq_bin = $unix->find_program("dnsmasq"); $kill = $unix->find_program("kill"); if (is_file($dnsmasq_bin)) { $dnsmasq_pid = $unix->PIDOF($dnsmasq_bin); if ($unix->process_exists($dnsmasq_pid)) { unix_system_kill_force($dnsmasq_pid); } } @mkdir("/var/run/pdns", 0755, true); $t = explode("\n", @file_get_contents("/etc/powerdns/pdns.conf")); while (list($index, $ligne) = each($t)) { if (preg_match("#^recursor=(.+)\$#", $ligne, $re)) { $recursor = trim($re[1]); break; } } $PowerDNSPerfs = unserialize(base64_encode($sock->GET_INFO("PowerDNSPerfs"))); if (!isset($PowerDNSPerfs["cache-ttl"])) { $PowerDNSPerfs["cache-ttl"] = 3600; } if (!isset($PowerDNSPerfs["negquery-cache-ttl"])) { $PowerDNSPerfs["negquery-cache-ttl"] = 7200; } if (!isset($PowerDNSPerfs["query-cache-ttl"])) { $PowerDNSPerfs["query-cache-ttl"] = 300; } if (!isset($PowerDNSPerfs["recursive-cache-ttl"])) { $PowerDNSPerfs["recursive-cache-ttl"] = 7200; } if (!is_numeric($PowerDNSPerfs["negquery-cache-ttl"])) { $PowerDNSPerfs["negquery-cache-ttl"] = 7200; } if (!is_numeric($PowerDNSPerfs["query-cache-ttl"])) { $PowerDNSPerfs["query-cache-ttl"] = 300; } if (!is_numeric($PowerDNSPerfs["recursive-cache-ttl"])) { $PowerDNSPerfs["recursive-cache-ttl"] = 7200; } if (!is_numeric($PowerDNSPerfs["cache-ttl"])) { $PowerDNSPerfs["cache-ttl"] = 3600; } $cmds[] = $Masterbin; $cmds[] = "--daemon --guardian=yes"; $cmds[] = "--recursor={$recursor}"; $cmds[] = "--config-dir=/etc/powerdns"; $cmds[] = "--cache-ttl={$PowerDNSPerfs["cache-ttl"]}"; $cmds[] = "--negquery-cache-ttl={$PowerDNSPerfs["negquery-cache-ttl"]}"; $cmds[] = "--query-cache-ttl={$PowerDNSPerfs["query-cache-ttl"]}"; $cmds[] = "--recursive-cache-ttl={$PowerDNSPerfs["recursive-cache-ttl"]}"; if ($PowerDNSLogLevel > 8) { $cmds[] = "--log-dns-details --loglevel={$PowerDNSLogLevel}"; } else { if ($PowerDNSLogsQueries == 1) { $cmds[] = "--log-dns-details"; } if ($PowerDNSLogLevel > 0) { $cmds[] = "--loglevel={$PowerDNSLogLevel}"; } } $cmd = @implode(" ", $cmds); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} service\n"; } shell_exec($cmd); for ($i = 1; $i < 11; $i++) { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} waiting {$i}/5\n"; } sleep(1); $pid = PID_NUM(); if ($unix->process_exists($pid)) { break; } } $pid = PID_NUM(); if ($unix->process_exists($pid)) { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Success PID {$pid}\n"; } if ($PowerDNSDNSSEC == 1) { shell_exec("{$php5} /usr/share/artica-postfix/exec.pdns.php --dnssec"); } } else { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Failed\n"; } if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} {$cmd}\n"; } } }
function CheckFilesAndSecurity() { if (isset($GLOBALS[__FUNCTION__ . "_EXECUTED"])) { return; } $GLOBALS[__FUNCTION__ . "_EXECUTED"] = true; $squid_user = SquidUser(); $unix = new unix(); $chown = $unix->find_program("chown"); $chmod = $unix->find_program("chmod"); $squid_user = SquidUser(); $ln = $unix->find_program("ln"); $rm = $unix->find_program("rm"); if (!is_dir("/var/logs")) { @mkdir("/var/logs", 0755, true); } $squidlogdir = "/var/log/squid"; if (is_link($squidlogdir)) { $squidlogdir = @readlink($squidlogdir); } $baselogdir = dirname($squidlogdir); @chmod($baselogdir, 0755); @mkdir("/var/lib/squid/session", 0755, true); @mkdir("/usr/local/share/artica", 0755, true); @mkdir("/var/squid/cache", 0755, true); @mkdir("/var/lib/ssl_db", 0755, true); @mkdir("/var/log/squid/nudity", 0755, true); if (!is_dir("/var/run/squid")) { @mkdir("/var/run/squid", 0755, true); } @mkdir("/var/log/squid/squid", 0755, true); if (!is_file("/var/logs/cache.log")) { @file_put_contents("/var/logs/cache.log", "\n"); } if (!is_dir("/usr/share/squid-langpack/templates/lb-lu")) { shell_exec("{$ln} -sf /usr/share/squid-langpack/templates/en-us /usr/share/squid-langpack/templates/lb-lu"); } if (!is_file("/etc/squid3/squid-block.acl")) { @touch("/etc/squid3/squid-block.acl", ""); } if (!is_file("/etc/squid3/clients_ftp.acl")) { @touch("/etc/squid3/clients_ftp.acl", ""); } if (!is_file("/etc/squid3/allowed-user-agents.acl")) { @touch("/etc/squid3/allowed-user-agents.acl", ""); } $unix->chmod_func(0755, "/etc/artica-postfix/settings/Daemons"); $unix->chmod_func(0755, "/etc/artica-postfix/settings/Daemons/*"); //helpers @chmod("/usr/share/artica-postfix/ufdbgclient.php", 0755); @chown("/usr/share/artica-postfix/ufdbgclient.php", "squid"); @chgrp("/usr/share/artica-postfix/ufdbgclient.php", "squid"); $GLOBALS["LogFileDeamonLogDir"] = @file_get_contents("/etc/artica-postfix/settings/Daemons/LogFileDeamonLogDir"); if ($GLOBALS["LogFileDeamonLogDir"] == null) { $GLOBALS["LogFileDeamonLogDir"] = "/home/artica/squid/realtime-events"; } @mkdir($GLOBALS["LogFileDeamonLogDir"], 0755, true); @chmod($GLOBALS["LogFileDeamonLogDir"], 0755); @chown($GLOBALS["LogFileDeamonLogDir"], "squid"); @chgrp($GLOBALS["LogFileDeamonLogDir"], "squid"); $items[] = "/etc/squid3/SquidNudityScanParams"; $items[] = "/var/squid/cache"; $items[] = "/var/lib/squid/session"; $items[] = "/etc/squid3/*"; $items[] = "{$squidlogdir}"; $items[] = "{$squidlogdir}/*"; $items[] = "{$squidlogdir}/nudity"; $items[] = "/var/logs"; $items[] = "/var/lib/ssl_db"; $items[] = "/var/logs/cache.log"; $items[] = "/home/squid/cache"; $items[] = "/home/squid"; $items[] = "/var/run/squid/*"; $items[] = "/usr/local/share/artica"; while (list($none, $path) = each($items)) { echo "Starting......: " . date("H:i:s") . " [SYS]: permissions on \"{$path}\"\n"; $unix->chown_func($squid_user, $squid_user, $path); $unix->chmod_func(0755, $path); } $squid_locate_pinger = $unix->squid_locate_pinger(); $setcap = $unix->find_program("setcap"); if (is_file($squid_locate_pinger)) { shell_exec("{$chmod} 0755 {$squid_locate_pinger}"); @chown($squid_locate_pinger, "squid"); @chgrp($squid_locate_pinger, "squid"); if (is_file("{$setcap}")) { shell_exec("{$setcap} cap_net_raw=pe {$squid_locate_pinger}"); } else { $unix->DEBIAN_INSTALL_PACKAGE("libcap2-bin"); } } $unix->THREAD_COMMAND_SET("{$chown} -R squid:squid /var/lib/squid/session"); $GetCachesInsquidConf = $unix->SQUID_CACHE_FROM_SQUIDCONF(); while (list($CacheDirectory, $type) = each($GetCachesInsquidConf)) { if (trim($CacheDirectory) == null) { continue; } if (!is_dir($CacheDirectory)) { continue; } $unix->chown_func("squid", "squid", $CacheDirectory); $unix->THREAD_COMMAND_SET("{$chown} -R squid:squid {$CacheDirectory}"); $unix->THREAD_COMMAND_SET("{$chmod} -R 0755 {$CacheDirectory}"); @chmod($CacheDirectory, 0755); } if (is_dir("/usr/share/squid-langpack")) { $unix->chown_func($squid_user, $squid_user, "/usr/share/squid-langpack"); } if (!is_file("{$squidlogdir}/squidGuard.log")) { @file_put_contents("/var/log/squid/squidGuard.log", "#"); } $unix->Winbindd_privileged_SQUID(); $tpls["ERR_CONFLICT_HOST"] = "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\"> <html><head> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"> <title>ERROR: The requested URL could not be retrieved</title> <style type=\"text/css\"><!-- %l body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; } --></style> </head><body id=%c> <div id=\"titles\"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr> <div id=\"content\"> <p>The following error was encountered while trying to retrieve the URL: <a href=\"%U\">%U</a></p> <blockquote id=\"data\"> <pre>URI Host Conflict</pre> </blockquote> <p>This means the domain name you are trying to access apparently no longer exists on the machine you are requesting it from.</p> <p>Some possible problems are:</p> <ul> <li>The domain may have moved very recently. Trying again will resolve that.</li> <li>The website may require you to use a local country-based version. Using your ISP provided DNS server(s) should resolve that.</li> </ul> <p>Your cache administrator is <a href=\"mailto:%w%W\">%w</a>.</p> <br> </div> <hr> <div id=\"footer\"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html>"; $tpls["MGR_INDEX"] = "\n"; while (list($file, $lined) = each($tpls)) { if (!is_file("/usr/share/squid-langpack/en/{$file}")) { @file_put_contents("/usr/share/squid-langpack/en/{$file}", $lined); } if (!is_file("/usr/share/squid-langpack/templates/{$file}")) { @file_put_contents("/usr/share/squid-langpack/templates/{$file}", $lined); } } $ssl_crtd = locate_ssl_crtd(); if (!is_file("/var/lib/ssl_db/index.txt")) { if (is_file($ssl_crtd)) { if (is_dir("/var/lib/ssl_db")) { shell_exec("{$rm} -rf /var/lib/ssl_db"); } shell_exec("{$ssl_crtd} -c -s /var/lib/ssl_db"); $unix->chown_func($squid_user, $squid_user, "/var/lib/ssl_db/*"); } else { echo "Starting......: " . date("H:i:s") . " unable to stat ssl_crtd to fill `/var/lib/ssl_db`\n"; } } }
function xrun() { $unix = new unix(); $siege = $unix->find_program("siege"); $sock = new sockets(); $ARRAY = unserialize(base64_decode($sock->GET_INFO("SquidSiegeConfig"))); if (!is_numeric($ARRAY["GRAB_URLS"])) { $ARRAY["GRAB_URLS"] = 0; } if (!is_numeric($ARRAY["USE_LOCAL_PROXY"])) { $ARRAY["USE_LOCAL_PROXY"] = 1; } if (!is_numeric($ARRAY["SESSIONS"])) { $ARRAY["SESSIONS"] = 150; } if (!is_numeric($ARRAY["MAX_TIME"])) { $ARRAY["MAX_TIME"] = 30; } build_progress_disconnect("{starting}", 5); if (!is_file($siege)) { build_progress_disconnect("{please_wait} {installing} SIEGE", 50); $unix->DEBIAN_INSTALL_PACKAGE("siege"); $siege = $unix->find_program("siege"); if (!is_file($siege)) { build_progress_disconnect("{installing} SIEGE {failed}", 110); } } $f[] = "internet = true"; if ($ARRAY["USE_LOCAL_PROXY"] == 1) { $squid = new squidbee(); if ($squid->hasProxyTransparent == 1) { $port = $squid->second_listen_port; } else { $port = $squid->listen_port; } $addr = "127.0.0.1"; } else { $addr = $ARRAY["REMOTE_PROXY"]; $port = intval($ARRAY["REMOTE_PROXY_PORT"]); } if ($addr == null) { build_progress_disconnect("{failed} No proxy address", 110); return; } if ($port == 0) { build_progress_disconnect("{failed} No proxy port", 110); return; } if ($ARRAY["SESSIONS"] == 0) { build_progress_disconnect("{failed} {simulate} 0 sessions", 110); return; } $f[] = "proxy-host ={$addr}"; $f[] = "proxy-port = {$port}"; $f[] = "user-agent = Mozilla/5.0 (compatible; IE 11.0; Win32; Trident/7.0)"; $f[] = "file = /etc/siege/urls.txt"; $f[] = "concurrent = {$ARRAY["SESSIONS"]}"; $f[] = "time = {$ARRAY["MAX_TIME"]}S"; $f[] = "timeout = 5"; $f[] = "logfile = /var/log/siege.log"; if (trim($ARRAY["USERNAME"]) != null) { $f[] = "username = {$ARRAY["USERNAME"]}"; $f[] = "password = {$ARRAY["PASSWORD"]}"; } @file_put_contents("/root/.siegerc", @implode("\n", $f)); $filetemp = $unix->FILE_TEMP(); $nohup = $unix->find_program("nohup"); $URLS_NUMBER = $unix->COUNT_LINES_OF_FILE("/etc/siege/urls.txt"); if ($URLS_NUMBER < 20) { @unlink("/etc/siege/urls.txt"); if ($ARRAY["GRAB_URLS"] == 1) { import_urls(); } else { @copy("/usr/share/artica-postfix/bin/install/squid/urls.txt", "/etc/siege/urls.txt"); } $URLS_NUMBER = $unix->COUNT_LINES_OF_FILE("/etc/siege/urls.txt"); } $FINAL["urls"] = $URLS_NUMBER; $FINAL["START_TIME"] = time(); $ss[] = "{$nohup} {$siege} --concurrent={$ARRAY["SESSIONS"]}"; $ss[] = "--internet --file=/etc/siege/urls.txt --time={$ARRAY["MAX_TIME"]}S"; $ss[] = "--benchmark --rc=/root/.siegerc >{$filetemp} 2>&1 &"; $cmd = @implode(" ", $ss); echo "{$cmd}\n"; build_progress_disconnect("{executing}", 50); system($cmd); sleep(2); $pid = $unix->PIDOF($siege); while ($unix->process_exists($pid)) { $array_mem = getSystemMemInfo(); $MemFree = $array_mem["MemFree"]; $array_load = sys_getloadavg(); $internal_load = $array_load[0]; echo "Memory Free: " . round($MemFree / 1024) . " MB\n"; echo "Load: {$internal_load}\n"; build_progress_disconnect("{please_wait} Load:{$internal_load}", 50); sleep(2); $pid = $unix->PIDOF($siege); } build_progress_disconnect("{please_wait} {analyze}...", 90); $array = explode("\n", @file_get_contents($filetemp)); @unlink($filetemp); while (list($num, $val) = each($array)) { echo "{$val}\n"; if (preg_match("#alert#", $val)) { continue; } if (preg_match("#ERROR#", $val)) { continue; } if (preg_match("#(.+?):\\s+(.+)#", $val, $re)) { $FINAL[trim($re[1])] = trim($re[2]); } } $FINAL["STOP_TIME"] = time(); build_progress_disconnect("{done}...", 99); sleep(5); build_progress_disconnect("{done}...", 100); @file_put_contents("/usr/share/artica-postfix/ressources/logs/web/siege.report.txt", serialize($FINAL)); @chmod("/usr/share/artica-postfix/ressources/logs/web/siege.report.txt", 0755); }
function scan_directories() { $UPDATED = false; if ($GLOBALS["VERBOSE"]) { $GLOBALS["FORCE"] = true; } if ($GLOBALS["FORCE"]) { $UPDATED = true; ini_set('html_errors', 0); ini_set('display_errors', 1); ini_set('error_reporting', E_ALL); } $unix = new unix(); $pidFile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".pid"; $TimeFile = "/etc/artica-postfix/pids/exec.philesight.php.scan_directories.time"; $pid = $unix->get_pid_from_file($pidFile); if ($unix->process_exists($pid)) { return; } if (!$GLOBALS["FORCE"]) { $time = $unix->file_time_min($TimeFile); if ($time < 120) { return; } if (system_is_overloaded(__FILE__)) { return; } } @unlink($TimeFile); @file_put_contents($TimeFile, time()); if (!is_file("/usr/bin/ruby1.8")) { build_progress("{please_wait}, /usr/bin/ruby1.8 no such binary [installing]...", 5); $unix->DEBIAN_INSTALL_PACKAGE("ruby1.8"); } if (!is_file("/usr/bin/ruby1.8")) { build_progress("{failed}, /usr/bin/ruby1.8 no such binary...", 110); system_admin_events("/usr/bin/ruby1.8 no such binary, philesight cannot be used!", __FUNCTION__, __FILE__, __LINE__); } $sock = new sockets(); $EnableArticaMetaClient = intval($sock->GET_INFO("EnableArticaMetaClient")); if ($EnableArticaMetaClient == 1) { meta_events("Meta Client Enabled", __FUNCTION__, __LINE__); } $q = new mysql(); $results = $q->QUERY_SQL("SELECT * FROM philesight WHERE enabled=1", "artica_backup"); @mkdir("/usr/share/artica-postfix/img/philesight", 0755, true); @mkdir("/home/artica/philesight", 0755, true); $NICE = $unix->EXEC_NICE(); build_progress("{please_wait}, {scaning_directories}...", 10); $pr = 10; while ($ligne = @mysql_fetch_array($results, MYSQL_ASSOC)) { $directory = $ligne["directory"]; $partition = $ligne["partition"]; $md5 = md5($directory); $maxtime = $ligne["maxtime"]; if ($maxtime == 0) { continue; } $lastscan = $ligne["lastscan"]; if ($lastscan == 0) { $lastscan = 1000000; } $sql_time_min = sql_time_min($lastscan); $partition = $unix->DIRPART_OF($directory); $hd = $unix->DIRDISK_OF($directory); $ARRAY = $unix->DF_SATUS_K($directory); $USED = $ARRAY["POURC"]; $FREEMB = round($ARRAY["AIVA"] / 1024); $ARRAY_META[$directory]["MD5"] = $md5; $ARRAY_META[$directory]["lastscan"] = $lastscan; $ARRAY_META[$directory]["HD"] = $hd; $ARRAY_META[$directory]["PARTITION"] = $partition; $ARRAY_META[$directory]["USED"] = $USED; $ARRAY_META[$directory]["FREEMB"] = $FREEMB; $directoryXXX = mysql_escape_string2($directory); $sql = "UPDATE `philesight` SET `hd`='{$hd}',\n\t\tpartition='{$partition}',\n\t\thd='{$hd}',\n\t\tUSED='{$USED}',\n\t\tFREEMB='{$FREEMB}'\n\t\tWHERE `directory`='{$directoryXXX}'"; $q->QUERY_SQL($sql, 'artica_backup'); if (is_file("/home/artica/philesight/{$md5}.db")) { if (!$GLOBALS["FORCE"]) { if ($sql_time_min < $maxtime) { continue; } } } $pr++; if ($GLOBALS["FORCE"]) { echo "Partition............: {$partition}\n"; } if ($GLOBALS["FORCE"]) { echo "Hard disk............: {$hd}\n"; } if ($GLOBALS["FORCE"]) { echo "Used.................: {$USED}%\n"; } if ($GLOBALS["FORCE"]) { echo "Free.................: {$FREEMB}MB\n"; } build_progress("{please_wait}, {scaning_directory} {$directory}...", $pr); $UPDATED = true; $cmd = "{$NICE} /usr/share/artica-postfix/bin/philesight --db /home/artica/philesight/{$md5}.db --only-dirs --index \"{$directory}\" 2>&1"; if ($GLOBALS["FORCE"]) { echo "{$cmd}\n"; } system($cmd); if (!is_file("/home/artica/philesight/{$md5}.db")) { if ($GLOBALS["FORCE"]) { echo "/home/artica/philesight/{$md5}.db no such file.\n"; } } build_progress("{please_wait}, Generating report on {$directory}...", $pr); $cmd = "{$NICE} /usr/share/artica-postfix/bin/philesight --db /home/artica/philesight/{$md5}.db --path \"{$directory}\" --draw /usr/share/artica-postfix/img/philesight/{$md5}.png"; if ($GLOBALS["FORCE"]) { echo "{$cmd}\n"; } system($cmd); $directory = mysql_escape_string2($directory); $sql = "UPDATE `philesight` SET `hd`='{$hd}',\n\t\tpartition='{$partition}',\n\t\tlastscan=" . time() . ",\n\t\thd='{$hd}',\n\t\tUSED='{$USED}',\n\t\tFREEMB='{$FREEMB}'\n\t\tWHERE `directory`='{$directory}'"; $q->QUERY_SQL($sql, 'artica_backup'); if (!$q->ok) { echo $q->mysql_error . "\n"; build_progress("{failed}, MySQL error", 110); return; } } build_progress("{success}", 100); if ($EnableArticaMetaClient) { meta_events("UPDATED={$UPDATED}", __FUNCTION__, __LINE__); } if ($UPDATED) { $sock = new sockets(); $EnableArticaMetaClient = intval($sock->GET_INFO("EnableArticaMetaClient")); if ($EnableArticaMetaClient == 1) { $cp = $unix->find_program("cp"); $tar = $unix->find_program("tar"); $rm = $unix->find_program("rm"); @mkdir("/home/artica/metaclient/upload/philesight", true, 0755); @file_put_contents("/home/artica/metaclient/upload/philesight/dump.db", serialize($ARRAY_META)); shell_exec("{$cp} -f /usr/share/artica-postfix/img/philesight/* /home/artica/metaclient/upload/philesight/"); @chdir("/home/artica/metaclient/upload/philesight"); system("cd /home/artica/metaclient/upload/philesight"); if (is_file("/home/artica/metaclient/upload/philesight.tgz")) { @unlink("/home/artica/metaclient/upload/philesight.tgz"); } shell_exec("{$tar} -cf /home/artica/metaclient/upload/philesight.tgz *"); shell_exec("{$rm} -rf /home/artica/metaclient/upload/philesight/*"); } } if ($GLOBALS["META_PING"]) { if (is_file("/home/artica/metaclient/upload/philesight.tgz")) { $php = $unix->LOCATE_PHP5_BIN(); system("{$php} /usr/share/artica-postfix/exec.artica-meta-client.php --ping --force >/dev/null 2>&1 &"); } } }
function start($aspid = false) { $unix = new unix(); $sock = new sockets(); $Masterbin = $unix->find_program("dnsmasq"); $ipClass = new IP(); if (!is_file($Masterbin)) { $unix->DEBIAN_INSTALL_PACKAGE("dnmasq"); } if (!is_file($Masterbin)) { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]}, dnsmasq not installed\n"; } return; } if (!$aspid) { $pidfile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".pid"; $pid = $unix->get_pid_from_file($pidfile); if ($unix->process_exists($pid, basename(__FILE__))) { $time = $unix->PROCCESS_TIME_MIN($pid); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Already Artica task running PID {$pid} since {$time}mn\n"; } return; } @file_put_contents($pidfile, getmypid()); } $pid = PID_NUM(); if ($unix->process_exists($pid)) { $timepid = $unix->PROCCESS_TIME_MIN($pid); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Service already started {$pid} since {$timepid}Mn...\n"; } return; } $sock = new sockets(); $EnableLocalDNSMASQ = $sock->GET_INFO('EnableLocalDNSMASQ'); $EnableDNSMASQ = intval($sock->GET_INFO("EnableDNSMASQ")); $EnableLocalDNSMASQ = $sock->GET_INFO("EnableLocalDNSMASQ"); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} EnableDNSMASQ={$EnableDNSMASQ}\n"; } if ($EnableLocalDNSMASQ == 1) { $EnableDNSMASQ = 1; } $EnableDNSMASQ = $sock->dnsmasq_enabled(); if ($EnableDNSMASQ == 0) { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} EnableLocalDNSMASQ ({$EnableLocalDNSMASQ})\n"; } if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} EnableDNSMASQ ({$EnableDNSMASQ})\n"; } if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} service disabled (see EnableDNSMASQ)\n"; } return; } $php5 = $unix->LOCATE_PHP5_BIN(); $echo = $unix->find_program("echo"); $nohup = $unix->find_program("nohup"); if (!is_file("/etc/dnsmasq.cmdlines.array")) { build(true); } $G = unserialize(@file_get_contents("/etc/dnsmasq.cmdlines.array")); $cmdline = @implode(" ", $G); echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} " . count($G) . " token(s)\n"; while (list($num, $val) = each($G)) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} token: {$val}\n"; } if (!is_file("/etc/dnsmasq.conf.empty")) { @file_put_contents("/etc/dnsmasq.conf.empty", "\n"); } fuser_port(); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} service {" . __LINE__ . "}\n"; } shell_exec($cmdline); for ($i = 1; $i < 5; $i++) { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} waiting {$i}/5\n"; } sleep(1); $pid = PID_NUM(); if ($unix->process_exists($pid)) { break; } } $pid = PID_NUM(); if ($unix->process_exists($pid)) { shell_exec("{$nohup} /etc/init.d/monit reconfigure >/dev/null 2>&1 &"); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Success PID {$pid}\n"; } } else { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Failed\n"; } if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} {$cmdline}\n"; } } }
function runProc($norestart = false) { $unix = new unix(); $sock = new sockets(); $t = time(); $timeFile = "/etc/artica-postfix/pids/" . basename(__FILE__) . ".time"; $timePID = "/etc/artica-postfix/pids/" . basename(__FILE__) . ".pid"; $EnableBandwithCalculation = $sock->GET_INFO("EnableBandwithCalculation"); if (!is_numeric($EnableBandwithCalculation)) { $EnableBandwithCalculation = 1; } $GetInstances = GetInstances(); if ($GetInstances > 0) { system_admin_events("{$GetInstances} instance(s) already running.. aborting...", __FUNCTION__, __FILE__, __LINE__, "testspeed"); return; } if ($EnableBandwithCalculation == 0) { system_admin_events("Feature disabled trough the Interface (EnableBandwithCalculation) you have to disable the schedule too...", __FUNCTION__, __FILE__, __LINE__, "testspeed"); return; } if (!$GLOBALS["FORCE"]) { $pid = $unix->get_pid_from_file($timePID); if ($unix->process_exists($pid, basename(__FILE__))) { $timexec = $unix->PROCCESS_TIME_MIN($pid); if ($timexec < 30) { system_admin_events("Already instance executed pid {$pid} since {$timexec}Mn", __FUNCTION__, __FILE__, __LINE__, "testspeed"); return; } else { $kill = $unix->find_program("kill"); unix_system_kill_force($pid); system_admin_events("Instance pid {$pid} since {$timexec}Mn was killed", __FUNCTION__, __FILE__, __LINE__, "testspeed"); } } $ExecTimefile = $unix->file_time_min($timeFile); if ($ExecTimefile < 30) { system_admin_events("Must run minimal 30mn ({$ExecTimefile}Mn), aborting", __FUNCTION__, __FILE__, __LINE__, "testspeed"); return; } @unlink($timeFile); @file_put_contents($timeFile, time()); @file_put_contents($timePID, getmypid()); } $python = $unix->find_program("python"); if (!is_file($python)) { system_admin_events("python, no such binary", __FUNCTION__, __FILE__, __LINE__, "testspeed"); return; } $speedDNum = 0; $speedYNum = 0; $IP = null; $ISP = null; if (!is_file("/usr/lib/pyshared/python2.7/lxml/etree.so")) { $unix->DEBIAN_INSTALL_PACKAGE("python-lxml"); } @chdir("/usr/share/artica-postfix/bin"); exec("{$python} /usr/share/artica-postfix/bin/tespeed.py -dt 1 -ut 1 2>&1", $results); @chdir("/root"); while (list($index, $line) = each($results)) { if ($GLOBALS["VERBOSE"]) { echo "{$line}\n"; } if (preg_match("#IP:\\s+(.+?);.*?ISP:\\s+(.+?)\$#", $line, $re)) { $IP = trim($re[1]); $ISP = trim($re[2]); } if (preg_match("#No module named lxml#", $line)) { system_admin_events("Error,{$line}", __FUNCTION__, __FILE__, __LINE__, "testspeed"); if (!$norestart) { install_lxml(); } return; } if (preg_match("#No module named argparse#", $line)) { system_admin_events("Error,{$line}", __FUNCTION__, __FILE__, __LINE__, "testspeed"); if (!$norestart) { install_argparse(); } return; } if (preg_match("#Download speed:\\s+([0-9\\.]+)\\s+Mbit#", $line, $re)) { $speedDNum = $re[1]; $speedDNum = $speedDNum * 1024; } if (preg_match("#Upload speed:\\s+([0-9\\.]+)\\s+Mbit#", $line, $re)) { $speedUNum = $re[1]; $speedYNum = $speedUNum * 1024; } } $took = $unix->distanceOfTimeInWords($t, time(), true); if ($GLOBALS["VERBOSE"]) { echo "ISP:{$ISP} , IP:{$IP} Download: {$speedDNum} Kbi/s upload {$speedYNum} Kbi/s\n"; } if ($speedDNum == 0) { return; } if ($speedYNum == 0) { return; } system_admin_events("ISP:{$ISP} , IP:{$IP} Download: {$speedDNum} Kbi/s upload {$speedYNum} Kbi/s took {$took}", __FUNCTION__, __FILE__, __LINE__, "testspeed"); $array["ISP"] = $ISP; $array["PUBLIC_IP"] = $IP; $array["DOWNLOAD"] = $speedDNum; $array["UPLOAD"] = $speedYNum; $array["DATE"] = time(); @mkdir("/usr/share/artica-postfix/ressources/web/cache1", 0777, true); @file_put_contents("/usr/share/artica-postfix/ressources/web/cache1/bandwith.stats", serialize($array)); if (strlen($speedDNum) > 2) { $q = new mysql(); $q->BuildTables(); $q->QUERY_SQL("INSERT INTO speedtests (zDate,ISP,download,upload) VALUES (NOW(),'{$ISP}','{$speedDNum}','{$speedYNum}')", "artica_events"); if (!$q->ok) { system_admin_events("Fatal error, {$q->mysql_error}", __FUNCTION__, __FILE__, __LINE__, "testspeed"); } } $q->QUERY_SQL("DELETE FROM speedtests WHERE zDate<DATE_SUB(NOW(),INTERVAL 35 DAY)", "artica_events"); }
function importcomputersFromList() { $unix = new unix(); if (!is_file("/usr/bin/arp-scan")) { $unix->DEBIAN_INSTALL_PACKAGE("arp-scan"); } $sock = new sockets(); $ipClass = new IP(); $tbl = explode("\n", $sock->GET_INFO("ComputerListToImport")); $CountOfLines = count($tbl); build_progress("{$CountOfLines} {computers}", 10); echo "[" . __LINE__ . "] {$CountOfLines} lines\n"; $i = 0; $z = 0; $max = $CountOfLines; $FAILED = 0; $SUCCESS = 0; while (list($num, $line) = each($tbl)) { $z++; $prc = $z / $CountOfLines * 100; $prc = round($prc); if ($prc < 10) { $prc = 10; } if ($prc > 90) { $prc = 90; } $proxy_alias = null; $computername = null; $IPADDR = null; $MAC = null; //pc001,192.168.1.5,d8:9e:3f:34:2d:8d,jhon_pc[br] $EXPLODED = explode(",", $line); $computername = $EXPLODED[0]; $IPADDR = $EXPLODED[1]; $MAC = $EXPLODED[2]; $MAC = str_replace("-", ":", $MAC); $MAC = strtolower($MAC); if (isset($EXPLODED[3])) { $proxy_alias = trim(strtolower($EXPLODED[3])); } if ($proxy_alias != null) { proxy_alias_add($IPADDR, $MAC, $proxy_alias); } $computername = trim($computername); if ($MAC == null) { $MAC = arp_scan_IpToMac($IPADDR); } if ($computername == null) { echo "[" . __LINE__ . "] Computer Name is null, aborting\n"; $FAILED++; continue; } if (!$ipClass->isValid($IPADDR)) { $IPADDR = null; } if (!$ipClass->IsvalidMAC($MAC)) { $MAC = null; } build_progress("{$computername} {$IPADDR}/{$MAC}/{$proxy_alias}", $prc); $cmp = new computers(); if ($MAC != null) { $uid = $cmp->ComputerIDFromMAC($MAC); } else { $uid = "{$computername}\$"; } if ($uid == null) { $uid = "{$computername}\$"; } if ($IPADDR == null) { echo "Try to resolve {$computername}\n"; $IPADDR = @gethostbyname($computername); if (!$ipClass->isValid($IPADDR)) { $IPADDR = null; } } $cmp = new computers($uid); if ($IPADDR != null) { $cmp->ComputerIP = $IPADDR; } if ($MAC != null) { $cmp->ComputerMacAddress = $MAC; } $cmp->ComputerRealName = $computername; if (!$cmp->Add()) { echo "{$computername}: {$cmp->ldap_error}\n"; $FAILED++; } else { $SUCCESS++; } $i = $i + 1; } echo "Success: {$SUCCESS}\n"; echo "Failed : {$FAILED}\n"; build_progress("{$SUCCESS} {added_computers}", 95); sleep(10); build_progress("{done}", 100); }
function start($aspid = false, $restart = false) { $unix = new unix(); $sock = new sockets(); $Masterbin = $unix->find_program("dnsmasq"); $ipClass = new IP(); if (!is_file($Masterbin)) { $unix->DEBIAN_INSTALL_PACKAGE("dnmasq"); } if (!is_file($Masterbin)) { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]}, dnsmasq not installed\n"; } return; } if (!$aspid) { $pidfile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".pid"; $pid = $unix->get_pid_from_file($pidfile); if ($unix->process_exists($pid, basename(__FILE__))) { $time = $unix->PROCCESS_TIME_MIN($pid); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Already Artica task running PID {$pid} since {$time}mn\n"; } return; } @file_put_contents($pidfile, getmypid()); } if ($restart) { stop(true); } $pid = PID_NUM(); if ($unix->process_exists($pid)) { $timepid = $unix->PROCCESS_TIME_MIN($pid); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Service already started {$pid} since {$timepid}Mn...\n"; } return false; } $sock = new sockets(); $EnableLocalDNSMASQ = $sock->GET_INFO('EnableLocalDNSMASQ'); $EnableDNSMASQ = intval($sock->GET_INFO("EnableDNSMASQ")); $EnableLocalDNSMASQ = $sock->GET_INFO("EnableLocalDNSMASQ"); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} EnableDNSMASQ={$EnableDNSMASQ}\n"; } if ($EnableLocalDNSMASQ == 1) { $EnableDNSMASQ = 1; } $EnableDNSMASQ = $sock->dnsmasq_enabled(); if ($EnableDNSMASQ == 0) { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} EnableLocalDNSMASQ ({$EnableLocalDNSMASQ})\n"; } if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} EnableDNSMASQ ({$EnableDNSMASQ})\n"; } if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} service disabled (see EnableDNSMASQ)\n"; } return false; } if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Build.....\n"; } build(true); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Starting service\n"; } if ($restart) { stop(true); } shell_exec("/etc/init.d/dnsmasq start"); return true; }
function install_dialog() { $TimeFile = "/etc/artica-postfix/install.dialog.time"; $unix = new unix(); if (!$GLOBALS["FORCE"]) { $TimeEx = $unix->file_time_min($TimeFile); if ($TimeEx < 15) { return; } } @unlink($TimeFile); @file_put_contents($TimeFile, time()); $dialog = $unix->find_program("dialog"); if (is_file($dialog)) { return; } $unix->DEBIAN_INSTALL_PACKAGE("dialog"); }