dever 7 år sedan
förälder
incheckning
b1f2fd64e6
4 ändrade filer med 84 tillägg och 46 borttagningar
  1. 6 0
      admin/page/site.py
  2. 1 0
      convert.py
  3. 5 4
      cron.py
  4. 72 42
      front/api/main.py

+ 6 - 0
admin/page/site.py

@@ -122,6 +122,12 @@ class convert_update_path(Load):
 		self.data['update']['html'] = info['html']
 		self.data['update']['url'] = info['url']
 
+		sid = self.input('id')
+		if sid:
+			redis = Demeter.redis()
+			config = Demeter.config['redis']
+			redis.rpush(config['name'], sid)
+
 		self.update('convert')
 	@Web.auth
 	@Web.setting

+ 1 - 0
convert.py

@@ -4,6 +4,7 @@ sys.getdefaultencoding()
 reload(sys)
 sys.setdefaultencoding('UTF-8')
 from demeter.core import *
+import time
 
 # 测试命令行传参 python convert.py -f file.doc
 param = {}

+ 5 - 4
cron.py

@@ -5,7 +5,7 @@ from demeter.core import *
 from gevent import monkey; monkey.patch_socket()
 import gevent
 '''
-timeSleep = 50
+timeSleep = 30
 
 def command(file):
 	return 'python '+File.path()+'convert.py -f ' + file
@@ -18,9 +18,10 @@ def convert():
 	while 1:
 		file = r.lpop(c['name'])
 		if file:
-			Shell.popen(command(file))
-		i++
-		if i >= 10
+			g = command(file)
+			Shell.popen(g, True, True)
+		i = i+1
+		if i >= 10:
 			time.sleep(timeSleep)
 			i = 0
 

+ 72 - 42
front/api/main.py

@@ -6,75 +6,105 @@
 """
 from .__load__ import *
 
-# 请求转换 /main/convert 接口必须后端获取,token不允许暴露
-class convert_path(Load):
-	@Web.setting
-	def get(self):
-		key = self.input('site')
-		token = self.input('token')
+class Common(object):
+	@staticmethod
+	def signature(self):
+		key = self.input('key')
+		nonce = self.input('nonce')
+		signature = self.input('signature')
 		file = self.input('file')
+
+		if not key:
+			self.out('参数错误:key')
+		if not nonce:
+			self.out('参数错误:nonce')
+		if not signature:
+			self.out('参数错误:signature')
+		if not file:
+			self.out('参数错误:file')
+
 		site = Demeter.model('site')
 		site.key = key
-		data = {}
-		data['site'] = site.select(type='fetchone')
 
-		if not file:
-			self.out('错误的文件信息')
+		self.data['site'] = site.select(type='fetchone')
 
-		if not data['site']:
+		if not self.data['site']:
 			self.out('站点信息不存在')
 
-		if data['site']['token'] != token:
+		key = key + '&' + self.data['site']['token'] + '&' + nonce + '&' + file
+		key = Demeter.md5(key)
+		if key != signature:
 			self.out('验证失败')
 
+
+# 请求转换 /main/convert 接口必须后端获取,token不允许暴露
+class convert_path(Load):
+	@Web.setting
+	def get(self):
+
+		file = self.input('file')
+		self.data = {}
+		Common.signature(self)
+
 		service = Demeter.service('convert')
-		data['file'] = service.update(data['site']['id'], key,  file)
+		file = service.update(self.data['site']['id'], self.data['site']['key'], file)
+
+		if not file:
+			self.out('未生成文件信息')
 
 		# 推入到redis队列
-		if data['file']['status'] == 1:
+		if file['status'] == 1:
 			redis = Demeter.redis()
 			config = Demeter.config['redis']
-			send = {}
-			#redis.rpush(config['name'], data['file']['id'])
+			redis.rpush(config['name'], file['id'])
 
-		del data['site']['token']
-		
-		self.out('yes', data)
+		del self.data['site']['token']
+
+		url = self.request.protocol + "://" + self.request.host
+
+		self.data['file'] = {
+			'id' : file['id'],
+			'status' : file['status'],
+			'url' : url + file['url'],
+			'ext' : file['ext'],
+			'name' : file['name'],
+			'key' : file['key']
+		}
+
+		self.out('yes', self.data)
 
 # 获取信息 后端接口,token不允许暴露
 class get_path(Load):
 	@Web.setting
 	def get(self):
-		key = self.input('site')
-		token = self.input('token')
-		file = self.input('file')
-		site = Demeter.model('site')
-		site.key = key
-		data = {}
-		data['site'] = site.select(type='fetchone')
 
-		if not file:
-			self.out('错误的文件信息')
-
-		if not data['site']:
-			self.out('站点信息不存在')
-
-		if data['site']['token'] != token:
-			self.out('验证失败')
+		file = self.input('file')
+		self.data = {}
+		Common.signature(self)
 
 		service = Demeter.service('convert')
-		data['file'] = service.get(data['site']['id'], key,  file);
+		file = service.get(self.data['site']['id'], self.data['site']['key'], file);
 
+		if not file:
+			self.out('未生成文件信息')
 
-		if data['file']:
-			url = self.request.protocol + "://" + self.request.host
-			data['file']['url'] = url + data['file']['url']
+		del self.data['site']['token']
 
-		del data['site']['token']
+		url = self.request.protocol + "://" + self.request.host
 
-		self.out('yes', data)
+		self.data['file'] = {
+			'id' : file['id'],
+			'status' : file['status'],
+			'url' : url + file['url'],
+			'page' : file['page'],
+			'ext' : file['ext'],
+			'name' : file['name'],
+			'key' : file['key']
+		}
+
+		self.out('yes', self.data)
 
-# 授权用户可以访问html的接口 后端接口,token不允许暴露
+# 授权用户可以访问html的接口 后端接口,token不允许暴露 后续实现
 class auth_path(Load):
 	@Web.setting
 	def get(self):
@@ -103,7 +133,7 @@ class auth_path(Load):
 
 		self.out('yes', data)
 
-# 读取html 带有权限控制 该接口为前端接口 需要有授权接口
+# 读取html 带有权限控制 该接口为前端接口 需要有授权接口 后续实现
 class view_path(Load):
 	@Web.setting
 	def get(self):