Example #1
0
File: common.php Project: pcela/lms
function execute_program($program, $args = '')
{
    $buffer = '';
    $program = find_program($program);
    if (!$program) {
        return;
    }
    // see if we've gotten a |, if we have we need to do patch checking on the cmd
    if ($args) {
        $args_list = preg_split('/ /', $args);
        for ($i = 0; $i < count($args_list); $i++) {
            if ($args_list[$i] == '|') {
                $cmd = $args_list[$i + 1];
                $new_cmd = find_program($cmd);
                $args = preg_replace('/\\| ' . preg_quote($cmd, '/') . '/', '| ' . $new_cmd, $args);
            }
        }
    }
    // we've finally got a good cmd line.. execute it
    if ($fp = popen($program . ' ' . $args, 'r')) {
        while (!feof($fp)) {
            $buffer .= fgets($fp, 4096);
        }
        return trim($buffer);
    }
}
Example #2
0
function execute_program($strProgramname, $strArgs = '', &$strBuffer, $booErrorRep = true)
{
    $error = Error::singleton();
    $strBuffer = '';
    $strError = '';
    $strProgram = find_program($strProgramname);
    if (!$strProgram) {
        if ($booErrorRep) {
            $error->addError('find_program(' . $strProgramname . ')', 'program not found on the machine');
        }
        return false;
    }
    // see if we've gotten a |, if we have we need to do patch checking on the cmd
    if ($strArgs) {
        $arrArgs = explode(' ', $strArgs);
        for ($i = 0; $i < count($arrArgs); $i++) {
            if ($arrArgs[$i] == '|') {
                $strCmd = $arrArgs[$i + 1];
                $strNewcmd = find_program($strCmd);
                $strArgs = ereg_replace("\\| " . $strCmd, "| " . $strNewcmd, $strArgs);
            }
        }
    }
    // no proc_open() below php 4.3
    $descriptorspec = array(0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("pipe", "w"));
    $process = proc_open($strProgram . " " . $strArgs, $descriptorspec, $pipes);
    if (is_resource($process)) {
        while (!feof($pipes[1])) {
            $strBuffer .= fgets($pipes[1], 1024);
        }
        fclose($pipes[1]);
        while (!feof($pipes[2])) {
            $strError .= fgets($pipes[2], 1024);
        }
        fclose($pipes[2]);
    }
    $return_value = proc_close($process);
    $strError = trim($strError);
    $strBuffer = trim($strBuffer);
    //if( ! empty( $strError ) || $return_value <> 0 ) {
    if (!empty($strError)) {
        if ($booErrorRep) {
            $error->addError($strProgram, $strError . "\nReturn value: " . $return_value);
        }
        return false;
    }
    return true;
}
Example #3
0
function execute_program($program, $args = '')
{
    $buffer = '';
    $program = find_program($program);
    if (!$program) {
        return;
    }
    if ($args) {
        $args_list = split(' ', $args);
        for ($i = 0; $i < count($args_list); $i++) {
            if ($args_list[$i] == '|') {
                $cmd = $args_list[$i + 1];
                $new_cmd = find_program($cmd);
                $args = ereg_replace("\\| {$cmd}", "| {$new_cmd}", $args);
            }
        }
    }
}
Example #4
0
function DeleteRules()
{
    $d = 0;
    $iptables_save = find_program("iptables-save");
    exec("{$iptables_save} > /etc/artica-postfix/iptables-mikrotik.conf");
    $data = file_get_contents("/etc/artica-postfix/iptables-mikrotik.conf");
    $datas = explode("\n", $data);
    $pattern2 = "#.+?ArticaMikroTik#";
    $iptables_restore = find_program("iptables-restore");
    while (list($num, $ligne) = each($datas)) {
        if ($ligne == null) {
            continue;
        }
        if (preg_match($pattern2, $ligne)) {
            echo "Remove {$ligne}\n";
            $d++;
            continue;
        }
        $conf = $conf . $ligne . "\n";
    }
    file_put_contents("/etc/artica-postfix/iptables-mikrotik.new.conf", $conf);
    system("{$iptables_restore} < /etc/artica-postfix/iptables-mikrotik.new.conf");
}
<?php

ini_set('display_errors', 1);
ini_set('html_errors', 0);
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL);
$iptables_save = find_program("iptables-save");
$iptables_restore = find_program("iptables-restore");
system("{$iptables_save} > /etc/artica-postfix/iptables.conf");
$data = file_get_contents("/etc/artica-postfix/iptables.conf");
$datas = explode("\n", $data);
$pattern = "#.+?ArticaIpRoute2#";
$d = 0;
$conf = null;
while (list($num, $ligne) = each($datas)) {
    if ($ligne == null) {
        continue;
    }
    if (preg_match($pattern, $ligne)) {
        $d++;
        continue;
    }
    $conf = $conf . $ligne . "\n";
}
file_put_contents("/etc/artica-postfix/iptables.new.conf", $conf);
system("{$iptables_restore} < /etc/artica-postfix/iptables.new.conf");
function find_program($strProgram)
{
    global $addpaths;
    $arrPath = array('/bin', '/sbin', '/usr/bin', '/usr/sbin', '/usr/local/bin', '/usr/local/sbin', '/usr/kerberos/bin', '/usr/libexec');
    if (function_exists("is_executable")) {
function execute_program($programname, $args = '', $booErrorRep = true)
{
    global $error;
    $buffer = '';
    $program = find_program($programname);
    if (!$program) {
        if ($booErrorRep) {
            $error->addError('find_program(' . $programname . ')', 'program not found on the machine', __LINE__, __FILE__);
        }
        return;
    }
    // see if we've gotten a |, if we have we need to do patch checking on the cmd
    if ($args) {
        $args_list = split(' ', $args);
        for ($i = 0; $i < count($args_list); $i++) {
            if ($args_list[$i] == '|') {
                $cmd = $args_list[$i + 1];
                $new_cmd = find_program($cmd);
                $args = ereg_replace("\\| {$cmd}", "| {$new_cmd}", $args);
            }
        }
    }
    // we've finally got a good cmd line.. execute it
    if ($fp = popen("({$program} {$args} > /dev/null) 3>&1 1>&2 2>&3", 'r')) {
        while (!feof($fp)) {
            $buffer .= fgets($fp, 4096);
        }
        pclose($fp);
        $buffer = trim($buffer);
        if (!empty($buffer)) {
            if ($booErrorRep) {
                $error->addError($program, $buffer, __LINE__, __FILE__);
            }
        }
    }
    if ($fp = popen("{$program} {$args}", 'r')) {
        $buffer = "";
        while (!feof($fp)) {
            $buffer .= fgets($fp, 4096);
        }
        pclose($fp);
    }
    $buffer = trim($buffer);
    return $buffer;
}
Example #7
0
function GetMacFromIP($ipaddr)
{
    $ipaddr = trim($ipaddr);
    $ttl = date('YmdH');
    if (count($GLOBALS["CACHEARP"]) > 3) {
        unset($GLOBALS["CACHEARP"]);
    }
    if (isset($GLOBALS["CACHEARP"][$ttl][$ipaddr])) {
        return $GLOBALS["CACHEARP"][$ttl][$ipaddr];
    }
    if (!isset($GLOBALS["SBIN_ARP"])) {
        $GLOBALS["SBIN_ARP"] = find_program("arp");
    }
    if (!isset($GLOBALS["SBIN_ARPING"])) {
        $GLOBALS["SBIN_ARPING"] = find_program("arping");
    }
    if (strlen($GLOBALS["SBIN_ARPING"]) > 3) {
        $cmd = "{$GLOBALS["SBIN_ARPING"]} {$ipaddr} -c 1 -r 2>&1";
        exec($cmd, $results);
        while (list($num, $line) = each($results)) {
            if (preg_match("#^([0-9a-zA-Z\\:]+)#", $line, $re)) {
                $GLOBALS["CACHEARP"][$ttl][$ipaddr] = $re[1];
                return $GLOBALS["CACHEARP"][$ttl][$ipaddr];
            }
        }
    }
    $results = array();
    if (strlen($GLOBALS["SBIN_ARP"]) < 4) {
        return;
    }
    if (!isset($GLOBALS["SBIN_PING"])) {
        $GLOBALS["SBIN_PING"] = find_program("ping");
    }
    if (!isset($GLOBALS["SBIN_NOHUP"])) {
        $GLOBALS["SBIN_NOHUP"] = find_program("nohup");
    }
    $cmd = "{$GLOBALS["SBIN_ARP"]} -n \"{$ipaddr}\" 2>&1";
    WLOG($cmd);
    exec($cmd, $results);
    while (list($num, $line) = each($results)) {
        if (preg_match("#^[0-9\\.]+\\s+.+?\\s+([0-9a-z\\:]+)#", $line, $re)) {
            if ($re[1] == "no") {
                continue;
            }
            $GLOBALS["CACHEARP"][$ttl][$ipaddr] = $re[1];
            return $GLOBALS["CACHEARP"][$ttl][$ipaddr];
        }
    }
    if (!isset($GLOBALS["PINGEDHOSTS"][$ipaddr])) {
        shell_exec("{$GLOBALS["SBIN_NOHUP"]} {$GLOBALS["SBIN_PING"]} {$ipaddr} -c 3 >/dev/null 2>&1 &");
        $GLOBALS["PINGEDHOSTS"][$ipaddr] = true;
    }
}
Example #8
0
function disable_iptables()
{
    $d = 0;
    $data = file_get_contents("/etc/artica-postfix/iptables.conf");
    $datas = explode("\n", $data);
    $pattern2 = "#.+?ArticaWCCP3#";
    $iptables_save = find_program("iptables-save");
    $conf = null;
    while (list($num, $ligne) = each($datas)) {
        if ($ligne == null) {
            continue;
        }
        if (preg_match($pattern2, $ligne)) {
            $d++;
            continue;
        }
        $conf = $conf . $ligne . "\n";
    }
    if ($d == 0) {
        return;
    }
    $iptables_restore = find_program("iptables-restore");
    file_put_contents("/etc/artica-postfix/iptables.new.conf", $conf);
    system("{$iptables_restore} < /etc/artica-postfix/iptables.new.conf");
    build_progress("Removing {$d} iptables rule(s) done", 50);
    echo "Starting......: " . date("H:i:s") . " Squid Check WCCP mode: removing {$d} iptables rule(s) done...\n";
}
function execute_program($strProgramname, $strArgs = '', $booErrorRep = true)
{
    global $error;
    $strBuffer = '';
    $strProgram = find_program($strProgramname);
    if (!$strProgram) {
        if ($booErrorRep) {
            $error->addError('find_program(' . $strProgramname . ')', 'program not found on the machine', __LINE__, __FILE__);
        }
        return "ERROR";
    }
    // see if we've gotten a |, if we have we need to do patch checking on the cmd
    if ($strArgs) {
        $arrArgs = split(' ', $strArgs);
        for ($i = 0; $i < count($arrArgs); $i++) {
            if ($arrArgs[$i] == '|') {
                $strCmd = $arrArgs[$i + 1];
                $strNewcmd = find_program($strCmd);
                $strArgs = ereg_replace("\\| " . $strCmd, "| " . $strNewcmd, $strArgs);
            }
        }
    }
    // we've finally got a good cmd line.. execute
    if ($fp = popen("(" . $strProgram . " " . $strArgs . " > /dev/null) 3>&1 1>&2 2>&3", 'r')) {
        while (!feof($fp)) {
            $strBuffer .= fgets($fp, 4096);
        }
        pclose($fp);
        $strBuffer = trim($strBuffer);
        if (!empty($strBuffer)) {
            if ($booErrorRep) {
                $error->addError($strProgram, $strBuffer, __LINE__, __FILE__);
            }
            return "ERROR";
        }
    }
    if ($fp = popen($strProgram . " " . $strArgs, 'r')) {
        $strBuffer = "";
        while (!feof($fp)) {
            $strBuffer .= fgets($fp, 4096);
        }
        pclose($fp);
    }
    $strBuffer = trim($strBuffer);
    return $strBuffer;
}
    return $year . '-' . $month . '-' . $day . ' ' . $time;
}
function find_program($program, $url)
{
    $content = file($url);
    $result = array();
    $i = 0;
    $row = 0;
    foreach ($content as $c) {
        if (strpos($c, $program) != 0) {
            $row = $i;
            break;
        }
        $i++;
    }
    if ($row) {
        $broadcast_row = $content[$row + 1];
        $target_row = clear_elements($content[$row + 3]);
        $broadcast_date = format_date(clear_elements($broadcast_row));
        $pid = substr($target_row, 0, strpos($target_row, '&'));
        return array('program' => $program, 'pid' => $pid, 'broadcast_date' => $broadcast_date, 'broadcast_timestamp' => strtotime($broadcast_date));
    }
    return 'No program found';
}
$data[] = array('url' => 'http://www.iplayerconverter.co.uk/r/1/aod/default.aspx', 'program' => 'Ready for the Weekend');
$data[] = array('url' => 'http://www.iplayerconverter.co.uk/r/56/aod/default.aspx', 'program' => 'Graham Torrington Night Time');
$data[] = array('url' => 'http://www.iplayerconverter.co.uk/r/4/aod/default.aspx', 'program' => 'Material World');
$data[] = array('url' => 'http://www.iplayerconverter.co.uk/r/4/aod/default.aspx', 'program' => 'Farming Today');
foreach ($data as $d) {
    scraperwiki::save(array('program'), find_program($d['program'], $d['url']));
}
Example #11
0
function x_lvdisplay_size($vg, $lv)
{
    if ($lv == null) {
        writelogs_framework("{$vg}: LV is null", __FUNCTION__, __FILE__, __LINE__);
        return array();
    }
    $unix = new unix();
    $df = find_program("df");
    $mapper = "/dev/mapper/{$vg}-{$lv}";
    $cmd = "{$df} -B K {$mapper} 2>&1";
    exec($cmd, $results);
    writelogs_framework("{$cmd} " . count($results) . " rows", __FUNCTION__, __FILE__, __LINE__);
    while (list($num, $line) = each($results)) {
        if (preg_match("#([0-9]+)K\\s+([0-9]+)K\\s+([0-9]+)K\\s+([0-9]+)%\\s+\\/#", $line, $re)) {
            return array("USED" => $re[2], "FREE" => $re[3], "POURC" => $re[4]);
        }
    }
    return array();
}
Example #12
0
function UseStatsAppliance()
{
    include_once dirname(__FILE__) . "/ressources/class.ccurl.inc";
    $sock = new sockets();
    $unix = new unix();
    $tempdir = $unix->TEMP_DIR();
    $RemoteStatisticsApplianceSettings = unserialize(base64_decode($sock->GET_INFO("RemoteStatisticsApplianceSettings")));
    if (!is_numeric($RemoteStatisticsApplianceSettings["SSL"])) {
        $RemoteStatisticsApplianceSettings["SSL"] = 1;
    }
    if (!is_numeric($RemoteStatisticsApplianceSettings["PORT"])) {
        $RemoteStatisticsApplianceSettings["PORT"] = 9000;
    }
    $GLOBALS["REMOTE_SSERVER"] = $RemoteStatisticsApplianceSettings["SERVER"];
    $GLOBALS["REMOTE_SPORT"] = $RemoteStatisticsApplianceSettings["PORT"];
    $GLOBALS["REMOTE_SSL"] = $RemoteStatisticsApplianceSettings["SSL"];
    $unix = new unix();
    $hostname = $unix->hostname_g();
    if ($GLOBALS["REMOTE_SSL"] == 1) {
        $refix = "https";
    } else {
        $refix = "http";
    }
    $uri = "{$refix}://{$GLOBALS["REMOTE_SSERVER"]}:{$GLOBALS["REMOTE_SPORT"]}/ressources/databases/dnsmasq.conf";
    $curl = new ccurl($uri, true);
    if (!$curl->GetFile("{$tempdir}/dnsmasq.conf")) {
        ufdbguard_admin_events("Failed to download dnsmasq.conf aborting `{$curl->error}`", __FUNCTION__, __FILE__, __LINE__, "dns-compile");
        return;
    }
    $mv = $unix->find_program("mv");
    $cp = unix - find_program("cp");
    $chmod = $unix->find_program("chmod");
    shell_exec("{$mv} {$tempdir}/dnsmasq.conf /etc/dnsmasq.conf");
    shell_exec("cp /etc/dnsmasq.conf /etc/artica-postfix/settings/Daemons/DnsMasqConfigurationFile");
    $dnsmasqbin = $unix->find_program("dnsmasq");
    if (is_file($dnsmasqbin)) {
        $pid = $unix->PIDOF($dnsmasqbin);
        if (is_numeric($pid)) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} reloading PID:`{$pid}`\n";
            $kill = $unix->find_program("kill");
            unix_system_HUP($pid);
        }
    }
}
function SquidParentRemove()
{
    $iptables_save = find_program("iptables-save");
    $iptables_restore = find_program("iptables-restore");
    $conf = null;
    system("{$iptables_save} > /etc/artica-postfix/iptables.conf");
    $data = file_get_contents("/etc/artica-postfix/iptables.conf");
    $datas = explode("\n", $data);
    $pattern = "#.+?ArticaSquidChilds#";
    $d = 0;
    while (list($num, $ligne) = each($datas)) {
        if ($ligne == null) {
            continue;
        }
        if (preg_match($pattern, $ligne)) {
            $d++;
            continue;
        }
        $conf = $conf . $ligne . "\n";
    }
    file_put_contents("/etc/artica-postfix/iptables.new.conf", $conf);
    system("{$iptables_restore} < /etc/artica-postfix/iptables.new.conf");
    echo "Starting......: " . date("H:i:s") . " Squid Check Parent mode: removing {$d} iptables rule(s) done...\n";
}
function execute_program($strProgramname, $strArgs = '', $booErrorRep = true)
{
    global $error;
    $strBuffer = '';
    $strError = '';
    $strProgram = find_program($strProgramname);
    if (!$strProgram) {
        if ($booErrorRep) {
            $error->addError('find_program(' . $strProgramname . ')', 'program not found on the machine', __LINE__, __FILE__);
        }
        return "ERROR";
    }
    // see if we've gotten a |, if we have we need to do patch checking on the cmd
    if ($strArgs) {
        $arrArgs = split(' ', $strArgs);
        for ($i = 0; $i < count($arrArgs); $i++) {
            if ($arrArgs[$i] == '|') {
                $strCmd = $arrArgs[$i + 1];
                $strNewcmd = find_program($strCmd);
                $strArgs = ereg_replace("\\| " . $strCmd, "| " . $strNewcmd, $strArgs);
            }
        }
    }
    // no proc_open() below php 4.3
    if (function_exists('proc_open')) {
        $descriptorspec = array(0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("pipe", "w"));
        $process = proc_open($strProgram . " " . $strArgs, $descriptorspec, $pipes);
        if (is_resource($process)) {
            while (!feof($pipes[1])) {
                $strBuffer .= fgets($pipes[1], 1024);
            }
            fclose($pipes[1]);
            while (!feof($pipes[2])) {
                $strError .= fgets($pipes[2], 1024);
            }
            fclose($pipes[2]);
        }
        $return_value = proc_close($process);
    } else {
        if ($fp = popen("(" . $strProgram . " " . $strArgs . " > /dev/null) 3>&1 1>&2 2>&3", 'r')) {
            while (!feof($fp)) {
                $strError .= fgets($fp, 4096);
            }
            pclose($fp);
        }
        $strError = trim($strError);
        if ($fp = popen($strProgram . " " . $strArgs, 'r')) {
            while (!feof($fp)) {
                $strBuffer .= fgets($fp, 4096);
            }
            $return_value = pclose($fp);
        }
    }
    $strError = trim($strError);
    $strBuffer = trim($strBuffer);
    if (!empty($strError) || $return_value != 0) {
        if ($booErrorRep) {
            $error->addError($strProgram, $strError . "\nReturn value: " . $return_value, __LINE__, __FILE__);
        }
    }
    return $strBuffer;
}