Browse Source

增加邮件
微调

chenjunkai 7 years ago
parent
commit
f3dad1e46e

+ 3 - 63
Ansjer/test/666.py

@@ -1,64 +1,4 @@
-from boto3.session import Session
-import traceback
 
-AWS_ACCESS_ID = 'AKIAJKPU23EU5QWHFPKQ'
-AWS_ACCESS_SECRET = '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'
-AWS_ACCESS_REGION = 'us-east-1'
-COMPANY_EMAIL = 'user_server@nsst.com'
-
-
-class SesClassObject:
-    def __init__(self, *args, **kwargs):
-        self.access_id = AWS_ACCESS_ID
-        self.access_secret = AWS_ACCESS_SECRET
-        self.region_name = AWS_ACCESS_REGION
-        self.company_email = COMPANY_EMAIL
-        session = Session(
-            aws_access_key_id=AWS_ACCESS_ID,
-            aws_secret_access_key=AWS_ACCESS_SECRET,
-            region_name=AWS_ACCESS_REGION,
-        )
-        self.conn = session.client('ses')
-
-    def send_email(self, send_address_list=[], subject='', body=''):
-        try:
-            response = self.conn.send_email(
-                # 发送人
-                Source=self.company_email,
-                Destination={
-                    # 收件人
-                    'ToAddresses': send_address_list
-                },
-                Message={
-                    # 标题
-                    'Subject': {
-                        'Data': subject,
-                        'Charset': 'utf-8'
-                    },
-                    'Body': {
-                        'Html': {
-                            'Data': body,
-                            'Charset': 'utf-8'
-                        }
-                    }
-                },
-            )
-        except Exception as e:
-            errorInfo = traceback.format_exc()
-            print(errorInfo)
-            self.send_email(send_address_list=[self.company_email], subject='邮件发送错误信息提醒',
-                            body='<br>请向开发人员反馈并修改</br>' + '\n错误信息位' + str(errorInfo))
-        if response['MessageId']:
-            return True
-        else:
-            print(response)
-            self.send_email(send_address_list=[self.company_email], subject='邮件发送错误信息提醒', body='<br>请向开发人员反馈并修改</br>')
-            return False
-
-ses = SesClassObject()
-send_res = ses.send_email(
-    send_address_list=['1758730877@qq.com'],
-    subject='P2P日志文件',
-    body='test')
-from var_dump import var_dump
-var_dump(send_res)
+for i in range(0, 500001):
+    print('\r' + str(i/10), end='') 
+print('33333333333')

+ 155 - 0
Ansjer/test/util/email_log.py

@@ -0,0 +1,155 @@
+# coding=utf-8
+# + + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + +
+#        ┏┓   ┏┓+ +
+#    ┏┛┻━━━┛┻┓ + +
+#    ┃       ┃  
+#    ┃   ━   ┃ ++ + + +
+#    ████━████ ┃+
+#    ┃       ┃ +
+#    ┃   ┻   ┃
+#    ┃       ┃ + +
+#    ┗━┓   ┏━┛
+#      ┃   ┃           
+#      ┃   ┃ + + + +
+#      ┃   ┃    Codes are far away from bugs with the animal protecting   
+#      ┃   ┃ +     神兽保佑,代码无bug  
+#      ┃   ┃
+#      ┃   ┃  +         
+#      ┃    ┗━━━┓ + +
+#      ┃        ┣┓
+#      ┃        ┏┛
+#      ┗┓┓┏━┳┓┏┛ + + + +
+#       ┃┫┫ ┃┫┫
+#       ┗┻┛ ┗┻┛+ + + +
+# + + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + +"""
+"""
+"""
+import base64
+import hashlib
+import time
+
+import datetime
+
+
+def getTimeDict(times):
+    time_dict = []
+    t = 0
+    for x in range(24):
+        if x < 10:
+            x = '0' + str(x)
+        else:
+            x = str(x)
+        # a = times.strftime("%Y-%m-%d") + " " + x
+        a = times.strftime("%Y%m%d") + x
+        time_dict.append(a)
+        t += 1
+    return time_dict
+
+
+def md5s(text, isBackByte=False):
+    """md5加密函数"""
+    md5 = hashlib.md5()
+    if isinstance(text, bytes):
+        md5.update(text)
+    else:
+        md5.update(text.encode('utf-8'))
+
+    if isBackByte:
+        # 返回二进制的加密结果
+        return md5.digest()
+
+        # 返回十六进制的机密结果
+    return md5.hexdigest()
+
+
+def base64_encode(text, isBytes=False):
+    """进行base64编码处理"""
+    if isBytes:
+        return base64.b64encode(text)
+    return base64.b64encode(bytes(text, encoding="utf-8"))
+
+
+def get_timestamp10():
+    """获取当前时间长度为10位长度的时间戳"""
+    return int(time.time())
+
+
+def get_sign_url_content(to_tt):
+    # url = '13.56.141.156:81'
+    # url = '35.176.238.187:81'
+    url = '111.230.145.16:81'
+    secret = 'ansjer';  # 密钥--对应#st的哈希格式为 secret+url+e,e为时间戳单位s,url为请求地址  secure_link_md5 xiaozhong.com$uri$arg_e;
+    # path = '/hls/5553.mp4/index.m3u8'  # 下载文件
+    # path = '/L59KVYDAEPHR1T6M111A_0/555666.mp4'  # 下载文件
+    path = '/Relay' + to_tt + '.txt'  # 下载文件
+    # path = '/444.mp4'  # 下载文件
+    # 下载到期时间,time是当前时间,300表示300秒,也就是说从现在到300秒之内文件不过期
+    expire = get_timestamp10() + 3600;
+    res = md5s(str(secret) + str(path) + str(expire), True)
+    md5_str = str(base64_encode(res, True))
+    md5_str = md5_str.replace('b\'', '').replace('\'', '').replace('+', '-').replace('/', '_').replace('=', '')
+    sig_uri = 'http://' + url + path + '?' + 'st=' + str(md5_str) + '&e=' + str(expire)
+    # print(sig_uri)
+    return {
+        'url' : sig_uri,
+        'time' :to_tt
+    }
+
+
+to_date = datetime.datetime.now() - datetime.timedelta(days=1)
+to_list = getTimeDict(to_date)
+
+HTML_DATA = ''
+# sign_uri_list = []
+for tt in to_list:
+    su = get_sign_url_content(to_tt=tt)
+    HTML_DATA +='<p><span><a href="{{url}}" target="_Blank">{{time}}<a></span></p>'.replace("{{time}}",su['time']).replace("{{url}}",su['url'])
+    # sign_uri_list.append(su)
+# print(sign_uri_list)
+# print(HTML_DATA)
+print(type(HTML_DATA))
+from boto3.session import Session
+import traceback
+
+AWS_ACCESS_ID = 'AKIAJKPU23EU5QWHFPKQ'
+AWS_ACCESS_SECRET = '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'
+AWS_ACCESS_REGION = 'us-east-1'
+COMPANY_EMAIL = 'user_server@nsst.com'
+session = Session(
+    aws_access_key_id=AWS_ACCESS_ID,
+    aws_secret_access_key=AWS_ACCESS_SECRET,
+    region_name=AWS_ACCESS_REGION,
+)
+conn = session.client('ses')
+
+try:
+    response = conn.send_email(
+        # 发送人
+        Source=COMPANY_EMAIL,
+        Destination={
+            # 收件人
+            'ToAddresses': [COMPANY_EMAIL]
+            # 'ToAddresses': ['1758730877@qq.com']
+        },
+        Message={
+            # 标题
+            'Subject': {
+                # 'Data': '英国P2P日志文件',
+                'Data': '中国P2P日志文件',
+                # 'Data': '美国P2P日志文件',
+                'Charset': 'utf-8'
+            },
+            'Body': {
+                'Html': {
+                    'Charset': 'UTF-8',
+                    'Data': HTML_DATA,
+                },
+            }
+        },
+    )
+except Exception as e:
+    errorInfo = traceback.format_exc()
+    print(errorInfo)
+else:
+    print('yes')
+

+ 83 - 0
Ansjer/test/util/encryDownLoad.py

@@ -0,0 +1,83 @@
+# coding=utf-8
+# + + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + +
+#        ┏┓   ┏┓+ +
+#    ┏┛┻━━━┛┻┓ + +
+#    ┃       ┃  
+#    ┃   ━   ┃ ++ + + +
+#    ████━████ ┃+
+#    ┃       ┃ +
+#    ┃   ┻   ┃
+#    ┃       ┃ + +
+#    ┗━┓   ┏━┛
+#      ┃   ┃           
+#      ┃   ┃ + + + +
+#      ┃   ┃    Codes are far away from bugs with the animal protecting   
+#      ┃   ┃ +     神兽保佑,代码无bug  
+#      ┃   ┃
+#      ┃   ┃  +         
+#      ┃    ┗━━━┓ + +
+#      ┃        ┣┓
+#      ┃        ┏┛
+#      ┗┓┓┏━┳┓┏┛ + + + +
+#       ┃┫┫ ┃┫┫
+#       ┗┻┛ ┗┻┛+ + + +
+# + + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + +"""
+"""
+"""
+import base64
+import hashlib
+import time
+
+def md5(text, isBackByte=False):
+    """md5加密函数"""
+    md5 = hashlib.md5()
+    if isinstance(text, bytes):
+        md5.update(text)
+    else:
+        md5.update(text.encode('utf-8'))
+
+    if isBackByte:
+        # 返回二进制的加密结果
+        return md5.digest()
+
+        # 返回十六进制的机密结果
+    return md5.hexdigest()
+
+
+def base64_encode(text, isBytes=False):
+    """进行base64编码处理"""
+    if isBytes:
+        return base64.b64encode(text)
+    return base64.b64encode(bytes(text, encoding="utf-8"))
+
+
+def get_timestamp10():
+    """获取当前时间长度为10位长度的时间戳"""
+    return int(time.time())
+
+
+secret = 'ansjer';  # 密钥--对应#st的哈希格式为 secret+url+e,e为时间戳单位s,url为请求地址  secure_link_md5 xiaozhong.com$uri$arg_e;
+# path = '/hls/5553.mp4/index.m3u8'  # 下载文件
+# path = '/L59KVYDAEPHR1T6M111A_0/555666.mp4'  # 下载文件
+path = '/2213.txt'  # 下载文件
+# path = '/444.mp4'  # 下载文件
+# 下载到期时间,time是当前时间,300表示300秒,也就是说从现在到300秒之内文件不过期
+expire = get_timestamp10() + 3600;
+res = md5(str(secret) + str(path) + str(expire), True)
+md5 = str(base64_encode(res, True))
+md5 = md5.replace('b\'', '').replace('\'', '').replace('+', '-').replace('/', '_').replace('=', '')
+print('io:','http://13.56.141.156:81'+path+'?' + 'st=' + str(md5) + '&e=' + str(expire))
+
+
+def getTimeDict(times):
+    time_dict = {}
+    t = 0
+    for x in range(24):
+        if x < 10:
+            x = '0' + str(x)
+        else:
+            x = str(x)
+        a = times.strftime("%Y-%m-%d") + " " + x + ":00:00"
+        time_dict[t] = timezone.datetime.strptime(a, '%Y-%m-%d %H:%M:%S')
+        t += 1
+    return time_dict

+ 3 - 1
Ansjer/urls.py

@@ -1,8 +1,9 @@
 from django.contrib import admin
 from django.conf.urls import url
+from django.urls import path
 # from django.views.generic.base import RedirectView
 from Controller import FeedBackInfo, EquipmentOTA, EquipmentInfo, EquipmentSensor, StreamMedia, AdminManage, AppInfo, \
-    AccessLog, Test, MealManage, DeviceMeal, HlsManage, DeviceManage, EquipmentStatus, SysManage,DeviceLog,LogAccess,EquipmentManager,LogManager,PermissionManager,OTAEquipment,BatchProcessingDatabase,shareUserPermission,UserManger, CheckUserData
+    AccessLog, Test, MealManage, DeviceMeal, HlsManage, DeviceManage, EquipmentStatus, SysManage,DeviceLog,LogAccess,EquipmentManager,LogManager,PermissionManager,OTAEquipment,BatchProcessingDatabase,shareUserPermission,UserManger, CheckUserData, OauthManage
 
 urlpatterns = [
     url(r'^admin/', admin.site.urls),
@@ -131,5 +132,6 @@ urlpatterns = [
     url('Test', Test.Test.as_view(), name=u'Test'),
     # 路由加参数参考
     # url(r'^(?P<path>.*)/(?P<UID>.*)/lls$', Test.Test.as_view(), name=u'gg'),
+    path('oauth/login',OauthManage.OauthManage.as_view()),
     url(r'^(?P<path>.*)$', LogManager.errorPath, name=u'error_path'),
 ]

+ 90 - 1
Controller/OauthManage.py

@@ -10,4 +10,93 @@
 @MODIFY DECORD:ansjer dev
 @file: OauthManage.py
 @Contact: chanjunkai@163.com
-"""
+"""
+from django.views.generic.base import View
+from django.utils.decorators import method_decorator
+from django.views.decorators.csrf import csrf_exempt
+# from Ansjer.settings import *
+from Service.TokenManager import *
+from django.contrib import auth
+from django.http import HttpResponseRedirect
+'''
+http://192.168.136.40:8077/Test
+'''
+import json
+from Service.ResponseService import *
+import requests
+from Service.ModelService import ModelService
+from django.middleware.csrf import get_token
+from django.http import JsonResponse
+
+class OauthManage(View):
+    @method_decorator(csrf_exempt)
+    def dispatch(self, *args, **kwargs):
+        return super(OauthManage, self).dispatch(*args, **kwargs)
+    # 查询
+    def get(self, request, *args, **kwargs):
+
+        return
+    # 增加
+    def post(self, request, *args, **kwargs):
+        try:
+            json_data = json.loads(request.body.decode("utf-8"))
+        except Exception as e:
+            print(repr(e))
+            return ResponseJSON(10,repr(e))
+        else:
+            access_token = json_data.get('access_token', None)
+            if access_token is not None:
+                ser = requests.get(url='http://192.168.136.40:9898/accounts/user/', data={'access_token':access_token})
+                if ser.status_code == 200:
+                    ser_data = json.loads(ser.content)
+                    print(ser_data)
+                    username = ser_data.get('username', None)
+                    if username is not None:
+                        userValid = Device_User.objects.filter(username=username)
+                        mCode = 1324
+                        userID = userValid[0].userID
+                        authtoken_Obj = AuthToken_Token.objects.filter(tokenID_id=userID)
+                        if authtoken_Obj.exists():
+                            tokenManager = JSONTokenManager()
+                            access_token = tokenManager.deToken(authtoken_Obj[0].access_token)
+                            refresh_token = tokenManager.deToken(authtoken_Obj[0].refresh_token)
+                        else:
+                            access_token = False
+                            refresh_token = False
+                        if access_token is not False and refresh_token is not False:
+                            resultDict = {'result': {'access_token': access_token, 'refresh_token': refresh_token},
+                                          'error_code': 0}
+                        else:
+                            JSON = json.dumps({'userID': userID, 'mCode': mCode}, ensure_ascii=False)
+                            tokenManager = JSONTokenManager()
+                            tokenJSON = tokenManager.generate_AToken(JSON=JSON,
+                                                                     iCode=tokenManager.getSalt(strLen=8))
+                            resultDict = json.loads(tokenJSON)
+                        error_code = resultDict.get('error_code', None)
+                        if error_code != None and error_code == 0:
+                            result = resultDict.get('result', None)
+                            if result != None:
+                                import datetime
+                                now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
+                                userValid.update(last_login=now_time, online=True, machine_code=mCode)
+                                role_dict = ModelService.own_role(userID=userID)
+                                result['rid'] = role_dict['rid']
+                                result['roleName'] = role_dict['roleName']
+                                result['permList'] = ModelService.own_permission(userID)
+                                result['username'] = username
+                                return ResponseJSON(0, result)
+
+    # 修改 资源改变
+    def put(self, request):
+        return ResponseJSON(404)
+
+    # 修改 属性改变
+    def PATCH(self, request):
+        return ResponseJSON(404)
+
+    # 删除
+    def delete(self, request):
+        return ResponseJSON(404)
+
+    def validation(self, request_dict, *args, **kwargs):
+        return ResponseJSON(404)

+ 8 - 3
Controller/Test.py

@@ -99,9 +99,14 @@ class Test(View):
                                 result['roleName'] = role_dict['roleName']
                                 result['permList'] = ModelService.own_permission(userID)
                                 result['username'] = username
-                                response = HttpResponseRedirect(
-                                    'http://192.168.136.39:8020/ansjer/html/main.html?access_token={}&refresh_token={}&rid={}&roleName={}&permList={}'.format(result['access_token'],result['refresh_token'],result['rid'],result['roleName'],result['permList']))
-                                response.set_cookie('111username', username, 7200)
+                                # response = HttpResponseRedirect('http://192.168.136.39:8020/ansjer/html/main.html?access_token={}&refresh_token={}&rid={}&roleName={}&permList={}'.format(result['access_token'],result['refresh_token'],result['rid'],result['roleName'],result['permList']))
+                                response = HttpResponseRedirect('http://192.168.136.39:8020/ansjer/html/main.html')
+                                response.set_cookie('username', username, 7200)
+                                response.set_cookie('access_token', result['access_token'], 7200)
+                                response.set_cookie('refresh_token', result['refresh_token'], 7200)
+                                response.set_cookie('rid', result['rid'], 7200)
+                                response.set_cookie('roleName', result['roleName'], 7200)
+                                response.set_cookie('permList', result['permList'], 7200)
                                 return response
 
                                 response = HttpResponse(ResponseFormal(0, result, language='cn'))

+ 10 - 13
Service/middleware.py

@@ -74,20 +74,17 @@ class StatisticsUrlMiddleware(MiddlewareMixin):
         :return: 必须返回 HttpResponse 对象. 这个 response 对象可以是传入函数的那一个原始对象(通常已被修改),也可以是全新生成的。
             该处理器能修改 response 的内容;一个常见的用途是内容压缩,如 gzip 所请求的 HTML 页面。
         '''
-        if request.path !='/favicon.ico':
-            print('process_response', request, response)
+
         self._https_statistics_to_close(request)
         ########记录访问日志
-
-        try:
-            # from var_dump import var_dump
-            # var_dump(request)
-            # mysql
-            MiscellService.add_access_log(request=request, status_code=response.status_code)
-            # mongodb版
-            # MiscellService.access_log(request=request, response=response, type=0)
-        except Exception as e:
-            print(repr(e))
-        #######
+        if request.path !='/favicon.ico':
+            print('process_response', request, response)
+            try:
+                # mysql
+                MiscellService.add_access_log(request=request, status_code=response.status_code)
+                # mongodb版
+                # MiscellService.access_log(request=request, response=response, type=0)
+            except Exception as e:
+                print(repr(e))
         return response