chenjunkai 7 жил өмнө
parent
commit
b7fc129b3e

+ 0 - 1
Ansjer/config.py

@@ -33,7 +33,6 @@ SERVER_TYPE = 'local'
 if SERVER_TYPE == 'local':
     NGINX_RTMP_STAT = 'http://192.168.136.45:8077/stat'
     SERVER_DOMAIN = 'http://192.168.136.40:8077'
-    #DATABASE_DATA = 'AnsjerTest'
     DATABASE_DATA = 'Ansjer'
     SERVER_HOST = '192.168.136.45'
     RTMP_PUSH_URL = 'rtmp://192.168.136.45:1935/hls'

+ 64 - 1
Ansjer/test/666.py

@@ -1 +1,64 @@
-gggggggg
+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)

+ 1 - 1
Ansjer/urls.py

@@ -128,7 +128,7 @@ urlpatterns = [
     url(r'^admin/userIDs$', AdminManage.getUserIds, name=u'getUserIds'),
 
     # 测试专用api
-    url(r'^Test$', Test.Test.as_view(), name=u'Test'),
+    url('Test', Test.Test.as_view(), name=u'Test'),
     # 路由加参数参考
     # url(r'^(?P<path>.*)/(?P<UID>.*)/lls$', Test.Test.as_view(), name=u'gg'),
     url(r'^(?P<path>.*)$', LogManager.errorPath, name=u'error_path'),

+ 0 - 1
Controller/DeviceLog.py

@@ -16,7 +16,6 @@ from django.views.decorators.csrf import csrf_exempt
 from Model.models import Device_Info
 from Object.mongodb import mongodb
 from Service.TokenManager import JSONTokenManager
-from Service.CommonService import CommonService
 from Service.ModelService import ModelService
 from Service.DeviceOperation import DeviceOperation
 from Service.ResponseService import *

+ 13 - 0
Controller/OauthManage.py

@@ -0,0 +1,13 @@
+#!/usr/bin/env python3  
+# -*- coding: utf-8 -*-  
+"""
+@Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
+@AUTHOR: ASJRD018
+@NAME: Ansjer
+@software: PyCharm
+@DATE: 2018/7/20 11:13
+@Version: python3.6
+@MODIFY DECORD:ansjer dev
+@file: OauthManage.py
+@Contact: chanjunkai@163.com
+"""

+ 88 - 12
Controller/Test.py

@@ -16,11 +16,17 @@ 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 Test(View):
     '''
@@ -30,30 +36,100 @@ class Test(View):
     sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。
     animal_type_id=1:指定筛选条件
     '''
+
     @method_decorator(csrf_exempt)
     def dispatch(self, *args, **kwargs):
         return super(Test, self).dispatch(*args, **kwargs)
+
     # 查询
     def get(self, request, *args, **kwargs):
-        client_id = '123'
-        return ResponseJSON(0,'1111')
 
-        redirect_uri = 'http://www.baidu.com/'
-        uri = 'http://localhost:5000/oauth?response_type=code&client_id=%s&redirect_uri=%s' % (client_id, redirect_uri)
-        from django.http import HttpResponseRedirect
-        return HttpResponseRedirect(uri)
+        post_data = {
+            'code': request.GET.get('code', None),
+            'client_id': 'co',
+            'client_secret': 'co',
+            'grant_type': 'authorization_code',
+            'redirect_uri': 'http://192.168.136.40:8077/Test/',
+        }
+        res = requests.post(url='http://192.168.136.40:9898/o/token/', data=post_data)
+        print(res.content)
+
+        if res.status_code == 200:
+            json_data = json.loads(res.content)
+            access_token= json_data.get('access_token',None)
+            print(access_token)
+            if access_token is not None:
+                get_data = {
+                    'access_token':access_token
+                }
+                ser = requests.get(url='http://192.168.136.40:9898/accounts/user/',data=get_data)
+                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
+                                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)
+                                return response
+
+                                response = HttpResponse(ResponseFormal(0, result, language='cn'))
+                                response.set_cookie('username', username, 7200)
+                                return response
+                    return ResponseJSON(0, ser_data)
+
     # 增加
     def post(self, request, *args, **kwargs):
-        json_data =json.loads(request.body.decode("utf-8"))
-        return ResponseJSON(0,{'test':json_data})
+        json_data = json.loads(request.body.decode("utf-8"))
+        '''
+        token = get_token(request)
+        return JsonResponse({'token': token})        
+        '''
+
+        return ResponseJSON(0, {'test': json_data})
+
     # 修改 资源改变
-    def put(self,request):
+    def put(self, request):
         return ResponseJSON(404)
+
     # 修改 属性改变
-    def PATCH(self,request):
+    def PATCH(self, request):
         return ResponseJSON(404)
-    #删除
-    def delete(self,request):
+
+    # 删除
+    def delete(self, request):
         return ResponseJSON(404)
+
     def validation(self, request_dict, *args, **kwargs):
         return ResponseJSON(404)

+ 4 - 0
Controller/UserManger.py

@@ -250,6 +250,10 @@ class LoginView(TemplateView):
         password = request_dict.get('userPwd', None)
         mCode = request_dict.get('mobileMechanicalCode', None)
         language = request_dict.get('language', 'en')
+        if username is not None:
+            username = username.strip()
+        if password is not None:
+            password = password.strip()
         if username != None and password != None:
             if mCode != None:
                 response = HttpResponse(self.Login(username, password, request=request, mCode=mCode,language=language))

+ 2 - 1
Model/models.py

@@ -274,9 +274,10 @@ class Device_User(AbstractBaseUser):
             permslist = list(permSet)
             permslist.sort()
             return permslist
-    '''
     def has_module_perms(self, app_label):
         return True
+    '''
+
     def toJSON(self, fields=None, exclude=None):
         Fields = []
         for field in self._meta.fields:

+ 6 - 3
Service/middleware.py

@@ -52,14 +52,16 @@ class StatisticsUrlMiddleware(MiddlewareMixin):
              如果返回 HttpResponse 对象,Django 将不再执行任何其它的中间件
         (无视其种类)以及相应的view。 Django将立即返回该 HttpResponse。
         '''
-        print('process_request', request)
+        if request.path != '/favicon.ico':
+            print('process_request', request)
         result = self._https_statistics_to_reverse(request)
         if result == -1:
             return ResponseJSON(910)
         return None
 
     def process_view(self, request, callback, callback_args, callback_kwargs):
-        print('process_view', request)
+        if request.path != '/favicon.ico':
+            print('process_view', request)
         return None
 
     def process_response(self, request, response):
@@ -72,7 +74,8 @@ class StatisticsUrlMiddleware(MiddlewareMixin):
         :return: 必须返回 HttpResponse 对象. 这个 response 对象可以是传入函数的那一个原始对象(通常已被修改),也可以是全新生成的。
             该处理器能修改 response 的内容;一个常见的用途是内容压缩,如 gzip 所请求的 HTML 页面。
         '''
-        print('process_response', request, response)
+        if request.path !='/favicon.ico':
+            print('process_response', request, response)
         self._https_statistics_to_close(request)
         ########记录访问日志