|
@@ -1,31 +1,46 @@
|
|
|
from zlib import crc32
|
|
|
+from Ansjer.settings import *
|
|
|
from django.core import serializers
|
|
|
from wsgiref.util import FileWrapper
|
|
|
import traceback, hashlib
|
|
|
-from Ansjer.config import SERVER_DOMAIN
|
|
|
+from Ansjer.settings import SERVER_DOMAIN
|
|
|
from django.views.decorators.csrf import csrf_exempt
|
|
|
from django.views.generic import TemplateView
|
|
|
from django.utils.decorators import method_decorator
|
|
|
from Model.models import Equipment_Version
|
|
|
from Model.models import Device_User
|
|
|
+from Service.TokenManager import JSONTokenManager
|
|
|
from Service.ModelService import ModelService
|
|
|
from Service.CommonService import CommonService
|
|
|
-import time, os,simplejson as json
|
|
|
-from Object.ResponseObject import ResponseObject
|
|
|
-from Object.TokenObject import TokenObject
|
|
|
-from django.http import HttpResponse
|
|
|
-from Ansjer.settings import BASE_DIR
|
|
|
+from Service.ResponseService import *
|
|
|
+import time
|
|
|
+
|
|
|
+def getEquipmentVersion(code):
|
|
|
+ if code == '31162001A':
|
|
|
+ return ResponseFormal(0,{'softwareVersion': '1.4.3'})
|
|
|
+ try:
|
|
|
+ equipmentValid = Equipment_Version.objects.filter(code = code,status=1).order_by('-data_joined')
|
|
|
+ except Exception as e:
|
|
|
+ errorInfo = traceback.format_exc()
|
|
|
+ print('查询数据库错误: %s' % errorInfo)
|
|
|
+ return ResponseFormal(500,{'details':repr(e)})
|
|
|
+ else:
|
|
|
+ if equipmentValid:
|
|
|
+ equipment = equipmentValid[0]
|
|
|
+ return ResponseFormal(0, {'softwareVersion': equipment.softwareVersion})
|
|
|
+ else:
|
|
|
+ return ResponseFormal(900)
|
|
|
|
|
|
|
|
|
-def getUrl(filePath, http_host):
|
|
|
+def getUrl(filePath,http_host):
|
|
|
urls = []
|
|
|
- server_dm = 'http://' + http_host
|
|
|
+ server_dm = 'http://'+http_host
|
|
|
filePaths = filePath.split(',')
|
|
|
if len(filePaths) > 0:
|
|
|
for path in filePaths:
|
|
|
if path.find('static/Upgrade/') != -1:
|
|
|
path = path.replace('static/Upgrade/', '').replace('\\', '/')
|
|
|
- url = SERVER_DOMAIN + '/OTA/downloads/' + path + '?time=' + str(time.time())
|
|
|
+ url = SERVER_DOMAIN + '/OTA/downloads/' + path+'?time='+str(time.time())
|
|
|
urls.append(url)
|
|
|
else:
|
|
|
url = SERVER_DOMAIN + 'OTA/downloads/' + filePath.replace('\\', '/')
|
|
@@ -34,35 +49,33 @@ def getUrl(filePath, http_host):
|
|
|
else:
|
|
|
return ''
|
|
|
|
|
|
-
|
|
|
-def getUpdataFileUrl(code, http_host, response):
|
|
|
+def getUpdataFileUrl(code,http_host):
|
|
|
try:
|
|
|
- equipmentValid = Equipment_Version.objects.filter(code=code, status=1).order_by('-data_joined')
|
|
|
+ equipmentValid = Equipment_Version.objects.filter(code=code,status=1).order_by('-data_joined')
|
|
|
except Exception as e:
|
|
|
errorInfo = traceback.format_exc()
|
|
|
print('查询数据库错误: %s' % errorInfo)
|
|
|
- return response.json(500, {'details': repr(e)})
|
|
|
+ return ResponseFormal(500,{'details':repr(e)})
|
|
|
else:
|
|
|
if equipmentValid:
|
|
|
equipment = equipmentValid[0]
|
|
|
file_path = equipment.filePath
|
|
|
- url = getUrl(file_path, http_host)
|
|
|
- https_url = getOTAHttps(file_path, http_host)
|
|
|
+ url = getUrl(file_path,http_host)
|
|
|
+ https_url = getOTAHttps(file_path,http_host)
|
|
|
if len(url) > 0:
|
|
|
- return response.json(0, {
|
|
|
+ return ResponseFormal(0,{
|
|
|
"urlCount": len(url),
|
|
|
"url": url,
|
|
|
- 'https_url': https_url,
|
|
|
+ 'https_url':https_url,
|
|
|
"fileSize": equipment.fileSize,
|
|
|
"Description": equipment.Description,
|
|
|
})
|
|
|
else:
|
|
|
- return response.json(901)
|
|
|
+ return ResponseFormal(901)
|
|
|
else:
|
|
|
- return response.json(902)
|
|
|
-
|
|
|
+ return ResponseFormal(902)
|
|
|
|
|
|
-def getOTAHttps(filePath, http_host):
|
|
|
+def getOTAHttps(filePath,http_host):
|
|
|
urls = ''
|
|
|
server_dm = 'https://' + http_host
|
|
|
if filePath.find('static/Upgrade/') != -1:
|
|
@@ -70,56 +83,92 @@ def getOTAHttps(filePath, http_host):
|
|
|
urls = server_dm + '/OTA/downloads/' + path + '?time=' + str(time.time())
|
|
|
return urls
|
|
|
|
|
|
-def addNewEquipmentVersion(deviceContent, token,response):
|
|
|
+def getDir(fileType, fileName, fileCode, fileVersion):
|
|
|
+ try:
|
|
|
+ if fileCode != None and fileVersion != None:
|
|
|
+ path = '/'.join((BASE_DIR, 'static/Upgrade', fileType, fileCode, fileVersion)).replace('\\', '/') + '/'
|
|
|
+ else:
|
|
|
+ if fileType != 'IPC' and fileType != 'DVR' and fileType != 'NVR' and fileType != 'XVR':
|
|
|
+ path = '/'.join((BASE_DIR, "static/Upgrade", 'Other')).replace('\\', '/') + '/'
|
|
|
+
|
|
|
+ if not os.path.exists(path):
|
|
|
+ os.makedirs(path)
|
|
|
+ file_name = path + str(fileName)
|
|
|
+ if os.path.exists(file_name):
|
|
|
+ os.remove(file_name)
|
|
|
+ destination = open(file_name, 'wb+')
|
|
|
+ for chunk in fileName.chunks():
|
|
|
+ destination.write(chunk)
|
|
|
+ destination.close()
|
|
|
+ else:
|
|
|
+ file_name = path + str(fileName)
|
|
|
+ if os.path.exists(file_name):
|
|
|
+ os.remove(file_name)
|
|
|
+
|
|
|
+ destination = open(file_name, 'wb+')
|
|
|
+ for chunk in fileName.chunks():
|
|
|
+ destination.write(chunk)
|
|
|
+ destination.close()
|
|
|
+ except Exception as e:
|
|
|
+ errorInfo = traceback.format_exc()
|
|
|
+ print('上传文件错误: %s' % errorInfo)
|
|
|
+ return ResponseFormal(700,{'details':repr(e)})
|
|
|
+ else:
|
|
|
+ index = file_name.find('static/')
|
|
|
+ filePath = file_name[index:]
|
|
|
+ return ResponseFormal(0,{'filePath':filePath})
|
|
|
+
|
|
|
+
|
|
|
+def addNewEquipmentVersion(deviceContent,token):
|
|
|
"""
|
|
|
:param deviceContent:
|
|
|
:return:
|
|
|
"""
|
|
|
- if token is not None:
|
|
|
- tko = TokenObject(token)
|
|
|
- tko.valid()
|
|
|
- # 设置语言
|
|
|
- response.lang = tko.res.get('lang', None)
|
|
|
- if tko.code == 0:
|
|
|
- userID = tko.userID
|
|
|
- own_permission = ModelService.check_permission(userID=userID, permID=220)
|
|
|
- if own_permission is True:
|
|
|
- try:
|
|
|
- deviceData = json.loads(deviceContent)
|
|
|
- except Exception as e:
|
|
|
- print(deviceData)
|
|
|
- return response.json(803)
|
|
|
- else:
|
|
|
- version = deviceData.get('version', None)
|
|
|
- if version is not None:
|
|
|
- filePath = deviceData.get('filePath', None)
|
|
|
-
|
|
|
- if filePath is not None:
|
|
|
- try:
|
|
|
- deviceData['filePath'] = ','.join(filePath)
|
|
|
- equipmentVersion = Equipment_Version(
|
|
|
- eid=CommonService.getUserID(getUser=False, setOTAID=True),
|
|
|
- **deviceData)
|
|
|
- equipmentVersion.save()
|
|
|
- except Exception as e:
|
|
|
- errorInfo = traceback.format_exc()
|
|
|
- print('添加设备错误: %s ' % errorInfo)
|
|
|
- return response.json(806, repr(e))
|
|
|
- else:
|
|
|
- res =CommonService.qs_to_dict([equipmentVersion])
|
|
|
- return response.json(0, res)
|
|
|
- else:
|
|
|
- return response.json(806)
|
|
|
- else:
|
|
|
- return response.json(806)
|
|
|
-
|
|
|
- else:
|
|
|
- return response.json(404)
|
|
|
-
|
|
|
+ if token is None:
|
|
|
+ return ResponseJSON(311)
|
|
|
+ tokenManager = JSONTokenManager()
|
|
|
+ error_code = tokenManager.verify_AToken(token)
|
|
|
+ if error_code == 0:
|
|
|
+ pass
|
|
|
else:
|
|
|
- return response.json(311)
|
|
|
-
|
|
|
+ return tokenManager.errorCodeInfo(error_code)
|
|
|
+ userID = tokenManager.accessDict.get('userID', None)
|
|
|
+ own_permission = ModelService.check_permission(userID=userID, permID=220)
|
|
|
+ if own_permission is not True:
|
|
|
+ # pass
|
|
|
+ return ResponseFormal(404)
|
|
|
+ try:
|
|
|
+ # print(deviceContent)
|
|
|
+ deviceData = json.loads(deviceContent)
|
|
|
+ print('----------')
|
|
|
+ print(deviceData)
|
|
|
+ except Exception as e:
|
|
|
+ return ResponseFormal(803)
|
|
|
+ else:
|
|
|
+ version = deviceData.get('version', None)
|
|
|
+ if version != None:
|
|
|
+ eVersionValid = Equipment_Version.objects.filter(version = version)
|
|
|
+ # if eVersionValid:
|
|
|
+ # return ResponseFormal(904)
|
|
|
+ else:
|
|
|
+ return ResponseFormal(806)
|
|
|
+ try:
|
|
|
+ filePath = deviceData.get('filePath', None)
|
|
|
|
|
|
+ if filePath == None:
|
|
|
+ return ResponseFormal(806)
|
|
|
+ deviceData['filePath'] = ','.join(filePath)
|
|
|
+ equipmentVersion = Equipment_Version(eid = CommonService.getUserID(getUser=False, setOTAID=True), **deviceData)
|
|
|
+ equipmentVersion.save()
|
|
|
+ except Exception as e:
|
|
|
+ errorInfo = traceback.format_exc()
|
|
|
+ print('添加设备错误: %s ' % errorInfo)
|
|
|
+ return ResponseFormal(806,{'details':repr(e)})
|
|
|
+ else:
|
|
|
+ sqlJSON = serializers.serialize('json', [equipmentVersion])
|
|
|
+ sqlList = json.loads(sqlJSON)
|
|
|
+ sqlDict =dict(zip(["datas"], [sqlList]))
|
|
|
+ return ResponseFormal(0,sqlDict)
|
|
|
|
|
|
def downloadUrl(fileType, fileCode, fileVersion, fileName):
|
|
|
fullPath = os.path.join(BASE_DIR, "static/Upgrade").replace('\\', '/')
|
|
@@ -158,59 +207,24 @@ def downloadUrl(fileType, fileCode, fileVersion, fileName):
|
|
|
return response
|
|
|
|
|
|
except Exception as e:
|
|
|
- res =ResponseObject()
|
|
|
- errorJSON = res.formal(906, {'details': repr(e)})
|
|
|
+ errorJSON = ResponseFormal(906,{'details':repr(e)})
|
|
|
response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
|
|
|
response['Content-Error'] = errorJSON
|
|
|
return response
|
|
|
else:
|
|
|
- res = ResponseObject()
|
|
|
- errorJSON = res.formal(907)
|
|
|
+ errorJSON = ResponseFormal(907)
|
|
|
response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
|
|
|
response['Content-Error'] = errorJSON
|
|
|
return response
|
|
|
|
|
|
-def getMD5orSHA265(fileName, encryptionType='MD5'):
|
|
|
- """
|
|
|
-
|
|
|
- :param filePath:
|
|
|
- :param encryptionType:
|
|
|
- :return:
|
|
|
- """
|
|
|
- if not os.path.isfile(fileName):
|
|
|
- return ''
|
|
|
- else:
|
|
|
- if encryptionType == 'MD5':
|
|
|
- encryption = hashlib.md5()
|
|
|
- elif encryptionType == 'SHA265':
|
|
|
- encryption = hashlib.sha256()
|
|
|
- elif encryptionType == 'CRC32':
|
|
|
- f = open(fileName, 'rb')
|
|
|
- chunk = f.read()
|
|
|
- return crc32(chunk)
|
|
|
-
|
|
|
- f = open(fileName, 'rb')
|
|
|
- block_size = 8192 # why is 8192 | 8192 is fast than 2048
|
|
|
-
|
|
|
- while True:
|
|
|
- chunk = f.read(block_size)
|
|
|
- if not chunk:
|
|
|
- break
|
|
|
- encryption.update(chunk)
|
|
|
-
|
|
|
- f.close()
|
|
|
- return encryption.hexdigest()
|
|
|
-
|
|
|
-
|
|
|
@csrf_exempt
|
|
|
-def downloadUpdataFileUrl(request):
|
|
|
- response = ResponseObject()
|
|
|
+def downloadUpdataFileUrl(request, *callback_args, **callback_kwargs):
|
|
|
if request.method == 'GET':
|
|
|
request_dict = request.GET
|
|
|
elif request.method == 'POST':
|
|
|
request_dict = request.POST
|
|
|
else:
|
|
|
- errorJSON = response.formal(801)
|
|
|
+ errorJSON = ResponseFormal(801)
|
|
|
response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
|
|
|
response['Content-Error'] = errorJSON
|
|
|
return response
|
|
@@ -220,51 +234,47 @@ def downloadUpdataFileUrl(request):
|
|
|
fileName = request_dict.get('fileName', None)
|
|
|
if fileType != None and fileCode != None and fileVersion != \
|
|
|
None and fileName != None:
|
|
|
- return downloadUrl(fileType, fileCode, fileVersion, fileName,response)
|
|
|
-
|
|
|
+ response = downloadUrl(fileType, fileCode, fileVersion, fileName)
|
|
|
+ return response
|
|
|
else:
|
|
|
- errorJSON = response.formal(800)
|
|
|
+ errorJSON = ResponseFormal(800)
|
|
|
response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
|
|
|
response['Content-Error'] = errorJSON
|
|
|
return response
|
|
|
|
|
|
-
|
|
|
'''
|
|
|
http://192.168.136.40:8077/OTA/getEquipmentVersion?31AX162001A
|
|
|
'''
|
|
|
-
|
|
|
-
|
|
|
@csrf_exempt
|
|
|
-def getEquipmentVersionInterface(request):
|
|
|
- response = ResponseObject()
|
|
|
+def getEquipmentVersionInterface(request,
|
|
|
+ *callback_args, **callback_kwargs):
|
|
|
if request.method == "POST":
|
|
|
- request.encoding = 'utf-8'
|
|
|
+ request.encoding ='utf-8'
|
|
|
code = request.POST.get('code', None)
|
|
|
+
|
|
|
+ if code is not None:
|
|
|
+ response = HttpResponse(getEquipmentVersion(code))
|
|
|
+ return response
|
|
|
+
|
|
|
+ else:
|
|
|
+ return ResponseJSON(800)
|
|
|
elif request.method == "GET":
|
|
|
request.encoding = 'gb2312'
|
|
|
code = request.GET.get('code', None)
|
|
|
- else:
|
|
|
- return response.json(801)
|
|
|
- if code is not None:
|
|
|
- try:
|
|
|
- equipmentValid = Equipment_Version.objects.filter(code=code, status=1).order_by('-data_joined')
|
|
|
- except Exception as e:
|
|
|
- errorInfo = traceback.format_exc()
|
|
|
- print('查询数据库错误: %s' % errorInfo)
|
|
|
- return response.json(500, {'details': repr(e)})
|
|
|
+
|
|
|
+ if code is not None:
|
|
|
+ response = HttpResponse(getEquipmentVersion(code))
|
|
|
+ return response
|
|
|
+
|
|
|
else:
|
|
|
- if equipmentValid:
|
|
|
- equipment = equipmentValid[0]
|
|
|
- return response.json(0, {'softwareVersion': equipment.softwareVersion})
|
|
|
- else:
|
|
|
- return response.json(900)
|
|
|
- else:
|
|
|
- return response.json(800)
|
|
|
+ return ResponseJSON(800)
|
|
|
|
|
|
+ else:
|
|
|
+ return ResponseJSON(801)
|
|
|
|
|
|
@csrf_exempt
|
|
|
-def getUpdataFileUrlInterface(request):
|
|
|
- response = ResponseObject()
|
|
|
+def getUpdataFileUrlInterface(request,
|
|
|
+ *callback_args, **callback_kwargs):
|
|
|
if request.method == "POST":
|
|
|
request.encoding = 'utf-8'
|
|
|
request_dict = request.POST
|
|
@@ -272,19 +282,17 @@ def getUpdataFileUrlInterface(request):
|
|
|
request.encoding = 'utf-8'
|
|
|
request_dict = request.GET
|
|
|
else:
|
|
|
- return response.json(801)
|
|
|
+ return ResponseJSON(801)
|
|
|
code = request_dict.get('code', None)
|
|
|
http_host = request.META.get('HTTP_HOST', None)
|
|
|
if code is not None:
|
|
|
- return getUpdataFileUrl(code, http_host, response)
|
|
|
+ return HttpResponse(getUpdataFileUrl(code,http_host))
|
|
|
else:
|
|
|
- return response.json(800)
|
|
|
-
|
|
|
+ return ResponseJSON(800)
|
|
|
|
|
|
@csrf_exempt
|
|
|
def downloadUpdataFileUrlInterface(request, fileType, fileName,
|
|
|
*callback_args, **callback_kwargs):
|
|
|
- res = ResponseObject()
|
|
|
if fileType is not None and fileName is not None:
|
|
|
fullPath = os.path.join(BASE_DIR, "static/Upgrade/").replace('\\', '/')
|
|
|
if fileType == 'IPC':
|
|
@@ -310,14 +318,14 @@ def downloadUpdataFileUrlInterface(request, fileType, fileName,
|
|
|
print(fullPath)
|
|
|
if os.path.isfile(fullPath):
|
|
|
try:
|
|
|
- JSON = res.formal(0)
|
|
|
+ JSON = ResponseFormal(0)
|
|
|
if fileType != 'User':
|
|
|
wrapper = FileWrapper(open(fullPath, 'rb'))
|
|
|
response = HttpResponse(wrapper, content_type="application/octet-stream")
|
|
|
response['Content-Length'] = os.path.getsize(fullPath)
|
|
|
response['Content-Disposition'] = 'attachment; filename=%s' % os.path.basename(fullPath)
|
|
|
response['Content-MD5'] = getMD5orSHA265(fullPath)
|
|
|
- # 校验文件md5值
|
|
|
+ #校验文件md5值
|
|
|
response['Content-SHA265'] = getMD5orSHA265(fullPath, 'SHA265')
|
|
|
response['Content-CRC32'] = getMD5orSHA265(fullPath, 'CRC32')
|
|
|
response['Content-Error'] = JSON
|
|
@@ -327,23 +335,22 @@ def downloadUpdataFileUrlInterface(request, fileType, fileName,
|
|
|
response = HttpResponse(Imagedata, content_type="image/jpeg")
|
|
|
return response
|
|
|
except Exception as e:
|
|
|
- errorJSON = res.formal(906)
|
|
|
+ errorJSON = ResponseFormal(906)
|
|
|
response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
|
|
|
response['Content-Error'] = errorJSON
|
|
|
return response
|
|
|
else:
|
|
|
- errorJSON = res.formal(907)
|
|
|
+ errorJSON = ResponseFormal(907)
|
|
|
response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
|
|
|
response['Content-Error'] = errorJSON
|
|
|
return response
|
|
|
|
|
|
else:
|
|
|
- errorJSON = res.formal(800)
|
|
|
+ errorJSON = ResponseFormal(800)
|
|
|
response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
|
|
|
response['Content-Error'] = errorJSON
|
|
|
return response
|
|
|
|
|
|
-
|
|
|
class getUploadFiletoDirView(TemplateView):
|
|
|
@method_decorator(csrf_exempt)
|
|
|
def dispatch(self, *args, **kwargs):
|
|
@@ -351,45 +358,55 @@ class getUploadFiletoDirView(TemplateView):
|
|
|
|
|
|
def post(self, request, *args, **kwargs):
|
|
|
request.encoding = 'utf-8'
|
|
|
- request_dict = request.POST
|
|
|
+
|
|
|
+ token = request.POST.get('token', None)
|
|
|
+ fileType = request.POST.get('fileType', None)
|
|
|
+ fileCode = request.POST.get('fileCode', None)
|
|
|
+ fileVersion = request.POST.get('fileVersion', None)
|
|
|
fileName = request.FILES.get('fileName', None)
|
|
|
- return self.ValidationError(request_dict,fileName)
|
|
|
+
|
|
|
+ return self.ValidationError(token, fileType, fileName,
|
|
|
+ filefileCode=fileCode, fileVersion=fileVersion)
|
|
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
|
request.encoding = 'gb2312'
|
|
|
- request_dict = request.GET
|
|
|
+
|
|
|
+ token = request.GET.get('token', None)
|
|
|
+ fileType = request.GET.get('fileType', None)
|
|
|
+ fileCode = request.GET.get('fileCode', None)
|
|
|
+ fileVersion = request.GET.get('fileVersion', None)
|
|
|
fileName = request.FILES.get('fileName', None)
|
|
|
- return self.ValidationError(request_dict,fileName)
|
|
|
-
|
|
|
- def ValidationError(self, request_dict,fileName):
|
|
|
- response = ResponseObject()
|
|
|
- token = request_dict.get('token', None)
|
|
|
- fileType = request_dict.get('fileType', None)
|
|
|
- fileCode = request_dict.get('fileCode', None)
|
|
|
- fileVersion = request_dict.get('fileVersion', None)
|
|
|
+ return self.ValidationError(token, fileType, fileName,filefileCode=fileCode, fileVersion=fileVersion)
|
|
|
+
|
|
|
+ def ValidationError(self, token, fileType, fileName, *args, **kwargs):
|
|
|
if fileName != None and fileType != None and token != None:
|
|
|
- tko = TokenObject(token)
|
|
|
- tko.valid()
|
|
|
- response.lang = tko.lang
|
|
|
- if tko.code == 0:
|
|
|
- userID = tko.userID()
|
|
|
- if userID is not None:
|
|
|
+ tM = JSONTokenManager()
|
|
|
+ error_code = tM.verify_AToken(token)
|
|
|
+ if error_code == 0:
|
|
|
+ userID = tM.accessDict.get('userID', None)
|
|
|
+ if userID:
|
|
|
own_permission = ModelService.check_permission(userID=userID, permID=210)
|
|
|
if own_permission is True:
|
|
|
+ fileCode = kwargs.get('fileCode', None)
|
|
|
+ fileVersion = kwargs.get('fileVersion', None)
|
|
|
if fileVersion != None and fileCode != None:
|
|
|
- return self.getUploadFiletoDir(userID, fileType, fileName,response,fileCode, fileVersion=fileVersion)
|
|
|
+ response = HttpResponse(self.getUploadFiletoDir(userID, fileType, fileName,
|
|
|
+ fileCode, fileVersion=fileVersion))
|
|
|
+ return response
|
|
|
else:
|
|
|
- return self.getUploadFiletoDir(userID, fileType, fileName,response)
|
|
|
+ response = HttpResponse(self.getUploadFiletoDir(userID, fileType, fileName))
|
|
|
+ return response
|
|
|
else:
|
|
|
- return response.json(404)
|
|
|
+ return ResponseJSON(404)
|
|
|
else:
|
|
|
- return response.json(310)
|
|
|
+ return ResponseJSON(310)
|
|
|
else:
|
|
|
- return response.json(tko.code)
|
|
|
+ response = HttpResponse(tM.errorCodeInfo(error_code))
|
|
|
+ return response
|
|
|
else:
|
|
|
- return response.json(800)
|
|
|
+ return ResponseJSON(800)
|
|
|
|
|
|
- def getUploadFiletoDir(self, userID, fileType, fileName,response, *args, **kwargs):
|
|
|
+ def getUploadFiletoDir(self, userID, fileType, fileName, *args, **kwargs):
|
|
|
"""
|
|
|
将上传的文件写入服务器对应目录下
|
|
|
:param Type: equipment type
|
|
@@ -397,17 +414,17 @@ class getUploadFiletoDirView(TemplateView):
|
|
|
:return: filePath
|
|
|
"""
|
|
|
try:
|
|
|
- User = Device_User.objects.filter(userID=userID)
|
|
|
+ User = Device_User.objects.filter(userID = userID)
|
|
|
except Exception as e:
|
|
|
errorInfo = traceback.format_exc()
|
|
|
print('查询数据库错误: %s' % errorInfo)
|
|
|
- return response.json(500, {'details': repr(e)})
|
|
|
+ return ResponseFormal(500,{'details':repr(e)})
|
|
|
else:
|
|
|
if not User:
|
|
|
- return response.json(113)
|
|
|
- own_perm = ModelService.check_permission(userID, permID=210)
|
|
|
+ return ResponseFormal(113)
|
|
|
+ own_perm = ModelService.check_permission(userID,permID=210)
|
|
|
if own_perm is not True:
|
|
|
- return response.json(605)
|
|
|
+ return ResponseFormal(605)
|
|
|
updataFile = fileName.name
|
|
|
updataFile = updataFile.replace(' ', '+')
|
|
|
versionIndex = updataFile.find('.', updataFile.find('.', updataFile.find('.') + 1) + 1)
|
|
@@ -418,88 +435,63 @@ class getUploadFiletoDirView(TemplateView):
|
|
|
fileCode = len(updataFile[versionIndex + 1: codeIndex]) > 0 and \
|
|
|
updataFile[versionIndex + 1: codeIndex] or None
|
|
|
if fileCode is not None and fileVersion is not None:
|
|
|
- return self.getDir(fileType, fileName, fileCode, fileVersion)
|
|
|
+ return getDir(fileType, fileName, fileCode, fileVersion)
|
|
|
else:
|
|
|
fileCode = kwargs.get('fileCode', None)
|
|
|
fileVersion = kwargs.get('fileVersion', None)
|
|
|
print(fileCode, fileVersion)
|
|
|
if fileCode != None and fileVersion != None:
|
|
|
- return self.getDir(fileType, fileName, fileCode, fileVersion)
|
|
|
+ return getDir(fileType, fileName, fileCode, fileVersion)
|
|
|
else:
|
|
|
- return response.json(903)
|
|
|
+ return ResponseFormal(903)
|
|
|
else:
|
|
|
fileCode = kwargs.get('fileCode', None)
|
|
|
fileVersion = kwargs.get('fileVersion', None)
|
|
|
if fileCode != None and fileVersion != None:
|
|
|
- return self.getDir(fileType, fileName, fileCode, fileVersion,response)
|
|
|
+ return getDir(fileType, fileName, fileCode, fileVersion)
|
|
|
else:
|
|
|
- return response.json(903)
|
|
|
-
|
|
|
- def getDir(self,fileType, fileName, fileCode, fileVersion, response):
|
|
|
- try:
|
|
|
- if fileCode != None and fileVersion != None:
|
|
|
- path = '/'.join((BASE_DIR, 'static/Upgrade', fileType, fileCode, fileVersion)).replace('\\', '/') + '/'
|
|
|
- else:
|
|
|
- if fileType != 'IPC' and fileType != 'DVR' and fileType != 'NVR' and fileType != 'XVR':
|
|
|
- path = '/'.join((BASE_DIR, "static/Upgrade", 'Other')).replace('\\', '/') + '/'
|
|
|
-
|
|
|
- if not os.path.exists(path):
|
|
|
- os.makedirs(path)
|
|
|
- file_name = path + str(fileName)
|
|
|
- if os.path.exists(file_name):
|
|
|
- os.remove(file_name)
|
|
|
- destination = open(file_name, 'wb+')
|
|
|
- for chunk in fileName.chunks():
|
|
|
- destination.write(chunk)
|
|
|
- destination.close()
|
|
|
- else:
|
|
|
- file_name = path + str(fileName)
|
|
|
- if os.path.exists(file_name):
|
|
|
- os.remove(file_name)
|
|
|
-
|
|
|
- destination = open(file_name, 'wb+')
|
|
|
- for chunk in fileName.chunks():
|
|
|
- destination.write(chunk)
|
|
|
- destination.close()
|
|
|
- except Exception as e:
|
|
|
- errorInfo = traceback.format_exc()
|
|
|
- print('上传文件错误: %s' % errorInfo)
|
|
|
- return response.json(700, {'details': repr(e)})
|
|
|
- else:
|
|
|
- index = file_name.find('static/')
|
|
|
- filePath = file_name[index:]
|
|
|
- return response.json(0, {'filePath': filePath})
|
|
|
-
|
|
|
+ return ResponseFormal(903)
|
|
|
|
|
|
@csrf_exempt
|
|
|
-def addNewEquipmentVersionInterface(request):
|
|
|
-
|
|
|
- response = ResponseObject()
|
|
|
+def addNewEquipmentVersionInterface(request, *callback_args,
|
|
|
+ **callback_kwargs):
|
|
|
if request.method == "POST":
|
|
|
request.encoding = 'utf-8'
|
|
|
- request_dict = request.POST
|
|
|
+ deviceContent = request.POST.get('content', None).encode('utf-8')
|
|
|
+ token = request.POST.get('token', None)
|
|
|
+ deviceContent = str(deviceContent, encoding='utf-8')
|
|
|
+ deviceContent = deviceContent.replace(' ', ' ').replace('\'', '\"')
|
|
|
+ print(deviceContent, type(deviceContent))
|
|
|
+ if deviceContent is not None:
|
|
|
+ response = HttpResponse(addNewEquipmentVersion(deviceContent,token))
|
|
|
+ return response
|
|
|
+ else:
|
|
|
+ return ResponseJSON(800)
|
|
|
+
|
|
|
elif request.method == "GET":
|
|
|
request.encoding = 'gb2312'
|
|
|
- request_dict = request.GET
|
|
|
- else:
|
|
|
- return response.json(801)
|
|
|
- deviceContent = request_dict.get('content', None).encode('utf-8')
|
|
|
- token = request_dict.get('token', None)
|
|
|
- deviceContent = str(deviceContent, encoding='utf-8')
|
|
|
- deviceContent = deviceContent.replace(' ', ' ').replace('\'', '\"')
|
|
|
- if deviceContent is not None:
|
|
|
- return addNewEquipmentVersion(deviceContent, token,response)
|
|
|
- else:
|
|
|
- return response.json(800)
|
|
|
|
|
|
+ deviceContent = request.GET.get('content', None).encode('gb2312')
|
|
|
+ deviceContent = str(deviceContent, encoding='gb2312')
|
|
|
+ token = request.GET.get('token', None)
|
|
|
+ deviceContent = deviceContent.replace(' ', ' ').replace('\'', '\"')
|
|
|
+ if deviceContent is not None:
|
|
|
+ response = HttpResponse(addNewEquipmentVersion(deviceContent,token))
|
|
|
+ return response
|
|
|
|
|
|
-def showAllEquipmentVersion(userID,response):
|
|
|
+ else:
|
|
|
+ return ResponseJSON(800)
|
|
|
+ else:
|
|
|
+ return ResponseJSON(801)
|
|
|
+
|
|
|
+@csrf_exempt
|
|
|
+def showAllEquipmentVersion(userID):
|
|
|
try:
|
|
|
- userValid = Device_User.objects.filter(userID=userID).order_by('-data_joined')
|
|
|
+ userValid = Device_User.objects.filter(userID = userID).order_by('-data_joined')
|
|
|
except Exception as e:
|
|
|
errorInfo = traceback.format_exc()
|
|
|
print('查询数据库错误: %s' % errorInfo)
|
|
|
- return response.json(500)
|
|
|
+ return ResponseFormal(500)
|
|
|
else:
|
|
|
if userValid:
|
|
|
own_permission = ModelService.check_permission(userID=userID, permID=240)
|
|
@@ -508,33 +500,143 @@ def showAllEquipmentVersion(userID,response):
|
|
|
sqlList = json.loads(sqlJSON)
|
|
|
print(sqlList, sqlJSON)
|
|
|
sqlDict = dict(zip(["datas"], [sqlList]))
|
|
|
- return response.json(0, sqlDict)
|
|
|
+ return ResponseFormal(0,sqlDict)
|
|
|
else:
|
|
|
- return response.json(604)
|
|
|
+ return ResponseFormal(604)
|
|
|
else:
|
|
|
- return response.json(113)
|
|
|
-
|
|
|
+ return ResponseFormal(113)
|
|
|
|
|
|
@csrf_exempt
|
|
|
-def showAllEquipmentVersionInterface(request):
|
|
|
- response = ResponseObject()
|
|
|
+def showAllEquipmentVersionInterface(request, *callback_args,
|
|
|
+ **callback_kwargs):
|
|
|
if request.method == 'POST':
|
|
|
token = request.POST.get('token', None)
|
|
|
+
|
|
|
+ if token != None:
|
|
|
+ tM = JSONTokenManager()
|
|
|
+ error_code = tM.verify_AToken(token)
|
|
|
+ if error_code == 0:
|
|
|
+ userID = tM.accessDict.get('userID', None)
|
|
|
+ if userID:
|
|
|
+ response = HttpResponse(showAllEquipmentVersion(userID))
|
|
|
+ return response
|
|
|
+ else:
|
|
|
+ return ResponseJSON(310)
|
|
|
+ else:
|
|
|
+ response = HttpResponse(tM.errorCodeInfo(error_code))
|
|
|
+ return response
|
|
|
+
|
|
|
+ else:
|
|
|
+ return ResponseJSON(800)
|
|
|
+
|
|
|
elif request.method == 'GET':
|
|
|
token = request.GET.get('token', None)
|
|
|
- if token is not None:
|
|
|
- tko = TokenObject(token)
|
|
|
- tko.valid()
|
|
|
- response.lang = tko.lang
|
|
|
- if tko.code == 0:
|
|
|
- userID = tko.userID()
|
|
|
- if userID:
|
|
|
- return showAllEquipmentVersion(userID,response)
|
|
|
+
|
|
|
+ if token != None:
|
|
|
+ tM = JSONTokenManager()
|
|
|
+ error_code = tM.verify_AToken(token)
|
|
|
+ if error_code == 0:
|
|
|
+ userID = tM.accessDict.get('userID', None)
|
|
|
+ if userID:
|
|
|
+ response = HttpResponse(showAllEquipmentVersion(userID))
|
|
|
+ return response
|
|
|
+ else:
|
|
|
+ return ResponseJSON(310)
|
|
|
+
|
|
|
else:
|
|
|
- return response.json(310)
|
|
|
+ response = HttpResponse(tM.errorCodeInfo(error_code))
|
|
|
+ return response
|
|
|
else:
|
|
|
- return response.json(tko.code)
|
|
|
+ return ResponseJSON(800)
|
|
|
+
|
|
|
+import zlib
|
|
|
+@csrf_exempt
|
|
|
+def getCRC32(filePath):
|
|
|
+ print(filePath)
|
|
|
+ block_size = 1024 * 1024
|
|
|
+ crc = 0
|
|
|
+
|
|
|
+ try:
|
|
|
+ fd = open(filePath, 'rb')
|
|
|
+ while True:
|
|
|
+ buffer = fd.read(block_size)
|
|
|
+ if len(buffer) == 0: # EOF or file empty. return hashes
|
|
|
+ fd.close()
|
|
|
+ return crc # 返回的是十进制的值
|
|
|
+
|
|
|
+ crc = zlib.crc32(buffer, crc)
|
|
|
+ except Exception as e:
|
|
|
+ return ResponseFormal(908,{'details':repr(e)})
|
|
|
+
|
|
|
+def getMD5orSHA265(fileName, encryptionType='MD5'):
|
|
|
+ """
|
|
|
+
|
|
|
+ :param filePath:
|
|
|
+ :param encryptionType:
|
|
|
+ :return:
|
|
|
+ """
|
|
|
+ if not os.path.isfile(fileName):
|
|
|
+ return ''
|
|
|
else:
|
|
|
- return response.json(800)
|
|
|
+ if encryptionType == 'MD5':
|
|
|
+ encryption = hashlib.md5()
|
|
|
+ elif encryptionType == 'SHA265':
|
|
|
+ encryption = hashlib.sha256()
|
|
|
+ elif encryptionType == 'CRC32':
|
|
|
+ f = open(fileName, 'rb')
|
|
|
+ chunk = f.read()
|
|
|
+ return crc32(chunk)
|
|
|
+
|
|
|
+ f = open(fileName, 'rb')
|
|
|
+ block_size = 8192 # why is 8192 | 8192 is fast than 2048
|
|
|
+
|
|
|
+ while True:
|
|
|
+ chunk = f.read(block_size)
|
|
|
+ if not chunk:
|
|
|
+ break
|
|
|
+ encryption.update(chunk)
|
|
|
+
|
|
|
+ f.close()
|
|
|
+ return encryption.hexdigest()
|
|
|
|
|
|
+def CRC(fileName):
|
|
|
+ fd = open(fileName, 'rb')
|
|
|
+ dwSize = os.path.getsize(fileName)
|
|
|
+ lpBuffer = fd.read()
|
|
|
+
|
|
|
+ crc = -1
|
|
|
+ CRC32Table = [0] * 256
|
|
|
+ ulPolynomial = 0x04C11DB7
|
|
|
+ len = dwSize
|
|
|
+ buffer = lpBuffer
|
|
|
+ for index in range(0xFF):
|
|
|
+ value = 0
|
|
|
+ ref = index
|
|
|
+
|
|
|
+ for n in range(9):
|
|
|
+ if ref & 1:
|
|
|
+ value |= 1 << (8 - n)
|
|
|
+ ref >>= 1
|
|
|
+
|
|
|
+ CRC32Table[index] = value << 24
|
|
|
+ for j in range(8):
|
|
|
+ CRC32 = CRC32Table[index] & (1 << 31) and ulPolynomial or 0
|
|
|
+ CRC32Table[index] = (CRC32Table[index] << 1) ^ CRC32
|
|
|
+ value = 0
|
|
|
+ ref = CRC32Table[index]
|
|
|
+ for n in range(33):
|
|
|
+ if ref & 1:
|
|
|
+ value |= 1 << (32 - n)
|
|
|
+ ref >>= 1
|
|
|
+ CRC32Table[index] = value
|
|
|
+
|
|
|
+ index = 0
|
|
|
+ while len:
|
|
|
+ len -= 1
|
|
|
+ crc = (crc >> 8) ^ CRC32Table[(crc & 0xFF) ^ buffer[index]]
|
|
|
+ index += 1
|
|
|
+
|
|
|
+ print(crc ^ 0xffffffff)
|
|
|
+
|
|
|
+ return crc ^ 0xffffffff
|
|
|
|