|
@@ -77,8 +77,8 @@ class CloudStorageView(View):
|
|
return self.do_pay_by_ali_callback(request)
|
|
return self.do_pay_by_ali_callback(request)
|
|
elif operation == 'getsignsts':
|
|
elif operation == 'getsignsts':
|
|
ip = CommonService.get_ip_address(request)
|
|
ip = CommonService.get_ip_address(request)
|
|
- # return self.do_get_sign_sts(request_dict, ip, response)
|
|
|
|
- return self.do_get_sign_sts_test(request_dict, ip, response)
|
|
|
|
|
|
+ return self.do_get_sign_sts(request_dict, ip, response)
|
|
|
|
+ # return self.do_get_sign_sts_test(request_dict, ip, response)
|
|
elif operation == 'storeplaylist':
|
|
elif operation == 'storeplaylist':
|
|
return self.do_store_playlist(request_dict, response)
|
|
return self.do_store_playlist(request_dict, response)
|
|
elif operation == 'signplaym3u8':
|
|
elif operation == 'signplaym3u8':
|
|
@@ -106,85 +106,6 @@ class CloudStorageView(View):
|
|
else:
|
|
else:
|
|
return response.json(414)
|
|
return response.json(414)
|
|
|
|
|
|
- def do_get_sign_sts_test(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)
|
|
|
|
- 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"] == 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='ckYLg4Lo9ZXJIcJEAKkzf2rWvs8Xth1FCjqiAqUw',
|
|
|
|
- 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 + '_' + str(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_test_play_m3u8(self, request_dict, response):
|
|
def do_test_play_m3u8(self, request_dict, response):
|
|
playlist_entries = [
|
|
playlist_entries = [
|
|
@@ -250,9 +171,9 @@ class CloudStorageView(View):
|
|
mold = request_dict.get('mold', None)
|
|
mold = request_dict.get('mold', None)
|
|
qs = Store_Meal.objects
|
|
qs = Store_Meal.objects
|
|
if mold:
|
|
if mold:
|
|
- qs = qs.filter(bucket__mold=1)
|
|
|
|
|
|
+ qs = qs.filter(bucket__mold=mold)
|
|
else:
|
|
else:
|
|
- qs = qs.filter(bucket__mold=0)
|
|
|
|
|
|
+ qs = qs.all()
|
|
qs = qs.values("id", "title", "content", "price",
|
|
qs = qs.values("id", "title", "content", "price",
|
|
"day", "currency", "bucket__storeDay",
|
|
"day", "currency", "bucket__storeDay",
|
|
"bucket__bucket", "bucket__area", "type",
|
|
"bucket__bucket", "bucket__area", "type",
|
|
@@ -338,6 +259,8 @@ class CloudStorageView(View):
|
|
now_time = int(time.time())
|
|
now_time = int(time.time())
|
|
ubqs = UID_Bucket.objects.filter(uid=uid, channel=channel, endTime__gte=now_time). \
|
|
ubqs = UID_Bucket.objects.filter(uid=uid, channel=channel, endTime__gte=now_time). \
|
|
values("bucket__mold", "bucket__bucket", "bucket__endpoint", "bucket__region", "endTime")
|
|
values("bucket__mold", "bucket__bucket", "bucket__endpoint", "bucket__region", "endTime")
|
|
|
|
+ print('-------------bucket')
|
|
|
|
+ print(ubqs)
|
|
if ubqs.exists():
|
|
if ubqs.exists():
|
|
if ubqs[0]["bucket__mold"] == 0:
|
|
if ubqs[0]["bucket__mold"] == 0:
|
|
# 阿里云 oss sts
|
|
# 阿里云 oss sts
|
|
@@ -419,7 +342,7 @@ class CloudStorageView(View):
|
|
res = json.loads(sts_qs[0]["data"])
|
|
res = json.loads(sts_qs[0]["data"])
|
|
return JsonResponse(status=200, data=res)
|
|
return JsonResponse(status=200, data=res)
|
|
# 套餐id
|
|
# 套餐id
|
|
- storage = '{uid}/vod{channel}/'.format(uid=uid, channel=channel)
|
|
|
|
|
|
+ # storage = '{uid}/vod{channel}/'.format(uid=uid, channel=channel)
|
|
bucket_name = ubqs[0]['bucket__bucket']
|
|
bucket_name = ubqs[0]['bucket__bucket']
|
|
endpoint = ubqs[0]['bucket__endpoint']
|
|
endpoint = ubqs[0]['bucket__endpoint']
|
|
region_id = ubqs[0]['bucket__region']
|
|
region_id = ubqs[0]['bucket__region']
|
|
@@ -432,17 +355,20 @@ class CloudStorageView(View):
|
|
aws_secret_access_key='ckYLg4Lo9ZXJIcJEAKkzf2rWvs8Xth1FCjqiAqUw',
|
|
aws_secret_access_key='ckYLg4Lo9ZXJIcJEAKkzf2rWvs8Xth1FCjqiAqUw',
|
|
region_name=REGION_NAME
|
|
region_name=REGION_NAME
|
|
)
|
|
)
|
|
|
|
+ print('----------test')
|
|
|
|
+ print(REGION_NAME)
|
|
Policy = {
|
|
Policy = {
|
|
"Version": "2012-10-17",
|
|
"Version": "2012-10-17",
|
|
"Statement": [
|
|
"Statement": [
|
|
{
|
|
{
|
|
"Effect": "Allow",
|
|
"Effect": "Allow",
|
|
"Action": "s3:*",
|
|
"Action": "s3:*",
|
|
- "Resource": ["arn:aws:s3:::azvod1/{uid_channel}/*".
|
|
|
|
- format(uid_channel=storage)]
|
|
|
|
|
|
+ "Resource": ["arn:aws:s3:::{bucket_name}/{uid}/*".
|
|
|
|
+ format(bucket_name=bucket_name,uid=uid)]
|
|
}
|
|
}
|
|
]
|
|
]
|
|
}
|
|
}
|
|
|
|
+ print(Policy)
|
|
response = boto3_sts.get_federation_token(
|
|
response = boto3_sts.get_federation_token(
|
|
Name='{role_name}'.format(role_name=uid + '_' + channel),
|
|
Name='{role_name}'.format(role_name=uid + '_' + channel),
|
|
Policy=json.dumps(Policy),
|
|
Policy=json.dumps(Policy),
|
|
@@ -459,7 +385,7 @@ class CloudStorageView(View):
|
|
'bucket_name': bucket_name,
|
|
'bucket_name': bucket_name,
|
|
'arn': response['FederatedUser']['Arn'],
|
|
'arn': response['FederatedUser']['Arn'],
|
|
'code': 0,
|
|
'code': 0,
|
|
- 'storage': storage,
|
|
|
|
|
|
+ 'storage': uid,
|
|
'endTime': ubqs[0]['endTime'],
|
|
'endTime': ubqs[0]['endTime'],
|
|
'ip': ip,
|
|
'ip': ip,
|
|
}
|
|
}
|
|
@@ -577,7 +503,8 @@ class CloudStorageView(View):
|
|
channel=channel,
|
|
channel=channel,
|
|
time=storeTime,
|
|
time=storeTime,
|
|
endTime=end_time,
|
|
endTime=end_time,
|
|
- bucket_id=bucket_id
|
|
|
|
|
|
+ bucket_id=bucket_id,
|
|
|
|
+ sec=sec,
|
|
)
|
|
)
|
|
res = {'code': 0, 'msg': '存储成功'}
|
|
res = {'code': 0, 'msg': '存储成功'}
|
|
return HttpResponse(json.dumps(res, ensure_ascii=False),
|
|
return HttpResponse(json.dumps(res, ensure_ascii=False),
|
|
@@ -597,6 +524,7 @@ class CloudStorageView(View):
|
|
endTime=end_time,
|
|
endTime=end_time,
|
|
bucket_id=bucket_id,
|
|
bucket_id=bucket_id,
|
|
fg=fg,
|
|
fg=fg,
|
|
|
|
+ sec=sec,
|
|
)
|
|
)
|
|
res = {'code': 0, 'msg': '存储成功'}
|
|
res = {'code': 0, 'msg': '存储成功'}
|
|
return HttpResponse(json.dumps(res, ensure_ascii=False),
|
|
return HttpResponse(json.dumps(res, ensure_ascii=False),
|
|
@@ -612,35 +540,61 @@ class CloudStorageView(View):
|
|
res = {'code': 404, 'msg': '设备未购买'}
|
|
res = {'code': 404, 'msg': '设备未购买'}
|
|
return HttpResponse(json.dumps(res, ensure_ascii=False), content_type="application/json,charset=utf-8")
|
|
return HttpResponse(json.dumps(res, ensure_ascii=False), content_type="application/json,charset=utf-8")
|
|
|
|
|
|
|
|
+ # def do_change_vod_status(self, request_dict, userID, response):
|
|
|
|
+ # uid = request_dict.get('uid', None)
|
|
|
|
+ # status = request_dict.get('status', None)
|
|
|
|
+ # channel = request_dict.get('channel', None)
|
|
|
|
+ # if all([uid, status, channel]):
|
|
|
|
+ # dv_qs = Device_Info.objects.filter(UID=uid, userID_id=userID, isShare=False, isExist=1)
|
|
|
|
+ # if dv_qs.exists():
|
|
|
|
+ # now_time = int(time.time())
|
|
|
|
+ # ub_qs = UID_Bucket.objects.filter(uid=uid, channel=channel, endTime__gte=now_time)
|
|
|
|
+ # if ub_qs.exists():
|
|
|
|
+ # ub_qs.status = status
|
|
|
|
+ # ub_qs.save()
|
|
|
|
+ # if status == 0:
|
|
|
|
+ # return response.json(0)
|
|
|
|
+ # else:
|
|
|
|
+ # utko = UidTokenObject()
|
|
|
|
+ # utko.generate(data={'uid': uid, 'channel': channel})
|
|
|
|
+ # uidTK = utko.token
|
|
|
|
+ # uidTkUrl = "{SERVER_DOMAIN}cloudstorage/getsignsts?uidToken={uidToken}". \
|
|
|
|
+ # format(uidToken=uidTK, SERVER_DOMAIN=SERVER_DOMAIN)
|
|
|
|
+ # storeHlsUrl = "{SERVER_DOMAIN}cloudstorage/storeplaylist?uidToken={uidToken}". \
|
|
|
|
+ # format(uidToken=uidTK, SERVER_DOMAIN=SERVER_DOMAIN)
|
|
|
|
+ # return response.json(0, {'uidTkUrl': uidTkUrl, 'storeHlsUrl': storeHlsUrl})
|
|
|
|
+ # else:
|
|
|
|
+ # return response.json(10, '未购买')
|
|
|
|
+ # else:
|
|
|
|
+ # return response.json(12)
|
|
|
|
+ # else:
|
|
|
|
+ # return response.json(444, 'uid,status,channel')
|
|
|
|
+
|
|
def do_change_vod_status(self, request_dict, userID, response):
|
|
def do_change_vod_status(self, request_dict, userID, response):
|
|
uid = request_dict.get('uid', None)
|
|
uid = request_dict.get('uid', None)
|
|
status = request_dict.get('status', None)
|
|
status = request_dict.get('status', None)
|
|
channel = request_dict.get('channel', None)
|
|
channel = request_dict.get('channel', None)
|
|
- if all([uid, status, channel]):
|
|
|
|
- dv_qs = Device_Info.objects.filter(UID=uid, userID_id=userID, isShare=False, isExist=1)
|
|
|
|
- if dv_qs.exists():
|
|
|
|
- now_time = int(time.time())
|
|
|
|
- ub_qs = UID_Bucket.objects.filter(uid=uid, channel=channel, endTime__gte=now_time)
|
|
|
|
- if ub_qs.exists():
|
|
|
|
- ub_qs.status = status
|
|
|
|
- ub_qs.save()
|
|
|
|
- if status == 0:
|
|
|
|
- return response.json(0)
|
|
|
|
- else:
|
|
|
|
- utko = UidTokenObject()
|
|
|
|
- utko.generate(data={'uid': uid, 'channel': channel})
|
|
|
|
- uidTK = utko.token
|
|
|
|
- uidTkUrl = "{SERVER_DOMAIN}cloudstorage/getsignsts?uidToken={uidToken}". \
|
|
|
|
- format(uidToken=uidTK, SERVER_DOMAIN=SERVER_DOMAIN)
|
|
|
|
- storeHlsUrl = "{SERVER_DOMAIN}cloudstorage/storeplaylist?uidToken={uidToken}". \
|
|
|
|
- format(uidToken=uidTK, SERVER_DOMAIN=SERVER_DOMAIN)
|
|
|
|
- return response.json(0, {'uidTkUrl': uidTkUrl, 'storeHlsUrl': storeHlsUrl})
|
|
|
|
- else:
|
|
|
|
- return response.json(10, '未购买')
|
|
|
|
- else:
|
|
|
|
- return response.json(12)
|
|
|
|
- else:
|
|
|
|
|
|
+ if not uid or not status or not channel:
|
|
return response.json(444, 'uid,status,channel')
|
|
return response.json(444, 'uid,status,channel')
|
|
|
|
+ dvqs = Device_Info.objects.filter(UID=uid, userID_id=userID, isShare=False)
|
|
|
|
+ if not dvqs.exists():
|
|
|
|
+ return response.json(12)
|
|
|
|
+ ubqs = UID_Bucket.objects.filter(channel=channel, uid=uid)
|
|
|
|
+ if not ubqs.exists():
|
|
|
|
+ return response.json(10, '未购买')
|
|
|
|
+ now_time = int(time.time())
|
|
|
|
+ if now_time > ubqs[0].endTime:
|
|
|
|
+ return response.json(10, '已过期')
|
|
|
|
+ ubqs.update(status=status)
|
|
|
|
+ if status == 0:
|
|
|
|
+ return response.json(0)
|
|
|
|
+ utko = UidTokenObject()
|
|
|
|
+ utko.generate(data={'uid': uid, 'channel': channel})
|
|
|
|
+ uidTkUrl = "{SERVER_DOMAIN}cloudstorage/getsignsts?uidToken={uidToken}". \
|
|
|
|
+ format(uidToken=utko.token, SERVER_DOMAIN=SERVER_DOMAIN)
|
|
|
|
+ storeHlsUrl = "{SERVER_DOMAIN}cloudstorage/storeplaylist?uidToken={uidToken}". \
|
|
|
|
+ format(uidToken=utko.token, SERVER_DOMAIN=SERVER_DOMAIN)
|
|
|
|
+ return response.json(0, {'uidTkUrl': uidTkUrl, 'storeHlsUrl': storeHlsUrl})
|
|
|
|
|
|
def do_pay_error(self):
|
|
def do_pay_error(self):
|
|
response = HttpResponse()
|
|
response = HttpResponse()
|
|
@@ -985,6 +939,8 @@ class CloudStorageView(View):
|
|
else:
|
|
else:
|
|
if order_string:
|
|
if order_string:
|
|
redirectUrl = aliPayObj.alipay_prefix + order_string
|
|
redirectUrl = aliPayObj.alipay_prefix + order_string
|
|
|
|
+ print('---------tttt')
|
|
|
|
+ print(redirectUrl)
|
|
Order_Model.objects.create(orderID=orderID, UID=uid, channel=channel, userID_id=userID,
|
|
Order_Model.objects.create(orderID=orderID, UID=uid, channel=channel, userID_id=userID,
|
|
desc=content, payType=pay_type, payTime=nowTime,
|
|
desc=content, payType=pay_type, payTime=nowTime,
|
|
price=price, currency=currency, addTime=nowTime, updTime=nowTime,
|
|
price=price, currency=currency, addTime=nowTime, updTime=nowTime,
|
|
@@ -994,4 +950,4 @@ class CloudStorageView(View):
|
|
'result': {"redirectUrl": redirectUrl, "orderID": orderID},
|
|
'result': {"redirectUrl": redirectUrl, "orderID": orderID},
|
|
'error_code': 0})
|
|
'error_code': 0})
|
|
else:
|
|
else:
|
|
- return response.json(10, '生成订单错误')
|
|
|
|
|
|
+ return response.json(10, '生成订单错误.')
|