Simple Linux Panel
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mdserver-web/route/plugins.py

151 lines
3.8 KiB

7 years ago
# coding:utf-8
from flask import Blueprint, render_template
7 years ago
from flask import jsonify
7 years ago
from flask import request
7 years ago
7 years ago
import psutil
import time
import sys
import os
7 years ago
import json
7 years ago
7 years ago
sys.path.append("class/core")
7 years ago
import public
7 years ago
plugins = Blueprint('plugins', __name__, template_folder='templates')
7 years ago
__plugin_name = "plugins"
7 years ago
__row_num = 3
7 years ago
7 years ago
@plugins.route("/file", methods=['GET'])
def file():
7 years ago
name = request.args.get('name', '')
if name.strip() == '':
return ''
f = request.args.get('f', '')
if f.strip() == '':
return ''
file = "plugins/" + name + "/" + f
if not os.path.exists(file):
return ""
c = public.readFile(file)
return c
7 years ago
@plugins.route("/list", methods=['GET', 'POST'])
7 years ago
def list():
7 years ago
7 years ago
# public.M('tasks')
7 years ago
7 years ago
data = json.loads(public.readFile("data/type.json"))
ret = {}
ret["type"] = data
7 years ago
plugins_info = []
7 years ago
typeVal = request.args.get('type', '')
if typeVal == "":
typeVal = "0"
7 years ago
7 years ago
for dirinfo in os.listdir(__plugin_name):
path = __plugin_name + "/" + dirinfo
if os.path.isdir(path):
jsonFile = path + "/info.json"
if os.path.exists(jsonFile):
try:
tmp = json.loads(public.readFile(jsonFile))
7 years ago
if typeVal == "0":
plugins_info.append(tmp)
else:
if tmp['pid'] == typeVal:
plugins_info.append(tmp)
7 years ago
except:
7 years ago
pass
7 years ago
7 years ago
ret['data'] = plugins_info
7 years ago
args = {}
args['count'] = len(plugins_info)
args['p1'] = 1
ret['list'] = public.getPage(args)
7 years ago
return jsonify(ret)
7 years ago
@plugins.route('/install', methods=['POST'])
def install():
7 years ago
7 years ago
rundir = public.getRunDir()
7 years ago
name = request.form.get('name', '')
7 years ago
version = request.form.get('version', '')
7 years ago
stype = request.form.get('type', '0')
7 years ago
7 years ago
mmsg = '安装'
if hasattr(request.form, 'upgrade'):
mtype = 'update'
mmsg = 'upgrade'
7 years ago
if name.strip() == '':
7 years ago
return public.returnJson(False, "缺少插件名称!", ())
7 years ago
if version.strip() == '':
7 years ago
return public.returnJson(False, "缺少版本信息!", ())
7 years ago
7 years ago
infoJsonPos = __plugin_name + '/' + name + '/' + 'info.json'
7 years ago
7 years ago
if not os.path.exists(infoJsonPos):
7 years ago
return public.retJson(False, "配置文件不存在!", ())
7 years ago
7 years ago
pluginInfo = json.loads(public.readFile(infoJsonPos))
7 years ago
7 years ago
execstr = "cd " + os.getcwd() + "/plugins/" + \
7 years ago
name + " && /bin/bash " + pluginInfo["shell"] \
+ " install " + version + ' ' + stype
7 years ago
7 years ago
taskAdd = (None, mmsg + '[' + name + '-' + version + ']',
7 years ago
'execshell', '0', time.strftime('%Y-%m-%d %H:%M:%S'), execstr)
7 years ago
public.M('tasks').add('id,name,type,status,addtime, execstr', taskAdd)
7 years ago
return public.returnJson(True, '已将安装任务添加到队列!')
7 years ago
@plugins.route('/uninstall', methods=['POST'])
def uninstall():
pass
7 years ago
@plugins.route('/installed', methods=['POST'])
def installed():
rundir = public.getRunDir()
name = request.form.get('name', '')
if name.strip() == '':
7 years ago
return public.retJson(-1, "缺少插件名称!", ())
7 years ago
infoJsonPos = __plugin_name + '/' + name + '/' + 'info.json'
if not os.path.exists(infoJsonPos):
7 years ago
return public.returnJson(-1, "配置文件不存在!", ())
7 years ago
pluginInfo = json.loads(public.readFile(infoJsonPos))
sh = __plugin_name + '/' + name + '/' + pluginInfo['shell']
os.system('/bin/bash ' + sh + ' install')
print request.args
return ''
7 years ago
7 years ago
@plugins.route('/check_installed', methods=['POST'])
def checkInstalled():
checks = ['nginx', 'apache', 'php', 'mysql']
for name in checks:
filename = public.getRootDir() + "/server/" + name
if os.path.exists(filename):
return "True"
return "False"