Эх сурвалжийг харах

修改OTA升级 Token 过长问题

zhangdongming 3 жил өмнө
parent
commit
012f772691
1 өөрчлөгдсөн 36 нэмэгдсэн , 12 устгасан
  1. 36 12
      Controller/OTAEquipment.py

+ 36 - 12
Controller/OTAEquipment.py

@@ -22,6 +22,7 @@ from Object.TokenObject import TokenObject
 from Object.UrlTokenObject import UrlTokenObject
 from Service.CommonService import CommonService
 from Service.ModelService import ModelService
+import uuid
 
 
 def downloadUrl(fileType, fileCode, fileVersion, fileName):
@@ -532,13 +533,22 @@ def getNewVerInterface(request):
         ver = equipment.softwareVersion
         max_ver = equipment.max_ver
         print(now_ver <= max_ver)
+        str_uuid = "".join(str(uuid.uuid4()).split("-")).upper()
+        device_info_key = 'ASJ:SERVER:DEVICE:VERSION:{}'.format(str_uuid)
+        now_stamp = int(time.time())
         if now_ver <= max_ver:
             # 创建url的token
+
+            data = {'Url': "ansjer/" + CommonService.RandomStr(6) + "/" + file_path, 'user_id': tko.userID,
+                    'uid': uid, 'serial_number': serial_number, 'old_version': "V" + now_ver + "." + code,
+                    'new_version': version, 'mci': mci}
+            device_info_value = json.dumps(data)
+            expire = 3600 * 24 * 2 + 600 + now_stamp
+            redisObject.set_data(device_info_key, device_info_value, expire)
+
             url_tko = UrlTokenObject()
-            file_path = url_tko.generate(
-                data={'Url': "ansjer/" + CommonService.RandomStr(6) + "/" + file_path, 'user_id': tko.userID,
-                      'uid': uid, 'serial_number': serial_number, 'old_version': "V" + now_ver + "." + code,
-                      'new_version': version, 'mci': mci})
+            file_path = url_tko.generate(data={'uid': device_info_key})
+
             url = SERVER_DOMAIN + 'dlotapack/' + file_path
             logger.info('<<<<<<<获取ota token={}'.format(file_path))
             logger.info('<<<<<<<URL={}'.format(url))
@@ -668,14 +678,28 @@ def downloadOTAInterfaceV2(request, fullPath, *callback_args, **callback_kwargs)
     # print('fullPath:%s' % fullPath)
     # 解密url的token
     url_token = UrlTokenObject(fullPath)
-
-    fp = url_token.Url
-    serial_number = url_token.serial_number
-    uid = url_token.uid
-    user_id = url_token.user_id
-    mci = url_token.mci
-    old_version = url_token.old_version
-    new_version = url_token.new_version
+    # fp = url_token.Url
+    # serial_number = url_token.serial_number
+    # uid = url_token.uid
+    # user_id = url_token.user_id
+    # mci = url_token.mci
+    # old_version = url_token.old_version
+    # new_version = url_token.new_version
+    device_key = url_token.uid
+
+    redis_object = RedisObject()
+    device_value = redis_object.get_data(device_key)
+    if not device_value:
+        return res.json(907)
+    device_dist = json.loads(device_value)
+
+    fp = device_dist['Url']
+    serial_number = device_dist['serial_number']
+    uid = device_dist['uid']
+    user_id = device_dist['user_id']
+    mci = device_dist['mci']
+    old_version = device_dist['old_version']
+    new_version = device_dist['new_version']
 
     if '' == fp:
         return res.json(907)