浏览代码

CHUSHIHUA

chenjunkai 5 年之前
父节点
当前提交
64caddb36f
共有 5 个文件被更改,包括 2 次插入890 次删除
  1. 1 6
      Ansjer/urls.py
  2. 1 0
      Controller/DetectController.py
  3. 0 217
      Controller/EquipmentSensor.py
  4. 0 630
      Controller/StreamMedia.py
  5. 0 37
      Model/models.py

+ 1 - 6
Ansjer/urls.py

@@ -1,7 +1,7 @@
 from django.conf.urls import url
 from django.urls import path, re_path
 
-from Controller import FeedBack, EquipmentOTA, EquipmentInfo, EquipmentSensor, StreamMedia, AdminManage, AppInfo, \
+from Controller import FeedBack, EquipmentOTA, EquipmentInfo, AdminManage, AppInfo, \
     AccessLog, DynamoDBLog, Test, MealManage, DeviceManage, EquipmentStatus, SysManage, DeviceLog, LogAccess, \
     AppColophon, \
     EquipmentManager, LogManager, PermissionManager, OTAEquipment, shareUserPermission, UidSetController, \
@@ -66,11 +66,6 @@ urlpatterns = [
     url(r'^upgrade/download/(\w+.[^_w]*\w+.\w+)$', CheckUserData.download_file),
     url(r'^downloads/upgrade/(\w+)/(\w+.[^_w]*\w+.\w+)$', OTAEquipment.downloadUpdataFileUrlInterface),
     url(r'^getOTAurl/getUpdataFileUrl$', OTAEquipment.getUpdataFileUrlInterface),
-    url(r'^media/stream', StreamMedia.StreamMedia.as_view()),  # 流处理
-    url(r'^media/auth_stream', StreamMedia.Auth_Stream),
-    url(r'^media/send_video_s3', StreamMedia.send_video_s3),
-    url(r'^media/auth_live', StreamMedia.Auth_Live),  # 传感器
-    url(r'^equipment/sensor', EquipmentSensor.EquipmentSensor.as_view()),  # 设备推送信息
     url(r'^equipment/info', EquipmentInfo.EquipmentInfo.as_view()),
     url(r'^adminManage/manage', AdminManage.AdminManage.as_view()),  # 管理员专属view
     url(r'^equipment/OTA', EquipmentOTA.EquipmentOTA.as_view()),  # OTA重构类

+ 1 - 0
Controller/DetectController.py

@@ -34,6 +34,7 @@ from Service.CommonService import CommonService
 '''
 http://test.dvema.com/detect/changeStatus?push_type=2&token_val=1507bfd3f7ba3bbb551&appBundleId=com.ansjer.zccloud_ab&tz=+08.00&uid=T4AZ3CUKCERH9FZA111A&status=1&m_code=AN020000own000000unkn.zccloud_ab&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzUxOTAxNjksInVzZXJJRCI6IjE1Njc3NTgyMTg2MTkxMzgwMDEzODAwMCIsImxhbmciOiJ0YyIsInVzZXIiOiIxMzExOTY1NzcxMyJ9.rQ11jA3IQPxQofFbZyG0nvLhGVcxOR82N2qQ8i04VuU&lang=tc&app_type=2
 http://test.push.dvema.com/notify/push?uidToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiJUNEFaM0NVS0NFUkg5RlpBMTExQSJ9.GtrXeq5gb2Z9M3mKECxi9eNQbPxqC-6PtgJkOOg6PwI&n_time=1598456451&channel=1&event_type=1&is_st=1
+http://push.dvema.com/notify/push?uidToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiJUNEFaM0NVS0NFUkg5RlpBMTExQSJ9.GtrXeq5gb2Z9M3mKECxi9eNQbPxqC-6PtgJkOOg6PwI&n_time=1598456451&channel=1&event_type=1&is_st=1
 '''
 
 

+ 0 - 217
Controller/EquipmentSensor.py

@@ -1,217 +0,0 @@
-from django.views.generic.base import View
-from django.utils.decorators import method_decorator
-from django.views.decorators.csrf import csrf_exempt
-from Service.ModelService import ModelService
-from Service.CommonService import CommonService
-from Model.models import Device_Info, Equipment_Sensor
-import traceback
-from Object.TokenObject import TokenObject
-from Object.ResponseObject import ResponseObject
-'''
-增加,关联设备传感器:
-params:{
-    did:设备主键did
-    name:传感器名称
-    status:设备状态值
-    type:设备类型
-    token:令牌
-    operation:add
-}
-http://192.168.136.40:8077/equipment/sensor?token=test&name=1&status=1&did=138001380001515727362917767&type=1&operation=add
-删除设备关联的传感器:
-params:{
-    id:传感器主键id
-    token:令牌
-    operation:delete
-     did:设备主键did
-}
-http://192.168.136.40:8077/equipment/sensor?token=test&id=2&id=3&operation=delete&did=did
-改,状态名称:
-params:{
-    id:传感器主键id
-    token:令牌
-    status:状态值
-    operation:update
-    name:name
-    did:设备主键did
-}
-http://192.168.136.40:8077/equipment/sensor?token=test&id=19&did=138001380001515727362917767&status=1&name=555&operation=update
-查找当前指定用户所有传感器
-params:{
-    token:令牌
-    operation:query
-    did:设备主键did
-}
-http://192.168.136.40:8077/equipment/sensor?token=test&operation=query&did=138001380001515727362917767
-后台
-查找所有传感器信息
-http://192.168.136.40:8077/equipment/sensor?token=test&page=1&line=5&operation=queryall
-'''
-
-
-class EquipmentSensor(View):
-    @method_decorator(csrf_exempt)
-    def dispatch(self, *args, **kwargs):
-        return super(EquipmentSensor, self).dispatch(*args, **kwargs)
-
-    def get(self, request, *args, **kwargs):
-        request.encoding = 'utf-8'
-        return self.validation(request_dict=request.GET)
-
-    def post(self, request, *args, **kwargs):
-        request.encoding = 'utf-8'
-        return self.validation(request_dict=request.POST)
-
-    def validation(self, request_dict, *args, **kwargs):
-        response = ResponseObject()
-        token = request_dict.get('token', None)
-        if token is not None:
-            tko = TokenObject(token)
-            response.lang = tko.lang
-            if tko.code == 0:
-                userID = tko.userID
-                if userID is not None:
-                    operation = request_dict.get('operation', None)
-                    if operation == 'add':
-                        return self.add_sensor(request_dict, userID,response)
-                    elif operation == 'delete':
-                        return self.delete_sensor(request_dict, userID,response)
-                    elif operation == 'update':
-                        return self.update_sensor(request_dict, userID,response)
-                    elif operation == 'query':
-                        return self.query_sensor(request_dict, userID,response)
-                    elif operation == 'queryall':
-                        return self.admin_query_all_sensor(request_dict, userID,response)
-                else:
-                    return response.json(309)
-            else:
-                return response.json(tko.code)
-        else:
-            return response.json(309)
-
-
-    def add_sensor(self, request_dict,userID,response):
-        # 设备PK
-        did = request_dict.get('did', None)
-        name = request_dict.get('name', None)
-        status = request_dict.get('status', None)
-        type = request_dict.get('type', None)
-        if did is not None and name is not None and status is not None and type is not None:
-            is_user = ModelService.check_user_own_device(userID=userID,deviceID=did)
-            if is_user is True:
-                try:
-                    device_info = Device_Info.objects.get(id=did)
-                except Exception as e:
-                    errorInfo = traceback.format_exc()
-                    print('database error: %s' % errorInfo)
-                    return response.json(424)
-                else:
-                    if device_info:
-                        equipment_sensor = Equipment_Sensor(name=name, status=status, type=type, uid=device_info.UID)
-                        equipment_sensor.save()
-                        if equipment_sensor.id:
-                            return response.json(0,
-                                                                             {'id': equipment_sensor.id,
-                                                                                       'status': equipment_sensor.status,
-                                                                                       'name': equipment_sensor.name,
-                                                                                       'type': equipment_sensor.type})
-                        else:
-                            return response.json(178)
-            else:
-                return response.json(14)
-        return response.json(444)
-
-    def delete_sensor(self, request_dict,userID,response):
-        # deletelist
-        did = request_dict.get('did',None)
-        id_list = request_dict.getlist('id', None)
-        if len(id_list)>0 and id_list is not None and did is not None:
-            is_user = ModelService.check_user_own_device(userID=userID, deviceID=did)
-            is_superadmin = ModelService.check_perm(userID=userID, permID=10)
-            if is_user is True or is_superadmin is True:
-                try:
-                    device_info = Device_Info.objects.get(id=did)
-                except Exception as e:
-                    errorInfo = traceback.format_exc()
-                    print('database error: %s' % errorInfo)
-                    return response.json(424)
-                else:
-                    if device_info:
-                        for id in id_list:
-                            Equipment_Sensor.objects.filter(id=id, uid=device_info.UID).delete()
-                        return response.json(0)
-            else:
-                return response.json(14)
-        return response.json(444)
-
-    def update_sensor(self,request_dict,userID,response):
-        id = request_dict.get('id', None)
-        did = request_dict.get('did',None)
-        status = request_dict.get('status', None)
-        name = request_dict.get('name', None)
-        if id is not None and status is not None:
-            is_user = ModelService.check_user_own_device(userID=userID, deviceID=did)
-            is_superadmin = ModelService.check_perm(userID=userID, permID=50)
-            if is_user is True or is_superadmin is True:
-                try:
-                    device_info = Device_Info.objects.get(id=did)
-                except Exception as e:
-                    errorInfo = traceback.format_exc()
-                    print('database error: %s' % errorInfo)
-                    return response.json(424)
-                else:
-                    is_update = Equipment_Sensor.objects.filter(id=id, uid=device_info.UID).update(status=status,
-                                                                                                  name=name)
-                    if is_update:
-                        return response.json(0, {'id': id, 'status': status,
-                                                                                           'name': name})
-                return response.json(178)
-            else:
-                return response.json(14)
-        else:
-            return response.json(444)
-
-
-    def query_sensor(self,request_dict,userID,response):
-        did = request_dict.get('did', None)
-        if did is not None:
-            is_user = ModelService.check_user_own_device(userID=userID, deviceID=did)
-            is_superadmin = ModelService.check_perm(userID=userID,permID=30)
-            if is_user is True or is_superadmin is True:
-                try:
-                    device_info = Device_Info.objects.get(id=did)
-                except Exception as e:
-                    errorInfo = traceback.format_exc()
-                    print('database error: %s' % errorInfo)
-                    return response.json(424)
-                else:
-                    equipment_sensor_queryset = Equipment_Sensor.objects.filter(uid=device_info.UID)
-                    if equipment_sensor_queryset.exists():
-                        send_json = CommonService.qs_to_dict(equipment_sensor_queryset)
-                        return response.json(0, send_json)
-                    else:
-                        return response.json(0, {})
-            return response.json(14)
-        else:
-            return response.json(444)
-
-    def admin_query_all_sensor(self,request_dict,userID,response):
-        page = int(request_dict.get('page', None))
-        line = int(request_dict.get('line', None))
-        if userID is not None:
-            is_own = ModelService.check_perm(userID=userID, permID=30)
-            if is_own is True:
-                equipment_sensor_queryset = Equipment_Sensor.objects.all()
-                if equipment_sensor_queryset.exists():
-                    equipment_stream_count = equipment_sensor_queryset.count()
-                    equipment_stream_res = equipment_sensor_queryset[(page - 1) * line:page * line]
-                    send_json = CommonService.qs_to_dict(equipment_stream_res)
-                    send_json['count'] = equipment_stream_count
-                    return response.json(0, send_json)
-                else:
-                    return response.json(0, {})
-            return response.json(404)
-        else:
-            return response.json(444)
-
-

+ 0 - 630
Controller/StreamMedia.py

@@ -1,630 +0,0 @@
-from django.views.generic.base import View
-from django.utils.decorators import method_decorator
-from django.views.decorators.csrf import csrf_exempt
-from Service.ModelService import ModelService
-from Model.models import Equipment_Stream
-from Object.AWS.S3ClassObject import S3ClassObject
-from Object.AWS.ElasticTranscoder import ElasticTranscoder
-import traceback, xmltodict, requests, re, subprocess, time, os,simplejson as json
-from ffmpy import FFmpeg
-from Object.AWS.CloudfrontSignCookie import BetterThanBoto
-from Ansjer.config import NGINX_RTMP_STAT, RTMP_PUSH_URL
-from Ansjer.config import BASE_DIR
-from Object.TokenObject import TokenObject
-from Object.ResponseObject import ResponseObject
-from Service.CommonService import CommonService
-from django.http import HttpResponse
-'''
-移动端=>
-增:
-http://192.168.136.40:8077/media/stream?token=test&channel=1&status=1&uid=1&operation=add
-删:
-http://192.168.136.40:8077/media/stream?token=test&id=11&id=12&operation=delete
-改:
-http://192.168.136.40:8077/media/stream?token=test&id=13&operation=update&status=0
-查:
-http://192.168.136.40:8077/media/stream?token=test&operation=query
-获取视频播放地址
-http://13.56.215.252:82/media/stream?token=test&channel=99&uid=2N1K3LE78TYJ38CE111A&filename=1526882855.flv&operation=getVodHls
-http://192.168.136.40:8077/media/stream?token=test&channel=1&uid=1&operation=getVodUrl&filename=1_1-1523247439.mp4
-获取所有保存s3的视频
-http://192.168.136.40:8077/media/stream?token=test&channel=1&uid=1&operation=getAllVideo
-删除设备视频多个,key值传多个即可
-http://192.168.136.40:8077/media/stream?token=test&key=UKPAH63V23U4ZHEB111A_1/UKPAH63V23U4ZHEB111A_1-1524039164.mp4&uid=UKPAH63V23U4ZHEB111A&channel=1&operation=getDelVideo
-----------------------------------------------------------------------------------------------------
-后台=>
-验证推流权限
-http://192.168.136.40:8077/media/auth_stream?userID=151547867345163613800138001&uid=1&channel=1&access_token=test
-验证播放权限(直播)
-http://192.168.136.40:8077/media/auth_live?userID=151547867345163613800138001&uid=1&channel=1&token=test
-rtmp://192.168.136.45:1935/hls/UKPAH63V23U4ZHEB111A_88?userID=151547867
-获取所有推流的设备信息
-http://192.168.136.40:8077/media/stream?token=test&page=1&line=10&operation=getAdminAllStream
-删除流
-http://192.168.136.40:8077/media/stream?token=test&id=1&id=2&id=3&operation=getAdminDelStream
-删除指定设备视频
-http://192.168.136.40:8077/media/stream?token=test&key=1&key=2&key=3&operation=getAdminDelVideo
-更新
-http://192.168.136.40:8077/media/stream?token=test&id=13&operation=getAdminUpdateStream&status=0
-获取指定设备存储的视频播放地址
-http://192.168.136.40:8077/media/stream?token=test&channel=1&uid=1&filename=1_1-1523247439.mp4&operation=getAdminVodUrl
-hls播放
-http://13.56.215.252:82/media/stream?token=test&channel=1&status=1&uid=2N1K3LE78TYJ38CE111A&operation=add&rank=1
-'''
-
-
-class StreamMedia(View):
-    @method_decorator(csrf_exempt)
-    def dispatch(self, *args, **kwargs):
-        return super(StreamMedia, self).dispatch(*args, **kwargs)
-
-    def get(self, request, *args, **kwargs):
-        request.encoding = 'utf-8'
-        return self.validation(request_dict=request.GET)
-
-    def post(self, request, *args, **kwargs):
-        request.encoding = 'utf-8'
-        return self.validation(request_dict=request.POST)
-
-    def validation(self, request_dict, *args, **kwargs):
-        response = ResponseObject()
-        token = request_dict.get('token', None)
-        if token is not None:
-            tko = TokenObject(token)
-            response.lang = tko.lang
-            if tko.code == 0:
-                userID = tko.userID
-                own_permission = ModelService.check_perm(userID=userID, permID=60)
-                if own_permission is not True:
-                    operation = request_dict.get('operation', None)
-                    if operation == 'add':
-                        return self.add_stream(token=token, request_dict=request_dict, userID=userID, response=response)
-                    elif operation == 'delete':
-                        return self.delete_stream(request_dict=request_dict, userID=userID, response=response)
-                    elif operation == 'update':
-                        return self.update_stream(userID=userID, request_dict=request_dict, response=response)
-                    elif operation == 'query':
-                        return self.query_stream(userID=userID, response=response)
-                    elif operation == 'getDelVideo':
-                        return self.get_del_video(userID=userID, request_dict=request_dict, response=response)
-                    elif operation == 'getAllVideo':
-                        return self.get_all_video(request_dict=request_dict, userID=userID, response=response)
-                    elif operation == 'getVodUrl':
-                        return self.get_vod_url(request_dict=request_dict, response=response)
-                    elif operation == 'getVodHls':
-                        return self.get_vod_hls(request_dict=request_dict, response=response)
-                    elif operation == 'getAdminAllStream':
-                        return self.get_admin_all_stream(request_dict=request_dict, userID=userID, response=response)
-                    elif operation == 'getAdminDelStream':
-                        return self.get_admin_del_stream(request_dict=request_dict, userID=userID, response=response)
-                    elif operation == 'getAdminUpdateStream':
-                        return self.get_admin_update_stream(request_dict=request_dict, userID=userID, response=response)
-                    elif operation == 'getAdminVodUrl':
-                        return self.get_admin_vod_url(request_dict=request_dict, userID=userID, response=response)
-                    elif operation == 'getAdminFindStream':
-                        return self.get_admin_find_stream(request_dict=request_dict, userID=userID, response=response)
-                    elif operation == 'getAdminDelVideo':
-                        return self.get_admin_del_video(request_dict=request_dict, userID=userID, response=response)
-                    elif operation == 'getAllServerJson':
-                        return self.get_all_server_json(userID=userID, response=response)
-                    elif operation == 'getAdminHlsVod':
-                        return self.get_admin_hls_vod(userID=userID, request_dict=request_dict, response=response)
-                    elif operation == 'getAdminAddStream':
-                        return self.get_admin_add_stream(userID=userID, request_dict=request_dict, response=response)
-                    else:
-                        return response.json(444, 'operation')
-                else:
-                    return response.json(404)
-
-            else:
-                return response.json(tko.code)
-        else:
-            return response.json(309)
-
-    def add_stream(self, token, userID, request_dict, response):
-        channel = request_dict.get('channel', None)
-        status = request_dict.get('status', None)
-        uid = request_dict.get('uid', None)
-        flag_param = CommonService.get_param_flag(data=[channel, status, uid])
-        if flag_param is True:
-            is_user = ModelService.check_own_device(userID=userID, UID=uid)
-            if is_user is True:
-                stream_queryset = Equipment_Stream.objects.filter(userID=userID, uid=uid, channel=channel, rank=1)
-                if stream_queryset.exists():
-                    return response.json(174)
-                try:
-                    flag = Equipment_Stream.objects.create(userID=userID, status=status, uid=uid, channel=channel,
-                                                           access_token=token)
-                except Exception as e:
-                    errorInfo = traceback.format_exc()
-                    print(errorInfo)
-                    return response.json(424, errorInfo)
-                else:
-                    if flag:
-                        rtmp_url = RTMP_PUSH_URL
-                        rtmp_name = uid + '_' + channel + '?userID=' + userID + '&uid=' + uid + '&channel=' + channel + '&access_token=' + token
-                        return response.json(0, {'userID': userID, 'channel': channel,
-                                                 'uid': uid,
-                                                 'status': status,
-                                                 'access_token': token,
-                                                 'rtmp_url': rtmp_url,
-                                                 'rtmp_name': rtmp_name})
-            else:
-                return response.json(14)
-        else:
-            return response.json(444, 'channel, status, uid')
-
-    def delete_stream(self, request_dict, userID,response):
-        id_list = request_dict.getlist('id', None)
-        if len(id_list):
-            for id in id_list:
-                Equipment_Stream.objects.filter(id=id, userID=userID).delete()
-            return response.json(0)
-        return response.json(444)
-
-    def update_stream(self, userID, request_dict,response):
-        id = request_dict.get('id', None)
-        status = request_dict.get('status', None)
-        is_update = Equipment_Stream.objects.filter(id=id, userID=userID).update(status=status)
-        if is_update:
-            return response.json(0, {'id': id, 'status': status})
-        return response.json(444)
-
-    def query_stream(self, userID,response):
-        equipment_stream_queryset = Equipment_Stream.objects.filter(userID=userID)
-        if equipment_stream_queryset.exists():
-            res = CommonService.qs_to_dict(equipment_stream_queryset)
-            return response.json(0,res)
-        else:
-            return response.json(0)
-
-    def get_all_video(self, request_dict, userID,response):
-        uid = request_dict.get('uid', None)
-        channel = request_dict.get('channel', None)
-        if uid is not None and channel is not None:
-            own_permission = ModelService.check_perm(userID=userID, permID=30)
-            own_device = ModelService.check_own_device(userID=userID, UID=uid)
-            if own_permission is True or own_device is True:
-                s3 = S3ClassObject()
-                data = s3.get_all_object(prefix=uid + '_' + channel + '/flv')
-                return response.json(0, {'files': data})
-            else:
-                return response.json(404)
-        return response.json(444,'uid,channel')
-
-    def get_vod_url(self, request_dict,response):
-        uid = request_dict.get('uid', None)
-        channel = request_dict.get('channel', None)
-        filename = request_dict.get('filename', None)
-        if uid is not None and filename is not None and channel is not None:
-            s3 = S3ClassObject()
-            url = s3.get_generate_vod_url(uid + '_' + channel + '/' + filename)
-            return response.json(0, {'url': url})
-        else:
-            return response.json(444)
-
-    def get_admin_all_stream(self, request_dict, userID,response):
-        # 判断
-        own_permission = ModelService.check_perm(userID=userID, permID=30)
-        if own_permission is True:
-            page = int(request_dict.get('page', None))
-            line = int(request_dict.get('line', None))
-            equipment_stream_queryset = Equipment_Stream.objects.all()
-            if equipment_stream_queryset.exists():
-                equipment_stream_count = equipment_stream_queryset.count()
-                equipment_stream_res = equipment_stream_queryset[(page - 1) * line:page * line]
-                send_json = CommonService.qs_to_dict(equipment_stream_res)
-                send_json['count'] = equipment_stream_count
-                send_json = CommonService.qs_to_dict(equipment_stream_queryset)
-                return response.json(0, send_json)
-            else:
-                return response.json(0)
-        else:
-            return response.json(404)
-
-    def get_admin_del_stream(self, request_dict, userID,response):
-        # 判断
-        own_permission = ModelService.check_perm(userID=userID, permID=10)
-        if own_permission is True:
-            id_list = request_dict.getlist('id', None)
-
-            if len(id_list):
-                for id in id_list:
-                    Equipment_Stream.objects.filter(id=id).delete()
-                return response.json(0)
-            else:
-                return response.json(444)
-        return response.json(404)
-
-    def get_admin_del_video(self, request_dict, userID,response):
-        # 判断
-        own_permission = ModelService.check_perm(userID=userID, permID=10)
-        if own_permission is True:
-
-            key_list = request_dict.getlist('key', None)
-            if len(key_list):
-                uid = request_dict.get('uid', None)
-                channel = request_dict.get('channel', None)
-                if uid is not None and channel is not None:
-                    re_uid = re.compile(r'^' + uid + '_' + str(channel))
-                    re_flag = False
-                    print(key_list)
-                    for keys in key_list:
-                        re_flag = re_uid.match(keys)
-                        if re_flag is not True:
-                            break
-                    print(re_flag)
-                    if re_flag:
-                        s3 = S3ClassObject()
-                        response = s3.del_object_list(keylist=key_list)
-                        if response['Deleted']:
-                            return response.json(0,
-                                                {'deleted': response['Deleted']})
-        return response.json(444)
-
-    def get_del_video(self, request_dict, userID,response):
-        uid = request_dict.get('uid', None)
-        channel = request_dict.get('channel', None)
-        if uid is not None and channel is not None:
-            own_permission = ModelService.check_own_device(userID=userID, UID=uid)
-            if own_permission is True:
-                key_list = request_dict.getlist('key', None)
-                if len(key_list) > 0 and key_list is not None:
-                    re_uid = re.compile(r'^' + uid + '_' + str(channel))
-                    re_flag = False
-                    print(key_list)
-                    for keys in key_list:
-                        re_flag = re_uid.match(keys)
-                        if re_flag is not True:
-                            break
-                    if re_flag:
-                        s3 = S3ClassObject()
-                        response = s3.del_object_list(keylist=key_list)
-                        if response['Deleted']:
-                            return response.json(0)
-            else:
-                return response.json(404)
-        return response.json(444)
-
-    def get_admin_update_stream(self, userID, request_dict,response):
-        own_permission = ModelService.check_perm(userID=userID, permID=50)
-        if own_permission is True:
-            id = request_dict.get('id', None)
-            status = request_dict.get('status', None)
-            param_flag = CommonService.get_param_flag(data=[status, id])
-            if param_flag is True:
-                is_update = Equipment_Stream.objects.filter(id=id).update(status=status)
-                if is_update:
-                    return response.json(0, {'id': id, 'status': status})
-            else:
-                return response.json(444)
-        else:
-            return response.json(404)
-
-    def get_admin_vod_url(self, userID, request_dict,response):
-        own_permission = ModelService.check_perm(userID=userID, permID=30)
-        if own_permission is True:
-            uid = request_dict.get('uid', None)
-            channel = request_dict.get('channel', None)
-            filename = request_dict.get('filename', None)
-            if uid is not None and filename is not None and channel is not None:
-                s3 = S3ClassObject()
-                url = s3.get_generate_vod_url(uid + '_' + channel + '/' + filename)
-                return response.json(0, {'url': url})
-            else:
-                return response.json(444)
-        else:
-            return response.json(404)
-
-    def get_admin_find_stream(self, userID, request_dict,response):
-        own_permission = ModelService.check_perm(userID=userID, permID=20)
-        if own_permission is True:
-            content = request_dict.get('content', None)
-            page = int(request_dict.get('page', None))
-            line = int(request_dict.get('line', None))
-            param_flag = CommonService.get_param_flag(data=[content, page, line])
-            if param_flag is True:
-                content = json.loads(content)
-                search_kwargs = CommonService.get_kwargs(data=content)
-                equipment_stream_queryset = Equipment_Stream.objects.filter(**search_kwargs)
-                if equipment_stream_queryset.exists():
-                    equipment_stream_count = equipment_stream_queryset.count()
-                    equipment_stream_res = equipment_stream_queryset[(page - 1) * line:page * line]
-                    send_json = CommonService.qs_to_dict(equipment_stream_res)
-                    send_json['count'] = equipment_stream_count
-                    return response.json(0, send_json)
-                else:
-                    return response.json(0)
-            else:
-                return response.json(444)
-        else:
-            return response.json(404)
-
-    def get_all_server_json(self, userID,response):
-        own_permission = ModelService.check_perm(userID=userID, permID=20)
-        if own_permission is True:
-            url = NGINX_RTMP_STAT
-            res = requests.get(url)
-            xml_content = res.text
-            xml_dict = xmltodict.parse(xml_content)
-            if len(xml_dict):
-                return response.json(0, {'data': xml_dict})
-        else:
-            return response.json(404)
-
-    def get_admin_add_stream(self, token, userID, request_dict,response):
-        channel = request_dict.get('channel', None)
-        status = request_dict.get('status', None)
-        uid = request_dict.get('uid', None)
-        flag_param = CommonService.get_param_flag(data=[channel, status, uid])
-        if flag_param is True:
-            own_perm = ModelService.check_perm(userID=userID, permID=40)
-            if own_perm is True:
-                stream_queryset = Equipment_Stream.objects.filter(uid=uid, channel=channel)
-                if stream_queryset.exists():
-                    return response.json(174)
-                try:
-                    flag = Equipment_Stream.objects.create(userID=userID, status=status, uid=uid, channel=channel,
-                                                           access_token=token)
-                except Exception as e:
-                    errorInfo = traceback.format_exc()
-                    print(errorInfo)
-                    return response.json(424, {'details': errorInfo})
-                else:
-                    if flag:
-                        rtmp_url = RTMP_PUSH_URL
-                        rtmp_name = uid + '_' + channel + '?userID=' + userID + '&uid=' + uid + '&channel=' + channel + '&access_token=' + token
-                        return response.json(0,
-                                            {'userID': userID, 'channel': channel,
-                                             'uid': uid,
-                                             'status': status,
-                                             'access_token': token,
-                                             'rtmp_url': rtmp_url,
-                                             'rtmp_name': rtmp_name})
-            else:
-                return response.json(404)
-        else:
-            return response.json(444)
-
-    def get_admin_hls_vod(self, request_dict, userID,response):
-        own_permission = ModelService.check_perm(userID=userID, permID=30)
-        if own_permission is True:
-            uid = request_dict.get('uid', None)
-            channel = request_dict.get('channel', None)
-            filename = request_dict.get('filename', None)
-            param_flag = CommonService.get_param_flag(data=[uid, filename, channel])
-            if param_flag is True:
-                uid_channel = uid + '_' + channel
-                InputKey = uid_channel + '/flv/' + filename
-                ts = filename.split('.')[0]
-                vod_key = uid_channel + '/' + ts
-                elastictranscoder = ElasticTranscoder()
-                res = elastictranscoder.create_job(
-                    # InputKey='2N1K3LE78TYJ38CE111A_99/flv/1526882855.flv',
-                    InputKey=InputKey,
-                    # OutputKey='vod/2N1K3LE78TYJ38CE111A_99/1526882855'
-                    OutputKey='vod/' + vod_key
-                )
-                if res is True:
-                    domain_prefix = 'http://d3596w5a6euckc.cloudfront.net/vod'
-                    vod_url = domain_prefix + '/' + vod_key + '.m3u8'
-                    return response.json(0, {'vodurl': vod_url})
-                else:
-                    return response.json(403)
-            else:
-                return response.json(444)
-        else:
-            return response.json(404)
-
-    def get_vod_hls(self, request_dict,response):
-        uid = request_dict.get('uid', None)
-        channel = request_dict.get('channel', None)
-        filename = request_dict.get('filename', None)
-        param_flag = CommonService.get_param_flag(data=[uid, filename, channel])
-        if param_flag is True:
-            uid_channel = uid + '_' + channel
-            InputKey = uid_channel + '/flv/' + filename
-            ts = filename.split('.')[0]
-            vod_key = uid_channel + '/' + ts
-            elastictranscoder = ElasticTranscoder()
-            res = elastictranscoder.create_job(
-                InputKey=InputKey,
-                OutputKey='vod/' + vod_key
-            )
-            if res is True:
-                domain_prefix = 'http://d3596w5a6euckc.cloudfront.net/vod'
-                vod_url = domain_prefix + '/' + vod_key + '.m3u8'
-                vod_cookie_url = domain_prefix + '/' + uid_channel + '/*'
-                expires_at = int(time.time()) + 7200
-                cf = BetterThanBoto()
-                vodCookie = cf.create_signed_cookies(url=vod_cookie_url, keypair_id="APKAINI6BNPKV54NHH7Q",
-                                                     expires_at=expires_at,
-                                                     private_key_file=os.path.join(BASE_DIR,
-                                                                                   'Ansjer/file/pk-APKAINI6BNPKV54NHH7Q.pem'))
-                return response.json(0, {'vodurl': vod_url, 'vodCookie': vodCookie})
-            else:
-                return response.json(403)
-        else:
-            return response.json(444)
-
-
-# 推流验证
-@csrf_exempt
-def Auth_Stream(request, *callback_args,
-                **callback_kwargs):
-    if request.method == 'GET':
-        request.encoding = 'utf-8'
-        request_dict = request.GET
-    if request.method == 'POST':
-        request.encoding = 'utf-8'
-        request_dict = request.POST
-    access_token = request_dict.get('access_token', None)
-    userID = request_dict.get('userID', None)
-    uid = request_dict.get('uid', None)
-    channel = request_dict.get('channel', None)
-    param_flag = CommonService.get_param_flag(data=[access_token, userID, uid, channel])
-    if param_flag is True:
-        own_permission = ModelService.check_perm(userID=userID, permID=60)
-        if own_permission is True:
-            equipment_stream_queryset = Equipment_Stream.objects.filter(userID=userID, uid=uid, channel=channel,
-                                                                        status=1, access_token=access_token)
-            if equipment_stream_queryset.exists():
-                return HttpResponse(status=200)
-    return HttpResponse(status=404)
-
-
-# 播放验证
-@csrf_exempt
-def Auth_Live(request, *callback_args,
-              **callback_kwargs):
-    if request.method == 'GET':
-        request.encoding = 'utf-8'
-        request_dict = request.GET
-    if request.method == 'POST':
-        request.encoding = 'utf-8'
-        request_dict = request.POST
-    response = ResponseObject()
-    token = request_dict.get('token', None)
-    if token is not None:
-        tko = TokenObject(token)
-        response.lang = tko.lang
-        if tko.code == 0:
-            userID = tko.userID
-            uid = request_dict.get('uid', None)
-            channel = request_dict.get('channel', None)
-            if userID is not None and uid is not None and channel is not None:
-                own_permission = ModelService.check_perm(userID=userID, permID=90)
-                if own_permission is True:
-                    equipment_stream_queryset = Equipment_Stream.objects.filter(userID=userID, uid=uid, channel=channel,
-                                                                                status=1)
-                    if equipment_stream_queryset.exists():
-                        return HttpResponse(status=200)
-    return HttpResponse(status=404)
-
-
-@csrf_exempt
-def send_video_s3(request, *callback_args,
-                  **callback_kwargs):
-    if request.method == 'GET':
-        request.encoding = 'utf-8'
-        request_dict = request.GET
-    if request.method == 'POST':
-        request.encoding = 'utf-8'
-        request_dict = request.POST
-    # 文件名
-    basename = request_dict.get('basename', None)
-    print(basename)
-    if basename != None:
-        base_path = '/tmp/flv/'
-        file_base_path = base_path + basename
-        input_path = file_base_path + '.flv'
-        output_path = file_base_path + '.mp4'
-        if os.path.exists(input_path):
-            uid_channel = basename.split('-')[0]
-            uid = uid_channel.split('_')[0]
-            channel = uid_channel.split('_')[1]
-            equipment_stream_queryset = Equipment_Stream.objects.filter(channel=channel, uid=uid, status=1)
-            if equipment_stream_queryset.exists():
-                try:
-                    key = uid_channel + '/' + basename + '.mp4'
-                    # 转换到
-                    ff = FFmpeg(
-                        inputs={input_path: None},
-                        outputs={output_path: ['-vcodec', 'copy', '-strict', '-2']}
-                    )
-                    ff.run()
-                    # 截取第一帧当缩略图
-                    # ffmpeg -i 555.flv -y -f image2 -ss 08.010 -t 0.001 -s 352x240 b.jpg
-                except Exception as e:
-                    errorInfo = traceback.format_exc()
-                    print(errorInfo)
-                else:
-                    if os.path.exists(output_path):
-                        s3 = S3ClassObject()
-                        s3_response = s3.put_mp4_object(body=open(output_path, 'rb'), key=key)
-                        print(s3_response)
-                        if s3_response['ResponseMetadata']['HTTPStatusCode'] == 200:
-                            # 记录保存文件容量,由于此操作过于频繁入库,上线代码去掉
-                            file_size = CommonService.get_file_size(file_path=output_path, suffix_type='MB',
-                                                                    decimal_point=2)
-                            size = equipment_stream_queryset[0].total_flow
-                            if size:
-                                pass
-                            else:
-                                size = 0
-                            equipment_stream_queryset.update(total_flow=size + file_size)
-                            #
-                            rm_common = 'rm ' + input_path + ' ' + output_path
-                            subprocess.Popen(rm_common, shell=True)
-                            return HttpResponse(status=200)
-                        else:
-                            rm_common = 'rm ' + input_path + ' ' + output_path
-                            print('respone error')
-                            subprocess.Popen(rm_common, shell=True)
-        return HttpResponse(status=403)
-    else:
-        return HttpResponse(404)
-
-
-@csrf_exempt
-def push_flv_s3(request, *callback_args,
-                **callback_kwargs):
-    if request.method == 'GET':
-        request.encoding = 'utf-8'
-        request_dict = request.GET
-    if request.method == 'POST':
-        request.encoding = 'utf-8'
-        request_dict = request.POST
-    # 文件名
-    basename = request_dict.get('basename', None)
-    response = ResponseObject()
-    if basename != None:
-        base_path = 'tmp/flv/'
-        file_base_path = base_path + basename
-        flv_path = file_base_path + '.flv'
-        if os.path.exists(flv_path):
-            dict_file = basename.split('-')
-            uid_channel = dict_file[0]
-            file_time = dict_file[1]
-            uid = uid_channel.split('_')[0]
-            channel = uid_channel.split('_')[1]
-            equipment_stream_queryset = Equipment_Stream.objects.filter(channel=channel, uid=uid, status=1)
-            if equipment_stream_queryset.exists():
-                try:
-                    jpg_path = file_base_path + '.jpg'
-                    # 截取第一帧当缩略图ffmpeg -i 2N1K3LE78TYJ38CE111A_99-1526882169.flv -y -f image2 -t 0.001 -s 352x240 a.jpg
-                    ff = FFmpeg(
-                        inputs={flv_path: None},
-                        outputs={jpg_path: ['-y', '-f', 'image2', '-t', '0.001', '-s', '352x240']}
-                    )
-                    ff.cmd
-                    ff.run()
-                except Exception as e:
-                    errorInfo = traceback.format_exc()
-                    print(errorInfo)
-                else:
-                    if os.path.exists(jpg_path):
-                        s3 = S3ClassObject()
-                        flv_key = uid_channel + '/flv/' + file_time + '.flv'
-                        jpg_key = uid_channel + '/jpg/' + file_time + '.jpg'
-                        try:
-                            flv_response = s3.put_object(body=open(flv_path, 'rb'), key=flv_key)
-                            jpg_response = s3.put_object(body=open(jpg_path, 'rb'), key=jpg_key)
-                            if flv_response['ResponseMetadata']['HTTPStatusCode'] == 200 and \
-                                    jpg_response['ResponseMetadata']['HTTPStatusCode'] == 200:
-                                code = 0
-                            else:
-                                code = 444
-                        except Exception as e:
-                            print(repr(e))
-                            code = 444
-                            pass
-                        path_list = [flv_path, jpg_path]
-                        for i in path_list:
-                            try:
-                                os.remove(i)
-                            except Exception as e:
-                                print(repr(e))
-                                pass
-                        return response.json(code)
-    return response.json(444)

+ 0 - 37
Model/models.py

@@ -285,43 +285,6 @@ class Access_Log(models.Model):
         verbose_name_plural = verbose_name
 
 
-class Equipment_Stream(models.Model):
-    id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
-    userID = models.CharField(blank=True, max_length=32, 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'设备通道')
-    access_token = models.CharField(blank=True, max_length=128, verbose_name=u'设备推流验证令牌')
-    total_flow = models.FloatField(null=True, 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)
-    rank = models.IntegerField(null=True, blank=True, verbose_name=u'推流套餐类型')
-
-    class Meta:
-        db_table = 'equipment_stream'
-        verbose_name = u'用户设备推流表'
-        verbose_name_plural = verbose_name
-
-
-class Equipment_Sensor(models.Model):
-    id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
-    status = models.IntegerField(null=True, blank=True, verbose_name=u'状态')
-    type = models.IntegerField(null=True, blank=True, verbose_name=u'类型')
-    name = models.CharField(null=True, blank=True, max_length=128, 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)
-    uid = models.CharField(null=True, blank=True, max_length=32, verbose_name=u'设备ID')
-
-    def __str__(self):
-        return self.id
-
-    class Meta:
-        db_table = 'equipment_sensor'
-        verbose_name = u'设备传感器表'
-        verbose_name_plural = verbose_name
-        ordering = ('id',)
-
-
 class Equipment_Info(models.Model):
     id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
     devUid = models.CharField(default='', blank=True, max_length=32, verbose_name=u'设备ID')