#!/usr/bin/env python3 # -*- coding: utf-8 -*-" import cgi import create_db import funct mysql_enable = funct.get_config_var('mysql', 'enable') if mysql_enable == '1': from mysql.connector import errorcode import mysql.connector as sqltool else: import sqlite3 as sqltool def add_user(user, email, password, role, group): con, cur = create_db.get_cur() sql = """INSERT INTO user (username, email, password, role, groups) VALUES ('%s', '%s', '%s', '%s', '%s')""" % (user, email, password, role, group) try: cur.execute(sql) con.commit() except sqltool.Error as e: print('An error occurred: ' + e.args[0] + ' X') con.rollback() return False else: return True cur.close() con.close() def update_user(user, email, password, role, group, id): con, cur = create_db.get_cur() sql = """update user set username = '%s', email = '%s', password = '%s', role = '%s', groups = '%s' where id = '%s'""" % (user, email, password, role, group, id) try: cur.execute(sql) con.commit() except sqltool.Error as e: print('An error occurred: ' + e.args[0] + ' X') con.rollback() return False else: return True cur.close() con.close() def delete_user(id): con, cur = create_db.get_cur() sql = """delete from user where id = '%s'""" % (id) try: cur.execute(sql) con.commit() except sqltool.Error as e: print("An error occurred:", e.args[0]) con.rollback() else: return True cur.close() def add_group(name, description): con, cur = create_db.get_cur() sql = """INSERT INTO groups (name, description) VALUES ('%s', '%s')""" % (name, description) try: cur.execute(sql) con.commit() except sqltool.Error as e: print('An error occurred: ' + e.args[0] + ' X') con.rollback() return False else: print(cur.lastrowid) return True cur.close() con.close() def delete_group(id): con, cur = create_db.get_cur() sql = """delete from groups where id = '%s'""" % (id) try: cur.execute(sql) con.commit() except sqltool.Error as e: print('An error occurred: ' + e.args[0] + ' X') con.rollback() else: return True cur.close() con.close() def update_group(name, descript, id): con, cur = create_db.get_cur() sql = """ update groups set name = '%s', description = '%s' where id = '%s'; """ % (name, descript, id) try: cur.execute(sql) con.commit() except sqltool.Error as e: print('An error occurred: ' + e.args[0] + ' X') con.rollback() return False else: return True cur.close() con.close() def add_server(hostname, ip, group, typeip, enable, master): con, cur = create_db.get_cur() sql = """INSERT INTO servers (hostname, ip, groups, type_ip, enable, master) VALUES ('%s', '%s', '%s', '%s', '%s', '%s')""" % (hostname, ip, group, typeip, enable, master) try: cur.execute(sql) con.commit() return True except sqltool.Error as e: print('An error occurred: ' + e.args[0] + ' X') con.rollback() return False cur.close() con.close() def delete_server(id): con, cur = create_db.get_cur() sql = """delete from servers where id = '%s'""" % (id) try: cur.execute(sql) con.commit() except sqltool.Error as e: print('An error occurred: ' + e.args[0] + ' X') con.rollback() else: return True cur.close() con.close() def update_server(hostname, ip, group, typeip, enable, master, id): con, cur = create_db.get_cur() sql = """update servers set hostname = '%s', ip = '%s', groups = '%s', type_ip = '%s', enable = '%s', master = '%s' where id = '%s'""" % (hostname, ip, group, typeip, enable, master, id) try: cur.execute(sql) con.commit() except sqltool.Error as e: print('An error occurred: ' + e.args[0] + ' X') con.rollback() cur.close() con.close() def update_server_master(master, slave): con, cur = create_db.get_cur() sql = """ select id from servers where ip = '%s' """ % master try: cur.execute(sql) except sqltool.Error as e: print('An error occurred: ' + e + ' X') for id in cur.fetchall(): sql = """ update servers set master = '%s' where ip = '%s' """ % (id[0], slave) try: cur.execute(sql) con.commit() except sqltool.Error as e: print('An error occurred: ' + e + ' X') con.rollback() cur.close() con.close() def select_users(**kwargs): con, cur = create_db.get_cur() sql = """select * from user ORDER BY id""" if kwargs.get("user") is not None: sql = """select * from user where username='%s' """ % kwargs.get("user") try: cur.execute(sql) except sqltool.Error as e: print("An error occurred:", e.args[0]) else: return cur.fetchall() cur.close() con.close() def select_groups(**kwargs): con, cur = create_db.get_cur() sql = """select * from groups ORDER BY id""" if kwargs.get("group") is not None: sql = """select * from groups where name='%s' """ % kwargs.get("group") try: cur.execute(sql) except sqltool.Error as e: print('An error occurred: ' + e.args[0] + ' X') else: return cur.fetchall() cur.close() con.close() def select_user_name_group(id): con, cur = create_db.get_cur() sql = """select name from groups where id='%s' """ % id try: cur.execute(sql) except sqltool.Error as e: print('An error occurred: ' + e + ' X') else: for group in cur.fetchone(): return group cur.close() con.close() def select_servers(**kwargs): con, cur = create_db.get_cur() sql = """select * from servers where enable = '1' ORDER BY groups """ if kwargs.get("server") is not None: sql = """select * from servers where ip='%s' """ % kwargs.get("server") if kwargs.get("full") is not None: sql = """select * from servers ORDER BY groups """ if kwargs.get("get_master_servers") is not None: sql = """select id,hostname from servers where master = 0 and type_ip = 0 and enable = 1 ORDER BY groups """ try: cur.execute(sql) except sqltool.Error as e: print("An error occurred:", e.args[0]) else: return cur.fetchall() cur.close() con.close() def get_type_ip_checkbox(id, **kwargs): con, cur = create_db.get_cur() sql = """select id, type_ip from servers where id='%s' """ % id try: cur.execute(sql) except sqltool.Error as e: print("An error occurred:", e.args[0]) else: for server in cur.fetchall(): if server[1] == 1: checked = 'checked' else: checked = "" print('' % (server[0],server[0], checked)) cur.close() con.close() def get_enable_checkbox(id, **kwargs): con, cur = create_db.get_cur() sql = """select id, enable from servers where id='%s' """ % id try: cur.execute(sql) except sqltool.Error as e: print("An error occurred:", e.args[0]) else: for server in cur.fetchall(): if server[1] == 1: checked = 'checked' else: checked = "" print('' % (server[0],server[0], checked)) cur.close() con.close() def write_user_uuid(login, user_uuid): con, cur = create_db.get_cur() session_ttl = funct.get_config_var('main', 'session_ttl') session_ttl = int(session_ttl) sql = """ select id from user where username = '%s' """ % login try: cur.execute(sql) except sqltool.Error as e: print('An error occurred: ' + e.args[0] + ' X') for id in cur.fetchall(): if mysql_enable == '1': sql = """ insert into uuid (user_id, uuid, exp) values('%s', '%s', now()+ INTERVAL %s day) """ % (id[0], user_uuid, session_ttl) else: sql = """ insert into uuid (user_id, uuid, exp) values('%s', '%s', datetime('now', '+%s days')) """ % (id[0], user_uuid, session_ttl) try: cur.execute(sql) con.commit() except sqltool.Error as e: print('An error occurred: ' + e.args[0] + ' X') con.rollback() cur.close() con.close() def write_user_token(login, user_token): con, cur = create_db.get_cur() token_ttl = funct.get_config_var('main', 'token_ttl') sql = """ select id from user where username = '%s' """ % login try: cur.execute(sql) except sqltool.Error as e: print('An error occurred: ' + e.args[0] + ' X') for id in cur.fetchall(): if mysql_enable == '1': sql = """ insert into token (user_id, token, exp) values('%s', '%s', now()+ INTERVAL %s day) """ % (id[0], user_token, token_ttl) else: sql = """ insert into token (user_id, token, exp) values('%s', '%s', datetime('now', '+%s days')) """ % (id[0], user_token, token_ttl) try: cur.execute(sql) con.commit() except sqltool.Error as e: print('An error occurred: ' + e.args[0] + ' X') con.rollback() cur.close() con.close() def get_token(uuid): con, cur = create_db.get_cur() sql = """ select token.token from token left join uuid as uuid on uuid.user_id = token.user_id where uuid.uuid = '%s' """ % uuid try: cur.execute(sql) except sqltool.Error as e: print('An error occurred: ' + e.args[0] + ' X') else: for token in cur.fetchall(): return token[0] cur.close() con.close() def delete_uuid(uuid): con, cur = create_db.get_cur() sql = """ delete from uuid where uuid = '%s' """ % uuid try: cur.execute(sql) con.commit() except sqltool.Error as e: pass cur.close() con.close() def delete_old_uuid(): con, cur = create_db.get_cur() if mysql_enable == '1': sql = """ delete from uuid where exp < now() or exp is NULL """ sql1 = """ delete from token where exp < now() or exp is NULL """ else: sql = """ delete from uuid where exp < datetime('now') or exp is NULL""" sql1 = """ delete from token where exp < datetime('now') or exp is NULL""" try: cur.execute(sql) cur.execute(sql1) con.commit() except sqltool.Error as e: print('An error occurred: ' + e.args[0] + ' X') con.rollback() cur.close() con.close() def update_last_act_user(uuid): con, cur = create_db.get_cur() session_ttl = funct.get_config_var('main', 'session_ttl') if mysql_enable == '1': sql = """ update uuid set exp = now()+ INTERVAL %s day where uuid = '%s' """ % (session_ttl, uuid) else: sql = """ update uuid set exp = datetime('now', '+%s days') where uuid = '%s' """ % (session_ttl, uuid) try: cur.execute(sql) con.commit() except sqltool.Error as e: print('