mirror of
https://github.com/midoks/mdserver-web.git
synced 2026-10-10 00:59:26 +08:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
44c6a4ffe3 | ||
|
|
1ff071a59f | ||
|
|
6ae756d5ea | ||
|
|
744f1eb524 | ||
|
|
c8494ddcb4 | ||
|
|
9633a54643 | ||
|
|
7e64e37ca2 | ||
|
|
14808a44e5 | ||
|
|
289c7765d4 | ||
|
|
37032d935f | ||
|
|
5378df1cf3 |
@@ -11,4 +11,4 @@ try:
|
||||
HOST = '0.0.0.0'
|
||||
socketio.run(app, host=HOST, port=PORT)
|
||||
except Exception as ex:
|
||||
print ex
|
||||
print(ex)
|
||||
|
||||
@@ -46,8 +46,8 @@ def initDB():
|
||||
for index in range(len(csql_list)):
|
||||
sql.execute(csql_list[index], ())
|
||||
|
||||
except Exception, ex:
|
||||
print str(ex)
|
||||
except Exception as ex:
|
||||
print(str(ex))
|
||||
|
||||
|
||||
def initInitD():
|
||||
|
||||
@@ -278,7 +278,7 @@ class config_api:
|
||||
if len(cert_ca) > 100 and len(private_key) > 100:
|
||||
mw.writeFile('ssl/certificate.pem', cert_ca)
|
||||
mw.writeFile('ssl/privateKey.pem', private_key)
|
||||
print cert_ca, private_key
|
||||
print(cert_ca, private_key)
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
@@ -274,7 +274,7 @@ class crontab_api:
|
||||
|
||||
# 取数据列表
|
||||
def getDataListApi(self):
|
||||
stype = request.form.get('type', '').encode('utf-8')
|
||||
stype = request.form.get('type', '')
|
||||
if stype == 'databases':
|
||||
db_list = {}
|
||||
db_list['orderOpt'] = []
|
||||
|
||||
+8
-8
@@ -26,7 +26,7 @@ class Sql():
|
||||
try:
|
||||
if self.__DB_CONN == None:
|
||||
self.__DB_CONN = sqlite3.connect(self.__DB_FILE)
|
||||
except Exception, ex:
|
||||
except Exception as ex:
|
||||
return "error: " + str(ex)
|
||||
|
||||
def dbfile(self, name):
|
||||
@@ -96,7 +96,7 @@ class Sql():
|
||||
del(tmp)
|
||||
self.__close()
|
||||
return data
|
||||
except Exception, ex:
|
||||
except Exception as ex:
|
||||
return "error: " + str(ex)
|
||||
|
||||
def getField(self, keyName):
|
||||
@@ -142,7 +142,7 @@ class Sql():
|
||||
self.__close()
|
||||
self.__DB_CONN.commit()
|
||||
return id
|
||||
except Exception, ex:
|
||||
except Exception as ex:
|
||||
return "error: " + str(ex)
|
||||
|
||||
def checkInput(self, data):
|
||||
@@ -176,7 +176,7 @@ class Sql():
|
||||
"(" + keys + ") " + "VALUES(" + values + ")"
|
||||
result = self.__DB_CONN.execute(sql, param)
|
||||
return True
|
||||
except Exception, ex:
|
||||
except Exception as ex:
|
||||
return "error: " + str(ex)
|
||||
|
||||
def commit(self):
|
||||
@@ -206,7 +206,7 @@ class Sql():
|
||||
self.__close()
|
||||
self.__DB_CONN.commit()
|
||||
return result.rowcount
|
||||
except Exception, ex:
|
||||
except Exception as ex:
|
||||
return "error: " + str(ex)
|
||||
|
||||
def delete(self, id=None):
|
||||
@@ -221,7 +221,7 @@ class Sql():
|
||||
self.__close()
|
||||
self.__DB_CONN.commit()
|
||||
return result.rowcount
|
||||
except Exception, ex:
|
||||
except Exception as ex:
|
||||
return "error: " + str(ex)
|
||||
|
||||
def execute(self, sql, param):
|
||||
@@ -232,7 +232,7 @@ class Sql():
|
||||
result = self.__DB_CONN.execute(sql, param)
|
||||
self.__DB_CONN.commit()
|
||||
return result.rowcount
|
||||
except Exception, ex:
|
||||
except Exception as ex:
|
||||
return "error: " + str(ex)
|
||||
|
||||
def query(self, sql, param):
|
||||
@@ -243,7 +243,7 @@ class Sql():
|
||||
# 将元组转换成列表
|
||||
data = map(list, result)
|
||||
return data
|
||||
except Exception, ex:
|
||||
except Exception as ex:
|
||||
return "error: " + str(ex)
|
||||
|
||||
def create(self, name):
|
||||
|
||||
+59
-57
@@ -25,11 +25,11 @@ class files_api:
|
||||
|
||||
##### ----- start ----- ###
|
||||
def getBodyApi(self):
|
||||
path = request.form.get('path', '').encode('utf-8')
|
||||
path = request.form.get('path', '')
|
||||
return self.getBody(path)
|
||||
|
||||
def getLastBodyApi(self):
|
||||
path = request.form.get('path', '').encode('utf-8')
|
||||
path = request.form.get('path', '')
|
||||
line = request.form.get('line', '100')
|
||||
|
||||
if not os.path.exists(path):
|
||||
@@ -42,30 +42,30 @@ class files_api:
|
||||
return mw.returnJson(False, u'无法正确读取文件!' + str(ex))
|
||||
|
||||
def saveBodyApi(self):
|
||||
path = request.form.get('path', '').encode('utf-8')
|
||||
data = request.form.get('data', '').encode('utf-8')
|
||||
encoding = request.form.get('encoding', '').encode('utf-8')
|
||||
path = request.form.get('path', '')
|
||||
data = request.form.get('data', '')
|
||||
encoding = request.form.get('encoding', '')
|
||||
return self.saveBody(path, data, encoding)
|
||||
|
||||
def downloadApi(self):
|
||||
filename = request.args.get('filename', '').encode('utf-8')
|
||||
filename = request.args.get('filename', '')
|
||||
if not os.path.exists(filename):
|
||||
return ''
|
||||
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
|
||||
|
||||
def zipApi(self):
|
||||
sfile = request.form.get('sfile', '').encode('utf-8')
|
||||
dfile = request.form.get('dfile', '').encode('utf-8')
|
||||
stype = request.form.get('type', '').encode('utf-8')
|
||||
path = request.form.get('path', '').encode('utf-8')
|
||||
sfile = request.form.get('sfile', '')
|
||||
dfile = request.form.get('dfile', '')
|
||||
stype = request.form.get('type', '')
|
||||
path = request.form.get('path', '')
|
||||
return self.zip(sfile, dfile, stype, path)
|
||||
|
||||
# 移动文件或目录
|
||||
def mvFileApi(self):
|
||||
sfile = request.form.get('sfile', '').encode('utf-8')
|
||||
dfile = request.form.get('dfile', '').encode('utf-8')
|
||||
sfile = request.form.get('sfile', '')
|
||||
dfile = request.form.get('dfile', '')
|
||||
if not self.checkFileName(dfile):
|
||||
return mw.returnJson(False, '文件名中不能包含特殊字符!')
|
||||
if not os.path.exists(sfile):
|
||||
@@ -84,11 +84,11 @@ class files_api:
|
||||
return mw.returnJson(False, '移动文件或目录失败!')
|
||||
|
||||
def deleteApi(self):
|
||||
path = request.form.get('path', '').encode('utf-8')
|
||||
path = request.form.get('path', '')
|
||||
return self.delete(path)
|
||||
|
||||
def fileAccessApi(self):
|
||||
filename = request.form.get('filename', '').encode('utf-8')
|
||||
filename = request.form.get('filename', '')
|
||||
data = self.getAccess(filename)
|
||||
return mw.getJson(data)
|
||||
|
||||
@@ -97,8 +97,8 @@ class files_api:
|
||||
if mw.isAppleSystem():
|
||||
return mw.returnJson(True, '开发机不设置!')
|
||||
|
||||
filename = request.form.get('filename', '').encode('utf-8')
|
||||
user = request.form.get('user', '').encode('utf-8')
|
||||
filename = request.form.get('filename', '')
|
||||
user = request.form.get('user', '')
|
||||
access = request.form.get('access', '755')
|
||||
sall = '-R'
|
||||
try:
|
||||
@@ -119,12 +119,13 @@ class files_api:
|
||||
return mw.returnJson(False, '设置失败!')
|
||||
|
||||
def getDirSizeApi(self):
|
||||
path = request.form.get('path', '').encode('utf-8')
|
||||
path = request.form.get('path', '')
|
||||
tmp = self.getDirSize(path)
|
||||
print(tmp)
|
||||
return mw.returnJson(True, tmp[0].split()[0])
|
||||
|
||||
def getDirApi(self):
|
||||
path = request.form.get('path', '').encode('utf-8')
|
||||
path = request.form.get('path', '')
|
||||
if not os.path.exists(path):
|
||||
path = mw.getRootDir() + "/wwwroot"
|
||||
search = request.args.get('search', '').strip().lower()
|
||||
@@ -137,7 +138,7 @@ class files_api:
|
||||
return self.getDir(path, int(page), int(row), search)
|
||||
|
||||
def createFileApi(self):
|
||||
file = request.form.get('path', '').encode('utf-8')
|
||||
file = request.form.get('path', '')
|
||||
try:
|
||||
if not self.checkFileName(file):
|
||||
return mw.returnJson(False, '文件名中不能包含特殊字符!')
|
||||
@@ -156,7 +157,7 @@ class files_api:
|
||||
return mw.returnJson(True, '文件创建失败!')
|
||||
|
||||
def createDirApi(self):
|
||||
path = request.form.get('path', '').encode('utf-8')
|
||||
path = request.form.get('path', '')
|
||||
try:
|
||||
if not self.checkFileName(path):
|
||||
return mw.returnJson(False, '目录名中不能包含特殊字符!')
|
||||
@@ -173,9 +174,9 @@ class files_api:
|
||||
def downloadFileApi(self):
|
||||
import db
|
||||
import time
|
||||
url = request.form.get('url', '').encode('utf-8')
|
||||
path = request.form.get('path', '').encode('utf-8')
|
||||
filename = request.form.get('filename', '').encode('utf-8')
|
||||
url = request.form.get('url', '')
|
||||
path = request.form.get('path', '')
|
||||
filename = request.form.get('filename', '')
|
||||
|
||||
isTask = mw.getRootDir() + '/tmp/panelTask.pl'
|
||||
execstr = url + '|mw|' + path + '/' + filename
|
||||
@@ -186,7 +187,7 @@ class files_api:
|
||||
return mw.returnJson(True, '已将下载任务添加到队列!')
|
||||
|
||||
def removeTaskApi(self):
|
||||
mid = request.form.get('id', '').encode('utf-8')
|
||||
mid = request.form.get('id', '')
|
||||
try:
|
||||
name = mw.M('tasks').where('id=?', (mid,)).getField('name')
|
||||
status = mw.M('tasks').where('id=?', (mid,)).getField('status')
|
||||
@@ -220,14 +221,13 @@ done
|
||||
from werkzeug.utils import secure_filename
|
||||
from flask import request
|
||||
|
||||
path = request.args.get('path', '').encode('utf-8')
|
||||
path = request.args.get('path', '')
|
||||
|
||||
if not os.path.exists(path):
|
||||
os.makedirs(path)
|
||||
f = request.files['zunfile']
|
||||
filename = os.path.join(path, f.filename)
|
||||
if sys.version_info[0] == 2:
|
||||
filename = filename.encode('utf-8')
|
||||
|
||||
s_path = path
|
||||
if os.path.exists(filename):
|
||||
s_path = filename
|
||||
@@ -272,14 +272,15 @@ done
|
||||
data['dirs'].append(tmp)
|
||||
else:
|
||||
data['files'].append(tmp)
|
||||
except:
|
||||
except Exception as e:
|
||||
print(e)
|
||||
continue
|
||||
return mw.returnJson(True, 'OK', data)
|
||||
|
||||
# 回收站开关
|
||||
def recycleBinApi(self):
|
||||
c = 'data/recycle_bin.pl'
|
||||
db = request.form.get('db', '').encode('utf-8')
|
||||
db = request.form.get('db', '')
|
||||
if db != '':
|
||||
c = 'data/recycle_bin_db.pl'
|
||||
if os.path.exists(c):
|
||||
@@ -293,7 +294,7 @@ done
|
||||
|
||||
def reRecycleBinApi(self):
|
||||
rPath = self.rPath
|
||||
path = request.form.get('path', '').encode('utf-8')
|
||||
path = request.form.get('path', '')
|
||||
dFile = path.replace('_mw_', '/').split('_t_')[0]
|
||||
try:
|
||||
import shutil
|
||||
@@ -308,8 +309,8 @@ done
|
||||
|
||||
def delRecycleBinApi(self):
|
||||
rPath = self.rPath
|
||||
path = request.form.get('path', '').encode('utf-8')
|
||||
empty = request.form.get('empty', '').encode('utf-8')
|
||||
path = request.form.get('path', '')
|
||||
empty = request.form.get('empty', '')
|
||||
dFile = path.split('_t_')[0]
|
||||
|
||||
if not self.checkDir(path):
|
||||
@@ -351,7 +352,7 @@ done
|
||||
return mw.returnJson(True, '已清空回收站!')
|
||||
|
||||
def deleteDirApi(self):
|
||||
path = request.form.get('path', '').encode('utf-8')
|
||||
path = request.form.get('path', '')
|
||||
if not os.path.exists(path):
|
||||
return mw.returnJson(False, '指定文件不存在!')
|
||||
|
||||
@@ -378,10 +379,10 @@ done
|
||||
return mw.returnJson(True, tmp[0].split()[0])
|
||||
|
||||
def setBatchDataApi(self):
|
||||
path = request.form.get('path', '').encode('utf-8')
|
||||
stype = request.form.get('type', '').encode('utf-8')
|
||||
access = request.form.get('access', '').encode('utf-8')
|
||||
user = request.form.get('user', '').encode('utf-8')
|
||||
path = request.form.get('path', '')
|
||||
stype = request.form.get('type', '')
|
||||
access = request.form.get('access', '')
|
||||
user = request.form.get('user', '')
|
||||
data = request.form.get('data')
|
||||
if stype == '1' or stype == '2':
|
||||
session['selected'] = {
|
||||
@@ -395,7 +396,6 @@ done
|
||||
elif stype == '3':
|
||||
for key in json.loads(data):
|
||||
try:
|
||||
key = key.encode('utf-8')
|
||||
filename = path + '/' + key
|
||||
if not self.checkDir(filename):
|
||||
return mw.returnJson(False, 'FILE_DANGER')
|
||||
@@ -414,7 +414,7 @@ done
|
||||
i = 0
|
||||
for key in data:
|
||||
try:
|
||||
filename = path + '/' + key.encode('utf-8')
|
||||
filename = path + '/' + key
|
||||
topath = filename
|
||||
if not os.path.exists(filename):
|
||||
continue
|
||||
@@ -442,8 +442,8 @@ done
|
||||
return mw.returnJson(True, '批量删除成功!')
|
||||
|
||||
def checkExistsFilesApi(self):
|
||||
dfile = request.form.get('dfile', '').encode('utf-8')
|
||||
filename = request.form.get('filename', '').encode('utf-8')
|
||||
dfile = request.form.get('dfile', '')
|
||||
filename = request.form.get('filename', '')
|
||||
data = []
|
||||
filesx = []
|
||||
if filename == '':
|
||||
@@ -451,7 +451,7 @@ done
|
||||
else:
|
||||
filesx.append(filename)
|
||||
|
||||
print filesx
|
||||
# print(filesx)
|
||||
|
||||
for fn in filesx:
|
||||
if fn == '.':
|
||||
@@ -467,9 +467,9 @@ done
|
||||
return mw.returnJson(True, 'ok', data)
|
||||
|
||||
def batchPasteApi(self):
|
||||
path = request.form.get('path', '').encode('utf-8')
|
||||
stype = request.form.get('type', '').encode('utf-8')
|
||||
# filename = request.form.get('filename', '').encode('utf-8')
|
||||
path = request.form.get('path', '')
|
||||
stype = request.form.get('type', '')
|
||||
# filename = request.form.get('filename', '')
|
||||
import shutil
|
||||
if not self.checkDir(path):
|
||||
return mw.returnJson(False, '请不要花样作死!')
|
||||
@@ -483,8 +483,8 @@ done
|
||||
try:
|
||||
|
||||
sfile = session['selected'][
|
||||
'path'] + '/' + key.encode('utf-8')
|
||||
dfile = path + '/' + key.encode('utf-8')
|
||||
'path'] + '/' + key
|
||||
dfile = path + '/' + key
|
||||
|
||||
if os.path.isdir(sfile):
|
||||
shutil.copytree(sfile, dfile)
|
||||
@@ -504,8 +504,8 @@ done
|
||||
mw.writeSpeed(key, i, l)
|
||||
|
||||
sfile = session['selected'][
|
||||
'path'] + '/' + key.encode('utf-8')
|
||||
dfile = path + '/' + key.encode('utf-8')
|
||||
'path'] + '/' + key
|
||||
dfile = path + '/' + key
|
||||
|
||||
shutil.move(sfile, dfile)
|
||||
except:
|
||||
@@ -520,8 +520,8 @@ done
|
||||
return mw.returnJson(True, msg)
|
||||
|
||||
def copyFileApi(self):
|
||||
sfile = request.form.get('sfile', '').encode('utf-8')
|
||||
dfile = request.form.get('dfile', '').encode('utf-8')
|
||||
sfile = request.form.get('sfile', '')
|
||||
dfile = request.form.get('dfile', '')
|
||||
|
||||
if not os.path.exists(sfile):
|
||||
return mw.returnJson(False, '指定文件不存在!')
|
||||
@@ -562,6 +562,7 @@ done
|
||||
|
||||
# 检查敏感目录
|
||||
def checkDir(self, path):
|
||||
path = str(path, encoding='utf-8')
|
||||
path = path.replace('//', '/')
|
||||
if path[-1:] == '/':
|
||||
path = path[:-1]
|
||||
@@ -806,9 +807,8 @@ done
|
||||
break
|
||||
if i < pageObj[1].SHIFT:
|
||||
continue
|
||||
|
||||
try:
|
||||
filePath = (path + '/' + filename).encode('utf8')
|
||||
filePath = path + '/' + filename
|
||||
link = ''
|
||||
if os.path.islink(filePath):
|
||||
filePath = os.readlink(filePath)
|
||||
@@ -824,8 +824,9 @@ done
|
||||
user = ''
|
||||
try:
|
||||
user = pwd.getpwuid(stat.st_uid).pw_name
|
||||
except:
|
||||
except Exception as ee:
|
||||
user = str(stat.st_uid)
|
||||
|
||||
size = str(stat.st_size)
|
||||
if os.path.isdir(filePath):
|
||||
dirnames.append(filename + ';' + size + ';' +
|
||||
@@ -834,10 +835,11 @@ done
|
||||
filenames.append(filename + ';' + size + ';' +
|
||||
mtime + ';' + accept + ';' + user + ';' + link)
|
||||
n += 1
|
||||
except:
|
||||
except Exception as e:
|
||||
print('getdir:dd.', e)
|
||||
continue
|
||||
|
||||
data['DIR'] = sorted(dirnames)
|
||||
data['FILES'] = sorted(filenames)
|
||||
data['PATH'] = path.replace('//', '/')
|
||||
|
||||
return mw.getJson(data)
|
||||
|
||||
+23
-12
@@ -10,7 +10,6 @@ import shlex
|
||||
import datetime
|
||||
import subprocess
|
||||
import re
|
||||
import hashlib
|
||||
|
||||
import db
|
||||
|
||||
@@ -35,7 +34,17 @@ def execShell(cmdstring, cwd=None, timeout=None, shell=True):
|
||||
if end_time <= datetime.datetime.now():
|
||||
raise Exception("Timeout:%s" % cmdstring)
|
||||
|
||||
return sub.communicate()
|
||||
if sys.version_info[0] == 2:
|
||||
return sub.communicate()
|
||||
|
||||
data = sub.communicate()
|
||||
# python3 fix 返回byte数据
|
||||
if isinstance(data[0], bytes):
|
||||
t1 = str(data[0], encoding='utf-8')
|
||||
|
||||
if isinstance(data[1], bytes):
|
||||
t2 = str(data[1], encoding='utf-8')
|
||||
return (t1, t2)
|
||||
|
||||
|
||||
def getRunDir():
|
||||
@@ -143,19 +152,19 @@ def getPageObject(args, result='1,2,3,4,5,8'):
|
||||
info = {}
|
||||
|
||||
info['count'] = 0
|
||||
if args.has_key('count'):
|
||||
if 'count' in args:
|
||||
info['count'] = int(args['count'])
|
||||
|
||||
info['row'] = 10
|
||||
if args.has_key('row'):
|
||||
if 'row' in args:
|
||||
info['row'] = int(args['row'])
|
||||
|
||||
info['p'] = 1
|
||||
if args.has_key('p'):
|
||||
if 'p' in args:
|
||||
info['p'] = int(args['p'])
|
||||
info['uri'] = {}
|
||||
info['return_js'] = ''
|
||||
if args.has_key('tojs'):
|
||||
if 'tojs' in args:
|
||||
info['return_js'] = args['tojs']
|
||||
|
||||
return (page.GetPage(info, result), page)
|
||||
@@ -165,9 +174,10 @@ def md5(str):
|
||||
# 生成MD5
|
||||
try:
|
||||
m = hashlib.md5()
|
||||
m.update(str)
|
||||
m.update(str.encode("utf-8"))
|
||||
return m.hexdigest()
|
||||
except:
|
||||
except Exception as ex:
|
||||
print(ex)
|
||||
return False
|
||||
|
||||
|
||||
@@ -273,7 +283,8 @@ def readFile(filename):
|
||||
fBody = fp.read()
|
||||
fp.close()
|
||||
return fBody
|
||||
except:
|
||||
except Exception as e:
|
||||
# print('readFile:', e)
|
||||
return False
|
||||
|
||||
|
||||
@@ -301,7 +312,7 @@ def writeLog(type, logMsg, args=()):
|
||||
data = (type, logMsg, mDate)
|
||||
result = sql.table('logs').add('type,log,addtime', data)
|
||||
except Exception as e:
|
||||
print e
|
||||
print(e)
|
||||
|
||||
|
||||
def writeFile(filename, str):
|
||||
@@ -529,8 +540,8 @@ def downloadFile(url, filename):
|
||||
|
||||
def downloadHook(count, blockSize, totalSize):
|
||||
speed = {'total': totalSize, 'block': blockSize, 'count': count}
|
||||
print speed
|
||||
print '%02d%%' % (100.0 * count * blockSize / totalSize)
|
||||
print(speed)
|
||||
print('%02d%%' % (100.0 * count * blockSize / totalSize))
|
||||
|
||||
|
||||
def getLocalIp():
|
||||
|
||||
+27
-23
@@ -55,7 +55,6 @@ class Page():
|
||||
self.SHIFT = self.__START_NUM - 1
|
||||
|
||||
keys = limit.split(',')
|
||||
|
||||
pages = {}
|
||||
# 起始页
|
||||
pages['1'] = self.__GetStart()
|
||||
@@ -70,14 +69,16 @@ class Page():
|
||||
|
||||
# 当前显示页与总页数
|
||||
pages['6'] = "<span class='Pnumber'>" + \
|
||||
bytes(self.__C_PAGE) + "/" + bytes(self.__COUNT_PAGE) + "</span>"
|
||||
str(self.__C_PAGE) + "/" + \
|
||||
str(self.__COUNT_PAGE) + "</span>"
|
||||
|
||||
# 本页显示开始与结束行
|
||||
pages['7'] = "<span class='Pline'>" + self.__FO + \
|
||||
bytes(self.__START_NUM) + "-" + \
|
||||
bytes(self.__END_NUM) + self.__LINE + "</span>"
|
||||
pages['7'] = "<span class='Pline'>" + str(self.__FO) + \
|
||||
str(self.__START_NUM) + "-" + \
|
||||
str(self.__END_NUM) + str(self.__LINE) + "</span>"
|
||||
# 行数
|
||||
pages['8'] = "<span class='Pcount'>" + self.__COUNT_START + \
|
||||
bytes(self.__COUNT_ROW) + self.__COUNT_END + "</span>"
|
||||
pages['8'] = "<span class='Pcount'>" + str(self.__COUNT_START) + \
|
||||
str(self.__COUNT_ROW) + str(self.__COUNT_END) + "</span>"
|
||||
|
||||
# 构造返回数据
|
||||
retuls = '<div>'
|
||||
@@ -96,10 +97,11 @@ class Page():
|
||||
else:
|
||||
if self.__RTURN_JS == "":
|
||||
endStr = "<a class='Pend' href='" + self.__URI + "p=" + \
|
||||
bytes(self.__COUNT_PAGE) + "'>" + self.__END + "</a>"
|
||||
str(self.__COUNT_PAGE) + "'>" + str(self.__END) + "</a>"
|
||||
else:
|
||||
endStr = "<a class='Pend' onclick='" + self.__RTURN_JS + \
|
||||
"(" + bytes(self.__COUNT_PAGE) + ")'>" + self.__END + "</a>"
|
||||
"(" + str(self.__COUNT_PAGE) + ")'>" + \
|
||||
str(self.__END) + "</a>"
|
||||
return endStr
|
||||
|
||||
def __GetNext(self):
|
||||
@@ -110,10 +112,11 @@ class Page():
|
||||
else:
|
||||
if self.__RTURN_JS == "":
|
||||
nextStr = "<a class='Pnext' href='" + self.__URI + "p=" + \
|
||||
bytes(self.__C_PAGE + 1) + "'>" + self.__NEXT + "</a>"
|
||||
str(self.__C_PAGE + 1) + "'>" + str(self.__NEXT) + "</a>"
|
||||
else:
|
||||
nextStr = "<a class='Pnext' onclick='" + self.__RTURN_JS + \
|
||||
"(" + bytes(self.__C_PAGE + 1) + ")'>" + self.__NEXT + "</a>"
|
||||
"(" + str(self.__C_PAGE + 1) + ")'>" + \
|
||||
str(self.__NEXT) + "</a>"
|
||||
|
||||
return nextStr
|
||||
|
||||
@@ -134,15 +137,15 @@ class Page():
|
||||
if page > 0:
|
||||
if self.__RTURN_JS == "":
|
||||
pages += "<a class='Pnum' href='" + self.__URI + \
|
||||
"p=" + bytes(page) + "'>" + bytes(page) + "</a>"
|
||||
"p=" + str(page) + "'>" + str(page) + "</a>"
|
||||
else:
|
||||
pages += "<a class='Pnum' onclick='" + self.__RTURN_JS + \
|
||||
"(" + bytes(page) + ")'>" + bytes(page) + "</a>"
|
||||
"(" + str(page) + ")'>" + str(page) + "</a>"
|
||||
|
||||
# 当前页
|
||||
if self.__C_PAGE > 0:
|
||||
pages += "<span class='Pcurrent'>" + \
|
||||
bytes(self.__C_PAGE) + "</span>"
|
||||
str(self.__C_PAGE) + "</span>"
|
||||
|
||||
# 当前页之后
|
||||
if self.__C_PAGE <= self.__LIST_NUM:
|
||||
@@ -157,10 +160,10 @@ class Page():
|
||||
break
|
||||
if self.__RTURN_JS == "":
|
||||
pages += "<a class='Pnum' href='" + self.__URI + \
|
||||
"p=" + bytes(page) + "'>" + bytes(page) + "</a>"
|
||||
"p=" + str(page) + "'>" + str(page) + "</a>"
|
||||
else:
|
||||
pages += "<a class='Pnum' onclick='" + self.__RTURN_JS + \
|
||||
"(" + bytes(page) + ")'>" + bytes(page) + "</a>"
|
||||
"(" + str(page) + ")'>" + str(page) + "</a>"
|
||||
|
||||
return pages
|
||||
|
||||
@@ -172,10 +175,11 @@ class Page():
|
||||
else:
|
||||
if self.__RTURN_JS == "":
|
||||
startStr = "<a class='Ppren' href='" + self.__URI + "p=" + \
|
||||
bytes(self.__C_PAGE - 1) + "'>" + self.__PREV + "</a>"
|
||||
str(self.__C_PAGE - 1) + "'>" + str(self.__PREV) + "</a>"
|
||||
else:
|
||||
startStr = "<a class='Ppren' onclick='" + self.__RTURN_JS + \
|
||||
"(" + bytes(self.__C_PAGE - 1) + ")'>" + self.__PREV + "</a>"
|
||||
"(" + str(self.__C_PAGE - 1) + ")'>" + \
|
||||
str(self.__PREV) + "</a>"
|
||||
return startStr
|
||||
|
||||
def __GetStart(self):
|
||||
@@ -186,10 +190,10 @@ class Page():
|
||||
else:
|
||||
if self.__RTURN_JS == "":
|
||||
startStr = "<a class='Pstart' href='" + \
|
||||
self.__URI + "p=1'>" + self.__START + "</a>"
|
||||
self.__URI + "p=1'>" + str(self.__START) + "</a>"
|
||||
else:
|
||||
startStr = "<a class='Pstart' onclick='" + \
|
||||
self.__RTURN_JS + "(1)'>" + self.__START + "</a>"
|
||||
self.__RTURN_JS + "(1)'>" + str(self.__START) + "</a>"
|
||||
return startStr
|
||||
|
||||
def __GetCpage(self, p):
|
||||
@@ -212,11 +216,11 @@ class Page():
|
||||
# 取总页数
|
||||
return int(math.ceil(self.__COUNT_ROW / float(self.ROW)))
|
||||
|
||||
def __SetUri(self, input):
|
||||
def __SetUri(self, sinput):
|
||||
# 构造URI
|
||||
uri = '?'
|
||||
for key in input:
|
||||
for key in sinput:
|
||||
if key == 'p':
|
||||
continue
|
||||
uri += key + '=' + input[key] + '&'
|
||||
uri += key + '=' + sinput[key] + '&'
|
||||
return str(uri)
|
||||
|
||||
+27
-23
@@ -8,8 +8,9 @@ import re
|
||||
import json
|
||||
|
||||
import sys
|
||||
reload(sys)
|
||||
sys.setdefaultencoding('utf8')
|
||||
|
||||
# reload(sys)
|
||||
# sys.setdefaultencoding('utf8')
|
||||
|
||||
import threading
|
||||
import multiprocessing
|
||||
@@ -61,11 +62,11 @@ class plugins_api:
|
||||
if f.strip() == '':
|
||||
return ''
|
||||
|
||||
file = self.__plugin_dir + '/' + name + '/' + f
|
||||
file = mw.getPluginDir() + '/' + name + '/' + f
|
||||
if not os.path.exists(file):
|
||||
return ''
|
||||
|
||||
c = mw.readFile(file)
|
||||
c = open(file, 'rb').read()
|
||||
return c
|
||||
|
||||
def indexListApi(self):
|
||||
@@ -166,8 +167,8 @@ class plugins_api:
|
||||
|
||||
data = mw.execShell(execstr)
|
||||
if mw.isAppleSystem():
|
||||
print execstr
|
||||
print data[0], data[1]
|
||||
print(execstr)
|
||||
print(data[0], data[1])
|
||||
return mw.returnJson(True, '卸载执行成功!')
|
||||
# if data[1] == '':
|
||||
# return mw.returnJson(True, '已将卸载成功!')
|
||||
@@ -206,8 +207,10 @@ class plugins_api:
|
||||
|
||||
data = self.run(name, func, version, args, script)
|
||||
if data[1] == '':
|
||||
return mw.returnJson(True, "OK", data[0].strip())
|
||||
return mw.returnJson(False, data[1].strip())
|
||||
r = mw.returnJson(True, "OK", data[0].strip())
|
||||
else:
|
||||
r = mw.returnJson(False, data[1].strip())
|
||||
return r
|
||||
|
||||
def callbackApi(self):
|
||||
name = request.form.get('name', '')
|
||||
@@ -284,7 +287,7 @@ class plugins_api:
|
||||
return mw.returnJson(False, '临时文件不存在,请重新上传!')
|
||||
plugin_path = mw.getPluginDir() + '/' + plugin_name
|
||||
if not os.path.exists(plugin_path):
|
||||
print mw.execShell('mkdir -p ' + plugin_path)
|
||||
print(mw.execShell('mkdir -p ' + plugin_path))
|
||||
mw.execShell("\cp -rf " + tmp_path + '/* ' + plugin_path + '/')
|
||||
mw.execShell('chmod -R 755 ' + plugin_path)
|
||||
p_info = mw.readFile(plugin_path + '/info.json')
|
||||
@@ -382,7 +385,7 @@ class plugins_api:
|
||||
t = threads[i].getResult()
|
||||
plugins_info[i]['status'] = t
|
||||
except Exception as e:
|
||||
print 'checkStatusMThreads:', str(e)
|
||||
print('checkStatusMThreads:', str(e))
|
||||
|
||||
return plugins_info
|
||||
|
||||
@@ -438,13 +441,13 @@ class plugins_api:
|
||||
else:
|
||||
checks = mw.getRootDir() + '/' + info['checks']
|
||||
|
||||
if info.has_key('path'):
|
||||
if 'path' in info:
|
||||
path = info['path']
|
||||
|
||||
if path[0:1] != '/':
|
||||
path = mw.getRootDir() + '/' + path
|
||||
|
||||
if info.has_key('coexist') and info['coexist']:
|
||||
if 'coexist' in info and info['coexist']:
|
||||
coexist = True
|
||||
|
||||
pInfo = {
|
||||
@@ -507,7 +510,7 @@ class plugins_api:
|
||||
plugins_info = []
|
||||
|
||||
if (data['pid'] == sType):
|
||||
if type(data['versions']) == list and data.has_key('coexist') and data['coexist']:
|
||||
if type(data['versions']) == list and 'coexist' in data and data['coexist']:
|
||||
tmp_data = self.makeCoexist(data)
|
||||
for index in range(len(tmp_data)):
|
||||
plugins_info.append(tmp_data[index])
|
||||
@@ -517,7 +520,7 @@ class plugins_api:
|
||||
return plugins_info
|
||||
|
||||
if sType == '0':
|
||||
if type(data['versions']) == list and data.has_key('coexist') and data['coexist']:
|
||||
if type(data['versions']) == list and 'coexist' in data and data['coexist']:
|
||||
tmp_data = self.makeCoexist(data)
|
||||
for index in range(len(tmp_data)):
|
||||
plugins_info.append(tmp_data[index])
|
||||
@@ -542,8 +545,8 @@ class plugins_api:
|
||||
tmp_data = self.makeList(data, sType)
|
||||
for index in range(len(tmp_data)):
|
||||
plugins_info.append(tmp_data[index])
|
||||
except Exception, e:
|
||||
print e
|
||||
except Exception as e:
|
||||
print(e)
|
||||
return plugins_info
|
||||
|
||||
def getAllListPage(self, sType='0', page=1, pageSize=10):
|
||||
@@ -560,8 +563,8 @@ class plugins_api:
|
||||
tmp_data = self.makeList(data, sType)
|
||||
for index in range(len(tmp_data)):
|
||||
plugins_info.append(tmp_data[index])
|
||||
except Exception, e:
|
||||
print e
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
start = (page - 1) * pageSize
|
||||
end = start + pageSize
|
||||
@@ -733,8 +736,8 @@ class plugins_api:
|
||||
tmp_data[index]['display'] = True
|
||||
plist.append(tmp_data[index])
|
||||
continue
|
||||
except Exception, e:
|
||||
print 'getIndexList:', e
|
||||
except Exception as e:
|
||||
print('getIndexList:', e)
|
||||
|
||||
# 使用gevent模式时,无法使用多进程
|
||||
# plist = self.checkStatusMProcess(plist)
|
||||
@@ -788,11 +791,12 @@ class plugins_api:
|
||||
if not os.path.exists(path):
|
||||
return ('', '')
|
||||
data = mw.execShell(py_cmd)
|
||||
# data = os.popen(py_cmd).read()
|
||||
|
||||
if mw.isAppleSystem():
|
||||
print 'run', py_cmd
|
||||
print('run', py_cmd)
|
||||
print(data)
|
||||
# print os.path.exists(py_cmd)
|
||||
|
||||
return (data[0].strip(), data[1].strip())
|
||||
|
||||
# 映射包调用
|
||||
@@ -805,6 +809,6 @@ class plugins_api:
|
||||
eval_str = "__import__('" + script + "')." + func + '(' + args + ')'
|
||||
newRet = eval(eval_str)
|
||||
if mw.isAppleSystem():
|
||||
print 'callback', eval_str
|
||||
print('callback', eval_str)
|
||||
|
||||
return (True, newRet)
|
||||
|
||||
+102
-101
@@ -15,6 +15,8 @@ import psutil
|
||||
|
||||
from flask import request
|
||||
|
||||
# request.packages.urllib3.disable_warnings()
|
||||
|
||||
|
||||
class site_api:
|
||||
siteName = None # 网站名称
|
||||
@@ -51,9 +53,9 @@ class site_api:
|
||||
|
||||
##### ----- start ----- ###
|
||||
def listApi(self):
|
||||
limit = request.form.get('limit', '').encode('utf-8')
|
||||
p = request.form.get('p', '').encode('utf-8')
|
||||
type_id = request.form.get('type_id', '').encode('utf-8')
|
||||
limit = request.form.get('limit', '10')
|
||||
p = request.form.get('p', '1')
|
||||
type_id = request.form.get('type_id', '')
|
||||
|
||||
start = (int(p) - 1) * (int(limit))
|
||||
|
||||
@@ -82,7 +84,7 @@ class site_api:
|
||||
return mw.getJson(_ret)
|
||||
|
||||
def setDefaultSiteApi(self):
|
||||
name = request.form.get('name', '').encode('utf-8')
|
||||
name = request.form.get('name', '')
|
||||
import time
|
||||
# 清理旧的
|
||||
defaultSite = mw.readFile('data/defaultSite.pl')
|
||||
@@ -117,15 +119,15 @@ class site_api:
|
||||
return mw.getJson(data)
|
||||
|
||||
def setPsApi(self):
|
||||
mid = request.form.get('id', '').encode('utf-8')
|
||||
ps = request.form.get('ps', '').encode('utf-8')
|
||||
mid = request.form.get('id', '')
|
||||
ps = request.form.get('ps', '')
|
||||
if mw.M('sites').where("id=?", (mid,)).setField('ps', ps):
|
||||
return mw.returnJson(True, '修改成功!')
|
||||
return mw.returnJson(False, '修改失败!')
|
||||
|
||||
def stopApi(self):
|
||||
mid = request.form.get('id', '').encode('utf-8')
|
||||
name = request.form.get('name', '').encode('utf-8')
|
||||
mid = request.form.get('id', '')
|
||||
name = request.form.get('name', '')
|
||||
path = self.setupPath + '/stop'
|
||||
|
||||
if not os.path.exists(path):
|
||||
@@ -158,8 +160,8 @@ class site_api:
|
||||
return mw.returnJson(True, '站点已停用!')
|
||||
|
||||
def startApi(self):
|
||||
mid = request.form.get('id', '').encode('utf-8')
|
||||
name = request.form.get('name', '').encode('utf-8')
|
||||
mid = request.form.get('id', '')
|
||||
name = request.form.get('name', '')
|
||||
path = self.setupPath + '/stop'
|
||||
sitePath = mw.M('sites').where("id=?", (mid,)).getField('path')
|
||||
|
||||
@@ -177,9 +179,9 @@ class site_api:
|
||||
return mw.returnJson(True, '站点已启用!')
|
||||
|
||||
def getBackupApi(self):
|
||||
limit = request.form.get('limit', '').encode('utf-8')
|
||||
p = request.form.get('p', '').encode('utf-8')
|
||||
mid = request.form.get('search', '').encode('utf-8')
|
||||
limit = request.form.get('limit', '')
|
||||
p = request.form.get('p', '')
|
||||
mid = request.form.get('search', '')
|
||||
|
||||
find = mw.M('sites').where("id=?", (mid,)).field(
|
||||
"id,name,path,status,ps,addtime,edate").find()
|
||||
@@ -201,7 +203,7 @@ class site_api:
|
||||
return mw.getJson(_ret)
|
||||
|
||||
def toBackupApi(self):
|
||||
mid = request.form.get('id', '').encode('utf-8')
|
||||
mid = request.form.get('id', '')
|
||||
find = mw.M('sites').where(
|
||||
"id=?", (mid,)).field('name,path,id').find()
|
||||
fileName = find['name'] + '_' + \
|
||||
@@ -228,7 +230,7 @@ class site_api:
|
||||
return mw.returnJson(True, '备份成功!')
|
||||
|
||||
def delBackupApi(self):
|
||||
mid = request.form.get('id', '').encode('utf-8')
|
||||
mid = request.form.get('id', '')
|
||||
filename = mw.M('backup').where(
|
||||
"id=?", (mid,)).getField('filename')
|
||||
if os.path.exists(filename):
|
||||
@@ -243,8 +245,8 @@ class site_api:
|
||||
return self.getPhpVersion()
|
||||
|
||||
def setPhpVersionApi(self):
|
||||
siteName = request.form.get('siteName', '').encode('utf-8')
|
||||
version = request.form.get('version', '').encode('utf-8')
|
||||
siteName = request.form.get('siteName', '')
|
||||
version = request.form.get('version', '')
|
||||
|
||||
# nginx
|
||||
file = self.getHostConf(siteName)
|
||||
@@ -261,12 +263,12 @@ class site_api:
|
||||
return mw.returnJson(True, msg)
|
||||
|
||||
def getDomainApi(self):
|
||||
pid = request.form.get('pid', '').encode('utf-8')
|
||||
pid = request.form.get('pid', '')
|
||||
return self.getDomain(pid)
|
||||
|
||||
# 获取站点所有域名
|
||||
def getSiteDomainsApi(self):
|
||||
pid = request.form.get('id', '').encode('utf-8')
|
||||
pid = request.form.get('id', '')
|
||||
|
||||
data = {}
|
||||
domains = mw.M('domain').where(
|
||||
@@ -287,7 +289,7 @@ class site_api:
|
||||
return mw.returnJson(True, 'OK', data)
|
||||
|
||||
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')
|
||||
if not os.path.exists(path):
|
||||
@@ -323,7 +325,7 @@ class site_api:
|
||||
return mw.returnJson(True, 'OK', data)
|
||||
|
||||
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')
|
||||
name = mw.M('sites').where("id=?", (mid,)).getField('name')
|
||||
@@ -338,7 +340,7 @@ class site_api:
|
||||
return mw.returnJson(True, 'OK', data)
|
||||
|
||||
def setDirUserIniApi(self):
|
||||
path = request.form.get('path', '').encode('utf-8')
|
||||
path = request.form.get('path', '')
|
||||
filename = path + '/.user.ini'
|
||||
self.delUserInI(path)
|
||||
if os.path.exists(filename):
|
||||
@@ -350,7 +352,7 @@ class site_api:
|
||||
return mw.returnJson(True, '已打开防跨站设置!')
|
||||
|
||||
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')
|
||||
|
||||
# NGINX
|
||||
@@ -387,7 +389,7 @@ class site_api:
|
||||
return mw.returnJson(True, 'OK', [])
|
||||
|
||||
def getSslApi(self):
|
||||
siteName = request.form.get('siteName', '').encode('utf-8')
|
||||
siteName = request.form.get('siteName', '')
|
||||
|
||||
path = self.sslDir + siteName
|
||||
csrpath = path + "/fullchain.pem" # 生成证书路径
|
||||
@@ -414,9 +416,9 @@ class site_api:
|
||||
return mw.returnJson(True, 'OK', data)
|
||||
|
||||
def setSslApi(self):
|
||||
siteName = request.form.get('siteName', '').encode('utf-8')
|
||||
key = request.form.get('key', '').encode('utf-8')
|
||||
csr = request.form.get('csr', '').encode('utf-8')
|
||||
siteName = request.form.get('siteName', '')
|
||||
key = request.form.get('key', '')
|
||||
csr = request.form.get('csr', '')
|
||||
|
||||
path = self.sslDir + siteName
|
||||
if not os.path.exists(path):
|
||||
@@ -471,8 +473,8 @@ class site_api:
|
||||
return mw.returnJson(True, '证书已保存!')
|
||||
|
||||
def setCertToSiteApi(self):
|
||||
certName = request.form.get('certName', '').encode('utf-8')
|
||||
siteName = request.form.get('siteName', '').encode('utf-8')
|
||||
certName = request.form.get('certName', '')
|
||||
siteName = request.form.get('siteName', '')
|
||||
try:
|
||||
path = self.sslDir + siteName
|
||||
if not os.path.exists(path):
|
||||
@@ -489,7 +491,7 @@ class site_api:
|
||||
return mw.returnJson(False, '设置错误,' + str(ex))
|
||||
|
||||
def removeCertApi(self):
|
||||
certName = request.form.get('certName', '').encode('utf-8')
|
||||
certName = request.form.get('certName', '')
|
||||
try:
|
||||
path = self.sslDir + certName
|
||||
if not os.path.exists(path):
|
||||
@@ -500,7 +502,7 @@ class site_api:
|
||||
return mw.returnJson(False, '删除失败!')
|
||||
|
||||
def closeSslConfApi(self):
|
||||
siteName = request.form.get('siteName', '').encode('utf-8')
|
||||
siteName = request.form.get('siteName', '')
|
||||
|
||||
file = self.getHostConf(siteName)
|
||||
conf = mw.readFile(file)
|
||||
@@ -548,12 +550,12 @@ class site_api:
|
||||
return mw.returnJson(True, 'SSL已关闭!')
|
||||
|
||||
def createLetApi(self):
|
||||
siteName = request.form.get('siteName', '').encode('utf-8')
|
||||
siteName = request.form.get('siteName', '')
|
||||
updateOf = request.form.get('updateOf', '')
|
||||
domains = request.form.get('domains', '').encode('utf-8')
|
||||
force = request.form.get('force', '').encode('utf-8')
|
||||
renew = request.form.get('renew', '').encode('utf-8')
|
||||
email_args = request.form.get('email', '').encode('utf-8')
|
||||
domains = request.form.get('domains', '')
|
||||
force = request.form.get('force', '')
|
||||
renew = request.form.get('renew', '')
|
||||
email_args = request.form.get('email', '')
|
||||
|
||||
domains = json.loads(domains)
|
||||
email = mw.M('users').getField('email')
|
||||
@@ -648,8 +650,8 @@ class site_api:
|
||||
|
||||
# print home_cert
|
||||
cmd = 'export ACCOUNT_EMAIL=' + email + ' && ' + execStr
|
||||
print domains
|
||||
print cmd
|
||||
print(domains)
|
||||
print(cmd)
|
||||
result = mw.execShell(cmd)
|
||||
|
||||
if not os.path.exists(home_cert.replace("\*", "*")):
|
||||
@@ -693,7 +695,7 @@ class site_api:
|
||||
return mw.returnJson(True, 'OK', result)
|
||||
|
||||
def httpToHttpsApi(self):
|
||||
siteName = request.form.get('siteName', '').encode('utf-8')
|
||||
siteName = request.form.get('siteName', '')
|
||||
file = self.getHostConf(siteName)
|
||||
conf = mw.readFile(file)
|
||||
if conf:
|
||||
@@ -712,7 +714,7 @@ class site_api:
|
||||
return mw.returnJson(True, '设置成功!证书也要设置好哟!')
|
||||
|
||||
def closeToHttpsApi(self):
|
||||
siteName = request.form.get('siteName', '').encode('utf-8')
|
||||
siteName = request.form.get('siteName', '')
|
||||
file = self.getHostConf(siteName)
|
||||
conf = mw.readFile(file)
|
||||
if conf:
|
||||
@@ -726,65 +728,65 @@ class site_api:
|
||||
return mw.returnJson(True, '关闭HTTPS跳转成功!')
|
||||
|
||||
def getIndexApi(self):
|
||||
sid = request.form.get('id', '').encode('utf-8')
|
||||
sid = request.form.get('id', '')
|
||||
data = {}
|
||||
index = self.getIndex(sid)
|
||||
data['index'] = index
|
||||
return mw.getJson(data)
|
||||
|
||||
def setIndexApi(self):
|
||||
sid = request.form.get('id', '').encode('utf-8')
|
||||
index = request.form.get('index', '').encode('utf-8')
|
||||
sid = request.form.get('id', '')
|
||||
index = request.form.get('index', '')
|
||||
return self.setIndex(sid, index)
|
||||
|
||||
def getLimitNetApi(self):
|
||||
sid = request.form.get('id', '').encode('utf-8')
|
||||
sid = request.form.get('id', '')
|
||||
return self.getLimitNet(sid)
|
||||
|
||||
def saveLimitNetApi(self):
|
||||
sid = request.form.get('id', '').encode('utf-8')
|
||||
perserver = request.form.get('perserver', '').encode('utf-8')
|
||||
perip = request.form.get('perip', '').encode('utf-8')
|
||||
limit_rate = request.form.get('limit_rate', '').encode('utf-8')
|
||||
sid = request.form.get('id', '')
|
||||
perserver = request.form.get('perserver', '')
|
||||
perip = request.form.get('perip', '')
|
||||
limit_rate = request.form.get('limit_rate', '')
|
||||
return self.saveLimitNet(sid, perserver, perip, limit_rate)
|
||||
|
||||
def closeLimitNetApi(self):
|
||||
sid = request.form.get('id', '').encode('utf-8')
|
||||
sid = request.form.get('id', '')
|
||||
return self.closeLimitNet(sid)
|
||||
|
||||
def getSecurityApi(self):
|
||||
sid = request.form.get('id', '').encode('utf-8')
|
||||
name = request.form.get('name', '').encode('utf-8')
|
||||
sid = request.form.get('id', '')
|
||||
name = request.form.get('name', '')
|
||||
return self.getSecurity(sid, name)
|
||||
|
||||
def setSecurityApi(self):
|
||||
fix = request.form.get('fix', '').encode('utf-8')
|
||||
domains = request.form.get('domains', '').encode('utf-8')
|
||||
status = request.form.get('status', '').encode('utf-8')
|
||||
name = request.form.get('name', '').encode('utf-8')
|
||||
sid = request.form.get('id', '').encode('utf-8')
|
||||
fix = request.form.get('fix', '')
|
||||
domains = request.form.get('domains', '')
|
||||
status = request.form.get('status', '')
|
||||
name = request.form.get('name', '')
|
||||
sid = request.form.get('id', '')
|
||||
return self.setSecurity(sid, name, fix, domains, status)
|
||||
|
||||
def getLogsApi(self):
|
||||
siteName = request.form.get('siteName', '').encode('utf-8')
|
||||
siteName = request.form.get('siteName', '')
|
||||
return self.getLogs(siteName)
|
||||
|
||||
def getSitePhpVersionApi(self):
|
||||
siteName = request.form.get('siteName', '').encode('utf-8')
|
||||
siteName = request.form.get('siteName', '')
|
||||
return self.getSitePhpVersion(siteName)
|
||||
|
||||
def getHostConfApi(self):
|
||||
siteName = request.form.get('siteName', '').encode('utf-8')
|
||||
siteName = request.form.get('siteName', '')
|
||||
host = self.getHostConf(siteName)
|
||||
return mw.getJson({'host': host})
|
||||
|
||||
def getRewriteConfApi(self):
|
||||
siteName = request.form.get('siteName', '').encode('utf-8')
|
||||
siteName = request.form.get('siteName', '')
|
||||
rewrite = self.getRewriteConf(siteName)
|
||||
return mw.getJson({'rewrite': rewrite})
|
||||
|
||||
def getRewriteTplApi(self):
|
||||
tplname = request.form.get('tplname', '').encode('utf-8')
|
||||
tplname = request.form.get('tplname', '')
|
||||
file = mw.getRunDir() + '/rewrite/nginx/' + tplname + '.conf'
|
||||
if not os.path.exists(file):
|
||||
return mw.returnJson(False, '模版不存在!')
|
||||
@@ -800,16 +802,16 @@ class site_api:
|
||||
return mw.getJson(data)
|
||||
|
||||
def setEndDateApi(self):
|
||||
sid = request.form.get('id', '').encode('utf-8')
|
||||
edate = request.form.get('edate', '').encode('utf-8')
|
||||
sid = request.form.get('id', '')
|
||||
edate = request.form.get('edate', '')
|
||||
return self.setEndDate(sid, edate)
|
||||
|
||||
def addApi(self):
|
||||
webname = request.form.get('webinfo', '').encode('utf-8')
|
||||
ps = request.form.get('ps', '').encode('utf-8')
|
||||
path = request.form.get('path', '').encode('utf-8')
|
||||
version = request.form.get('version', '').encode('utf-8')
|
||||
port = request.form.get('port', '').encode('utf-8')
|
||||
webname = request.form.get('webinfo', '')
|
||||
ps = request.form.get('ps', '')
|
||||
path = request.form.get('path', '')
|
||||
version = request.form.get('version', '')
|
||||
port = request.form.get('port', '').decode('utf-8')
|
||||
return self.add(webname, port, ps, path, version)
|
||||
|
||||
def addDomainApi(self):
|
||||
@@ -817,8 +819,8 @@ class site_api:
|
||||
if isError != True:
|
||||
return mw.returnJson(False, 'ERROR: 检测到配置文件有错误,请先排除后再操作<br><br><a style="color:red;">' + isError.replace("\n", '<br>') + '</a>')
|
||||
|
||||
domain = request.form.get('domain', '').encode('utf-8')
|
||||
webname = request.form.get('webname', '').encode('utf-8')
|
||||
domain = request.form.get('domain', '')
|
||||
webname = request.form.get('webname', '')
|
||||
pid = request.form.get('id', '').encode('utf-8')
|
||||
if len(domain) < 3:
|
||||
return mw.returnJson(False, '域名不能为空!')
|
||||
@@ -864,9 +866,9 @@ class site_api:
|
||||
return mw.returnJson(True, '域名添加成功!')
|
||||
|
||||
def addDirBindApi(self):
|
||||
pid = request.form.get('id', '').encode('utf-8')
|
||||
domain = request.form.get('domain', '').encode('utf-8')
|
||||
dirName = request.form.get('dirName', '').encode('utf-8')
|
||||
pid = request.form.get('id', '')
|
||||
domain = request.form.get('domain', '')
|
||||
dirName = request.form.get('dirName', '')
|
||||
tmp = domain.split(':')
|
||||
domain = tmp[0]
|
||||
port = '80'
|
||||
@@ -926,7 +928,7 @@ class site_api:
|
||||
return mw.returnJson(True, '添加成功!')
|
||||
|
||||
def delDirBindApi(self):
|
||||
mid = request.form.get('id', '').encode('utf-8')
|
||||
mid = request.form.get('id', '')
|
||||
binding = mw.M('binding').where(
|
||||
"id=?", (mid,)).field('id,pid,domain,path').find()
|
||||
siteName = mw.M('sites').where(
|
||||
@@ -954,8 +956,8 @@ class site_api:
|
||||
|
||||
# 取子目录Rewrite
|
||||
def getDirBindRewriteApi(self):
|
||||
mid = request.form.get('id', '').encode('utf-8')
|
||||
add = request.form.get('add', '0').encode('utf-8')
|
||||
mid = request.form.get('id', '')
|
||||
add = request.form.get('add', '0')
|
||||
find = mw.M('binding').where(
|
||||
"id=?", (mid,)).field('id,pid,domain,path').find()
|
||||
site = mw.M('sites').where(
|
||||
@@ -990,8 +992,8 @@ class site_api:
|
||||
|
||||
# 修改物理路径
|
||||
def setPathApi(self):
|
||||
mid = request.form.get('id', '').encode('utf-8')
|
||||
path = request.form.get('path', '').encode('utf-8')
|
||||
mid = request.form.get('id', '')
|
||||
path = request.form.get('path', '')
|
||||
|
||||
path = self.getPath(path)
|
||||
if path == "" or mid == '0':
|
||||
@@ -1028,8 +1030,8 @@ class site_api:
|
||||
|
||||
# 设置当前站点运行目录
|
||||
def setSiteRunPathApi(self):
|
||||
mid = request.form.get('id', '').encode('utf-8')
|
||||
runPath = request.form.get('runPath', '').encode('utf-8')
|
||||
mid = request.form.get('id', '')
|
||||
runPath = request.form.get('runPath', '')
|
||||
siteName = mw.M('sites').where('id=?', (mid,)).getField('name')
|
||||
sitePath = mw.M('sites').where('id=?', (mid,)).getField('path')
|
||||
|
||||
@@ -1051,9 +1053,9 @@ class site_api:
|
||||
|
||||
# 设置目录加密
|
||||
def setHasPwdApi(self):
|
||||
username = request.form.get('username', '').encode('utf-8')
|
||||
password = request.form.get('password', '').encode('utf-8')
|
||||
siteName = request.form.get('siteName', '').encode('utf-8')
|
||||
username = request.form.get('username', '')
|
||||
password = request.form.get('password', '')
|
||||
siteName = request.form.get('siteName', '')
|
||||
mid = request.form.get('id', '')
|
||||
|
||||
if len(username.strip()) == 0 or len(password.strip()) == 0:
|
||||
@@ -1064,7 +1066,7 @@ class site_api:
|
||||
|
||||
# self.closeHasPwd(get)
|
||||
filename = self.passPath + '/' + siteName + '.pass'
|
||||
print filename
|
||||
print(filename)
|
||||
passconf = username + ':' + mw.hasPwd(password)
|
||||
|
||||
if siteName == 'phpmyadmin':
|
||||
@@ -1098,7 +1100,7 @@ class site_api:
|
||||
|
||||
# 取消目录加密
|
||||
def closeHasPwdApi(self):
|
||||
siteName = request.form.get('siteName', '').encode('utf-8')
|
||||
siteName = request.form.get('siteName', '')
|
||||
mid = request.form.get('id', '')
|
||||
if siteName == '':
|
||||
siteName = mw.M('sites').where('id=?', (mid,)).getField('name')
|
||||
@@ -1120,9 +1122,9 @@ class site_api:
|
||||
return mw.returnJson(True, '设置成功!')
|
||||
|
||||
def delDomainApi(self):
|
||||
domain = request.form.get('domain', '').encode('utf-8')
|
||||
webname = request.form.get('webname', '').encode('utf-8')
|
||||
port = request.form.get('port', '').encode('utf-8')
|
||||
domain = request.form.get('domain', '')
|
||||
webname = request.form.get('webname', '')
|
||||
port = request.form.get('port', '')
|
||||
pid = request.form.get('id', '')
|
||||
|
||||
find = mw.M('domain').where("pid=? AND name=?",
|
||||
@@ -1160,13 +1162,13 @@ class site_api:
|
||||
return mw.returnJson(True, '站点删除成功!')
|
||||
|
||||
def deleteApi(self):
|
||||
sid = request.form.get('id', '').encode('utf-8')
|
||||
webname = request.form.get('webname', '').encode('utf-8')
|
||||
path = request.form.get('path', '0').encode('utf-8')
|
||||
sid = request.form.get('id', '')
|
||||
webname = request.form.get('webname', '')
|
||||
path = request.form.get('path', '0')
|
||||
return self.delete(sid, webname, path)
|
||||
|
||||
def getProxyListApi(self):
|
||||
siteName = request.form.get('siteName', '').encode('utf-8')
|
||||
siteName = request.form.get('siteName', '')
|
||||
conf_path = self.getHostConf(siteName)
|
||||
old_conf = mw.readFile(conf_path)
|
||||
rep = "(#PROXY-START(\n|.)+#PROXY-END)"
|
||||
@@ -1213,7 +1215,7 @@ class site_api:
|
||||
return mw.getJson(data)
|
||||
|
||||
def getSiteDocApi(self):
|
||||
stype = request.form.get('type', '0').strip().encode('utf-8')
|
||||
stype = request.form.get('type', '0').strip()
|
||||
vlist = []
|
||||
vlist.append('')
|
||||
vlist.append(mw.getServerDir() +
|
||||
@@ -1227,7 +1229,7 @@ class site_api:
|
||||
return mw.returnJson(True, 'ok', data)
|
||||
|
||||
def addSiteTypeApi(self):
|
||||
name = request.form.get('name', '').strip().encode('utf-8')
|
||||
name = request.form.get('name', '').strip()
|
||||
if not name:
|
||||
return mw.returnJson(False, "分类名称不能为空")
|
||||
if len(name) > 18:
|
||||
@@ -1240,7 +1242,7 @@ class site_api:
|
||||
return mw.returnJson(True, '添加成功!')
|
||||
|
||||
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:
|
||||
return mw.returnJson(False, "指定分类不存在!")
|
||||
mw.M('site_types').where('id=?', (mid,)).delete()
|
||||
@@ -1249,8 +1251,8 @@ class site_api:
|
||||
|
||||
def modifySiteTypeNameApi(self):
|
||||
# 修改网站分类名称
|
||||
name = request.form.get('name', '').strip().encode('utf-8')
|
||||
mid = request.form.get('id', '').encode('utf-8')
|
||||
name = request.form.get('name', '').strip()
|
||||
mid = request.form.get('id', '')
|
||||
if not name:
|
||||
return mw.returnJson(False, "分类名称不能为空")
|
||||
if len(name) > 18:
|
||||
@@ -1262,11 +1264,11 @@ class site_api:
|
||||
|
||||
def setSiteTypeApi(self):
|
||||
# 设置指定站点的分类
|
||||
site_ids = request.form.get('site_ids', '').encode('utf-8')
|
||||
mid = request.form.get('id', '').encode('utf-8')
|
||||
site_ids = request.form.get('site_ids', '')
|
||||
mid = request.form.get('id', '')
|
||||
site_ids = json.loads(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))
|
||||
return mw.returnJson(True, "设置成功!")
|
||||
|
||||
##### ----- end ----- ###
|
||||
@@ -1667,7 +1669,6 @@ location /{
|
||||
mw.writeFile(rewrite_file, rewrite_content)
|
||||
|
||||
def add(self, webname, port, ps, path, version):
|
||||
|
||||
siteMenu = json.loads(webname)
|
||||
self.siteName = self.toPunycode(
|
||||
siteMenu['domain'].strip().split(':')[0]).strip()
|
||||
|
||||
@@ -20,7 +20,7 @@ from threading import Thread
|
||||
from time import sleep
|
||||
|
||||
|
||||
def async(f):
|
||||
def mw_async(f):
|
||||
def wrapper(*args, **kwargs):
|
||||
thr = Thread(target=f, args=args, kwargs=kwargs)
|
||||
thr.start()
|
||||
@@ -101,14 +101,14 @@ class system_api:
|
||||
return mw.returnJson(True, '正在重启服务器!')
|
||||
##### ----- end ----- ###
|
||||
|
||||
@async
|
||||
@mw_async
|
||||
def restartMw(self):
|
||||
sleep(0.3)
|
||||
# cmd = mw.getRunDir() + '/scripts/init.d/mw restart'
|
||||
# print cmd
|
||||
mw.execShell('service mw restart')
|
||||
|
||||
@async
|
||||
@mw_async
|
||||
def restartServer(self):
|
||||
if not mw.isRestart():
|
||||
return mw.returnJson(False, '请等待所有安装任务完成再执行!')
|
||||
@@ -302,7 +302,7 @@ class system_api:
|
||||
memInfo['memBuffers'] - memInfo['memCached']
|
||||
tmp1 = memInfo['memTotal'] / 100
|
||||
return (tmp / tmp1)
|
||||
except Exception, ex:
|
||||
except Exception as ex:
|
||||
return 1
|
||||
|
||||
def getDiskInfo(self, get=None):
|
||||
@@ -396,7 +396,7 @@ class system_api:
|
||||
shutil.rmtree(filename)
|
||||
else:
|
||||
os.remove(filename)
|
||||
print '\t\033[1;32m[OK]\033[0m'
|
||||
print('\t\033[1;32m[OK]\033[0m')
|
||||
num += 1
|
||||
total += size
|
||||
count += num
|
||||
@@ -460,8 +460,8 @@ class system_api:
|
||||
networkInfo['mem'] = self.getMemInfo()
|
||||
|
||||
return networkInfo
|
||||
except Exception, e:
|
||||
print e
|
||||
except Exception as e:
|
||||
print(e)
|
||||
return None
|
||||
|
||||
def getNetWorkApi(self):
|
||||
@@ -621,7 +621,7 @@ class system_api:
|
||||
version = json.loads(r.content)
|
||||
return version[0]
|
||||
except Exception as e:
|
||||
print 'getServerInfo', e
|
||||
print('getServerInfo', e)
|
||||
return {}
|
||||
|
||||
def updateServer(self, stype, version=''):
|
||||
@@ -680,7 +680,7 @@ class system_api:
|
||||
|
||||
return mw.returnJson(False, '已经是最新,无需更新!')
|
||||
except Exception as ex:
|
||||
print 'updateServer', ex
|
||||
print('updateServer', ex)
|
||||
return mw.returnJson(False, "连接服务器失败!")
|
||||
|
||||
# 修复面板
|
||||
|
||||
@@ -24,7 +24,7 @@ class task_api:
|
||||
|
||||
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()
|
||||
search = request.form.get('search', '').strip()
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ class vieCode:
|
||||
if not self.__inNoise:
|
||||
return
|
||||
font = ImageFont.truetype(self.__fontPatn, int(self.__fontSize / 1.5))
|
||||
for i in xrange(5):
|
||||
for i in range(5):
|
||||
# 杂点颜色
|
||||
noiseColor = (random.randint(150, 200), random.randint(
|
||||
150, 200), random.randint(150, 200))
|
||||
@@ -104,9 +104,9 @@ class vieCode:
|
||||
# 画曲线
|
||||
color = (random.randint(30, 150), random.randint(
|
||||
30, 150), random.randint(30, 150))
|
||||
for x in xrange(xend):
|
||||
for x in range(xend):
|
||||
if w != 0:
|
||||
for k in xrange(int(self.__heigth / 10)):
|
||||
for k in range(int(self.__heigth / 10)):
|
||||
y = a * math.sin(w * x + f) + b + self.__heigth / 2
|
||||
i = int(self.__fontSize / 5)
|
||||
while i > 0:
|
||||
@@ -120,7 +120,7 @@ class vieCode:
|
||||
font = ImageFont.truetype(self.__fontPatn, self.__fontSize)
|
||||
x = 0
|
||||
# 打印字符到画板
|
||||
for i in xrange(self.__length):
|
||||
for i in range(self.__length):
|
||||
# 设置字体随机颜色
|
||||
color = (random.randint(30, 150), random.randint(
|
||||
30, 150), random.randint(30, 150))
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
jnuxgfkj
|
||||
+11
-11
@@ -188,24 +188,24 @@ def getLog():
|
||||
if __name__ == "__main__":
|
||||
func = sys.argv[1]
|
||||
if func == 'status':
|
||||
print status()
|
||||
print(status())
|
||||
elif func == 'start':
|
||||
print start()
|
||||
print(start())
|
||||
elif func == 'stop':
|
||||
print stop()
|
||||
print(stop())
|
||||
elif func == 'restart':
|
||||
print restart()
|
||||
print(restart())
|
||||
elif func == 'reload':
|
||||
print reload()
|
||||
print(reload())
|
||||
elif func == 'conf':
|
||||
print getPathFile()
|
||||
print(getPathFile())
|
||||
elif func == 'initd_status':
|
||||
print initdStatus()
|
||||
print(initdStatus())
|
||||
elif func == 'initd_install':
|
||||
print initdInstall()
|
||||
print(initdInstall())
|
||||
elif func == 'initd_uninstall':
|
||||
print initdUinstall()
|
||||
print(initdUinstall())
|
||||
elif func == 'run_log':
|
||||
print getLog()
|
||||
print(getLog())
|
||||
else:
|
||||
print 'error'
|
||||
print('error')
|
||||
|
||||
@@ -98,12 +98,12 @@ def reload():
|
||||
if __name__ == "__main__":
|
||||
func = sys.argv[1]
|
||||
if func == 'status':
|
||||
print status()
|
||||
print(status())
|
||||
elif func == 'start':
|
||||
print start()
|
||||
print(start())
|
||||
elif func == 'stop':
|
||||
print stop()
|
||||
print(stop())
|
||||
elif func == 'restart':
|
||||
print restart()
|
||||
print(restart())
|
||||
elif func == 'reload':
|
||||
print reload()
|
||||
print(reload())
|
||||
|
||||
+25
-25
@@ -658,52 +658,52 @@ def getTotalStatistics():
|
||||
if __name__ == "__main__":
|
||||
func = sys.argv[1]
|
||||
if func == 'status':
|
||||
print status()
|
||||
print(status())
|
||||
elif func == 'start':
|
||||
print start()
|
||||
print(start())
|
||||
elif func == 'stop':
|
||||
print stop()
|
||||
print(stop())
|
||||
elif func == 'restart':
|
||||
print restart()
|
||||
print(restart())
|
||||
elif func == 'reload':
|
||||
print reload()
|
||||
print(reload())
|
||||
elif func == 'initd_status':
|
||||
print initdStatus()
|
||||
print(initdStatus())
|
||||
elif func == 'initd_install':
|
||||
print initdInstall()
|
||||
print(initdInstall())
|
||||
elif func == 'initd_uninstall':
|
||||
print initdUinstall()
|
||||
print(initdUinstall())
|
||||
elif func == 'csvn_edit':
|
||||
print csvnEdit()
|
||||
print(csvnEdit())
|
||||
elif func == 'user_list':
|
||||
print userList()
|
||||
print(userList())
|
||||
elif func == 'user_add':
|
||||
print userAdd()
|
||||
print(userAdd())
|
||||
elif func == 'user_del':
|
||||
print userDel()
|
||||
print(userDel())
|
||||
elif func == 'project_list':
|
||||
print projectList()
|
||||
print(projectList())
|
||||
elif func == 'project_del':
|
||||
print projectDel()
|
||||
print(projectDel())
|
||||
elif func == 'project_add':
|
||||
print projectAdd()
|
||||
print(projectAdd())
|
||||
elif func == 'project_acl_list':
|
||||
print projectAclList()
|
||||
print(projectAclList())
|
||||
elif func == 'project_acl_add':
|
||||
print projectAclAdd()
|
||||
print(projectAclAdd())
|
||||
elif func == 'project_acl_del':
|
||||
print projectAclDel()
|
||||
print(projectAclDel())
|
||||
elif func == 'project_acl_set':
|
||||
print projectAclSet()
|
||||
print(projectAclSet())
|
||||
elif func == 'project_script_load':
|
||||
print projectScriptLoad()
|
||||
print(projectScriptLoad())
|
||||
elif func == 'project_script_unload':
|
||||
print projectScriptUnload()
|
||||
print(projectScriptUnload())
|
||||
elif func == 'project_script_edit':
|
||||
print projectScriptEdit()
|
||||
print(projectScriptEdit())
|
||||
elif func == 'project_script_debug':
|
||||
print projectScriptDebug()
|
||||
print(projectScriptDebug())
|
||||
elif func == 'get_total_statistics':
|
||||
print getTotalStatistics()
|
||||
print(getTotalStatistics())
|
||||
else:
|
||||
print 'fail'
|
||||
print('fail')
|
||||
|
||||
+24
-24
@@ -637,50 +637,50 @@ def getTotalStatistics():
|
||||
if __name__ == "__main__":
|
||||
func = sys.argv[1]
|
||||
if func == 'status':
|
||||
print status()
|
||||
print(status())
|
||||
elif func == 'start':
|
||||
print start()
|
||||
print(start())
|
||||
elif func == 'stop':
|
||||
print stop()
|
||||
print(stop())
|
||||
elif func == 'restart':
|
||||
print restart()
|
||||
print(restart())
|
||||
elif func == 'reload':
|
||||
print reload()
|
||||
print(reload())
|
||||
elif func == 'initd_status':
|
||||
print initdStatus()
|
||||
print(initdStatus())
|
||||
elif func == 'initd_install':
|
||||
print initdInstall()
|
||||
print(initdInstall())
|
||||
elif func == 'initd_uninstall':
|
||||
print initdUinstall()
|
||||
print(initdUinstall())
|
||||
elif func == 'run_log':
|
||||
print runLog()
|
||||
print(runLog())
|
||||
elif func == 'post_receive_log':
|
||||
print postReceiveLog()
|
||||
print(postReceiveLog())
|
||||
elif func == 'conf':
|
||||
print getConf()
|
||||
print(getConf())
|
||||
elif func == 'init_conf':
|
||||
print getInitdConf()
|
||||
print(getInitdConf())
|
||||
elif func == 'get_gogs_conf':
|
||||
print getGogsConf()
|
||||
print(getGogsConf())
|
||||
elif func == 'submit_gogs_conf':
|
||||
print submitGogsConf()
|
||||
print(submitGogsConf())
|
||||
elif func == 'user_list':
|
||||
print userList()
|
||||
print(userList())
|
||||
elif func == 'user_project_list':
|
||||
print userProjectList()
|
||||
print(userProjectList())
|
||||
elif func == 'project_script_edit':
|
||||
print projectScriptEdit()
|
||||
print(projectScriptEdit())
|
||||
elif func == 'project_script_load':
|
||||
print projectScriptLoad()
|
||||
print(projectScriptLoad())
|
||||
elif func == 'project_script_unload':
|
||||
print projectScriptUnload()
|
||||
print(projectScriptUnload())
|
||||
elif func == 'project_script_debug':
|
||||
print projectScriptDebug()
|
||||
print(projectScriptDebug())
|
||||
elif func == 'gogs_edit':
|
||||
print gogsEdit()
|
||||
print(gogsEdit())
|
||||
elif func == 'get_rsa_public':
|
||||
print getRsaPublic()
|
||||
print(getRsaPublic())
|
||||
elif func == 'get_total_statistics':
|
||||
print getTotalStatistics()
|
||||
print(getTotalStatistics())
|
||||
else:
|
||||
print 'fail'
|
||||
print('fail')
|
||||
|
||||
+13
-13
@@ -282,28 +282,28 @@ def errorLogPath():
|
||||
if __name__ == "__main__":
|
||||
func = sys.argv[1]
|
||||
if func == 'status':
|
||||
print status()
|
||||
print(status())
|
||||
elif func == 'start':
|
||||
print start()
|
||||
print(start())
|
||||
elif func == 'stop':
|
||||
print stop()
|
||||
print(stop())
|
||||
elif func == 'restart':
|
||||
print restart()
|
||||
print(restart())
|
||||
elif func == 'reload':
|
||||
print reload()
|
||||
print(reload())
|
||||
elif func == 'initd_status':
|
||||
print initdStatus()
|
||||
print(initdStatus())
|
||||
elif func == 'initd_install':
|
||||
print initdInstall()
|
||||
print(initdInstall())
|
||||
elif func == 'initd_uninstall':
|
||||
print initdUinstall()
|
||||
print(initdUinstall())
|
||||
elif func == 'conf':
|
||||
print getConf()
|
||||
print(getConf())
|
||||
elif func == 'get_os':
|
||||
print getOs()
|
||||
print(getOs())
|
||||
elif func == 'run_info':
|
||||
print runInfo()
|
||||
print(runInfo())
|
||||
elif func == 'error_log':
|
||||
print errorLogPath()
|
||||
print(errorLogPath())
|
||||
else:
|
||||
print 'error'
|
||||
print('error')
|
||||
|
||||
@@ -172,24 +172,24 @@ def getLog():
|
||||
if __name__ == "__main__":
|
||||
func = sys.argv[1]
|
||||
if func == 'status':
|
||||
print status()
|
||||
print(status())
|
||||
elif func == 'start':
|
||||
print start()
|
||||
print(start())
|
||||
elif func == 'stop':
|
||||
print stop()
|
||||
print(stop())
|
||||
elif func == 'restart':
|
||||
print restart()
|
||||
print(restart())
|
||||
elif func == 'reload':
|
||||
print reload()
|
||||
print(reload())
|
||||
elif func == 'conf':
|
||||
print getPathFile()
|
||||
print(getPathFile())
|
||||
elif func == 'initd_status':
|
||||
print initdStatus()
|
||||
print(initdStatus())
|
||||
elif func == 'initd_install':
|
||||
print initdInstall()
|
||||
print(initdInstall())
|
||||
elif func == 'initd_uninstall':
|
||||
print initdUinstall()
|
||||
print(initdUinstall())
|
||||
elif func == 'run_log':
|
||||
print getLog()
|
||||
print(getLog())
|
||||
else:
|
||||
print 'error'
|
||||
print('error')
|
||||
|
||||
+4
-4
@@ -1,13 +1,13 @@
|
||||
werkzeug==0.16.1
|
||||
werkzeug==1.0.1
|
||||
setuptools==33.1.1
|
||||
wheel==0.33.6
|
||||
flask==1.0.2
|
||||
flask-session==0.3.2
|
||||
flask-helper==0.19
|
||||
cache==1.0.3
|
||||
flask-caching==1.8.0
|
||||
flask-caching==1.10.1
|
||||
gunicorn==19.9
|
||||
gevent==1.3.7
|
||||
gevent==21.1.2
|
||||
gevent-websocket
|
||||
psutil==5.6.6
|
||||
pillow==6.2.2
|
||||
@@ -16,8 +16,8 @@ flask-sqlalchemy==2.3.2
|
||||
cryptography==3.3.2
|
||||
requests==2.20.0
|
||||
ConfigParser==3.5.0
|
||||
MySQL-python==1.2.5
|
||||
mysql-connector-python
|
||||
flask-socketio==3.0.1
|
||||
python-engineio==3.9.0
|
||||
zmq==0.0.0
|
||||
# pytest-shutil
|
||||
@@ -0,0 +1,23 @@
|
||||
werkzeug==0.16.1
|
||||
setuptools==33.1.1
|
||||
wheel==0.33.6
|
||||
flask==1.0.2
|
||||
flask-session==0.3.2
|
||||
flask-helper==0.19
|
||||
cache==1.0.3
|
||||
flask-caching==1.8.0
|
||||
gunicorn==19.9
|
||||
gevent==1.3.7
|
||||
gevent-websocket
|
||||
psutil==5.6.6
|
||||
pillow==6.2.2
|
||||
chardet==3.0.4
|
||||
flask-sqlalchemy==2.3.2
|
||||
cryptography==3.3.2
|
||||
requests==2.20.0
|
||||
ConfigParser==3.5.0
|
||||
MySQL-python==1.2.5
|
||||
mysql-connector-python
|
||||
flask-socketio==3.0.1
|
||||
python-engineio==3.9.0
|
||||
# pytest-shutil
|
||||
+23
-15
@@ -7,8 +7,8 @@ import time
|
||||
import shutil
|
||||
import uuid
|
||||
|
||||
reload(sys)
|
||||
sys.setdefaultencoding('utf-8')
|
||||
# reload(sys)
|
||||
# sys.setdefaultencoding('utf-8')
|
||||
|
||||
|
||||
from datetime import timedelta
|
||||
@@ -114,10 +114,10 @@ def publicObject(toObject, func, action=None, get=None):
|
||||
|
||||
@app.route("/test")
|
||||
def test():
|
||||
print sys.version_info
|
||||
print session
|
||||
print(sys.version_info)
|
||||
print(session)
|
||||
os = mw.getOs()
|
||||
print os
|
||||
print(os)
|
||||
return mw.getLocalIp()
|
||||
|
||||
|
||||
@@ -135,14 +135,16 @@ def code():
|
||||
import vilidate
|
||||
vie = vilidate.vieCode()
|
||||
codeImage = vie.GetCodeImage(80, 4)
|
||||
try:
|
||||
from cStringIO import StringIO
|
||||
except:
|
||||
from StringIO import StringIO
|
||||
# try:
|
||||
# from cStringIO import StringIO
|
||||
# except:
|
||||
# from StringIO import StringIO
|
||||
|
||||
out = StringIO()
|
||||
out = io.BytesIO()
|
||||
codeImage[0].save(out, "png")
|
||||
|
||||
print(codeImage[1])
|
||||
|
||||
session['code'] = mw.md5(''.join(codeImage[1]).lower())
|
||||
|
||||
img = Response(out.getvalue(), headers={'Content-Type': 'image/png'})
|
||||
@@ -174,15 +176,21 @@ def doLogin():
|
||||
username = request.form.get('username', '').strip()
|
||||
password = request.form.get('password', '').strip()
|
||||
code = request.form.get('code', '').strip()
|
||||
|
||||
if session.has_key('code'):
|
||||
if session['code'] != mw.md5(code):
|
||||
return mw.returnJson(False, '验证码错误,请重新输入!')
|
||||
print(session)
|
||||
# if 'code' in session:
|
||||
# if session['code'] != mw.md5(code):
|
||||
# return mw.returnJson(False, '验证码错误,请重新输入!')
|
||||
|
||||
userInfo = mw.M('users').where(
|
||||
"id=?", (1,)).field('id,username,password').find()
|
||||
|
||||
print(userInfo)
|
||||
print(password)
|
||||
|
||||
password = mw.md5(password)
|
||||
|
||||
print('md5-pass', password)
|
||||
|
||||
login_cache_count = 5
|
||||
login_cache_limit = cache.get('login_cache_limit')
|
||||
filename = 'data/close.pl'
|
||||
@@ -277,7 +285,7 @@ done
|
||||
'''
|
||||
if not mw.isAppleSystem():
|
||||
info = mw.execShell(sh)
|
||||
print info[0], info[1]
|
||||
print(info[0], info[1])
|
||||
|
||||
|
||||
def connect_ssh():
|
||||
|
||||
@@ -90,12 +90,14 @@ if [ ! -f '/usr/bin/pip' ];then
|
||||
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
|
||||
python get-pip.py
|
||||
pip install --upgrade pip
|
||||
pip install pillow==6.2.2
|
||||
fi
|
||||
|
||||
|
||||
cd /www/server/mdserver-web/scripts && ./lib.sh
|
||||
|
||||
pip install -r /www/server/mdserver-web/requirements.txt
|
||||
pip install -r /www/server/mdserver-web/requirements27.txt
|
||||
pip3 install -r /www/server/mdserver-web/requirements.txt
|
||||
|
||||
|
||||
cd /www/server/mdserver-web && ./cli.sh start
|
||||
|
||||
@@ -80,8 +80,15 @@ def execShell(cmdstring, cwd=None, timeout=None, shell=True):
|
||||
while sub.poll() is None:
|
||||
time.sleep(0.1)
|
||||
|
||||
return sub.returncode
|
||||
except:
|
||||
data = sub.communicate()
|
||||
# python3 fix 返回byte数据
|
||||
if isinstance(data[0], bytes):
|
||||
t1 = str(data[0], encoding='utf-8')
|
||||
|
||||
if isinstance(data[1], bytes):
|
||||
t2 = str(data[1], encoding='utf-8')
|
||||
return (t1, t2)
|
||||
except Exception as e:
|
||||
return None
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user