Commit 4e3f2365fac2d86fd91d0a049934fce7dccf2763
1 parent
200040c1
Exists in
master
common
1. F 调整IP地址换城市的key domain 1. F 授权设备到空序列号的匹配方法改为随机产生,不能按顺序获取一个空绑定的设备记录
Showing
4 changed files
with
209 additions
and
37 deletions
Show diff stats
common/helpers/Utils.php
... | ... | @@ -8,7 +8,7 @@ use Faker\Provider\Uuid; |
8 | 8 | class Utils |
9 | 9 | { |
10 | 10 | private static $vKey = 'thisisakey0olk2i8suwjshwks'; |
11 | - private static $GDKey = '51125f9275f98d30e78f0d4a11251983'; // 高德IP地址获取归属地 KEY 日配额100000次 | |
11 | + private static $GDKey = 'a09624f98c82f573140813d7fa25b805'; // 高德IP地址获取归属地 KEY 日配额100000次 | |
12 | 12 | |
13 | 13 | public static function getVKey() |
14 | 14 | { | ... | ... |
console/controllers/TestController.php
... | ... | @@ -7,6 +7,7 @@ namespace console\controllers; |
7 | 7 | * Time: 11:32 AM |
8 | 8 | */ |
9 | 9 | |
10 | +use domain\device\DeviceRepository; | |
10 | 11 | use Yii; |
11 | 12 | use common\exts\Aes; |
12 | 13 | use common\exts\RSACrypt; |
... | ... | @@ -25,6 +26,24 @@ class TestController extends Controller |
25 | 26 | { |
26 | 27 | $no = hexdec('000A') + 1; |
27 | 28 | echo sprintf('%04X', $no); |
29 | + echo "=================\r\n"; | |
30 | + $v = "0:998654321:A0"; | |
31 | + //echo preg_match('/^[0-9a-fA-F:]{12,18}$/', $v); | |
32 | + | |
33 | + //echo Utils::macGenerate(); | |
34 | + | |
35 | + //echo "\r\n"; | |
36 | + //echo Utils::coverToMacAddress("aaaddddd"); | |
37 | + $regex = '/^([0-9a-fA-F]{2})(([:|-]{0,1}[0-9a-fA-F]{2}){5})$/'; | |
38 | + if (preg_match($regex, $v)) { | |
39 | + $v = str_replace('-', '',$v); | |
40 | + $v = str_replace(':','', $v); | |
41 | + echo Utils::coverToMacAddress($v); | |
42 | + } | |
43 | + | |
44 | + | |
45 | + | |
46 | + echo "\r\n"; | |
28 | 47 | } |
29 | 48 | |
30 | 49 | public function actionCheckSign() |
... | ... | @@ -63,15 +82,37 @@ class TestController extends Controller |
63 | 82 | public function actionDeviceSt() |
64 | 83 | { |
65 | 84 | $url = 'http://kingb:8012/app-api/web/reportDeviceVersion'; |
85 | + //$url = 'http://47.107.95.101/app-api/web/reportDeviceVersion'; | |
66 | 86 | $params = [ |
67 | - 'barcode' => '0001000100010001', | |
68 | - 'device_id' => 'DEVICE003', | |
69 | - 'software_version' => 'V1.0.1', | |
70 | - 'hardware_version' => 'V1.0.2', | |
71 | - 'timestamp' => 1500000000 | |
87 | + 'barcode' => '0002000100010001', | |
88 | + 'device_id' => 'DEVICE000000002', | |
89 | + 'software_version' => 'V1.0.20191001', | |
90 | + 'hardware_version' => '', | |
91 | + 'timestamp' => time() | |
72 | 92 | ]; |
93 | + $params = json_encode($params); | |
94 | + | |
95 | + $data = array( | |
96 | + '119.120'.'.'.rand(1,255).'.'.rand(1,255), | |
97 | + '124.174'.'.'.rand(1,255).'.'.rand(1,255), | |
98 | + '116.249'.'.'.rand(1,255).'.'.rand(1,255), | |
99 | + '118.125'.'.'.rand(1,255).'.'.rand(1,255), | |
100 | + '42.175'.'.'.rand(1,255).'.'.rand(1,255), | |
101 | + '124.162'.'.'.rand(1,255).'.'.rand(1,255), | |
102 | + '211.167'.'.'.rand(1,255).'.'.rand(1,255), | |
103 | + '58.206'.'.'.rand(1,255).'.'.rand(1,255), | |
104 | + '117.24'.'.'.rand(1,255).'.'.rand(1,255), | |
105 | + '203.93'.'.'.rand(1,255).'.'.rand(1,255), | |
106 | + ); | |
107 | + | |
108 | + $ip = $data[array_rand($data)]; | |
109 | + $header = [ | |
110 | + 'CLIENT-IP:'.$ip, | |
111 | + 'X-FORWARDED-FOR:'.$ip, | |
112 | + ]; | |
113 | + $params = '{"barcode":"0002000100010001","device_id":"DGDEVBICEID00BB8", "software_version":"V1.0.1", "hardware_version":"", "timestamp":'.time().'}'; | |
114 | + $postResult = Http::POST($url, $params,true, $header); | |
73 | 115 | |
74 | - $postResult = Http::POST($url, json_encode($params)); | |
75 | 116 | echo $postResult; |
76 | 117 | } |
77 | 118 | |
... | ... | @@ -80,13 +121,13 @@ class TestController extends Controller |
80 | 121 | //actionCheckAppVersion |
81 | 122 | $url = 'http://47.107.95.101/app-api/web/checkAppVersion'; |
82 | 123 | $params = [ |
83 | - 'barcode' => '0001000100010001', | |
84 | - 'device_id' => 'DEVICE000001', | |
85 | - 'current_version' => 'V1.0.1', | |
86 | - 'package_name' => 'V1.0.2安装包', | |
124 | + 'barcode' => '0004000100010001', | |
125 | + 'device_id' => 'V1.00.20190708', | |
126 | + 'current_version' => '1', | |
127 | + 'package_name' => 'com.kingboard.settings', | |
87 | 128 | ]; |
88 | - //$params = json_decode($params); | |
89 | - $params = '{"barcode":"0001000100010001","device_id":"DGDEVBICEID00001","package_name":"com.kingboard.settings","current_version":"1"}'; | |
129 | + $params = json_encode($params); | |
130 | + //$params = '{"barcode":"0004000100010001","device_id":"DGDEVBICEID00001","package_name":"com.kingboard.settings","current_version":"V1.00.20190708"}'; | |
90 | 131 | |
91 | 132 | $postResult = Http::POST($url, $params); |
92 | 133 | echo $postResult; |
... | ... | @@ -100,11 +141,11 @@ class TestController extends Controller |
100 | 141 | $params = [ |
101 | 142 | 'barcode' => '0001000100010001', |
102 | 143 | 'device_id' => 'DGDEVBICEID00001', |
103 | - 'software_version' => 'V1.0.1', | |
104 | - 'hardware_version' => 'V1.0.1', | |
144 | + 'software_version' => 'V1.00.1A.20191002', | |
145 | + 'hardware_version' => '', | |
105 | 146 | ]; |
106 | 147 | $params = json_encode($params); |
107 | - $params = '{"barcode":"0001000100010001","device_id":"DEVICEID00001","software_version":"V1.00.1A.20191002","hardware_version":""}'; | |
148 | + //$params = '{"barcode":"0001000100010001","device_id":"DEVICEID00001","software_version":"V1.00.1A.20191002","hardware_version":""}'; | |
108 | 149 | $postResult = Http::POST($url, $params); |
109 | 150 | echo $postResult; |
110 | 151 | } |
... | ... | @@ -115,16 +156,19 @@ class TestController extends Controller |
115 | 156 | { |
116 | 157 | //actionCheckAppVersion |
117 | 158 | $url = 'http://47.107.95.101/app-api/web/reportOtaUpgradeEvent'; |
118 | - //$url = 'http://kingb:8012/app-api/web/reportOtaUpgradeEvent'; | |
159 | + $url = 'http://kingb:8012/app-api/web/reportOtaUpgradeEvent'; | |
119 | 160 | |
120 | 161 | $params = [ |
121 | - 'barcode' => '0001000100010001', | |
122 | - 'device_id' => 'DGDEVBICEID00001', | |
123 | - 'software_version' => 'V1.0.1', | |
124 | - 'hardware_version' => 'V1.0.1', | |
162 | + "barcode" => '0001000100010001', | |
163 | + "device_id" => 'DGDEVBICEID00002', | |
164 | + "current_version" => 'V1.00.1A.20191022', | |
165 | + "target_version" => 'V1.00.1A.20191022', | |
166 | + "status" => 3, | |
167 | + "error_code" => '', | |
168 | + "timestamp" => time() | |
125 | 169 | ]; |
126 | 170 | $params = json_encode($params); |
127 | - $params = '{"barcode":"0001000100010001","device_id":"DEVICEID00001","current_version":"V1.00.1A.20191022", "target_version":"V1.00.1A.20191022","status":5,"timestamp":"1572759793"}'; | |
171 | + //$params = '{"barcode":"0001000100010001","device_id":"DGDEVBICEID00002", "current_version":"V1.00.1A.20191022", "target_version":"V1.00.1A.20191023","status":5,"error_code":"", "timestamp":"1572759793"}'; | |
128 | 172 | $postResult = Http::POST($url, $params); |
129 | 173 | echo $postResult; |
130 | 174 | } |
... | ... | @@ -136,14 +180,14 @@ class TestController extends Controller |
136 | 180 | $url = 'http://kingb:8012/app-api/web/reportAppUpgradeEvent'; |
137 | 181 | |
138 | 182 | $params = [ |
139 | - 'barcode' => '0001000100010001', | |
140 | - 'device_id' => 'DGDEVBICEID00001', | |
183 | + 'barcode' => '0001000100010002', | |
184 | + 'device_id' => 'DGDEVBICEID00002', | |
141 | 185 | 'current_version' => 'V1.0.1', |
142 | 186 | 'target_version' => 'V1.0.1', |
143 | 187 | 'package_name' => 'com.app.king.dd', |
144 | - "status" => 0, | |
188 | + "status" => 5, | |
145 | 189 | "error_code" => '', |
146 | - "timestamp" => 1572767677 | |
190 | + "timestamp" => time() | |
147 | 191 | |
148 | 192 | ]; |
149 | 193 | $params = json_encode($params); |
... | ... | @@ -176,20 +220,19 @@ class TestController extends Controller |
176 | 220 | } |
177 | 221 | |
178 | 222 | /** |
179 | - * | |
223 | + * 授权设备,加密过 | |
180 | 224 | */ |
181 | 225 | public function actionAuthDevice() |
182 | 226 | { |
183 | 227 | $url = 'http://kingb:8012/app-api/web/authDevice'; |
184 | 228 | $url = 'http://47.107.95.101/app-api/web/authDevice'; |
185 | - $manufactureNo = '0001'; | |
186 | - $device_id = 'DEVICE00000B'; | |
229 | + $manufactureNo = '000E'; | |
230 | + $device_id = 'HDEVICEG0000001'; | |
187 | 231 | $projectNo = '0001'; |
188 | - $modelNo = '0001'; | |
189 | - $productionNo = '0001'; | |
232 | + $modelNo = '000B'; | |
233 | + $productionNo = '0010'; | |
190 | 234 | $timestamp = time(); |
191 | 235 | |
192 | - | |
193 | 236 | $randKey = Utils::rand(16); |
194 | 237 | $salt = "13456"; |
195 | 238 | $sign = md5($manufactureNo. $projectNo. $modelNo . $productionNo . $timestamp .$device_id. $salt); |
... | ... | @@ -213,6 +256,7 @@ class TestController extends Controller |
213 | 256 | 'content' => $aes->encrypt($deviceParams) |
214 | 257 | ]; |
215 | 258 | $params = json_encode($params); |
259 | + | |
216 | 260 | $postResult = Http::POST($url, $params); |
217 | 261 | |
218 | 262 | $postResult = json_decode($postResult, true); |
... | ... | @@ -222,12 +266,40 @@ class TestController extends Controller |
222 | 266 | } |
223 | 267 | |
224 | 268 | |
269 | + public function actionAuthDeviceN() | |
270 | + { | |
271 | + $url = 'http://kingb:8012/app-api/web/authDeviceN'; | |
272 | + //$url = 'http://47.107.95.101/app-api/web/authDeviceN'; | |
273 | + $manufactureNo = '0001'; | |
274 | + $device_id = 'BDEVICEG0000006'; | |
275 | + $projectNo = '0001'; | |
276 | + $modelNo = '0001'; | |
277 | + $productionNo = '0002'; | |
278 | + $timestamp = time(); | |
279 | + | |
280 | + $salt = "13456"; | |
281 | + $sign = md5($manufactureNo. $projectNo. $modelNo . $productionNo . $timestamp .$device_id. $salt); | |
282 | + $deviceParams = [ | |
283 | + 'manufacture' => $manufactureNo, | |
284 | + 'device_id' => $device_id, | |
285 | + 'project' => $projectNo, | |
286 | + 'model' => $modelNo, | |
287 | + 'production' => $productionNo, | |
288 | + 'timestamp' => $timestamp, | |
289 | + 'sign' => $sign, | |
290 | + ]; | |
291 | + $deviceParams = json_encode($deviceParams); | |
292 | + $postResult = Http::POST($url, $deviceParams); | |
293 | + | |
294 | + echo $postResult; | |
295 | + } | |
296 | + | |
225 | 297 | public function actionA() |
226 | 298 | { |
227 | 299 | $str = "87654321"; |
228 | 300 | $rsaKeys = Yii::$app->params['AUTH_DEVICE_RSA_PKCS_1']; |
229 | 301 | $rsa = new RSACrypt($rsaKeys['PRIVATE'], $rsaKeys['PUBLIC']); |
230 | - $deStr = "SRAeq\/pjyDA+0TtCTo06cbskERUUXvmGh3FdocS9AFmMsYDN\/TACQeU9pZhB5zKYHsJSTo\/JawuN\nG0ZBFd1B6TvJ\/1PkX30cvL9i03Ujo1JVe1njhMrig3mvNd7RDAylNzaFAAHU\/Wb\/94kf7gRGNyTj\ngj78Oe0bLdwasz4vBFE=\n"; | |
302 | + $deStr = "Eu2nx0APQBcicPXuw1r+4vKJCPJ5ln5uzepYXSJ1mfSaymjgdGdXT9s5SxNHXe4cK8ZRO9wK7RxO\/MjSJwOoTDvy7xez+rC96yBDJV3vZ5bv85OtKc8k6R60mfc\/Fasw+dTI1FBKs9BNY2fs6w+67HJqeUD1JenuZSyX4ryWM44="; | |
231 | 303 | |
232 | 304 | //echo $deStr."\r\n"; |
233 | 305 | $randKey = $rsa->decrypt($deStr); |
... | ... | @@ -235,9 +307,95 @@ echo $randKey."\r\n"; |
235 | 307 | $randKey = substr(md5($randKey.'12356'), 8, 16)."\r\n"; |
236 | 308 | echo $randKey."\r\n"; |
237 | 309 | $aes = new Aes($randKey); |
238 | - echo $aes->decrypt("nZ8U4BlG0vxckrPM0lquvGDZ9Yuv32+MbYKZG8cqfMGJcltEEquc9v88bzpzm2dpkX5nR4ugLxfw\nc65yqYouozxyX+UdXPNHqaOYIQK\/MVWi+GkYsEafezJhozyGrLWAo7hHIdYcV\/fnm7xyEAaN\/91Q\nWdrhYmGvMf1IusGPBDaRnZtJ+mR1MhElZP73mQppFlusI8EJVFcEx\/z\/SkE9ywhPqAsK721xV+Fe\ncd7sNKs=\n"); | |
310 | + echo $aes->decrypt("1nnp92dtMfxUSvmZHQPeWp4smz0DzVzp4ZDJHdR1R1Dt8KvPYZ2WC6TEc+ACbwOxCtop6gBIn1DNNNL5cVw3nU8kl4yRXIsMojciK064rekOCVmRln3Z2NHn6SThmcLcwthxwHt0rlXVdeWecvhpXve1QPk0eD1qEfGsP2B3D4X9iUlZ6JZndM3og7XpukrawtPWazIVaBqlfa4ugfD86mAHlD+RYl+ZW2QpDGVGPXk="); | |
311 | + | |
312 | + } | |
313 | + | |
314 | + /** | |
315 | + * 批量产生授权数据 | |
316 | + */ | |
317 | + public function actionPGTest() | |
318 | + { | |
319 | + $url = 'http://47.107.95.101/app-api/web/authDevice'; | |
320 | + $manufactureNo = '000E'; | |
321 | + | |
322 | + $projectNo = '0001'; | |
323 | + $modelNo = '000B'; | |
324 | + $productionNo = '0010'; | |
239 | 325 | |
326 | + $salt = "13456"; | |
327 | + $rsaKeys = Yii::$app->params['AUTH_DEVICE_RSA_PKCS_1']; | |
328 | + $rsa = new RSACrypt($rsaKeys['PRIVATE'], $rsaKeys['PUBLIC']); | |
329 | + for($i = 1; $i < 5000; $i++) { | |
330 | + $device_id = 'HDEVICEG000000'.sprintf('%04X',$i); | |
331 | + $timestamp = time(); | |
332 | + $randKey = Utils::rand(16); | |
333 | + | |
334 | + $sign = md5($manufactureNo. $projectNo. $modelNo . $productionNo . $timestamp .$device_id. $salt); | |
335 | + $deviceParams = [ | |
336 | + 'manufacture' => $manufactureNo, | |
337 | + 'device_id' => $device_id, | |
338 | + 'project' => $projectNo, | |
339 | + 'model' => $modelNo, | |
340 | + 'production' => $productionNo, | |
341 | + 'timestamp' => $timestamp, | |
342 | + 'sign' => $sign, | |
343 | + ]; | |
344 | + $deviceParams = json_encode($deviceParams); | |
345 | + $randomKey = $rsa->encrypt($randKey); | |
346 | + $aes = new Aes(substr(md5($randKey.'12356'), 8, 16)); | |
347 | + $params = [ | |
348 | + 'randomKey' => $randomKey, | |
349 | + 'content' => $aes->encrypt($deviceParams) | |
350 | + ]; | |
351 | + $params = json_encode($params); | |
352 | + //echo $url." POST ".$params."\r\n"; | |
353 | + $postResult = Http::POST($url, $params); | |
354 | + | |
355 | + $postResult = json_decode($postResult, true); | |
356 | + $decodeJson = $aes->decrypt($postResult['content']); | |
357 | + echo $decodeJson."\r\n"; | |
358 | + } | |
240 | 359 | } |
241 | 360 | |
361 | + /** | |
362 | + * 批量产生不加密的设备授权数据 | |
363 | + */ | |
364 | + public function actionPgnTest() | |
365 | + { | |
366 | + $url = 'http://47.107.95.101/app-api/web/authDeviceN'; | |
367 | + $manufactureNo = '000E'; | |
368 | + $projectNo = '0001'; | |
369 | + $modelNo = '000B'; | |
370 | + $productionNo = '0010'; | |
371 | + for($i = 1; $i < 3; $i++) { | |
372 | + $device_id = 'ADEVICEG000000'.sprintf('%04X',$i); | |
373 | + $timestamp = time(); | |
374 | + $salt = "13456"; | |
375 | + $sign = md5($manufactureNo. $projectNo. $modelNo . $productionNo . $timestamp .$device_id. $salt); | |
376 | + $deviceParams = [ | |
377 | + 'manufacture' => $manufactureNo, | |
378 | + 'device_id' => $device_id, | |
379 | + 'project' => $projectNo, | |
380 | + 'model' => $modelNo, | |
381 | + 'production' => $productionNo, | |
382 | + 'timestamp' => $timestamp, | |
383 | + 'sign' => $sign, | |
384 | + ]; | |
385 | + $deviceParams = json_encode($deviceParams); | |
386 | + echo $url." POST ". $deviceParams."\r\n"; | |
387 | + } | |
388 | + | |
389 | + } | |
390 | + public function actionB() | |
391 | + { | |
392 | + | |
393 | + $deviceModel = DeviceRepository::findBatchRandOne(2); | |
394 | + if ($deviceModel) { | |
395 | + echo $deviceModel->id; | |
396 | + $deviceModel->device_id = '000000000012'; | |
397 | + $deviceModel->save(); | |
398 | + } | |
399 | + } | |
242 | 400 | } |
243 | 401 | ... | ... |
domain/device/Device.php
... | ... | @@ -217,8 +217,8 @@ class Device |
217 | 217 | $e->mac = ''; |
218 | 218 | $e->status = 0; |
219 | 219 | $tt = time(); |
220 | - // 找到未空白未绑定的设备序列号 | |
221 | - $newDeviceModel = DeviceRepository::findOne(['device_id' => null,'batch_id' => $batchId, 'is_delete' => 0, 'status' => DeviceStatus::NO_AUTH]); | |
220 | + // 找到未空白未绑定的设备序列号, 必须随机找出对应的序列号,否则多个并发的时候一直都出错 | |
221 | + $newDeviceModel = DeviceRepository::findBatchRandOne($batchId); | |
222 | 222 | |
223 | 223 | if (empty($newDeviceModel)) { |
224 | 224 | $e->status = 8; | ... | ... |
domain/device/DeviceRepository.php
... | ... | @@ -9,7 +9,7 @@ use domain\device\models\DeviceStats; |
9 | 9 | |
10 | 10 | class DeviceRepository |
11 | 11 | { |
12 | - const DEBUG = true; | |
12 | + const DEBUG = false; | |
13 | 13 | private static function myLog($str) |
14 | 14 | { |
15 | 15 | if (false == self::DEBUG) { |
... | ... | @@ -153,4 +153,18 @@ class DeviceRepository |
153 | 153 | |
154 | 154 | return false; |
155 | 155 | } |
156 | + | |
157 | + /** | |
158 | + * @param $batchId | |
159 | + * @return array|null|\yii\db\ActiveRecord | |
160 | + */ | |
161 | + static function findBatchRandOne($batchId) | |
162 | + { | |
163 | + $deviceFind = DeviceModel::find(); | |
164 | + $deviceFind->where(['device_id' => null,'batch_id' => $batchId, 'is_delete' => 0, 'status' => DeviceStatus::NO_AUTH]); | |
165 | + $deviceFind->orderBy("rand()"); | |
166 | + $nullDevice = $deviceFind->one(); | |
167 | + | |
168 | + return $nullDevice; | |
169 | + } | |
156 | 170 | } |
157 | 171 | \ No newline at end of file | ... | ... |