Эх сурвалжийг харах

最后一个稳定版
后面会针对进行小改动,小改进

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

+ 4 - 34
Ansjer/config.py

@@ -21,47 +21,17 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 # 发送邮件邮箱
 COMPANY_EMAIL = 'user_server@nsst.com'
 # token加密令牌,过期时间,刷新过期时间
-SECRET_KEY = 'c7ki2_gkg4#sjfm-u1%$s#&n#szf01f*v69rwv2qsf#-zmm@tl',
+SECRET_KEY = 'c7ki2_gkg4#sjfm-u1%$s#&n#szf01f*v69rwv2qsf#-zmm@tl'
 EXPIRATION_DELTA = datetime.timedelta(days=7)
 REFRESH_EXPIRATION_DELTA = datetime.timedelta(days=7)
 STATIC_URL = '/static/'
 
-# 服务器类型
-SERVER_TYPE = 'local'
-# SERVER_TYPE = 'test'
-# SERVER_TYPE = 'formal'
-if SERVER_TYPE == 'local':
-    NGINX_RTMP_STAT = 'http://192.168.136.45:8077/stat'
-    SERVER_DOMAIN = 'http://192.168.136.45:8077'
-    DATABASE_DATA = 'Ansjer'
-    SERVER_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 = 'http://13.56.215.252:82'
-    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 = 'http://13.56.215.252:81'
-    DATABASE_DATA = 'Ansjer81'
-    SERVER_HOST = 'localhost'
-    RTMP_PUSH_URL = 'http://13.56.215.252:8091/hls'
-#数据库
-DATABASES_DEFAULT={
-    'ENGINE': 'django.db.backends.mysql',
-    'NAME': DATABASE_DATA,
-    'USER': 'ansjer',
-    'PASSWORD': '1234',
-    'HOST': SERVER_HOST,
-    'PORT': '3306',
-    'OPTIONS': {'charset': 'utf8mb4', 'use_unicode': True},
-}
+
 
 AWS_ACCESS_ID = 'AKIAJKPU23EU5QWHFPKQ'
 AWS_ACCESS_SECRET = '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'
 AWS_ACCESS_REGION = 'us-east-1'
 AWS_BUCKET = 'ansjertest'
-
+# 设定离线时间为5分钟
+OFF_LINE_TIME_DELTA = 5

+ 27 - 0
Ansjer/file/pk-APKAINI6BNPKV54NHH7Q.pem

@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEogIBAAKCAQEAjBX7IqEVIj14KE0RFVvtfq5yWzmT5myzqMwPUPk6NRKbDQ8z
+pkP8fhPYheMK3VPNlgPX2aBT98ovlc6qzZfZKhk5oNThgGr5Op7UlCRvwqucvXY5
+ekUaEG2QDMHcgEMdS8e+ymkntj+DfTN3Um175CTahrs3jI+zHWdebEl2rf9l6Qv+
+0hx/fawdEc1ZLryEHYE/WyJYDGzyDlpoW7evSNqHEZCLmCvYxCvwhAEtWEohSL2R
+Mrei6wyU6PT5hMp6gM+k8PLdnExMRsWENh7+MR+aXyiMJrGl26js/HId7RpwIBVN
+j1lofCufC/nqGCo0UcQthgmJXBY8iUcKTQCdnQIDAQABAoIBAEKfvaX1mHiFZZ09
+Me/HncdPLkImuymu7y9LhclMDxvosmdeoIDl+rL3u1XJ6oPi9Hbxcvok32qM9V65
+QNCw9G6qOpc8R9dsiQYRPicKwUCDn/MXxDRbow7HHOiEVtuFj+xXnmzj4Cg0QtQL
+4ycHvRF/WZMUfVHTkitc2zKDKfeMOQjw86bvyA9TksC1MUtHt9uvVr5OVpLSpvn3
+0se949ULAnmDSRg6HrH7QNOLsLJgxSYwc0FJHad7/zYHa/2qx20zeB1zaVKwmsYq
+I5TuwuU0fKf6JY3DogozJHoUuXxEUZZvInour51WDkhT4t//URORze3XYLXPDshf
+WmphPp0CgYEAvcm8kY/Yx8hehEktMLsJ1DZh/lhr+82j73AgPj93mZETwq0o1fWR
+g4ctZXo6cs021pE6JxKohs6sx7e6VbfqAp0r9BEG83j2rE2ZcZF9kZ6x5bb9dJv+
+qnbMtiF/eZ1WAYUFy8DrQYyrUeeIYbsV0hBP22aiJSJjRcXpUcWX1XcCgYEAvPVE
+PER6gixREgSKwRFA39teBDGxEmxCpHjmQnVG4Xcp7h6ggfP0J3TgwU4XFeQSGtVt
+7uMSgrbrF9vtybZM5j49tk3o2lfRZ0/OgDt/ZdqSKEvT8+vm4iXQQiWOQR6pYwsd
+46YPhS7P2aTZQbKJjdHk7dl7S8XcWqIZ5bATeosCgYBDkSLVH8UpuygLKJIyGySw
+rHvOtWQcTWXjxKN2Bdpqjb/fOw6ivb6EeQesbQuJ+41ebm2po3bkJ4hTwhFQmx1w
+uMwBJF65J4OKbEYIrKdrxHfJNJCfhznvLkRLQznC7kTEXbtmgtQ+jfogOrHPOW/X
+TX9guPVZCxkUqhUay6H2mQKBgGy4gkZa8FItxYekbWGg1771rSakoMmE2ONhXLso
+V1wrAEkt/hRHlVeOfDM9BzNlQrWFz/b/WAs1zBaySCMjbSOc9E0MjsnydV4IITzO
+/wJPvIDLAGz8cp/0OduVWEBHsBZ4sv3k8lEjGhyUKR0P6O1cs2fXFoYGlj7fvh7W
+LJ75AoGAcmdaaOaX3pehxW02ItIJ2CN6ZxJTmIt4v2dfYoBM7tKIM0lO9ruVf4A/
+1UxWeGmEgDjJ0ugwt0SkonedOrAcicqhkKoRb2BJyZu/kZX1jHMNbNJRdtx1gLYF
+BE2Lzx02XIqWjWHEfoMzV6rWYBIezAaagb8BwwYD+nPzrmbl2GM=
+-----END RSA PRIVATE KEY-----

BIN
Ansjer/file/表文档.doc


+ 45 - 15
Ansjer/settings.py

@@ -1,6 +1,9 @@
-# 参数配置文件,测试和正式变动比较大的丢这了
 from Ansjer.config import *
 
+SERVER_TYPE = 'local'
+#SERVER_TYPE = 'test'
+# SERVER_TYPE = 'formal'
+
 DEBUG = True
 # DEBUG = False
 ALLOWED_HOSTS = ['*']
@@ -14,10 +17,9 @@ INSTALLED_APPS = [
     'django.contrib.staticfiles',
     'corsheaders',
     'imagekit',
-    'guardian',
+    # 'guardian',
     'django_global_request',
     'Model',
-    'oauth2_provider'
 ]
 
 MIDDLEWARE = [
@@ -36,7 +38,7 @@ MIDDLEWARE = [
 ]
 
 AUTHENTICATION_BACKENDS = (
-    'django.contrib.auth.backends.ModelBackend', #django default backend
+    'django.contrib.auth.backends.ModelBackend',  # django default backend
     'guardian.backends.ObjectPermissionBackend',
 )
 
@@ -48,11 +50,11 @@ MEDIA_ROOT = os.path.join(BASE_DIR, 'static/Upgrate')
 MEDIA_URL = '/static/Upgrate/'
 ROOT_URLCONF = 'Ansjer.urls'
 LOGIN_URL = '/account/login'
-AUTH_USER_MODEL = 'Model.Device_User' # 自定义Model
+AUTH_USER_MODEL = 'Model.Device_User'  # 自定义Model
 APPEND_SLASH = False
 # 腾讯验证
 SDK_AppID = '1400052907'
-App_Key  = '7705976ca6e85fe7b86d6bc2d11f7783'
+App_Key = '7705976ca6e85fe7b86d6bc2d11f7783'
 TEMPLATES = [
     {
         'BACKEND': 'django.template.backends.django.DjangoTemplates',
@@ -71,7 +73,36 @@ TEMPLATES = [
 
 WSGI_APPLICATION = 'Ansjer.wsgi.application'
 
-DATABASES = {'default':DATABASES_DEFAULT}
+if SERVER_TYPE == 'local':
+    NGINX_RTMP_STAT = 'http://192.168.136.45:8077/stat'
+    SERVER_DOMAIN = 'http://192.168.136.45:8077'
+    DATABASE_DATA = 'Ansjer'
+    SERVER_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 = 'http://13.56.215.252:82'
+    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 = 'http://13.56.215.252:81'
+    DATABASE_DATA = 'Ansjer81'
+    SERVER_HOST = 'localhost'
+    RTMP_PUSH_URL = 'http://13.56.215.252:8091/hls'
+
+DATABASES = {'default': {
+    'ENGINE': 'django.db.backends.mysql',
+    'NAME': DATABASE_DATA,
+    'USER': 'ansjer',
+    'PASSWORD': '1234',
+    'HOST': SERVER_HOST,
+    'PORT': '3306',
+    'OPTIONS': {'charset': 'utf8mb4', 'use_unicode': True, 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"},
+    'AUTOCOMMIT': True
+}}
 
 AUTH_PASSWORD_VALIDATORS = [
     {
@@ -95,7 +126,7 @@ USE_I18N = True
 USE_L10N = True
 USE_TZ = True
 
-#跨域增加忽略
+# 跨域增加忽略
 CORS_ALLOW_CREDENTIALS = True
 CORS_ORIGIN_ALLOW_ALL = True
 CORS_ORIGIN_WHITELIST = ('*')
@@ -149,7 +180,6 @@ EMAIL_SUBJECT_PREFIX = 'website'  # 为邮件标题的前缀,默认是'[django]'
 EMAIL_USE_TLS = True  # 开启安全链接
 DEFAULT_FROM_EMAIL = SERVER_EMAIL = EMAIL_HOST_USER  # 设置发件人
 
-
 LOGGING = {
     'version': 1,
     'disable_existing_loggers': True,
@@ -168,14 +198,14 @@ LOGGING = {
             'include_html': True,
         },
         'default': {
-            'level':'ERROR',
-            'class':'logging.handlers.RotatingFileHandler',
+            'level': 'ERROR',
+            'class': 'logging.handlers.RotatingFileHandler',
             'filename': BASE_DIR + '/static/log/error.log',
-            'maxBytes': 1024*1024*5, # 5 MB
+            'maxBytes': 1024 * 1024 * 5,  # 5 MB
             'backupCount': 5,
-            'formatter':'error_format',
+            'formatter': 'error_format',
         },
-        'console':{
+        'console': {
             'level': 'ERROR',
             'class': 'logging.StreamHandler',
             'formatter': 'error_format'
@@ -183,7 +213,7 @@ LOGGING = {
     },
     'loggers': {
         'django': {
-            'handlers': ['default','console'],
+            'handlers': ['default', 'console'],
             # 'handlers': ['mail_admins','default','console'],
             'level': 'ERROR',
             'propagate': False

+ 9 - 5
Ansjer/test/666.py

@@ -1,6 +1,10 @@
-regp = '^/OTA/downloads/[.\w/]+$'
-import re
+from Crypto.PublicKey import RSA
+code = 'noonekowns'
+key = RSA.generate(2048)
+encrypted_key =key.exportKey(passphrase=code, pkcs=8,protection="scryptAndAES128-CBC")
 
-strs = '/OTA/downloads/IPC/18E2012008A/4.1.5/V4.1.5.18E2012008A.img'
-kkp = re.match(regp, strs, flags=0)
-print(kkp)
+print(encrypted_key)
+exit()
+
+with open('/path_to_public_key/my_rsa_public.pem', 'wb') as f:
+    f.write(key.publickey().exportKey())

+ 33 - 0
Ansjer/test/cloudfront_sign_url.py

@@ -0,0 +1,33 @@
+import datetime
+
+from cryptography.hazmat.backends import default_backend
+from cryptography.hazmat.primitives import hashes
+from cryptography.hazmat.primitives import serialization
+from cryptography.hazmat.primitives.asymmetric import padding
+from botocore.signers import CloudFrontSigner
+
+
+def rsa_signer(message):
+    with open('D:/project_svn/Ansjer/test/pk-APKAINI6BNPKV54NHH7Q.pem', 'rb') as key_file:
+        private_key = serialization.load_pem_private_key(
+            key_file.read(),
+            password=None,
+            backend=default_backend()
+        )
+    signer = private_key.signer(padding.PKCS1v15(), hashes.SHA1())
+    signer.update(message)
+    return signer.finalize()
+
+
+key_id = 'APKAINI6BNPKV54NHH7Q'
+url = 'http://d3om3d8c0l14oc.cloudfront.net/L59KVYDAEPHR1T6M111A_0/*'
+
+expire_date = datetime.datetime(2018, 9, 30)
+print(expire_date)
+cloudfront_signer = CloudFrontSigner(key_id, rsa_signer)
+
+# Create a signed url that will be valid until the specfic expiry date
+# provided using a canned policy.
+signed_url = cloudfront_signer.generate_presigned_url(
+    url, date_less_than=expire_date)
+print(signed_url)

+ 71 - 0
Ansjer/test/encryDownLoad.py

@@ -0,0 +1,71 @@
+# 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 = '/5553.mp4'  # 下载文件
+# 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('生成代相关认证签名的地址:','http://52.8.197.107/444.mp4.m3u8?' + 'st=' + str(md5) + '&e=' + str(expire))
+print('io:','http://52.8.197.107/5553.mp4.m3u8?' + 'st=' + str(md5) + '&e=' + str(expire))

+ 24 - 0
Ansjer/test/m3u8_generate.py

@@ -0,0 +1,24 @@
+#!/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/5/28 16:15
+@Version: python3.6
+@MODIFY DECORD:ansjer dev
+@file: m3u8_generate.py
+@Contact: chanjunkai@163.com
+"""
+from m3u8_generator import PlaylistGenerator
+#pip install m3u8-generator
+playlist_entries = [
+    {
+        'name': "http://d3596w5a6euckc.cloudfront.net/vod/2N1K3LE78TYJ38CE111A_99/1234.ts?Expires=1538265600&Signature=czbcIzioBcb3K7F8v5QvKNRJ9af9022O3e9ils4bTsA2O4LSR6UxF1uLCvykHsVrdLZiYt3f5dW1Njb2qWJu1nB6N9lPUIfJTNEuD9Z3SyxEboM0Cvb34MWpFe94vdWIIas1x0bdwTGWb-yX34XJgxSMhkO9ZA5Avzvl3OALoWcoIdyvniXA5x9bgcmFu5aXXN1Fy1u4lPYQgDUGHOc-hiyZP7yY2btl0dViEjEX76n9eS067nAwAGM4zV0Ga4surZ99tyfOIsjLjRieNOzMMfYLnMXxndFRXgYUF~uVIsxOfJ5Q4QkJBakfx2Vxv4y5ZfX09ajtkGu0qfybWPs0xA__&Key-Pair-Id=APKAINI6BNPKV54NHH7Q",
+        'duration': '2',
+    }
+]
+
+playlist = PlaylistGenerator(playlist_entries).generate()
+print(playlist)

+ 113 - 0
Ansjer/test/signCookie.py

@@ -0,0 +1,113 @@
+from boto.cloudfront.distribution import Distribution
+from cryptography.hazmat.primitives.asymmetric import padding
+from cryptography.hazmat.primitives import serialization
+from cryptography.hazmat.backends import default_backend
+from cryptography.hazmat.primitives import hashes
+import base64
+import datetime
+from var_dump import var_dump
+import time
+
+
+class BetterThanBoto(Distribution):
+
+    def sign_rsa(self, message):
+        private_key = serialization.load_pem_private_key(self.keyfile, password=None,
+                                                         backend=default_backend())
+        signer = private_key.signer(padding.PKCS1v15(), hashes.SHA1())
+        message = message.encode('utf-8')
+        signer.update(message)
+        return signer.finalize()
+
+    def _sign_string(self, message, private_key_file=None, private_key_string=None):
+        if private_key_file:
+            self.keyfile = open(private_key_file, 'rb').read()
+        elif private_key_string:
+            self.keyfile = private_key_string.encode('utf-8')
+        return self.sign_rsa(message)
+
+    @staticmethod
+    def _url_base64_encode(msg):
+        """
+        Base64 encodes a string using the URL-safe characters specified by
+        Amazon.
+        """
+        msg_base64 = base64.b64encode(msg).decode('utf-8')
+        msg_base64 = msg_base64.replace('+', '-')
+        msg_base64 = msg_base64.replace('=', '_')
+        msg_base64 = msg_base64.replace('/', '~')
+        return msg_base64
+
+    def generate_signature(self, policy, private_key_file=None):
+        """
+        :param policy: no-whitespace json str (NOT encoded yet)
+        :param private_key_file: your .pem file with which to sign the policy
+        :return: encoded signature for use in cookie
+        """
+        # Distribution._create_signing_params()
+        signature = self._sign_string(policy, private_key_file)
+
+        # now base64 encode the signature & make URL safe
+        encoded_signature = self._url_base64_encode(signature)
+
+        return encoded_signature
+
+    def create_signed_cookies(self, url, private_key_file=None, keypair_id=None,
+                              expires_at=20, secure=True):
+        policy = self._custom_policy(
+            url,
+            expires_at
+        )
+
+        encoded_policy = self._url_base64_encode(policy.encode('utf-8'))
+        signature = self.generate_signature(
+            policy, private_key_file=private_key_file
+        )
+        cookies = {
+            "CloudFront-Policy": encoded_policy,
+            "CloudFront-Signature": signature,
+            "CloudFront-Key-Pair-Id": keypair_id
+        }
+        return cookies
+
+
+def sign_to_cloudfront(object_url, expires_at):
+    """ Sign URL to distribute file"""
+    cf = BetterThanBoto()
+    url = cf.create_signed_url(url=object_url,
+                               keypair_id="APKAINI6BNPKV54NHH7Q",
+                               expire_time=expires_at,
+                               private_key_file="D:/project_svn/Ansjer/test/pk-APKAINI6BNPKV54NHH7Q.pem")
+
+    return url
+
+
+def create_signed_cookies(object_url, expires_at):
+    """
+    Create a signed cookie
+    """
+    cf = BetterThanBoto()
+
+    cookies = cf.create_signed_cookies(url=object_url, keypair_id="APKAINI6BNPKV54NHH7Q", expires_at=expires_at,
+                                       private_key_file="D:/project_svn/Ansjer/test/pk-APKAINI6BNPKV54NHH7Q.pem")
+    return cookies
+
+
+expire_date = int(time.time()) + 7200
+
+object_url = 'http://d3596w5a6euckc.cloudfront.net/vod/2N1K3LE78TYJ38CE111A_99/1527152855.m3u8'
+# object_url = 'http://d3596w5a6euckc.cloudfront.net/vod/2N1K3LE78TYJ38CE111A_99/*'
+# cookie_data = create_signed_cookies(object_url, expire_date)
+# print(cookie_data)
+# exit()
+cookie_data = {'CloudFront-Policy': 'eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QzNTk2dzVhNmV1Y2tjLmNsb3VkZnJvbnQubmV0L3ZvZC8yTjFLM0xFNzhUWUozOENFMTExQV85OS8qIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNTI3NTA1MDA1fX19XX0_', 'CloudFront-Signature': 'IQYo7PdwXLRyEywSon6HBvuaEOLqTGH6qWAx1Fk3HrSK6N325f0oXcvpZ1eSVUv353YUrd6bKPDE9tLEOPuIitILNQt5tP593C5OIX4jc15RpUpTuEQdlVlO7~SfnxtHXIqukD20GXWIfCagneNj1~F2OD5Tn8ER2stJY1IK~v12VPXAA-cWqoKc6WyVZfzJs0SkJIfQDeDtSOkKD0fP8TOBM2i4XQzbcl9NviNrueG-bZwrCondlw6K5g4TOVS41QQplEIOwb1AzxBb8QvDXxaQ-Kcmy5ME-vpfdBqdHrgreAGZIliZyLWA3qIJ71w67YIzsnCvCMytULDE7w-d4Q__', 'CloudFront-Key-Pair-Id': 'APKAINI6BNPKV54NHH7Q'}
+
+print(cookie_data)
+import requests
+
+cookies = cookie_data
+headers = {}
+# exit()
+s = requests.Session()
+res = s.get(object_url, headers=headers, cookies=cookies)
+print(res.text)

+ 140 - 0
Ansjer/test/testa.py

@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+# -*- coding: utf-8 -*-
+import struct
+import boto3
+from boto3.session import Session
+from datetime import datetime
+import time
+from requests_aws4auth import AWS4Auth
+import requests
+import chunk
+from botocore.client import Config
+print(datetime(2015, 1, 1))
+print(time.time())
+# exit()
+aws_key = 'AKIAJYSIOA24FQANOFTA'
+aws_secret = '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'
+# aws_key = 'AKIAIK7LP7TRWPFTRWVA'
+# aws_secret = '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'
+session = Session(
+    aws_access_key_id=aws_key,
+    aws_secret_access_key=aws_secret,
+    region_name='us-east-1',
+)
+
+'''
+s3
+'''
+s3_con = boto3.client(
+    's3', aws_access_key_id=aws_key, aws_secret_access_key=aws_secret,
+    config=Config(signature_version='s3v4'), region_name='us-east-1'
+)
+url = s3_con.generate_presigned_post(
+    Key='img.jpg',
+    ExpiresIn=7200,
+    Bucket='ansjertest'
+)
+print(url)
+exit()
+url = s3_con.generate_presigned_url(
+    'put_object',
+    Params={
+        'Bucket': 'ansjertest',
+        'Key': 'img.jpg',
+        # 'ContentType': 'image/jpg'
+    },
+    ExpiresIn=3600,
+    HttpMethod='PUT'
+)
+print(url)
+exit()
+S3_client = session.client('s3')
+response = S3_client.generate_presigned_url(
+    'put_object',
+    Params={
+        'Bucket': 'ansjertest',
+        'Key': 'img.jpg',
+        # 'ContentType': 'image/jpg'
+    },
+    ExpiresIn=3600,
+    # HttpMethod='PUT'
+)
+print(response)
+
+exit()
+S3_client = session.client('s3')
+response = S3_client.generate_presigned_url(
+    'get_object',
+    Params={
+        'Bucket': 'ansjertest',
+        'Key': '2N1K3LE78TYJ38CE111A_3/2N1K3LE78TYJ38CE111A_3-1524557834.mp4'
+    },
+    ExpiresIn=3600
+)
+print(response)
+exit()
+
+kinesis_client = session.client('kinesisvideo')
+
+response = kinesis_client.get_data_endpoint(
+    StreamName='demo-stream',
+    APIName='GET_MEDIA_FOR_FRAGMENT_LIST'
+)
+endpoint = response['DataEndpoint'] + '/getMediaForFragmentList'
+print(endpoint)
+data = {
+    "Fragments": ["91343852333181432407537343081996969589651220552"],
+    "StreamName": "demo-stream"
+}
+
+auth = AWS4Auth(aws_key, aws_secret, 'us-east-1', 'kinesisvideo')
+headers = {'Content-type': 'application/json'}
+response = requests.post(endpoint, json=data, auth=auth, headers=headers)
+# test=chunk.Chunk(response.text.encode('utf8'))
+print(response.headers)
+exit()
+
+stream_bytes = response.text.encode('utf8')
+print(response.text.encode('utf8'))
+print('3333')
+exit()
+# url = "网络zip的地址"
+# path = "你本地的地址"
+#
+# req = urllib2.urlopen(url)
+# data = req.read()
+# with open(path, "wb") as zip:
+#     zip.write(data)
+# req.close()
+# ##-----------------------------------------------------------------------------------------
+
+
+exit()
+response_describe_stream = kinesis_client.describe_stream(
+    StreamName='demo-stream',
+)
+print(response_describe_stream)
+# exit()
+response = kinesis_client.get_data_endpoint(
+    StreamName='demo-stream',
+    APIName='GET_MEDIA'
+)
+print(response)
+
+# exit()
+print('-----------')
+print(response['DataEndpoint'])
+
+kinesis_video_media_client = session.client('kinesis-video-media')
+response_media = kinesis_video_media_client.get_media(
+    StreamName='demo-stream',
+    StartSelector={
+        'StartSelectorType': 'EARLIEST ',
+    }
+)

+ 60 - 0
Ansjer/test/util/mongodb.py

@@ -0,0 +1,60 @@
+#!/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/6/15 14:18
+@Version: python3.6
+@MODIFY DECORD:ansjer dev
+@file: mongodb.py
+@Contact: chanjunkai@163.com
+"""
+# !/usr/bin/python3
+import pymongo
+
+class mongodb(object):
+
+    def __init__(self):
+        myclient = pymongo.MongoClient('mongodb://localhost:27017/')
+        # myclient = pymongo.MongoClient('mongodb://192.168.136.45:27017/')
+        self.myclient = myclient
+        self.db = myclient['ansjertest']
+
+    def check_db_exist(self, database):
+        dblist = self.myclient.database_names()
+        if database in dblist:
+            return True
+        else:
+            return False
+
+    def insert_one(self, col, data):
+        column = self.db[col]
+        res = column.insert_one(data)
+        return res.inserted_id
+
+    def findAll(self, col,page,line,query):
+        collist = self.db.collection_names()
+        if col in collist:  # 判断 customers 集合是否存在
+            qs = self.db[col].find(query)
+            count = qs.count()
+            if page != 0 and line != 0:
+                qs = qs.sort("_id", -1).skip((page - 1) * 10).limit(line)
+            # print(count)
+            data = []
+            for q in qs:
+                data.append(q)
+            res_dict = {'data': data, 'count': count}
+            return res_dict
+        else:
+            print("集合不存在!")
+            return False
+
+if __name__ == '__main__':
+    mdb = mongodb()
+    col = "log_device_operation"
+    data = {"name": "111", "address": "Lowstreet 27"}
+    flag = mdb.insert_one(col=col, data=data)
+    # qs = mdb.findAll(col=col, page=1, line=100,query={'name':'Peter'})
+    # print(qs)

+ 91 - 0
Ansjer/test/util/sql.py

@@ -0,0 +1,91 @@
+'''
+@author chenjunkai
+@time 20180612
+'''
+"""
+一般 Python 用于连接 MySQL 的工具:pymysql
+"""
+import pymysql.cursors
+
+connection = pymysql.connect(host='localhost',
+                             user='root',
+                             password='1234',
+                             db='test',
+                             charset='utf8mb4',
+                             cursorclass=pymysql.cursors.DictCursor)
+
+
+# 保存评论
+def insert_comments(music_id, comments, detail, connection0):
+    with connection0.cursor() as cursor:
+        sql = "INSERT INTO `comments` (`MUSIC_ID`, `COMMENTS`, `DETAILS`) VALUES (%s, %s, %s)"
+        cursor.execute(sql, (music_id, comments, detail))
+    connection0.commit()
+
+
+# 保存音乐
+def insert_music(music_id, music_name, album_id):
+    with connection.cursor() as cursor:
+        sql = "INSERT INTO `musics` (`MUSIC_ID`, `MUSIC_NAME`, `ALBUM_ID`) VALUES (%s, %s, %s)"
+        cursor.execute(sql, (music_id, music_name, album_id))
+    connection.commit()
+
+
+# 保存专辑
+def insert_album(album_id, artist_id):
+    with connection.cursor() as cursor:
+        sql = "INSERT INTO `albums` (`ALBUM_ID`, `ARTIST_ID`) VALUES (%s, %s)"
+        cursor.execute(sql, (album_id, artist_id))
+    connection.commit()
+
+
+# 保存歌手
+def insert_artist(artist_id, artist_name):
+    with connection.cursor() as cursor:
+        sql = "INSERT INTO `artists` (`ARTIST_ID`, `ARTIST_NAME`) VALUES (%s, %s)"
+        cursor.execute(sql, (artist_id, artist_name))
+    connection.commit()
+
+
+# 获取所有歌手的 ID
+def get_all_artist():
+    with connection.cursor() as cursor:
+        sql = "SELECT `ARTIST_ID` FROM `artists` ORDER BY ARTIST_ID"
+        cursor.execute(sql, ())
+        return cursor.fetchall()
+
+
+# 获取所有专辑的 ID
+def get_all_album():
+    with connection.cursor() as cursor:
+        sql = "SELECT `ALBUM_ID` FROM `albums` ORDER BY ALBUM_ID"
+        cursor.execute(sql, ())
+        return cursor.fetchall()
+
+
+# 获取所有音乐的 ID
+def get_all_music():
+    with connection.cursor() as cursor:
+        sql = "SELECT `MUSIC_ID` FROM `musics` ORDER BY MUSIC_ID"
+        cursor.execute(sql, ())
+        return cursor.fetchall()
+
+
+# 获取前一半音乐的 ID
+def get_before_music():
+    with connection.cursor() as cursor:
+        sql = "SELECT `MUSIC_ID` FROM `musics` ORDER BY MUSIC_ID LIMIT 0, 800000"
+        cursor.execute(sql, ())
+        return cursor.fetchall()
+
+
+# 获取后一半音乐的 ID
+def get_after_music():
+    with connection.cursor() as cursor:
+        sql = "SELECT `MUSIC_ID` FROM `musics` ORDER BY MUSIC_ID LIMIT 800000, 1197429"
+        cursor.execute(sql, ())
+        return cursor.fetchall()
+
+
+def dis_connect():
+    connection.close()

+ 13 - 0
Ansjer/test/util/time.py

@@ -0,0 +1,13 @@
+
+import time, datetime
+print(datetime.datetime.now())
+def gettime():
+    for x in range(24):
+        a = datetime.datetime.now().strftime("%Y-%m-%d") + " %2d:00:00" % x
+        timeArray = time.strptime(a, "%Y-%m-%d %H:%M:%S")
+        timeStamp = int(time.mktime(timeArray))
+        print(timeStamp)
+if __name__ == "__main__":
+    gettime()
+
+

+ 10 - 6
Ansjer/urls.py

@@ -3,7 +3,7 @@ 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, OauthManage
+    AccessLog, Test, MealManage, DeviceMeal, HlsManage, DeviceManage, EquipmentStatus, SysManage,DeviceLog,LogAccess,EquipmentManager,LogManager,PermissionManager,OTAEquipment,BatchProcessingDatabase,shareUserPermission,UserManger, CheckUserData
 
 urlpatterns = [
     url(r'^admin/', admin.site.urls),
@@ -123,14 +123,18 @@ urlpatterns = [
     # 上传操作文档
     url(r'^HelpCHM/upload$', LogManager.upload_help_chm, name=u'upload_help'),
     url(r'^admin/userIDs$', AdminManage.getUserIds, name=u'getUserIds'),
+
+
+
+
     # 统计访问日志路径
     path('access/staticPath/', AccessLog.statisticsPath),
-    url('Test', Test.RqTest, name=u'rTest'),
-
+    # 多条件搜索用户信息admin
+    path('accounts', AdminManage.search_user_by_content),
     # 测试专用api
-    url('Test', Test.Test.as_view(), name=u'Test'),
+    path('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'),
+    # path('oauth/login',OauthManage.OauthManage.as_view()),
+    url(r'^(?P<path>.*)', LogManager.errorPath, name=u'error_path'),
 ]

+ 66 - 11
Controller/AccessLog.py

@@ -7,13 +7,17 @@ from Service.TemplateService import TemplateService
 from Model.models import Access_Log
 import datetime
 from Service.ResponseService import *
+from django.core import serializers
 
+import chardet
 '''
 http://192.168.136.40:8077/accesslog?operation=queryByAdmin&token=test&page=1&line=5&order=-id
 http://192.168.136.40:8077/accesslog?operation=truncateByAdmin&token=test
 http://192.168.136.40:8077/accesslog?operation=searchByAdmin&token=test&page=1&line=10&content={"status":20}&order=-id
-
-http://192.168.136.40:8077/access/staticPath/?token=stest
+http://127.0.0.1:8000/accesslog?operation=loginUserNum&token=stest
+http://127.0.0.1:8000/accesslog/loginUserNum?token=stest
+http://127.0.0.1:8000/accesslog?operation=AllLoginArea&token=stest
+http://192.168.136.40:8077/access/staticPath?token=stest
 '''
 
 
@@ -46,6 +50,11 @@ class AccessLog(View):
                         return self.search_by_admin(request_dict=request_dict, userID=userID)
                     elif operation == 'truncateByAdmin':
                         return self.truncate_by_admin(userID=userID)
+                    elif operation == 'loginUserNum':
+                        return self.login_user_num(userID=userID)
+                    elif operation == 'AllLoginArea':
+                        return self.getAllLoginArea(userID=userID)
+
                 return ResponseJSON(444)
             else:
                 return HttpResponse(tokenManager.errorCodeInfo(error_code))
@@ -97,9 +106,9 @@ class AccessLog(View):
                 try:
                     content = json.loads(content)
                     search_kwargs = CommonService.get_kwargs(data=content)
+                    queryset = Access_Log.objects.filter(**search_kwargs).order_by(order)
                 except Exception as e:
                     return ResponseJSON(444)
-                queryset = Access_Log.objects.filter(**search_kwargs).order_by(order)
                 if starttime is not None and starttime != '' and endtime is not None and endtime != '':
                     startt = datetime.datetime.fromtimestamp(int(starttime))
                     starttime = startt.strftime("%Y-%m-%d %H:%M:%S.%f")
@@ -126,9 +135,56 @@ class AccessLog(View):
                 return ResponseJSON(404)
         else:
             return ResponseJSON(444)
+    # 获取登录用户的ip的登录情况的接口
+    def login_user_num(self,  userID):
+            check_perm = ModelService.check_permission(userID=userID, permID=20)
+            if check_perm is True:
+                user_list = Access_Log.objects.values("user","ip").distinct().filter(url__contains='account/login').order_by('time')
+                return ResponseJSON(10,list(user_list[0]))
+                # print("是否QuerySet")
+                # print(type(user_list).__name__=='QuerySet')
+                user_list= list(user_list)
+                newuser_list="["
+                count=0
+                for q in user_list:
+                    # print(type(q))
+                    # 获取ip地址中文名称
+                    ip_addrname=CommonService.getAddr(q['ip'])
+                    # print(ip_addrname)
+                    # 拼凑为字符串类型
+                    ip_addrname='{"ip_addrname":"'+ip_addrname+'"}'
+                    # 把字符串转为字典json
+                    ip_addrname=json.loads(ip_addrname)
+                    # 字典类型合并
+                    ip_addrnameall=dict(q, **ip_addrname)
+                    # print(ip_addrnameall)
+                    str_dict = json.dumps(ip_addrnameall)
+                    newuser_list=newuser_list+str_dict+","
+                    count+=1
+                newuser_list= newuser_list[:-1]+"]"
+                # 把字符串转为字典json
+                newuser_list = json.loads(newuser_list)
+                # print(newuser_list)
+                return ResponseJSON(0,{'datas':list(newuser_list), 'count': count})
+            else:
+                return ResponseJSON(404)
+
+ # 获取所有用户登录的地区
+    def getAllLoginArea(self, userID):
+        own_permission = ModelService.check_permission(userID=userID, permID=30)
+        if own_permission is True:
+            users = Access_Log.objects.filter(operation='account/login').distinct().values_list('user', flat=True)
+            ip_dict = {}
+            for user in users:
+                qs = Access_Log.objects.values_list('ip', flat=True).filter(operation='account/login',user=user).order_by('time')
+                ip_dict[user] = qs[0]
+            return ResponseJSON(0,ip_dict)
+        else:
+            return ResponseJSON(404)
 
 @csrf_exempt
 def statisticsPath(request):
+    request.encoding = 'utf-8'
     if request.method == 'GET':
         request_dict = request.GET
     if request.method == 'POST':
@@ -140,15 +196,14 @@ def statisticsPath(request):
         if error_code == 0:
             userID = tokenManager.accessDict.get('userID', None)
             own_perm = ModelService.check_permission(userID,10)
-            if own_perm is True:
-                paths = TemplateService.log_api()
-                datas={}
-                for path in paths:
-                    count = Access_Log.objects.filter(operation=path).count()
-                    datas[path] = count
-                return ResponseJSON(0,{'datas':datas})
-            return ResponseJSON(444)
+            paths = TemplateService.log_api()
+            datas = {}
+            for path in paths:
+                count = Access_Log.objects.filter(operation=path).count()
+                datas[path] = count
+            return ResponseJSON(0, {'datas': datas})
         else:
             return HttpResponse(tokenManager.errorCodeInfo(error_code))
     else:
         return ResponseJSON(311)
+

+ 136 - 5
Controller/AdminManage.py

@@ -4,18 +4,20 @@ from django.views.generic import TemplateView
 from django.utils.decorators import method_decorator
 from django.contrib.auth.hashers import make_password  # 对密码加密模块
 from Service.TokenManager import JSONTokenManager
-from Model.models import Device_User, Device_Info
-from Service.CommonService import CommonService
+from Model.models import Device_Info,Role
 from Service.ModelService import ModelService
+from django.utils import timezone
 import datetime
 from Model.models import Access_Log
 from Service.ResponseService import *
 from django.views.decorators.http import require_http_methods
+from Ansjer.config import *
 '''
 http://13.56.215.252:8222/adminManage/manage?operation=getAllDeviceArea&token=test
 http://13.56.215.252:8222/adminManage/manage?operation=getAllUserName&token=test
 http://13.56.215.252:8222/adminManage/manage?operation=getAllUID&token=test
-
+http://127.0.0.1:8000/adminManage/manage?operation=getAllOnLine&token=stest
+http://127.0.0.1:8000/adminManage/manage?operation=getOnLine&token=stest
 '''
 
 
@@ -33,6 +35,7 @@ class AdminManage(TemplateView):
         return self.validation(request_dict=request.POST)
 
     def validation(self, request_dict, *args, **kwargs):
+
         token = request_dict.get('token', None)
         if token is not None:
             tokenManager = JSONTokenManager()
@@ -44,6 +47,10 @@ class AdminManage(TemplateView):
                 if param_flag is True:
                     if operation == 'resetUserPwd':
                         return self.resetUserPwd(request_dict=request_dict, userID=userID)
+                    if operation == 'getAllOnLine':
+                        return self.getAllOnLine(userID=userID)
+                    if operation == 'getOnLine':
+                        return self.getOnLine(userID=userID)
                     if operation == 'getAllUserName':
                         return self.getAllUserName(userID=userID)
                     if operation == 'getStatisAccess':
@@ -81,6 +88,7 @@ class AdminManage(TemplateView):
             return ResponseJSON(404)
 
     def getAllUserName(self, userID):
+        # 权限固定为30
         own_permission = ModelService.check_permission(userID=userID, permID=30)
         if own_permission is True:
             username_list = Device_User.objects.all().values_list('username', flat=True)
@@ -90,7 +98,52 @@ class AdminManage(TemplateView):
                 return ResponseJSON(0)
         else:
             return ResponseJSON(404)
-
+    #    获取全部用户的在线个数
+    def getAllOnLine(self, userID):
+        # 权限固定为30
+        own_permission = ModelService.check_permission(userID=userID, permID=30)
+        if own_permission is True:
+            allonline = Device_User.objects.all().values('online')
+            # 两个变量,分别是在线,离线
+            onlinenum = 0
+            noonlinenum=0
+            for q in allonline:
+                if q['online'] ==True:
+                    onlinenum+=1
+                else:
+                    noonlinenum+=1
+            print("在线人数:")
+            print(onlinenum)
+            return ResponseJSON(0, {"onlinenum": onlinenum, "no_onlinenum": noonlinenum})
+        else:
+            return ResponseJSON(404)
+    #    获取全部用户的在线人数
+    def getOnLine(self, userID):
+        # 权限固定为30
+        own_permission = ModelService.check_permission(userID=userID, permID=30)
+        if own_permission is True:
+            online_list = Device_User.objects.all().values('online', 'last_login')
+            # 两个变量,分别是在线,离线
+            onlinenum=0
+            noonlinenum=0
+            for q in online_list:
+                    # print(q['last_login'] )
+                    # 最后访问时间加5分种
+                    dl_time = q['last_login'] + datetime.timedelta(minutes=OFF_LINE_TIME_DELTA)
+                    # print(dl_time)
+                    # 当前时间
+                    now_time = timezone.localtime(timezone.now())
+                    # print(now_time)
+                    # 如果当前时间大于最后访问的时间
+                    if now_time < dl_time:
+                        onlinenum += 1
+                    else:
+                        noonlinenum += 1
+            print("在线人")
+            print(onlinenum)
+            return ResponseJSON(0, {"onlinenum": onlinenum,"no_onlinenum": noonlinenum})
+        else:
+            return ResponseJSON(404)
 
     # 获取所有设备地区
     def getAllDeviceArea(self, userID):
@@ -166,4 +219,82 @@ def getUserIds(request):
         else:
             return HttpResponse(tokenManager.errorCodeInfo(error_code))
     else:
-        return ResponseJSON(311)
+        return ResponseJSON(311)
+
+@csrf_exempt
+# @require_http_methods(['GET'])
+def search_user_by_content(request):
+    if request.method == 'GET':
+        request_dict = request.GET
+    if request.method == 'POST':
+        request_dict = request.POST
+    token = request_dict.get('token', None)
+    page = request_dict.get('page', None)
+    line = request_dict.get('line', None)
+    content = request_dict.get('content', None)
+    rstime = request_dict.get('rstime', None)
+    retime = request_dict.get('retime', None)
+    if page is not None and line is not None:
+        page = int(page)
+        line = int(line)
+    else:
+        return ResponseJSON(10,'page,line is none')
+    if token is not None:
+        tokenManager = JSONTokenManager()
+        error_code = tokenManager.verify_AToken(token)
+        if error_code == 0:
+            userID = tokenManager.accessDict.get('userID', None)
+            own_perm = ModelService.check_permission(userID,30)
+            if own_perm is True:
+                check_perm = ModelService.check_permission(userID=userID, permID=20)
+                if check_perm is True:
+                    try:
+                        content = json.loads(content)
+                        search_kwargs = CommonService.get_kwargs(data=content)
+                        queryset = Device_User.objects.filter(**search_kwargs)
+                    except Exception as e:
+                        return ResponseJSON(444,repr(e))
+                    if rstime is not None and rstime != '' and retime is not None and retime != '':
+                        startt = datetime.datetime.fromtimestamp(int(rstime))
+                        rstime = startt.strftime("%Y-%m-%d %H:%M:%S.%f")
+                        endt = datetime.datetime.fromtimestamp(int(retime))
+                        retime = endt.strftime("%Y-%m-%d %H:%M:%S.%f")
+                        queryset = queryset.filter(data_joined__range=(rstime, retime))
+                    elif rstime is not None and rstime != '':
+                        startt = datetime.datetime.fromtimestamp(int(rstime))
+                        rstime = startt.strftime("%Y-%m-%d %H:%M:%S.%f")
+                        queryset = queryset.filter(data_joined__gte=rstime)
+                    elif retime is not None and retime != '':
+                        endt = datetime.datetime.fromtimestamp(int(retime))
+                        retime = endt.strftime("%Y-%m-%d %H:%M:%S.%f")
+                        queryset = queryset.filter(data_joined__lte=retime)
+                    if queryset.exists():
+                        count = queryset.count()
+                        res = queryset[(page - 1) * line:page * line]
+                        sqlDict = CommonService.query_set_to_dict(res)
+                        for k, v in enumerate(sqlDict["datas"]):
+                            if len(v['fields']['role']) > 0:
+                                role_query_set = Role.objects.get(rid=v['fields']['role'][0])
+                                sqlDict["datas"][k]['fields']['role'].append(role_query_set.roleName)
+                            for val in res:
+                                if v['pk'] == val.userID:
+                                    if sqlDict["datas"][k]['fields']['online'] is True:
+                                        dl_time = val.last_login + datetime.timedelta(minutes=5)
+                                        now_time = timezone.localtime(timezone.now())
+                                        if now_time > dl_time:
+                                            sqlDict["datas"][k]['fields']['online'] = False
+                        sqlDict['count'] = count
+                        return ResponseJSON(0, sqlDict)
+                    return ResponseJSON(0, {'datas': [], 'count': 0})
+                else:
+                    return ResponseJSON(404)
+            else:
+                return ResponseJSON(404)
+        else:
+            return HttpResponse(tokenManager.errorCodeInfo(error_code))
+    else:
+        return ResponseJSON(311)
+
+
+
+

+ 9 - 3
Controller/AppInfo.py

@@ -11,7 +11,7 @@ from Service.ResponseService import *
 '''
 http://192.168.136.45:8077/appInfo?operation=add&token=test&appBundleId=123456&appName=%E8%AF%BA%E5%9F%BA%E4%BA%9A1%E5%8F%B7&systemLanguage=US&content=dladfjklsjfdsajkdfasjkljlk&app_type=2&newAppversion=1234&bundleVersion=1234
 http://192.168.136.45:8077/appInfo?operation=update&token=test&appBundleId=1234&appName=%E8%AF%BA%E5%9F%BA%E4%BA%9A3%E5%8F%B7&systemLanguage=US&content=dladfjklsjfdsajkdfasjkljlk&app_type=2&newAppversion=555&id=6
-http://192.168.136.45:8077/appInfo?operation=query&token=test&page=1&line=10
+http://127.0.0.1:8000/appInfo?operation=query&token=stest&page=1&line=10
 http://192.168.136.45:8077/appInfo?operation=delete&token=test&id=1&id=2&id=3&id=4&id=5
 '''
 
@@ -78,6 +78,7 @@ class AppInfo(View):
                                         'systemLanguage': app_info.systemLanguage,
                                         'content': app_info.content,
                                         'app_type': app_info.app_type,
+                                        'downloadLink':app_info.downloadLink,
                                         'id': app_info.id,
                                         'bundleVersion': app_info.bundleVersion})
         else:
@@ -93,6 +94,7 @@ class AppInfo(View):
             content = request_dict.get('content', None)
             app_type = request_dict.get('app_type', None)
             bundleVersion = request_dict.get('bundleVersion', None)
+            downloadLink = request_dict.get('downloadLink', None)
             param_flag = CommonService.get_param_flag(
                 data=[appBundleId, appName, systemLanguage, newAppversion, content, app_type, bundleVersion])
             if param_flag is True:
@@ -115,6 +117,7 @@ class AppInfo(View):
                                 content=content,
                                 app_type=app_type,
                                 bundleVersion=bundleVersion,
+                                downloadLink=downloadLink,
                             )
                             app_Info.save()
                         except Exception:
@@ -133,7 +136,8 @@ class AppInfo(View):
                                                         'content': app_Info.content,
                                                         'app_type': app_Info.app_type,
                                                         'id': app_Info.id,
-                                                        'bundleVersion': app_Info.bundleVersion,
+                                                        'downloadLink':downloadLink,
+                                                        'bundleVersion': app_Info.bundleVersion
                                                     })
                             else:
                                 return ResponseJSON(500)
@@ -172,8 +176,9 @@ class AppInfo(View):
             content = request_dict.get('content', None)
             app_type = request_dict.get('app_type', None)
             bundleVersion = request_dict.get('bundleVersion', None)
+            downloadLink = request_dict.get('downloadLink', None)
             param_flag = CommonService.get_param_flag(
-                data=[appBundleId, appName, systemLanguage, newAppversion, content, app_type, bundleVersion])
+                data=[appBundleId, appName, systemLanguage, newAppversion, content, app_type, bundleVersion,downloadLink])
             if param_flag is True:
                 try:
                     app_info = App_Info.objects.get(id=id)
@@ -190,6 +195,7 @@ class AppInfo(View):
                         app_info.content = content
                         app_info.app_type = app_type
                         app_info.bundleVersion = bundleVersion
+                        app_info.downloadLink = downloadLink
                         app_info.save()
                         return ResponseJSON(0, {'update_id': app_info.id, 'update_time': str(app_info.update_time)})
             else:

+ 3 - 3
Controller/EquipmentManager.py

@@ -39,9 +39,9 @@ def addNewUserEquipment(userID, deviceContent, bulk = False):
             else:
                 UID = deviceData.get('UID', None)
                 if UID != None:
-                    is_bind = Device_Info.objects.filter(UID = UID,isShare=False)
-                    if is_bind:
-                        return ResponseFormal(175)
+                    #is_bind = Device_Info.objects.filter(UID = UID,isShare=False)
+                    #if is_bind:
+                        #return ResponseFormal(175)
                     dValid = Device_Info.objects.filter(userID = userID, UID = UID)
                     if dValid:
                         return ResponseFormal(174)

+ 0 - 1
Controller/EquipmentOTA.py

@@ -131,7 +131,6 @@ class EquipmentOTA(View):
                 if ev.exists():
                     status = request_dict.get('status',None)
                     try:
-
                         update_time = timezone.localtime(timezone.now())
                         ev.update(status=status,update_time=update_time)
                     except Exception as e:

+ 0 - 1
Controller/HlsManage.py

@@ -16,7 +16,6 @@ from django.utils.decorators import method_decorator
 from django.views.decorators.csrf import csrf_exempt
 from Service.TokenManager import JSONTokenManager
 from Service.ModelService import ModelService
-from Service.CommonService import CommonService
 from Model.models import Device_Meal
 from Object.AWS.S3ClassObject import S3ClassObject
 from Object.AWS.CloudfrontSignUrl import CloudfrontSignUrl

+ 17 - 5
Controller/OTAEquipment.py

@@ -32,8 +32,9 @@ def getEquipmentVersion(code):
             return ResponseFormal(900)
 
 
-def getUrl(filePath):
+def getUrl(filePath,http_host):
     urls = []
+    server_dm = 'http://'+http_host
     filePaths = filePath.split(',')
     if len(filePaths) > 0:
         for path in filePaths:
@@ -48,7 +49,7 @@ def getUrl(filePath):
     else:
         return ''
 
-def getUpdataFileUrl(code):
+def getUpdataFileUrl(code,http_host):
     try:
         equipmentValid = Equipment_Version.objects.filter(code=code,status=1).order_by('-data_joined')
     except Exception as e:
@@ -58,11 +59,14 @@ def getUpdataFileUrl(code):
     else:
         if equipmentValid:
             equipment = equipmentValid[0]
-            url = getUrl(equipment.filePath)
+            file_path = equipment.filePath
+            url = getUrl(file_path,http_host)
+            https_url = getOTAHttps(file_path,http_host)
             if len(url) > 0:
                 return ResponseFormal(0,{
                     "urlCount": len(url),
                     "url": url,
+                    'https_url':https_url,
                     "fileSize": equipment.fileSize,
                     "Description": equipment.Description,
                 })
@@ -71,7 +75,14 @@ def getUpdataFileUrl(code):
         else:
             return ResponseFormal(902)
 
-#from django.core.files.uploadedfile import TemporaryUploadedFile
+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 getDir(fileType, fileName, fileCode, fileVersion):
     try:
         if fileCode != None and fileVersion != None:
@@ -273,8 +284,9 @@ def getUpdataFileUrlInterface(request,
     else:
         return ResponseJSON(801)
     code = request_dict.get('code', None)
+    http_host = request.META.get('HTTP_HOST', None)
     if code is not None:
-        return HttpResponse(getUpdataFileUrl(code))
+        return HttpResponse(getUpdataFileUrl(code,http_host))
     else:
         return ResponseJSON(800)
 

+ 77 - 42
Controller/OauthManage.py

@@ -14,13 +14,10 @@
 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 Model.models import oauth_user,Auth_Captcha
 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
@@ -36,7 +33,7 @@ class OauthManage(View):
     def get(self, request, *args, **kwargs):
 
         return
-    # 增加
+    # 认证登录
     def post(self, request, *args, **kwargs):
         try:
             json_data = json.loads(request.body.decode("utf-8"))
@@ -46,46 +43,84 @@ class OauthManage(View):
         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:
+                try:
+                    ser = requests.get(url='http://192.168.136.45:9898/accounts/user/',
+                                       data={'access_token': access_token})
                     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)
+                except Exception as e:
+                    print(repr(e))
+                    return ResponseJSON(10,repr(e))
+                else:
+                    oid = ser_data['oid']
+                    if oid is not None:
+                        ou = oauth_user.objects.filter(oid=oid)
+                        # 用户存在情况查找绑定用户
+                        if ou.exists():
+                            user_qs =ou[0].userID
+                            userID = user_qs.userID
+                        #用户不存在情况新增一个用户
                         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)
+                            oid = ser_data['oid']
+                            username = ser_data['username']
+                            password = ser_data['password']
+                            email = ser_data['email']
+                            try:
+                                CaptchaRecord = Auth_Captcha()
+                                CaptchaRecord.authcaptca = '1234'
+                                CaptchaRecord.username = username
+                                CaptchaRecord.sendtype = 'register'
+                                CaptchaRecord.save()
+                            except Exception as e:
+                                return ResponseJSON(10,repr(e))
+                            try:
+                                UserData = Device_User(username=username, userEmail=email, password=password,
+                                                       userID=CommonService.getUserID(μs=False, setOTAID=True),
+                                                       is_active=True, user_isValid=True)
+                                UserData.save()
+                            except Exception as e:
+                                errorInfo = traceback.format_exc()
+                                print('Create User Error: %s' % errorInfo)
+                                return ResponseJSON(424,'Create User Error:' + repr(e))
+                            else:
+                                ourValid = oauth_user.objects.create(oid=oid, userID=UserData)
+                                if ourValid:
+                                    userID = UserData.userID
+                        if userID:
+                            userValid = Device_User.objects.filter(userID=userID)
+                            if userValid.exists():
+                                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': ''}, 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)
+                                        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'] = userValid[0].username
+                                        return ResponseJSON(0, result)
 
+        return ResponseJSON(10)
     # 修改 资源改变
     def put(self, request):
         return ResponseJSON(404)

+ 3 - 2
Controller/StreamMedia.py

@@ -4,15 +4,16 @@ from django.views.decorators.csrf import csrf_exempt
 from Service.TokenManager import JSONTokenManager
 from Service.ModelService import ModelService
 from Model.models import Equipment_Stream
-from Service.CommonService import CommonService
 from Object.AWS.S3ClassObject import S3ClassObject
 from Object.AWS.ElasticTranscoder import ElasticTranscoder
 import traceback, xmltodict, requests, re, subprocess
 from ffmpy import FFmpeg
 import time
 from Object.AWS.CloudfrontSignCookie import BetterThanBoto
-from Ansjer.config import *
+from Ansjer.settings import NGINX_RTMP_STAT,RTMP_PUSH_URL
 from Service.ResponseService import *
+from Ansjer.config import BASE_DIR
+import os
 
 '''
 移动端=>

+ 2 - 84
Controller/Test.py

@@ -29,13 +29,6 @@ from django.middleware.csrf import get_token
 from django.http import JsonResponse
 from ratelimit.decorators import ratelimit
 
-
-@ratelimit(key='ip', rate='1/m')
-def RqTest(request):
-    was_limited = getattr(request,'limited', False)
-    var_dump(was_limited)
-    return ResponseJSON(0)
-
 class Test(View):
     '''
     limit=10:指定返回记录的数量
@@ -52,88 +45,13 @@ class Test(View):
     @ratelimit(key='ip', rate='1/m')
     # 查询
     def get(self, request, *args, **kwargs):
-        was_limited = getattr(request, 'limited', False)
-        var_dump(was_limited)
         return ResponseJSON(0)
-        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 = 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'))
-                                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"))
-        '''
-        token = get_token(request)
-        return JsonResponse({'token': token})        
-        '''
 
-        return ResponseJSON(0, {'test': json_data})
+
+        return ResponseJSON(0, {'test': 123})
 
     # 修改 资源改变
     def put(self, request):

+ 11 - 8
Controller/UserManger.py

@@ -29,6 +29,7 @@ http://13.56.215.252:82/account/authcode?userEmail=123456&language=en&mid=1234
 http://13.56.215.252:82/account/register?userName=123456&language=en&mid=1234&userEmail=userEmail&userPwd=1234&identifyingCode=1234324
 '''
 class getAuthCodeView(TemplateView):
+
     @method_decorator(csrf_exempt)
     def dispatch(self, *args, **kwargs):
         return super(getAuthCodeView, self).dispatch(*args, **kwargs)
@@ -511,14 +512,16 @@ class ForgetPwdView(TemplateView):
     def ForgetPwd(self, userName):
         dataValid = DataValid()
         if dataValid.mobile_validate(userName):
-            User = Device_User.objects.filter(username = userName)
+            User = Device_User.objects.filter(username= userName)
             if User:
-
-                send_status = MiscellService.ses_send_email_handle(data={
-                    'useremail':User[0].userEmail,
-                    'username':userName,
-                    'type':'forget',
-                })
+                try:
+                    send_status = MiscellService.ses_send_email_handle(data={
+                        'useremail': User[0].userEmail,
+                        'username': userName,
+                        'type': 'forget',
+                    })
+                except Exception as e:
+                    return ResponseJSON(10,repr(e))
                 if send_status == 'has_send':
                     return ResponseFormal(1004)
                 if send_status is True:
@@ -900,7 +903,7 @@ def showAllUserPC(userID,line,page):
                     for val in device_user_res:
                         if v['pk'] == val.userID:
                             if sqlDict["datas"][k]['fields']['online'] is True:
-                                dl_time = val.last_login + datetime.timedelta(minutes=30)
+                                dl_time = val.last_login + datetime.timedelta(minutes=5)
                                 now_time = timezone.localtime(timezone.now())
                                 if now_time > dl_time:
                                     sqlDict["datas"][k]['fields']['online'] = False

+ 22 - 2
Model/models.py

@@ -156,7 +156,7 @@ class Device_User(AbstractBaseUser):
 
     username = models.CharField(max_length=40, verbose_name=u'用户名', unique = True)
     password = models.CharField(max_length=128, verbose_name=u'密码')
-    userEmail = models.EmailField(max_length = 64, verbose_name=u'邮箱', unique = True, default='AnonymousUser@qq.com')
+    userEmail = models.EmailField(max_length = 64, verbose_name=u'邮箱', unique = True, null=True, blank=True)
     # 实际的路径就是 MEDIA_ROOT/Image/filename,所以可用upload_to来指定文件存放的前缀路径
     userIconPath = ProcessedImageField(blank=True, upload_to='User/Images/', default='static/User/default.png',
                         verbose_name=u'头像',
@@ -592,6 +592,7 @@ class Equipment_Version(models.Model):
 
 
 class App_Info(models.Model):
+    
     id = models.AutoField(primary_key=True,verbose_name=u'自增标记ID')
     appBundleId = models.CharField(blank=True, max_length=32, verbose_name=u'appID')
     appName = models.CharField(blank=True, max_length=32, verbose_name=u'app名称')
@@ -602,6 +603,8 @@ class App_Info(models.Model):
     app_type = models.IntegerField(null=True, blank=True, verbose_name=u'app类型')
     add_time = models.DateTimeField(blank=True,null=True, verbose_name=u'加入时间', auto_now_add=True)
     update_time = models.DateTimeField(blank=True, verbose_name=u'更新时间', auto_now=True)
+    downloadLink = models.TextField(blank=True, null=True, verbose_name='升级')
+
 
     def __str__(self):
         return self.id
@@ -610,4 +613,21 @@ class App_Info(models.Model):
         db_table = 'app_info'
         verbose_name = u'app信息表'
         verbose_name_plural=verbose_name
-        ordering = ('id',)
+        ordering = ('id',)
+
+
+'''
+class oauth_user(models.Model):
+    id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
+    oid = models.CharField(max_length=36,unique=True,null=True,blank=True)
+    userID = models.OneToOneField("Device_User",verbose_name="用户表userID",to_field='userID',on_delete=models.CASCADE)
+    
+    def __str__(self):
+        return self.oid
+
+    class Meta:
+        db_table = 'oauth_user'
+        verbose_name = u'认证用户关联表'
+        verbose_name_plural=verbose_name
+        ordering = ('id',)
+'''

+ 18 - 10
Object/mongodb.py

@@ -15,20 +15,28 @@
 import pymongo
 import math
 import platform
-
+from Ansjer.settings import SERVER_TYPE
+# SERVER_TYPE = 'local'
 
 class mongodb(object):
 
     def __init__(self):
-        sysstr = platform.system()
-        if (sysstr == "Windows"):
-            myclient = pymongo.MongoClient('mongodb://192.168.136.45:27017/')
-        elif (sysstr == "Linux"):
-            print("Call Linux tasks")
-            myclient = pymongo.MongoClient()
-        self.myclient = myclient
-        self.db = myclient['ansjer']
-        # self.db = myclient['test_ansjer']
+        # sysstr = platform.system()
+        # if (sysstr == "Windows"):
+        #     myclient = pymongo.MongoClient('mongodb://192.168.136.45:27017/')
+        # elif (sysstr == "Linux"):
+        #     print("Call Linux tasks")
+        #     myclient = pymongo.MongoClient()
+        if SERVER_TYPE == 'local':
+            self.myclient = pymongo.MongoClient('mongodb://192.168.136.45:27017/')
+            self.db =  self.myclient['ansjer']
+        elif SERVER_TYPE == 'test':
+            self.myclient = pymongo.MongoClient()
+            self.db =  self.myclient['test_ansjer']
+        elif SERVER_TYPE == 'formal':
+            self.myclient = pymongo.MongoClient()
+            self.db = self.myclient['ansjer']
+
 
     def check_db_exist(self, database):
         dblist = self.myclient.database_names()

+ 2 - 2
Service/CommonService.py

@@ -5,9 +5,9 @@ from pyipip import IPIPDatabase
 import redis,time,base64
 from pathlib import Path
 from django.utils import timezone
-from Ansjer.config import *
+from Ansjer.settings import SERVER_HOST
 from django_global_request.middleware import get_request
-
+from Ansjer.config import BASE_DIR
 
 # 复用性且公用较高封装代码在这
 class CommonService:

+ 3 - 1
Service/MiscellService.py

@@ -1,5 +1,6 @@
 from Object.AWS.SesClassObject import SesClassObject
-from Ansjer.config import *
+from Ansjer.settings import SERVER_DOMAIN
+from Ansjer.config import SECRET_KEY
 from Service.CommonService import CommonService
 import time, traceback
 from Controller.CheckUserData import getRandom, TokenLink
@@ -20,6 +21,7 @@ class MiscellService():
     @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)

+ 0 - 1
Service/ResponseService.py

@@ -21,7 +21,6 @@ def ResponseData(code, res={},*args, **kwargs):
             if dn.exists():
                 if dn[0]['language']:
                     LANGUAGE = dn[0]['language']
-    # print(__file__)
     data_en = {
         0: 'Success',
         4: 'Operation failed',

+ 0 - 0
requirements.txts