From 3c4f5282c6f936af4160bc9e3a79eda0a94e724e Mon Sep 17 00:00:00 2001 From: Pavel Loginov Date: Sat, 14 Sep 2019 11:13:45 +0300 Subject: [PATCH] v3.4.6 Update --- .github/FUNDING.yml | 2 +- app/add.py | 6 ++ app/blacklist.py | 6 ++ app/config.py | 6 ++ app/configver.py | 6 ++ app/create_db.py | 113 ++++++++++++++++++++++++-------------- app/delver.py | 6 ++ app/edit.py | 6 ++ app/funct.py | 34 +++++++++++- app/ha.py | 6 ++ app/ihap.py | 6 ++ app/keepalivedconfig.py | 6 ++ app/lists.py | 6 ++ app/login.py | 6 ++ app/logs.py | 6 ++ app/metrics.py | 6 ++ app/options.py | 4 ++ app/overview.py | 6 ++ app/servers.py | 6 ++ app/settings.py | 6 ++ app/sql.py | 14 +++++ app/templates/base.html | 11 +++- app/templates/update.html | 30 ++++++++++ app/update.py | 43 +++++++++++++++ app/users.py | 6 ++ app/viewlogs.py | 6 ++ app/viewsttats.py | 6 ++ app/waf.py | 6 ++ inc/users.js | 32 ++++++++++- 29 files changed, 358 insertions(+), 45 deletions(-) create mode 100644 app/templates/update.html create mode 100644 app/update.py diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 87186e25..3e0f3c16 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -9,4 +9,4 @@ community_bridge: # Replace with a single Community Bridge project-name e.g., cl liberapay: # Replace with a single Liberapay username issuehunt: # Replace with a single IssueHunt username otechie: # Replace with a single Otechie username -custom: ['https://www.paypal.me/haproxywi'] +custom: ['https://paypal.me/loginovpavel'] diff --git a/app/add.py b/app/add.py index 1b2ea36c..5c6a19de 100644 --- a/app/add.py +++ b/app/add.py @@ -27,6 +27,11 @@ try: token = sql.get_token(user_id.value) except: pass + +try: + current_ver = funct.check_ver() +except: + pass template = template.render(title = "Add", role = sql.get_user_role_by_uuid(user_id.value), @@ -35,6 +40,7 @@ template = template.render(title = "Add", add = form.getvalue('add'), conf_add = form.getvalue('conf'), group = user_group, + current_ver = current_ver, token = token) print(template) diff --git a/app/blacklist.py b/app/blacklist.py index 5e2543ab..3eb6bc98 100644 --- a/app/blacklist.py +++ b/app/blacklist.py @@ -27,6 +27,11 @@ try: except: pass +try: + current_ver = funct.check_ver() +except: + pass + dir = os.path.dirname(os.getcwd())+"/"+sql.get_setting('lists_path') white_dir = os.path.dirname(os.getcwd())+"/"+sql.get_setting('lists_path')+"/"+user_group+"/white" black_dir = os.path.dirname(os.getcwd())+"/"+sql.get_setting('lists_path')+"/"+user_group+"/black" @@ -49,5 +54,6 @@ template = template.render(h2 = 1, white_lists = white_lists, black_lists = black_lists, group = user_group, + current_ver = current_ver, token = token) print(template) \ No newline at end of file diff --git a/app/config.py b/app/config.py index e9944247..b5aaa569 100644 --- a/app/config.py +++ b/app/config.py @@ -28,6 +28,11 @@ try: role = sql.get_user_role_by_uuid(user_id.value) except: pass + +try: + current_ver = funct.check_ver() +except: + pass hap_configs_dir = funct.get_config_var('configs', 'haproxy_save_configs_dir') @@ -98,5 +103,6 @@ template = template.render(h2 = 1, title = "Working with HAProxy configs", stderr = stderr, error = error, note = 1, + current_ver = current_ver, token = token) print(template) \ No newline at end of file diff --git a/app/configver.py b/app/configver.py index 24b48ddb..33f5a86d 100644 --- a/app/configver.py +++ b/app/configver.py @@ -27,6 +27,11 @@ try: token = sql.get_token(user_id.value) except: pass + +try: + current_ver = funct.check_ver() +except: + pass if serv is not None and form.getvalue('config') is not None: configver = form.getvalue('configver') @@ -66,5 +71,6 @@ template = template.render(h2 = 1, title = "Old Versions HAProxy config", onclick = "showUploadConfig()", note = 1, token = token, + current_ver = current_ver, view = view) print(template) diff --git a/app/create_db.py b/app/create_db.py index 70a55594..8f4d41fa 100644 --- a/app/create_db.py +++ b/app/create_db.py @@ -121,13 +121,14 @@ def create_table(**kwargs): 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); CREATE TABLE IF NOT EXISTS `metrics` (`serv` varchar(64), curr_con INTEGER, cur_ssl_con INTEGER, sess_rate INTEGER, max_sess_rate INTEGER,`date` timestamp default '0000-00-00 00:00:00'); CREATE TABLE IF NOT EXISTS `settings` (`param` varchar(64) UNIQUE, value varchar(64), section varchar(64), `desc` varchar(100)); + CREATE TABLE IF NOT EXISTS `version` (`version` varchar(64)); """ try: cur.executescript(sql) except sqltool.Error as e: if kwargs.get('silent') != 1: if e.args[0] == 'column email is not unique' or e == "1060 (42S21): column email is not unique' ": - print('Updating... go to version 3.0
') + print('Updating... go to version 3.0') else: print("An error occurred:", e) return False @@ -172,14 +173,22 @@ def update_db_v_31(**kwargs): "INSERT INTO settings (param, value, section, `desc`) values('cert_path', '/etc/ssl/certs/', 'haproxy', 'Path to SSL dir');", "INSERT INTO settings (param, value, section, `desc`) values('firewall_enable', '0', 'haproxy', 'If enable this option Haproxy-wi will be configure firewalld based on config port');", "INSERT INTO settings (param, value, section, `desc`) values('lists_path', 'lists', 'main', 'Path to black/white lists');", - "INSERT INTO settings (param, value, section, `desc`) values('apache_log_path', '/var/log/httpd/', 'logs', 'Path to Apache logs');" ] + "INSERT INTO settings (param, value, section, `desc`) values('apache_log_path', '/var/log/httpd/', 'logs', 'Path to Apache logs');" + "INSERT INTO settings (param, value, section, `desc`) values('ldap_enable', '0', 'ldap', 'If 1 ldap enabled');", + "INSERT INTO settings (param, value, section, `desc`) values('ldap_server', '', 'ldap', 'IP address ldap server');", + "INSERT INTO settings (param, value, section, `desc`) values('ldap_port', '389', 'ldap', 'Default port is 389 or 636');", + "INSERT INTO settings (param, value, section, `desc`) values('ldap_user', '', 'ldap', 'Login for connect to LDAP server. Enter: user@domain.com');", + "INSERT INTO settings (param, value, section, `desc`) values('ldap_password', '', 'ldap', 'Password for connect to LDAP server');", + "INSERT INTO settings (param, value, section, `desc`) values('ldap_base', '', 'ldap', 'Base domain. Example: dc=domain, dc=com');", + "INSERT INTO settings (param, value, section, `desc`) values('ldap_domain', '', 'ldap', 'Domain for login, that after @, like user@domain.com, without user@');", + "INSERT INTO settings (param, value, section, `desc`) values('ldap_search_field', 'mail', 'ldap', 'Field where user e-mail saved'" ] try: for i in sql: cur.execute(i) con.commit() except sqltool.Error as e: if kwargs.get('silent') != 1: - if e.args[0] == 'duplicate column name: desc' or e == "1060 (42S21): Duplicate column name 'desc' ": + if e.args[0] == 'column param is not unique' or e == "1060 (42S21): column param is not unique ": print('Updating... go to version 3.2') else: print("An error occurred:", e) @@ -199,7 +208,7 @@ def update_db_v_3_2(**kwargs): except sqltool.Error as e: if kwargs.get('silent') != 1: if e.args[0] == 'duplicate column name: server_id' or e == "1060 (42S21): Duplicate column name 'server_id' ": - print('DB was updated') + print('Updating... go to version 3.2') else: print("An error occurred:", e.args[0]) return False @@ -258,44 +267,17 @@ def update_db_v_3_2_8(**kwargs): except sqltool.Error as e: if kwargs.get('silent') != 1: if e.args[0] == 'duplicate column name: desc' or e == " 1060 (42S21): Duplicate column name 'desc' ": - print('DB was update
') + print('Updating... go to version 3.3') else: print("An error occurred:", e) return False else: - print("DB was update to 3.2.8
") + print("DB was update to 3.2.8") return True cur.close() con.close() -def update_db_v_3_3(**kwargs): - con, cur = get_cur() - sql = [ "INSERT INTO settings (param, value, section, `desc`) values('ldap_enable', '0', 'ldap', 'If 1 ldap enabled');", - "INSERT INTO settings (param, value, section, `desc`) values('ldap_server', '', 'ldap', 'IP address ldap server');", - "INSERT INTO settings (param, value, section, `desc`) values('ldap_port', '389', 'ldap', 'Default port is 389 or 636');", - "INSERT INTO settings (param, value, section, `desc`) values('ldap_user', '', 'ldap', 'Login for connect to LDAP server. Enter: user@domain.com');", - "INSERT INTO settings (param, value, section, `desc`) values('ldap_password', '', 'ldap', 'Password for connect to LDAP server');", - "INSERT INTO settings (param, value, section, `desc`) values('ldap_base', '', 'ldap', 'Base domain. Example: dc=domain, dc=com');", - "INSERT INTO settings (param, value, section, `desc`) values('ldap_domain', '', 'ldap', 'Domain for login, that after @, like user@domain.com, without user@');", - "INSERT INTO settings (param, value, section, `desc`) values('ldap_search_field', 'mail', 'ldap', 'Field where user e-mail saved');"] - try: - for i in sql: - cur.execute(i) - con.commit() - except sqltool.Error as e: - if kwargs.get('silent') != 1: - if e.args[0] == 'duplicate column name: desc' or e == "1060 (42S21): Duplicate column name 'desc' ": - print('Updating... go to version 3.2') - else: - print("An error occurred:", e) - return False - else: - pass - return True - cur.close() - con.close() - def update_db_v_3_31(**kwargs): con, cur = get_cur() sql = """ @@ -312,7 +294,7 @@ def update_db_v_3_31(**kwargs): print("An error occurred:", e) return False else: - print("DB was update to 3.3
") + print("DB was update to 3.3") return True cur.close() con.close() @@ -334,7 +316,7 @@ def update_db_v_3_4(**kwargs): print("An error occurred:", e) return False else: - print("Updating... go to version 3.4.1
") + print("Updating... go to version 3.4.1") return True cur.close() con.close() @@ -350,17 +332,60 @@ def update_db_v_3_4_1(**kwargs): con.commit() except sqltool.Error as e: if kwargs.get('silent') != 1: - if e.args[0] == 'duplicate column name: active' or e == " 1060 (42S21): Duplicate column name 'active' ": - print('Updating... go to version 3.4.1') + if e.args[0] == 'duplicate column name: activeuser' or e == " 1060 (42S21): Duplicate column name 'activeuser' ": + print('Updating... go to version 3.4.5.2') else: print("An error occurred:", e) return False else: - print("DB was update to 3.4.1
") + print("Updating... go to version 3.4.5.2") return True cur.close() con.close() + +def update_db_v_3_4_5_2(**kwargs): + con, cur = get_cur() + sql = """CREATE TABLE IF NOT EXISTS `version` (`version` varchar(64)); """ + try: + cur.execute(sql) + con.commit() + except sqltool.Error as e: + if kwargs.get('silent') != 1: + if e.args[0] == 'duplicate column name: version' or e == "1060 (42S21): Duplicate column name 'version' ": + print('Updating... go to version 2.6') + else: + print("DB was update to 3.4.5.2") + return False + else: + return True + cur.close() + con.close() + + +def update_db_v_3_4_5_22(**kwargs): + con, cur = get_cur() + sql = """insert into version ('version') values ('3.4.5.2'); """ + try: + cur.execute(sql) + con.commit() + except sqltool.Error as e: + print('Cannot insert version') + cur.close() + con.close() + + +def update_ver(**kwargs): + con, cur = get_cur() + sql = """update version set version = '3.4.5.2'; """ + try: + cur.execute(sql) + con.commit() + except sqltool.Error as e: + print('Cannot update version') + cur.close() + con.close() + def update_all(): update_db_v_31() @@ -368,10 +393,14 @@ def update_all(): update_db_v_3_21() update_db_v_3_2_3() update_db_v_3_2_8() - update_db_v_3_3() update_db_v_3_31() update_db_v_3_4() update_db_v_3_4_1() + update_db_v_3_4_5_2() + if funct.check_ver() is None: + update_db_v_3_4_5_22() + update_ver() + def update_all_silent(): update_db_v_31(silent=1) @@ -379,10 +408,14 @@ def update_all_silent(): update_db_v_3_21(silent=1) update_db_v_3_2_3(silent=1) update_db_v_3_2_8(silent=1) - update_db_v_3_3(silent=1) update_db_v_3_31(silent=1) update_db_v_3_4(silent=1) update_db_v_3_4_1(silent=1) + update_db_v_3_4_5_2(silent=1) + if funct.check_ver() is None: + update_db_v_3_4_5_22() + update_ver() + if __name__ == "__main__": create_table() diff --git a/app/delver.py b/app/delver.py index 3f0dfc9b..38e1c511 100644 --- a/app/delver.py +++ b/app/delver.py @@ -27,6 +27,11 @@ try: token = sql.get_token(user_id.value) except: pass + +try: + current_ver = funct.check_ver() +except: + pass form = cgi.FieldStorage() serv = form.getvalue('serv') @@ -58,5 +63,6 @@ output_from_parsed_template = template.render(h2 = 1, title = "Delete old versio open = form.getvalue('open'), Select = form.getvalue('del'), file = file, + current_ver = current_ver, token = token) print(output_from_parsed_template) \ No newline at end of file diff --git a/app/edit.py b/app/edit.py index a29fd42a..6eccb56d 100644 --- a/app/edit.py +++ b/app/edit.py @@ -24,6 +24,11 @@ try: servbackend = "" except: pass + +try: + current_ver = funct.check_ver() +except: + pass output_from_parsed_template = template.render(h2 = 1, title = "Runtime API", @@ -34,5 +39,6 @@ output_from_parsed_template = template.render(h2 = 1, selects = servers, token = token, serv = serv, + current_ver = current_ver, servbackend = servbackend) print(output_from_parsed_template) \ No newline at end of file diff --git a/app/funct.py b/app/funct.py index ac6bbafa..afe570da 100644 --- a/app/funct.py +++ b/app/funct.py @@ -292,6 +292,14 @@ def waf_install(serv, **kwargs): stderr = ssh_command(serv, commands, print_out="1") if stderr is None: sql.insert_waf_metrics_enable(serv, "0") + + +def update_haproxy_wi(): + cmd = 'sudo -S yum -y update haproxy-wi' + output, stderr = subprocess_execute(cmd) + print(output) + print(stderr) + def check_haproxy_version(serv): import sql @@ -497,4 +505,28 @@ def get_files(dir = get_config_var('configs', 'haproxy_save_configs_dir'), forma return files def get_key(item): - return item[0] \ No newline at end of file + return item[0] + + +def check_ver(): + import sql + return sql.get_ver() + + +def check_new_version(): + import urllib.request + import ssl + import sql + + proxy = sql.get_setting('proxy') + context = ssl._create_unverified_context() + + if proxy: + proxyDict = { "https" : proxy } + response = urllib.request.urlopen('https://haproxy-wi.org/update.py?last_ver=1', context=context, proxies=proxyDict) + else: + response = urllib.request.urlopen('https://haproxy-wi.org/update.py?last_ver=1', context=context) + + res = response.read().decode(encoding='UTF-8') + + return res \ No newline at end of file diff --git a/app/ha.py b/app/ha.py index 782e017b..16a9ad95 100644 --- a/app/ha.py +++ b/app/ha.py @@ -22,11 +22,17 @@ try: token = sql.get_token(user_id.value) except: pass + +try: + current_ver = funct.check_ver() +except: + pass output_from_parsed_template = template.render(h2 = 1, title = "Configure HA", role = sql.get_user_role_by_uuid(user_id.value), user = user, serv = serv, selects = servers, + current_ver = current_ver, token = token) print(output_from_parsed_template) \ No newline at end of file diff --git a/app/ihap.py b/app/ihap.py index 57d4b7e8..a5326885 100644 --- a/app/ihap.py +++ b/app/ihap.py @@ -19,12 +19,18 @@ try: token = sql.get_token(user_id.value) except: pass + +try: + current_ver = funct.check_ver() +except: + pass output_from_parsed_template = template.render(h2 = 1, title = "Installation HAProxy", role = sql.get_user_role_by_uuid(user_id.value), user = user, select_id = "haproxyaddserv", selects = servers, + current_ver = current_ver, token = token) print(output_from_parsed_template) diff --git a/app/keepalivedconfig.py b/app/keepalivedconfig.py index 6e0bc091..4b03b852 100644 --- a/app/keepalivedconfig.py +++ b/app/keepalivedconfig.py @@ -31,6 +31,11 @@ try: token = sql.get_token(user_id.value) except: pass + +try: + current_ver = funct.check_ver() +except: + pass if serv is not None: cfg = kp_save_configs_dir+ serv + '-' + funct.get_data('config') + '.conf' @@ -87,5 +92,6 @@ output_from_parsed_template = template.render(h2 = 1, title = "Edit Runnig Keepa stderr = stderr, error = error, keepalived = 1, + current_ver = current_ver, token = token) print(output_from_parsed_template) \ No newline at end of file diff --git a/app/lists.py b/app/lists.py index 5e2543ab..3eb6bc98 100644 --- a/app/lists.py +++ b/app/lists.py @@ -27,6 +27,11 @@ try: except: pass +try: + current_ver = funct.check_ver() +except: + pass + dir = os.path.dirname(os.getcwd())+"/"+sql.get_setting('lists_path') white_dir = os.path.dirname(os.getcwd())+"/"+sql.get_setting('lists_path')+"/"+user_group+"/white" black_dir = os.path.dirname(os.getcwd())+"/"+sql.get_setting('lists_path')+"/"+user_group+"/black" @@ -49,5 +54,6 @@ template = template.render(h2 = 1, white_lists = white_lists, black_lists = black_lists, group = user_group, + current_ver = current_ver, token = token) print(template) \ No newline at end of file diff --git a/app/login.py b/app/login.py index 62597f8c..4d77edfa 100644 --- a/app/login.py +++ b/app/login.py @@ -113,6 +113,11 @@ except: user = "" pass +try: + current_ver = funct.check_ver() +except: + pass + if form.getvalue('logout'): try: sql.delete_uuid(user_id.value) @@ -161,5 +166,6 @@ output_from_parsed_template = template.render(h2 = 1, title = "Login page. Enter error_log = error_log, error = error, ref = ref, + current_ver = current_ver, db_create = db_create) print(output_from_parsed_template) \ No newline at end of file diff --git a/app/logs.py b/app/logs.py index 7dc60e90..462d6075 100644 --- a/app/logs.py +++ b/app/logs.py @@ -30,6 +30,11 @@ try: token = sql.get_token(user_id.value) except: pass + +try: + current_ver = funct.check_ver() +except: + pass output_from_parsed_template = template.render(h2 = 1, autorefresh = 1, @@ -42,6 +47,7 @@ output_from_parsed_template = template.render(h2 = 1, serv = form.getvalue('serv'), rows = rows, grep = grep, + current_ver = current_ver, token = token) print(output_from_parsed_template) diff --git a/app/metrics.py b/app/metrics.py index da7ea194..42ffb4ed 100644 --- a/app/metrics.py +++ b/app/metrics.py @@ -18,6 +18,11 @@ try: token = sql.get_token(user_id.value) except: pass + +try: + current_ver = funct.check_ver() +except: + pass template = template.render(h2 = 1, title = "Metrics", autorefresh = 1, @@ -25,5 +30,6 @@ template = template.render(h2 = 1, title = "Metrics", user = user, onclick = "metricsShow()", table_stat = sql.select_table_metrics(user_id.value), + current_ver = current_ver, token = token) print(template) \ No newline at end of file diff --git a/app/options.py b/app/options.py index 106b209b..b9e90166 100644 --- a/app/options.py +++ b/app/options.py @@ -402,6 +402,10 @@ if form.getvalue('haproxyaddserv'): if form.getvalue('installwaf'): funct.waf_install(form.getvalue('installwaf')) + +if form.getvalue('update_haproxy_wi'): + funct.update_haproxy_wi() + if form.getvalue('metrics_waf'): sql.update_waf_metrics_enable(form.getvalue('metrics_waf'), form.getvalue('enable')) diff --git a/app/overview.py b/app/overview.py index f90805d1..d941f456 100644 --- a/app/overview.py +++ b/app/overview.py @@ -30,6 +30,11 @@ try: metrics_worker, stderr = funct.subprocess_execute(cmd) except: pass + +try: + current_ver = funct.check_ver() +except: + pass template = template.render(h2 = 1, autorefresh = 1, @@ -43,5 +48,6 @@ template = template.render(h2 = 1, checker_master = ''.join(checker_master), checker_worker = ''.join(checker_worker), error = stderr, + current_ver = current_ver, token = token) print(template) diff --git a/app/servers.py b/app/servers.py index 98c1d85f..831a1724 100644 --- a/app/servers.py +++ b/app/servers.py @@ -22,6 +22,11 @@ try: ldap_enable = sql.get_setting('ldap_enable') except: pass + +try: + current_ver = funct.check_ver() +except: + pass output_from_parsed_template = template.render(title = "Servers manage", role = sql.get_user_role_by_uuid(user_id.value), @@ -35,5 +40,6 @@ output_from_parsed_template = template.render(title = "Servers manage", sshs = sql.select_ssh(), telegrams = sql.get_user_telegram_by_uuid(user_id.value), token = token, + current_ver = current_ver, ldap_enable = ldap_enable) print(output_from_parsed_template) \ No newline at end of file diff --git a/app/settings.py b/app/settings.py index eb99e61b..20232399 100644 --- a/app/settings.py +++ b/app/settings.py @@ -21,10 +21,16 @@ try: token = sql.get_token(user_id.value) except: pass + +try: + current_ver = funct.check_ver() +except: + pass template = template.render(h2 = 1, title = "Settings", role = sql.get_user_role_by_uuid(user_id.value), user = user, settings = settings, + current_ver = current_ver, token = token) print(template) \ No newline at end of file diff --git a/app/sql.py b/app/sql.py index aaaa5304..1ca24b0a 100644 --- a/app/sql.py +++ b/app/sql.py @@ -1088,6 +1088,20 @@ def update_setting(param, val): cur.close() con.close() + +def get_ver(): + con, cur = create_db.get_cur() + sql = """ select * from version; """ + try: + cur.execute(sql) + except sqltool.Error as e: + out_error(e) + else: + for ver in cur.fetchall(): + return ver[0] + cur.close() + con.close() + def show_update_telegram(token, page): from jinja2 import Environment, FileSystemLoader env = Environment(loader=FileSystemLoader('templates/ajax')) diff --git a/app/templates/base.html b/app/templates/base.html index d4054acf..94c24f43 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -108,6 +108,7 @@
  • SSH credentials
  • Settings
  • Internal logs
  • +
  • Update
  • {% endif %} @@ -115,7 +116,7 @@ @@ -215,6 +216,12 @@ {% block content %}{% endblock %}
    - + + + diff --git a/app/templates/update.html b/app/templates/update.html new file mode 100644 index 00000000..700681e6 --- /dev/null +++ b/app/templates/update.html @@ -0,0 +1,30 @@ +{% extends "base.html" %} +{% block content %} + + + + + + + + + + + +
    Currnet versionLast version
    + {{current_ver}} + + {{new_ver}} + + {% if current_ver_without_dots < new_ver_without_dots and current_ver_without_dots != new_ver_without_dots and new_ver != "Sorry cannot get current version" %} + Update + {% endif %} +
    +
    + Note: + For update you have to use HAProxy-WI repository. If do not use repositiry then use update.sh script in HAProxy-WI home directory
    +
    + Read more about update in docs +
    +
    +{% endblock %} \ No newline at end of file diff --git a/app/update.py b/app/update.py new file mode 100644 index 00000000..fd63e39c --- /dev/null +++ b/app/update.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python3 +import http.cookies +import os +import funct, sql +from jinja2 import Environment, FileSystemLoader +env = Environment(loader=FileSystemLoader('templates/')) +template = env.get_template('update.html') + +print('Content-type: text/html\n') +funct.check_login() +funct.page_for_admin(level = 2) + +try: + cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) + user_id = cookie.get('uuid') + user = sql.get_user_name_by_uuid(user_id.value) + token = sql.get_token(user_id.value) +except: + pass + +try: + current_ver = funct.check_ver() + current_ver_without_dots = current_ver.split('.') + current_ver_without_dots = ''.join(current_ver_without_dots) +except: + current_ver = "Sorry cannot get current version" + +try: + new_ver = funct.check_new_version() + new_ver_without_dots = new_ver.split('.') + new_ver_without_dots = ''.join(new_ver_without_dots) +except: + new_ver = "Sorry cannot get new version" + +output_from_parsed_template = template.render(h2 = 1, title = "Check updates", + role = sql.get_user_role_by_uuid(user_id.value), + user = user, + current_ver = current_ver, + current_ver_without_dots = current_ver_without_dots, + new_ver = new_ver, + new_ver_without_dots = new_ver_without_dots, + token = token) +print(output_from_parsed_template) \ No newline at end of file diff --git a/app/users.py b/app/users.py index 982ca0e2..11e76550 100644 --- a/app/users.py +++ b/app/users.py @@ -26,6 +26,11 @@ try: ldap_enable = sql.get_setting('ldap_enable') except: pass + +try: + current_ver = funct.check_ver() +except: + pass output_from_parsed_template = template.render(title = "Admin area: users manage", role = sql.get_user_role_by_uuid(user_id.value), @@ -38,5 +43,6 @@ output_from_parsed_template = template.render(title = "Admin area: users manage" sshs = sql.select_ssh(), telegrams = sql.select_telegram(), token = token, + current_ver = current_ver, ldap_enable = ldap_enable) print(output_from_parsed_template) diff --git a/app/viewlogs.py b/app/viewlogs.py index c03e9e91..2cd49a54 100644 --- a/app/viewlogs.py +++ b/app/viewlogs.py @@ -48,6 +48,11 @@ try: except: pass +try: + current_ver = funct.check_ver() +except: + pass + def get_files(): file = [] for files in glob.glob(os.path.join(log_path,'*.log*')): @@ -68,5 +73,6 @@ output_from_parsed_template = template.render(h2 = 1, selects = selects, rows = rows, grep = grep, + current_ver = current_ver, token = token) print(output_from_parsed_template) diff --git a/app/viewsttats.py b/app/viewsttats.py index 7ac3b339..ecfe1e4d 100644 --- a/app/viewsttats.py +++ b/app/viewsttats.py @@ -28,6 +28,11 @@ try: except: pass +try: + current_ver = funct.check_ver() +except: + pass + output_from_parsed_template = template.render(h2 = 1, autorefresh = 1, title = "HAProxy statistics", @@ -37,6 +42,7 @@ output_from_parsed_template = template.render(h2 = 1, select_id = "serv", selects = servers, serv = serv, + current_ver = current_ver, token = token) print(output_from_parsed_template) diff --git a/app/waf.py b/app/waf.py index 457480ef..285a242f 100644 --- a/app/waf.py +++ b/app/waf.py @@ -19,11 +19,17 @@ try: token = sql.get_token(user_id.value) except: pass + +try: + current_ver = funct.check_ver() +except: + pass template = template.render(h2 = 1, title = "Web application firewall", autorefresh = 1, role = sql.get_user_role_by_uuid(user_id.value), user = user, table_stat = sql.select_table_metrics(user_id.value), + current_ver = current_ver, token = token) print(template) \ No newline at end of file diff --git a/inc/users.js b/inc/users.js index a1696a8e..ae7d0f26 100644 --- a/inc/users.js +++ b/inc/users.js @@ -124,6 +124,37 @@ $( function() { } } ); }); + $('#update_haproxy_wi').click(function() { + $("#ajax").html('') + + $("#ajax").html('
    Please don\'t close and don\'t represh page. Wait until the work is completed. This may take some time
    '); + $.ajax( { + url: "options.py", + data: { + update_haproxy_wi: 1, + token: $('#token').val() + }, + type: "GET", + success: function( data ) { + data = data.replace(/\s+/g,' '); + if (data.indexOf('error') != '-1' || data.indexOf('Failed') != '-1') { + $("#ajax").html('
    '+data+''); + } else if (data.indexOf('success') != '-1'){ + $('.alert-danger').remove(); + $('.alert-warning').remove(); + $("#ajax").html('
    '+data+''); + } else if (data.indexOf('but not installed') != '-1') { + $('.alert-danger').remove(); + $('.alert-warning').remove(); + $("#ajax").html('
    You have settings for HAProxy-WI repository, but installed HAProxy-WI without repository. Please reinstall with yum or use update.sh'); + } else if (data.indexOf('No Match for argument') != '-1') { + $('.alert-danger').remove(); + $('.alert-warning').remove(); + $("#ajax").html('
    It is seems like you do not have HAProxy-WI repository settings. Please read docs fordetail'); + } + } + } ); + }); $('#add-group').click(function() { $('#error').remove(); $('.alert-danger').remove(); @@ -294,7 +325,6 @@ $( function() { $('#add-server-button').click(function() { addServerDialog.dialog('open'); }); - $('#add-ssh-button').click(function() { if ($('#ssh-add-table').css('display', 'none')) { $('#ssh-add-table').show("blind", "fast");