chenjunkai 6 years ago
parent
commit
ae7bc19cda

+ 1 - 2
Ansjer/test/coposs_sts.py

@@ -20,7 +20,6 @@ from aliyunsdksts.request.v20150401 import AssumeRoleRequest
 import json
 import oss2
 
-
 # Endpoint以杭州为例,其它Region请按实际情况填写。
 endpoint = 'oss-cn-shenzhen.aliyuncs.com'
 # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
@@ -38,7 +37,7 @@ req.set_accept_format('json')
 req.set_RoleArn(role_arn)
 req.set_RoleSessionName('test')
 req.set_DurationSeconds(3600)
-policys={
+policys = {
     "Version": "1",
     "Statement": [
         {

+ 1 - 1
Ansjer/test/osstest.py

@@ -14,7 +14,7 @@ bucket = oss2.Bucket(auth, host, bucket_name)
 
 # 设置Delimiter参数为正斜线(/)。
 # for obj in oss2.ObjectIterator(bucket, delimiter='/',prefix='vod/'):
-for obj in oss2.ObjectIterator(bucket, delimiter='/vod/'):
+for obj in oss2.ObjectIterator(bucket, delimiter='/',prefix='vod/'):
     # 通过is_prefix方法判断obj是否为文件夹。
     if obj.is_prefix():  # 文件夹
         print('directory: ' + obj.key)

+ 7 - 11
Ansjer/test/util/time.py

@@ -1,13 +1,9 @@
+# -*- coding: utf-8 -*-
+import datetime
+import random
 
-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()
-
+random_id = 1324
+# order_id = datetime.datetime.now().strftime('%Y%m%d%H%M%S')+str(passport_id)
+order_id = datetime.datetime.now().strftime('%Y%m%d%H%M%S') + str(random_id)
+print(order_id)
 

+ 2 - 4
Ansjer/urls.py

@@ -5,7 +5,7 @@ from django.urls import path, re_path
 from Controller import FeedBackInfo, EquipmentOTA, EquipmentInfo, EquipmentSensor, StreamMedia, AdminManage, AppInfo, \
     AccessLog, Test, MealManage, DeviceMeal, HlsManage, DeviceManage, EquipmentStatus, SysManage, DeviceLog, LogAccess, \
     EquipmentManager, LogManager, PermissionManager, OTAEquipment, shareUserPermission, UserManger, CheckUserData, \
-    UserController
+    UserController,CloudVod
 
 
 urlpatterns = [
@@ -103,8 +103,6 @@ urlpatterns = [
     url(r'^OTA/uploadsPack$', OTAEquipment.uploadOTAInterfaceView.as_view()),
     url(r'^OTA/downloadsPack/(?P<fullPath>[0-9\w/.\-]+)', OTAEquipment.downloadOTAInterface),
 
-    # 移动侦测云录像获取证书接口
-    url(r'^cloudVod/(\w+)$', DeviceManage.Devices),
     # v2接口
     #h获取验证码
     url(r'^v2/account/authcode$', UserController.v2authCodeView.as_view()),
@@ -112,7 +110,7 @@ urlpatterns = [
     url(r'^v2/account/forgetCode$', UserController.v2forgetPwdCodeView.as_view()),
     url(r'^v2/account/resetPwdByCode$', UserController.v2resetPwdByCodeView.as_view()),
 
-    # url(r'^uid/(?P<operation>.*)$', UidController.UidControllerView.as_view()),
+    url(r'^cloudVod/(?P<operation>.*)$', CloudVod.CloudVodView.as_view()),
 
     url(r'^detect/add$', EquipmentInfo.AddDetectionView.as_view()),
     url(r'^detect/status$', EquipmentInfo.DetectStatusView.as_view()),

+ 120 - 0
Controller/CloudVod.py

@@ -0,0 +1,120 @@
+#!/usr/bin/env python3  
+# -*- coding: utf-8 -*-  
+"""
+@Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
+@AUTHOR: ASJRD018
+@NAME: AnsjerFormal
+@software: PyCharm
+@DATE: 2018/12/5 9:30
+@Version: python3.6
+@MODIFY DECORD:ansjer dev
+@file: CloudVod.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 Object.TokenObject import TokenObject
+from Object.ResponseObject import ResponseObject
+from django.http import JsonResponse
+from aliyunsdkcore import client
+from aliyunsdksts.request.v20150401 import AssumeRoleRequest
+import json
+import oss2
+import jwt
+from Ansjer.config import UID_TOKEN_KEY
+from Object.UidTokenObject import UidTokenObject
+
+# 设备信息添加
+class CloudVodView(View):
+    @method_decorator(csrf_exempt)
+    def dispatch(self, *args, **kwargs):
+        return super(CloudVodView, self).dispatch(*args, **kwargs)
+
+    def get(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        return self.validation(request.GET, operation)
+
+    def post(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        return self.validation(request.POST, operation)
+
+    def validation(self, request_dict, operation):
+        response = ResponseObject()
+        if operation is None:
+            return response.json(444, 'error path')
+        if operation == 'getSts':
+            # 移动侦测获取设备sts证书
+            return self.do_getSts(request_dict, response)
+        elif operation == 'xxx':
+            token = request_dict.get('token', None)
+            tko = TokenObject(token)
+            tko.valid()
+            response.lang = tko.lang
+            if tko.code != 0:
+                return response.json(tko.code)
+            userID = tko.userID
+        else:
+            return response.json(10)
+
+    def do_getSts(self, request_dict, response):
+        '''
+        生成sts上传授权
+        '''
+        # uidToken = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiJGVFNMTDhITTQzN1ozOFdVMTExQSJ9.GIBt8SgY-3yRt9mlihtvRwLM-MT8uVPDKCUQ2yvV3Vo'
+        uidToken = request_dict.get('uidToken', None)
+        utko = UidTokenObject(uidToken)
+        if utko.flag is False:
+            return response.json(444, 'uidToken')
+        UID = utko.UID
+        endpoint = 'oss-cn-shenzhen.aliyuncs.com'
+        access_key_id = 'LTAIyMkGfEdogyL9'
+        access_key_secret = '71uIjpsqVOmF7DAITRyRuc259jHOjO'
+        bucket_name = 'cloudvod1'
+        # role_arn是角色的资源名称。
+        role_arn = 'acs:ram::1901342792446414:role/stsoss'
+        clt = client.AcsClient(access_key_id, access_key_secret, 'cn-shenzhen')
+        req = AssumeRoleRequest.AssumeRoleRequest()
+        # 设置返回值格式为JSON。
+        req.set_accept_format('json')
+        req.set_RoleArn(role_arn)
+        req.set_RoleSessionName(UID)
+        req.set_DurationSeconds(3600)
+        policys = {
+            "Version": "1",
+            "Statement": [
+                {
+                    "Action": [
+                        "oss:PutObject",
+                        "oss:DeleteObject",
+                    ],
+                    "Resource": ["acs:oss:*:*:cloudvod1/*"],
+                    "Effect": "Allow",
+                    "Condition": {
+                        "IpAddress": {
+                            "acs:SourceIp": "120.237.157.184"
+                        }
+                    }
+                }
+            ]
+        }
+        req.set_Policy(Policy=json.dumps(policys))
+        body = clt.do_action(req)
+        # 使用RAM账号的AccessKeyId和AccessKeySecret向STS申请临时token。
+        token = json.loads(body)
+        print(token)
+        res = {
+            'AccessKeyId': token['Credentials']['AccessKeyId'],
+            'AccessKeySecret': token['Credentials']['AccessKeySecret'],
+            'SecurityToken': token['Credentials']['SecurityToken'],
+            'Expiration': token['Credentials']['Expiration'],
+            'expire': '3600',
+            'endpoint': endpoint,
+            'bucket_name': bucket_name,
+            'arn': token['AssumedRoleUser']['Arn'],
+            'code': 0,
+            'storage':'{UID}/{Channel}/'.format(UID=UID,Channel=Channel)
+        }
+        return JsonResponse(status=200, data=res)

+ 26 - 33
Controller/DeviceMeal.py

@@ -51,39 +51,32 @@ class DeviceMeal(View):
     def validation(self, request_dict, *args, **kwargs):
         response = ResponseObject()
         operation = request_dict.get('operation', None)
-        if operation is not None:
-            token = request_dict.get('token', None)
-            if token is not None:
-                tko = TokenObject(token)
-                tko.valid()
-                response.lang = tko.lang
-                if tko.code == 0:
-                    userID = tko.userID
-                    if userID is not None:
-                        if operation == 'query':
-                            return self.query(request_dict, userID, response)
-                        elif operation == 'add':
-                            return self.add(request_dict, userID, response)
-                        elif operation == 'update':
-                            return self.update(request_dict, userID, response)
-                        elif operation == 'delete':
-                            return self.delete(request_dict, userID, response)
-                        # 用户付费成功调用
-                        elif operation == 'addbyuser':
-                            return self.addbyuser(request_dict, userID, response)
-                        elif operation == 'querybyuser':
-                            return self.querybyuser(request_dict, userID, response)
-                        elif operation == 'updatebyuser':
-                            return self.updatebyuser(request_dict, userID, response)
-                        elif operation == 'updatestatusbyuser':
-                            return self.updatestatusbyuser(request_dict, userID, response)
-                    return response.json(444, 'userID,operation')
-                else:
-                    return response.json(tko.code)
-            else:
-                return response.json(309)
-        else:
-            return response.json(444, 'operation')
+        token = request_dict.get('token', None)
+        tko = TokenObject(token)
+        tko.valid()
+        response.lang = tko.lang
+        if tko.code != 0:
+            return response.json(tko.code)
+        userID = tko.userID
+        if userID is not None:
+            if operation == 'query':
+                return self.query(request_dict, userID, response)
+            elif operation == 'add':
+                return self.add(request_dict, userID, response)
+            elif operation == 'update':
+                return self.update(request_dict, userID, response)
+            elif operation == 'delete':
+                return self.delete(request_dict, userID, response)
+            # 用户付费成功调用
+            elif operation == 'addbyuser':
+                return self.addbyuser(request_dict, userID, response)
+            elif operation == 'querybyuser':
+                return self.querybyuser(request_dict, userID, response)
+            elif operation == 'updatebyuser':
+                return self.updatebyuser(request_dict, userID, response)
+            elif operation == 'updatestatusbyuser':
+                return self.updatestatusbyuser(request_dict, userID, response)
+        return response.json(444, 'userID,operation')
 
     def add(self, request_dict, userID,response):
         own_perm = ModelService.check_permission(userID=userID, permID=40)

+ 11 - 11
Controller/EquipmentInfo.py

@@ -9,7 +9,7 @@ from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from django.views.generic import TemplateView
 from Ansjer.config import UID_TOKEN_KEY, SERVER_DOMAIN
-import jwt
+from Object.UidTokenObject import UidTokenObject
 
 '''
 http://192.168.136.45:8077/equipment/info?token=test&devUid=2N1K3LE78TYJ38CE111A&Channel=0&eventType=1&eventTime=1234567890&operation=add&alarm=21342134&receiveTime=1234567891234567
@@ -251,19 +251,18 @@ class AddDetectionView(TemplateView):
         Channel = request_dict.get('Channel', None)
         eventType = request_dict.get('eventType', None)
         eventTime = request_dict.get('eventTime', None)
-        res = jwt.decode(uidToken, UID_TOKEN_KEY, algorithms='HS256')
-        UID = res.get('uid',None)
-        if not UID or not Channel or not eventType or not eventTime:
-            return response.json(444, 'devUid, Channel, eventType, eventTime, alarm, receiveTime')
-        # dv_qs = Device_Info.objects.filter(UID=UID, isShare=False)
+        utko = UidTokenObject(uidToken)
+        if utko.flag is False:
+            return response.json(444, 'tidToken is wrong')
+        UID = utko.UID
+        if not Channel or not eventType or not eventTime:
+            return response.json(444, 'uidToken,Channel,eventType,eventTime')
         dv_qs = Device_Info.objects.filter(UID=UID, iSNotification=True).values("userID_id", "NickName")
         if not dv_qs.exists():
             return response.json(10, 'device not detect')
         qs_list = []
         for dv in dv_qs:
-            print(dv)
             add_data = {
-                # 'userID': Device_User.objects.get(userID=dv["userID_id"]),
                 'userID_id': dv["userID_id"],
                 'devUid': UID,
                 'Channel': Channel,
@@ -278,7 +277,7 @@ class AddDetectionView(TemplateView):
             print(2)
             return response.json(0)
         else:
-            return response.json(10,'无设备开启')
+            return response.json(10, '无设备开启')
 
 
 # http://192.168.136.40:8077/detect/status?token=local&id=138001380001543918745881545&iSNotification=0
@@ -315,8 +314,9 @@ class DetectStatusView(View):
         qs = Device_Info.objects.filter(id=id, userID_id=userID)
         if qs.exists():
             qs.update(iSNotification=iSNotification)
-            data = {'id': 'id', 'uid': qs[0].UID}
-            uid_token = jwt.encode(data, UID_TOKEN_KEY, algorithm='HS256').decode('utf-8')
+            data = {'uid': qs[0].UID}
+            utko = UidTokenObject()
+            uid_token = utko.generate(data)
             return response.json(0, {'uid_token': uid_token,
                                      'push_url': '{SERVER_DOMAIN}detect/add'.format(SERVER_DOMAIN=SERVER_DOMAIN)})
         else:

+ 0 - 52
Controller/ossVod/CloudVod.py

@@ -1,52 +0,0 @@
-#!/usr/bin/env python3  
-# -*- coding: utf-8 -*-  
-"""
-@Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
-@AUTHOR: ASJRD018
-@NAME: AnsjerFormal
-@software: PyCharm
-@DATE: 2018/11/30 15:28
-@Version: python3.6
-@MODIFY DECORD:ansjer dev
-@file: CloudVod.py
-@Contact: chanjunkai@163.com
-"""
-from django.utils.decorators import method_decorator
-from django.utils.timezone import utc
-from django.views.decorators.csrf import csrf_exempt
-from django.views.generic import TemplateView
-from ratelimit.decorators import ratelimit
-from Object.ResponseObject import ResponseObject
-from Object.TokenObject import TokenObject
-
-
-# 设备获取sts证书
-class OssDistributionSTSView(TemplateView):
-    @method_decorator(csrf_exempt)  # @csrf_exempt
-    def dispatch(self, *args, **kwargs):
-        return super(OssDistributionSTSView, self).dispatch(*args, **kwargs)
-
-    # @ratelimit(key='ip', rate='5/m')
-    def post(self, request, *args, **kwargs):
-        request.encoding = 'utf-8'
-        request_dict = request.POST
-        lang = request_dict.get('lang', 'en')
-        response = ResponseObject(lang)
-        was_limited = getattr(request, 'limited', False)
-        if was_limited is True:
-            return response.json(5)
-        return self.validates(request_dict, response)
-
-    # @ratelimit(key='ip', rate='5/m')
-    def get(self, request, *args, **kwargs):
-        request.encoding = 'utf-8'
-        request_dict = request.GET
-        lang = request_dict.get('lang', 'en')
-        response = ResponseObject(lang)
-        was_limited = getattr(request, 'limited', False)
-        if was_limited is True:
-            return response.json(5)
-        return self.validates(request_dict, response)
-
-    def validates(self, request_dict, response):
-        return

+ 32 - 16
Model/models.py

@@ -318,7 +318,7 @@ class Device_Info(models.Model):
     primaryUserID = models.CharField(blank=True, verbose_name='主用户',
                                      help_text=u'该设备的主用户', max_length=32, default='')
     data_joined = models.DateTimeField(blank=True, verbose_name=u'设备添加时间', auto_now_add=True)
-    update_time = models.DateTimeField(blank=True, verbose_name=u'更新时间', auto_now=True,null=True)
+    update_time = models.DateTimeField(blank=True, verbose_name=u'更新时间', auto_now=True, null=True)
 
     ip = models.CharField(blank=True, max_length=20, default='', verbose_name=u'设备区域ip')
     area = models.CharField(blank=True, max_length=100, default='', verbose_name=u'设备区域area')
@@ -363,13 +363,13 @@ class Device_Info(models.Model):
 
 class Access_Log(models.Model):
     id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
-    user = models.CharField(max_length=100, null=True, db_index=True, blank=True, verbose_name=u'用户')
-    operation = models.CharField(max_length=100, db_index=True, null=True, blank=True, verbose_name=u'操作')
-    ip = models.CharField(max_length=100, null=True, blank=True, verbose_name=u'访问ip地址')
-    url = models.CharField(max_length=150, null=True, blank=True, verbose_name=u'访问路径')
-    status = models.IntegerField(null=True, blank=True, verbose_name=u'状态')
+    user = models.CharField(max_length=100, default='', db_index=True, blank=True, verbose_name=u'用户')
+    operation = models.CharField(max_length=100, db_index=True, default='', blank=True, verbose_name=u'操作')
+    ip = models.CharField(max_length=100, default='', db_index=True, blank=True, verbose_name=u'访问ip地址')
+    url = models.CharField(max_length=150, default='', blank=True, verbose_name=u'访问路径')
+    status = models.IntegerField(default=0, blank=True, verbose_name=u'状态')
     time = models.DateTimeField(null=True, blank=True, db_index=True, verbose_name=u'访问时间')
-    content = models.TextField(blank=True, null=True, verbose_name=u'参数内容')
+    content = models.TextField(blank=True, default='', verbose_name=u'参数内容')
 
     class Meta:
         db_table = 'access_log'
@@ -458,7 +458,7 @@ class Store_Meal(models.Model):
     id = models.AutoField(primary_key=True, verbose_name=u'自增ID')
     title = models.CharField(blank=True, max_length=32, verbose_name=u'标题')
     price = models.CharField(blank=True, max_length=32, verbose_name=u'价格')
-    day = models.IntegerField(null=True, blank=True, verbose_name=u'存储时间')
+    day = models.IntegerField(default=0, blank=True, verbose_name=u'存储时间')
     content = models.TextField(blank=True, null=True, verbose_name=u'描述')
     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)
@@ -475,9 +475,9 @@ class Store_Meal(models.Model):
 
 class Device_Meal(models.Model):
     id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
-    status = models.IntegerField(null=True, blank=True, verbose_name=u'状态')
-    uid = models.CharField(null=True, blank=True, max_length=32, verbose_name=u'设备ID')
-    channel = models.IntegerField(null=True, blank=True, verbose_name=u'设备通道')
+    status = models.IntegerField(default='', blank=True, verbose_name=u'状态')
+    uid = models.CharField(default='', blank=True, max_length=32, verbose_name=u'设备ID')
+    channel = models.IntegerField(default=0, blank=True, verbose_name=u'设备通道')
     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)
     end_time = models.DateTimeField(blank=True, verbose_name=u'最后时间')
@@ -509,7 +509,7 @@ class Equipment_Version(models.Model):
     fileSize = models.IntegerField(blank=True, verbose_name=u'文件总大小')
     filePath = models.CharField(blank=True, max_length=256, verbose_name=u'升级文件路径')
     Description = models.TextField(blank=True, default='', verbose_name=u'描述信息')
-    fileMd5 = models.CharField(blank=True, max_length=32, null=True, verbose_name=u'上传文件MD5加密')
+    fileMd5 = models.CharField(blank=True, max_length=32, default='', verbose_name=u'上传文件MD5加密')
     status = models.BooleanField(blank=True, default=True, verbose_name=u'是否开启更新状态')
     update_time = models.DateTimeField(blank=True, verbose_name=u'更新时间', auto_now=True)
     lang = models.CharField(blank=True, default='en', max_length=32, verbose_name=u'ota包内置语言')
@@ -530,11 +530,11 @@ class App_Info(models.Model):
     systemLanguage = models.CharField(blank=True, max_length=32, verbose_name=u'系统语言')
     newAppversion = models.CharField(blank=True, max_length=12, verbose_name=u'系统版本')
     bundleVersion = models.CharField(blank=True, max_length=12, verbose_name=u'项目版本')
-    content = models.TextField(blank=True, null=True, verbose_name=u'更新内容')
-    app_type = models.IntegerField(null=True, blank=True, verbose_name=u'app类型')
+    content = models.TextField(blank=True, default='', verbose_name=u'更新内容')
+    app_type = models.IntegerField(default='', 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='升级')
+    downloadLink = models.TextField(blank=True, default='', verbose_name='升级')
 
     def __str__(self):
         return self.id
@@ -543,4 +543,20 @@ class App_Info(models.Model):
         db_table = 'app_info'
         verbose_name = u'app信息表'
         verbose_name_plural = verbose_name
-        ordering = ('id',)
+        ordering = ('id',)
+
+
+# class Order_Model(models.Model):
+#     order_id = models.BigIntegerField(primary_key=True, verbose_name=u'订单号')
+#
+#     add_time = models.IntegerField(verbose_name='添加时间', default=0)
+#     upd_time = models.IntegerField(verbose_name='更新时间', default=0)
+#
+#     def __str__(self):
+#         return self.id
+#
+#     class Meta:
+#         db_table = 'orders'
+#         verbose_name = u'app信息表'
+#         verbose_name_plural = verbose_name
+#         ordering = ('id',)

+ 37 - 0
Object/UidTokenObject.py

@@ -0,0 +1,37 @@
+#!/usr/bin/env python3  
+# -*- coding: utf-8 -*-  
+"""
+@Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
+@AUTHOR: ASJRD018
+@NAME: AnsjerFormal
+@software: PyCharm
+@DATE: 2018/12/5 11:52
+@Version: python3.6
+@MODIFY DECORD:ansjer dev
+@file: UidTokenObject.py
+@Contact: chanjunkai@163.com
+"""
+from Ansjer.config import UID_TOKEN_KEY
+import jwt
+
+
+class UidTokenObject:
+
+    def __init__(self, token=None):
+        self.token = token
+        self.UID = ''
+        self.flag = self.valid()
+
+    def valid(self):
+        token = self.token
+        if self.token is None:
+            return False
+        res = jwt.decode(token, UID_TOKEN_KEY, algorithms='HS256')
+        UID = res.get('uid', None)
+        if UID is None:
+            return False
+        self.UID = UID
+
+    def generate(self, data={}):
+        token = jwt.encode(data, UID_TOKEN_KEY, algorithm='HS256').decode('utf-8')
+        return token

+ 3 - 71
Service/CommonService.py

@@ -45,42 +45,6 @@ class CommonService:
         sqlDict = dict(zip(["datas"], [sqlList]))
         return sqlDict
 
-    @staticmethod
-    def set_redis_data(key, val, expire=0):
-        POOL = redis.ConnectionPool(host=SERVER_HOST, port=6379)
-        CONN = redis.Redis(connection_pool=POOL)
-        CONN.set(key, val)
-        if expire > 0:
-            CONN.expire(key, expire)
-        return True
-
-    @staticmethod
-    def get_redis_data(key):
-        POOL = redis.ConnectionPool(host=SERVER_HOST, port=6379)
-        CONN = redis.Redis(connection_pool=POOL)
-        try:
-            val = CONN.get(key)
-        except Exception as e:
-            return False
-        else:
-            if val == b'False':
-                return False
-            if val:
-                return val
-            else:
-                return False
-
-    @staticmethod
-    def del_redis_data(key):
-        POOL = redis.ConnectionPool(host=SERVER_HOST, port=6379)
-
-        CONN = redis.Redis(connection_pool=POOL)
-        val = CONN.delete(key)
-        if val:
-            return True
-        else:
-            return False
-
     # 获取文件大小
     @staticmethod
     def get_file_size(file_path='', suffix_type='', decimal_point=0):
@@ -134,48 +98,16 @@ class CommonService:
             t += 1
         return time_dict
 
-    #根据ip获取地址
+    # 根据ip获取地址
     @staticmethod
     def getAddr(ip):
         base_dir = BASE_DIR
         # ip数据库
-        db = IPIPDatabase(base_dir+'/DB/17monipdb.dat')
+        db = IPIPDatabase(base_dir + '/DB/17monipdb.dat')
         addr = db.lookup(ip)
         ts = addr.split('\t')[0]
         return ts
 
-    #getMoreID
-    @staticmethod
-    def getMoreID(uPhone='13800138000', μs='uID'):
-        if μs == 'uID':
-            userID = str(round(time.time() * 1000000)) + uPhone
-            return userID
-
-        elif μs == 'otaID':
-            otaID = '13800138000' + str(round(time.time() * 1000000))
-            return otaID
-
-        elif μs == 'eID':
-            eID = '13800' + str(round(time.time() * 1000000)) + '138000'
-            return eID
-
-        elif μs == 'ID':
-            eID = '13800' + str(round(time.time() * 1000000)) + '138000'
-            return eID
-
-        elif μs == 'gID':
-            gID = '10000' + str(round(time.time() * 1000000)) + '100001'
-            return gID
-
-        elif μs == 'rID':
-            rID = '10010' + str(round(time.time() * 1000000)) + '100011'
-            return rID
-
-        else:
-            defaultID = '10000100001' + str(round(time.time() * 1000000))
-            return defaultID
-
-    # getMoreID
     @staticmethod
     def getUserID(userPhone='13800138000', getUser=True, setOTAID=False, μs=True):
         if μs == True:
@@ -226,4 +158,4 @@ class CommonService:
         random = Random()
         for index in range(randomlength):
             str += characterSet[random.randint(0, length)]
-        return str
+        return str

+ 31 - 0
hlsvod.html

@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+</head>
+<body>
+<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
+<!-- Or if you want a more recent canary version -->
+<!-- <script src="https://cdn.jsdelivr.net/npm/hls.js@canary"></script> -->
+<video id="video"></video>
+<script>
+    var url = 'http://cloudvod1.oss-cn-shenzhen.aliyuncs.com/vod/1543561927/1543561927.m3u8?x-oss-process=hls/sign&OSSAccessKeyId=LTAIyMkGfEdogyL9&Expires=1543894190&Signature=QipqBv2HEzL7Ula7lrQsBOjvpGo='
+    var video = document.getElementById('video');
+    if (Hls.isSupported()) {
+        var hls = new Hls();
+        hls.loadSource(url);
+        hls.attachMedia(video);
+        hls.on(Hls.Events.MANIFEST_PARSED, function () {
+            video.play();
+        });
+    }
+    else if (video.canPlayType('application/vnd.apple.mpegurl')) {
+        video.src = url;
+        video.addEventListener('loadedmetadata', function () {
+            video.play();
+        });
+    }
+</script>
+</body>
+</html>