Пример #1
0
function getdata($servers, $extensions)
{
    $line = '';
    $extbyhost = array();
    foreach ($extensions as $extension => $extension_data) {
        if (!array_key_exists('host', $extension_data)) {
            continue;
        }
        if (!array_key_exists($extension_data['host'], $extbyhost)) {
            $extbyhost[$extension_data['host']] = array();
        }
        $extbyhost[$extension_data['host']][$extension] = False;
    }
    unset($extensions);
    foreach ($extbyhost as $host => $extensions) {
        if ($line) {
            $line .= ',';
        }
        if (array_key_exists($host, $servers)) {
            $line .= get_data_from_server($host, $servers[$host]['port'], @array_keys($extbyhost[$host]));
        } else {
            $line .= get_data_from_server($servers[0]['host'], $servers[0]['port'], @array_keys($extbyhost[$host]));
        }
    }
    if (!$extbyhost) {
        return return_error(3, 'no extension states');
    }
    if (!$line) {
        return return_error(101, 'NO DATA');
    }
    return $line;
}
Пример #2
0
function monitor_main()
{
    global $gbl, $sgbl, $login, $ghtml;
    global $argv;
    global $global_ip_array;
    global $global_remoteserver;
    global $global_remoteport;
    error_reporting(E_ALL);
    $list = parse_opt($argv);
    if (isset($list['data-server'])) {
        $global_remoteserver = $list['data-server'];
        $global_remoteport = "8888";
    } else {
        $global_remoteserver = "localhost";
        $global_remoteport = "5558";
    }
    if (false) {
        if (function_exists("posix_getpwnam")) {
            if (!isset($list['switch-user'])) {
                print "Needs a non-privileged user to be suplied as --switch-user=<user>... Using lxlabs\n";
                $list['switch-user'] = '******';
            }
            $pw = posix_getpwnam($list['switch-user']);
            if (!$pw) {
                print "User {$list['switch-user']} doesnt exist. Please create it\n\n\n\n";
                exit;
            }
            posix_setuid($pw['uid']);
            posix_setgid($pw['gid']);
        }
    }
    $sgbl->thisserver = get_my_name();
    $list = get_data_from_server();
    if (!$list) {
        print "No list from the server...\n";
    }
    dprintr($list);
    getDnsesFirst($list);
    $oldserverhistlist = null;
    $maincount = 0;
    while (1) {
        $maincount++;
        $serverhistlist = null;
        $sendserverhistlist = null;
        $startmaintime = time();
        foreach ($list as $l) {
            $ports = $l['monitorport_l'];
            $porthistlist = null;
            foreach ($ports as $p) {
                if (isset($portmonlist[$l['nname']][$p['nname']][2])) {
                    print "Socket Already exists... \n";
                    socket_close($portmonlist[$l['nname']][$p['nname']][2]);
                }
                $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
                socket_set_nonblock($socket);
                $portmonlist[$l['nname']][$p['nname']] = array($l['servername'], $p['portnumber'], $socket);
            }
        }
        $serverhistlist = null;
        dprintr($portmonlist);
        do_monitor_list($portmonlist, $serverhistlist);
        $portmonlist = prepare_error_portmonlist($serverhistlist);
        dprintr("Second try\n\n");
        dprintr($portmonlist);
        sleep(1);
        do_monitor_list($portmonlist, $serverhistlist);
        $endmaintime = time();
        if ($oldserverhistlist) {
            foreach ($serverhistlist as $s => $slist) {
                foreach ($slist as $p => $plist) {
                    if (!isset($oldserverhistlist[$s][$p])) {
                        $sendserverhistlist[$s][$p] = $serverhistlist[$s][$p];
                        continue;
                    }
                    if ($serverhistlist[$s][$p]['portstatus'] !== $oldserverhistlist[$s][$p]['portstatus']) {
                        $sendserverhistlist[$s][$p] = $serverhistlist[$s][$p];
                    }
                }
            }
        } else {
            $sendserverhistlist = $serverhistlist;
        }
        $oldserverhistlist = $serverhistlist;
        if ($sendserverhistlist) {
            dprint("Sending Data\n");
            //print_r($sendserverhistlist);
            dprintr($sendserverhistlist);
            send_data_to_server($sendserverhistlist);
        }
        $timeleft = 60 - $endmaintime + $startmaintime;
        if ($timeleft > 0) {
            //print("Sleep for $timeleft\n");
            sleep($timeleft);
        } else {
            //print("No sleep for $timeleft\n");
        }
        if ($maincount === 10) {
            $maincount = 1;
            if ($global_failure) {
                //print("Sending Data\n");
                //print($serverhistlist);
                send_data_to_server($serverhistlist);
            }
            $list = get_data_from_server();
            send_alive_info();
            //print("Getting again from server\n");
            //$oldserverhistlist = null;
            //print_r($list);
            getDnsesFirst($list);
        }
    }
}
Пример #3
0
function getdata($servers, $queues)
{
    $line = '';
    $extbyhost = array();
    $queuesbyhost = array();
    foreach ($queues as $queue => $queue_data) {
        if (!array_key_exists('members', $queue_data)) {
            continue;
        }
        if (!array_key_exists($queue_data['host'], $extbyhost)) {
            $extbyhost[$queue_data['host']] = array();
        }
        $queuesbyhost[$queue_data['host']][] = $queue;
        foreach ($queue_data['members'] as $member) {
            if (!array_key_exists($member['ext'], $extbyhost[$queue_data['host']])) {
                $extbyhost[$queue_data['host']][$member['ext']] = False;
            }
        }
    }
    unset($queues);
    foreach ($queuesbyhost as $host => $queues) {
        if ($line) {
            $line .= ',';
        }
        if (array_key_exists($host, $servers)) {
            $line .= get_data_from_server($host, $servers[$host]['port'], @array_keys($extbyhost[$host]), @$queuesbyhost[$host]);
        } else {
            $line .= get_data_from_server($servers[0]['host'], $servers[0]['port'], @array_keys($extbyhost[$host]), @$queuesbyhost[$host]);
        }
    }
    if (!$extbyhost) {
        return return_error(3, 'no extension states');
    }
    if (!$line) {
        return return_error(101, 'NO DATA');
    }
    return $line;
}