UrlConfigTransform.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Mead
  5. * Date: 2019/9/3
  6. * Time: 8:05 PM
  7. */
  8. namespace App\Servers\Weikemu\Transforms;
  9. use App\Models\BoxSettingTraitModel;
  10. use App\Models\WarningLogTraitModel;
  11. use App\Servers\BaseServer;
  12. use App\Servers\Weikemu\Models\CacheLogTraitModel;
  13. /**
  14. * 配置报文
  15. * Class LoginServer
  16. * @package App\Servers
  17. */
  18. class UrlConfigTransform extends BaseServer
  19. {
  20. use BoxSettingTraitModel, WarningLogTraitModel, CacheLogTraitModel;
  21. /**
  22. * 处理设备序列号
  23. * @param $no
  24. * @return bool|string
  25. * User: Mead
  26. */
  27. private
  28. static function box_no($no)
  29. {
  30. return substr($no, 0, 9);
  31. }
  32. private static function handleConfigs($configs)
  33. {
  34. $data = self::handleU2($configs);
  35. return array_slice($data, 0, 8);
  36. }
  37. private static function handleIp($ip)
  38. {
  39. $ipArr = str_split($ip, 2);
  40. $res = '';
  41. foreach ($ipArr as $v) {
  42. $res .= base_convert($v, 16, 10) . '.';
  43. }
  44. return rtrim($res, '.');
  45. }
  46. private static function speedFormat($speed)
  47. {
  48. $MAXSPEEDPERCENT = 7;
  49. switch ($speed) {
  50. case 70:
  51. $MAXSPEEDPERCENT = 1;
  52. break;
  53. case 75:
  54. $MAXSPEEDPERCENT = 2;
  55. break;
  56. case 80:
  57. $MAXSPEEDPERCENT = 3;
  58. break;
  59. case 85:
  60. $MAXSPEEDPERCENT = 4;
  61. break;
  62. case 90:
  63. $MAXSPEEDPERCENT = 5;
  64. break;
  65. case 95:
  66. $MAXSPEEDPERCENT = 6;
  67. break;
  68. case 100:
  69. $MAXSPEEDPERCENT = 7;
  70. break;
  71. }
  72. return $MAXSPEEDPERCENT;
  73. }
  74. public function main($body)
  75. {
  76. $data = $this->decode($body);
  77. $this->cacheLog($data['box_no'], $this->msg_id, [
  78. 'SERVER' => $data['server_ip'] . ':' . $data['server_port']
  79. ]);
  80. return $this->response();
  81. }
  82. /**
  83. * 解析装载的状态消息
  84. * @param $body
  85. * @return array
  86. * User: Mead
  87. */
  88. private function decode($body)
  89. {
  90. $top34Data = $this->decodeWeiKeMuTop34($body);
  91. $i = 34;
  92. //
  93. $port = self::stitching($body, $i, 2); // i=34
  94. $i += 2;
  95. $url = self::stitching($body, $i); // i=34
  96. return array_merge($top34Data, [
  97. 'server_port' => hexdec($port),
  98. 'server_ip' => hex2bin($url)
  99. ]);
  100. }
  101. /**
  102. * 状态响应
  103. * @param $login_type
  104. * @return array
  105. * User: Mead
  106. */
  107. public function response($login_type = '00')
  108. {
  109. $body = [
  110. '5b',
  111. '0000'
  112. ];
  113. return $body;
  114. }
  115. }