-
只需在发送数据服务器安装本软件,请填写
『 接收数据服务器 』资料,
-
迁移教程
+
只需在发送数据服务器安装本软件,请填写
『 接收数据服务器 』资料。
?
@@ -287,7 +286,6 @@ label.checkbox_label span {
\ No newline at end of file
diff --git a/plugins/migration_api/index.py b/plugins/migration_api/index.py
index 15fe59413..8b9ebbedc 100755
--- a/plugins/migration_api/index.py
+++ b/plugins/migration_api/index.py
@@ -33,26 +33,17 @@ def getInitDFile():
def getConf():
- path = getServerDir() + "/init.d/memcached"
+ path = getServerDir() + "/ma.cfg"
return path
-def getConfEnv():
- path = getServerDir() + "/memcached.env"
- return path
-
-
-def getConfTpl():
- path = getPluginDir() + "/init.d/memcached.tpl"
- return path
-
+def getCfgData():
+ path = getConf()
+ if not os.path.exists(path):
+ mw.writeFile(path, '{}')
-def getMemPort():
- path = getServerDir() + '/memcached.env'
- content = mw.readFile(path)
- rep = 'PORT\s*=\s*(\d*)'
- tmp = re.search(rep, content)
- return tmp.groups()[0]
+ t = mw.returnJson(path)
+ return json.loads(t)
def getArgs():
@@ -62,13 +53,16 @@ def getArgs():
if args_len == 1:
t = args[0].strip('{').strip('}')
- t = t.split(':')
+ if t.strip() == '':
+ tmp = []
+ else:
+ t = t.split(':')
+ tmp[t[0]] = t[1]
tmp[t[0]] = t[1]
elif args_len > 1:
for i in range(len(args)):
t = args[i].split(':')
tmp[t[0]] = t[1]
-
return tmp
@@ -84,163 +78,15 @@ def status():
def initDreplace():
-
- file_tpl = getConfTpl()
- service_path = mw.getServerDir()
-
- initD_path = getServerDir() + '/init.d'
- if not os.path.exists(initD_path):
- os.mkdir(initD_path)
- file_bin = initD_path + '/memcached'
-
- if not os.path.exists(file_bin):
- content = mw.readFile(file_tpl)
- content = content.replace('{$SERVER_PATH}', service_path)
- mw.writeFile(file_bin, content)
- mw.execShell('chmod +x ' + file_bin)
-
- # systemd
- systemDir = mw.systemdCfgDir()
- systemService = systemDir + '/memcached.service'
- systemServiceTpl = getPluginDir() + '/init.d/memcached.service.tpl'
- if os.path.exists(systemDir) and not os.path.exists(systemService):
- service_path = mw.getServerDir()
- se_content = mw.readFile(systemServiceTpl)
- se_content = se_content.replace('{$SERVER_PATH}', service_path)
- mw.writeFile(systemService, se_content)
- mw.execShell('systemctl daemon-reload')
-
- envFile = getServerDir() + '/memcached.env'
- if not os.path.exists(envFile):
- wbody = "IP=127.0.0.1\n"
- wbody = wbody + "PORT=11211\n"
- wbody = wbody + "USER=root\n"
- wbody = wbody + "MAXCONN=1024\n"
- wbody = wbody + "CACHESIZE=1024\n"
- wbody = wbody + "OPTIONS=''\n"
- mw.writeFile(envFile, wbody)
-
- return file_bin
-
-
-def memOp(method):
- file = initDreplace()
-
- if not mw.isAppleSystem():
- data = mw.execShell('systemctl ' + method + ' ' + getPluginName())
- if data[1] == '':
- return 'ok'
- return data[1]
-
- data = mw.execShell(file + ' ' + method)
- if data[1] == '':
- return 'ok'
- return data[1]
-
-
-def start():
- return memOp('start')
-
-
-def stop():
- return memOp('stop')
-
-
-def restart():
- return memOp('restart')
-
-
-def reload():
- return memOp('reload')
-
-
-def runInfo():
- # 获取memcached状态
- import telnetlib
- import re
- port = getMemPort()
- try:
- tn = telnetlib.Telnet('127.0.0.1', int(port))
- tn.write(b"stats\n")
- tn.write(b"quit\n")
- data = tn.read_all()
- if type(data) == bytes:
- data = data.decode('utf-8')
- data = data.replace('STAT', '').replace('END', '').split("\n")
- result = {}
- res = ['cmd_get', 'get_hits', 'get_misses', 'limit_maxbytes', 'curr_items', 'bytes',
- 'evictions', 'limit_maxbytes', 'bytes_written', 'bytes_read', 'curr_connections']
- for d in data:
- if len(d) < 3:
- continue
- t = d.split()
- if not t[0] in res:
- continue
- result[t[0]] = int(t[1])
- result['hit'] = 1
- if result['get_hits'] > 0 and result['cmd_get'] > 0:
- result['hit'] = float(result['get_hits']) / \
- float(result['cmd_get']) * 100
-
- conf = mw.readFile(getServerDir() + '/memcached.env')
- result['bind'] = re.search('IP=(.+)', conf).groups()[0]
- result['port'] = int(re.search('PORT=(\d+)', conf).groups()[0])
- result['maxconn'] = int(re.search('MAXCONN=(\d+)', conf).groups()[0])
- result['cachesize'] = int(
- re.search('CACHESIZE=(\d+)', conf).groups()[0])
- return mw.getJson(result)
- except Exception as e:
- return mw.getJson({})
-
-
-def saveConf():
-
- args = getArgs()
- data = checkArgs(args, ['ip', 'port', 'maxconn', 'maxsize'])
- if not data[0]:
- return data[1]
-
- envFile = getServerDir() + '/memcached.env'
-
- wbody = "IP=" + args['ip'] + "\n"
- wbody = wbody + "PORT=" + args['port'] + "\n"
- wbody = wbody + "USER=root\n"
- wbody = wbody + "MAXCONN=" + args['maxconn'] + "\n"
- wbody = wbody + "CACHESIZE=" + args['maxconn'] + "\n"
- wbody = wbody + "OPTIONS=''\n"
- mw.writeFile(envFile, wbody)
-
- restart()
- return 'save ok'
-
-
-def initdStatus():
- if mw.isAppleSystem():
- return "Apple Computer does not support"
-
- shell_cmd = 'systemctl status ' + \
- getPluginName() + ' | grep loaded | grep "enabled;"'
- data = mw.execShell(shell_cmd)
- if data[0] == '':
- return 'fail'
return 'ok'
-def initdInstall():
- if mw.isAppleSystem():
- return "Apple Computer does not support"
-
- mw.execShell('systemctl enable ' + getPluginName())
- return 'ok'
+def stepOne():
+ data = getCfgData()
+ print(data)
+ return mw.returnJson(True, 'ok')
-def initdUinstall():
- if not app_debug:
- if mw.isAppleSystem():
- return "Apple Computer does not support"
-
- mw.execShell('systemctl disable ' + getPluginName())
- return 'ok'
if __name__ == "__main__":
func = sys.argv[1]
@@ -250,21 +96,7 @@ if __name__ == "__main__":
print(start())
elif func == 'stop':
print(stop())
- elif func == 'restart':
- print(restart())
- elif func == 'reload':
- print(reload())
- elif func == 'initd_status':
- print(initdStatus())
- elif func == 'initd_install':
- print(initdInstall())
- elif func == 'initd_uninstall':
- print(initdUinstall())
- elif func == 'run_info':
- print(runInfo())
- elif func == 'conf_env':
- print(getConfEnv())
- elif func == 'save_conf':
+ elif func == 'step_one':
print(saveConf())
else:
print('error')
diff --git a/plugins/migration_api/info.json b/plugins/migration_api/info.json
index 9d6a94b4b..2de0976ff 100755
--- a/plugins/migration_api/info.json
+++ b/plugins/migration_api/info.json
@@ -1,8 +1,8 @@
{
"sort": 7,
- "ps": "一键迁移",
+ "ps": "[潜龙勿用]一键迁移,仅网站数据和MySQL数据",
"name": "migration_api",
- "title": "一键迁移",
+ "title": "一键迁移API",
"shell": "install.sh",
"versions":["1.0"],
"updates":["1.0"],
diff --git a/plugins/migration_api/js/app.js b/plugins/migration_api/js/app.js
index f27044573..13fa9d154 100755
--- a/plugins/migration_api/js/app.js
+++ b/plugins/migration_api/js/app.js
@@ -58,11 +58,23 @@ function maPostCallbak(method, args, callback){
}
+function initStep1(){
+ maPost('step_one',{}, function(rdata){
+ console.log(rdata);
+ });
+}
+
function initStep(){
+ console.log($('.infoNext'));
$('.infoNext').click(function(){
var step = $('.step_head .active span').text();
console.log(step);
+ initStep1();
+ switch(step){
+ '1':initStep1();break;
+ '2':initStep2();break;
+ }
});
}
diff --git a/plugins/redis/index.py b/plugins/redis/index.py
index a287af960..62a8686c2 100755
--- a/plugins/redis/index.py
+++ b/plugins/redis/index.py
@@ -54,13 +54,16 @@ def getArgs():
if args_len == 1:
t = args[0].strip('{').strip('}')
- t = t.split(':')
+ if t.strip() == '':
+ tmp = []
+ else:
+ t = t.split(':')
+ tmp[t[0]] = t[1]
tmp[t[0]] = t[1]
elif args_len > 1:
for i in range(len(args)):
t = args[i].split(':')
tmp[t[0]] = t[1]
-
return tmp
diff --git a/plugins/webhook/index.py b/plugins/webhook/index.py
index 106da859b..4fb14d030 100755
--- a/plugins/webhook/index.py
+++ b/plugins/webhook/index.py
@@ -34,13 +34,16 @@ def getArgs():
if args_len == 1:
t = args[0].strip('{').strip('}')
- t = t.split(':')
+ if t.strip() == '':
+ tmp = []
+ else:
+ t = t.split(':')
+ tmp[t[0]] = t[1]
tmp[t[0]] = t[1]
elif args_len > 1:
for i in range(len(args)):
t = args[i].split(':')
tmp[t[0]] = t[1]
-
return tmp
diff --git a/plugins/webssh/index.py b/plugins/webssh/index.py
index 69d748ba5..3acf2c530 100755
--- a/plugins/webssh/index.py
+++ b/plugins/webssh/index.py
@@ -43,13 +43,16 @@ class App():
if args_len == 1:
t = args[0].strip('{').strip('}')
- t = t.split(':')
+ if t.strip() == '':
+ tmp = []
+ else:
+ t = t.split(':')
+ tmp[t[0]] = t[1]
tmp[t[0]] = t[1]
elif args_len > 1:
for i in range(len(args)):
t = args[i].split(':')
tmp[t[0]] = t[1]
-
return tmp
def checkArgs(self, data, ck=[]):
diff --git a/requirements.txt b/requirements.txt
index 135d82cb1..a68c1c80c 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -14,7 +14,7 @@ psutil==5.9.1
chardet==3.0.4
flask-sqlalchemy==2.3.2
pyOpenSSL==22.0.0
-cryptography==36.0.1
+cryptography==39.0.1
configparser==5.2.0
python-engineio==4.3.2
python-socketio>=4.2.0
@@ -28,4 +28,4 @@ Jinja2>=2.11.2
flask-caching>=1.10.1
bcrypt==3.1.3
PyMySQL==1.0.2
-whitenoise==5.3.0
\ No newline at end of file
+whitenoise==5.3.0