|
@@ -1,12 +1,12 @@
|
|
|
import hashlib
|
|
|
+import logging
|
|
|
import os
|
|
|
-import simplejson as json
|
|
|
import time
|
|
|
import traceback
|
|
|
-
|
|
|
from wsgiref.util import FileWrapper
|
|
|
from zlib import crc32
|
|
|
|
|
|
+import simplejson as json
|
|
|
from django.http import HttpResponse
|
|
|
from django.utils.decorators import method_decorator
|
|
|
from django.views.decorators.csrf import csrf_exempt
|
|
@@ -14,7 +14,6 @@ from django.views.generic import TemplateView
|
|
|
|
|
|
from Ansjer.config import BASE_DIR
|
|
|
from Ansjer.config import SERVER_DOMAIN
|
|
|
-from Ansjer.config import SERVER_TYPE
|
|
|
from Model.models import Device_User, EquipmentVersionLimitModel, CountryIPModel, DeviceOTAUpgradeRecord
|
|
|
from Model.models import Equipment_Version
|
|
|
from Object.RedisObject import RedisObject
|
|
@@ -23,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):
|
|
@@ -494,7 +494,7 @@ def getNewVerInterface(request):
|
|
|
else:
|
|
|
equipmentValid = Equipment_Version.objects.filter(code=code, status=1, lang='en').order_by(
|
|
|
'-data_joined')
|
|
|
-
|
|
|
+ logger = logging.getLogger('info')
|
|
|
if equipmentValid.exists():
|
|
|
equipment = equipmentValid[0]
|
|
|
redisObject = RedisObject()
|
|
@@ -533,14 +533,32 @@ def getNewVerInterface(request):
|
|
|
ver = equipment.softwareVersion
|
|
|
max_ver = equipment.max_ver
|
|
|
print(now_ver <= max_ver)
|
|
|
+
|
|
|
+ now_stamp = int(time.time())
|
|
|
if now_ver <= max_ver:
|
|
|
# 创建url的token
|
|
|
+ param_url = "ansjer/" + CommonService.RandomStr(6) + "/" + file_path
|
|
|
+ data = {'Url': param_url, '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
|
|
|
+
|
|
|
+ str_uuid = str(tko.userID)
|
|
|
+ if serial_number and serial_number != 'null':
|
|
|
+ str_uuid += serial_number
|
|
|
+ elif uid and uid != 'null':
|
|
|
+ str_uuid += uid
|
|
|
+ str_uuid += now_ver
|
|
|
+ device_info_key = 'ASJ:SERVER:VERSION:{}'.format(str_uuid)
|
|
|
+ logger.info('缓存key={}'.format(device_info_key))
|
|
|
+ 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': str_uuid})
|
|
|
+
|
|
|
url = SERVER_DOMAIN + 'dlotapack/' + file_path
|
|
|
- print(url)
|
|
|
+ logger.info('<<<<<<<URL={}'.format(url))
|
|
|
# if SERVER_TYPE == 'Ansjer.formal_settings':
|
|
|
# url = SERVER_DOMAIN + 'dlotapack/' + file_path
|
|
|
# else:
|
|
@@ -549,11 +567,13 @@ def getNewVerInterface(request):
|
|
|
# url = 'http://www.zositech.xyz/dlotapack/' + file_path
|
|
|
# else:
|
|
|
# url = SERVER_DOMAIN + 'dlotapack/' + file_path
|
|
|
- return response.json(0, {
|
|
|
+ result = {
|
|
|
'ver': ver,
|
|
|
'url': url,
|
|
|
"Description": equipment.Description,
|
|
|
- })
|
|
|
+ }
|
|
|
+ logger.info('<<<<<响应结果{}'.format(result))
|
|
|
+ return response.json(0, result)
|
|
|
else:
|
|
|
return response.json(902)
|
|
|
else:
|
|
@@ -666,14 +686,32 @@ def downloadOTAInterfaceV2(request, fullPath, *callback_args, **callback_kwargs)
|
|
|
# 解密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
|
|
|
+ str_uuid = url_token.uid
|
|
|
+ logger = logging.getLogger('info')
|
|
|
+ logger.info('<<<<<进入OTA下载')
|
|
|
+ redis_object = RedisObject()
|
|
|
+ logger.info(str_uuid)
|
|
|
+ device_key = 'ASJ:SERVER:VERSION:{}'.format(str_uuid)
|
|
|
+ device_value = redis_object.get_data(device_key)
|
|
|
+ logger.info(device_value)
|
|
|
+ if not device_value:
|
|
|
+ return res.json(907)
|
|
|
+ device_dist = json.loads(device_value)
|
|
|
+ logger.info('<<<<<解析={}'.format(device_dist))
|
|
|
+ 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)
|
|
|
|
|
@@ -692,7 +730,7 @@ def downloadOTAInterfaceV2(request, fullPath, *callback_args, **callback_kwargs)
|
|
|
response['Content-CRC32'] = getMD5orSHA265(fullPath, 'CRC32')
|
|
|
response['Content-Error'] = res.formal(0)
|
|
|
|
|
|
- #设备下载OTA包,记录数据库
|
|
|
+ # 设备下载OTA包,记录数据库
|
|
|
# 记录设备OTA升级
|
|
|
createdTime = int(time.time())
|
|
|
DeviceOTAUpgradeRecord.objects.create(
|
|
@@ -704,6 +742,8 @@ def downloadOTAInterfaceV2(request, fullPath, *callback_args, **callback_kwargs)
|
|
|
uid=uid,
|
|
|
mci=mci,
|
|
|
)
|
|
|
+ del_data = redis_object.del_data(device_key)
|
|
|
+ logger.info('删除缓存={}'.format(del_data))
|
|
|
return response
|
|
|
except Exception as e:
|
|
|
return res.json(906, repr(e))
|
|
@@ -782,4 +822,3 @@ def checkMaxVersion(request):
|
|
|
}
|
|
|
|
|
|
return response.json(0, res)
|
|
|
-
|