瀏覽代碼

优化aliyunsdksts包导入

locky 2 年之前
父節點
當前提交
95ad6a2828
共有 7 個文件被更改,包括 24 次插入699 次删除
  1. 0 85
      Ansjer/test/coposs_sts.py
  2. 0 65
      Ansjer/test/oss_sts.py
  3. 0 44
      Ansjer/test/osssigput.py
  4. 12 63
      Controller/CDKController.py
  5. 5 131
      Controller/CloudVod.py
  6. 7 22
      Controller/StsOssController.py
  7. 0 289
      Controller/TestApi.py

+ 0 - 85
Ansjer/test/coposs_sts.py

@@ -1,85 +0,0 @@
-# -*- coding: utf-8 -*-
-'''
-生成sts上传授权
-'''
-'''
-
-
-
-
-tar -cvpzf ubuntu_backup@`date +%Y-%m+%d`.tar.gz --exclude=/proc --exclude=/tmp --exclude=/boot --exclude=/home --exclude=/lost+found --exclude=/media --exclude=/mnt --exclude=/run --exclude=/home/sda1 / --warning=no-file-change
-
-'''
-from aliyunsdkcore import client
-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账号。
-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('test')
-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)
-# body = clt.do_action_with_exception(req)
-# 使用RAM账号的AccessKeyId和AccessKeySecret向STS申请临时token。
-token = json.loads(body)
-print(token)
-# exit()
-# tokens = {
-#     "Credentials":{
-#     'AccessKeySecret': 'eDwALgKkfZp6eXD2jz8ckktfduneNCjEz8NgHxcZsVe',
-#     'AccessKeyId': 'STS.NJNUa1UjHgo5idVKqY9wBLB3e',
-#     'Expiration': '2018-11-15T09:06:30Z',
-#     'SecurityToken': 'CAISwgJ1q6Ft5B2yfSjIr4n7HtuFuLVp0K3ea0Lnr3EMNfhuo4eYhzz2IHxLf3RuAe8dvvw+nGBV7vsdlqN4S5ZDR1HCbsJxtkXiZd84J9ivgde8yJBZom/MewHKeeKSvqL7Z+H+U6mSGJOEYEzFkSle2KbzcS7YMXWuLZyOj+wADLEQRRLqVSdaI91UKwB+0pN4U0HcLvGwKBXnr3PNBU5zwGpGhHh49L60z7/siGTXh0aozfQO9cajYMq4YtJwJot6S5D3pqgUF4vZ+SJc8RVR790ShadfqwzAo8uWDnhJkWzkVLOOqps1d1A/P/VlXfcU8NqEzKUi5raIyN+tkE0WZboOCh6yHt7wnJH2f8qyLcs8eLrBPHDA78uCLJGdsXl/PS1AaV0SJIFxci4oWUF0F27ASqqu6FnGZwalW1srcmfDSBocGoABBPrYt/W5rkesL4dOVkQTaYz14WpwbEQfMBi+8/T5xLEqUP4tuwsiiBbsQhfAm3QLKzGODGJB9bCcfxpQPSnZuAyCI4uSUZiuCFUzdKX/eaiurRDLMnACYx3aEzfmDCvQ6dYbbHxIdk+0UNMWk51eWKXfWnoH+udI6rkks2AWjTM='
-#   }
-# }
-# 使用临时token中的认证信息初始化StsAuth实例。
-auth = oss2.StsAuth(token['Credentials']['AccessKeyId'],
-                    token['Credentials']['AccessKeySecret'],
-                    token['Credentials']['SecurityToken'])
-print(auth)
-# 使用StsAuth实例初始化存储空间。
-bucket = oss2.Bucket(auth, endpoint, bucket_name)
-# 上传一个字符串。
-# res = bucket.put_object('oss_media_hls.ts', b'hello world')
-res = bucket.put_object('object-name.txt', b'hello world')
-print(res)
-
-
-'''
-# master 172.17.0.4
-
-slave 172.17.0.8
-'''

+ 0 - 65
Ansjer/test/oss_sts.py

@@ -1,65 +0,0 @@
-from aliyunsdkcore import client
-from aliyunsdksts.request.v20150401 import AssumeRoleRequest
-import json
-import oss2
-
-
-# Endpoint以杭州为例,其它egion请按实际情况填写。
-endpoint = 'oss-cn-shenzhen.aliyuncs.com'
-access_key_id = 'LTAIyMkGfEdogyL9'
-access_key_secret = '71uIjpsqVOmF7DAITRyRuc259jHOjO'
-bucket_name = 'cnvod1'
-# 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('uid13241234123')
-req.set_DurationSeconds(3600)
-policys = {
-    "Version": "1",
-    "Statement": [
-        {
-            "Action": [
-                "oss:PutObject",
-                "oss:DeleteObject",
-            ],
-            # "Resource": ["acs:oss:*:*:cloudvod1/*"],
-            "Resource": ["acs:oss:*:*:cloudvod1/test/*"],
-            "Effect": "Allow",
-            "Condition": {
-                "IpAddress": {
-                    "acs:SourceIp": "120.237.157.184"
-                }
-            }
-        }
-    ]
-}
-req.set_Policy(Policy=json.dumps(policys))
-body = clt.do_action(req)
-# body = clt.do_action_with_exception(req)
-# 使用RAM账号的AccessKeyId和AccessKeySecret向STS申请临时token。
-token = json.loads(body)
-print(token)
-exit()
-
-# 使用临时token中的认证信息初始化StsAuth实例。
-auth = oss2.StsAuth(token['Credentials']['AccessKeyId'],
-                    token['Credentials']['AccessKeySecret'],
-                    token['Credentials']['SecurityToken'])
-print(auth)
-# 使用StsAuth实例初始化存储空间。
-bucket = oss2.Bucket(auth, endpoint, bucket_name)
-# 上传一个字符串。
-# res = bucket.put_object('oss_media_hls.ts', b'hello world')
-# res = bucket.put_object('test/test-name.txt', b'hello world')
-# print(res)
-# oss append obj
-result = bucket.append_object('mio', 0, 'content of first append')
-print(result)
-# 如果不是首次上传,可以通过bucket.head_object方法或上次追加返回值的next_position属性,得到追加位置。
-# bucket.append_object('<yourObjectName>', result.next_position, 'content of second append')

+ 0 - 44
Ansjer/test/osssigput.py

@@ -1,44 +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/8 9:23
-@Version: python3.6
-@MODIFY DECORD:ansjer dev
-@file: oss_sts.py
-@Contact: chanjunkai@163.com
-"""
-# -*- coding: utf-8 -*-
-'''
-生成sts上传授权
-'''
-from aliyunsdkcore import client
-from aliyunsdksts.request.v20150401 import AssumeRoleRequest
-import json
-import oss2
-import base64
-
-'''
-http://test.dvema.com/cloudVod/getSts?uidToken=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjaGFubmVsIjoiNCIsInVpZCI6IkZUU0xMOEhNNDM3WjM4V1UxMTFBIn0.wkrwYvIYf5qEukOSTxALSAgSqop-gNBdEvSwScOgYB8
-'''
-endpoint = 'oss-cn-shenzhen.aliyuncs.com'
-bucket_name = 'cnvod1'
-
-tokenss ={
-    'AccessKeySecret': '7kWzxVezTBs5Qd3AArRAcuXiYaQoLYVUnLb14iuv5LWW',
-    'AccessKeyId': 'STS.NU3npZw8fkd7sSeFFrehxRmud',
-    'Expiration': '2019-12-16T04:40:40Z',
-    'SecurityToken': 'CAIS3AJ1q6Ft5B2yfSjIr5aGJcrumudH3KbccXXUokYnaedUvajehjz2IHFIf3NhAe0bv/kzm2lX7/YYlqduSpMcHhaYNJErss0NqltYtGpBI4nng4YfgbiJREJJYnyShb0WCoeUZdfZfejXOjKgvyRvwLz8WCy/Vli+S/OggoJmadJlF2vdaiFdVu9LOixoqsIRKRmpMu22YDLnhmfMAW1iuAd3lRkti8KFz9ab9wDVgXDj1+YRvP6RGJW/aNR2N5oNJbXB1edtJK3ay3wSuVoY/6NxkaBa/jue+c2QGEUWoW/CUYv16vRjIBV0fbNAf6dPt6rHkuBiseHyj/aOqXEUZ7kTCX+AAtn9n42dSL+LTo9oLe+gZy6Sg4rTasep6l8eDChFZF8QSb0IMWRtDBEgcDbeJ5K89UrCCgXZEPnZi/tniccongi0ooPVfgjVWduCzT0fIYQsyci1stvWBQcagAFYkAuSbf8lQF1U2ifn3hKAD3S5+CVRyluQoYJBnel5o1MsL6gzccGXwBC0Jpuux/tzOZBETh0DqA+BrfYsPEUdHyZ9O5wVAHym8gx9TYiZNYNkd9FXev1k5i9pOMoy+DzaF90gZBiiZv9AYhlw8k8WGo+0InLNdI8F4CcjA1oYBQ=='
-  }
-# 使用RAM账号的AccessKeyId和AccessKeySecret向STS申请临时token。
-
-# 使用临时token中的认证信息初始化StsAuth实例。
-auth = oss2.StsAuth(tokenss['AccessKeyId'],
-                    tokenss['AccessKeySecret'],
-                    tokenss['SecurityToken'])
-bucket = oss2.Bucket(auth, endpoint, bucket_name)
-result = bucket.append_object('mio', 0, 'content of first append')
-print(result)

+ 12 - 63
Controller/CDKController.py

@@ -1,51 +1,17 @@
-#!/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: cloudstorage.py
-@Contact: chanjunkai@163.com
-"""
-import json
+import hashlib
 import logging
 import time
-import urllib
 import uuid
-import hashlib
 
-import boto3
-import oss2
-import paypalrestsdk
-import threading
-from aliyunsdkcore import client
-from aliyunsdksts.request.v20150401 import AssumeRoleRequest
-from boto3.session import Session
-from django.http import JsonResponse, HttpResponseRedirect, HttpResponse
+from django.db.models import F
+from django.http import StreamingHttpResponse
 from django.views.generic.base import View
 
-from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, OSS_ROLE_ARN, SERVER_DOMAIN, PAYPAL_CRD, \
-    SERVER_DOMAIN_SSL
-from Model.models import Device_Info, Order_Model, Store_Meal, VodHlsModel, OssCrdModel, UID_Bucket, StsCrdModel, \
-    ExperienceContextModel, CDKcontextModel
-from Object.AliPayObject import AliPayObject
+from Model.models import CDKcontextModel
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
-from Object.UidTokenObject import UidTokenObject
-from Service.CommonService import CommonService
-from Object.m3u8generate import PlaylistGenerator
-from Object.WechatPayObject import WechatPayObject
-from django.db.models import Q, F
-from django.http import StreamingHttpResponse
 
-SERVER_DOMAIN = 'http://test.dvema.com/'
 
-
-# 设备信息添加
 class CDKView(View):
 
     def get(self, request, *args, **kwargs):
@@ -65,7 +31,6 @@ class CDKView(View):
             return response.json(444, 'error path')
         else:
             token = request_dict.get('token', None)
-            # 设备主键uid
             tko = TokenObject(token)
             response.lang = tko.lang
             if tko.code != 0:
@@ -77,8 +42,6 @@ class CDKView(View):
                 return self.deleteCDK(request_dict, response)
             elif operation == 'queryCDK':
                 return self.queryCDK(request_dict, response)
-            elif operation == 'saveOrEditCDKform':
-                return self.saveOrEditCDKform(request_dict, response)
             elif operation == 'saveOrEditCDK':
                 return self.saveOrEditCDK(request_dict, response)
             elif operation == 'downloadCDK':
@@ -128,7 +91,7 @@ class CDKView(View):
         logger = logging.getLogger('info')
         logger.info('CDK测试打印1: {}'.format(time.localtime(time.time())))
         if page and line:
-            cdk_qs = CDKcontextModel.objects.filter().all()  # values('cdk','create_time','valid_time','is_activate','rank__id','order__id')
+            cdk_qs = CDKcontextModel.objects.filter().all()
             if searchVal:
                 if cdk:
                     cdk_qs = cdk_qs.filter(cdk__contains=searchVal)
@@ -137,21 +100,14 @@ class CDKView(View):
                 elif is_activate:
                     cdk_qs = cdk_qs.filter(is_activate=searchVal)
 
-
             cdk_qs = cdk_qs.filter(rank__lang__lang=lang)
             cdk_qs = cdk_qs.annotate(rank__title=F('rank__lang__title'))
             cdk_qs = cdk_qs.values('id', 'cdk', 'create_time', 'valid_time', 'is_activate', 'rank__id', 'rank__title',
-                                    'rank__bucket__mold', 'order', 'create_time')
+                                   'rank__bucket__mold', 'order', 'create_time')
             cdk_qs = cdk_qs.order_by('-create_time')  # 根据CDK创建时间降序排序
             count = cdk_qs.count()
             cdk_qs = cdk_qs[(page - 1) * line:page * line]
 
-            # cdk_dict = {}
-            # for cdk in cdk_qs:
-            #     cdk_dict[cdk['id']] = {'id': cdk['id'], 'cdk': cdk['cdk'], 'create_time': cdk['create_time'],
-            #                            'valid_time': cdk['valid_time'], 'is_activate': cdk['is_activate'],
-            #                            'rank': cdk['rank__id'], 'order': cdk['order']}
-
             res = {
                 'datas': list(cdk_qs),
                 'count': count
@@ -185,7 +141,7 @@ class CDKView(View):
                 searchVal = is_activate.strip()
 
             if page and line:
-                cdk_qs = CDKcontextModel.objects.filter().all()  # values('cdk','create_time','valid_time','is_activate','rank__id','order__id')
+                cdk_qs = CDKcontextModel.objects.filter().all()
                 if searchVal:
                     if cdk:
                         cdk_qs = cdk_qs.filter(cdk__contains=searchVal)
@@ -194,7 +150,6 @@ class CDKView(View):
                     elif is_activate:
                         cdk_qs = cdk_qs.filter(is_activate=searchVal)
 
-
                 cdk_qs = cdk_qs.filter(rank__lang__lang=lang)
                 cdk_qs = cdk_qs.annotate(rank__title=F('rank__lang__title'))
                 cdk_qs = cdk_qs.values('id', 'cdk', 'create_time', 'valid_time', 'is_activate', 'rank__id',
@@ -209,8 +164,6 @@ class CDKView(View):
                 }
                 return response.json(0, res)
 
-
-
     def saveOrEditCDK(self, request_dict, response):
         cdk_id = request_dict.get("id", None)
         cdk = request_dict.get('cdk', None)
@@ -236,28 +189,24 @@ class CDKView(View):
         else:
             return response.json(0)
 
-    def downloadCDK(self,request_dict, response):
+    def downloadCDK(self, request_dict, response):
         region = request_dict.get('region', None)
         content = ''
         if region == 'cn':
             # 下载国内未使用激活码
             content += '激活码(国内)\n'
-            cdk_inactivate_qs = CDKcontextModel.objects.filter(is_down=0, is_activate=0, rank__bucket__mold=0, rank__is_show=0).values('cdk')
+            cdk_inactivate_qs = CDKcontextModel.objects.filter(is_down=0, is_activate=0, rank__bucket__mold=0,
+                                                               rank__is_show=0).values('cdk')
         else:
             # 下载国外未使用激活码
             content += '激活码(国外)\n'
-            cdk_inactivate_qs = CDKcontextModel.objects.filter(is_down=0, is_activate=0, rank__bucket__mold=1, rank__is_show=0).values('cdk')
+            cdk_inactivate_qs = CDKcontextModel.objects.filter(is_down=0, is_activate=0, rank__bucket__mold=1,
+                                                               rank__is_show=0).values('cdk')
         for cdk_inactivate in cdk_inactivate_qs:
             content += cdk_inactivate['cdk'] + '\n'
-        # print(content)
 
         cdk_inactivate_qs.update(is_down=1)
         response = StreamingHttpResponse(content)
         response['Content-Type'] = 'application/octet-stream'
         response['Content-Disposition'] = 'attachment;filename="CDK.txt"'
         return response
-
-
-
-
-

+ 5 - 131
Controller/CloudVod.py

@@ -1,27 +1,12 @@
-#!/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
-"""
+import datetime
 import json
 import math
 import time
 import urllib
-import datetime
-import boto3
 
-from Object.AliPayObject import AliPayObject
+import boto3
 import oss2
 import paypalrestsdk
-import logging
 from aliyunsdkcore import client
 from aliyunsdksts.request.v20150401 import AssumeRoleRequest
 from django.http import JsonResponse, HttpResponseRedirect, HttpResponse
@@ -29,43 +14,16 @@ from django.utils.decorators import method_decorator
 from django.views.decorators.csrf import csrf_exempt
 from django.views.generic.base import View
 
-from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, OSS_ROLE_ARN, SERVER_DOMAIN, PAYPAL_CRD, \
-    SERVER_DOMAIN_SSL
+from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, OSS_ROLE_ARN, SERVER_DOMAIN, PAYPAL_CRD
 from Model.models import Device_Info, Order_Model, Store_Meal, VodHlsModel, OssCrdModel, UID_Bucket, StsCrdModel, \
-    VodHlsSummary, LogModel
+    VodHlsSummary
+from Object.AliPayObject import AliPayObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.UidTokenObject import UidTokenObject
 from Service.CommonService import CommonService
 from Service.ModelService import ModelService
 
-'''
-# 获取设备推送hls流 证书
-http://192.168.136.40:8077/cloudVod/getSts?uidToken=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiJGVFNMTDhITTQzN1ozOFdVMTExQSIsImNoYW5uZWwiOiI0In0.HO-PzoRwhQ4CFNkjthqOitf48c-XOvHjtNGCeUmBe9g
-# 获取存储的播放文件列表
-#修改状态
-http://192.168.136.40:8077/cloudVod/status?token=local&uid=xxx&channel=4&status=1
-# 回调vod
-http://192.168.136.40:8077/cloudVod/storeplaylist?uidToken=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiJGVFNMTDhITTQzN1ozOFdVMTExQSIsImNoYW5uZWwiOiI0In0.HO-PzoRwhQ4CFNkjthqOitf48c-XOvHjtNGCeUmBe9g&time=1234567891
-=============================
-# 生成订单
-http://test.dvema.com/cloudVod/createOrder?token=test&uid=xxx&channel=4&rank=1
-# 修改设备云存状态
-http://test.dvema.com/cloudVod/status?uid=xxx&channel=4&token=test&status=1
-
-# 获取指定设备云存关联信息
-http://test.dvema.com/cloudVod/details?token=test&uid=xxxx
-
-# 获取回放列表
-http://test.dvema.com/cloudVod/getHlsList?uid=xxxx&channel=4&token=test&daytime=2018121001
-
-
-2设备端
-http://test.dvema.com/cloudVod/getSts?uidToken=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjaGFubmVsIjoiNCIsInVpZCI6IkZUU0xMOEhNNDM3WjM4V1UxMTFBIn0.wkrwYvIYf5qEukOSTxALSAgSqop-gNBdEvSwScOgYB8
-# 支付宝支付
-http://192.168.136.40:8077/cloudVod/aliPayCreateOrder?token=local&channel=2&rank=1&uid=OOBDSU9547NTRSMF111A
-'''
-
 
 # 设备信息添加
 class CloudVodView(View):
@@ -441,90 +399,6 @@ class CloudVodView(View):
                 return HttpResponse(json.dumps(res, ensure_ascii=False),
                                     content_type="application/json,charset=utf-8")
 
-    #  生成设备sts上传授权
-    # def do_getSts(self, request_dict, ip, response):
-    #     uidToken = request_dict.get('uidToken', None)
-    #     utko = UidTokenObject(uidToken)
-    #     if utko.flag is False:
-    #         return response.json(444, 'uidToken')
-    #     UID = utko.UID
-    #     channel = utko.channel
-    #     print(channel)
-    #     print(UID)
-    #     ubqs = UID_Bucket.objects.filter(uid=UID, channel=channel, status=1). \
-    #         values('channel', 'bucket__bucket', 'bucket__endpoint', 'bucket__region', 'endTime')
-    #     now_time = int(time.time())
-    #     if not ubqs.exists():
-    #         res = {'code': 404, 'msg': '未购买'}
-    #         return HttpResponse(json.dumps(res, ensure_ascii=False), content_type="application/json,charset=utf-8")
-    #     elif ubqs[0]['endTime'] < now_time:
-    #         res = {'code': 404, 'msg': '过期'}
-    #         return HttpResponse(json.dumps(res, ensure_ascii=False), content_type="application/json,charset=utf-8")
-    #     oc_qs = OssCrdModel.objects.filter(uid=UID, channel=channel).values("addTime", "data")
-    #     if oc_qs.exists():
-    #         endTime = int(oc_qs[0]["addTime"]) + 3500
-    #         if endTime > now_time:
-    #             print(endTime)
-    #             print(now_time)
-    #             res = json.loads(oc_qs[0]["data"])
-    #             return JsonResponse(status=200, data=res)
-    #     # 套餐id
-    #     storage = '{uid}/vod{channel}/'.format(uid=UID, channel=channel)
-    #     bucket_name = ubqs[0]['bucket__bucket']
-    #     endpoint = ubqs[0]['bucket__endpoint']
-    #     access_key_id = OSS_STS_ACCESS_KEY
-    #     access_key_secret = OSS_STS_ACCESS_SECRET
-    #     region_id = ubqs[0]['bucket__region']
-    #     role_arn = OSS_ROLE_ARN
-    #     clt = client.AcsClient(access_key_id, access_key_secret, region_id)
-    #     req = AssumeRoleRequest.AssumeRoleRequest()
-    #     # 设置返回值格式为JSON。
-    #     req.set_accept_format('json')
-    #     req.set_RoleArn(role_arn)
-    #     req.set_RoleSessionName(UID)
-    #     req.set_DurationSeconds(3600)
-    #     Resource_access = "acs:oss:*:*:{bucket_name}/{uid_channel}*".format(bucket_name=bucket_name,
-    #                                                                         uid_channel=storage)
-    #     print(Resource_access)
-    #     policys = {
-    #         "Version": "1",
-    #         "Statement": [
-    #             {
-    #                 "Action": ["oss:PutObject", "oss:DeleteObject", ],
-    #                 "Resource": [Resource_access],
-    #                 "Effect": "Allow",
-    #                 "Condition": {
-    #                     "IpAddress": {"acs:SourceIp": ip}
-    #                     # "IpAddress": {"acs:SourceIp": "120.237.157.184"}
-    #                     # "IpAddress": {"acs:SourceIp": "*"}
-    #                 }
-    #             }
-    #         ]
-    #     }
-    #     req.set_Policy(Policy=json.dumps(policys))
-    #     body = clt.do_action(req)
-    #     # 使用RAM账号的AccessKeyId和AccessKeySecret向STS申请临时token。
-    #     token = json.loads(body.decode('utf-8'))
-    #     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': storage,
-    #         'endTime': ubqs[0]['endTime'],
-    #         'ip': ip}
-    #     if oc_qs.exists():
-    #         oc_qs.update(data=json.dumps(res), addTime=now_time)
-    #     else:
-    #         OssCrdModel.objects.create(uid=UID, channel=channel, data=json.dumps(res), addTime=now_time)
-    #     return JsonResponse(status=200, data=res)
-
     def do_paypal_execute(self, request_dict, response):
         paymentId = request_dict.get('paymentId', None)
         PayerID = request_dict.get('PayerID', None)

+ 7 - 22
Controller/StsOssController.py

@@ -1,26 +1,12 @@
-#!/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: 2019/5/10 8:43
-@Version: python3.6
-@MODIFY DECORD:ansjer dev
-@file: StsOssController.py
-@Contact: chanjunkai@163.com
-"""
+import json
 
+from aliyunsdkcore import client
+from aliyunsdksts.request.v20150401 import AssumeRoleRequest
 from django.views.generic import View
 
+from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY, OSS_ROLE_ARN
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
-from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY, OSS_ROLE_ARN
-from aliyunsdkcore import client
-from aliyunsdksts.request.v20150401 import AssumeRoleRequest
-import json
-from var_dump import var_dump
 
 
 class StsOssView(View):
@@ -39,7 +25,6 @@ class StsOssView(View):
 
     def validation(self, request_dict, operation):
         response = ResponseObject()
-        from var_dump import var_dump
         # var_dump(request_dict)
         token = request_dict.get('token', None)
         if operation == 'uidPreview':
@@ -63,13 +48,13 @@ class StsOssView(View):
         req.set_RoleArn(OSS_ROLE_ARN)
         req.set_RoleSessionName(userID)
         req.set_DurationSeconds(3600)
-        Resource_access = "acs:oss:*:*:{bucket_name}/{userID}*".\
-            format(bucket_name=bucket_name,userID=userID)
+        Resource_access = "acs:oss:*:*:{bucket_name}/{userID}*". \
+            format(bucket_name=bucket_name, userID=userID)
         policys = {
             "Version": "1",
             "Statement": [
                 {
-                    "Action": ["oss:PutObject", "oss:DeleteObject", "oss:GetObject",],
+                    "Action": ["oss:PutObject", "oss:DeleteObject", "oss:GetObject", ],
                     # "Action": ["*"],
                     # "Action": ["*"],
                     "Resource": [Resource_access],

+ 0 - 289
Controller/TestApi.py

@@ -35,7 +35,6 @@ import oss2
 import paypalrestsdk
 import logging
 from aliyunsdkcore import client
-from aliyunsdksts.request.v20150401 import AssumeRoleRequest
 from django.http import JsonResponse, HttpResponse
 from django.utils.decorators import method_decorator
 from django.views.decorators.csrf import csrf_exempt
@@ -533,294 +532,6 @@ class testView(View):
         # return response
         # return HttpResponse(status=200, content=playlist)
 
-    def do_test_get_sign_sts(self, request_dict, ip, response):
-        # uid = 'GZL2PEFJPLY7W6BG111A'
-        # channel = 2
-        uid = 'VVDHCVBYDKFMJRWA111A'
-        channel = 1
-        now_time = int(time.time())
-        ubqs = UID_Bucket.objects.filter(uid=uid, channel=channel, endTime__gte=now_time). \
-            values("bucket__mold", "bucket__bucket", "bucket__endpoint", "bucket__region", "endTime")
-        if ubqs.exists():
-            if ubqs[0]["bucket__mold"] == 0:
-                # 阿里云 oss sts
-                oc_qs = OssCrdModel.objects.filter(uid=uid, channel=channel). \
-                    values("addTime", "data")
-                if oc_qs.exists():
-                    endTime = int(oc_qs[0]["addTime"]) + 3500
-                    if endTime > now_time:
-                        print(endTime)
-                        print(now_time)
-                        res = json.loads(oc_qs[0]["data"])
-                        return JsonResponse(status=200, data=res)
-                # 套餐id
-                storage = '{uid}/vod{channel}/'.format(uid=uid, channel=channel)
-                bucket_name = ubqs[0]['bucket__bucket']
-                endpoint = ubqs[0]['bucket__endpoint']
-                access_key_id = OSS_STS_ACCESS_KEY
-                access_key_secret = OSS_STS_ACCESS_SECRET
-                region_id = ubqs[0]['bucket__region']
-                role_arn = OSS_ROLE_ARN
-                clt = client.AcsClient(access_key_id, access_key_secret, region_id)
-                req = AssumeRoleRequest.AssumeRoleRequest()
-                # 设置返回值格式为JSON。
-                req.set_accept_format('json')
-                req.set_RoleArn(role_arn)
-                req.set_RoleSessionName(uid + '_' + channel)
-                req.set_DurationSeconds(3600)
-                Resource_access = "acs:oss:*:*:{bucket_name}/{uid_channel}*". \
-                    format(bucket_name=bucket_name, uid_channel=storage)
-                print(Resource_access)
-                policys = {
-                    "Version": "1",
-                    "Statement": [
-                        {
-                            "Action": ["oss:PutObject", "oss:DeleteObject", ],
-                            "Resource": [Resource_access],
-                            "Effect": "Allow",
-                            "Condition": {
-                                "IpAddress": {"acs:SourceIp": ip}
-                                # "IpAddress": {"acs:SourceIp": "120.237.157.184"}
-                                # "IpAddress": {"acs:SourceIp": "*"}
-                            }
-                        }
-                    ]
-                }
-                req.set_Policy(Policy=json.dumps(policys))
-                body = clt.do_action(req)
-                # 使用RAM账号的AccessKeyId和AccessKeySecret向STS申请临时token。
-                token = json.loads(body.decode('utf-8'))
-                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': storage,
-                    'endTime': ubqs[0]['endTime'],
-                    'ip': ip}
-                if oc_qs.exists():
-                    oc_qs.update(data=json.dumps(res), addTime=now_time)
-                else:
-                    OssCrdModel.objects.create \
-                        (uid=uid, channel=channel, data=json.dumps(res), addTime=now_time)
-                return JsonResponse(status=200, data=res)
-            elif ubqs[0]["bucket__mold"] == 1:
-                # 亚马逊 s3 sts
-                sts_qs = StsCrdModel.objects.filter(uid=uid, channel=channel). \
-                    values("addTime", "data")
-                if sts_qs.exists():
-                    endTime = int(sts_qs[0]["addTime"]) + 3500
-                    if endTime > now_time:
-                        print(endTime)
-                        print(now_time)
-                        res = json.loads(sts_qs[0]["data"])
-                        return JsonResponse(status=200, data=res)
-                    # 套餐id
-                storage = '{uid}/vod{channel}/'.format(uid=uid, channel=channel)
-                bucket_name = ubqs[0]['bucket__bucket']
-                endpoint = ubqs[0]['bucket__endpoint']
-                region_id = ubqs[0]['bucket__region']
-
-                ###############
-                REGION_NAME = region_id
-                boto3_sts = boto3.client(
-                    'sts',
-                    aws_access_key_id='AKIA2E67UIMD45Y3HL53',
-                    aws_secret_access_key='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',
-                    region_name=REGION_NAME
-                )
-                Policy = {
-                    "Version": "2012-10-17",
-                    "Statement": [
-                        {
-                            "Effect": "Allow",
-                            "Action": "s3:*",
-                            "Resource": ["arn:aws:s3:::azvod1/{uid_channel}/*".
-                                             format(uid_channel=storage)]
-                        }
-                    ]
-                }
-                response = boto3_sts.get_federation_token(
-                    Name='{role_name}'.format(role_name=uid + '_' + channel),
-                    Policy=json.dumps(Policy),
-                    DurationSeconds=7200
-                )
-                ###############
-                res = {
-                    'AccessKeyId': response['Credentials']['AccessKeyId'],
-                    'AccessKeySecret': response['Credentials']['SecretAccessKey'],
-                    'SessionToken': response['Credentials']['SessionToken'],
-                    'Expiration': response['Credentials']['Expiration'],
-                    'expire': '3600',
-                    'endpoint': endpoint,
-                    'bucket_name': bucket_name,
-                    'arn': response['FederatedUser']['Arn'],
-                    'code': 0,
-                    'storage': storage,
-                    'endTime': ubqs[0]['endTime'],
-                    'ip': ip,
-                }
-                if sts_qs.exists():
-                    sts_qs.update(data=json.dumps(res, default=str), addTime=now_time)
-                else:
-                    StsCrdModel.objects.create(uid=uid, channel=channel, data=json.dumps(res, default=str),
-                                               addTime=now_time, type=1)
-                return JsonResponse(status=200, data=res)
-            else:
-                res = {'code': 404, 'msg': 'data not exists!'}
-                return HttpResponse(json.dumps(res, ensure_ascii=False),
-                                    content_type="application/json,charset=utf-8")
-
-    def do_get_sign_sts(self, request_dict, ip, response):
-        # uid = 'GZL2PEFJPLY7W6BG111A'
-        # channel = 2
-        uid = '86YC8Z192VB1VMKU111A'
-        channel = 1
-        now_time = int(time.time())
-        ubqs = UID_Bucket.objects.filter(uid=uid, channel=channel, endTime__gte=now_time). \
-            values("bucket__mold", "bucket__bucket", "bucket__endpoint", "bucket__region", "endTime")
-        if ubqs.exists():
-            if ubqs[0]["bucket__mold"] == 0:
-                # 阿里云 oss sts
-                oc_qs = OssCrdModel.objects.filter(uid=uid, channel=channel). \
-                    values("addTime", "data")
-                if oc_qs.exists():
-                    endTime = int(oc_qs[0]["addTime"]) + 3500
-                    if endTime > now_time:
-                        print(endTime)
-                        print(now_time)
-                        res = json.loads(oc_qs[0]["data"])
-                        return JsonResponse(status=200, data=res)
-                # 套餐id
-                storage = '{uid}/vod{channel}/'.format(uid=uid, channel=channel)
-                bucket_name = ubqs[0]['bucket__bucket']
-                endpoint = ubqs[0]['bucket__endpoint']
-                access_key_id = OSS_STS_ACCESS_KEY
-                access_key_secret = OSS_STS_ACCESS_SECRET
-                region_id = ubqs[0]['bucket__region']
-                role_arn = OSS_ROLE_ARN
-                clt = client.AcsClient(access_key_id, access_key_secret, region_id)
-                req = AssumeRoleRequest.AssumeRoleRequest()
-                # 设置返回值格式为JSON。
-                req.set_accept_format('json')
-                req.set_RoleArn(role_arn)
-                req.set_RoleSessionName(uid + '_' + channel)
-                req.set_DurationSeconds(3600)
-                Resource_access = "acs:oss:*:*:{bucket_name}/{uid_channel}*". \
-                    format(bucket_name=bucket_name, uid_channel=storage)
-                print(Resource_access)
-                policys = {
-                    "Version": "1",
-                    "Statement": [
-                        {
-                            "Action": ["oss:PutObject", "oss:DeleteObject", ],
-                            "Resource": [Resource_access],
-                            "Effect": "Allow",
-                            "Condition": {
-                                "IpAddress": {"acs:SourceIp": ip}
-                                # "IpAddress": {"acs:SourceIp": "120.237.157.184"}
-                                # "IpAddress": {"acs:SourceIp": "*"}
-                            }
-                        }
-                    ]
-                }
-                req.set_Policy(Policy=json.dumps(policys))
-                body = clt.do_action(req)
-                # 使用RAM账号的AccessKeyId和AccessKeySecret向STS申请临时token。
-                token = json.loads(body.decode('utf-8'))
-                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': storage,
-                    'endTime': ubqs[0]['endTime'],
-                    'ip': ip}
-                if oc_qs.exists():
-                    oc_qs.update(data=json.dumps(res), addTime=now_time)
-                else:
-                    OssCrdModel.objects.create \
-                        (uid=uid, channel=channel, data=json.dumps(res), addTime=now_time)
-                return JsonResponse(status=200, data=res)
-            elif ubqs[0]["bucket__mold"] == 1:
-                # 亚马逊 s3 sts
-                sts_qs = StsCrdModel.objects.filter(uid=uid, channel=channel). \
-                    values("addTime", "data")
-                if sts_qs.exists():
-                    endTime = int(sts_qs[0]["addTime"]) + 3500
-                    if endTime > now_time:
-                        print(endTime)
-                        print(now_time)
-                        res = json.loads(sts_qs[0]["data"])
-                        return JsonResponse(status=200, data=res)
-                    # 套餐id
-                storage = '{uid}/vod{channel}/'.format(uid=uid, channel=channel)
-                bucket_name = ubqs[0]['bucket__bucket']
-                endpoint = ubqs[0]['bucket__endpoint']
-                region_id = ubqs[0]['bucket__region']
-
-                ###############
-                REGION_NAME = region_id
-                boto3_sts = boto3.client(
-                    'sts',
-                    aws_access_key_id='AKIA2E67UIMD45Y3HL53',
-                    aws_secret_access_key='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',
-                    region_name=REGION_NAME
-                )
-                Policy = {
-                    "Version": "2012-10-17",
-                    "Statement": [
-                        {
-                            "Effect": "Allow",
-                            "Action": "s3:*",
-                            "Resource": ["arn:aws:s3:::azvod1/{uid_channel}/*".
-                                             format(uid_channel=storage)]
-                        }
-                    ]
-                }
-                response = boto3_sts.get_federation_token(
-                    Name='{role_name}'.format(role_name=uid + '_' + channel),
-                    Policy=json.dumps(Policy),
-                    DurationSeconds=7200
-                )
-                ###############
-                res = {
-                    'AccessKeyId': response['Credentials']['AccessKeyId'],
-                    'AccessKeySecret': response['Credentials']['SecretAccessKey'],
-                    'SessionToken': response['Credentials']['SessionToken'],
-                    'Expiration': response['Credentials']['Expiration'],
-                    'expire': '3600',
-                    'endpoint': endpoint,
-                    'bucket_name': bucket_name,
-                    'arn': response['FederatedUser']['Arn'],
-                    'code': 0,
-                    'storage': storage,
-                    'endTime': ubqs[0]['endTime'],
-                    'ip': ip,
-                }
-                if sts_qs.exists():
-                    sts_qs.update(data=json.dumps(res, default=str), addTime=now_time)
-                else:
-                    StsCrdModel.objects.create(uid=uid, channel=channel, data=json.dumps(res, default=str),
-                                               addTime=now_time, type=1)
-                return JsonResponse(status=200, data=res)
-            else:
-                res = {'code': 404, 'msg': 'data not exists!'}
-                return HttpResponse(json.dumps(res, ensure_ascii=False),
-                                    content_type="application/json,charset=utf-8")
-
     def do_pay_by_ali(self, request_dict, userID, response):
         uid = request_dict.get('uid', None)
         rank = request_dict.get('rank', None)