public static function find_zeroconf_phoromatic_servers($find_multiple = false) { if (!pts_network::network_support_available()) { return null; } $hosts = $find_multiple ? array() : null; if (PTS_IS_CLIENT && pts_client::executable_in_path('avahi-browse')) { $avahi_browse = explode(PHP_EOL, shell_exec('avahi-browse -p -r -t _http._tcp 2>&1')); foreach (array_reverse($avahi_browse) as $avahi_line) { if (strrpos($avahi_line, 'phoromatic-server') !== false) { $avahi_line = explode(';', $avahi_line); if (isset($avahi_line[8]) && ip2long($avahi_line[7]) !== false && is_numeric($avahi_line[8])) { $server_ip = $avahi_line[7]; $server_port = $avahi_line[8]; //echo $server_ip . ':' . $server_port; if ($find_multiple) { array_push($hosts, array($server_ip, $server_port)); } else { $hosts = array($server_ip, $server_port); break; } } } } } return $hosts; }