# coding:utf-8 import sys import io import os import time import re import json sys.path.append(os.getcwd() + "/class/core") import mw _ver = sys.version_info is_py2 = (_ver[0] == 2) is_py3 = (_ver[0] == 3) DEBUG = False if is_py2: reload(sys) sys.setdefaultencoding('utf-8') app_debug = False if mw.isAppleSystem(): app_debug = True def getPluginName(): return 'backup_ftp' def getPluginDir(): return mw.getPluginDir() + '/' + getPluginName() sys.path.append(getPluginDir() + "/class") from ftp_client import FtpPSClient def getServerDir(): return mw.getServerDir() + '/' + getPluginName() def getArgs(): args = sys.argv[2:] tmp = {} args_len = len(args) if args_len == 1: t = args[0].strip('{').strip('}') t = t.split(':') 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(data, ck=[]): for i in range(len(ck)): if not ck[i] in data: return (False, mw.returnJson(False, '参数:(' + ck[i] + ')没有!')) return (True, mw.returnJson(True, 'ok')) def status(): return 'start' def getConf(): cfg = getServerDir() + "/cfg.json" if not os.path.exists(cfg): return mw.returnJson(False, "未配置", []) data = mw.readFile(cfg) data = json.loads(data) return mw.returnJson(True, "OK", data) def setConf(): args = getArgs() data = checkArgs(args, ['use_sftp', 'ftp_user', 'ftp_pass', 'ftp_host', 'backup_path']) if not data[0]: return data[1] cfg = getServerDir() + "/cfg.json" values = ['ftp_user', 'ftp_pass', 'ftp_host'] for v in values: if args[v] == '': return mw.returnJson(False, '必填资料不能为空,请核实!', []) if args['backup_path'] == '': args['backup_path'] = "/backup" try: ftp = FtpPSClient(load_config=False) ftp.injection_config(args) data = ftp.getList() if data: mw.writeFile(cfg, mw.getJson(args)) return mw.returnJson(True, '设置成功', []) except Exception as e: # print(str(e)) pass return mw.returnJson(False, 'FTP校验失败,请核实!', []) def getList(): cfg = getServerDir() + "/cfg.json" if not os.path.exists(cfg): return mw.returnJson(False, "未配置FTP,请点击`账户设置`", []) args = getArgs() data = checkArgs(args, ['path']) if not data[0]: return data[1] ftp = FtpPSClient() flist = ftp.getList(args['path']) return mw.returnJson(True, "ok", flist) def createDir(): args = getArgs() data = checkArgs(args, ['path', 'name']) if not data[0]: return data[1] ftp = FtpPSClient() isok = ftp.createDir(args['path'], args['name']) if isok: return mw.returnJson(True, "创建成功") return mw.returnJson(False, "创建失败") def deleteDir(): args = getArgs() data = checkArgs(args, ['dir_name', 'path']) if not data[0]: return data[1] ftp = FtpPSClient() isok = ftp.deleteDir(args['path'], args['dir_name']) if isok: return mw.returnJson(True, "删除成功") return mw.returnJson(False, "删除失败") def deleteFile(): args = getArgs() data = checkArgs(args, ['path', 'filename']) if not data[0]: return data[1] ftp = FtpPSClient() isok = ftp.deleteFile(args['filename']) if isok: return mw.returnJson(True, "删除成功") return mw.returnJson(False, "删除失败") def installPreInspection(): return 'ok' if __name__ == "__main__": func = sys.argv[1] if func == 'status': print(status()) elif func == 'start': print(start()) elif func == 'stop': print(stop()) elif func == 'restart': print(restart()) elif func == 'reload': print(reload()) elif func == 'install_pre_inspection': print(installPreInspection()) elif func == 'conf': print(getConf()) elif func == 'set_config': print(setConf()) elif func == "get_list": print(getList()) elif func == "create_dir": print(createDir()) elif func == "delete_dir": print(deleteDir()) elif func == 'delete_file': print(deleteFile()) else: print('error')