mirror of https://github.com/midoks/mdserver-web
parent
caec558bea
commit
ab0fb063cf
@ -0,0 +1,16 @@ |
||||
<?php |
||||
$cfg['blowfish_secret'] = '{$BLOWFISH_SECRET}'; |
||||
$i = 0; |
||||
$i++; |
||||
$cfg['Servers'][$i]['verbose'] = '{$CHOOSE_DB}'; |
||||
$cfg['Servers'][$i]['auth_type'] = 'cookie'; |
||||
// $cfg['Servers'][$i]['host'] = '127.0.0.1'; |
||||
// $cfg['Servers'][$i]['connect_type'] = 'tcp'; |
||||
$cfg['Servers'][$i]['socket'] = '{$SERVER_PATH}/{$CHOOSE_DB_DIR}/mysql.sock'; |
||||
$cfg['Servers'][$i]['connect_type'] = 'socket'; |
||||
$cfg['Servers'][$i]['compress'] = false; |
||||
$cfg['Servers'][$i]['AllowNoPassword'] = false; |
||||
$cfg['TempDir'] = '{$SERVER_PATH}/phpmyadmin/{$PMA_PATH}/tmp'; |
||||
$cfg['UploadDir'] = ''; |
||||
$cfg['SaveDir'] = ''; |
||||
?> |
@ -0,0 +1,38 @@ |
||||
server |
||||
{ |
||||
listen 888; |
||||
server_name 127.0.0.1; |
||||
index index.html index.htm index.php; |
||||
root {$SERVER_PATH}/phpmyadmin; |
||||
|
||||
#error_page 404 /404.html; |
||||
include {$PHP_CONF_PATH}/enable-php-{$PHP_VER}.conf; |
||||
|
||||
#AUTH_START |
||||
auth_basic "Authorization"; |
||||
auth_basic_user_file {$SERVER_PATH}/phpmyadmin/pma.pass; |
||||
#AUTH_END |
||||
|
||||
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ |
||||
{ |
||||
expires 30d; |
||||
} |
||||
|
||||
location ~ .*\.(js|css)?$ |
||||
{ |
||||
expires 12h; |
||||
} |
||||
|
||||
location ~ /.*\.(log|pass|json|pl)$ { |
||||
deny all; |
||||
} |
||||
|
||||
|
||||
location ~ /\. |
||||
{ |
||||
deny all; |
||||
} |
||||
|
||||
access_log {$SERVER_PATH}/phpmyadmin/access.log; |
||||
error_log {$SERVER_PATH}/phpmyadmin/error.log; |
||||
} |
After Width: | Height: | Size: 2.0 KiB |
@ -0,0 +1,24 @@ |
||||
<div class="bt-form"> |
||||
<div class="bt-w-main"> |
||||
<div class="bt-w-menu"> |
||||
<p class="bgw" onclick="pluginService('phpmyadmin');">服务</p> |
||||
<p onclick="pluginConfig('phpmyadmin');">重写模版</p> |
||||
<p onclick="homePage()">主页</p> |
||||
<p onclick="phpVer(56)">PHP版本</p> |
||||
<p onclick="safeConf();">安全设置</p> |
||||
<p onclick="pluginLogs('phpmyadmin','','access_log');">访问日志</p> |
||||
<p onclick="pluginLogs('phpmyadmin','','error_log');">错误日志</p> |
||||
<p onclick="pluginConfig('phpmyadmin','','config_inc');" title="config.inc.php">配置</p> |
||||
</div> |
||||
<div class="bt-w-con pd15"> |
||||
<div class="soft-man-con"></div> |
||||
</div> |
||||
</div> |
||||
|
||||
</div> |
||||
<script type="text/javascript"> |
||||
resetPluginWinHeight(500); |
||||
$.getScript( "/plugins/file?name=phpmyadmin&f=js/phpmyadmin.js", function(){ |
||||
pluginService('phpmyadmin'); |
||||
}); |
||||
</script> |
@ -0,0 +1,541 @@ |
||||
# coding:utf-8 |
||||
|
||||
import sys |
||||
import io |
||||
import os |
||||
import time |
||||
import re |
||||
import json |
||||
|
||||
web_dir = os.getcwd() + "/web" |
||||
if os.path.exists(web_dir): |
||||
sys.path.append(web_dir) |
||||
os.chdir(web_dir) |
||||
|
||||
import core.mw as mw |
||||
import thisdb |
||||
from utils.site import sites as MwSites |
||||
|
||||
app_debug = False |
||||
if mw.isAppleSystem(): |
||||
app_debug = True |
||||
|
||||
|
||||
def getPluginName(): |
||||
return 'phpldapadmin' |
||||
|
||||
|
||||
def getPluginDir(): |
||||
return mw.getPluginDir() + '/' + getPluginName() |
||||
|
||||
|
||||
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 getConf(): |
||||
return mw.getServerDir() + '/web_conf/nginx/vhost/phpmyadmin.conf' |
||||
|
||||
|
||||
def getConfInc(): |
||||
return getServerDir() + "/" + getCfg()['path'] + '/config.inc.php' |
||||
|
||||
|
||||
def getPort(): |
||||
file = getConf() |
||||
content = mw.readFile(file) |
||||
rep = r'listen\s*(.*);' |
||||
tmp = re.search(rep, content) |
||||
return tmp.groups()[0].strip() |
||||
|
||||
|
||||
def getHomePage(): |
||||
try: |
||||
port = getPort() |
||||
ip = '127.0.0.1' |
||||
if not mw.isAppleSystem(): |
||||
ip = mw.getLocalIp() |
||||
|
||||
cfg = getCfg() |
||||
auth = cfg['username']+':'+cfg['password'] |
||||
rand_path = cfg['path'] |
||||
url = 'http://' + auth + '@' + ip + ':' + port + '/' + rand_path + '/index.php' |
||||
return mw.returnJson(True, 'OK', url) |
||||
except Exception as e: |
||||
return mw.returnJson(False, '插件未启动!') |
||||
|
||||
|
||||
def getPhpVer(expect=55): |
||||
php_vers = MwSites.instance().getPhpVersion() |
||||
v = php_vers['data'] |
||||
is_find = False |
||||
for i in range(len(v)): |
||||
t = str(v[i]['version']) |
||||
if (t == expect): |
||||
is_find = True |
||||
return str(t) |
||||
if not is_find: |
||||
if len(v) > 1: |
||||
return v[1]['version'] |
||||
return v[0]['version'] |
||||
return str(expect) |
||||
|
||||
|
||||
def getCachePhpVer(): |
||||
cacheFile = getServerDir() + '/php.pl' |
||||
v = '' |
||||
if os.path.exists(cacheFile): |
||||
v = mw.readFile(cacheFile) |
||||
else: |
||||
v = getPhpVer() |
||||
mw.writeFile(cacheFile, v) |
||||
return v |
||||
|
||||
|
||||
def contentReplace(content): |
||||
service_path = mw.getServerDir() |
||||
php_ver = getCachePhpVer() |
||||
tmp = mw.execShell( |
||||
'cat /dev/urandom | head -n 32 | md5sum | head -c 16') |
||||
blowfish_secret = tmp[0].strip() |
||||
# print php_ver |
||||
php_conf_dir = mw.getServerDir() + '/web_conf/php/conf' |
||||
content = content.replace('{$ROOT_PATH}', mw.getFatherDir()) |
||||
content = content.replace('{$SERVER_PATH}', service_path) |
||||
content = content.replace('{$PHP_CONF_PATH}', php_conf_dir) |
||||
content = content.replace('{$PHP_VER}', php_ver) |
||||
content = content.replace('{$BLOWFISH_SECRET}', blowfish_secret) |
||||
|
||||
cfg = getCfg() |
||||
|
||||
if cfg['choose'] == "mysql": |
||||
content = content.replace('{$CHOOSE_DB}', 'mysql') |
||||
content = content.replace('{$CHOOSE_DB_DIR}', 'mysql') |
||||
elif cfg['choose'] == "mysql-community": |
||||
content = content.replace('{$CHOOSE_DB}', 'mysql-community') |
||||
content = content.replace('{$CHOOSE_DB_DIR}', 'mysql-community') |
||||
elif cfg['choose'] == "mysql-apt": |
||||
content = content.replace('{$CHOOSE_DB}', 'mysql') |
||||
content = content.replace('{$CHOOSE_DB_DIR}', 'mysql-apt') |
||||
elif cfg['choose'] == "mysql-yum": |
||||
content = content.replace('{$CHOOSE_DB}', 'mysql') |
||||
content = content.replace('{$CHOOSE_DB_DIR}', 'mysql-yum') |
||||
else: |
||||
content = content.replace('{$CHOOSE_DB}', 'MariaDB') |
||||
content = content.replace('{$CHOOSE_DB_DIR}', 'mariadb') |
||||
|
||||
content = content.replace('{$PMA_PATH}', cfg['path']) |
||||
|
||||
port = cfg["port"] |
||||
rep = r'listen\s*(.*);' |
||||
content = re.sub(rep, "listen " + port + ';', content) |
||||
return content |
||||
|
||||
|
||||
def initCfg(): |
||||
cfg = getServerDir() + "/cfg.json" |
||||
if not os.path.exists(cfg): |
||||
data = {} |
||||
data['port'] = '888' |
||||
data['choose'] = 'mysql' |
||||
data['path'] = '' |
||||
data['username'] = 'admin' |
||||
data['password'] = 'admin' |
||||
mw.writeFile(cfg, json.dumps(data)) |
||||
|
||||
|
||||
def setCfg(key, val): |
||||
cfg = getServerDir() + "/cfg.json" |
||||
data = mw.readFile(cfg) |
||||
data = json.loads(data) |
||||
data[key] = val |
||||
mw.writeFile(cfg, json.dumps(data)) |
||||
|
||||
|
||||
def getCfg(): |
||||
cfg = getServerDir() + "/cfg.json" |
||||
data = mw.readFile(cfg) |
||||
data = json.loads(data) |
||||
return data |
||||
|
||||
|
||||
def returnCfg(): |
||||
cfg = getServerDir() + "/cfg.json" |
||||
data = mw.readFile(cfg) |
||||
return data |
||||
|
||||
|
||||
def status(): |
||||
conf = getConf() |
||||
conf_inc = getServerDir() + "/" + getCfg()["path"] + '/config.inc.php' |
||||
# 两个文件都在,才算启动成功 |
||||
if os.path.exists(conf) and os.path.exists(conf_inc): |
||||
return 'start' |
||||
return 'stop' |
||||
|
||||
|
||||
def __release_port(port): |
||||
from collections import namedtuple |
||||
try: |
||||
from utils.firewall import Firewall as MwFirewall |
||||
MwFirewall.instance().addAcceptPort(port, 'phpMyAdmin默认端口', 'port') |
||||
return port |
||||
except Exception as e: |
||||
return "Release failed {}".format(e) |
||||
|
||||
|
||||
def __delete_port(port): |
||||
from collections import namedtuple |
||||
try: |
||||
from utils.firewall import Firewall as MwFirewall |
||||
MwFirewall.instance().delAcceptPortCmd(port, 'tcp') |
||||
return port |
||||
except Exception as e: |
||||
return "Release failed {}".format(e) |
||||
|
||||
|
||||
def openPort(): |
||||
conf = getCfg() |
||||
port = conf['port'] |
||||
for i in [port]: |
||||
__release_port(i) |
||||
return True |
||||
|
||||
|
||||
def delPort(): |
||||
conf = getCfg() |
||||
port = conf['port'] |
||||
for i in [port]: |
||||
__delete_port(i) |
||||
return True |
||||
|
||||
|
||||
def start(): |
||||
initCfg() |
||||
openPort() |
||||
|
||||
pma_dir = getServerDir() + "/phpmyadmin" |
||||
if os.path.exists(pma_dir): |
||||
rand_str = mw.getRandomString(6) |
||||
rand_str = rand_str.lower() |
||||
pma_dir_dst = pma_dir + "_" + rand_str |
||||
mw.execShell("mv " + pma_dir + " " + pma_dir_dst) |
||||
setCfg('path', 'phpmyadmin_' + rand_str) |
||||
|
||||
file_tpl = getPluginDir() + '/conf/phpmyadmin.conf' |
||||
file_run = getConf() |
||||
if not os.path.exists(file_run): |
||||
centent = mw.readFile(file_tpl) |
||||
centent = contentReplace(centent) |
||||
mw.writeFile(file_run, centent) |
||||
|
||||
pma_path = getServerDir() + '/pma.pass' |
||||
if not os.path.exists(pma_path): |
||||
username = mw.getRandomString(8) |
||||
password = mw.getRandomString(10) |
||||
pass_cmd = username + ':' + mw.hasPwd(password) |
||||
setCfg('username', username) |
||||
setCfg('password', password) |
||||
mw.writeFile(pma_path, pass_cmd) |
||||
|
||||
tmp = getServerDir() + "/" + getCfg()["path"] + '/tmp' |
||||
if not os.path.exists(tmp): |
||||
os.mkdir(tmp) |
||||
mw.execShell("chown -R www:www " + tmp) |
||||
|
||||
conf_run = getServerDir() + "/" + getCfg()["path"] + '/config.inc.php' |
||||
if not os.path.exists(conf_run): |
||||
conf_tpl = getPluginDir() + '/conf/config.inc.php' |
||||
centent = mw.readFile(conf_tpl) |
||||
centent = contentReplace(centent) |
||||
mw.writeFile(conf_run, centent) |
||||
|
||||
log_a = accessLog() |
||||
log_e = errorLog() |
||||
|
||||
for i in [log_a, log_e]: |
||||
if os.path.exists(i): |
||||
cmd = "echo '' > " + i |
||||
mw.execShell(cmd) |
||||
|
||||
mw.restartWeb() |
||||
return 'ok' |
||||
|
||||
|
||||
def stop(): |
||||
conf = getConf() |
||||
if os.path.exists(conf): |
||||
os.remove(conf) |
||||
delPort() |
||||
mw.restartWeb() |
||||
return 'ok' |
||||
|
||||
|
||||
def restart(): |
||||
return start() |
||||
|
||||
|
||||
def reload(): |
||||
file_tpl = getPluginDir() + '/conf/phpmyadmin.conf' |
||||
file_run = getConf() |
||||
if os.path.exists(file_run): |
||||
centent = mw.readFile(file_tpl) |
||||
centent = contentReplace(centent) |
||||
mw.writeFile(file_run, centent) |
||||
return start() |
||||
|
||||
|
||||
def setPhpVer(): |
||||
args = getArgs() |
||||
|
||||
if not 'phpver' in args: |
||||
return 'phpver missing' |
||||
|
||||
cacheFile = getServerDir() + '/php.pl' |
||||
mw.writeFile(cacheFile, args['phpver']) |
||||
|
||||
file_tpl = getPluginDir() + '/conf/phpmyadmin.conf' |
||||
file_run = getConf() |
||||
|
||||
content = mw.readFile(file_tpl) |
||||
content = contentReplace(content) |
||||
mw.writeFile(file_run, content) |
||||
|
||||
mw.restartWeb() |
||||
return 'ok' |
||||
|
||||
|
||||
def getSetPhpVer(): |
||||
cacheFile = getServerDir() + '/php.pl' |
||||
if os.path.exists(cacheFile): |
||||
return mw.readFile(cacheFile).strip() |
||||
return '' |
||||
|
||||
|
||||
def getPmaOption(): |
||||
data = getCfg() |
||||
return mw.returnJson(True, 'ok', data) |
||||
|
||||
|
||||
def getPmaPort(): |
||||
try: |
||||
port = getPort() |
||||
return mw.returnJson(True, 'OK', port) |
||||
except Exception as e: |
||||
# print(e) |
||||
return mw.returnJson(False, '插件未启动!') |
||||
|
||||
|
||||
def setPmaPort(): |
||||
args = getArgs() |
||||
data = checkArgs(args, ['port']) |
||||
if not data[0]: |
||||
return data[1] |
||||
|
||||
port = args['port'] |
||||
if port == '80': |
||||
return mw.returnJson(False, '80端不能使用!') |
||||
|
||||
file = getConf() |
||||
if not os.path.exists(file): |
||||
return mw.returnJson(False, '插件未启动!') |
||||
content = mw.readFile(file) |
||||
rep = r'listen\s*(.*);' |
||||
content = re.sub(rep, "listen " + port + ';', content) |
||||
mw.writeFile(file, content) |
||||
|
||||
setCfg("port", port) |
||||
mw.restartWeb() |
||||
return mw.returnJson(True, '修改成功!') |
||||
|
||||
|
||||
def setPmaChoose(): |
||||
args = getArgs() |
||||
data = checkArgs(args, ['choose']) |
||||
if not data[0]: |
||||
return data[1] |
||||
|
||||
choose = args['choose'] |
||||
setCfg('choose', choose) |
||||
|
||||
pma_path = getCfg()['path'] |
||||
conf_run = getServerDir() + "/" + pma_path + '/config.inc.php' |
||||
|
||||
conf_tpl = getPluginDir() + '/conf/config.inc.php' |
||||
content = mw.readFile(conf_tpl) |
||||
content = contentReplace(content) |
||||
mw.writeFile(conf_run, content) |
||||
|
||||
mw.restartWeb() |
||||
return mw.returnJson(True, '修改成功!') |
||||
|
||||
|
||||
def setPmaUsername(): |
||||
args = getArgs() |
||||
data = checkArgs(args, ['username']) |
||||
if not data[0]: |
||||
return data[1] |
||||
|
||||
username = args['username'] |
||||
setCfg('username', username) |
||||
|
||||
cfg = getCfg() |
||||
pma_path = getServerDir() + '/pma.pass' |
||||
username = mw.getRandomString(10) |
||||
pass_cmd = cfg['username'] + ':' + mw.hasPwd(cfg['password']) |
||||
mw.writeFile(pma_path, pass_cmd) |
||||
|
||||
mw.restartWeb() |
||||
return mw.returnJson(True, '修改成功!') |
||||
|
||||
|
||||
def setPmaPassword(): |
||||
args = getArgs() |
||||
data = checkArgs(args, ['password']) |
||||
if not data[0]: |
||||
return data[1] |
||||
|
||||
password = args['password'] |
||||
setCfg('password', password) |
||||
|
||||
cfg = getCfg() |
||||
pma_path = getServerDir() + '/pma.pass' |
||||
username = mw.getRandomString(10) |
||||
pass_cmd = cfg['username'] + ':' + mw.hasPwd(cfg['password']) |
||||
mw.writeFile(pma_path, pass_cmd) |
||||
|
||||
mw.restartWeb() |
||||
return mw.returnJson(True, '修改成功!') |
||||
|
||||
|
||||
def setPmaPath(): |
||||
args = getArgs() |
||||
data = checkArgs(args, ['path']) |
||||
if not data[0]: |
||||
return data[1] |
||||
|
||||
path = args['path'] |
||||
|
||||
if len(path) < 5: |
||||
return mw.returnJson(False, '不能小于5位!') |
||||
|
||||
old_path = getServerDir() + "/" + getCfg()['path'] |
||||
new_path = getServerDir() + "/" + path |
||||
|
||||
mw.execShell("mv " + old_path + " " + new_path) |
||||
setCfg('path', path) |
||||
return mw.returnJson(True, '修改成功!') |
||||
|
||||
|
||||
def accessLog(): |
||||
return getServerDir() + '/access.log' |
||||
|
||||
|
||||
def errorLog(): |
||||
return getServerDir() + '/error.log' |
||||
|
||||
|
||||
def installVersion(): |
||||
return mw.readFile(getServerDir() + '/version.pl') |
||||
|
||||
def pluginsDbSupport(): |
||||
data = {} |
||||
|
||||
data['installed'] = 'no' |
||||
install_path = getServerDir() |
||||
if not os.path.exists(install_path): |
||||
return mw.returnJson(True, 'ok', data) |
||||
|
||||
data['installed'] = 'ok' |
||||
data['status'] = status() |
||||
if (data['status'] == 'stop'): |
||||
return mw.returnJson(True, 'ok', data) |
||||
|
||||
data['cfg'] = getCfg() |
||||
port = getPort() |
||||
ip = '127.0.0.1' |
||||
if not mw.isAppleSystem(): |
||||
ip = thisdb.getOption('server_ip') |
||||
|
||||
cfg = data['cfg'] |
||||
auth = cfg['username']+':'+cfg['password'] |
||||
rand_path = cfg['path'] |
||||
home_page = 'http://' + auth + '@' + ip + ':' + port + '/' + rand_path + '/index.php' |
||||
|
||||
data['home_page'] = home_page |
||||
data['version'] = installVersion().strip() |
||||
|
||||
return mw.returnJson(True, 'ok', data) |
||||
|
||||
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 == 'conf': |
||||
print(getConf()) |
||||
elif func == 'version': |
||||
print(installVersion()) |
||||
elif func == 'get_cfg': |
||||
print(returnCfg()) |
||||
elif func == 'config_inc': |
||||
print(getConfInc()) |
||||
elif func == 'get_home_page': |
||||
print(getHomePage()) |
||||
elif func == 'set_php_ver': |
||||
print(setPhpVer()) |
||||
elif func == 'get_set_php_ver': |
||||
print(getSetPhpVer()) |
||||
elif func == 'get_pma_port': |
||||
print(getPmaPort()) |
||||
elif func == 'set_pma_port': |
||||
print(setPmaPort()) |
||||
elif func == 'get_pma_option': |
||||
print(getPmaOption()) |
||||
elif func == 'set_pma_choose': |
||||
print(setPmaChoose()) |
||||
elif func == 'set_pma_username': |
||||
print(setPmaUsername()) |
||||
elif func == 'set_pma_password': |
||||
print(setPmaPassword()) |
||||
elif func == 'set_pma_path': |
||||
print(setPmaPath()) |
||||
elif func == 'access_log': |
||||
print(accessLog()) |
||||
elif func == 'error_log': |
||||
print(errorLog()) |
||||
elif func == 'plugins_db_support': |
||||
print(pluginsDbSupport()) |
||||
else: |
||||
print('error') |
@ -0,0 +1,15 @@ |
||||
{ |
||||
"title":"phpLDAPadmin", |
||||
"tip":"soft", |
||||
"name":"phpldapadmin", |
||||
"type":"运行环境", |
||||
"ps":"LDAP管理工具", |
||||
"versions":["1.2.6.7"], |
||||
"shell":"install.sh", |
||||
"checks":"server/phpldapadmin", |
||||
"path": "server/phpldapadmin", |
||||
"author":"leenooks", |
||||
"home":"https://github.com/leenooks/phpLDAPadmin", |
||||
"date":"2025-1-28", |
||||
"pid": "2" |
||||
} |
@ -0,0 +1,91 @@ |
||||
#!/bin/bash |
||||
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin:/opt/homebrew/bin |
||||
export PATH |
||||
|
||||
curPath=`pwd` |
||||
rootPath=$(dirname "$curPath") |
||||
rootPath=$(dirname "$rootPath") |
||||
serverPath=$(dirname "$rootPath") |
||||
|
||||
# cd /www/server/mdserver-web && python3 plugins/phpmyadmin/index.py start |
||||
|
||||
if [ -f ${rootPath}/bin/activate ];then |
||||
source ${rootPath}/bin/activate |
||||
fi |
||||
|
||||
if [ "$sys_os" == "Darwin" ];then |
||||
BAK='_bak' |
||||
else |
||||
BAK='' |
||||
fi |
||||
|
||||
sysName=`uname` |
||||
echo "use system: ${sysName}" |
||||
|
||||
if [ "${sysName}" == "Darwin" ]; then |
||||
OSNAME='macos' |
||||
elif grep -Eqi "CentOS" /etc/issue || grep -Eq "CentOS" /etc/*-release; then |
||||
OSNAME='centos' |
||||
elif grep -Eqi "Fedora" /etc/issue || grep -Eq "Fedora" /etc/*-release; then |
||||
OSNAME='fedora' |
||||
elif grep -Eqi "Debian" /etc/issue || grep -Eq "Debian" /etc/*-release; then |
||||
OSNAME='debian' |
||||
elif grep -Eqi "Ubuntu" /etc/issue || grep -Eq "Ubuntu" /etc/*-release; then |
||||
OSNAME='ubuntu' |
||||
elif grep -Eqi "Raspbian" /etc/issue || grep -Eq "Raspbian" /etc/*-release; then |
||||
OSNAME='raspbian' |
||||
else |
||||
OSNAME='unknow' |
||||
fi |
||||
|
||||
Install_App() |
||||
{ |
||||
if [ -d $serverPath/phpldapadmin ];then |
||||
exit 0 |
||||
fi |
||||
|
||||
mkdir -p ${serverPath}/phpldapadmin |
||||
mkdir -p ${serverPath}/source/phpldapadmin |
||||
echo "${1}" > ${serverPath}/phpldapadmin/version.pl |
||||
|
||||
VER=$1 |
||||
|
||||
https://github.com/leenooks/phpLDAPadmin/archive/refs/tags/1.2.6.7.tar.gz |
||||
|
||||
# FDIR=phpMyAdmin-${VER}-all-languages |
||||
FILE=${VER}.tar.gz |
||||
DOWNLOAD=https://github.com/leenooks/phpLDAPadmin/archive/refs/tags/${FILE} |
||||
|
||||
|
||||
if [ ! -f $serverPath/source/phpmyadmin/$FILE ];then |
||||
wget --no-check-certificate -O $serverPath/source/phpldapadmin/$FILE $DOWNLOAD |
||||
fi |
||||
|
||||
if [ ! -d $serverPath/source/phpldapadmin/$FDIR ];then |
||||
cd $serverPath/source/phpldapadmin && tar zxvf $FILE |
||||
fi |
||||
|
||||
cp -r $serverPath/source/phpldapadmin/$FDIR $serverPath/phpldapadmin/ |
||||
cd $serverPath/phpldapadmin/ && mv $FDIR phpldapadmin |
||||
rm -rf $serverPath/source/phpldapadmin/$FDIR |
||||
|
||||
echo '安装完成' |
||||
|
||||
cd ${rootPath} && python3 ${rootPath}/plugins/phpldapadmin/index.py start |
||||
|
||||
} |
||||
|
||||
Uninstall_App() |
||||
{ |
||||
cd ${rootPath} && python3 ${rootPath}/plugins/phpldapadmin/index.py stop |
||||
|
||||
rm -rf ${serverPath}/phpldapadmin |
||||
echo '卸载完成' |
||||
} |
||||
|
||||
action=$1 |
||||
if [ "${1}" == 'install' ];then |
||||
Install_App $2 |
||||
else |
||||
Uninstall_App $2 |
||||
fi |
@ -0,0 +1,184 @@ |
||||
function str2Obj(str){ |
||||
var data = {}; |
||||
kv = str.split('&'); |
||||
for(i in kv){ |
||||
v = kv[i].split('='); |
||||
data[v[0]] = v[1]; |
||||
} |
||||
return data; |
||||
} |
||||
|
||||
function pmaPost(method,args,callback){ |
||||
|
||||
var _args = null;
|
||||
if (typeof(args) == 'string'){ |
||||
_args = JSON.stringify(str2Obj(args)); |
||||
} else { |
||||
_args = JSON.stringify(args); |
||||
} |
||||
|
||||
var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); |
||||
$.post('/plugins/run', {name:'phpmyadmin', func:method, args:_args}, function(data) { |
||||
layer.close(loadT); |
||||
if (!data.status){ |
||||
layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']}); |
||||
return; |
||||
} |
||||
|
||||
if(typeof(callback) == 'function'){ |
||||
callback(data); |
||||
} |
||||
},'json');
|
||||
} |
||||
|
||||
|
||||
function pmaAsyncPost(method,args){ |
||||
|
||||
var _args = null;
|
||||
if (typeof(args) == 'string'){ |
||||
_args = JSON.stringify(str2Obj(args)); |
||||
} else { |
||||
_args = JSON.stringify(args); |
||||
} |
||||
return syncPost('/plugins/run', {name:'phpmyadmin', func:method, args:_args});
|
||||
} |
||||
|
||||
function homePage(){ |
||||
pmaPost('get_home_page', '', function(data){ |
||||
var rdata = $.parseJSON(data.data); |
||||
if (!rdata.status){ |
||||
layer.msg(rdata.msg,{icon:0,time:2000,shade: [0.3, '#000']}); |
||||
return; |
||||
} |
||||
var con = '<button class="btn btn-default btn-sm" onclick="window.open(\'' + rdata.data + '\')">主页</button>'; |
||||
$(".soft-man-con").html(con); |
||||
}); |
||||
} |
||||
|
||||
//phpmyadmin切换php版本
|
||||
function phpVer(version) { |
||||
|
||||
var _version = pmaAsyncPost('get_set_php_ver','') |
||||
if (_version['data'] != ''){ |
||||
version = _version['data']; |
||||
} |
||||
|
||||
$.post('/site/get_php_version', function(data) { |
||||
var rdata = data['data']; |
||||
// console.log(rdata);
|
||||
var body = "<div class='ver line'><span class='tname'>PHP版本</span><select id='phpver' class='bt-input-text mr20' name='phpVersion' style='width:110px'>"; |
||||
var optionSelect = ''; |
||||
for (var i = 0; i < rdata.length; i++) { |
||||
optionSelect = rdata[i].version == version ? 'selected' : ''; |
||||
body += "<option value='" + rdata[i].version + "' " + optionSelect + ">" + rdata[i].name + "</option>" |
||||
} |
||||
body += '</select><button class="btn btn-success btn-sm" onclick="phpVerChange(\'phpversion\',\'get\')">保存</button></div>'; |
||||
$(".soft-man-con").html(body); |
||||
},'json'); |
||||
} |
||||
|
||||
function phpVerChange(type, msg) { |
||||
var phpver = $("#phpver").val(); |
||||
pmaPost('set_php_ver', 'phpver='+phpver, function(data){ |
||||
if ( data.data == 'ok' ){ |
||||
layer.msg('设置成功!',{icon:1,time:2000,shade: [0.3, '#000']}); |
||||
} else { |
||||
layer.msg('设置失败!',{icon:2,time:2000,shade: [0.3, '#000']}); |
||||
} |
||||
}); |
||||
} |
||||
|
||||
|
||||
//phpmyadmin安全设置
|
||||
function safeConf() { |
||||
pmaPost('get_pma_option', {}, function(rdata){ |
||||
var rdata = $.parseJSON(rdata.data); |
||||
if (!rdata.status){ |
||||
layer.msg(rdata.msg,{icon:2,time:2000,shade: [0.3, '#000']}); |
||||
return; |
||||
} |
||||
|
||||
var cfg = rdata.data; |
||||
var con = '<div class="ver line">\ |
||||
<span class="tname">访问端口</span>\ |
||||
<input style="width:110px" class="bt-input-text phpmyadmindk mr20" name="Name" id="pmport" value="' + cfg['port'] + '" placeholder="phpmyadmin访问端口" maxlength="5" type="number">\ |
||||
<button class="btn btn-success btn-sm" onclick="setPamPort()">保存</button>\ |
||||
</div>\ |
||||
<div class="ver line">\ |
||||
<span class="tname">访问切换</span>\ |
||||
<select id="access_choose" class="bt-input-text mr20" name="choose" style="width:110px">\ |
||||
<option value="mariadb" '+(cfg['choose']=="mariadb"?"selected='selected'":"")+'>MariaDB</option>\ |
||||
<option value="mysql" '+ (cfg['choose']=="mysql"?"selected='selected'":"")+'>MySQL</option>\ |
||||
<option value="mysql-community" '+ (cfg['choose']=="mysql-community"?"selected='selected'":"")+'>MySQL[Tar]</option>\ |
||||
<option value="mysql-apt" '+ (cfg['choose']=="mysql-apt"?"selected='selected'":"")+'>MySQL[APT]</option>\ |
||||
<option value="mysql-yum" '+ (cfg['choose']=="mysql-yum"?"selected='selected'":"")+'>MySQL[YUM]</option>\ |
||||
</select>\ |
||||
<button class="btn btn-success btn-sm" onclick="setPmaChoose()">保存</button>\ |
||||
</div>\ |
||||
<div class="ver line">\ |
||||
<span class="tname">用户名</span>\ |
||||
<input style="width:110px" class="bt-input-text mr20" name="username" id="pmport" value="' + cfg['username'] + '" placeholder="认证用户名" type="text">\ |
||||
<button class="btn btn-success btn-sm" onclick="setPmaUsername()">保存</button>\ |
||||
</div>\ |
||||
<div class="ver line">\ |
||||
<span class="tname">密码</span>\ |
||||
<input style="width:110px" class="bt-input-text mr20" name="password" id="pmport" value="' + cfg['password'] + '" placeholder="密码" type="text">\ |
||||
<button class="btn btn-success btn-sm" onclick="setPmaPassword()">保存</button>\ |
||||
</div>\ |
||||
<hr/>\ |
||||
<div class="ver line">\ |
||||
<span class="tname">路径名</span>\ |
||||
<input style="width:180px" class="bt-input-text mr20" name="path" id="pmport" value="' + cfg['path'] + '" placeholder="" type="text">\ |
||||
<button class="btn btn-success btn-sm" onclick="setPmaPath()">保存</button>\ |
||||
</div>'; |
||||
$(".soft-man-con").html(con); |
||||
}); |
||||
} |
||||
|
||||
|
||||
function setPmaChoose(){ |
||||
var choose = $("#access_choose").val(); |
||||
pmaPost('set_pma_choose',{'choose':choose}, function(data){ |
||||
var rdata = $.parseJSON(data.data); |
||||
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); |
||||
}); |
||||
} |
||||
|
||||
function setPmaUsername(){ |
||||
var username = $("input[name=username]").val(); |
||||
pmaPost('set_pma_username',{'username':username}, function(data){ |
||||
var rdata = $.parseJSON(data.data); |
||||
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); |
||||
}); |
||||
} |
||||
|
||||
function setPmaPassword(){ |
||||
var password = $("input[name=password]").val(); |
||||
pmaPost('set_pma_password',{'password':password}, function(data){ |
||||
var rdata = $.parseJSON(data.data); |
||||
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); |
||||
}); |
||||
} |
||||
|
||||
function setPmaPath(){ |
||||
var path = $("input[name=path]").val(); |
||||
pmaPost('set_pma_path',{'path':path}, function(data){ |
||||
var rdata = $.parseJSON(data.data); |
||||
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); |
||||
}); |
||||
} |
||||
|
||||
//修改phpmyadmin端口
|
||||
function setPamPort() { |
||||
var pmport = $("#pmport").val(); |
||||
if (pmport < 80 || pmport > 65535) { |
||||
layer.msg('端口范围不合法!', { icon: 2 }); |
||||
return; |
||||
} |
||||
var data = 'port=' + pmport; |
||||
|
||||
pmaPost('set_pma_port',data, function(data){ |
||||
var rdata = $.parseJSON(data.data); |
||||
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); |
||||
}); |
||||
} |
Loading…
Reference in new issue