You've already forked haproxy-wi
mirror of
https://github.com/roxy-wi/roxy-wi.git
synced 2025-12-18 12:04:07 +08:00
Replaced multiple SQL function calls with consistent `get_server` naming. Consolidated and streamlined the function calls to `get_server` and `get_server_by_ip` to ensure consistency and improve maintainability across the codebase. Removed obsolete and redundant function definitions that were no longer in use.
244 lines
6.3 KiB
Python
244 lines
6.3 KiB
Python
from peewee import IntegrityError, DoesNotExist
|
|
|
|
from app.modules.db.db_model import mysql_enable, connect, Server, SystemInfo
|
|
from app.modules.db.common import out_error, not_unique_error
|
|
from app.modules.roxywi.exception import RoxywiResourceNotFound
|
|
|
|
|
|
def add_server(**kwargs):
|
|
try:
|
|
return Server.insert(**kwargs).execute()
|
|
except IntegrityError as e:
|
|
not_unique_error(e)
|
|
except Exception as e:
|
|
out_error(e)
|
|
|
|
|
|
def delete_server(server_id):
|
|
try:
|
|
server_for_delete = Server.delete().where(Server.server_id == server_id)
|
|
server_for_delete.execute()
|
|
except Exception as e:
|
|
out_error(e)
|
|
else:
|
|
return True
|
|
|
|
|
|
def update_server(hostname, ip, group, type_ip, enable, master, server_id, cred, port, desc, firewall, protected):
|
|
try:
|
|
server_update = Server.update(
|
|
hostname=hostname, ip=ip, group_id=group, type_ip=type_ip, enabled=enable, master=master, cred_id=cred,
|
|
port=port, description=desc, firewall_enable=firewall, protected=protected
|
|
).where(Server.server_id == server_id)
|
|
server_update.execute()
|
|
except Exception as e:
|
|
out_error(e)
|
|
|
|
|
|
def get_server(server_id: int) -> Server:
|
|
try:
|
|
return Server.get(Server.server_id == server_id)
|
|
except DoesNotExist:
|
|
raise RoxywiResourceNotFound
|
|
except Exception as e:
|
|
return out_error(e)
|
|
|
|
|
|
def get_server_by_ip(server_ip: str) -> Server:
|
|
try:
|
|
return Server.get(Server.ip == server_ip)
|
|
except DoesNotExist:
|
|
raise RoxywiResourceNotFound
|
|
except Exception as e:
|
|
return out_error(e)
|
|
|
|
|
|
def insert_system_info(
|
|
server_id: int, os_info: str, sys_info: dict, cpu: dict, ram: dict, network: dict, disks: dict
|
|
):
|
|
try:
|
|
SystemInfo.insert(
|
|
server_id=server_id, os_info=os_info, sys_info=sys_info, cpu=cpu, ram=ram, network=network, disks=disks
|
|
).on_conflict('replace').execute()
|
|
except Exception as e:
|
|
out_error(e)
|
|
|
|
|
|
def delete_system_info(server_id: int):
|
|
try:
|
|
SystemInfo.delete().where(SystemInfo.server_id == server_id).execute()
|
|
except Exception as e:
|
|
out_error(e)
|
|
|
|
|
|
def select_one_system_info(server_id: int):
|
|
try:
|
|
return SystemInfo.select().where(SystemInfo.server_id == server_id).execute()
|
|
except Exception as e:
|
|
out_error(e)
|
|
|
|
|
|
def is_system_info(server_id):
|
|
try:
|
|
query_res = SystemInfo.get(SystemInfo.server_id == server_id).server_id
|
|
except Exception:
|
|
return True
|
|
else:
|
|
if query_res:
|
|
return True
|
|
else:
|
|
return False
|
|
|
|
|
|
def select_os_info(server_id):
|
|
try:
|
|
return SystemInfo.get(SystemInfo.server_id == server_id).os_info
|
|
except DoesNotExist:
|
|
raise RoxywiResourceNotFound
|
|
except Exception as e:
|
|
out_error(e)
|
|
|
|
|
|
def update_firewall(serv):
|
|
try:
|
|
Server.update(firewall_enable=1).where(Server.ip == serv).execute()
|
|
except Exception as e:
|
|
out_error(e)
|
|
|
|
|
|
def return_firewall(serv):
|
|
try:
|
|
query_res = Server.get(Server.ip == serv).firewall_enable
|
|
except Exception:
|
|
return False
|
|
else:
|
|
return True if query_res == 1 else False
|
|
|
|
|
|
def update_server_pos(pos, server_id) -> str:
|
|
try:
|
|
Server.update(pos=pos).where(Server.server_id == server_id).execute()
|
|
return 'ok'
|
|
except Exception as e:
|
|
out_error(e)
|
|
|
|
|
|
def is_serv_protected(serv):
|
|
try:
|
|
query_res = Server.get(Server.ip == serv)
|
|
except Exception:
|
|
return ""
|
|
else:
|
|
return True if query_res.protected else False
|
|
|
|
|
|
def select_servers(**kwargs):
|
|
conn = connect()
|
|
cursor = conn.cursor()
|
|
|
|
if mysql_enable == '1':
|
|
sql = """select * from `servers` ORDER BY hostname """
|
|
|
|
if kwargs.get("server") is not None:
|
|
sql = """select * from `servers` where `ip` = '{}' """.format(kwargs.get("server"))
|
|
else:
|
|
sql = """select * from servers ORDER BY hostname """
|
|
|
|
if kwargs.get("server") is not None:
|
|
sql = """select * from servers where ip = '{}' """.format(kwargs.get("server"))
|
|
|
|
try:
|
|
cursor.execute(sql)
|
|
except Exception as e:
|
|
out_error(e)
|
|
else:
|
|
return cursor.fetchall()
|
|
|
|
|
|
def get_dick_permit(group_id, **kwargs):
|
|
only_group = kwargs.get('only_group')
|
|
disable = 'enabled = 1'
|
|
haproxy = ''
|
|
nginx = ''
|
|
keepalived = ''
|
|
apache = ''
|
|
ip = ''
|
|
|
|
if kwargs.get('virt'):
|
|
type_ip = ""
|
|
else:
|
|
type_ip = "and type_ip = 0"
|
|
if kwargs.get('disable') == 0:
|
|
disable = '(enabled = 1 or enabled = 0)'
|
|
if kwargs.get('ip'):
|
|
ip = "and ip = '%s'" % kwargs.get('ip')
|
|
if kwargs.get('haproxy') or kwargs.get('service') == 'haproxy':
|
|
haproxy = "and haproxy = 1"
|
|
if kwargs.get('nginx') or kwargs.get('service') == 'nginx':
|
|
nginx = "and nginx = 1"
|
|
if kwargs.get('keepalived') or kwargs.get('service') == 'keepalived':
|
|
keepalived = "and keepalived = 1"
|
|
if kwargs.get('apache') or kwargs.get('service') == 'apache':
|
|
apache = "and apache = 1"
|
|
conn = connect()
|
|
cursor = conn.cursor()
|
|
try:
|
|
if mysql_enable == '1':
|
|
if group_id == '1' and not only_group:
|
|
sql = f" select * from `servers` where {disable} {type_ip} {nginx} {haproxy} {keepalived} {apache} {ip} order by `pos` asc"
|
|
else:
|
|
sql = f" select * from `servers` where `group_id` = {group_id} and ({disable}) {type_ip} {ip} {haproxy} {nginx} {keepalived} {apache} order by `pos` asc"
|
|
else:
|
|
if group_id == '1' and not only_group:
|
|
sql = f" select * from servers where {disable} {type_ip} {nginx} {haproxy} {keepalived} {apache} {ip} order by pos"
|
|
else:
|
|
sql = f" select * from servers where group_id = '{group_id}' and ({disable}) {type_ip} {ip} {haproxy} {nginx} {keepalived} {apache} order by pos"
|
|
|
|
except Exception as e:
|
|
raise Exception(f'error: {e}')
|
|
|
|
try:
|
|
cursor.execute(sql)
|
|
except Exception as e:
|
|
out_error(e)
|
|
else:
|
|
return cursor.fetchall()
|
|
|
|
|
|
def is_master(ip, **kwargs):
|
|
conn = connect()
|
|
cursor = conn.cursor()
|
|
if kwargs.get('master_slave'):
|
|
sql = """ select master.hostname, master.ip, slave.hostname, slave.ip
|
|
from servers as master
|
|
left join servers as slave on master.id = slave.master
|
|
where slave.master > 0 """
|
|
else:
|
|
sql = """ select slave.ip, slave.hostname from servers as master
|
|
left join servers as slave on master.id = slave.master
|
|
where master.ip = '%s' """ % ip
|
|
try:
|
|
cursor.execute(sql)
|
|
except Exception as e:
|
|
out_error(e)
|
|
else:
|
|
return cursor.fetchall()
|
|
|
|
|
|
def get_server_with_group(server_id: int, group_id: int) -> Server:
|
|
try:
|
|
return Server.get((Server.server_id == server_id) & (Server.group_id == group_id))
|
|
except DoesNotExist:
|
|
raise RoxywiResourceNotFound
|
|
except Exception as e:
|
|
out_error(e)
|
|
|
|
|
|
def select_servers_with_group(group_id: int) -> Server:
|
|
try:
|
|
return Server.select().where(Server.group_id == group_id)
|
|
except DoesNotExist:
|
|
raise RoxywiResourceNotFound
|
|
except Exception as e:
|
|
out_error(e)
|