mdserver-web/tools.py

186 lines
5.9 KiB
Python
Raw Normal View History

2019-01-15 02:06:17 -05:00
# coding: utf-8
2022-11-14 03:36:39 -05:00
# ---------------------------------------------------------------------------------
# MW-Linux面板
# ---------------------------------------------------------------------------------
# copyright (c) 2018-∞(https://github.com/midoks/mdserver-web) All rights reserved.
# ---------------------------------------------------------------------------------
# Author: midoks <midoks@163.com>
# ---------------------------------------------------------------------------------
# ---------------------------------------------------------------------------------
# 工具箱
# ---------------------------------------------------------------------------------
2019-01-15 02:06:17 -05:00
import sys
import os
import json
import time
sys.path.append(os.getcwd() + "/class/core")
2020-07-10 03:57:25 -04:00
import mw
2021-09-11 00:11:32 -04:00
import db
2022-07-06 21:56:17 -04:00
# cmd = 'ls /usr/local/lib/ | grep python | cut -d \\ -f 1 | awk \'END {print}\''
# info = mw.execShell(cmd)
# p = "/usr/local/lib/" + info[0].strip() + "/site-packages"
# sys.path.append(p)
2019-01-15 02:06:17 -05:00
2022-11-19 03:41:19 -05:00
INIT_DIR = "/etc/rc.d/init.d"
2022-10-05 23:12:01 -04:00
if mw.isAppleSystem():
INIT_DIR = mw.getRunDir() + "/scripts/init.d"
INIT_CMD = INIT_DIR + "/mw"
2022-10-12 23:46:03 -04:00
def mw_input_cmd(msg):
if sys.version_info[0] == 2:
in_val = raw_input(msg)
else:
in_val = input(msg)
return in_val
2022-10-05 23:12:01 -04:00
def mwcli(mw_input=0):
2022-10-05 23:13:09 -04:00
raw_tip = "======================================================"
2022-10-05 23:12:01 -04:00
if not mw_input:
2022-10-05 23:13:09 -04:00
print("===============mdserver-web cli tools=================")
2022-10-05 23:12:01 -04:00
print("(1) 重启面板服务")
print("(2) 停止面板服务")
print("(3) 启动面板服务")
print("(4) 重载面板服务")
2022-10-12 23:46:03 -04:00
print("(5) 修改面板端口")
2022-10-05 23:12:01 -04:00
print("(10) 查看面板默认信息")
print("(11) 修改面板密码")
print("(12) 修改面板用户名")
print("(13) 显示面板错误日志")
2022-11-20 02:04:45 -05:00
print("(20) 关闭BasicAuth认证")
2022-12-03 00:27:24 -05:00
print("(21) 解除域名绑定")
2022-10-05 23:12:01 -04:00
print("(0) 取消")
print(raw_tip)
try:
mw_input = input("请输入命令编号:")
if sys.version_info[0] == 3:
mw_input = int(mw_input)
except:
mw_input = 0
2022-12-03 00:27:24 -05:00
nums = [1, 2, 3, 4, 5, 10, 11, 12, 13, 20, 21]
2022-10-05 23:12:01 -04:00
if not mw_input in nums:
print(raw_tip)
print("已取消!")
exit()
if mw_input == 1:
os.system(INIT_CMD + " restart")
elif mw_input == 2:
os.system(INIT_CMD + " stop")
elif mw_input == 3:
os.system(INIT_CMD + " start")
elif mw_input == 4:
os.system(INIT_CMD + " reload")
2022-10-12 23:46:03 -04:00
elif mw_input == 5:
in_port = mw_input_cmd("请输入新的面板端口:")
in_port_int = int(in_port.strip())
if in_port_int < 65536 and in_port_int > 0:
import firewall_api
firewall_api.firewall_api().addAcceptPortArgs(
in_port, 'WEB面板[TOOLS修改]', 'port')
mw.writeFile('data/port.pl', in_port)
else:
print("|-端口范围在0-65536之间")
return
2022-10-05 23:12:01 -04:00
elif mw_input == 10:
os.system(INIT_CMD + " default")
elif mw_input == 11:
2022-10-12 23:46:03 -04:00
input_pwd = mw_input_cmd("请输入新的面板密码:")
2022-10-05 23:12:01 -04:00
if len(input_pwd.strip()) < 5:
print("|-错误密码长度不能小于5位")
return
set_panel_pwd(input_pwd.strip(), True)
elif mw_input == 12:
2022-11-01 22:19:24 -04:00
input_user = mw_input_cmd("请输入新的面板用户名(>=5位)")
2022-10-05 23:12:01 -04:00
set_panel_username(input_user.strip())
elif mw_input == 13:
os.system('tail -100 ' + mw.getRunDir() + '/logs/error.log')
2022-11-20 02:04:45 -05:00
elif mw_input == 20:
basic_auth = 'data/basic_auth.json'
if os.path.exists(basic_auth):
os.remove(basic_auth)
os.system(INIT_CMD + " restart")
2022-11-20 02:06:01 -05:00
print("|-关闭basic_auth成功")
2022-12-03 02:56:58 -05:00
elif mw_input == 21:
2022-12-03 00:27:24 -05:00
bind_domain = 'data/bind_domain.pl'
if os.path.exists(bind_domain):
os.remove(bind_domain)
os.system(INIT_CMD + " unbind_domain")
print("|-解除域名绑定成功")
2022-10-05 23:12:01 -04:00
2019-01-15 02:06:17 -05:00
def set_panel_pwd(password, ncli=False):
# 设置面板密码
import db
sql = db.Sql()
result = sql.table('users').where('id=?', (1,)).setField(
2020-07-10 03:57:25 -04:00
'password', mw.md5(password))
2019-01-15 02:06:17 -05:00
username = sql.table('users').where('id=?', (1,)).getField('username')
if ncli:
print("|-用户名: " + username)
print("|-新密码: " + password)
else:
print(username)
def set_panel_username(username=None):
# 随机面板用户名
import db
sql = db.Sql()
if username:
if len(username) < 5:
print("|-错误用户名长度不能少于5位")
return
if username in ['admin', 'root']:
print("|-错误,不能使用过于简单的用户名")
return
sql.table('users').where('id=?', (1,)).setField('username', username)
print("|-新用户名: %s" % username)
return
username = sql.table('users').where('id=?', (1,)).getField('username')
if username == 'admin':
2020-07-10 03:57:25 -04:00
username = mw.getRandomString(8).lower()
2019-01-15 02:06:17 -05:00
sql.table('users').where('id=?', (1,)).setField('username', username)
print('username: ' + username)
2022-06-26 05:41:16 -04:00
2022-06-26 05:25:21 -04:00
def getServerIp():
version = sys.argv[2]
2022-06-26 05:41:16 -04:00
ip = mw.execShell(
"curl -{} -sS --connect-timeout 5 -m 60 https://v6r.ipip.net/?format=text".format(version))
print(ip[0])
2019-01-15 02:06:17 -05:00
if __name__ == "__main__":
2022-10-05 23:12:01 -04:00
method = sys.argv[1]
if method == 'panel':
2019-01-15 02:06:17 -05:00
set_panel_pwd(sys.argv[2])
2022-10-05 23:12:01 -04:00
elif method == 'username':
2022-07-17 04:05:05 -04:00
if len(sys.argv) > 2:
2022-07-17 04:02:35 -04:00
set_panel_username(sys.argv[2])
else:
set_panel_username()
2022-10-05 23:12:01 -04:00
elif method == 'getServerIp':
2022-06-26 05:25:21 -04:00
getServerIp()
2022-10-05 23:12:01 -04:00
elif method == "cli":
clinum = 0
try:
if len(sys.argv) > 2:
clinum = int(sys.argv[2]) if sys.argv[2][:6] else sys.argv[2]
except:
clinum = sys.argv[2]
mwcli(clinum)
2019-01-15 02:06:17 -05:00
else:
print('ERROR: Parameter error')