pg up xx3
This commit is contained in:
parent
b2a2ce52a7
commit
7ca8d687d7
|
|
@ -16,7 +16,7 @@ from flask import request
|
|||
class config_api:
|
||||
|
||||
# mariadb 优化
|
||||
__version = '0.9.0'
|
||||
__version = '0.9.0.1'
|
||||
|
||||
def __init__(self):
|
||||
pass
|
||||
|
|
|
|||
|
|
@ -15,10 +15,18 @@ class ORM:
|
|||
__DB_CONN = None
|
||||
__DB_CUR = None
|
||||
__DB_ERR = None
|
||||
__DB_CNF = '/etc/my.cnf'
|
||||
__DB_CNF = '/etc/postgresql.cnf'
|
||||
__DB_SOCKET = '/www/server/postgresql/mysql.sock'
|
||||
__DB_CHARSET = "utf8"
|
||||
|
||||
__DB_TABLE = "" # 被操作的表名称
|
||||
__OPT_WHERE = "" # where条件
|
||||
__OPT_LIMIT = "" # limit条件
|
||||
__OPT_GROUP = "" # group条件
|
||||
__OPT_ORDER = "" # order条件
|
||||
__OPT_FIELD = "*" # field条件
|
||||
__OPT_PARAM = () # where值
|
||||
|
||||
def __Conn(self):
|
||||
'''连接数据库'''
|
||||
try:
|
||||
|
|
@ -55,6 +63,82 @@ class ORM:
|
|||
def getPwd(self):
|
||||
return self.__DB_PASS
|
||||
|
||||
def table(self, table):
|
||||
# 设置表名
|
||||
self.__DB_TABLE = table
|
||||
return self
|
||||
|
||||
def where(self, where, param=()):
|
||||
# WHERE条件
|
||||
if where:
|
||||
self.__OPT_WHERE = " WHERE " + where
|
||||
self.__OPT_PARAM = param
|
||||
return self
|
||||
|
||||
def andWhere(self, where, param):
|
||||
# WHERE条件
|
||||
if where:
|
||||
self.__OPT_WHERE = self.__OPT_WHERE + " and " + where
|
||||
# print(param)
|
||||
# print(self.__OPT_PARAM)
|
||||
self.__OPT_PARAM = self.__OPT_PARAM + param
|
||||
return self
|
||||
|
||||
def order(self, order):
|
||||
# ORDER条件
|
||||
if len(order):
|
||||
self.__OPT_ORDER = " ORDER BY " + order
|
||||
else:
|
||||
self.__OPT_ORDER = ""
|
||||
return self
|
||||
|
||||
def group(self, group):
|
||||
if len(group):
|
||||
self.__OPT_GROUP = " GROUP BY " + group
|
||||
else:
|
||||
self.__OPT_GROUP = ""
|
||||
return self
|
||||
|
||||
def limit(self, limit):
|
||||
# LIMIT条件
|
||||
if len(limit):
|
||||
self.__OPT_LIMIT = " LIMIT " + limit
|
||||
else:
|
||||
self.__OPT_LIMIT = ""
|
||||
return self
|
||||
|
||||
def field(self, field):
|
||||
# FIELD条件
|
||||
if len(field):
|
||||
self.__OPT_FIELD = field
|
||||
return self
|
||||
|
||||
def select(self):
|
||||
# 查询数据集
|
||||
self.__Conn()
|
||||
try:
|
||||
sql = "SELECT " + self.__OPT_FIELD + " FROM " + self.__DB_TABLE + \
|
||||
self.__OPT_WHERE + self.__OPT_GROUP + self.__OPT_ORDER + self.__OPT_LIMIT
|
||||
# print(sql)
|
||||
result = self.__DB_CUR.execute(sql, self.__OPT_PARAM)
|
||||
data = self.__DB_CUR.fetchall()
|
||||
ret = []
|
||||
if self.__OPT_FIELD != "*":
|
||||
field = self.__OPT_FIELD.split(',')
|
||||
for row in data:
|
||||
i = 0
|
||||
field_k = {}
|
||||
for key in field:
|
||||
field_k[key] = row[i]
|
||||
i += 1
|
||||
ret.append(field_k)
|
||||
else:
|
||||
ret = map(list, data)
|
||||
self.__Close()
|
||||
return ret
|
||||
except Exception as ex:
|
||||
return "error: " + str(ex)
|
||||
|
||||
def execute(self, sql):
|
||||
# 执行SQL语句返回受影响行
|
||||
if not self.__Conn():
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ port = 5432
|
|||
listen_addresses='*'
|
||||
unix_socket_directories='{$APP_PATH}/tmp'
|
||||
|
||||
max_connections=200
|
||||
max_wal_size = 1GB
|
||||
min_wal_size = 80MB
|
||||
|
||||
|
|
|
|||
|
|
@ -606,7 +606,7 @@ def importDbBackup():
|
|||
cmd = 'cd ' + mw.getRootDir() + '/backup/database && gzip -d ' + file
|
||||
mw.execShell(cmd)
|
||||
|
||||
pwd = pSqliteDb('config').where('id=?', (1,)).getField('mysql_root')
|
||||
pwd = pSqliteDb('config').where('id=?', (1,)).getField('pg_root')
|
||||
|
||||
mysql_cmd = mw.getRootDir() + '/server/mysql/bin/mysql -uroot -p' + pwd + \
|
||||
' ' + name + ' < ' + file_path_sql
|
||||
|
|
@ -699,7 +699,7 @@ def getDbList():
|
|||
|
||||
info = {}
|
||||
info['root_pwd'] = pSqliteDb('config').where(
|
||||
'id=?', (1,)).getField('mysql_root')
|
||||
'id=?', (1,)).getField('pg_root')
|
||||
data['info'] = info
|
||||
|
||||
return mw.getJson(data)
|
||||
|
|
@ -708,20 +708,14 @@ def getDbList():
|
|||
def syncGetDatabases():
|
||||
pdb = pgDb()
|
||||
psdb = pSqliteDb('databases')
|
||||
data = pdb.query('SELECT * FROM pg_database WHERE datistemplate = false')
|
||||
print(data)
|
||||
return
|
||||
# isError = isSqlError(data)
|
||||
# if isError != None:
|
||||
# return isError
|
||||
users = pdb.query(
|
||||
"select User,Host from mysql.user where User!='root' AND Host!='localhost' AND Host!=''")
|
||||
nameArr = ['information_schema', 'performance_schema', 'mysql', 'sys']
|
||||
data = pdb.table('pg_database').field(
|
||||
'datname').where("datistemplate=false").select()
|
||||
nameArr = ['postgres', ]
|
||||
n = 0
|
||||
|
||||
# print(users)
|
||||
for value in data:
|
||||
vdb_name = value["Database"]
|
||||
vdb_name = value["datname"]
|
||||
b = False
|
||||
for key in nameArr:
|
||||
if vdb_name == key:
|
||||
|
|
@ -732,14 +726,12 @@ def syncGetDatabases():
|
|||
if psdb.where("name=?", (vdb_name,)).count() > 0:
|
||||
continue
|
||||
host = '127.0.0.1'
|
||||
for user in users:
|
||||
if vdb_name == user["User"]:
|
||||
host = user["Host"]
|
||||
break
|
||||
# for user in users:
|
||||
# if vdb_name == user["User"]:
|
||||
# host = user["Host"]
|
||||
# break
|
||||
|
||||
ps = mw.getMsg('INPUT_PS')
|
||||
if vdb_name == 'test':
|
||||
ps = mw.getMsg('DATABASE_TEST')
|
||||
addTime = time.strftime('%Y-%m-%d %X', time.localtime())
|
||||
if psdb.add('name,username,password,accept,ps,addtime', (vdb_name, vdb_name, '', host, ps, addTime)):
|
||||
n += 1
|
||||
|
|
@ -748,12 +740,74 @@ def syncGetDatabases():
|
|||
return mw.returnJson(True, msg)
|
||||
|
||||
|
||||
def addDb():
|
||||
args = getArgs()
|
||||
data = checkArgs(
|
||||
args, ['password', 'name', 'codeing', 'db_user', 'dataAccess', 'ps'])
|
||||
if not data[0]:
|
||||
return data[1]
|
||||
|
||||
if not 'address' in args:
|
||||
address = ''
|
||||
else:
|
||||
address = args['address'].strip()
|
||||
|
||||
dbname = args['name'].strip()
|
||||
dbuser = args['db_user'].strip()
|
||||
codeing = args['codeing'].strip()
|
||||
password = args['password'].strip()
|
||||
dataAccess = args['dataAccess'].strip()
|
||||
ps = args['ps'].strip()
|
||||
|
||||
reg = "^[\w\.-]+$"
|
||||
if not re.match(reg, args['name']):
|
||||
return mw.returnJson(False, '数据库名称不能带有特殊符号!')
|
||||
|
||||
checks = ['root', 'mysql', 'test', 'sys', 'panel_logs']
|
||||
if dbuser in checks or len(dbuser) < 1:
|
||||
return mw.returnJson(False, '数据库用户名不合法!')
|
||||
if dbname in checks or len(dbname) < 1:
|
||||
return mw.returnJson(False, '数据库名称不合法!')
|
||||
|
||||
if len(password) < 1:
|
||||
password = mw.md5(time.time())[0:8]
|
||||
|
||||
wheres = {
|
||||
'utf8': 'utf8_general_ci',
|
||||
'utf8mb4': 'utf8mb4_general_ci',
|
||||
'gbk': 'gbk_chinese_ci',
|
||||
'big5': 'big5_chinese_ci'
|
||||
}
|
||||
|
||||
codeStr = wheres[codeing]
|
||||
|
||||
pdb = pgDb()
|
||||
psdb = pSqliteDb('databases')
|
||||
if psdb.where("name=? or username=?", (dbname, dbuser)).count():
|
||||
return mw.returnJson(False, '数据库已存在!')
|
||||
|
||||
result = pdb.execute("create database " + dbname)
|
||||
|
||||
print(result)
|
||||
return
|
||||
|
||||
# pdb.execute("drop user '" + dbuser + "'@'localhost'")
|
||||
# for a in address.split(','):
|
||||
# pdb.execute("drop user '" + dbuser + "'@'" + a + "'")
|
||||
|
||||
# __createUser(dbname, dbuser, password, address)
|
||||
|
||||
addTime = time.strftime('%Y-%m-%d %X', time.localtime())
|
||||
psdb.add('pid,name,username,password,accept,ps,addtime',
|
||||
(0, dbname, dbuser, password, address, ps, addTime))
|
||||
return mw.returnJson(True, '添加成功!')
|
||||
|
||||
|
||||
def installPreInspection(version):
|
||||
return 'ok'
|
||||
|
||||
|
||||
def uninstallPreInspection(version):
|
||||
# return "请手动删除MySQL[{}]".format(version)
|
||||
return 'ok'
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
@ -800,6 +854,8 @@ if __name__ == "__main__":
|
|||
print(setPgPort())
|
||||
elif func == 'get_db_list':
|
||||
print(getDbList())
|
||||
elif func == 'add_db':
|
||||
print(addDb())
|
||||
elif func == 'sync_get_databases':
|
||||
print(syncGetDatabases())
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -1,85 +0,0 @@
|
|||
#!/bin/bash
|
||||
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
|
||||
export PATH
|
||||
# LANG=en_US.UTF-8
|
||||
is64bit=`getconf LONG_BIT`
|
||||
|
||||
if [ -f /etc/motd ];then
|
||||
echo "welcome to mdserver-web panel" > /etc/motd
|
||||
fi
|
||||
|
||||
startTime=`date +%s`
|
||||
|
||||
_os=`uname`
|
||||
echo "use system: ${_os}"
|
||||
|
||||
if [ "$EUID" -ne 0 ]
|
||||
then echo "Please run as root!"
|
||||
exit
|
||||
fi
|
||||
|
||||
|
||||
|
||||
if [ ${_os} == "Darwin" ]; then
|
||||
OSNAME='macos'
|
||||
elif grep -Eq "openSUSE" /etc/*-release; then
|
||||
OSNAME='opensuse'
|
||||
zypper refresh
|
||||
elif grep -Eq "FreeBSD" /etc/*-release; then
|
||||
OSNAME='freebsd'
|
||||
elif grep -Eqi "CentOS" /etc/issue || grep -Eq "CentOS" /etc/*-release; then
|
||||
OSNAME='centos'
|
||||
yum install -y wget zip unzip
|
||||
elif grep -Eqi "Fedora" /etc/issue || grep -Eq "Fedora" /etc/*-release; then
|
||||
OSNAME='fedora'
|
||||
yum install -y wget zip unzip
|
||||
elif grep -Eqi "Rocky" /etc/issue || grep -Eq "Rocky" /etc/*-release; then
|
||||
OSNAME='rocky'
|
||||
yum install -y wget zip unzip
|
||||
elif grep -Eqi "AlmaLinux" /etc/issue || grep -Eq "AlmaLinux" /etc/*-release; then
|
||||
OSNAME='alma'
|
||||
yum install -y wget zip unzip
|
||||
elif grep -Eqi "Debian" /etc/issue || grep -Eq "Debian" /etc/*-release; then
|
||||
OSNAME='debian'
|
||||
apt update -y
|
||||
apt install -y devscripts
|
||||
apt install -y wget zip unzip
|
||||
elif grep -Eqi "Ubuntu" /etc/issue || grep -Eq "Ubuntu" /etc/*-release; then
|
||||
OSNAME='ubuntu'
|
||||
apt install -y wget zip unzip
|
||||
else
|
||||
OSNAME='unknow'
|
||||
fi
|
||||
|
||||
|
||||
if [ $OSNAME != "macos" ];then
|
||||
mkdir -p /www/server
|
||||
mkdir -p /www/wwwroot
|
||||
mkdir -p /www/wwwlogs
|
||||
mkdir -p /www/backup/database
|
||||
mkdir -p /www/backup/site
|
||||
|
||||
if [ ! -d /www/server/mdserver-web ];then
|
||||
wget -O /tmp/master.zip https://gitee.com/midoks/mdserver-web/repository/archive/master.zip
|
||||
cd /tmp && unzip /tmp/master.zip
|
||||
mv -f /tmp/mdserver-web-master /www/server/mdserver-web
|
||||
rm -rf /tmp/master.zip
|
||||
rm -rf /tmp/mdserver-web-master
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "use system version: ${OSNAME}"
|
||||
cd /www/server/mdserver-web && bash scripts/install/${OSNAME}.sh
|
||||
|
||||
chmod +x /www/server/mdserver-web/mw-cli
|
||||
if [ ! -e /usr/bin/mw-cli ]; then
|
||||
ln -s /www/server/mdserver-web/mw-cli /usr/bin/mw-cli
|
||||
fi
|
||||
|
||||
endTime=`date +%s`
|
||||
((outTime=(${endTime}-${startTime})/60))
|
||||
echo -e "Time consumed:\033[32m $outTime \033[0mMinute!"
|
||||
|
||||
systemctl daemon-reload
|
||||
|
||||
|
||||
|
|
@ -1,62 +0,0 @@
|
|||
#!/bin/bash
|
||||
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
|
||||
export PATH
|
||||
# LANG=en_US.UTF-8
|
||||
is64bit=`getconf LONG_BIT`
|
||||
|
||||
startTime=`date +%s`
|
||||
|
||||
_os=`uname`
|
||||
echo "use system: ${_os}"
|
||||
|
||||
if [ "$EUID" -ne 0 ]
|
||||
then echo "Please run as root!"
|
||||
exit
|
||||
fi
|
||||
|
||||
|
||||
|
||||
if [ ${_os} == "Darwin" ]; then
|
||||
OSNAME='macos'
|
||||
elif grep -Eq "openSUSE" /etc/*-release; then
|
||||
OSNAME='opensuse'
|
||||
zypper refresh
|
||||
elif grep -Eq "FreeBSD" /etc/*-release; then
|
||||
OSNAME='freebsd'
|
||||
elif grep -Eqi "CentOS" /etc/issue || grep -Eq "CentOS" /etc/*-release; then
|
||||
OSNAME='centos'
|
||||
yum install -y wget zip unzip
|
||||
elif grep -Eqi "Fedora" /etc/issue || grep -Eq "Fedora" /etc/*-release; then
|
||||
OSNAME='fedora'
|
||||
yum install -y wget zip unzip
|
||||
elif grep -Eqi "Rocky" /etc/issue || grep -Eq "Rocky" /etc/*-release; then
|
||||
OSNAME='rocky'
|
||||
yum install -y wget zip unzip
|
||||
elif grep -Eqi "AlmaLinux" /etc/issue || grep -Eq "AlmaLinux" /etc/*-release; then
|
||||
OSNAME='alma'
|
||||
yum install -y wget zip unzip
|
||||
elif grep -Eqi "Debian" /etc/issue || grep -Eq "Debian" /etc/*-release; then
|
||||
OSNAME='debian'
|
||||
apt install -y wget zip unzip
|
||||
elif grep -Eqi "Ubuntu" /etc/issue || grep -Eq "Ubuntu" /etc/*-release; then
|
||||
OSNAME='ubuntu'
|
||||
apt install -y wget zip unzip
|
||||
elif grep -Eqi "Raspbian" /etc/issue || grep -Eq "Raspbian" /etc/*-release; then
|
||||
OSNAME='raspbian'
|
||||
else
|
||||
OSNAME='unknow'
|
||||
fi
|
||||
|
||||
wget -O /tmp/master.zip https://gitee.com/midoks/mdserver-web/repository/archive/master.zip
|
||||
cd /tmp && unzip /tmp/master.zip
|
||||
cp -rf /tmp/mdserver-web-master/* /www/server/mdserver-web
|
||||
rm -rf /tmp/master.zip
|
||||
rm -rf /tmp/mdserver-web-master
|
||||
|
||||
#pip uninstall public
|
||||
echo "use system version: ${OSNAME}"
|
||||
cd /www/server/mdserver-web && bash scripts/update/${OSNAME}.sh
|
||||
|
||||
endTime=`date +%s`
|
||||
((outTime=($endTime-$startTime)/60))
|
||||
echo -e "Time consumed:\033[32m $outTime \033[0mMinute!"
|
||||
|
|
@ -1,47 +1,13 @@
|
|||
[
|
||||
{
|
||||
"version": "0.9.9",
|
||||
"version": "0.9.1",
|
||||
"content": "* 主流系统支持。<br/> * 插件支持更多参数。<br/>* MySQL主从支持GTID和经典模式。<br/>* MariaDB主从支持GTID和经典模式。<br/>* Rsyncd更新。<br/>* 添加网站统计的插件。<br/>* 添加varnish插件。",
|
||||
"path": "https://github.com/midoks/mdserver-web/releases/download/0.9.9/mdserver-web.zip",
|
||||
"purge":"https://purge.jsdelivr.net/gh/midoks/mdserver-web@latest/scripts/update.sh",
|
||||
},
|
||||
{
|
||||
"version": "0.9.0",
|
||||
"content": "* 主流系统支持。<br/> * 插件支持更多参数。<br/>* MySQL主从支持GTID和经典模式。<br/>* MariaDB主从支持GTID和经典模式。<br/>* Rsyncd更新。<br/>* 添加网站统计的插件。<br/>* 添加varnish插件。",
|
||||
"path": "https://github.com/midoks/mdserver-web/releases/download/0.9.0/mdserver-web.zip"
|
||||
},
|
||||
{
|
||||
"version": "0.8.6",
|
||||
"content": "* mysql主从配置。<br/> * swap插件[虚拟内存]。<br/> * 部分优化。",
|
||||
"path": "https://github.com/midoks/mdserver-web/releases/download/0.8.6/mdserver-web.zip"
|
||||
},
|
||||
{
|
||||
"version": "0.8.5",
|
||||
"content": "* 添加PHP80版本-Alpha <br/> * 自动识别IP地址 <br/> * 增加xhprof插件",
|
||||
"path": "https://github.com/midoks/mdserver-web/releases/download/0.8.5/mdserver-web.zip"
|
||||
},
|
||||
{
|
||||
"version": "0.7.3",
|
||||
"content": "* 修复自动更新错误 <br/> * 优化文件批量处理 <br/> * 添加PHP守护插件",
|
||||
"path": "https://github.com/midoks/mdserver-web/releases/download/0.7.3/mdserver-web.zip"
|
||||
},
|
||||
{
|
||||
"version": "0.5.6",
|
||||
"content": "* openresty,php,mysql,memcached,redis,pureftp,sphinx自启动添加 <br/> * 修复rsync自启动问题",
|
||||
"path": "https://github.com/midoks/mdserver-web/releases/download/0.5.6/mdserver-web.zip"
|
||||
},
|
||||
{
|
||||
"version": "0.4.2",
|
||||
"content": "* ssh工具优化<br/>* 面板收藏功能完成<br/>* 网站子目录绑定<br/>* 网站备份<br/>* 自动更新优化",
|
||||
"path": "https://github.com/midoks/mdserver-web/releases/download/0.4.2/mdserver-web.zip"
|
||||
},
|
||||
{
|
||||
"version": "0.0.6",
|
||||
"content": "1.修复重复js方法",
|
||||
"path": "https://github.com//midoks/mdserver-web/archive/0.0.6.zip"
|
||||
},
|
||||
{
|
||||
"version": "0.0.5",
|
||||
"content": "1.基本功能OK<br/>,2.网站HTTPS功能验证!",
|
||||
"path": "https://github.com//midoks/mdserver-web/archive/0.0.5.zip"
|
||||
},
|
||||
{
|
||||
"version": "0.0.1.2",
|
||||
"content": "1.项目初建!<br/>2.面板更新功能!",
|
||||
"path": "https://github.com/midoks/mdserver-web/releases/download/0.0.1/mdserver-web.zip"
|
||||
}
|
||||
]
|
||||
Loading…
Reference in New Issue