chenjunkai 7 жил өмнө
parent
commit
481cba22b1

+ 3 - 0
Ansjer/config.py

@@ -45,16 +45,19 @@ if SERVER_TYPE == 'local':
     SERVER_DOMAIN = 'http://192.168.136.45:8077'
     DATABASE_DATA = 'Ansjer'
     SERVER_HOST = '192.168.136.45'
+    DOMAIN_HOST = '192.168.136.45'
     RTMP_PUSH_URL = 'rtmp://192.168.136.45:1935/hls'
 elif SERVER_TYPE == 'test':
     NGINX_RTMP_STAT = 'http://13.56.215.252:82/stat'
     SERVER_DOMAIN = 'https://www.dvema.com:8077'
+    DOMAIN_HOST = 'www.dvema.com'
     DATABASE_DATA = 'AnsjerTest'
     SERVER_HOST = 'localhost'
     RTMP_PUSH_URL = 'http://13.56.215.252:8091/hls'
 elif SERVER_TYPE == 'formal':
     NGINX_RTMP_STAT = 'http://13.56.215.252:81/stat'
     SERVER_DOMAIN = 'https://www.dvema.com/'
+    DOMAIN_HOST = 'www.dvema.com'
     DATABASE_DATA = 'Ansjer81'
     SERVER_HOST = 'localhost'
     RTMP_PUSH_URL = 'http://13.56.215.252:8091/hls'

+ 6 - 3
Ansjer/urls.py

@@ -1,8 +1,11 @@
-from django.contrib import admin
 from django.conf.urls import url
-from django.urls import path,re_path
+from django.contrib import admin
+from django.urls import path, re_path
+
 from Controller import FeedBackInfo, EquipmentOTA, EquipmentInfo, EquipmentSensor, StreamMedia, AdminManage, AppInfo, \
-    AccessLog, Test, MealManage, DeviceMeal, HlsManage, DeviceManage, EquipmentStatus, SysManage,DeviceLog,LogAccess,EquipmentManager,LogManager,PermissionManager,OTAEquipment,shareUserPermission,UserManger, CheckUserData, UserController
+    AccessLog, Test, MealManage, DeviceMeal, HlsManage, DeviceManage, EquipmentStatus, SysManage, DeviceLog, LogAccess, \
+    EquipmentManager, LogManager, PermissionManager, OTAEquipment, shareUserPermission, UserManger, CheckUserData, \
+    UserController
 
 urlpatterns = [
     url(r'^account/authcode$', UserController.authCodeView.as_view()),

+ 2 - 2
Controller/AccessLog.py

@@ -44,7 +44,7 @@ class AccessLog(View):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 operation = request_dict.get('operation', None)
                 if userID is not None and operation is not None:
                     if operation == 'queryByAdmin':
@@ -153,7 +153,7 @@ def statisticsPath(request):
         tko.valid()
         response.lang = tko.lang
         if tko.code == 0:
-            userID = tko.userID()
+            userID = tko.userID
             own_perm = ModelService.check_permission(userID, 10)
             if own_perm is True:
                 paths = TemplateService.log_api()

+ 3 - 3
Controller/AdminManage.py

@@ -44,7 +44,7 @@ class AdminManage(TemplateView):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 operation = request_dict.get('operation', None)
                 if userID is not None and operation is not None:
                     if operation == 'resetUserPwd':
@@ -210,7 +210,7 @@ def getUserIds(request):
         tko.valid()
         response.lang = tko.lang
         if tko.code == 0:
-            userID = tko.userID()
+            userID = tko.userID
             own_perm = ModelService.check_permission(userID,30)
             if own_perm is True:
                 # userID_list = Device_User.objects.all().values_list('userID', flat=True)
@@ -246,7 +246,7 @@ def search_user_by_content(request):
         tko.valid()
         response.lang = tko.lang
         if tko.code == 0:
-            userID = tko.userID()
+            userID = tko.userID
             own_perm = ModelService.check_permission(userID,30)
             if own_perm is True:
                 check_perm = ModelService.check_permission(userID=userID, permID=20)

+ 1 - 1
Controller/AppInfo.py

@@ -41,7 +41,7 @@ class AppInfo(View):
                     tko.valid()
                     response.lang = tko.lang
                     if tko.code == 0:
-                        userID = tko.userID()
+                        userID = tko.userID
                         if userID is not None:
                             if operation == 'query':
                                 return self.query(request_dict, userID,response)

+ 0 - 446
Controller/BatchProcessingDatabase.py

@@ -1,446 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import traceback
-from Ansjer.settings import *
-from django.views.generic.base import View
-from django.views.decorators.csrf import csrf_exempt
-from openpyxl import load_workbook
-from openpyxl.compat import range
-import xlrd
-from Service.ResponseService import *
-from Service.CommonService import CommonService
-from Model.models import Device_Info, Device_User
-
-class batchAddEquipmentView(View):
-    @csrf_exempt
-    def post(self, request, *args, **kwargs):
-        request.encoding = 'utf-8'
-        fileType = request.POST.get('fileType', None)
-        fileName = request.FILES.get('fileName', None)
-
-        if fileName != None and fileType != None:
-            return self.batchAddEquipment(fileType, fileName)
-        else:
-            return ResponseJSON(800)
-
-    @csrf_exempt
-    def get(self, request, *args, **kwargs):
-        request.encoding = 'gb2312'
-
-        fileType = request.GET.get('fileType', None)
-        fileName = request.FILES.get('fileName', None)
-
-        if fileName != None and fileType != None:
-            return self.batchAddEquipment(fileType, fileName)
-        else:
-            return ResponseJSON(800)
-
-        #return HttpResponse(self.batchAddEquipmentfromTXTDict('D://1.txt'))
-        #return HttpResponse(self.batchAddEquipmentfromExecl2('D:/2.xlsx'))
-
-    def batchAddEquipment(self, fileType, fileName):
-        filename = fileName.name
-        filename = filename.replace(' ', '+')
-
-        try:
-            filePath = '/'.join((BASE_DIR, "static/SysFile", fileType)).replace('\\', '/') + '/'
-
-            if not os.path.exists(filePath):
-                os.makedirs(filePath)
-                fullPath = filePath + filename
-                if os.path.exists(fullPath):
-                    os.remove(fullPath)
-                destination = open(fullPath, 'wb+')
-                for chunk in fileName.chunks():
-                    destination.write(chunk)
-                destination.close()
-            else:
-                fullPath = filePath + filename
-                if os.path.exists(fullPath):
-                    os.remove(fullPath)
-                destination = open(fullPath, 'wb+')
-                for chunk in fileName.chunks():
-                    destination.write(chunk)
-                destination.close()
-        except Exception as e:
-            errorInfo = traceback.format_exc()
-            print('上传文件错误: %s' % errorInfo)
-            return ResponseJSON(700, {
-                'details': repr(e)
-            })
-
-        if fileType == 'TXT':
-            response = HttpResponse(self.batchAddEquipmentfromTXT(fullPath))
-            return response
-        elif fileType == 'Excel':
-            response = HttpResponse(self.batchAddEquipmentfromExecl(fullPath))
-            return response
-
-    def batchAddEquipmentfromExecl(self, filePath):
-        if not os.path.isfile(filePath):
-            return ResponseJSON(701)
-        else:
-            try:
-                xlsData = xlrd.open_workbook(filename = filePath)
-            except Exception as e:
-                errorInfo = traceback.format_exc()
-                print('Open the Excel file error: %s' % errorInfo)
-                return ResponseJSON(702, {
-                    'details': repr(e)
-                })
-            else:
-                sheetsCount = len(xlsData.sheets())
-                table = xlsData.sheets()[0]  # 打开第一张表
-                nrows = table.nrows  # 获取表的行数
-
-                eInfo = []
-                error_list = []
-                error_msg = {}
-                errorCount = addCount = 0
-
-                for index in range(nrows):  # 循环逐行添加
-                    eInfo = table.row_values(index)
-
-                    try:
-                        User = Device_User.objects.filter(userID = eInfo[0])
-                    except Exception as e:
-                        errorCount += 1
-                        errorInfo = traceback.format_exc()
-                        print('error message: %s' % errorInfo)
-
-                        errorDict = {'UID': eInfo[2], 'error_msg': u'error message: {0}'.format(repr(e))}
-                        error_list.append(errorDict)
-
-                        continue
-
-                    if not User:
-                        errorCount += 1
-                        errorDict = {'UID': eInfo[2], 'error_msg': u'error message: The UserID {0} does not exist!'.format(eInfo[0])}
-                        error_list.append(errorDict)
-
-                        continue
-                    try:
-                        tupleInfo = Device_Info.objects.get_or_create(userID_id=eInfo[0],
-                                                                      NickName=eInfo[1],
-                                                                      UID=eInfo[2], SID=eInfo[3],
-                                                                      View_Account=eInfo[4],
-                                                                      View_Password=eInfo[5],
-                                                                      AudioFormat=eInfo[6],
-                                                                      EventNotification=eInfo[7],
-                                                                      ChannelIndex=eInfo[8],
-                                                                      Online=eInfo[9],
-                                                                      mMonitorIndex=eInfo[10],
-                                                                      Type=eInfo[11],
-                                                                      DebugMode=eInfo[12],
-                                                                      NotificationMode=eInfo[13],
-                                                                      qvgaLevel=eInfo[14],
-                                                                      defaults={'id': CommonService.getUserID(getUser=False)})
-                    except Exception as e:
-                        errorCount += 1
-                        errorInfo = traceback.format_exc()
-                        print('error message: %s' % errorInfo)
-
-                        errorDict = {'UID': eInfo[2], 'error_msg': u'error message: {0}'.format(repr(e))}
-                        error_list.append(errorDict)
-
-                        continue
-                    else:
-                        if tupleInfo[1] == True:
-                            addCount += 1
-                        else:
-                            errorCount += 1
-
-                if len(error_list) > 0:
-                    error_msg['error'] = error_list
-
-                xlsData.release_resources()
-                if xlsData:
-                    del xlsData
-
-                resultDict = { "result_code": 0, "reason": u'Success'}
-                if errorCount > 0:
-                    if len(error_msg) > 0:
-                        if sheetsCount > 1:
-                            resultDict.update({
-                                "result": {'appending': addCount, 'errorCount': errorCount, 'error_msg': error_msg,
-                                           'sheetsCount': 'The Execl contains {0} tables!'.format(sheetsCount)},
-                                 "error_code": 704
-                            })
-                        else:
-                            resultDict.update({
-                                "result": {'appending': addCount, 'errorCount': errorCount, 'error_msg': error_msg},
-                                 "error_code": 705
-                            })
-
-                        errorJSON = json.dumps(resultDict, ensure_ascii=False)
-                        return errorJSON
-                    else:
-                        if sheetsCount > 1:
-                            resultDict.update({
-                                "result": {'appending': addCount, 'appended': errorCount,
-                                    'sheetsCount': 'The Execl contains {0} tables!'.format(sheetsCount)},
-                                "error_code": 704,
-                            })
-                        else:
-                            resultDict.update({
-                                "result": {'appending': addCount, 'appended': errorCount},
-                                "error_code": 705,
-                            })
-
-                        errorJSON = json.dumps(resultDict, ensure_ascii=False)
-                        return errorJSON
-                else:
-                    if sheetsCount > 1:
-                        resultDict.update({
-                            "result": {'appending': addCount,
-                                       'sheetsCount': 'The Execl contains {0} tables!'.format(sheetsCount)},
-                            "error_code": 704,
-                        })
-                    else:
-                        resultDict.update({
-                            "result": {'appending': addCount},
-                            "error_code": 0,
-                        })
-                    JSON = json.dumps(resultDict, ensure_ascii=False)
-                    return JSON
-
-    def batchAddEquipmentfromExecl2(self, filePath):
-        '''
-
-        :param filePath:
-        :return:
-        :remarks: 不支持旧版xls
-        '''
-        #filePath = 'D:/2.xlsx'
-        try:
-            wb = load_workbook(filename = filePath)
-            ws = wb.get_sheet_names()
-            ws = wb.get_sheet_by_name(ws[0])
-            rows = ws.iter_rows()
-            #cols = ws.iter_cols()
-            #rows = ws.rows  # 行数
-            #columns = ws.columns  # 列数
-        except Exception as e:
-            errorInfo = traceback.format_exc()
-            print('error message: %s' % errorInfo)
-            return ResponseFormal(702,repr(e))
-        error_list = []
-        error_msg = {}
-        equipmentlists = []
-        errorCount = addCount = 0
-        for row in rows:
-            eInfo = []
-            for cell in row:
-                #print(cell.coordinate, cell.value)
-                if cell.value == None:
-                    cell.value = ''
-                eInfo.append(cell.value)
-
-            try:
-                User = Device_User.objects.filter(userID = eInfo[0])
-            except Exception as e:
-                errorCount += 1
-                errorInfo = traceback.format_exc()
-                print('error message: %s' % errorInfo)
-
-                errorDict = {'UID': eInfo[2], 'error_msg': u'error message: {0}'.format(repr(e))}
-                error_list.append(errorDict)
-
-                continue
-
-            if not User:
-                errorCount += 1
-                errorDict = {'UID': eInfo[2],
-                             'error_msg': u'error message: The UserID {0} does not exist!'.format(eInfo[0])}
-                error_list.append(errorDict)
-                continue
-
-            eqValid = Device_Info.objects.filter(userID_id = eInfo[0], UID=eInfo[2])
-            if eqValid:
-                errorCount += 1
-                errorDict = {'UID': eInfo[2], 'error_msg': u'The UID has already existed!'}
-                error_list.append(errorDict)
-                continue
-
-            equipment = Device_Info(id=CommonService.getUserID(getUser=False), userID_id=eInfo[0],
-                                    NickName=eInfo[1], UID=eInfo[2], SID=eInfo[3],
-                                    View_Account=eInfo[4], View_Password=eInfo[5],
-                                    AudioFormat=eInfo[6], EventNotification=eInfo[7],
-                                    ChannelIndex=eInfo[8], Online=eInfo[9], mMonitorIndex=eInfo[10],
-                                    Type=eInfo[11], DebugMode=eInfo[12], NotificationMode=eInfo[13],
-                                    qvgaLevel=eInfo[14], )
-            equipmentlists.append(equipment)
-
-        try:
-            elists = Device_Info.objects.bulk_create(equipmentlists)
-        except Exception as e:
-            errorCount += 1
-            errorInfo = traceback.format_exc()
-            print('error message: %s' % errorInfo)
-
-            errorDict = {'UID': eInfo[2], 'error_msg': u'error message: {0}'.format(repr(e))}
-            error_list.append(errorDict)
-        else:
-            if len(equipmentlists) != len(elists):
-                addCount += len(elists)
-                errorCount += (len(equipmentlists) - len(elists))
-            else:
-                addCount += len(elists)
-
-        if len(error_list) > 0:
-            error_msg['error'] = error_list
-
-        if errorCount == 0:
-            return ResponseFormal(0, {
-                'appending': addCount
-            })
-        else:
-            return ResponseFormal(0, {
-                'appending': addCount,
-                'errorCount': errorCount,
-                'error_msg': error_msg,
-            })
-
-    def batchAddEquipmentfromTXT(self, filePath):
-        '''
-        txt文件批量导入数据库,通过list方式
-        :param filePath:
-        :return:
-        '''
-        if os.path.isfile(filePath):
-            file = open(filePath, encoding='utf-8')
-            eInfo = []
-            error_list = []
-            error_msg = errorDict = {}
-            errorCount = addCount = 0
-
-            for line in file:
-                eInfo = line.split(';')
-                for index in range(len(eInfo)):
-                    if index > 5:
-                        eInfo[index] = int(eInfo[index])
-                    else:
-                        continue
-
-                dUser = Device_User.objects.filter(userID = eInfo[0])
-                if not dUser:
-                    errorCount += 1
-                    errorDict = {"userID": eInfo[0], "error_msg'": u"The userID_id is no exist!"}
-                    error_list.append(errorDict)
-
-                    continue
-
-                try:
-                    tupleInfo = Device_Info.objects.get_or_create(userID_id=eInfo[0], NickName=eInfo[1],
-                                                      UID=eInfo[2], SID=eInfo[3], View_Account=eInfo[4],
-                                                      View_Password=eInfo[5], AudioFormat=eInfo[6],
-                                                      EventNotification=eInfo[7], ChannelIndex=eInfo[8],
-                                                      Online=eInfo[9], mMonitorIndex=eInfo[10],
-                                                      Type=eInfo[11], DebugMode=eInfo[12],
-                                                      NotificationMode=eInfo[13], qvgaLevel=eInfo[14],
-                                                      defaults={'id': CommonService.getUserID(getUser=False)})
-                except Exception as e:
-                    errorCount += 1
-                    errorInfo = traceback.format_exc()
-                    print('error message: %s' % errorInfo)
-
-                    errorDict = {'UID': eInfo[2], 'error_msg': u'error message: {0}'.format(repr(e))}
-                    error_list.append(errorDict)
-
-                    continue
-                else:
-                    if tupleInfo[1] == True:
-                        addCount += 1
-                    else:
-                        errorDict = {'UID': eInfo[2], 'error_msg': u'The UID is existed!'}
-                        error_list.append(errorDict)
-                        errorCount += 1
-
-            file.close()
-
-            if len(error_list) > 0:
-                error_msg['error'] = error_list
-
-            if errorCount > 0:
-                if len(error_msg) > 0:
-                    return ResponseFormal(0, {
-                        'appending': addCount,
-                        'errorCount': errorCount,
-                        'error_msg': error_msg,
-                    })
-                else:
-                    return ResponseFormal(0, {'appending': addCount,'appended': errorCount,})
-            else:
-                return ResponseFormal(0,{'appending': addCount})
-        else:
-            return ResponseFormal(701)
-
-    def batchAddEquipmentfromTXTDict(self, filePath):
-        if os.path.isfile(filePath):
-            file = open(filePath, encoding='utf-8')
-
-            error_list = []
-            error_msg = {}
-            errorCount = addCount = 0
-            equipmentList = []
-            equipmentDict = {}
-
-            try:
-                for line in file:
-                    equipmentStr = eval(line)
-                    if isinstance(eval(equipmentStr), dict):
-                        equipmentDict.update(eval(equipmentStr))
-                    else:
-                        return ResponseFormal(706)
-                    UID = equipmentDict.get('UID', None)
-                    userID_id = equipmentDict.get('userID_id', None)
-
-                    dUser = Device_User.objects.filter(userID = userID_id)
-                    if dUser:
-                        if UID != None and userID_id != None:
-                            dInfo = Device_Info.objects.filter(userID_id = userID_id, UID = UID)
-                            if dInfo:
-                                errorCount += 1
-                                continue
-                            else:
-                                equipment = Device_Info(id = CommonService.getUserID(getUser=False), **equipmentDict)
-                                equipmentList.append(equipment)
-                        else:
-                            errorCount += 1
-                            errorDict = {'userID_id': userID_id, 'error_msg': u'The userID_id is None or UID is None!'}
-                            error_list.append(errorDict)
-
-                            continue
-
-                    else:
-                        errorCount += 1
-                        errorDict = {'userID_id': userID_id, 'error_msg': u'The userID_id is no exist!'}
-                        error_list.append(errorDict)
-
-                        continue
-
-                file.close()
-                sss = Device_Info.objects.bulk_create(equipmentList)
-                print(type(sss), sss)
-
-            except Exception as e:
-                errorInfo = traceback.format_exc()
-                print('The error Info: %s' % errorInfo)
-                return ResponseFormal(707,{'details':repr(e)})
-            else:
-                if len(error_list) > 0:
-                    error_msg['error'] = error_list
-
-                if errorCount > 0:
-                    if error_msg != None:
-                        return ResponseFormal(0, {'errorCount': errorCount,
-                                    'error': error_msg,
-                                    'appending': len(equipmentList)})
-                    else:
-                        return ResponseFormal(0, { 'errorCount': errorCount,
-                                    'appending': len(equipmentList)})
-                else:
-                    return ResponseFormal(0,{'appending':len(equipmentList)})
-        else:
-            return ResponseFormal(701)

+ 17 - 222
Controller/CheckUserData.py

@@ -1,31 +1,28 @@
 # -*- coding: utf-8 -*-
 
-from random import Random # 用于生成随机码
+import os
+import re
+import traceback
+from random import Random  # 用于生成随机码
 from wsgiref.util import FileWrapper
-from django.utils.timezone import utc
+
+from django.contrib.auth.hashers import make_password
+from django.http import HttpResponse
+from django.utils.decorators import method_decorator
 from django.views.decorators.csrf import csrf_exempt
 from django.views.generic import TemplateView
-from django.utils.decorators import method_decorator
-from django.contrib.auth.hashers import make_password
-from itsdangerous import URLSafeTimedSerializer as utsr # itsdangerous序列化
-import re, base64, json, traceback, random, string
-from qcloudsms_py.httpclient import HTTPError
-from qcloudsms_py import SmsSingleSender
-from qcloudsms_py import SmsVoiceVerifyCodeSender, SmsVoicePromptSender
-from Model.models import Auth_Captcha,Device_User
+
 from Ansjer.settings import BASE_DIR
+from Model.models import Device_User
 from Object.ResponseObject import ResponseObject
-import datetime,os
-from Ansjer.config import TX_PHONE_APP_KEY,TX_PHONE_APP_ID
-from django.http import HttpResponse
 
 
-#生成随机字符串
-def RandomStr(randomlength = 8, number = False):
+# 生成随机字符串
+def RandomStr(randomlength=8, number=False):
     str = ''
     if number == False:
         characterSet = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsT' \
-                   'tUuVvWwXxYyZz0123456789'
+                       'tUuVvWwXxYyZz0123456789'
     else:
         characterSet = '0123456789'
 
@@ -37,100 +34,11 @@ def RandomStr(randomlength = 8, number = False):
 
     return str
 
-class MobiletoResetPwdView(TemplateView):
-    @method_decorator(csrf_exempt)
-    def dispatch(self, *args, **kwargs):
-        return super(MobiletoResetPwdView, self).dispatch(*args, **kwargs)
-
-    def get(self, request, *args, **kwargs):
-        request.encoding = 'gb2312'
-
-        userName = request.POST.get('userName', None)
-        authCode = request.POST.get('identifyingCode', None)
-        newPwd = request.POST.get('newPwd', None)
-
-        return self.ValidationError(userName, newPwd, authCode)
-
-    def post(self, request, *args, **kwargs):
-        request.encoding = 'utf-8'
-        userName = request.GET.get('userName', None)
-        authCode = request.GET.get('identifyingCode', None)
-        newPwd = request.GET.get('newPwd', None)
-
-        return self.ValidationError(userName, newPwd, authCode)
-
-    def ValidationError(self, userName, newPwd, authCode):
-        response = ResponseObject()
-        if userName != None and authCode != None and newPwd != None:
-            return self.MobiletoResetPwd(userName, authCode, newPwd, response)
-        else:
-            return response.json(800)
-    def MobiletoResetPwd(self, userName, authCode, newPwd,response):
-        UserValid = Device_User.objects.filter(username = userName).order_by('-data_joined')
-        if UserValid:
-            Users = Auth_Captcha.objects.filter(username = userName).order_by('-sendtime')
-
-            if Users:
-                for User in Users:
-                    if User.authcaptca == authCode and User.sendtype == 'forget':
-                        now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
-                        timeValid = (now_time - User.sendtime).total_seconds()
-
-                        if timeValid < 300:
-                            is_flag = UserValid.update(password=make_password(newPwd))
-                            if is_flag:
-                                return (0)
-                            else:
-                                return response.json(405)
-                        else:
-                            return response.json(120)
-        else:
-            return response.json(102)
 
 def date_handler(obj):
     return obj.isoformat()
 
 
-class TokenLink:
-    '''
-    1. security_key就是settings.py中设置的SECRET_KEY
-    2. generate_validate_token函数通过URLSafeTimedSerializer
-    在用户注册时生成一个令牌。用户名在令牌中被编了码。生成令牌之后,
-    会将带有token的验证链接发送到注册邮箱。
-    3.在confirm_validate_token函数中,只要令牌没过期,
-    那它就会返回一个用户名,过期时间为3600秒
-    '''
-    def __init__(self, security_key):
-        self.security_key = security_key
-        self.salt = base64.encodestring(security_key.encode())
-
-    def generate_validate_token(self, token):
-        serializer = utsr(self.security_key)
-        return serializer.dumps(token, self.salt)
-
-    def confirm_validate_token(self, token, expiration=3600):
-        serializer = utsr(self.security_key)
-        return serializer.loads(token, salt=self.salt, max_age=expiration)
-
-    def remove_validate_token(self, token):
-        serializer = utsr(self.security_key)
-        return serializer.loads(token, salt=self.salt)
-
-
-class getRandom:
-    def __init__(self):
-        self.__seed = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGH' \
-               'IJKLMNOPQRSTUVWXYZ!@#$%^&*()_+=-'
-    def getSalt (self, strlen = 8):
-        sa = []
-        for index in range (strlen):
-            sa.append(random.choice(self.__seed))
-        salt = ''.join(sa)
-        return salt
-    def getSaltStr(self, strlen = 8):
-        salt = ''.join(random.sample(string.ascii_letters + string.digits, strlen))
-        return salt
-
 class ModifyPwdView(TemplateView):
     @method_decorator(csrf_exempt)
     def dispatch(self, *args, **kwargs):
@@ -159,13 +67,13 @@ class ModifyPwdView(TemplateView):
             if oldPwd != newPwd:
                 return response.json(118)
             try:
-                User = Device_User.objects.get(userEmail = userEmail)
+                User = Device_User.objects.get(userEmail=userEmail)
                 User.userPwd = make_password(newPwd)
                 User.save()
             except Exception as e:
                 errorInfo = traceback.format_exc()
                 print('更新密码到数据库: %s' % errorInfo)
-                return response.json(501,{'msg':repr(e)})
+                return response.json(501, {'msg': repr(e)})
             else:
                 return response.json(0)
         else:
@@ -209,119 +117,6 @@ class DataValid:
         else:
             return False
 
-def sms(phoneNumbers, sendModel, msg, sendType = 'register', template_id = 7839):
-    appid = TX_PHONE_APP_ID
-    appkey = TX_PHONE_APP_KEY
-
-    print(phoneNumbers, msg, sendModel, template_id)
-    ssender = SmsSingleSender(appid, appkey)
-    response = ResponseObject()
-    try:
-        if sendType == 'register':
-            result = ssender.send(0, "86", phoneNumbers, u"{authCode}为您的注册验证码,请于2分钟内填写。"
-                                               u"如非本人操作,请忽略本短信。".format(authCode=msg), "", "")
-        elif sendType == 'forget':
-            result = ssender.send(0, "86", phoneNumbers, u"{userPwd}为您的账号新密码,请登录账号后,修改为"
-                                                                u"用户自定义密码.".format(userPwd=msg), "", "")
-    except HTTPError as e:
-        errorInfo = traceback.format_exc()
-        print('发送手机验证码出现网络错误: %s' % errorInfo)
-        return response.json(1022,{'msg':repr(e)})
-
-    except Exception as e:
-        errorInfo = traceback.format_exc()
-        print('发送手机短信验证码错误: %s' % errorInfo)
-        return response.json(1021)
-    else:
-        resultCode = result.get('result', None)
-        if resultCode == 0:
-            JSON = json.dumps(result, ensure_ascii=False)
-            return JSON
-        else:
-            errorJSON = json.dumps(result, ensure_ascii=False)
-            return errorJSON
-
-class QCloudSms(object):
-    def __init__(self, nationcode, msg, template_id):
-        self.appid = TX_PHONE_APP_ID
-        self.appkey = TX_PHONE_APP_KEY
-        self.msg = msg # 验证码msg
-        self.nationcode = nationcode # 国家码
-        self.template_id = template_id # 模板ID
-
-    def sms(self, mobiles, model, type = 'register'):
-        response = ResponseObject()
-        ssender = SmsSingleSender(self.appid, self.appkey)
-        try:
-            if type == 'register':
-                result = ssender.send(0, "86", mobiles, u"{authCode}为您的注册验证码,请于2分钟内填写。"
-                                                             u"如非本人操作,请忽略本短信。".format(authCode= self.msg), "", "")
-            elif type == 'forget':
-                result = ssender.send(0, "86", mobiles, u"{userPwd}为您的账号新密码,请登录账号后,修改为"
-                                                             u"用户自定义密码.".format(userPwd = self.msg), "", "")
-        except HTTPError as e:
-            errorInfo = traceback.format_exc()
-            print('发送手机短信验证码出现网络错误: %s' % errorInfo)
-            return response.json(1022,repr(e))
-        except Exception as e:
-            errorInfo = traceback.format_exc()
-            print('发送手机验证码错误: %s' % errorInfo)
-            return response.formal(1021,repr(e))
-        else:
-            resultCode = result.get('result', None)
-            if resultCode == 0:
-                JSON = json.dumps(result, ensure_ascii=False)
-                return JSON
-            else:
-                errorJSON = json.dumps(result, ensure_ascii=False)
-                return errorJSON
-
-    def voice(self, mobiles, model, type = 'register'):
-        # 语音验证码请求
-        response = ResponseObject()
-        vvcsender = SmsVoiceVerifyCodeSender(appid = self.appid, appkey = self.appkey)
-        try:
-            result = vvcsender.send(nation_code=self.nationcode, phone_number = \
-                mobiles, playtimes = 2, msg = self.msg, ext = '')
-        except HTTPError as e:
-            errorInfo = traceback.format_exc()
-            print('发送手机验证码出现网络错误: %s' % errorInfo)
-            return response.formal(1022,repr(e))
-        except Exception as e:
-            errorInfo = traceback.format_exc()
-            print('发送手机语音验证码错误: %s' % errorInfo)
-            return response.formal(1023,repr(e))
-        else:
-            resultCode = result.get('result', None)
-            if resultCode == 0:
-                JSON = json.dumps(result, ensure_ascii=False)
-                return JSON
-            else:
-                errorJSON = json.dumps(result, ensure_ascii=False)
-                return errorJSON
-
-        # 发送语音通知
-        vpsender = SmsVoicePromptSender(appid=self.appid, appkey=self.appkey)
-        # note: msg内容,首先需要申请内容模板,通过后才可以发送
-        try:
-            result = vpsender.send(nation_code=self.nationcode, phone_number = \
-                mobiles, playtimes = 2, msg = self.msg, ext= '')
-        except HTTPError as e:
-            errorInfo = traceback.format_exc()
-            print('发送手机验证码出现网络错误: %s' % errorInfo)
-            return ResponseFormal(1022,repr(e))
-        except Exception as e:
-            errorInfo = traceback.format_exc()
-            print('发送手机语音验证码错误: %s' % errorInfo)
-            return ResponseFormal(1023,repr(e))
-        else:
-            resultCode = result.get('result', None)
-            if resultCode == 0:
-                JSON = json.dumps(result, ensure_ascii=False)
-                return JSON
-            else:
-                errorJSON = json.dumps(result, ensure_ascii=False)
-                return errorJSON
 
 @csrf_exempt
 def download_file(request, Upgradename, *callback_args, **callback_kwargs):
@@ -354,7 +149,7 @@ def download_file(request, Upgradename, *callback_args, **callback_kwargs):
             response['Content-Error'] = JSON
             return response
         except Exception as e:
-            errorJSON = response.formal(10,'Wrong reason:' + repr(e))
+            errorJSON = response.formal(10, 'Wrong reason:' + repr(e))
             response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
             response['Content-Error'] = errorJSON
             return response
@@ -362,4 +157,4 @@ def download_file(request, Upgradename, *callback_args, **callback_kwargs):
         errorJSON = response.formal(907)
         response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
         response['Content-Error'] = errorJSON
-        return response
+        return response

+ 1 - 1
Controller/DeviceLog.py

@@ -66,7 +66,7 @@ def DeviceLog(request, uid):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 if page is None and line is None:
                     page = 1
                     line = 10000

+ 2 - 2
Controller/DeviceManage.py

@@ -53,7 +53,7 @@ class DeviceManage(View):
                 tko.valid()
                 response.lang = tko.lang
                 if tko.code == 0:
-                    userID = tko.userID()
+                    userID = tko.userID
                     if userID is not None:
                         if operation == 'query':
                             return self.query(request_dict, userID, response)
@@ -167,7 +167,7 @@ def Devices(request, UID):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 res = Device_Info.objects.filter(userID_id=userID,UID=UID)
                 send_dict = CommonService.qs_to_dict(res)
                 return response.json(0, send_dict)

+ 1 - 1
Controller/DeviceMeal.py

@@ -58,7 +58,7 @@ class DeviceMeal(View):
                 tko.valid()
                 response.lang = tko.lang
                 if tko.code == 0:
-                    userID = tko.userID()
+                    userID = tko.userID
                     if userID is not None:
                         if operation == 'query':
                             return self.query(request_dict, userID, response)

+ 0 - 53
Controller/DownloadController.py

@@ -1,53 +0,0 @@
-#!/usr/bin/env python3  
-# -*- coding: utf-8 -*-  
-"""
-@Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
-@AUTHOR: ASJRD018
-@NAME: AnserjRS
-@software: PyCharm
-@DATE: 2018/8/21 17:48
-@Version: python3.6
-@MODIFY DECORD:ansjer dev
-@file: DownloadController.py
-@Contact: chanjunkai@163.com
-"""
-from django.views.decorators.csrf import csrf_exempt
-from Service.CommonService import CommonService
-from Object.ResponseObject import ResponseObject
-from ratelimit.decorators import ratelimit
-from django.views.generic import TemplateView
-from django.utils.decorators import method_decorator
-from Object.TokenObject import TokenObject
-import json
-
-
-class SignOtaUrl(TemplateView):
-    @method_decorator(csrf_exempt)
-    def dispatch(self, *args, **kwargs):
-        return super(SignOtaUrl, self).dispatch(*args, **kwargs)
-
-    def post(self, request, *args, **kwargs):
-        request.encoding = 'utf-8'
-        request_dict = json.loads(request.body.decode('utf-8'))
-        return self.validation(request_dict, *args, **kwargs)
-
-    def get(self, request, *args, **kwargs):
-        request.encoding = 'utf-8'
-        request_dict = request.GET
-        return self.validation(request_dict, *args, **kwargs)
-
-    def validation(self, request_dict, *args, **kwargs):
-        token = request_dict.get('token', None)
-        response = ResponseObject()
-        if token is not None:
-            tko = TokenObject(token)
-            tko.valid()
-            code = tko.code
-            response.lang = tko.lang
-            if code == 0:
-                oid = tko.oid
-                return response.json(0,{'url':''})
-            else:
-                return response.json(code)
-        else:
-            return response.json(444, 'token')

+ 1 - 1
Controller/EquipmentInfo.py

@@ -41,7 +41,7 @@ class EquipmentInfo(View):
             var_dump(tko.lang)
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 operation = request_dict.get('operation', None)
                 if userID is not None and operation is not None:
                     if operation == 'query':

+ 5 - 5
Controller/EquipmentManager.py

@@ -196,7 +196,7 @@ def queryUserEquipmentInterface(request, *callback_args,
         tko.valid()
         response.lang = tko.lang
         if tko.code == 0:
-            userID = tko.userID()
+            userID = tko.userID
             if userID is not None:
                 try:
                     deviceValid = Device_Info.objects.filter(userID_id=userID)
@@ -241,7 +241,7 @@ def addNewUserEquipmentInterface(request, *callback_args,
         tko.valid()
         response.lang = tko.lang
         if tko.code == 0:
-            userID = tko.userID()
+            userID = tko.userID
             if userID is not None:
                 return addNewUserEquipment(userID, deviceContent, response)
             else:
@@ -278,7 +278,7 @@ def delUserEquipmentInterface(request, *callback_args,
         tko.valid()
         response.lang = tko.lang
         if tko.code == 0:
-            userID = tko.userID()
+            userID = tko.userID
             if userID is not None:
                 return delUserEquipment(userID, id, response)
             else:
@@ -314,7 +314,7 @@ def modifyUserEquipmentInterface(request, *callback_args,
         tko.valid()
         response.lang = tko.lang
         if tko.code == 0:
-            userID = tko.userID()
+            userID = tko.userID
             if userID is not None:
                 return modifyUserEquipment(userID, deviceContent, id, response)
             else:
@@ -341,7 +341,7 @@ def showAllUserEquipmentInterface(request, *callback_args, **callback_kwargs):
         tko.valid()
         response.lang = tko.lang
         if tko.code == 0:
-            userID = tko.userID()
+            userID = tko.userID
             if userID:
                 if type == 'PC':
                     return showAllUserEquipmentPC(userID, fieldDict, response)

+ 1 - 1
Controller/EquipmentOTA.py

@@ -39,7 +39,7 @@ class EquipmentOTA(View):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 if userID is not None:
                     operation = request_dict.get('operation', None)
                     if operation is not None:

+ 1 - 1
Controller/EquipmentSensor.py

@@ -70,7 +70,7 @@ class EquipmentSensor(View):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 if userID is not None:
                     operation = request_dict.get('operation', None)
                     if operation == 'add':

+ 1 - 1
Controller/FeedBackInfo.py

@@ -42,7 +42,7 @@ class FeedBackInfo(View):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 operation = request_dict.get('operation', None)
                 if userID is not None:
                     if operation == 'query':

+ 3 - 3
Controller/HlsManage.py

@@ -120,7 +120,7 @@ class HlsManage(View):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 if userID is not None:
                     uid = request_dict.get('uid', None)
                     channel = request_dict.get('channel', None)
@@ -159,7 +159,7 @@ class HlsManage(View):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 
                 if userID is not None:
                     key = request_dict.get('key', None)
@@ -208,7 +208,7 @@ class HlsManage(View):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 key = request_dict.get('key', None)
                 uid = request_dict.get('uid', None)
                 channel = request_dict.get('channel', None)

+ 1 - 1
Controller/LogAccess.py

@@ -36,7 +36,7 @@ def LogAccess(request):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 if userID is not None:
                     if page is not None and line is not None:
                         own_per = ModelService.check_permission(userID=userID, permID=30)

+ 2 - 2
Controller/LogManager.py

@@ -140,7 +140,7 @@ class HelpView(TemplateView):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 own_permission = ModelService.check_permission(userID=userID, permID=30)
                 if own_permission is True:
                     if reInfoType == 'version':
@@ -198,7 +198,7 @@ def upload_help_chm(request):
         tko.valid()
         response.lang = tko.lang
         if tko.code == 0:
-            userID = tko.userID()
+            userID = tko.userID
             own_permission = ModelService.check_permission(userID=userID, permID=30)
             if own_permission is True:
                 f = request.FILES.get('file', None)

+ 1 - 1
Controller/MealManage.py

@@ -51,7 +51,7 @@ class MealManage(View):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 if userID is not None:
                     operation = request_dict.get('operation', None)
                     if operation == 'query':

+ 28 - 57
Controller/OTAEquipment.py

@@ -16,60 +16,6 @@ from Object.TokenObject import TokenObject
 from django.http import HttpResponse
 from Ansjer.settings import BASE_DIR
 
-
-def getUrl(filePath, http_host):
-    urls = []
-    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())
-                urls.append(url)
-            else:
-                url = SERVER_DOMAIN + 'OTA/downloads/' + filePath.replace('\\', '/')
-                urls.append(url)
-        return urls
-    else:
-        return ''
-
-
-def getUpdataFileUrl(code, http_host, response):
-    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)})
-    else:
-        if equipmentValid:
-            equipment = equipmentValid[0]
-            file_path = equipment.filePath
-            url = getUrl(file_path, http_host)
-            https_url = getOTAHttps(file_path, http_host)
-            if len(url) > 0:
-                return response.json(0, {
-                    "urlCount": len(url),
-                    "url": url,
-                    'https_url': https_url,
-                    "fileSize": equipment.fileSize,
-                    "Description": equipment.Description,
-                })
-            else:
-                return response.json(901)
-        else:
-            return response.json(902)
-
-
-def getOTAHttps(filePath, http_host):
-    urls = ''
-    server_dm = 'https://' + http_host
-    if filePath.find('static/Upgrade/') != -1:
-        path = filePath.replace('static/Upgrade/', '').replace('\\', '/')
-        urls = server_dm + '/OTA/downloads/' + path + '?time=' + str(time.time())
-    return urls
-
 def addNewEquipmentVersion(deviceContent, token,response):
     """
     :param deviceContent:
@@ -276,11 +222,36 @@ def getUpdataFileUrlInterface(request):
     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 getUpdataFileUrl(code, http_host, response)
+        equipmentValid = Equipment_Version.objects.filter(code=code, status=1).order_by('-data_joined')
+        # 判断是否有版本存在
+        if equipmentValid:
+            equipment = equipmentValid[0]
+            file_path = equipment.filePath
+            urls = []
+            if file_path:
+                if file_path.find('static/Upgrade/') != -1:
+                    path = file_path.replace('static/Upgrade/', '').replace('\\', '/')
+                    url = SERVER_DOMAIN + '/OTA/downloads/' + path + '?time=' + str(time.time())
+                    https_url = url.replace('http','https')
+                    urls.append(url)
+            if len(urls) > 0:
+                return response.json(0, {
+                    "urlCount": len(urls),
+                    "url": urls,
+                    'https_url': https_url,
+                    "fileSize": equipment.fileSize,
+                    "Description": equipment.Description,
+                })
+            else:
+                return response.json(901)
+        else:
+            return response.json(902)
     else:
         return response.json(800)
 
 
+
 @csrf_exempt
 def downloadUpdataFileUrlInterface(request, fileType, fileName,
                                    *callback_args, **callback_kwargs):
@@ -372,7 +343,7 @@ class getUploadFiletoDirView(TemplateView):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 if userID is not None:
                     own_permission = ModelService.check_permission(userID=userID, permID=210)
                     if own_permission is True:
@@ -527,7 +498,7 @@ def showAllEquipmentVersionInterface(request):
         tko.valid()
         response.lang = tko.lang
         if tko.code == 0:
-            userID = tko.userID()
+            userID = tko.userID
             if userID:
                 return showAllEquipmentVersion(userID,response)
             else:

+ 9 - 9
Controller/PermissionManager.py

@@ -290,7 +290,7 @@ class queryRoleView(View):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 if userID:
                     return self.queryUserRole(userID,response)
                 else:
@@ -340,7 +340,7 @@ class addNewRoleView(View):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 if userID:
 
                     return self.AddNewUserRole(userID, content,response)
@@ -401,7 +401,7 @@ class delRoleView(View):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 if userID:
                     return self.delRole(userID, int(rid),response)
                 else:
@@ -446,7 +446,7 @@ class modifyRoleView(View):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 if userID:
                     return self.modifyRole(userID, int(rid), content,response)
                 else:
@@ -503,7 +503,7 @@ class addNewPermsView(View):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 if userID:
                     if type == 'PC':
                         return self.addNewPermission(userID=userID, request_dict=request_dict,response=response)
@@ -557,7 +557,7 @@ class delPermsView(View):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 if userID:
                     return self.delPerms(userID, id,response)
                 else:
@@ -613,7 +613,7 @@ class queryPermsView(View):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 if userID:
                     type = request_data.get('type',None)
                     if type == 'PC':
@@ -683,7 +683,7 @@ class modifyPermsView(View):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 if userID:
                     update_dict = {'permName':request_dict['permName'],'description':request_dict['description']}
                     return self.modifyPerms(userID=userID,id=request_dict['id'], update_dict=update_dict,response=response)
@@ -748,7 +748,7 @@ class queryRolePermsView(View):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 if userID:
                     return self.queryRolePerms(userID, allUser,response)
                 else:

+ 2 - 2
Controller/StreamMedia.py

@@ -74,7 +74,7 @@ class StreamMedia(View):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 own_permission = ModelService.check_permission(userID=userID, permID=60)
                 if own_permission is not True:
                     operation = request_dict.get('operation', None)
@@ -491,7 +491,7 @@ def Auth_Live(request, *callback_args,
         tko.valid()
         response.lang = tko.lang
         if tko.code == 0:
-            userID = tko.userID()
+            userID = tko.userID
             uid = request_dict.get('uid', None)
             channel = request_dict.get('channel', None)
             if userID is not None and uid is not None and channel is not None:

+ 1 - 1
Controller/SysManage.py

@@ -37,7 +37,7 @@ def updateLog(request):
         tko.valid()
         response.lang = tko.lang
         if tko.code == 0:
-            userID = tko.userID()
+            userID = tko.userID
             own_permission = ModelService.check_permission(userID=userID,permID=50)
             if own_permission is True:
                 file_path = os.path.join(BASE_DIR,'static/Help/version.txt')

+ 17 - 20
Controller/UserController.py

@@ -11,32 +11,29 @@
 @file: UserController.py
 @Contact: chanjunkai@163.com
 """
+import traceback
+
+import simplejson as json
 from django.contrib import auth
-from django.core import serializers
+from django.contrib.auth.hashers import make_password, check_password  # 对密码加密模块
+from django.http import HttpResponseRedirect
+from django.utils.decorators import method_decorator
 from django.utils.timezone import utc
-import traceback
 from django.views.decorators.csrf import csrf_exempt
-from django.views.generic import TemplateView, View
-from django.utils.decorators import method_decorator
-from django.core.files.storage import FileSystemStorage
-from django.http import HttpResponseRedirect
-from django.contrib.auth.hashers import make_password, check_password  # 对密码加密模块
-from Ansjer import settings as api_settings
-from Object.AWS.SesClassObject import SesClassObject
-from Model.models import Auth_Captcha, AuthToken_Token, Role
-from Controller.CheckUserData import DataValid, date_handler, RandomStr, TokenLink
-from Service.ModelService import ModelService
-from Service.MiscellService import MiscellService
-from django.utils import timezone
-from Ansjer.config import *
-from Service.CommonService import CommonService
-from Service.TemplateService import TemplateService
+from django.views.generic import TemplateView
 from ratelimit.decorators import ratelimit
+
+from Ansjer.config import *
+from Controller.CheckUserData import DataValid, date_handler, RandomStr
+from Model.models import Device_User
+from Object.AWS.SesClassObject import SesClassObject
+from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
-from Object.RedisObject import RedisObject
-from Model.models import Device_User
-import simplejson as json
+from Service.CommonService import CommonService
+from Service.MiscellService import MiscellService
+from Service.ModelService import ModelService
+from Service.TemplateService import TemplateService
 
 
 # 获取验证码

+ 11 - 5
Controller/UserManger.py

@@ -47,7 +47,7 @@ class showUserMoreView(TemplateView):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 if userID:
                     return self.showUserMore(userID, response)
                 else:
@@ -71,6 +71,12 @@ class showUserMoreView(TemplateView):
                 sqlDict = dict(zip(["datas"], [sqlList]))
                 for k, v in enumerate(sqlDict["datas"]):
                     sqlDict['datas'][k]['fields'].pop('password')
+                    userIconPath = sqlDict['datas'][k]['fields']['userIconPath']
+                    if userIconPath:
+                        if userIconPath.find('static/') != -1:
+                            userIconPath = userIconPath.replace('static/', '').replace('\\', '/')
+                            userIconUrl = SERVER_DOMAIN + '/account/getAvatar/' + userIconPath
+                            sqlDict['datas'][k]['fields']['userIconUrl'] = userIconUrl
                     if len(v['fields']['role']):
                         roleName = ModelService.getRole(rid=v['fields']['role'][0])
                         sqlDict["datas"][k]['fields']['rolename'] = roleName
@@ -107,7 +113,7 @@ class perfectUserInfoView(TemplateView):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                userID = tko.userID()
+                userID = tko.userID
                 if userID:
                     if userIcon != None:
                         # location = 'static/User/Images/' + userID[-11:] + '/'
@@ -236,7 +242,7 @@ def delUserInterface(request):
         tko.valid()
         response.lang = tko.lang
         if tko.code == 0:
-            userID = tko.userID()
+            userID = tko.userID
             if userID:
                 try:
                     userValid = Device_User.objects.filter(userID=userID)
@@ -349,7 +355,7 @@ def showAllUserInterface(request):
         tko.valid()
         response.lang = tko.lang
         if tko.code == 0:
-            userID = tko.userID()
+            userID = tko.userID
             if userID:
                 if type == 'PC':
                     line = int(request.POST.get('line', None))
@@ -396,7 +402,7 @@ class setUserValidView(View):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                superID = tko.userID()
+                superID = tko.userID
                 if superID != None and superID != eUserID:
                     if rid == None:
                         return self.UserValidUpdate(superID, eUserID, isValid, response)

+ 2 - 2
Controller/shareUserPermission.py

@@ -186,7 +186,7 @@ class shareUserEquipmentView(View):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                MasterID = tko.userID()
+                MasterID = tko.userID
                 if sharedAll and MasterID != None:
                     return self.shareUserSQL(MasterID, GuestID, True, response, args, kwargs)
                 if content != None and MasterID != None:
@@ -334,7 +334,7 @@ class unsharedUserEquipmentView(View):
             tko.valid()
             response.lang = tko.lang
             if tko.code == 0:
-                MasterID = tko.userID()
+                MasterID = tko.userID
                 if unsharedAll and MasterID != None:
                     return self.unsharedUserEquipmentSQL(MasterID, GuestID, True, response, args, kwargs)
                 else:

+ 0 - 3
Object/TokenObject.py

@@ -85,6 +85,3 @@ class TokenObject:
             lang = res['lang']
             refreshRes = self.generate(data={'userID': userID, 'lang': lang})
             return refreshRes
-
-    def userID(self):
-        return self.userID

+ 0 - 51
Object/TokenObject1.py

@@ -1,51 +0,0 @@
-#!/usr/bin/env python3  
-# -*- coding: utf-8 -*-  
-"""
-@Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
-@AUTHOR: ASJRD018
-@NAME: AnsjerOA
-@software: PyCharm
-@DATE: 2018/8/13 15:36
-@Version: python3.6
-@MODIFY DECORD:ansjer dev
-@file: TokenObject.py
-@Contact: chanjunkai@163.com
-"""
-from Ansjer.config import OAUTH_ACCESS_TOKEN_SECRET
-import jwt
-from Model.models import oauth_user
-
-class TokenObject:
-
-    def __init__(self, token=None):
-        if token == 'debug':
-            token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJvaWQiOiJhNDVmN2U3MC04NTAwLTRkOTItYWRkZS1mMmMxMDdkYzVkYzEiLCJsYW5nIjpudWxsLCJleHAiOjE1NzA5ODY4Mzl9.uDLfBjUQqWQB0pOMtXN17iikEbxztDhcus_UCH36XZw'
-        if token == 'test':
-            token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJvaWQiOiJhNDVmN2U3MC04NTAwLTRkOTItYWRkZS1mMmMxMDdkYzVkYzEiLCJsYW5nIjpudWxsLCJleHAiOjE1MzUwNzQ0Njl9.MW7iU_LMo_uqceYeoePVZiyJoYc1wZTJTxpxOa0aha8'
-        self.token = token
-        self.code = 0
-        self.userID = None
-        self.lang = None
-
-    def valid(self):
-        try:
-            res = jwt.decode(self.token, OAUTH_ACCESS_TOKEN_SECRET, algorithms='HS256')
-            self.userID = res.get('userID', None)
-            self.lang = res.get('lang', None)
-        except jwt.ExpiredSignatureError as e:
-            print('过期')
-            print(repr(e))
-            self.code = 307
-        except Exception as e:
-            print(repr(e))
-            self.code = 303
-
-    def userID(self):
-        oid = self.oid
-
-        if oid is not None:
-            oauth_user_qs = oauth_user.objects.filter(oid=oid)
-            if oauth_user_qs.exists():
-
-                return oauth_user_qs[0].userID.userID
-        return None

+ 1 - 48
Service/MiscellService.py

@@ -6,10 +6,6 @@ import requests
 import simplejson as json
 from django.utils.timezone import utc
 
-from Ansjer.config import SERVER_DOMAIN
-from Ansjer.settings import SECRET_KEY
-from Controller.CheckUserData import getRandom, TokenLink
-from Object.AWS.SesClassObject import SesClassObject
 from Object.TokenObject import TokenObject
 from Object.mongodb import mongodb
 from Service.CommonService import CommonService
@@ -21,48 +17,6 @@ from Service.TemplateService import TemplateService
 
 
 class MiscellService():
-    # aws ses邮件发送
-    @staticmethod
-    def ses_send_email_handle(data={}):
-        if data['type'] == 'forget':
-            print(SECRET_KEY)
-            tokenConfirm = TokenLink(SECRET_KEY)
-            redis_key = 'reset_pwd_key' + str(data['useremail'])
-            has_send = CommonService.get_redis_data(key=redis_key)
-
-            if has_send is False:
-                redis_val = str(time.time())
-                CommonService.set_redis_data(key=redis_key, val=redis_val, expire=3600)
-                gRan = getRandom()
-                userPwd = gRan.getSaltStr(strlen=6)
-                result = {'userEmail': data['useremail'], 'password': userPwd}
-                JSON = json.dumps(result, ensure_ascii=False)
-                tokenPwd = tokenConfirm.generate_validate_token(JSON)
-                ses = SesClassObject()
-                send_data = TemplateService.email_message(type='forget', language='en')
-                try:
-                    server_domain = SERVER_DOMAIN
-                    send_to_list = [data['useremail']]
-                    send_title = send_data['title']
-                    send_body = send_data['body'].format(username=data['username'], token=tokenPwd, redis_val=redis_val,
-                                                         domain=server_domain, userPwd=userPwd)
-                    print('send_body:' + send_body)
-                    send_res = ses.send_email(
-                        send_address_list=send_to_list,
-                        subject=send_title,
-                        body=send_body
-                    )
-                    print(send_body)
-                except Exception as e:
-                    errorInfo = traceback.format_exc()
-                    print(errorInfo)
-                    return False
-                else:
-                    return send_res
-            else:
-                return 'has_send'
-        return False
-
     # 获取访问用户名称
     @staticmethod
     def get_access_name(request_dict):
@@ -72,8 +26,7 @@ class MiscellService():
             tko = TokenObject(token)
             tko.valid()
             if tko.code == 0:
-                userID = ModelService.get_userID_by_oid(tko.oid)
-                user = ModelService.get_user_name(userID)
+                user = ModelService.get_user_name(tko.userID)
         return user
 
     @staticmethod

+ 1 - 10
Service/ModelService.py

@@ -123,13 +123,4 @@ class ModelService:
                                                           View_Password=View_Password, ChannelIndex=ChannelIndex)
         if device_info_queryset.exists():
             return True
-        return False
-
-    # 根据oid获取userID
-    @staticmethod
-    def get_userID_by_oid(oid):
-        if oid is not None:
-            oauth_user_qs = oauth_user.objects.filter(oid=oid)
-            if oauth_user_qs.exists():
-                return oauth_user_qs[0].userID.userID
-        return None
+        return False

+ 0 - 338
Service/ResponseService.py

@@ -1,338 +0,0 @@
-from django.shortcuts import HttpResponse
-import simplejson as json
-from Service.CommonService import CommonService
-from Model.models import Device_User
-from var_dump import var_dump
-
-
-def ResponseData(code, res={},*args, **kwargs):
-    token = CommonService.get_request_val('token')
-    language = kwargs.get('language', None)
-    if language is not None:
-        LANGUAGE = language
-    else:
-        LANGUAGE = 'en'
-    if token is not None:
-        # var_dump(token)
-        userID = CommonService.get_userID_byT(token)
-
-        if userID is not None:
-            dn = Device_User.objects.filter(userID=userID).values('language')
-            if dn.exists():
-                if dn[0]['language']:
-                    LANGUAGE = dn[0]['language']
-    data_en = {
-        0: 'Success',
-        4: 'Operation failed',
-        5: 'Please try again one minute later!',
-        10: res,
-        13: 'This device does not exist !',
-        14: 'This device does not belong to the user',
-        15: 'You have not opened this service',
-        44: 'System error! Can not send email',
-        48: 'System object error!',
-        54: 'Data is already exist!',
-        55: 'Data is not exist!',
-        60: 'The app info has already exist',
-        89: 'You have already obtained the verification code, please check it or get it again after 5 minutes.',
-        90: 'If you have too many times to log in, please try it in 10 seconds.',
-        101: 'The user account of the mobile phone has already existed!',
-        102: 'The user account of the mobile phone does not exist!',
-        103: 'The mailbox user account has already existed!',
-        104: 'The mailbox user account does not exist!',
-        105: 'The input username is empty!',
-        106: 'Create User Error',
-        107: 'The username format does not conform to the rules!',
-        108: 'The mailbox format does not conform to the rules! ',
-        109: 'The password format does not conform to the rules!',
-        110: 'Because the user is not activated, the user is an invalid user!',
-        111: 'The password you entered is incorrect!',
-        112: 'Unknown error can not update the password!',
-        113: 'This userID does not exist!',
-        114: 'Delete user failure error',
-        115: 'The userID of the user to delete does not exist!',
-        116: 'Update User information failed',
-        117: 'The userID you provide does not exist!',
-        118: 'You do not enter the password two times!',
-        120: 'The verification code has expired, please get the verification code again!',
-        121: 'The verification code is wrong!',
-        122: 'Please get the verification code first!',
-        140: 'Unable to Logout',
-        150: 'The superID is None or superID is equal to userID',
-        160: 'The All Equipment has been shared by the User!',
-        170: 'A part of the equipment has been shared!',
-        171: 'Delete Equipment sharing failed',
-        172: 'There is no Equipment for this User!',
-        173: 'The UID does not exist!',
-        174: 'The user equipment has already existed!',
-        175: 'The user equipment has already binding!',
-        176: 'Delete equipment error',
-        177: 'Update equipment error',
-        178: 'ADD equipment error',
-        179: 'Device name cannot be repeated',
-        190: 'The rid does not exist!',
-        191: 'The roleName does not exist!',
-        192: 'Delete role error',
-        193: 'An unknown error causes the role can not be deleted!',
-        194: 'Update role error',
-        195: 'An unknown error causes the role can not be updated!',
-        196: 'The User already has this role!',
-        197: 'The user failed to add a new role',
-        198: 'The user does not have this role!',
-        199: 'The user can not delete this role',
-        200: 'The role assigns new permissions to failure',
-        201: 'Some of the permissions you have provided do not exist!',
-        202: 'Delete user rights failure',
-        203: 'Delete role permissions fail',
-        204: 'Failure to clear all users Rights',
-        205: 'All permissions to clear the role fail',
-        206: 'Some of the permissions you have provided have already existed!',
-        207: 'Some of the permissions you provide have already existed, and some of the permissions do not exist!',
-        300: 'Unable to get Token!',
-        301: 'Add Token to database error!',
-        302: 'Update Token to database error',
-        303: 'There is a problem in the Token format!',
-        305: 'The Token format is wrong and the related parameter is None!',
-        304: 'The token base64 Decode Error',
-        306: 'The signature in the token is invalid!',
-        307: 'The Token has expired!',
-        308: 'The Refresh Token has expired.',
-        309: 'This token is not valid because there is no token in the database!',
-        310: 'The userID in the token is None!',
-        311: 'The token is None!',
-        312: 'tokenID_id is None!',
-        313: 'If the user landed on someone else, if not, please login and modify the password.',
-        403: 'API ERROR!',
-        404: 'You don not have permission to access this!',
-        414: 'Client error ! Please confirm the request path!',
-        424: 'Database Error !',
-        444: 'Please confirm the correctness of the parameters!',
-        500: 'Query Database Error:',
-        501: 'Update database error!',
-        502: 'In the database, the parameter fields do not exist!',
-        600: 'You do not have permission to query all user information!',
-        601: 'You have no permission to delete user!',
-        602: 'You have no permission to modify the user information!',
-        603: 'The User account does not have permission to do this!',
-        604: 'You do not have permission to query all user equipmnet information!',
-        605: 'You have no permission to upload OTA files!',
-        606: 'The user has not assigned the role!',
-        607: 'The user does not have permission to add a new role!',
-        608: 'You have no rights to assign roles to users!',
-        609: 'You have no authority to delete the user\'s role!',
-        610: 'You have no permissions to query the roles of all users!',
-        611: 'You have no permissions to add a new permission!',
-        612: 'You have no permissions to query the perms of all users!',
-        613: 'You have no permissions to query the permissions of all roles!',
-        614: 'You do not have the authority to delete the user\'s rights!',
-        615: 'The superAdmin(userID) account does not exist!',
-        616: 'The User(userID) account does not exist!',
-        800: 'Request KEY is None!',
-        801: 'Wrong request KEY!',
-        802: 'The content parameter contains an non - modifiable field!',
-        803: 'The content parameter format is wrong',
-        804: 'One of the parameters of content or sharedAll must be provided!',
-        805: 'One of the parameters of content or unsharedAll must be provided!',
-        806: 'The content parameter is incomplete!',
-        807: 'The role has already existed!',
-        808: 'Add a new role to the wrong',
-        815: 'The permissions have already existed!',
-        816: 'Add a new permissions error',
-        817: 'The permissions do not exist!',
-        818: 'The deletion of the permissions failed',
-        700: 'Upload file error',
-        701: 'The file does not exist!',
-        702: 'Open the file error',
-        704: 'The Execl file contains n tables!',
-        705: 'The Execl file or TXT file contains some error data!',
-        706: 'The file content format is wrong!',
-        707: 'Other unknown errors',
-        900: 'There is no information about this version!',
-        901: 'Getting URL failure!',
-        902: 'The code does not exist!',
-        903: 'The name of the file does not meet the conditions!',
-        904: 'The equipment version information has already existed.',
-        905: 'Add equipment version information failed',
-        906: 'Cause of file operation error',
-        907: 'The download file does not exist!',
-        908: 'CRC32 Error',
-        910: 'There are too many downloads. Please wait a moment...',
-        1000: 'Sorry, the link has expired!',
-        1001: 'The link is wrong!',
-        1002: 'Send mail Fail!',
-        1003: 'The link content format does not conform to the rules!',
-        1004: 'You have applied for reset password operation, please confirm it by mail.',
-        1021: 'Sending SMS verification code error',
-        1022: 'Network error occurs when the authentication code is sent',
-        1023: 'Send phone voice verification code error',
-        10002: 'The user landed else where before, if not, please modify the user account and password!',
-    }
-    data_cn = {
-        0: '成功',
-        4: '操作失败',
-        5: '请一分钟后再尝试',
-        10: res,
-        13: '该设备不存在',
-        14: '该设备不属于您',
-        15: '您尚未打开此服务',
-        44: '系统错误!无法发送电子邮件',
-        48: '系统对象错误',
-        54: '数据已存在!',
-        55: '数据不存在!',
-        60: 'APP信息已经存在',
-        89: '您已经获得了验证码,请在5分钟后检查或再次确认。',
-        90: '登录次数过多,请在10秒内尝试。',
-        101: '手机的用户账号已经存在!',
-        102: '手机的用户账号不存在!',
-        103: '邮箱用户帐户已经存在!',
-        104: '邮箱用户帐户不存在!',
-        105: '输入用户名为空!',
-        106: '创建用户错误',
-        107: '用户名格式不符合规则!',
-        108: '邮箱格式不符合规则!',
-        109: '密码格式不符合规则!',
-        110: '因为用户未激活,用户是无效用户!',
-        111: '您输入的密码不正确!',
-        112: '未知错误不能更新密码!',
-        113: '此用户标识不存在!',
-        114: '删除用户失败错误',
-        115: '删除用户的用户名不存在!',
-        116: '更新用户信息失败',
-        117: '您提供的用户标识不存在!',
-        118: '你不输入密码两次!',
-        120: '验证码已经过期,请再次获得验证码!',
-        121: '验证码错了!',
-        122: '请先拿到验证码!',
-        140: '无法注销',
-        150: '超级用户不存在或者用户id错误',
-        160: '所有设备已被用户共享!',
-        170: '部分设备已经共享!',
-        171: '删除设备共享失败',
-        172: '这个用户没有设备!',
-        173: '设备UID不存在!',
-        174: '用户设备已经存在!',
-        175: '用户设备已经绑定了!',
-        176: '删除设备错误',
-        177: '更新设备错误',
-        178: '添加设备错误',
-        179: '设备名称不能重复',
-        190: '角色rid不存在!',
-        191: '角色名不存在!',
-        192: '删除角色错误',
-        193: '未知的错误导致角色不能被删除!',
-        194: '更新角色错误',
-        195: '未知的错误导致角色无法更新!',
-        196: '该用户已经拥有这个角色!',
-        197: '该用户未能添加新角色。',
-        198: '该用户没有这个角色!',
-        199: '该用户不能删除此角色',
-        200: '为角色分配新权限失败。',
-        201: '您提供的某些权限不存在!',
-        202: '删除用户权限失败',
-        203: '删除角色权限失败',
-        204: '未能清除所有用户权限',
-        205: '清除角色所有的权限失败',
-        206: '您提供的某些权限已经存在!',
-        207: '您提供的某些权限已经存在,并且某些权限不存在!',
-        300: '无法获取令牌!',
-        301: '添加令牌到数据库错误!',
-        302: '更新令牌到数据库错误',
-        303: '令牌格式有问题!',
-        305: '令牌格式是错误的,相关参数是不存在的!',
-        304: '令牌Base64解码错误',
-        306: '令牌中的签名无效!',
-        307: '令牌已经过期!',
-        308: '刷新令牌已过期。',
-        309: '此令牌无效,因为数据库中没有标记!',
-        310: '令牌中的用户名不存在!',
-        311: '令牌为空!',
-        312: '令牌id为空!',
-        313: '账号在其它地方进行过登录,如果不是本人操作,请登录并修改密码。',
-        403: 'API错误!',
-        404: '您没有访问的权限!',
-        414: '客户端错误!请确认请求路径!',
-        424: '数据库错误!',
-        444: '请确认参数的正确性!',
-        500: '查询数据库错误!',
-        501: '更新数据库错误!',
-        502: '在数据库中,参数字段不存在!',
-        600: '您没有权限查询所有用户信息!',
-        601: '您没有权限删除用户!',
-        602: '您没有修改用户信息的权限!',
-        603: '用户帐户没有权限执行此操作!',
-        604: '您没有权限查询所有用户设备信息!',
-        605: '你没有上传OTA文件的权限!',
-        606: '用户没有分配角色!',
-        607: '用户没有添加新角色的权限!',
-        608: '您无权分配角色给用户!',
-        609: '您没有权限删除用户的角色!',
-        610: '您没有权限查询所有用户的角色!',
-        611: '您没有添加新权限的权限!',
-        612: '您没有查询所有用户的权限的权限!',
-        613: '您没有权限查询所有角色的权限!',
-        614: '您没有权限删除用户的权限!',
-        615: '超级管理员(USEID)帐户不存在!',
-        616: '用户(USERID)帐户不存在!',
-        800: '请求参数不存在!',
-        801: '错误的请求参数!',
-        802: 'content参数错误!',
-        803: 'content参数格式错误',
-        804: 'content或sharedAll参数没有传递',
-        805: 'content或unsharedAll参数没有传递',
-        806: 'content参数不完整!',
-        807: '角色已经存在!',
-        808: '添加新角色错误',
-        815: '权限已经存在!',
-        816: '新增权限错误',
-        817: '权限不存在',
-        818: '删除权限错误',
-        700: '上传文件错误',
-        701: '文件不存在',
-        702: '打开文件错误',
-        704: 'Excel文件包含n个表!',
-        705: 'Excel文件或TXT文件包含一些错误数据!',
-        706: '文件内容格式错误!',
-        707: '其他未知错误',
-        900: '版本信息不存在',
-        901: '获取链接失败',
-        902: 'code不存在!',
-        903: '文件名不符合条件!',
-        904: '设备版本信息已经存在。',
-        905: '添加设备版本信息失败',
-        906: '文件操作错误',
-        907: '下载文件不存在!',
-        908: 'CRC32 错误',
-        910: '下载太多了。请稍等…',
-        1000: '对不起,链接已经过期!',
-        1001: '链接错误!',
-        1002: '发送邮件失败!',
-        1003: '链接内容格式不符合规则!',
-        1004: '您已申请重置密码操作,请通过邮件确认。',
-        1021: '发送短信验证码错误',
-        1022: '当发送验证码时发生网络错误',
-        1023: '发送电话语音验证码错误',
-        10002: '用户登陆之前的其他地方,如果没有,请修改用户帐号和密码!',
-    }
-    if LANGUAGE == 'en':
-        data = data_en
-    elif LANGUAGE == 'cn':
-        data = data_cn
-    else:
-        data = data_en
-    return {'code': code, 'reason': data[code], 'result': res}
-
-
-def ResponseFormal(code, res={},*args, **kwargs):
-    data = ResponseData(code, res,*args, **kwargs)
-    resJSON = json.dumps(
-        {
-            "result_code": data['code'],
-            "reason": data['reason'],
-            "result": data['result'],
-            "error_code": data['code'],
-        }, ensure_ascii=False)
-    return resJSON
-
-
-def ResponseJSON(code, res={},*args, **kwargs):
-    return HttpResponse(ResponseFormal(code, res,*args, **kwargs))

+ 0 - 270
Service/TokenManager.py

@@ -1,270 +0,0 @@
-# -*- coding: utf-8 -*-
-from datetime import datetime
-from calendar import timegm
-from Model.models import AuthToken_Token, Device_User
-import time, base64, hmac, random, string,simplejson as json
-import traceback
-from django.utils.timezone import utc
-import datetime as utdatetime
-from Service.ResponseService import ResponseFormal
-from Ansjer.config import EXPIRATION_DELTA,REFRESH_EXPIRATION_DELTA
-
-
-def SQLManager(content):
-    tokenID_id = content.get('tokenID_id', None)
-    if tokenID_id != None:
-        tokenIDValid = AuthToken_Token.objects.filter(tokenID_id=tokenID_id)
-        if tokenIDValid:
-            try:
-                content.pop('tokenID_id')
-                tokenIDValid.update(**content)
-                tokenIDValid.update(last_update=utdatetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc))
-            except Exception as e:
-                errorInfo = traceback.format_exc()
-                print('更新Token错误: %s ' % errorInfo)
-                return ResponseFormal(302,{'details':repr(e)})
-            else:
-                return ResponseFormal(0)
-        else:
-            try:
-                authToken = AuthToken_Token(**content)
-                authToken.save()
-            except Exception as e:
-                errorInfo = traceback.format_exc()
-                print('添加Token错误: %s ' % errorInfo)
-                return ResponseFormal(301,{'details':repr(e)})
-            else:
-                return ResponseFormal(0)
-    else:
-        return ResponseFormal(312)
-
-class JSONTokenManager:
-    def __init__(self):
-        self.iCode = ''
-        self.errormsg = ''
-        self.accessDict = {}
-        self. refreshDict = {}
-
-    def getSalt(self, strLen = 6):
-        """
-        获取指定长度strLen的字符串
-        :param strLen:
-        :return: 返回获取到指定长度的字符串
-        """
-        salt = ''.join(random.sample(string.ascii_letters + string.digits, strLen))
-        return salt
-
-    def generate_AToken(self, JSON , iCode):
-        """
-
-        :param JSON:
-        :param iCode:
-        :return:
-        """
-        orig_iat = datetime.utcnow().utctimetuple()
-        exp_at = (datetime.utcnow() + EXPIRATION_DELTA).utctimetuple()
-        exp_rt = (datetime.utcnow() + REFRESH_EXPIRATION_DELTA).utctimetuple()
-
-
-        userJSON = json.loads(JSON)
-        expDict = {'orig_iat': timegm(orig_iat), 'exp_at': timegm(exp_at), 'exp_rt': timegm(exp_rt)}
-        userJSON.update(expDict)
-        exp_rtJSON = json.dumps(userJSON, ensure_ascii=False)
-        userJSON.pop('exp_rt')
-        exp_atJSON = json.dumps(userJSON, ensure_ascii=False)
-        print(exp_rtJSON, exp_atJSON)
-
-        hmac_at = hmac.new(exp_atJSON.encode('utf-8'), iCode.encode('utf-8')).hexdigest()
-        hmac_rt = hmac.new(exp_rtJSON.encode('utf-8'), iCode.encode('utf-8')).hexdigest()
-        access_token = exp_atJSON + '&' + hmac_at
-        refresh_token = exp_rtJSON + '&' + hmac_rt
-
-        b64_access_token = base64.urlsafe_b64encode(access_token.encode("utf-8"))
-        b64_refresh_token = base64.urlsafe_b64encode(refresh_token.encode("utf-8"))
-
-        tokenDict = {'access_token': b64_access_token.decode('utf-8'), 'refresh_token': b64_refresh_token.decode('utf-8'), \
-                     'iCode': iCode, 'mCode': userJSON.get('mCode', '')}
-        tokenDict['tokenID_id'] = userJSON.get('userID', None)
-        print(tokenDict)
-
-        sqlJSON = SQLManager(content=tokenDict)
-        sqlDict = json.loads(sqlJSON)
-        error_code = sqlDict.get('error_code', None)
-        if error_code != None and error_code == 0:
-            b64_alist = list(b64_access_token.decode('utf-8'))
-            b64_alist.insert(12, self.getSalt(strLen=6))
-            b64_atoken = ''.join(b64_alist)
-            b64_rflist = list(b64_refresh_token.decode('utf-8'))
-            b64_rflist.insert(12, self.getSalt(strLen=6))
-            b64_rftoken = ''.join(b64_rflist)
-            token = {'access_token': b64_atoken[::-1], 'refresh_token': b64_rftoken[::-1]}
-            dictJSON = {'result_code': 0,  'reason': 'Success', 'result': token, 'error_code': 0}
-            return json.dumps(dictJSON, ensure_ascii=False)
-        else:
-            return sqlJSON
-
-    def verify_AToken(self, token, isAToken = True):
-        if token == 'stest':
-            self.accessDict['userID'] = '151547867345163613800138001'
-            return 0
-        if token == 'sformal':
-            self.accessDict['userID'] = '151564262337939513800138001'
-            return 0
-        """
-        :param token:
-        :param isAToken:
-        :return:
-        """
-        access_token = token[::-1]
-        if len(access_token) < 18:
-            return 303
-        atoken = access_token[:12] + access_token[18:]
-        print(atoken)
-        try:
-            token_str = base64.urlsafe_b64decode(atoken).decode('utf-8')
-        except Exception as e:
-            errorInfo = traceback.format_exc()
-            print('base64 decode error: %s' % errorInfo)
-
-            self.errormsg = 'base64 decode error: %s' % repr(e)
-            return 304
-
-        token_list = token_str.split('&')
-        if len(token_list) != 2:
-            return 303
-
-        ts_str = token_list[0]
-        jsonDict = json.loads(ts_str)
-        print(jsonDict)
-
-        userID = jsonDict.get('userID', None)
-
-        mCode = jsonDict.get('mCode', None)
-        if userID == None or mCode == None:
-            return 303
-
-        try:
-            if isAToken:
-                authToken = AuthToken_Token.objects.filter(tokenID_id=userID, access_token=atoken)
-            else:
-                authToken = AuthToken_Token.objects.filter(tokenID_id=userID, refresh_token=atoken)
-        except Exception as e:
-            errorInfo = traceback.format_exc()
-            print('Database Query error: %s' % errorInfo)
-
-            self.errormsg = 'Database Query error: %s' % repr(e)
-            return 500
-
-        if authToken:
-            self.iCode = authToken[0].iCode
-            hmac_token = token_list[1]
-            hmac_at = hmac.new(ts_str.encode('utf-8'), self.iCode.encode('utf-8')).hexdigest()
-            if hmac_at != hmac_token:
-                return 306
-        else:
-            try:
-                mCodeToken = AuthToken_Token.objects.filter(tokenID_id=userID)
-            except Exception as e:
-                errorInfo = traceback.format_exc()
-                print('Database Query error: %s' % errorInfo)
-
-                self.errormsg = 'Database Query error: %s' % repr(e)
-                return 500
-
-            if mCodeToken:
-                '''
-                if mCodeToken[0].mCode != mCode:
-                    return 313
-                else:
-                    return 309
-                '''
-                pass
-            else:
-                return 309
-
-        if isAToken:
-            self.accessDict = jsonDict
-            exp_at = jsonDict.get('exp_at', None)
-            if exp_at == None:
-                return 305
-            if time.time() - float(exp_at) > 0:
-                return 309
-        else:
-            self.refreshDict = jsonDict
-            exp_rt = jsonDict.get('exp_rt', None)
-            if exp_rt == None:
-                return 305
-            if time.time() - float(exp_rt) > 0:
-                try:
-                    Device_User.objects.filter(userID = userID).update(online = False)
-                except Exception as e:
-                    errorInfo = traceback.format_exc()
-                    print('Database Query error: %s' % errorInfo)
-
-                    self.errormsg = 'Database Query error: %s' % repr(e)
-                    return 500
-
-                return 308
-        try:
-            device_user = Device_User.objects.get(userID=userID)
-            device_user.online=True
-            device_user.save()
-        except Exception as e:
-            pass
-        return 0
-
-    def refresh_AToken(self, Token):
-        """
-
-        :param Token:
-        :return:
-        """
-        print('refresh_AToken')
-        error_code = self.verify_AToken(token = Token, isAToken = False)
-        if error_code == 0:
-            refreshDict = self.refreshDict
-            if refreshDict.get('exp_at', None) != None:
-                exp_at = (datetime.utcnow() + EXPIRATION_DELTA).utctimetuple()
-                refreshDict['exp_at'] = timegm(exp_at)
-                refreshDict.pop('exp_rt')
-                JSON = json.dumps(refreshDict, ensure_ascii=False)
-                hmac_at = hmac.new(JSON.encode('utf-8'), self.iCode.encode('utf-8')).hexdigest()
-                access_token = JSON + '&' + hmac_at
-                b64_at = base64.urlsafe_b64encode(access_token.encode("utf-8"))
-                userID = refreshDict.get('userID', None)
-                tokenDict = {'access_token': b64_at.decode('utf-8')}
-                tokenDict['tokenID_id'] = userID
-                sqlJSON = SQLManager(content=tokenDict)
-                sqlDict = json.loads(sqlJSON)
-                error_code = sqlDict.get('error_code', None)
-                if error_code != None and error_code == 0:
-                    b64_alist = list(b64_at.decode('utf-8'))
-                    b64_alist.insert(12, self.getSalt(strLen=6))
-                    b64_atoken = ''.join(b64_alist)
-                    token = {'access_token': b64_atoken[::-1], }
-                    dictJSON = {'result_code': 0, 'reason': 'Success', 'result': token, 'error_code': 0}
-                    return json.dumps(dictJSON, ensure_ascii=False)
-                else:
-                    return sqlJSON
-        else:
-            return self.errorCodeInfo(error_code)
-
-    def deToken(self,token):
-        try:
-            b64_alist = list(token)
-            b64_alist.insert(12, self.getSalt(strLen=6))
-            b64_atoken = ''.join(b64_alist)
-            res_token = b64_atoken[::-1]
-            code = self.verify_AToken(res_token)
-            if code == 0:
-                return res_token
-            else:
-                return False
-        except Exception as e:
-            return False
-
-    def errorCodeInfo(self, error_code):
-        print(error_code)
-
-        return ResponseFormal(error_code)
-