|
@@ -1,10 +1,11 @@
|
|
import hashlib
|
|
import hashlib
|
|
|
|
+import logging
|
|
import shutil
|
|
import shutil
|
|
import time
|
|
import time
|
|
import traceback
|
|
import traceback
|
|
import os
|
|
import os
|
|
from urllib import request, parse
|
|
from urllib import request, parse
|
|
-
|
|
|
|
|
|
+import requests
|
|
from django.http import HttpResponse
|
|
from django.http import HttpResponse
|
|
|
|
|
|
from django.views.generic.base import View
|
|
from django.views.generic.base import View
|
|
@@ -41,9 +42,9 @@ class PcInfo(View):
|
|
return response.json(444, 'operation')
|
|
return response.json(444, 'operation')
|
|
else:
|
|
else:
|
|
|
|
|
|
- if operation == 'query':
|
|
|
|
|
|
+ if operation == 'query': # pc端查询
|
|
return self.query(request_dict, response)
|
|
return self.query(request_dict, response)
|
|
- elif operation == 'queryall':
|
|
|
|
|
|
+ elif operation == 'queryall': # 后台查询
|
|
return self.queryall(request_dict, response)
|
|
return self.queryall(request_dict, response)
|
|
elif operation == 'addandupload': # 上传到服务器
|
|
elif operation == 'addandupload': # 上传到服务器
|
|
return self.addandupload(request_dict, response, request)
|
|
return self.addandupload(request_dict, response, request)
|
|
@@ -55,6 +56,8 @@ class PcInfo(View):
|
|
return self.s3addandupload(request_dict, response, request)
|
|
return self.s3addandupload(request_dict, response, request)
|
|
elif operation == 's3download':
|
|
elif operation == 's3download':
|
|
return self.s3download(request_dict, response)
|
|
return self.s3download(request_dict, response)
|
|
|
|
+ elif operation == 's3delete':
|
|
|
|
+ return self.s3delete(request_dict, response)
|
|
else:
|
|
else:
|
|
return response.json(414)
|
|
return response.json(414)
|
|
|
|
|
|
@@ -236,6 +239,7 @@ class PcInfo(View):
|
|
return response.json(0)
|
|
return response.json(0)
|
|
|
|
|
|
def s3addandupload(self, request_dict, response, request):
|
|
def s3addandupload(self, request_dict, response, request):
|
|
|
|
+ logger = logging.getLogger('info')
|
|
token = request_dict.get('token', None)
|
|
token = request_dict.get('token', None)
|
|
tko = TokenObject(token)
|
|
tko = TokenObject(token)
|
|
response.lang = tko.lang
|
|
response.lang = tko.lang
|
|
@@ -249,7 +253,7 @@ class PcInfo(View):
|
|
pc_version = request_dict.get('pc_version', None)
|
|
pc_version = request_dict.get('pc_version', None)
|
|
pc_test = request_dict.get('pc_test', None)
|
|
pc_test = request_dict.get('pc_test', None)
|
|
lang = request_dict.get('lang', None)
|
|
lang = request_dict.get('lang', None)
|
|
- file_name = request_dict.get('file_name', None)
|
|
|
|
|
|
+ file_name = request.FILES.get('file_name', None)
|
|
param_flag = CommonService.get_param_flag(
|
|
param_flag = CommonService.get_param_flag(
|
|
data=[pc_name, bundle_version, pc_version, pc_test, lang, file_name])
|
|
data=[pc_name, bundle_version, pc_version, pc_test, lang, file_name])
|
|
if param_flag is not True:
|
|
if param_flag is not True:
|
|
@@ -261,23 +265,27 @@ class PcInfo(View):
|
|
return response.json(174)
|
|
return response.json(174)
|
|
try:
|
|
try:
|
|
# 把安装包上传到s3
|
|
# 把安装包上传到s3
|
|
- aws_s3_guowai = boto3.client(
|
|
|
|
|
|
+ aws_s3_guonei = boto3.client(
|
|
's3',
|
|
's3',
|
|
- aws_access_key_id=AWS_ACCESS_KEY_ID[1],
|
|
|
|
- aws_secret_access_key=AWS_SECRET_ACCESS_KEY[1],
|
|
|
|
|
|
+ aws_access_key_id=AWS_ACCESS_KEY_ID[0],
|
|
|
|
+ aws_secret_access_key=AWS_SECRET_ACCESS_KEY[0],
|
|
config=botocore.client.Config(signature_version='s3v4'),
|
|
config=botocore.client.Config(signature_version='s3v4'),
|
|
- region_name='us-east-1'
|
|
|
|
|
|
+ region_name='cn-northwest-1'
|
|
)
|
|
)
|
|
- download_link = '{pc_name}/{bundle_version}/{pc_version}/{file_s}'.format(
|
|
|
|
- pc_name=pc_name, bundle_version=bundle_version, pc_version=pc_version, file_s=str(file_name))
|
|
|
|
- response_url = aws_s3_guowai.generate_presigned_url(
|
|
|
|
|
|
+ download_link = '{pc_name}/{pc_version}_{bundle_version}_{pc_test}_{file_s}'.format(
|
|
|
|
+ pc_name=pc_name, pc_version=pc_version, bundle_version=bundle_version,
|
|
|
|
+ pc_test=pc_test, file_s=str(file_name))
|
|
|
|
+ response_url = aws_s3_guonei.generate_presigned_url(
|
|
ClientMethod='put_object',
|
|
ClientMethod='put_object',
|
|
Params={
|
|
Params={
|
|
- 'Bucket': 'pc-installation-package',
|
|
|
|
|
|
+ 'Bucket': 'pc-package',
|
|
'Key': download_link
|
|
'Key': download_link
|
|
},
|
|
},
|
|
ExpiresIn=3600
|
|
ExpiresIn=3600
|
|
)
|
|
)
|
|
|
|
+ logger.info('开始上传')
|
|
|
|
+ requests.put(response_url, data=file_name)
|
|
|
|
+ logger.info('上传完成')
|
|
add_time = time.time()
|
|
add_time = time.time()
|
|
create_dict = {
|
|
create_dict = {
|
|
'pc_name': pc_name,
|
|
'pc_name': pc_name,
|
|
@@ -315,37 +323,70 @@ class PcInfo(View):
|
|
pc_name = request_dict.get('pc_name', None)
|
|
pc_name = request_dict.get('pc_name', None)
|
|
bundle_version = request_dict.get('bundle_version', None)
|
|
bundle_version = request_dict.get('bundle_version', None)
|
|
pc_version = request_dict.get('pc_version', None)
|
|
pc_version = request_dict.get('pc_version', None)
|
|
- if not pc_name or not pc_version or not bundle_version:
|
|
|
|
- return response.json(444, 'pc_name,bundle_version,pc_version')
|
|
|
|
- file = Pc_Info.objects.filter(pc_name=pc_name, bundle_version=bundle_version, pc_version=pc_version).values()
|
|
|
|
- path = file[0]['download_link']
|
|
|
|
- aws_s3_guowai = boto3.client(
|
|
|
|
|
|
+ pc_test = request_dict.get('pc_test', None)
|
|
|
|
+ param_flag = CommonService.get_param_flag(
|
|
|
|
+ data=[pc_name, bundle_version, pc_version, pc_test])
|
|
|
|
+ if param_flag is not True:
|
|
|
|
+ return response.json(444)
|
|
|
|
+ path = Pc_Info.objects.filter(pc_name=pc_name, bundle_version=bundle_version, pc_version=pc_version,
|
|
|
|
+ pc_test=pc_test).values('download_link')
|
|
|
|
+ if not path:
|
|
|
|
+ return response.json(173)
|
|
|
|
+ path = path[0]['download_link']
|
|
|
|
+ aws_s3_guonei = boto3.client(
|
|
's3',
|
|
's3',
|
|
- aws_access_key_id=AWS_ACCESS_KEY_ID[1],
|
|
|
|
- aws_secret_access_key=AWS_SECRET_ACCESS_KEY[1],
|
|
|
|
|
|
+ aws_access_key_id=AWS_ACCESS_KEY_ID[0],
|
|
|
|
+ aws_secret_access_key=AWS_SECRET_ACCESS_KEY[0],
|
|
config=botocore.client.Config(signature_version='s3v4'),
|
|
config=botocore.client.Config(signature_version='s3v4'),
|
|
- region_name='us-east-1'
|
|
|
|
|
|
+ region_name='cn-northwest-1'
|
|
)
|
|
)
|
|
- response_url = aws_s3_guowai.generate_presigned_url(
|
|
|
|
|
|
+ response_url = aws_s3_guonei.generate_presigned_url(
|
|
ClientMethod='get_object',
|
|
ClientMethod='get_object',
|
|
Params={
|
|
Params={
|
|
- 'Bucket': 'pc-installation-package',
|
|
|
|
|
|
+ 'Bucket': 'pc-package',
|
|
'Key': path
|
|
'Key': path
|
|
},
|
|
},
|
|
ExpiresIn=3600
|
|
ExpiresIn=3600
|
|
)
|
|
)
|
|
- res = {'pc_name': file[0]['pc_name'],
|
|
|
|
- 'bundle_version': file[0]['bundle_version'],
|
|
|
|
- 'pc_version': file[0]['pc_version'],
|
|
|
|
- 'pc_test': file[0]['pc_test'],
|
|
|
|
- 'download_link': file[0]['download_link'],
|
|
|
|
- 'lang': file[0]['lang'],
|
|
|
|
- 'add_time': file[0]['add_time'],
|
|
|
|
- 'update_time': file[0]['update_time'],
|
|
|
|
|
|
+ res = {'path': path,
|
|
'response_url': response_url
|
|
'response_url': response_url
|
|
}
|
|
}
|
|
return response.json(0, res)
|
|
return response.json(0, res)
|
|
|
|
|
|
|
|
+ def s3delete(self, request_dict, response):
|
|
|
|
+ token = request_dict.get('token', None)
|
|
|
|
+ tko = TokenObject(token)
|
|
|
|
+ response.lang = tko.lang
|
|
|
|
+ if tko.code != 0:
|
|
|
|
+ return response.json(tko.code)
|
|
|
|
+ userID = tko.userID
|
|
|
|
+ if not userID:
|
|
|
|
+ return response.json(104)
|
|
|
|
+ id = request_dict.get('id', None)
|
|
|
|
+ param_flag = CommonService.get_param_flag(data=[id])
|
|
|
|
+ if param_flag is not True:
|
|
|
|
+ return response.json(444)
|
|
|
|
+ file = Pc_Info.objects.filter(id=id)
|
|
|
|
+ if not file.exists():
|
|
|
|
+ return response.json(173)
|
|
|
|
+ try:
|
|
|
|
+ # 删除s3和数据库里的相应数据
|
|
|
|
+ file_path = file[0].download_link
|
|
|
|
+ print(file_path)
|
|
|
|
+ aws_s3_guonei = boto3.client(
|
|
|
|
+ 's3',
|
|
|
|
+ aws_access_key_id=AWS_ACCESS_KEY_ID[0],
|
|
|
|
+ aws_secret_access_key=AWS_SECRET_ACCESS_KEY[0],
|
|
|
|
+ config=botocore.client.Config(signature_version='s3v4'),
|
|
|
|
+ region_name='cn-northwest-1'
|
|
|
|
+ )
|
|
|
|
+ aws_s3_guonei.delete_object(Bucket='pc-package', Key=file_path)
|
|
|
|
+ file.delete()
|
|
|
|
+ except Exception as e:
|
|
|
|
+ return response.json(176, repr(e))
|
|
|
|
+ else:
|
|
|
|
+ return response.json(0)
|
|
|
|
+
|
|
|
|
|
|
def getMD5orSHA265(fileName, encryptionType='MD5'):
|
|
def getMD5orSHA265(fileName, encryptionType='MD5'):
|
|
"""
|
|
"""
|