pull/109/head
midoks 4 years ago
parent 6a9246619d
commit 43cd99c2b6
  1. 2
      class/core/crontab_api.py
  2. 119
      class/core/files_api.py
  3. 195
      class/core/site_api.py
  4. 2
      class/core/task_api.py

@ -274,7 +274,7 @@ class crontab_api:
# 取数据列表 # 取数据列表
def getDataListApi(self): def getDataListApi(self):
stype = request.form.get('type', '').encode('utf-8') stype = request.form.get('type', '')
if stype == 'databases': if stype == 'databases':
db_list = {} db_list = {}
db_list['orderOpt'] = [] db_list['orderOpt'] = []

@ -25,11 +25,11 @@ class files_api:
##### ----- start ----- ### ##### ----- start ----- ###
def getBodyApi(self): def getBodyApi(self):
path = request.form.get('path', '').encode('utf-8') path = request.form.get('path', '')
return self.getBody(path) return self.getBody(path)
def getLastBodyApi(self): def getLastBodyApi(self):
path = request.form.get('path', '').encode('utf-8') path = request.form.get('path', '')
line = request.form.get('line', '100') line = request.form.get('line', '100')
if not os.path.exists(path): if not os.path.exists(path):
@ -42,30 +42,30 @@ class files_api:
return mw.returnJson(False, u'无法正确读取文件!' + str(ex)) return mw.returnJson(False, u'无法正确读取文件!' + str(ex))
def saveBodyApi(self): def saveBodyApi(self):
path = request.form.get('path', '').encode('utf-8') path = request.form.get('path', '')
data = request.form.get('data', '').encode('utf-8') data = request.form.get('data', '')
encoding = request.form.get('encoding', '').encode('utf-8') encoding = request.form.get('encoding', '')
return self.saveBody(path, data, encoding) return self.saveBody(path, data, encoding)
def downloadApi(self): def downloadApi(self):
filename = request.args.get('filename', '').encode('utf-8') filename = request.args.get('filename', '')
if not os.path.exists(filename): if not os.path.exists(filename):
return '' return ''
response = make_response(send_from_directory( response = make_response(send_from_directory(
os.path.dirname(filename).encode('utf-8'), os.path.basename(filename).encode('utf-8'), as_attachment=True)) os.path.dirname(filename), os.path.basename(filename), as_attachment=True))
return response return response
def zipApi(self): def zipApi(self):
sfile = request.form.get('sfile', '').encode('utf-8') sfile = request.form.get('sfile', '')
dfile = request.form.get('dfile', '').encode('utf-8') dfile = request.form.get('dfile', '')
stype = request.form.get('type', '').encode('utf-8') stype = request.form.get('type', '')
path = request.form.get('path', '').encode('utf-8') path = request.form.get('path', '')
return self.zip(sfile, dfile, stype, path) return self.zip(sfile, dfile, stype, path)
# 移动文件或目录 # 移动文件或目录
def mvFileApi(self): def mvFileApi(self):
sfile = request.form.get('sfile', '').encode('utf-8') sfile = request.form.get('sfile', '')
dfile = request.form.get('dfile', '').encode('utf-8') dfile = request.form.get('dfile', '')
if not self.checkFileName(dfile): if not self.checkFileName(dfile):
return mw.returnJson(False, '文件名中不能包含特殊字符!') return mw.returnJson(False, '文件名中不能包含特殊字符!')
if not os.path.exists(sfile): if not os.path.exists(sfile):
@ -84,11 +84,11 @@ class files_api:
return mw.returnJson(False, '移动文件或目录失败!') return mw.returnJson(False, '移动文件或目录失败!')
def deleteApi(self): def deleteApi(self):
path = request.form.get('path', '').encode('utf-8') path = request.form.get('path', '')
return self.delete(path) return self.delete(path)
def fileAccessApi(self): def fileAccessApi(self):
filename = request.form.get('filename', '').encode('utf-8') filename = request.form.get('filename', '')
data = self.getAccess(filename) data = self.getAccess(filename)
return mw.getJson(data) return mw.getJson(data)
@ -97,8 +97,8 @@ class files_api:
if mw.isAppleSystem(): if mw.isAppleSystem():
return mw.returnJson(True, '开发机不设置!') return mw.returnJson(True, '开发机不设置!')
filename = request.form.get('filename', '').encode('utf-8') filename = request.form.get('filename', '')
user = request.form.get('user', '').encode('utf-8') user = request.form.get('user', '')
access = request.form.get('access', '755') access = request.form.get('access', '755')
sall = '-R' sall = '-R'
try: try:
@ -119,13 +119,13 @@ class files_api:
return mw.returnJson(False, '设置失败!') return mw.returnJson(False, '设置失败!')
def getDirSizeApi(self): def getDirSizeApi(self):
path = request.form.get('path', '').encode('utf-8') path = request.form.get('path', '')
tmp = self.getDirSize(path) tmp = self.getDirSize(path)
print(tmp) print(tmp)
return mw.returnJson(True, tmp[0].split()[0]) return mw.returnJson(True, tmp[0].split()[0])
def getDirApi(self): def getDirApi(self):
path = request.form.get('path', '').encode('utf-8') path = request.form.get('path', '')
if not os.path.exists(path): if not os.path.exists(path):
path = mw.getRootDir() + "/wwwroot" path = mw.getRootDir() + "/wwwroot"
search = request.args.get('search', '').strip().lower() search = request.args.get('search', '').strip().lower()
@ -138,7 +138,7 @@ class files_api:
return self.getDir(path, int(page), int(row), search) return self.getDir(path, int(page), int(row), search)
def createFileApi(self): def createFileApi(self):
file = request.form.get('path', '').encode('utf-8') file = request.form.get('path', '')
try: try:
if not self.checkFileName(file): if not self.checkFileName(file):
return mw.returnJson(False, '文件名中不能包含特殊字符!') return mw.returnJson(False, '文件名中不能包含特殊字符!')
@ -157,7 +157,7 @@ class files_api:
return mw.returnJson(True, '文件创建失败!') return mw.returnJson(True, '文件创建失败!')
def createDirApi(self): def createDirApi(self):
path = request.form.get('path', '').encode('utf-8') path = request.form.get('path', '')
try: try:
if not self.checkFileName(path): if not self.checkFileName(path):
return mw.returnJson(False, '目录名中不能包含特殊字符!') return mw.returnJson(False, '目录名中不能包含特殊字符!')
@ -174,9 +174,9 @@ class files_api:
def downloadFileApi(self): def downloadFileApi(self):
import db import db
import time import time
url = request.form.get('url', '').encode('utf-8') url = request.form.get('url', '')
path = request.form.get('path', '').encode('utf-8') path = request.form.get('path', '')
filename = request.form.get('filename', '').encode('utf-8') filename = request.form.get('filename', '')
isTask = mw.getRootDir() + '/tmp/panelTask.pl' isTask = mw.getRootDir() + '/tmp/panelTask.pl'
execstr = url + '|mw|' + path + '/' + filename execstr = url + '|mw|' + path + '/' + filename
@ -187,7 +187,7 @@ class files_api:
return mw.returnJson(True, '已将下载任务添加到队列!') return mw.returnJson(True, '已将下载任务添加到队列!')
def removeTaskApi(self): def removeTaskApi(self):
mid = request.form.get('id', '').encode('utf-8') mid = request.form.get('id', '')
try: try:
name = mw.M('tasks').where('id=?', (mid,)).getField('name') name = mw.M('tasks').where('id=?', (mid,)).getField('name')
status = mw.M('tasks').where('id=?', (mid,)).getField('status') status = mw.M('tasks').where('id=?', (mid,)).getField('status')
@ -221,14 +221,13 @@ done
from werkzeug.utils import secure_filename from werkzeug.utils import secure_filename
from flask import request from flask import request
path = request.args.get('path', '').encode('utf-8') path = request.args.get('path', '')
if not os.path.exists(path): if not os.path.exists(path):
os.makedirs(path) os.makedirs(path)
f = request.files['zunfile'] f = request.files['zunfile']
filename = os.path.join(path, f.filename) filename = os.path.join(path, f.filename)
if sys.version_info[0] == 2:
filename = filename.encode('utf-8')
s_path = path s_path = path
if os.path.exists(filename): if os.path.exists(filename):
s_path = filename s_path = filename
@ -281,7 +280,7 @@ done
# 回收站开关 # 回收站开关
def recycleBinApi(self): def recycleBinApi(self):
c = 'data/recycle_bin.pl' c = 'data/recycle_bin.pl'
db = request.form.get('db', '').encode('utf-8') db = request.form.get('db', '')
if db != '': if db != '':
c = 'data/recycle_bin_db.pl' c = 'data/recycle_bin_db.pl'
if os.path.exists(c): if os.path.exists(c):
@ -295,7 +294,7 @@ done
def reRecycleBinApi(self): def reRecycleBinApi(self):
rPath = self.rPath rPath = self.rPath
path = request.form.get('path', '').encode('utf-8') path = request.form.get('path', '')
dFile = path.replace('_mw_', '/').split('_t_')[0] dFile = path.replace('_mw_', '/').split('_t_')[0]
try: try:
import shutil import shutil
@ -310,8 +309,8 @@ done
def delRecycleBinApi(self): def delRecycleBinApi(self):
rPath = self.rPath rPath = self.rPath
path = request.form.get('path', '').encode('utf-8') path = request.form.get('path', '')
empty = request.form.get('empty', '').encode('utf-8') empty = request.form.get('empty', '')
dFile = path.split('_t_')[0] dFile = path.split('_t_')[0]
if not self.checkDir(path): if not self.checkDir(path):
@ -353,7 +352,7 @@ done
return mw.returnJson(True, '已清空回收站!') return mw.returnJson(True, '已清空回收站!')
def deleteDirApi(self): def deleteDirApi(self):
path = request.form.get('path', '').encode('utf-8') path = request.form.get('path', '')
if not os.path.exists(path): if not os.path.exists(path):
return mw.returnJson(False, '指定文件不存在!') return mw.returnJson(False, '指定文件不存在!')
@ -380,10 +379,10 @@ done
return mw.returnJson(True, tmp[0].split()[0]) return mw.returnJson(True, tmp[0].split()[0])
def setBatchDataApi(self): def setBatchDataApi(self):
path = request.form.get('path', '').encode('utf-8') path = request.form.get('path', '')
stype = request.form.get('type', '').encode('utf-8') stype = request.form.get('type', '')
access = request.form.get('access', '').encode('utf-8') access = request.form.get('access', '')
user = request.form.get('user', '').encode('utf-8') user = request.form.get('user', '')
data = request.form.get('data') data = request.form.get('data')
if stype == '1' or stype == '2': if stype == '1' or stype == '2':
session['selected'] = { session['selected'] = {
@ -397,7 +396,6 @@ done
elif stype == '3': elif stype == '3':
for key in json.loads(data): for key in json.loads(data):
try: try:
key = key.encode('utf-8')
filename = path + '/' + key filename = path + '/' + key
if not self.checkDir(filename): if not self.checkDir(filename):
return mw.returnJson(False, 'FILE_DANGER') return mw.returnJson(False, 'FILE_DANGER')
@ -416,7 +414,7 @@ done
i = 0 i = 0
for key in data: for key in data:
try: try:
filename = path + '/' + key.encode('utf-8') filename = path + '/' + key
topath = filename topath = filename
if not os.path.exists(filename): if not os.path.exists(filename):
continue continue
@ -444,8 +442,8 @@ done
return mw.returnJson(True, '批量删除成功!') return mw.returnJson(True, '批量删除成功!')
def checkExistsFilesApi(self): def checkExistsFilesApi(self):
dfile = request.form.get('dfile', '').encode('utf-8') dfile = request.form.get('dfile', '')
filename = request.form.get('filename', '').encode('utf-8') filename = request.form.get('filename', '')
data = [] data = []
filesx = [] filesx = []
if filename == '': if filename == '':
@ -469,9 +467,9 @@ done
return mw.returnJson(True, 'ok', data) return mw.returnJson(True, 'ok', data)
def batchPasteApi(self): def batchPasteApi(self):
path = request.form.get('path', '').encode('utf-8') path = request.form.get('path', '')
stype = request.form.get('type', '').encode('utf-8') stype = request.form.get('type', '')
# filename = request.form.get('filename', '').encode('utf-8') # filename = request.form.get('filename', '')
import shutil import shutil
if not self.checkDir(path): if not self.checkDir(path):
return mw.returnJson(False, '请不要花样作死!') return mw.returnJson(False, '请不要花样作死!')
@ -485,8 +483,8 @@ done
try: try:
sfile = session['selected'][ sfile = session['selected'][
'path'] + '/' + key.encode('utf-8') 'path'] + '/' + key
dfile = path + '/' + key.encode('utf-8') dfile = path + '/' + key
if os.path.isdir(sfile): if os.path.isdir(sfile):
shutil.copytree(sfile, dfile) shutil.copytree(sfile, dfile)
@ -506,8 +504,8 @@ done
mw.writeSpeed(key, i, l) mw.writeSpeed(key, i, l)
sfile = session['selected'][ sfile = session['selected'][
'path'] + '/' + key.encode('utf-8') 'path'] + '/' + key
dfile = path + '/' + key.encode('utf-8') dfile = path + '/' + key
shutil.move(sfile, dfile) shutil.move(sfile, dfile)
except: except:
@ -522,8 +520,8 @@ done
return mw.returnJson(True, msg) return mw.returnJson(True, msg)
def copyFileApi(self): def copyFileApi(self):
sfile = request.form.get('sfile', '').encode('utf-8') sfile = request.form.get('sfile', '')
dfile = request.form.get('dfile', '').encode('utf-8') dfile = request.form.get('dfile', '')
if not os.path.exists(sfile): if not os.path.exists(sfile):
return mw.returnJson(False, '指定文件不存在!') return mw.returnJson(False, '指定文件不存在!')
@ -564,6 +562,7 @@ done
# 检查敏感目录 # 检查敏感目录
def checkDir(self, path): def checkDir(self, path):
path = str(path, encoding='utf-8')
path = path.replace('//', '/') path = path.replace('//', '/')
if path[-1:] == '/': if path[-1:] == '/':
path = path[:-1] path = path[:-1]
@ -808,18 +807,14 @@ done
break break
if i < pageObj[1].SHIFT: if i < pageObj[1].SHIFT:
continue continue
# print(path, filename)
try: try:
filePath = str(path, encoding='utf-8') + '/' + \ filePath = path + '/' + filename
str(filename, encoding='utf-8')
link = '' link = ''
if os.path.islink(filePath): if os.path.islink(filePath):
filePath = os.readlink(filePath) filePath = os.readlink(filePath)
link = ' -> ' + str(filePath, encoding='utf-8') link = ' -> ' + filePath
if not os.path.exists(filePath): if not os.path.exists(filePath):
filePath = str(path, encoding='utf-8') + \ filePath = path + '/' + filePath
'/' + str(filePath, encoding='utf-8')
if not os.path.exists(filePath): if not os.path.exists(filePath):
continue continue
@ -834,17 +829,17 @@ done
size = str(stat.st_size) size = str(stat.st_size)
if os.path.isdir(filePath): if os.path.isdir(filePath):
dirnames.append(str(filename, encoding='utf-8') + ';' + str(size, encoding='utf-8') + ';' + dirnames.append(filename + ';' + size + ';' +
str(mtime, encoding='utf-8') + ';' + accept + ';' + user + ';' + link) mtime + ';' + accept + ';' + user + ';' + link)
else: else:
filenames.append(str(filename, encoding='utf-8') + ';' + str(size, encoding='utf-8') + ';' + filenames.append(filename + ';' + size + ';' +
str(mtime, encoding='utf-8') + ';' + accept + ';' + user + ';' + link) mtime + ';' + accept + ';' + user + ';' + link)
n += 1 n += 1
except Exception as e: except Exception as e:
print('getdir:dd.', e) print('getdir:dd.', e)
continue continue
data['DIR'] = sorted(dirnames) data['DIR'] = sorted(dirnames)
data['FILES'] = sorted(filenames) data['FILES'] = sorted(filenames)
data['PATH'] = str(path, encoding='utf-8').replace('//', '/') data['PATH'] = path.replace('//', '/')
return mw.getJson(data) return mw.getJson(data)

@ -15,6 +15,8 @@ import psutil
from flask import request from flask import request
# request.packages.urllib3.disable_warnings()
class site_api: class site_api:
siteName = None # 网站名称 siteName = None # 网站名称
@ -51,9 +53,9 @@ class site_api:
##### ----- start ----- ### ##### ----- start ----- ###
def listApi(self): def listApi(self):
limit = request.form.get('limit', '').encode('utf-8') limit = request.form.get('limit', '10')
p = request.form.get('p', '').encode('utf-8') p = request.form.get('p', '1')
type_id = request.form.get('type_id', '').encode('utf-8') type_id = request.form.get('type_id', '')
start = (int(p) - 1) * (int(limit)) start = (int(p) - 1) * (int(limit))
@ -82,7 +84,7 @@ class site_api:
return mw.getJson(_ret) return mw.getJson(_ret)
def setDefaultSiteApi(self): def setDefaultSiteApi(self):
name = request.form.get('name', '').encode('utf-8') name = request.form.get('name', '')
import time import time
# 清理旧的 # 清理旧的
defaultSite = mw.readFile('data/defaultSite.pl') defaultSite = mw.readFile('data/defaultSite.pl')
@ -117,15 +119,15 @@ class site_api:
return mw.getJson(data) return mw.getJson(data)
def setPsApi(self): def setPsApi(self):
mid = request.form.get('id', '').encode('utf-8') mid = request.form.get('id', '')
ps = request.form.get('ps', '').encode('utf-8') ps = request.form.get('ps', '')
if mw.M('sites').where("id=?", (mid,)).setField('ps', ps): if mw.M('sites').where("id=?", (mid,)).setField('ps', ps):
return mw.returnJson(True, '修改成功!') return mw.returnJson(True, '修改成功!')
return mw.returnJson(False, '修改失败!') return mw.returnJson(False, '修改失败!')
def stopApi(self): def stopApi(self):
mid = request.form.get('id', '').encode('utf-8') mid = request.form.get('id', '')
name = request.form.get('name', '').encode('utf-8') name = request.form.get('name', '')
path = self.setupPath + '/stop' path = self.setupPath + '/stop'
if not os.path.exists(path): if not os.path.exists(path):
@ -158,8 +160,8 @@ class site_api:
return mw.returnJson(True, '站点已停用!') return mw.returnJson(True, '站点已停用!')
def startApi(self): def startApi(self):
mid = request.form.get('id', '').encode('utf-8') mid = request.form.get('id', '')
name = request.form.get('name', '').encode('utf-8') name = request.form.get('name', '')
path = self.setupPath + '/stop' path = self.setupPath + '/stop'
sitePath = mw.M('sites').where("id=?", (mid,)).getField('path') sitePath = mw.M('sites').where("id=?", (mid,)).getField('path')
@ -177,9 +179,9 @@ class site_api:
return mw.returnJson(True, '站点已启用!') return mw.returnJson(True, '站点已启用!')
def getBackupApi(self): def getBackupApi(self):
limit = request.form.get('limit', '').encode('utf-8') limit = request.form.get('limit', '')
p = request.form.get('p', '').encode('utf-8') p = request.form.get('p', '')
mid = request.form.get('search', '').encode('utf-8') mid = request.form.get('search', '')
find = mw.M('sites').where("id=?", (mid,)).field( find = mw.M('sites').where("id=?", (mid,)).field(
"id,name,path,status,ps,addtime,edate").find() "id,name,path,status,ps,addtime,edate").find()
@ -201,7 +203,7 @@ class site_api:
return mw.getJson(_ret) return mw.getJson(_ret)
def toBackupApi(self): def toBackupApi(self):
mid = request.form.get('id', '').encode('utf-8') mid = request.form.get('id', '')
find = mw.M('sites').where( find = mw.M('sites').where(
"id=?", (mid,)).field('name,path,id').find() "id=?", (mid,)).field('name,path,id').find()
fileName = find['name'] + '_' + \ fileName = find['name'] + '_' + \
@ -228,7 +230,7 @@ class site_api:
return mw.returnJson(True, '备份成功!') return mw.returnJson(True, '备份成功!')
def delBackupApi(self): def delBackupApi(self):
mid = request.form.get('id', '').encode('utf-8') mid = request.form.get('id', '')
filename = mw.M('backup').where( filename = mw.M('backup').where(
"id=?", (mid,)).getField('filename') "id=?", (mid,)).getField('filename')
if os.path.exists(filename): if os.path.exists(filename):
@ -243,8 +245,8 @@ class site_api:
return self.getPhpVersion() return self.getPhpVersion()
def setPhpVersionApi(self): def setPhpVersionApi(self):
siteName = request.form.get('siteName', '').encode('utf-8') siteName = request.form.get('siteName', '')
version = request.form.get('version', '').encode('utf-8') version = request.form.get('version', '')
# nginx # nginx
file = self.getHostConf(siteName) file = self.getHostConf(siteName)
@ -261,12 +263,12 @@ class site_api:
return mw.returnJson(True, msg) return mw.returnJson(True, msg)
def getDomainApi(self): def getDomainApi(self):
pid = request.form.get('pid', '').encode('utf-8') pid = request.form.get('pid', '')
return self.getDomain(pid) return self.getDomain(pid)
# 获取站点所有域名 # 获取站点所有域名
def getSiteDomainsApi(self): def getSiteDomainsApi(self):
pid = request.form.get('id', '').encode('utf-8') pid = request.form.get('id', '')
data = {} data = {}
domains = mw.M('domain').where( domains = mw.M('domain').where(
@ -287,7 +289,7 @@ class site_api:
return mw.returnJson(True, 'OK', data) return mw.returnJson(True, 'OK', data)
def getDirBindingApi(self): def getDirBindingApi(self):
mid = request.form.get('id', '').encode('utf-8') mid = request.form.get('id', '')
path = mw.M('sites').where('id=?', (mid,)).getField('path') path = mw.M('sites').where('id=?', (mid,)).getField('path')
if not os.path.exists(path): if not os.path.exists(path):
@ -323,7 +325,7 @@ class site_api:
return mw.returnJson(True, 'OK', data) return mw.returnJson(True, 'OK', data)
def getDirUserIniApi(self): def getDirUserIniApi(self):
mid = request.form.get('id', '').encode('utf-8') mid = request.form.get('id', '')
path = mw.M('sites').where('id=?', (mid,)).getField('path') path = mw.M('sites').where('id=?', (mid,)).getField('path')
name = mw.M('sites').where("id=?", (mid,)).getField('name') name = mw.M('sites').where("id=?", (mid,)).getField('name')
@ -338,7 +340,7 @@ class site_api:
return mw.returnJson(True, 'OK', data) return mw.returnJson(True, 'OK', data)
def setDirUserIniApi(self): def setDirUserIniApi(self):
path = request.form.get('path', '').encode('utf-8') path = request.form.get('path', '')
filename = path + '/.user.ini' filename = path + '/.user.ini'
self.delUserInI(path) self.delUserInI(path)
if os.path.exists(filename): if os.path.exists(filename):
@ -350,7 +352,7 @@ class site_api:
return mw.returnJson(True, '已打开防跨站设置!') return mw.returnJson(True, '已打开防跨站设置!')
def logsOpenApi(self): def logsOpenApi(self):
mid = request.form.get('id', '').encode('utf-8') mid = request.form.get('id', '')
name = mw.M('sites').where("id=?", (mid,)).getField('name') name = mw.M('sites').where("id=?", (mid,)).getField('name')
# NGINX # NGINX
@ -387,7 +389,7 @@ class site_api:
return mw.returnJson(True, 'OK', []) return mw.returnJson(True, 'OK', [])
def getSslApi(self): def getSslApi(self):
siteName = request.form.get('siteName', '').encode('utf-8') siteName = request.form.get('siteName', '')
path = self.sslDir + siteName path = self.sslDir + siteName
csrpath = path + "/fullchain.pem" # 生成证书路径 csrpath = path + "/fullchain.pem" # 生成证书路径
@ -414,9 +416,9 @@ class site_api:
return mw.returnJson(True, 'OK', data) return mw.returnJson(True, 'OK', data)
def setSslApi(self): def setSslApi(self):
siteName = request.form.get('siteName', '').encode('utf-8') siteName = request.form.get('siteName', '')
key = request.form.get('key', '').encode('utf-8') key = request.form.get('key', '')
csr = request.form.get('csr', '').encode('utf-8') csr = request.form.get('csr', '')
path = self.sslDir + siteName path = self.sslDir + siteName
if not os.path.exists(path): if not os.path.exists(path):
@ -471,8 +473,8 @@ class site_api:
return mw.returnJson(True, '证书已保存!') return mw.returnJson(True, '证书已保存!')
def setCertToSiteApi(self): def setCertToSiteApi(self):
certName = request.form.get('certName', '').encode('utf-8') certName = request.form.get('certName', '')
siteName = request.form.get('siteName', '').encode('utf-8') siteName = request.form.get('siteName', '')
try: try:
path = self.sslDir + siteName path = self.sslDir + siteName
if not os.path.exists(path): if not os.path.exists(path):
@ -489,7 +491,7 @@ class site_api:
return mw.returnJson(False, '设置错误,' + str(ex)) return mw.returnJson(False, '设置错误,' + str(ex))
def removeCertApi(self): def removeCertApi(self):
certName = request.form.get('certName', '').encode('utf-8') certName = request.form.get('certName', '')
try: try:
path = self.sslDir + certName path = self.sslDir + certName
if not os.path.exists(path): if not os.path.exists(path):
@ -500,7 +502,7 @@ class site_api:
return mw.returnJson(False, '删除失败!') return mw.returnJson(False, '删除失败!')
def closeSslConfApi(self): def closeSslConfApi(self):
siteName = request.form.get('siteName', '').encode('utf-8') siteName = request.form.get('siteName', '')
file = self.getHostConf(siteName) file = self.getHostConf(siteName)
conf = mw.readFile(file) conf = mw.readFile(file)
@ -548,12 +550,12 @@ class site_api:
return mw.returnJson(True, 'SSL已关闭!') return mw.returnJson(True, 'SSL已关闭!')
def createLetApi(self): def createLetApi(self):
siteName = request.form.get('siteName', '').encode('utf-8') siteName = request.form.get('siteName', '')
updateOf = request.form.get('updateOf', '') updateOf = request.form.get('updateOf', '')
domains = request.form.get('domains', '').encode('utf-8') domains = request.form.get('domains', '')
force = request.form.get('force', '').encode('utf-8') force = request.form.get('force', '')
renew = request.form.get('renew', '').encode('utf-8') renew = request.form.get('renew', '')
email_args = request.form.get('email', '').encode('utf-8') email_args = request.form.get('email', '')
domains = json.loads(domains) domains = json.loads(domains)
email = mw.M('users').getField('email') email = mw.M('users').getField('email')
@ -693,7 +695,7 @@ class site_api:
return mw.returnJson(True, 'OK', result) return mw.returnJson(True, 'OK', result)
def httpToHttpsApi(self): def httpToHttpsApi(self):
siteName = request.form.get('siteName', '').encode('utf-8') siteName = request.form.get('siteName', '')
file = self.getHostConf(siteName) file = self.getHostConf(siteName)
conf = mw.readFile(file) conf = mw.readFile(file)
if conf: if conf:
@ -712,7 +714,7 @@ class site_api:
return mw.returnJson(True, '设置成功!证书也要设置好哟!') return mw.returnJson(True, '设置成功!证书也要设置好哟!')
def closeToHttpsApi(self): def closeToHttpsApi(self):
siteName = request.form.get('siteName', '').encode('utf-8') siteName = request.form.get('siteName', '')
file = self.getHostConf(siteName) file = self.getHostConf(siteName)
conf = mw.readFile(file) conf = mw.readFile(file)
if conf: if conf:
@ -726,65 +728,65 @@ class site_api:
return mw.returnJson(True, '关闭HTTPS跳转成功!') return mw.returnJson(True, '关闭HTTPS跳转成功!')
def getIndexApi(self): def getIndexApi(self):
sid = request.form.get('id', '').encode('utf-8') sid = request.form.get('id', '')
data = {} data = {}
index = self.getIndex(sid) index = self.getIndex(sid)
data['index'] = index data['index'] = index
return mw.getJson(data) return mw.getJson(data)
def setIndexApi(self): def setIndexApi(self):
sid = request.form.get('id', '').encode('utf-8') sid = request.form.get('id', '')
index = request.form.get('index', '').encode('utf-8') index = request.form.get('index', '')
return self.setIndex(sid, index) return self.setIndex(sid, index)
def getLimitNetApi(self): def getLimitNetApi(self):
sid = request.form.get('id', '').encode('utf-8') sid = request.form.get('id', '')
return self.getLimitNet(sid) return self.getLimitNet(sid)
def saveLimitNetApi(self): def saveLimitNetApi(self):
sid = request.form.get('id', '').encode('utf-8') sid = request.form.get('id', '')
perserver = request.form.get('perserver', '').encode('utf-8') perserver = request.form.get('perserver', '')
perip = request.form.get('perip', '').encode('utf-8') perip = request.form.get('perip', '')
limit_rate = request.form.get('limit_rate', '').encode('utf-8') limit_rate = request.form.get('limit_rate', '')
return self.saveLimitNet(sid, perserver, perip, limit_rate) return self.saveLimitNet(sid, perserver, perip, limit_rate)
def closeLimitNetApi(self): def closeLimitNetApi(self):
sid = request.form.get('id', '').encode('utf-8') sid = request.form.get('id', '')
return self.closeLimitNet(sid) return self.closeLimitNet(sid)
def getSecurityApi(self): def getSecurityApi(self):
sid = request.form.get('id', '').encode('utf-8') sid = request.form.get('id', '')
name = request.form.get('name', '').encode('utf-8') name = request.form.get('name', '')
return self.getSecurity(sid, name) return self.getSecurity(sid, name)
def setSecurityApi(self): def setSecurityApi(self):
fix = request.form.get('fix', '').encode('utf-8') fix = request.form.get('fix', '')
domains = request.form.get('domains', '').encode('utf-8') domains = request.form.get('domains', '')
status = request.form.get('status', '').encode('utf-8') status = request.form.get('status', '')
name = request.form.get('name', '').encode('utf-8') name = request.form.get('name', '')
sid = request.form.get('id', '').encode('utf-8') sid = request.form.get('id', '')
return self.setSecurity(sid, name, fix, domains, status) return self.setSecurity(sid, name, fix, domains, status)
def getLogsApi(self): def getLogsApi(self):
siteName = request.form.get('siteName', '').encode('utf-8') siteName = request.form.get('siteName', '')
return self.getLogs(siteName) return self.getLogs(siteName)
def getSitePhpVersionApi(self): def getSitePhpVersionApi(self):
siteName = request.form.get('siteName', '').encode('utf-8') siteName = request.form.get('siteName', '')
return self.getSitePhpVersion(siteName) return self.getSitePhpVersion(siteName)
def getHostConfApi(self): def getHostConfApi(self):
siteName = request.form.get('siteName', '').encode('utf-8') siteName = request.form.get('siteName', '')
host = self.getHostConf(siteName) host = self.getHostConf(siteName)
return mw.getJson({'host': host}) return mw.getJson({'host': host})
def getRewriteConfApi(self): def getRewriteConfApi(self):
siteName = request.form.get('siteName', '').encode('utf-8') siteName = request.form.get('siteName', '')
rewrite = self.getRewriteConf(siteName) rewrite = self.getRewriteConf(siteName)
return mw.getJson({'rewrite': rewrite}) return mw.getJson({'rewrite': rewrite})
def getRewriteTplApi(self): def getRewriteTplApi(self):
tplname = request.form.get('tplname', '').encode('utf-8') tplname = request.form.get('tplname', '')
file = mw.getRunDir() + '/rewrite/nginx/' + tplname + '.conf' file = mw.getRunDir() + '/rewrite/nginx/' + tplname + '.conf'
if not os.path.exists(file): if not os.path.exists(file):
return mw.returnJson(False, '模版不存在!') return mw.returnJson(False, '模版不存在!')
@ -800,16 +802,16 @@ class site_api:
return mw.getJson(data) return mw.getJson(data)
def setEndDateApi(self): def setEndDateApi(self):
sid = request.form.get('id', '').encode('utf-8') sid = request.form.get('id', '')
edate = request.form.get('edate', '').encode('utf-8') edate = request.form.get('edate', '')
return self.setEndDate(sid, edate) return self.setEndDate(sid, edate)
def addApi(self): def addApi(self):
webname = request.form.get('webinfo', '').encode('utf-8') webname = request.form.get('webinfo', '')
ps = request.form.get('ps', '').encode('utf-8') ps = request.form.get('ps', '')
path = request.form.get('path', '').encode('utf-8') path = request.form.get('path', '')
version = request.form.get('version', '').encode('utf-8') version = request.form.get('version', '')
port = request.form.get('port', '').encode('utf-8') port = request.form.get('port', '').decode('utf-8')
return self.add(webname, port, ps, path, version) return self.add(webname, port, ps, path, version)
def addDomainApi(self): def addDomainApi(self):
@ -817,8 +819,8 @@ class site_api:
if isError != True: if isError != True:
return mw.returnJson(False, 'ERROR: 检测到配置文件有错误,请先排除后再操作<br><br><a style="color:red;">' + isError.replace("\n", '<br>') + '</a>') return mw.returnJson(False, 'ERROR: 检测到配置文件有错误,请先排除后再操作<br><br><a style="color:red;">' + isError.replace("\n", '<br>') + '</a>')
domain = request.form.get('domain', '').encode('utf-8') domain = request.form.get('domain', '')
webname = request.form.get('webname', '').encode('utf-8') webname = request.form.get('webname', '')
pid = request.form.get('id', '').encode('utf-8') pid = request.form.get('id', '').encode('utf-8')
if len(domain) < 3: if len(domain) < 3:
return mw.returnJson(False, '域名不能为空!') return mw.returnJson(False, '域名不能为空!')
@ -864,9 +866,9 @@ class site_api:
return mw.returnJson(True, '域名添加成功!') return mw.returnJson(True, '域名添加成功!')
def addDirBindApi(self): def addDirBindApi(self):
pid = request.form.get('id', '').encode('utf-8') pid = request.form.get('id', '')
domain = request.form.get('domain', '').encode('utf-8') domain = request.form.get('domain', '')
dirName = request.form.get('dirName', '').encode('utf-8') dirName = request.form.get('dirName', '')
tmp = domain.split(':') tmp = domain.split(':')
domain = tmp[0] domain = tmp[0]
port = '80' port = '80'
@ -926,7 +928,7 @@ class site_api:
return mw.returnJson(True, '添加成功!') return mw.returnJson(True, '添加成功!')
def delDirBindApi(self): def delDirBindApi(self):
mid = request.form.get('id', '').encode('utf-8') mid = request.form.get('id', '')
binding = mw.M('binding').where( binding = mw.M('binding').where(
"id=?", (mid,)).field('id,pid,domain,path').find() "id=?", (mid,)).field('id,pid,domain,path').find()
siteName = mw.M('sites').where( siteName = mw.M('sites').where(
@ -954,8 +956,8 @@ class site_api:
# 取子目录Rewrite # 取子目录Rewrite
def getDirBindRewriteApi(self): def getDirBindRewriteApi(self):
mid = request.form.get('id', '').encode('utf-8') mid = request.form.get('id', '')
add = request.form.get('add', '0').encode('utf-8') add = request.form.get('add', '0')
find = mw.M('binding').where( find = mw.M('binding').where(
"id=?", (mid,)).field('id,pid,domain,path').find() "id=?", (mid,)).field('id,pid,domain,path').find()
site = mw.M('sites').where( site = mw.M('sites').where(
@ -990,8 +992,8 @@ class site_api:
# 修改物理路径 # 修改物理路径
def setPathApi(self): def setPathApi(self):
mid = request.form.get('id', '').encode('utf-8') mid = request.form.get('id', '')
path = request.form.get('path', '').encode('utf-8') path = request.form.get('path', '')
path = self.getPath(path) path = self.getPath(path)
if path == "" or mid == '0': if path == "" or mid == '0':
@ -1028,8 +1030,8 @@ class site_api:
# 设置当前站点运行目录 # 设置当前站点运行目录
def setSiteRunPathApi(self): def setSiteRunPathApi(self):
mid = request.form.get('id', '').encode('utf-8') mid = request.form.get('id', '')
runPath = request.form.get('runPath', '').encode('utf-8') runPath = request.form.get('runPath', '')
siteName = mw.M('sites').where('id=?', (mid,)).getField('name') siteName = mw.M('sites').where('id=?', (mid,)).getField('name')
sitePath = mw.M('sites').where('id=?', (mid,)).getField('path') sitePath = mw.M('sites').where('id=?', (mid,)).getField('path')
@ -1051,9 +1053,9 @@ class site_api:
# 设置目录加密 # 设置目录加密
def setHasPwdApi(self): def setHasPwdApi(self):
username = request.form.get('username', '').encode('utf-8') username = request.form.get('username', '')
password = request.form.get('password', '').encode('utf-8') password = request.form.get('password', '')
siteName = request.form.get('siteName', '').encode('utf-8') siteName = request.form.get('siteName', '')
mid = request.form.get('id', '') mid = request.form.get('id', '')
if len(username.strip()) == 0 or len(password.strip()) == 0: if len(username.strip()) == 0 or len(password.strip()) == 0:
@ -1098,7 +1100,7 @@ class site_api:
# 取消目录加密 # 取消目录加密
def closeHasPwdApi(self): def closeHasPwdApi(self):
siteName = request.form.get('siteName', '').encode('utf-8') siteName = request.form.get('siteName', '')
mid = request.form.get('id', '') mid = request.form.get('id', '')
if siteName == '': if siteName == '':
siteName = mw.M('sites').where('id=?', (mid,)).getField('name') siteName = mw.M('sites').where('id=?', (mid,)).getField('name')
@ -1120,9 +1122,9 @@ class site_api:
return mw.returnJson(True, '设置成功!') return mw.returnJson(True, '设置成功!')
def delDomainApi(self): def delDomainApi(self):
domain = request.form.get('domain', '').encode('utf-8') domain = request.form.get('domain', '')
webname = request.form.get('webname', '').encode('utf-8') webname = request.form.get('webname', '')
port = request.form.get('port', '').encode('utf-8') port = request.form.get('port', '')
pid = request.form.get('id', '') pid = request.form.get('id', '')
find = mw.M('domain').where("pid=? AND name=?", find = mw.M('domain').where("pid=? AND name=?",
@ -1160,13 +1162,13 @@ class site_api:
return mw.returnJson(True, '站点删除成功!') return mw.returnJson(True, '站点删除成功!')
def deleteApi(self): def deleteApi(self):
sid = request.form.get('id', '').encode('utf-8') sid = request.form.get('id', '')
webname = request.form.get('webname', '').encode('utf-8') webname = request.form.get('webname', '')
path = request.form.get('path', '0').encode('utf-8') path = request.form.get('path', '0')
return self.delete(sid, webname, path) return self.delete(sid, webname, path)
def getProxyListApi(self): def getProxyListApi(self):
siteName = request.form.get('siteName', '').encode('utf-8') siteName = request.form.get('siteName', '')
conf_path = self.getHostConf(siteName) conf_path = self.getHostConf(siteName)
old_conf = mw.readFile(conf_path) old_conf = mw.readFile(conf_path)
rep = "(#PROXY-START(\n|.)+#PROXY-END)" rep = "(#PROXY-START(\n|.)+#PROXY-END)"
@ -1213,7 +1215,7 @@ class site_api:
return mw.getJson(data) return mw.getJson(data)
def getSiteDocApi(self): def getSiteDocApi(self):
stype = request.form.get('type', '0').strip().encode('utf-8') stype = request.form.get('type', '0').strip()
vlist = [] vlist = []
vlist.append('') vlist.append('')
vlist.append(mw.getServerDir() + vlist.append(mw.getServerDir() +
@ -1227,7 +1229,7 @@ class site_api:
return mw.returnJson(True, 'ok', data) return mw.returnJson(True, 'ok', data)
def addSiteTypeApi(self): def addSiteTypeApi(self):
name = request.form.get('name', '').strip().encode('utf-8') name = request.form.get('name', '').strip()
if not name: if not name:
return mw.returnJson(False, "分类名称不能为空") return mw.returnJson(False, "分类名称不能为空")
if len(name) > 18: if len(name) > 18:
@ -1240,7 +1242,7 @@ class site_api:
return mw.returnJson(True, '添加成功!') return mw.returnJson(True, '添加成功!')
def removeSiteTypeApi(self): def removeSiteTypeApi(self):
mid = request.form.get('id', '').encode('utf-8') mid = request.form.get('id', '')
if mw.M('site_types').where('id=?', (mid,)).count() == 0: if mw.M('site_types').where('id=?', (mid,)).count() == 0:
return mw.returnJson(False, "指定分类不存在!") return mw.returnJson(False, "指定分类不存在!")
mw.M('site_types').where('id=?', (mid,)).delete() mw.M('site_types').where('id=?', (mid,)).delete()
@ -1249,8 +1251,8 @@ class site_api:
def modifySiteTypeNameApi(self): def modifySiteTypeNameApi(self):
# 修改网站分类名称 # 修改网站分类名称
name = request.form.get('name', '').strip().encode('utf-8') name = request.form.get('name', '').strip()
mid = request.form.get('id', '').encode('utf-8') mid = request.form.get('id', '')
if not name: if not name:
return mw.returnJson(False, "分类名称不能为空") return mw.returnJson(False, "分类名称不能为空")
if len(name) > 18: if len(name) > 18:
@ -1262,8 +1264,8 @@ class site_api:
def setSiteTypeApi(self): def setSiteTypeApi(self):
# 设置指定站点的分类 # 设置指定站点的分类
site_ids = request.form.get('site_ids', '').encode('utf-8') site_ids = request.form.get('site_ids', '')
mid = request.form.get('id', '').encode('utf-8') mid = request.form.get('id', '')
site_ids = json.loads(site_ids) site_ids = json.loads(site_ids)
for sid in site_ids: for sid in site_ids:
print(mw.M('sites').where('id=?', (sid,)).setField('type_id', mid)) print(mw.M('sites').where('id=?', (sid,)).setField('type_id', mid))
@ -1667,7 +1669,6 @@ location /{
mw.writeFile(rewrite_file, rewrite_content) mw.writeFile(rewrite_file, rewrite_content)
def add(self, webname, port, ps, path, version): def add(self, webname, port, ps, path, version):
siteMenu = json.loads(webname) siteMenu = json.loads(webname)
self.siteName = self.toPunycode( self.siteName = self.toPunycode(
siteMenu['domain'].strip().split(':')[0]).strip() siteMenu['domain'].strip().split(':')[0]).strip()

@ -24,7 +24,7 @@ class task_api:
def listApi(self): def listApi(self):
p = request.form.get('p', '1').encode('utf-8') p = request.form.get('p', '1')
limit = request.form.get('limit', '10').strip() limit = request.form.get('limit', '10').strip()
search = request.form.get('search', '').strip() search = request.form.get('search', '').strip()

Loading…
Cancel
Save