mirror of https://github.com/Aidaho12/haproxy-wi
83 lines
2.4 KiB
Python
83 lines
2.4 KiB
Python
from app.modules.db.db_model import Cred, Server
|
|
from app.modules.db.common import out_error
|
|
from app.modules.roxywi.exception import RoxywiResourceNotFound
|
|
|
|
|
|
def select_ssh(**kwargs):
|
|
if kwargs.get("group") and kwargs.get("cred_id") and kwargs.get("not_shared"):
|
|
query = Cred.select().where(
|
|
((Cred.id == kwargs.get('cred_id')) & (Cred.group_id == kwargs.get('group'))) |
|
|
((Cred.id == kwargs.get('cred_id')) & (Cred.shared == 1))
|
|
)
|
|
elif kwargs.get("group") and kwargs.get("cred_id"):
|
|
query = Cred.select().where(
|
|
((Cred.id == kwargs.get('cred_id')) & (Cred.group_id == kwargs.get('group'))) |
|
|
(Cred.shared == 1)
|
|
)
|
|
elif kwargs.get("name") is not None:
|
|
query = Cred.select().where(Cred.name == kwargs.get('name'))
|
|
elif kwargs.get("id") is not None:
|
|
query = Cred.select().where(Cred.id == kwargs.get('id'))
|
|
elif kwargs.get("serv") is not None:
|
|
query = Cred.select().join(Server, on=(Cred.id == Server.cred_id)).where(Server.ip == kwargs.get('serv'))
|
|
elif kwargs.get("group") is not None:
|
|
query = Cred.select().where((Cred.group_id == kwargs.get("group")) | (Cred.shared == 1))
|
|
else:
|
|
query = Cred.select()
|
|
try:
|
|
query_res = query.execute()
|
|
except Cred.DoesNotExist:
|
|
raise RoxywiResourceNotFound
|
|
except Exception as e:
|
|
out_error(e)
|
|
else:
|
|
return query_res
|
|
|
|
|
|
def insert_new_ssh(name, enable, group, username, password, shared):
|
|
if password is None:
|
|
password = 'None'
|
|
try:
|
|
return Cred.insert(name=name, key_enabled=enable, group_id=group, username=username, password=password, shared=shared).execute()
|
|
except Exception as e:
|
|
out_error(e)
|
|
|
|
|
|
def delete_ssh(ssh_id):
|
|
query = Cred.delete().where(Cred.id == ssh_id)
|
|
try:
|
|
query.execute()
|
|
except Exception as e:
|
|
out_error(e)
|
|
else:
|
|
return True
|
|
|
|
|
|
def update_ssh(cred_id: int, name: str, enable: int, group: int, username: str, password: bytes, shared: int):
|
|
if password is None:
|
|
password = 'None'
|
|
|
|
cred_update = Cred.update(
|
|
name=name, key_enabled=enable, group_id=group, username=username, password=password, shared=shared
|
|
).where(Cred.id == cred_id)
|
|
try:
|
|
cred_update.execute()
|
|
except Exception as e:
|
|
out_error(e)
|
|
|
|
|
|
def update_ssh_passphrase(cred_id: int, passphrase: str):
|
|
try:
|
|
Cred.update(passphrase=passphrase).where(Cred.id == cred_id).execute()
|
|
except Exception as e:
|
|
out_error(e)
|
|
|
|
|
|
def get_ssh(ssh_id: int) -> Cred:
|
|
try:
|
|
return Cred.get(Cred.id == ssh_id)
|
|
except Cred.DoesNotExist:
|
|
raise RoxywiResourceNotFound
|
|
except Exception as e:
|
|
out_error(e)
|