function netdiscover() { $Masterbin = "/usr/share/artica-postfix/bin/netdiscover"; if (!is_file($Masterbin)) { $l[] = ""; $l[] = "[APP_NETDISCOVER]"; $l[] = "service_name=APP_NETDISCOVER"; $l[] = "installed=0"; $l[] = "service_disabled=0"; $l[] = ""; return @implode("\n", $l); } $Enable = 1; $DisableNetDiscover = intval($GLOBALS["CLASS_SOCKETS"]->GET_INFO("DisableNetDiscover")); $SquidPerformance = intval($GLOBALS["CLASS_SOCKETS"]->GET_INFO("SquidPerformance")); if ($SquidPerformance > 2) { $DisableNetDiscover = 1; } $DisableNetDiscover2 = intval(@file_get_contents("/etc/artica-postfix/settings/Daemons/AsCategoriesAppliance")); if (!is_file("/etc/artica-postfix/settings/Daemons/NetDiscoverSaved")) { $DisableNetDiscover = 1; } if ($DisableNetDiscover == 1) { $Enable = 0; } if ($DisableNetDiscover2 == 1) { $Enable = 0; } $l[] = ""; $l[] = "[APP_NETDISCOVER]"; $l[] = "service_name=APP_NETDISCOVER"; $l[] = "master_version=" . netdiscover_version(); $l[] = "service_cmd=/etc/init.d/netdiscover"; $l[] = "service_disabled={$Enable}"; $l[] = "watchdog_features=1"; $l[] = "installed=1"; $l[] = "family=network"; if ($Enable == 0) { $l[] = ""; return implode("\n", $l); return; } $master_pid = netdiscover_pid(); if (!$GLOBALS["CLASS_UNIX"]->process_exists($master_pid)) { shell_exec2("{$GLOBALS["nohup"]} {$GLOBALS["PHP5"]} /usr/share/artica-postfix/exec.netdiscover.php --start >/dev/null 2>&1 &"); $l[] = ""; return implode("\n", $l); } $l[] = GetMemoriesOf($master_pid); $l[] = ""; $unix = new unix(); $time = $GLOBALS["CLASS_UNIX"]->PROCCESS_TIME_MIN($master_pid); if ($time > 30) { shell_exec2("{$GLOBALS["nohup"]} {$GLOBALS["PHP5"]} /usr/share/artica-postfix/exec.netdiscover.php --restart >/dev/null 2>&1 &"); } $time_file = $GLOBALS["CLASS_UNIX"]->file_time_min("/etc/artica-postfix/pids/exec.netdiscover.php.stats.time"); if ($time_file > 14) { shell_exec2("{$GLOBALS["nohup"]} {$GLOBALS["NICE"]} {$GLOBALS["PHP5"]} " . dirname(__FILE__) . "/exec.netdiscover.php --stats >/dev/null 2>&1 &"); } return implode("\n", $l); return; }
function start($aspid = false) { $unix = new unix(); $sock = new sockets(); $Masterbin = "/usr/share/artica-postfix/bin/netdiscover"; 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()); } $DisableNetDiscover = intval($sock->GET_INFO("DisableNetDiscover")); $DisableNetDiscover = intval(@file_get_contents("/etc/artica-postfix/settings/Daemons/AsCategoriesAppliance")); if (!is_file("/etc/artica-postfix/settings/Daemons/NetDiscoverSaved")) { $DisableNetDiscover = 1; } $pid = PID_NUM(); $DisableNetDiscover = intval($sock->GET_INFO("DisableNetDiscover")); 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"; } if ($DisableNetDiscover == 1) { stop(); } return; } $sock = new sockets(); $SquidPerformance = intval($sock->GET_INFO("SquidPerformance")); if ($SquidPerformance > 2) { $DisableNetDiscover = 1; } if ($DisableNetDiscover == 1) { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} service disabled (see DisableNetDiscover)\n"; } return; } $php5 = $unix->LOCATE_PHP5_BIN(); $sysctl = $unix->find_program("sysctl"); $echo = $unix->find_program("echo"); $nohup = $unix->find_program("nohup"); build(true); @chmod("{$Masterbin}", 0755); $version = netdiscover_version(); $f[] = $nohup; $f[] = $Masterbin; $f[] = "-p -P >/etc/artica-postfix/discover.txt 2>&1 &"; $cmd = @implode(" ", $f); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} service\n"; } shell_exec($cmd); 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)) { 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"]} {$cmd}\n"; } } }