1. 游客, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

搜索结果

  1. autosnikers
  2. autosnikers
  3. autosnikers
  4. autosnikers
  5. autosnikers
  6. autosnikers
  7. autosnikers
  8. autosnikers
  9. autosnikers
  10. autosnikers
  11. autosnikers
  12. autosnikers
  13. autosnikers
  14. autosnikers
  15. autosnikers
  16. autosnikers
  17. autosnikers
  18. autosnikers
  19. autosnikers
  20. autosnikers
    У меня вообще грузит, грузит, грузит и не загрузит Взял айпишник где нет сервера - все ок, правда иероглифы были. Взял айпишник руоффа - не работает Логично, если вы ничего не настроили. на тестовый залил его мего трю скрипт чат читался, но без ников, баны и прочую хурму не проверял ну и собственно его скрипт <?php class Chat { const KEY = "24BD-7E04-4595-ED20"; # Не изменяйте ключ const CHAT_FILE = "/home/logs/world2.chat"; # Путь к файлу чата public function __construct($action = null) { header("Content-type: text/html; charset=utf-8"); if($action != null && $_GET["code"] == self::KEY) { switch ($action) { case "getNick": $this->getNick($_GET["id"]); break; case "getNameClan": $this->getNameClan($_GET["id"]); break; case "setBan": $this->setBan($_GET["type"], $_GET["id"], $_GET["sec"], $_GET["reason"]); break; case "sendSystemMessage": $this->sendSystemMessage($_GET["message"]); break; case "getChatFile": $this->getChatFile($_GET["count"]); break; case "getCountString": $this->getCountString(); break; default: die("error"); } } else { die("error"); } } protected function cuint($data) { if($data < 64) return strrev(pack("C", $data)); else if($data < 16384) return strrev(pack("S", ($data | 0x8000))); else if($data < 536870912) return strrev(pack("I", ($data | 0xC0000000))); return strrev(pack("c", -32) . pack("i", $data)); } protected function UnPackString($data, $p) { $size = (hexdec(bin2hex(substr($data,$p,1))) >= 128) ? 2 : 1; $octetlen = (hexdec(bin2hex(substr($data,$p, $size))) >= 128) ? hexdec(bin2hex(substr($data,$p, $size)))-32768 : hexdec(bin2hex(substr($data,$p, $size))); $pp = $p; $p += $size + $octetlen; return mb_convert_encoding(substr($data,$pp+$size,$octetlen),"UTF-8","UTF-16LE"); } protected function PackString($data) { $data = iconv("UTF-8", "UTF-16LE", $data); $LnData = strlen($data); if ($LnData <= 128) { $ln = pack("C*", $LnData); return $ln.$data; } else { $ln = pack("n*", $LnData+32768); return $ln.$data; } } protected function length($data) { $PackLn = strlen($data); if($PackLn < 128) { $PackLn = pack("C*", $PackLn); return $PackLn; } else { $PackLn = pack("n*", $PackLn + 32768); return $PackLn; } } protected function getChatFile($count) { exec("tail -n ".$count." ".self::CHAT_FILE."", $array); for($i=0;$i<count($array);$i++) { echo $array[$i]."\n"; } } protected function getCountString() { $file = self::CHAT_FILE; $e = explode(" ", trim(exec("wc -l $file"))); echo $e[0]; } protected function getNick($id) { $data = pack("N*",-1, $id); $redy = $this->cuint(8003).$this->cuint(strlen($data)).$data; $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_connect($sock,"localhost",29400); socket_set_block($sock); socket_send($sock, $redy, 8192, 0); socket_recv($sock, $rb, 8192, 0); socket_set_nonblock($sock); socket_close($sock); echo $this->UnPackString($rb, 17); } protected function getNameClan($id) { $pack = strrev(pack("S", 32768)).strrev(pack("S", 1)).pack("N", $id); $data = $this->cuint(4608).$this->length($pack).$pack; $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_connect($sock, "localhost", 29400); socket_set_block($sock); socket_send($sock, $data, 8192, 0); socket_recv($sock, $buf, 8192, 0); socket_set_nonblock($sock); socket_close($sock); if (hexdec(bin2hex(substr($buf,2,1))) >= 128) { $name = $this->UnPackString($buf, 16); } else { $name = $this->UnPackString($buf, 15); } echo $name; } protected function setBan($type, $id, $sec, $reason) { if($type == 101) { $pack = pack("N", 1024).pack("N", 1).pack("N", $id).pack("N", $sec).$this->PackString($reason); $data = $this->cuint(362).$this->length($pack).$pack; } elseif($type == 100) { $pack = pack("N", 1024).pack("N", 830).pack("N", $id).pack("N", $sec).$this->PackString($reason); $data = $this->cuint(360).$this->length($pack).$pack; } $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_connect($sock, "localhost", 29100); socket_set_block($sock); socket_send($sock, $data, 8192, 0); socket_recv($sock, $buf, 8192, 0); socket_set_nonblock($sock); socket_close($sock); } protected function sendSystemMessage($message) { $message = iconv("UTF-8", "UTF-16LE", $message); $Chanel = pack("C*", 9); $Id = pack("N*", 0); $Emotion = pack("C*", 0); $MessageLengh = strlen($message); if ($MessageLengh < 128) { $MessageLengh = pack("C*", $MessageLengh); } else { $MessageLengh = pack("n*", $MessageLengh + 32768); } $Packet = $Chanel . $Emotion . $Id . $MessageLengh . $message . "\x00\x00"; $PacketLen = pack("C*", strlen($Packet)); $type = pack("C", 120); $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); $sock2 = socket_connect($sock, "localhost", "29300"); socket_set_block($sock); $data = $type . $PacketLen . $Packet; $sbytes = socket_send($sock, $data, 8192, 0); $rbytes = socket_recv($sock, $buf, 8192, 0); socket_set_nonblock($sock); socket_close($sock); } public function __destruct() { } } $chat = new Chat($_GET["action"]); ?> На 1.2.6, видимо, другие пакеты. Если необходимо, сделаю поддержку.
    作者: autosnikers, 2013-09-06 所属版块: PW Web