From f16e5f4af7cf655fb6915dcbe1bda0572cbeacf6 Mon Sep 17 00:00:00 2001 From: Aidaho12 Date: Wed, 25 Jul 2018 11:25:27 +0600 Subject: [PATCH] v2.7.2 Settings telegram for Checker, bugs fix --- app/create_db.py | 30 +++++- app/funct.py | 14 ++- app/servers.py | 3 +- app/sql.py | 135 +++++++++++++++++++++++++-- app/templates/admin.html | 73 ++++++++++++++- app/templates/ajax/new_server.html | 14 ++- app/templates/ajax/new_telegram.html | 27 ++++++ app/templates/base.html | 2 +- app/templates/servers.html | 66 ++++++++++++- app/users.py | 1 + inc/users.js | 110 +++++++++++++++++++++- 11 files changed, 445 insertions(+), 30 deletions(-) create mode 100644 app/templates/ajax/new_telegram.html diff --git a/app/create_db.py b/app/create_db.py index 6a24760a..fc5607b0 100644 --- a/app/create_db.py +++ b/app/create_db.py @@ -424,8 +424,8 @@ def update_db_v_2_7(**kwargs): con.commit() except sqltool.Error as e: if kwargs.get('silent') != 1: - if e.args[0] == 'duplicate column name: groups' or e == "1060 (42S21): Duplicate column name 'groups' ": - print('DB was updated. No more run') + if e.args[0] == 'duplicate column name: alert' or e == "1060 (42S21): Duplicate column name 'groups' ": + print('Updating... go to version 2.7.2') else: print("An error occurred:", e) return False @@ -434,6 +434,30 @@ def update_db_v_2_7(**kwargs): return True cur.close() con.close() + +def update_db_v_2_7_2(**kwargs): + con, cur = get_cur() + sql = """ CREATE TABLE IF NOT EXISTS `telegram` ( + `id` integer primary key autoincrement, + `token` VARCHAR ( 64 ), + `chanel_name` INTEGER NOT NULL DEFAULT 1, + `groups` INTEGER NOT NULL DEFAULT 1 + ); + """ + try: + cur.execute(sql) + con.commit() + except sqltool.Error as e: + if kwargs.get('silent') != 1: + if e.args[0] == 'duplicate column name: telegram' or e == "1060 (42S21): Duplicate column name 'telegram' ": + print("Update finished. No run more") + else: + print("An error occurred:", e) + return False + else: + return True + cur.close() + con.close() def update_all(): update_db_v_2_0_1() @@ -447,6 +471,7 @@ def update_all(): update_db_v_2_61() update_db_v_2_6_1() update_db_v_2_7() + update_db_v_2_7_2() def update_all_silent(): update_db_v_2_0_1(silent=1) @@ -460,4 +485,5 @@ def update_all_silent(): update_db_v_2_61(silent=1) update_db_v_2_6_1(silent=1) update_db_v_2_7(silent=1) + update_db_v_2_7_2(silent=1) \ No newline at end of file diff --git a/app/funct.py b/app/funct.py index ddaf7b88..724d1f87 100644 --- a/app/funct.py +++ b/app/funct.py @@ -63,13 +63,19 @@ def logging(serv, action, **kwargs): print('
Can\'t read write log. Please chech log_path in config
') pass - if get_config_var('telegram', 'enable') == "1": telegram_send_mess(mess) - def telegram_send_mess(mess): import telebot from telebot import apihelper - token_bot = get_config_var('telegram', 'token') - channel_name = get_config_var('telegram', 'channel_name') + import sql + + cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) + user_id = cookie.get('uuid') + telegrams = sql.get_user_telegram_by_uuid(user_id.value) + + for telegram in telegrams: + token_bot = telegram[1] + channel_name = telegram[2] + proxy = get_config_var('main', 'proxy') if proxy is not None: diff --git a/app/servers.py b/app/servers.py index 779d68c5..c24014a0 100644 --- a/app/servers.py +++ b/app/servers.py @@ -29,7 +29,8 @@ output_from_parsed_template = template.render(title = "Servers manage", groups = sql.select_groups(), servers = sql.get_dick_permit(virt=1, disable=0), roles = sql.select_roles(), - masters = sql.select_servers(get_master_servers=1), + masters = sql.select_servers(get_master_servers=1, uuid=user_id.value), sshs = sql.select_ssh(), + telegrams = sql.get_user_telegram_by_uuid(user_id.value), token = token) print(output_from_parsed_template) \ No newline at end of file diff --git a/app/sql.py b/app/sql.py index 38afbabb..413ca87d 100644 --- a/app/sql.py +++ b/app/sql.py @@ -232,6 +232,13 @@ def select_servers(**kwargs): 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 """ + if kwargs.get("get_master_servers") is not None and kwargs.get('uuid') is not None: + sql = """ + select servers.id, servers.hostname from servers + left join user as user on servers.groups = user.groups + left join uuid as uuid on user.id = uuid.user_id + where uuid.uuid = '%s' and servers.master = 0 and servers.type_ip = 0 and servers.enable = 1 ORDER BY servers.groups + """ % kwargs.get('uuid') try: cur.execute(sql) except sqltool.Error as e: @@ -406,7 +413,19 @@ def get_user_role_by_uuid(uuid): return user_id[0] cur.close() con.close() - + +def get_user_telegram_by_uuid(uuid): + con, cur = create_db.get_cur() + sql = """ select telegram.* from telegram left join user as user on telegram.groups = user.groups left join uuid as uuid on user.id = uuid.user_id where uuid.uuid = '%s' """ % uuid + try: + cur.execute(sql) + except sqltool.Error as e: + print("An error occurred:", e) + else: + return cur.fetchall() + cur.close() + con.close() + def get_dick_permit(**kwargs): import http.cookies import os @@ -482,7 +501,7 @@ def insert_new_ssh(name, enable, group, username, password): cur.execute(sql) con.commit() except sqltool.Error as e: - print('An error occurred: %s X' % e) + print('An error occurred: ' + e.args[0] + ' X') con.rollback() else: return True @@ -531,6 +550,77 @@ def show_update_ssh(name, page): output_from_parsed_template = template.render(groups = select_groups(), sshs = select_ssh(name=name),page=page) print(output_from_parsed_template) +def insert_new_telegram(token, chanel, group): + con, cur = create_db.get_cur() + sql = """insert into telegram(`token`, `chanel_name`, `groups`) values ('%s', '%s', '%s') """ % (token, chanel, group) + 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 delete_telegram(id): + con, cur = create_db.get_cur() + sql = """ delete from telegram 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 select_telegram(**kwargs): + con, cur = create_db.get_cur() + sql = """select * from telegram """ + if kwargs.get('group'): + sql = """select * from telegram where groups = '%s' """ % kwargs.get('group') + if kwargs.get('token'): + sql = """select * from telegram where token = '%s' """ % kwargs.get('token') + 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 update_telegram(token, chanel, group, id): + con, cur = create_db.get_cur() + sql = """ + update telegram set + `token` = '%s', + `chanel_name` = '%s', + `groups` = '%s' + where id = '%s' """ % (token, chanel, group, 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 show_update_telegram(token, page): + from jinja2 import Environment, FileSystemLoader + env = Environment(loader=FileSystemLoader('templates/ajax')) + template = env.get_template('/new_telegram.html') + + print('Content-type: text/html\n') + + output_from_parsed_template = template.render(groups = select_groups(), telegrams = select_telegram(token=token),page=page) + print(output_from_parsed_template) + def show_update_user(user): from jinja2 import Environment, FileSystemLoader env = Environment(loader=FileSystemLoader('templates/ajax')) @@ -543,7 +633,7 @@ def show_update_user(user): roles = select_roles()) print(output_from_parsed_template) -def show_update_server(server): +def show_update_server(server, page): from jinja2 import Environment, FileSystemLoader env = Environment(loader=FileSystemLoader('templates/ajax/')) template = env.get_template('/new_server.html') @@ -554,7 +644,8 @@ def show_update_server(server): servers = select_servers(server=server), roles = select_roles(), masters = select_servers(get_master_servers=1), - sshs = select_ssh()) + sshs = select_ssh(), + page = page) print(output_from_parsed_template) def show_update_group(group): @@ -606,7 +697,7 @@ def select_alert(**kwargs): return cur.fetchall() cur.close() con.close() - + form = cgi.FieldStorage() error_mess = 'All fields must be completed X' @@ -653,13 +744,15 @@ if form.getvalue('newserver') is not None: master = form.getvalue('slave') cred = form.getvalue('cred') alert = form.getvalue('alert_en') + page = form.getvalue('page') + page = page.split("#")[0] if ip is None or group is None or cred is None: print('Content-type: text/html\n') print(error_mess) else: print('Content-type: text/html\n') if add_server(hostname, ip, group, typeip, enable, master, cred, alert): - show_update_server(ip) + show_update_server(ip, page) if form.getvalue('serverdel') is not None: print('Content-type: text/html\n') @@ -770,3 +863,33 @@ if form.getvalue('sshdel') is not None: pass if delete_ssh(form.getvalue('sshdel')): print("Ok") + +if form.getvalue('newtelegram'): + token = form.getvalue('newtelegram') + chanel = form.getvalue('chanel') + group = form.getvalue('telegramgroup') + page = form.getvalue('page') + page = page.split("#")[0] + if token is None or chanel is None or group is None: + print('Content-type: text/html\n') + print(error_mess) + else: + if insert_new_telegram(token, chanel, group): + show_update_telegram(token, page) + +if form.getvalue('telegramdel') is not None: + print('Content-type: text/html\n') + if delete_telegram(form.getvalue('telegramdel')): + print("Ok") + +if form.getvalue('updatetoken') is not None: + token = form.getvalue('updatetoken') + chanel = form.getvalue('updategchanel') + group = form.getvalue('updategroup') + id = form.getvalue('id') + if token is None or chanel is None or group is None: + print('Content-type: text/html\n') + print(error_mess) + else: + print('Content-type: text/html\n') + update_telegram(token, chanel, group, id) \ No newline at end of file diff --git a/app/templates/admin.html b/app/templates/admin.html index d83c3eae..bf526720 100644 --- a/app/templates/admin.html +++ b/app/templates/admin.html @@ -11,6 +11,7 @@
  • Servers
  • Roles
  • SSH credentials
  • +
  • Checker
  • {% if user %} Logout {% else %} @@ -163,7 +164,7 @@ Group Enable Virt(?) - Alert(?) + Alert(?) Slave for (?) Credentials @@ -435,5 +436,75 @@
    + +
    + + + + + + + + {% for telegram in telegrams %} + + + + + + + {% endfor %} +
    + Token(?) + Chanel nameGroup
    + + + + + + + +
    +
    + Add +

    + + + + + + + + + + + + + + +
    +
    {% endblock %} \ No newline at end of file diff --git a/app/templates/ajax/new_server.html b/app/templates/ajax/new_server.html index fd0ec611..5975e1ab 100644 --- a/app/templates/ajax/new_server.html +++ b/app/templates/ajax/new_server.html @@ -1,12 +1,16 @@ {% for server in servers %} - + + {% if page == "servers.py" %} + + {% endif %} - + {% if page != "servers.py" %} + - + {% endif %} {% if server.5 == 1 %} @@ -34,9 +38,9 @@ {% if server.8 == 1 %} - + {% else %} - + {% endif %} diff --git a/app/templates/ajax/new_telegram.html b/app/templates/ajax/new_telegram.html new file mode 100644 index 00000000..31cd1b3c --- /dev/null +++ b/app/templates/ajax/new_telegram.html @@ -0,0 +1,27 @@ +{% for telegram in telegrams %} + + + + + + + + + {% if page != "servers.py" %} + + + + {% endif %} + + + + +{% endfor %} \ No newline at end of file diff --git a/app/templates/base.html b/app/templates/base.html index bad3fe71..577c5f39 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -96,7 +96,7 @@ diff --git a/app/templates/servers.html b/app/templates/servers.html index a04ff712..f4be9ecf 100644 --- a/app/templates/servers.html +++ b/app/templates/servers.html @@ -8,6 +8,7 @@