diff --git a/web/admin/plugins/__init__.py b/web/admin/plugins/__init__.py index e35a9fb9b..8d7c72fb5 100644 --- a/web/admin/plugins/__init__.py +++ b/web/admin/plugins/__init__.py @@ -34,35 +34,14 @@ def index(): @blueprint.route('/init', endpoint='init', methods=['POST']) @panel_login_required def init(): - plugin_names = { - 'openresty': '1.25.3', - 'php': '56', - 'swap': '1.1', - 'mysql': '5.7', - 'phpmyadmin': '4.4.15', - } - - pn_dir = mw.getPluginDir() - pn_server_dir = mw.getServerDir() - pn_list = [] - for pn in plugin_names: - info = {} - pn_json = pn_dir + '/' + pn + '/info.json' - pn_server = pn_server_dir + '/' + pn - if not os.path.exists(pn_server): - - tmp = mw.readFile(pn_json) - tmp = json.loads(tmp) - - info['title'] = tmp['title'] - info['name'] = tmp['name'] - info['versions'] = tmp['versions'] - info['default_ver'] = plugin_names[pn] - pn_list.append(info) - else: - return mw.returnData(False, 'ok') - - return mw.returnData(True, 'ok', pn_list) + return MwPlugin.instance().init() + +# 初始化安装 +@blueprint.route('/init_install', endpoint='init_install', methods=['POST']) +@panel_login_required +def init_install(): + plugin_list = request.form.get('list', '') + return MwPlugin.instance().initInstall(plugin_list) # 首页软件展示 @blueprint.route('/index_list', endpoint='index_list', methods=['GET','POST']) diff --git a/web/thisdb/init.py b/web/thisdb/init.py index 1f6050df9..20654721b 100644 --- a/web/thisdb/init.py +++ b/web/thisdb/init.py @@ -14,9 +14,9 @@ import core.mw as mw def initPanelData(): - # _dbfile = mw.getPanelDataDir() + '/panel.db' - # if os.path.exists(_dbfile): - # return True + _dbfile = mw.getPanelDataDir() + '/panel.db' + if os.path.exists(_dbfile): + return True sql_file = mw.getPanelDir() + '/web/admin/setup/sql/default.sql' sql = mw.M().dbPos(mw.getPanelDataDir(),'panel') content = mw.readFile(sql_file) diff --git a/web/utils/plugin.py b/web/utils/plugin.py index 504977834..ee2b89a46 100644 --- a/web/utils/plugin.py +++ b/web/utils/plugin.py @@ -132,6 +132,61 @@ class plugin(object): plist = self.checkStatusMThreads(plist) return plist + def init(self): + plugin_names = { + 'openresty': '1.25.3', + 'php': '56', + 'swap': '1.1', + 'mysql': '5.7', + 'phpmyadmin': '4.4.15', + } + + pn_dir = mw.getPluginDir() + pn_server_dir = mw.getServerDir() + pn_list = [] + for pn in plugin_names: + info = {} + pn_json = pn_dir + '/' + pn + '/info.json' + pn_server = pn_server_dir + '/' + pn + if not os.path.exists(pn_server): + + tmp = mw.readFile(pn_json) + tmp = json.loads(tmp) + + info['title'] = tmp['title'] + info['name'] = tmp['name'] + info['versions'] = tmp['versions'] + info['default_ver'] = plugin_names[pn] + pn_list.append(info) + else: + return mw.returnData(False, 'ok') + + return mw.returnData(True, 'ok', pn_list) + + def initInstall(self, plugin_list): + try: + pn_list = json.loads(plugin_list) + for pn in pn_list: + name = pn['name'] + version = pn['version'] + info_file = self.__plugin_dir + '/' + name + '/' + 'info.json' + pluginInfo = json.loads(mw.readFile(info_file)) + self.hookInstall(pluginInfo) + + cmd = 'cd {0} && bash {1} install {2}'.format( + mw.getPluginDir() + '/'+name, + pluginInfo['shell'], + version + ) + title = '安装[' + name + '-' + version + ']' + thisdb.addTask(name=title,cmd=cmd) + os.mkdir(mw.getServerDir() + '/php') + # 任务执行相关 + mw.triggerTask() + return mw.returnData(True, '添加成功') + except Exception as e: + return mw.returnData(False, mw.getTracebackInfo()) + def menuGetAbsPath(self, tag, path): if path[0:1] == '/': return path