| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- <?php
- include("lgsl_protocol.php");
- function lgsl_string_html($string, $xml_feed = FALSE, $word_wrap = 0)
- {
- if ($word_wrap) { $string = lgsl_word_wrap($string, $word_wrap); }
- if ($xml_feed != FALSE)
- {
- $string = htmlspecialchars($string, ENT_QUOTES);
- }
- elseif (function_exists("mb_convert_encoding"))
- {
- $string = htmlspecialchars($string, ENT_QUOTES);
- $string = @mb_convert_encoding($string, "HTML-ENTITIES", "UTF-8");
- }
- else
- {
- $string = htmlentities($string, ENT_QUOTES, "UTF-8");
- }
- if ($word_wrap) { $string = lgsl_word_wrap($string); }
- return $string;
- }
- //------------------------------------------------------------------------------------------------------------+
- function lgsl_word_wrap($string, $length_limit = 0)
- {
- if (!$length_limit)
- {
- // http://www.quirksmode.org/oddsandends/wbr.html
- // return str_replace("\x05\x06", " ", $string); // VISIBLE
- // return str_replace("\x05\x06", "­", $string); // FF2 VISIBLE AND DIV NEEDED
- return str_replace("\x05\x06", "​", $string); // IE6 VISIBLE
- }
- $word_list = explode(" ", $string);
- foreach ($word_list as $key => $word)
- {
- $word_length = function_exists("mb_strlen") ? mb_strlen($word, "UTF-8") : strlen($word);
- if ($word_length < $length_limit) { continue; }
- $word_new = "";
- for ($i=0; $i<$word_length; $i+=$length_limit)
- {
- $word_new .= function_exists("mb_substr") ? mb_substr($word, $i, $length_limit, "UTF-8") : substr($word, $i, $length_limit);
- $word_new .= "\x05\x06";
- }
- $word_list[$key] = $word_new;
- }
- return implode(" ", $word_list);
- }
- //------------------------------------------------------------------------------------------------------------+
- $type = isset($_GET['lgsl_type'])? lgsl_string_html($_GET['lgsl_type']): "";
- $ip = isset($_GET['ip']) ? lgsl_string_html($_GET['ip']) : "";
- $c_port = isset($_GET['c_port']) ? intval($_GET['c_port']) : 0;
- $q_port = isset($_GET['q_port']) ? intval($_GET['q_port']) : 0;
- $s_port = isset($_GET['s_port']) ? intval($_GET['s_port']) : 0;
- $request = isset($_GET['request']) ? lgsl_string_html($_GET['request']) : "";
- //------------------------------------------------------------------------------------------------------------+
- // VALIDATE REQUEST
- if (!$type || !$ip || !$c_port || !$q_port || !$request)
- {
- echo "FAILURE"; return;
- }
- if ($q_port > 99999 || $q_port < 1024)
- {
- echo "FAILURE"; return;
- }
- if (preg_match("/[^0-9a-z\.\-\[\]\:]/i", $ip))
- {
- echo "FAILURE"; return;
- }
- if (preg_match("/[^a-z]/", $request))
- {
- echo "FAILURE"; return;
- }
- if ($type == "test")
- {
- echo "FAILURE"; return;
- }
- $lgsl_protocol_list = lgsl_protocol_list();
- if (!isset($lgsl_protocol_list[$type]))
- {
- echo "FAILURE"; return;
- }
- //------------------------------------------------------------------------------------------------------------+
- // FILTER HOSTNAME AND IP FORMATS THAT PHP ACCEPTS BUT ARE NOT WANTED
- if (preg_match("/(\[[0-9a-z\:]+\])/iU", $ip, $match)) { $ip = $match[1]; }
- elseif (preg_match("/([0-9a-z\.\-]+)/i", $ip, $match)) { $ip = $match[1]; }
- //------------------------------------------------------------------------------------------------------------+
- // QUERY SERVER
- $server = lgsl_query_live($type, $ip, $c_port, $q_port, $s_port, $request);
- //------------------------------------------------------------------------------------------------------------+
- // SERIALIZED OUTPUT
- echo "_SLGSLF_".serialize($server)."_SLGSLF_";
- return;
|