public static function available_phoromatic_servers() { $phoromatic_servers = array(); $possible_servers = pts_network::find_zeroconf_phoromatic_servers(true); foreach (self::$phoromatic_servers as $server) { array_push($possible_servers, array($server['ip'], $server['http_port'])); } $user_config_phoromatic_servers = pts_config::read_user_config('PhoronixTestSuite/Options/General/PhoromaticServers', ''); foreach (explode(',', $user_config_phoromatic_servers) as $static_server) { $static_server = explode(':', $static_server); if (count($static_server) == 2) { array_push($possible_servers, array($static_server[0], $static_server[1])); } } if (is_file(PTS_USER_PATH . 'phoromatic-servers')) { $phoromatic_servers_file = pts_file_io::file_get_contents(PTS_USER_PATH . 'phoromatic-servers'); foreach (explode(PHP_EOL, $phoromatic_servers_file) as $ps_file_line) { $ps_file_line = explode(':', trim($ps_file_line)); if (count($ps_file_line) == 2 && ip2long($ps_file_line[0]) !== false && is_numeric($ps_file_line) && $ps_file_line > 100) { array_push($possible_servers, array($ps_file_line[0], $ps_file_line[1])); } } } foreach ($possible_servers as $possible_server) { // possible_server[0] is the Phoromatic Server IP // possible_server[1] is the Phoromatic Server HTTP PORT if (in_array($possible_server[0], array_keys($phoromatic_servers))) { continue; } $server_response = pts_network::http_get_contents('http://' . $possible_server[0] . ':' . $possible_server[1] . '/server.php', false, false, 3); if (stripos($server_response, 'Phoromatic') !== false) { trigger_error('Phoromatic Server Auto-Detected At: ' . $possible_server[0] . ':' . $possible_server[1], E_USER_NOTICE); $phoromatic_servers[$possible_server[0]] = array('ip' => $possible_server[0], 'http_port' => $possible_server[1]); } } return $phoromatic_servers; }