ソースを参照

部署正式版本

chenjunkai 6 年 前
コミット
67d8f59f5e
5 ファイル変更89 行追加67 行削除
  1. 2 1
      Ansjer/test/oss.py
  2. 13 48
      Ansjer/test/oss_sts.py
  3. 22 0
      Ansjer/test/osstest.py
  4. 0 18
      Ansjer/test/ttsqiniu.py
  5. 52 0
      Controller/ossVod/CloudVod.py

+ 2 - 1
Ansjer/test/oss.py

@@ -27,8 +27,9 @@ auth = Auth(accessid, accesskey)
 bucket = Bucket(auth, host, bucket_name)
 ######################
 # 生成oss签名url
-url = bucket.sign_url('GET', 'vod/video/vod.m3u8', 60 * 60, params={'x-oss-process': 'hls/sign'})
+url = bucket.sign_url('GET', 'vod/1543561927/1543561927.m3u8', 60 * 60, params={'x-oss-process': 'hls/sign'})
 # url = bucket.sign_url('GET', 'vod/playlist.m3u8', 60 * 60,params={'x-oss-process': 'hls/sign'})
+
 url = urllib.parse.unquote(url, encoding='utf-8', errors='replace')
 print(url)
 

+ 13 - 48
Ansjer/test/oss_sts.py

@@ -1,46 +1,16 @@
-#!/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
 
 
-
-'''
-host = ""  # just for example
-accessid = ""
-accesskey = ""
-bucket_name = ""
-channel_name = "test-channel"
-auth = Auth(accessid, accesskey)
-bucket = Bucket(auth, host, bucket_name)
-'''
-# Endpoint以杭州为例,其它Region请按实际情况填写。
+# Endpoint以杭州为例,其它egion请按实际情况填写。
 endpoint = 'oss-cn-shenzhen.aliyuncs.com'
-# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
-# access_key_id = 'LTAIXSozepSx81xe'
-# access_key_secret = '19BlxRiAHDPLx4mhz6vQZRuhK0eKed'
-access_key_id = 'LTAIKF7ohvwF5ugH'
-access_key_secret = 'AfBIeMdrvMN3m0EsQYuRkmNyA7uWoz'
-bucket_name = 'testrtmp'
+access_key_id = 'LTAIyMkGfEdogyL9'
+access_key_secret = '71uIjpsqVOmF7DAITRyRuc259jHOjO'
+bucket_name = 'cloudvod1'
 # role_arn是角色的资源名称。
-role_arn = 'acs:ram::1024237323330331:role/maxadmin'
+role_arn = 'acs:ram::1901342792446414:role/stsoss'
 
 clt = client.AcsClient(access_key_id, access_key_secret, 'cn-shenzhen')
 req = AssumeRoleRequest.AssumeRoleRequest()
@@ -48,9 +18,9 @@ req = AssumeRoleRequest.AssumeRoleRequest()
 # 设置返回值格式为JSON。
 req.set_accept_format('json')
 req.set_RoleArn(role_arn)
-req.set_RoleSessionName('chanjunkai')
+req.set_RoleSessionName('uid13241234123')
 req.set_DurationSeconds(3600)
-policys={
+policys = {
     "Version": "1",
     "Statement": [
         {
@@ -58,7 +28,8 @@ policys={
                 "oss:PutObject",
                 "oss:DeleteObject",
             ],
-            "Resource": ["acs:oss:*:*:testrtmp/*"],
+            # "Resource": ["acs:oss:*:*:cloudvod1/*"],
+            "Resource": ["acs:oss:*:*:cloudvod1/test/*"],
             "Effect": "Allow",
             "Condition": {
                 "IpAddress": {
@@ -74,15 +45,9 @@ body = clt.do_action(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='
-  }
-}
+# exit()
+# tokens = {'RequestId': '2D83A43D-8D6B-44C5-83A4-3530BFB032EC', 'AssumedRoleUser': {'AssumedRoleId': '394329055954717182:chanjunkai', 'Arn': 'acs:ram::1901342792446414:role/stsoss/chanjunkai'}, 'Credentials': {'AccessKeySecret': 'FtPRvMDBRitAX8X7ZGoQ2DohrMWvMjP2EXVVSVqhmdyv', 'AccessKeyId': 'STS.NJHBY1uKvmvy2rRunerymDq7y', 'Expiration': '2018-11-30T07:23:54Z', 'SecurityToken': 'CAIS0wJ1q6Ft5B2yfSjIr4n9CeOFmJRX2rSSMFTjkW4wfvZBq7Scmzz2IHFIf3NhAe0bv/kzm2lX7/YYlqN4S5ZDR1HCbsJxtgf5G/c/J9ivgde8yJBZoljMewHKedGSvqL7Z+H+U6mMGJOEYEzFkSle2KbzcS7YMXWuLZyOj+wuDLEQRRLqVSdaI91UKwB+yrcdLmCDGfupPwLnpWDSAUF0wFce71ly8qOi2MaRxwPDhVnhsI8vqp/2P4KvYrsdXuh2WMzn2/dtJOiTknxb7x9X+LlxgPUDu02D3LC8G3Bd7w+LKPGultRkN11CYbUgEKNltIqF95oh4LSVzd+ojU8QYqcMA3j9PNnxmJKfRLn2Z4xlKeinYij3v4rRZsWvgWQNemkGMQ5GQd0lJ0JrBAYkIjOgcf77owqbOlr+GvXZj/hpiMov1Tvz4cGNPEOf5T4EVOPY4vQagAGFFahWtPsgkWPPJhSOu/bsFZGJFeQvb/Ij5nT5dPNiuEfvECu+ns2GmUB5sAQO9xeMmIBr9y2yteTIwoG8FQx5S4ybj051MK+K53GeRZOSd05iZRU8hpU3+O2mTlQI4FicDjG6C6my1IJpNPYjO+8Y9cWecm+aodAeBJLJS1WP6w=='}}
+
 # 使用临时token中的认证信息初始化StsAuth实例。
 auth = oss2.StsAuth(token['Credentials']['AccessKeyId'],
                     token['Credentials']['AccessKeySecret'],
@@ -92,5 +57,5 @@ print(auth)
 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')
+res = bucket.put_object('test/test-name.txt', b'hello world')
 print(res)

+ 22 - 0
Ansjer/test/osstest.py

@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+import oss2
+
+# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
+host = "oss-cn-shenzhen.aliyuncs.com"  # just for example
+# accessid = 'LTAIpezLGJWqmrwR'
+# accesskey = 'S6vx8nZQw8pwoX07qMMnLdA61TMvX5'
+access_key_id = 'LTAIyMkGfEdogyL9'
+access_key_secret = '71uIjpsqVOmF7DAITRyRuc259jHOjO'
+bucket_name = "cloudvod1"
+auth = oss2.Auth(access_key_id, access_key_secret)
+# Endpoint以杭州为例,其它Region请按实际情况填写。
+bucket = oss2.Bucket(auth, host, bucket_name)
+
+# 设置Delimiter参数为正斜线(/)。
+# for obj in oss2.ObjectIterator(bucket, delimiter='/',prefix='vod/'):
+for obj in oss2.ObjectIterator(bucket, prefix='vod/'):
+    # 通过is_prefix方法判断obj是否为文件夹。
+    if obj.is_prefix():  # 文件夹
+        print('directory: ' + obj.key)
+    else:  # 文件
+        print('file: ' + obj.key)

+ 0 - 18
Ansjer/test/ttsqiniu.py

@@ -1,18 +0,0 @@
-import time
-start =time.clock()
-#中间写上代码块
-def test():
-    a = 1
-    b = 2
-    c =a + b
-    if c != 3:
-        print(c)
-        return
-    else:
-        print(c)
-        return
-i = 0
-for i in range(1000000):
-    test()
-end = time.clock()
-print('Running time: %s Seconds'%(end-start))

+ 52 - 0
Controller/ossVod/CloudVod.py

@@ -0,0 +1,52 @@
+#!/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