PageRenderTime 52ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/test/mreg.php

https://github.com/blekkzor/pinetd2
PHP | 66 lines | 48 code | 14 blank | 4 comment | 14 complexity | b9a356c15d677814c3928e1bef26cf8c MD5 | raw file
Possible License(s): GPL-2.0
  1. <?php
  2. class MREG_client {
  3. private $sock;
  4. private $flags = 0x40000008; // default flags for outgoing: gzip+serialize()
  5. public function __construct($host, $login, $key, $port = 10008) {
  6. $this->sock = fsockopen($host, $port);
  7. $random = $this->readPacket();
  8. $sign = sha1($random.$key, true);
  9. if (!$this->_send(array('login' => $login, 'sign' => $sign)))
  10. throw new Exception('Login failed!');
  11. }
  12. public function query($packet) {
  13. return $this->_send($packet);
  14. }
  15. protected function _send($packet, $flags = NULL) {
  16. if (is_null($flags)) $flags = $this->flags;
  17. $packet = $this->encode($packet, $flags);
  18. fwrite($this->sock, pack('NN', strlen($packet)+8, $flags).$packet);
  19. return $this->readPacket();
  20. }
  21. protected function readPacket() {
  22. list(,$len,$flags) = unpack('N2', fread($this->sock, 8));
  23. $len -= 8;
  24. $data = fread($this->sock, $len);
  25. return $this->decode($data, $flags);
  26. }
  27. protected function decode($packet, $flags) {
  28. // handle decompression
  29. if ($flags & 0x80000000) $packet = bzdecompress($packet);
  30. if ($flags & 0x40000000) $packet = gzuncompress($packet);
  31. if ($flags & 0x20000000) $packet = gzinflate($packet);
  32. // handle deserialization
  33. if ($flags & 0x00000008) $packet = unserialize($packet);
  34. if ($flags & 0x00000004) $packet = json_decode($packet);
  35. if ($flags & 0x00000002) $packet = wddx_deserialize($packet);
  36. return $packet;
  37. }
  38. protected function encode($res, $flags) {
  39. // handle serialization
  40. if ($flags & 0x00000002) $res = wddx_serialize_value($res);
  41. if ($flags & 0x00000004) $res = json_encode($res);
  42. if ($flags & 0x00000008) $res = serialize($res);
  43. // handle compression
  44. if ($flags & 0x20000000) $res = gzdeflate($res);
  45. if ($flags & 0x40000000) $res = gzcompress($res);
  46. if ($flags & 0x80000000) $res = bzcompress($res);
  47. return $res;
  48. }
  49. }
  50. $mreg = new MREG_client('localhost','','');
  51. var_dump($mreg->query(array('operation' => 'describe')));
  52. var_dump($mreg->query(array('command' => 'CheckDomains', 'domain0' => 'test.com', 'domain1' => 'e9r498ze49f8zefze.com')));