|
@@ -8,38 +8,71 @@ from .__load__ import *
|
|
|
|
|
|
class Common(object):
|
|
|
@staticmethod
|
|
|
- def signature(self):
|
|
|
- key = self.input('key')
|
|
|
+ def signature(self, status):
|
|
|
+ appid = self.input('appid')
|
|
|
+ timestamp = self.input('timestamp')
|
|
|
nonce = self.input('nonce')
|
|
|
signature = self.input('signature')
|
|
|
file = self.input('file')
|
|
|
+ file_id = self.input('file_id')
|
|
|
uid = self.input('uid')
|
|
|
|
|
|
- if not key:
|
|
|
- self.out('参数错误:key')
|
|
|
+ if not appid:
|
|
|
+ self.out('参数错误:appid')
|
|
|
+ if not timestamp:
|
|
|
+ self.out('参数错误:timestamp')
|
|
|
if not nonce:
|
|
|
self.out('参数错误:nonce')
|
|
|
if not signature:
|
|
|
self.out('参数错误:signature')
|
|
|
if not file:
|
|
|
self.out('参数错误:file')
|
|
|
+ if not file_id:
|
|
|
+ self.out('参数错误:file_id')
|
|
|
if not uid:
|
|
|
self.out('参数错误:uid')
|
|
|
|
|
|
site = Demeter.model('site')
|
|
|
- site.key = key
|
|
|
+ site.appid = appid
|
|
|
|
|
|
self.data['site'] = site.select(type='fetchone')
|
|
|
|
|
|
if not self.data['site']:
|
|
|
self.out('站点信息不存在')
|
|
|
|
|
|
- key = key + '&' + self.data['site']['token'] + '&' + nonce + '&' + file + '&' + uid
|
|
|
- key = Demeter.sha1(key)
|
|
|
- if key != signature:
|
|
|
+ time = Demeter.time()
|
|
|
+ if time < self.data['site']['sdate'] or time > self.data['site']['edate']:
|
|
|
+ self.out('授权已失效')
|
|
|
+
|
|
|
+ self.service = Demeter.service('convert')
|
|
|
+
|
|
|
+ self.referer = self.request.headers['referer']
|
|
|
+ self.host = Demeter.host(self.data['site']['link'])
|
|
|
+
|
|
|
+ if not self.referer:
|
|
|
+ self.out('验证失败')
|
|
|
+
|
|
|
+ if self.host != Demeter.host(self.referer):
|
|
|
self.out('验证失败')
|
|
|
|
|
|
- return key
|
|
|
+
|
|
|
+ self.param = self.service.signature(self.data['site']['id'], appid, self.data['site']['appsecret'], timestamp, nonce, file, file_id, uid)
|
|
|
+
|
|
|
+ if not self.param:
|
|
|
+ self.out('验证失败')
|
|
|
+
|
|
|
+ if self.param['signature'] != signature:
|
|
|
+ self.out('验证失败')
|
|
|
+
|
|
|
+ if status == 1:
|
|
|
+ file = self.service.update(self.data['site']['id'], self.data['site']['appid'], file, file_id, file_type, uid)
|
|
|
+ else:
|
|
|
+ file = self.service.get(self.data['site']['id'], self.data['site']['appid'], file);
|
|
|
+
|
|
|
+ if not file:
|
|
|
+ self.out('未生成文件信息')
|
|
|
+
|
|
|
+ return file
|
|
|
|
|
|
class test_path(Load):
|
|
|
@Web.setting
|
|
@@ -116,7 +149,7 @@ class test_path(Load):
|
|
|
|
|
|
|
|
|
# 请求转换 /main/convert 接口必须后端获取,token不允许暴露
|
|
|
-#http://192.168.33.10:8088/main/convert?signature=44e3cd684a9fe697792a235c8c57838211f5823a&key=mo1209&nonce=1529659172&file=http%3A%2F%2F192.168.33.10%2Fsystem%2Fdata%2Fupload%2Fdoc_con%2F5b2cbf1064fd8.doc&uid=1
|
|
|
+#http://192.168.33.10:8088/main/convert?signature=44e3cd684a9fe697792a235c8c57838211f5823a&appid=mo1209&nonce=1529659172&file=http%3A%2F%2F192.168.33.10%2Fsystem%2Fdata%2Fupload%2Fdoc_con%2F5b2cbf1064fd8.doc&uid=1
|
|
|
class convert_path(Load):
|
|
|
@Web.setting
|
|
|
def get(self):
|
|
@@ -134,13 +167,7 @@ class convert_path(Load):
|
|
|
|
|
|
uid = self.input('uid')
|
|
|
self.data = {}
|
|
|
- Common.signature(self)
|
|
|
-
|
|
|
- service = Demeter.service('convert')
|
|
|
- file = service.update(self.data['site']['id'], self.data['site']['key'], file, file_id, file_type, uid)
|
|
|
-
|
|
|
- if not file:
|
|
|
- self.out('未生成文件信息')
|
|
|
+ file = Common.signature(self, 1)
|
|
|
|
|
|
# 推入到redis队列
|
|
|
if file['status'] == 1 and update == 'insert':
|
|
@@ -153,7 +180,6 @@ class convert_path(Load):
|
|
|
url = self.request.protocol + "://" + self.request.host
|
|
|
|
|
|
self.data['file'] = {
|
|
|
- #'id' : file['id'],
|
|
|
'status' : file['status'],
|
|
|
'url' : url + file['url'],
|
|
|
'ext' : file['ext'],
|
|
@@ -170,13 +196,7 @@ class get_path(Load):
|
|
|
|
|
|
file = self.input('file')
|
|
|
self.data = {}
|
|
|
- Common.signature(self)
|
|
|
-
|
|
|
- service = Demeter.service('convert')
|
|
|
- file = service.get(self.data['site']['id'], self.data['site']['key'], file);
|
|
|
-
|
|
|
- if not file:
|
|
|
- self.out('未生成文件信息')
|
|
|
+ file = Common.signature(self, 2)
|
|
|
|
|
|
del self.data['site']['token']
|
|
|
|
|
@@ -203,16 +223,10 @@ class auth_path(Load):
|
|
|
file = self.input('file')
|
|
|
uid = self.input('uid')
|
|
|
self.data = {}
|
|
|
- Common.signature(self)
|
|
|
-
|
|
|
- service = Demeter.service('convert')
|
|
|
- file = service.get(self.data['site']['id'], self.data['site']['key'], file);
|
|
|
-
|
|
|
- if not file:
|
|
|
- self.out('未生成文件信息')
|
|
|
+ file = Common.signature(self, 2)
|
|
|
|
|
|
if file:
|
|
|
- service.auth(self.data['site']['id'], uid, file['id'], 2)
|
|
|
+ self.service.auth(self.data['site']['id'], uid, file['id'], 2)
|
|
|
|
|
|
self.out('yes', {'msg':1})
|
|
|
|
|
@@ -222,23 +236,16 @@ class view_path(Load):
|
|
|
def get(self):
|
|
|
import re
|
|
|
|
|
|
- key = self.input('key')
|
|
|
+ appid = self.input('appid')
|
|
|
nonce = self.input('nonce')
|
|
|
signature = self.input('signature')
|
|
|
file = self.input('file')
|
|
|
uid = self.input('uid')
|
|
|
page = self.input('page')
|
|
|
path = self.input('path')
|
|
|
- host = self.input('host')
|
|
|
|
|
|
self.data = {}
|
|
|
- Common.signature(self)
|
|
|
-
|
|
|
- service = Demeter.service('convert')
|
|
|
- file = service.get(self.data['site']['id'], self.data['site']['key'], file);
|
|
|
-
|
|
|
- if not file:
|
|
|
- self.out('未生成文件信息')
|
|
|
+ file = Common.signature(self, 2)
|
|
|
|
|
|
if page:
|
|
|
url = self.request.protocol + "://" + self.request.host
|
|
@@ -247,7 +254,7 @@ class view_path(Load):
|
|
|
content = File.readContent(page)
|
|
|
content = content.replace('src="', 'src="' + str(static))
|
|
|
else:
|
|
|
- user = service.getAuth(self.data['site']['id'], uid, file['id'])
|
|
|
+ user = self.service.getAuth(self.data['site']['id'], uid, file['id'])
|
|
|
|
|
|
limit = -1
|
|
|
if not user and file['file_type'] == 1:
|
|
@@ -270,11 +277,11 @@ class view_path(Load):
|
|
|
content = re.sub(pattern, '', content)
|
|
|
|
|
|
path = path.replace(Demeter.path + 'runtime', '')
|
|
|
- url = url + '/main/view?path=' + str(path) + '&file=' + file['key'] + '&nonce=' + nonce + '&key=' + key + '&signature=' + signature + '&uid=' + uid + '&page='
|
|
|
+ url = url + '/main/view?path=' + str(path) + '&file=' + file['key'] + '&nonce=' + nonce + '&appid=' + appid + '&signature=' + signature + '&uid=' + uid + '&page='
|
|
|
content = content.replace('data-page-url="', 'data-page-url="' + url)
|
|
|
|
|
|
script = '<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>'
|
|
|
- script = script + '<script>document.domain="'+host+'";$(function(){var e = pdf2htmlEX.defaultViewer;var page = e.pages.length;var original_height = 0;var height = e.container.clientHeight;for(var i in e.pages){height = height + e.pages[i].original_height;original_height = e.pages[i].original_height;};parent.setHeight(height, original_height, page)})</script>'
|
|
|
+ script = script + '<script>document.domain="'+self.host+'";$(function(){var e = pdf2htmlEX.defaultViewer;var page = e.pages.length;var original_height = 0;var height = e.container.clientHeight;for(var i in e.pages){height = height + e.pages[i].original_height;original_height = e.pages[i].original_height;};parent.setHeight(height, original_height, page)})</script>'
|
|
|
content = content.replace('</body>', script + '</body>')
|
|
|
|
|
|
style = '<style>#page-container{background-color: white;background-image: none;}#sidebar{background-color: white;background-image: none;}.pf{border:1px solid #bababa;box-shadow:none}</style>'
|
|
@@ -287,22 +294,16 @@ class view_path(Load):
|
|
|
class down_path(Load):
|
|
|
@Web.setting
|
|
|
def get(self):
|
|
|
- key = self.input('key')
|
|
|
+ appid = self.input('appid')
|
|
|
nonce = self.input('nonce')
|
|
|
signature = self.input('signature')
|
|
|
file = self.input('file')
|
|
|
uid = self.input('uid')
|
|
|
|
|
|
self.data = {}
|
|
|
- Common.signature(self)
|
|
|
-
|
|
|
- service = Demeter.service('convert')
|
|
|
- file = service.get(self.data['site']['id'], self.data['site']['key'], file);
|
|
|
-
|
|
|
- if not file:
|
|
|
- self.out('未生成文件信息')
|
|
|
+ file = Common.signature(self, 2)
|
|
|
|
|
|
- user = service.getAuth(self.data['site']['id'], uid, file['id'])
|
|
|
+ user = self.service.getAuth(self.data['site']['id'], uid, file['id'])
|
|
|
|
|
|
if not user and file['file_type'] == 1:
|
|
|
# 没有文件信息,则不允许下载
|