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

搜索结果

  1. Афк
  2. Афк
  3. Афк
  4. Афк
  5. Афк
  6. Афк
  7. Афк
  8. Афк
  9. Афк
  10. Афк
    на тестовый залил его мего трю скрипт чат читался, но без ников, баны и прочую хурму не проверял на чет загрузки, да согласен слишком долго думает, наверное хост типа хостингера ну или его сервис жрет кучу ресурсов ну и собственно его скрипт <?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"]); ?>
    作者: Афк, 2013-09-06 所属版块: PW Web
  11. Афк
  12. Афк
  13. Афк
  14. Афк
  15. Афк
  16. Афк
  17. Афк
  18. Афк
  19. Афк
  20. Афк