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