diff --git a/.gitignore b/.gitignore index 47a69250..4d6d647b 100644 --- a/.gitignore +++ b/.gitignore @@ -102,3 +102,12 @@ ENV/ # mypy .mypy_cache/ + +#data user +app/certs +map*.png +app/haproxy-wi.db +keys +lists +log +configs diff --git a/app/add.py b/app/add.py index d5be4e13..a0ecd75b 100644 --- a/app/add.py +++ b/app/add.py @@ -7,7 +7,7 @@ import http.cookies from jinja2 import Environment, FileSystemLoader env = Environment(loader=FileSystemLoader('templates/')) template = env.get_template('add.html') -form = cgi.FieldStorage() +form = funct.form serv = form.getvalue('serv') if form.getvalue('add'): diff --git a/app/config.py b/app/config.py index e9a5979c..6fa04c5f 100644 --- a/app/config.py +++ b/app/config.py @@ -11,7 +11,7 @@ template = env.get_template('config.html') print('Content-type: text/html\n') funct.check_login() -form = cgi.FieldStorage() +form = funct.form serv = form.getvalue('serv') config_read = "" cfg = "" @@ -90,4 +90,4 @@ template = template.render(h2 = 1, title = "Working with HAProxy configs", note = 1, versions = funct.versions(), token = token) -print(template) \ No newline at end of file +print(template) diff --git a/app/edit.py b/app/edit.py index 5a143e75..1cba68c1 100644 --- a/app/edit.py +++ b/app/edit.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 import os -import sql import http, cgi import funct import sql @@ -10,7 +9,7 @@ template = env.get_template('runtimeapi.html') print('Content-type: text/html\n') funct.check_login() -form = cgi.FieldStorage() +form = funct.form try: cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) @@ -37,4 +36,4 @@ output_from_parsed_template = template.render(h2 = 1, serv = serv, versions = funct.versions(), servbackend = servbackend) -print(output_from_parsed_template) \ No newline at end of file +print(output_from_parsed_template) diff --git a/app/funct.py b/app/funct.py index 6514120d..8bf42448 100644 --- a/app/funct.py +++ b/app/funct.py @@ -431,7 +431,6 @@ def check_haproxy_version(serv): def upload(serv, path, file, **kwargs): error = "" full_path = path + file - if kwargs.get('dir') == "fullpath": full_path = path @@ -453,14 +452,14 @@ def upload(serv, path, file, **kwargs): logging('localhost', ' Cannot upload '+file+' to '+full_path+'. Error: '+str(e.args), haproxywi=1) pass - try: + try: sftp.close() ssh.close() except Exception as e: error = e.args logging('localhost', str(error[0]), haproxywi=1) pass - + return str(error) @@ -468,7 +467,7 @@ def upload_and_restart(serv, cfg, **kwargs): import sql tmp_file = sql.get_setting('tmp_config_path') + "/" + get_data('config') + ".cfg" error = "" - + try: os.system("dos2unix "+cfg) except OSError: @@ -491,7 +490,6 @@ def upload_and_restart(serv, cfg, **kwargs): commands = [ "sudo haproxy -q -c -f " + tmp_file + "&& sudo mv -f " + tmp_file + " " + sql.get_setting('haproxy_config_path') + " && sudo " + sql.get_setting('restart_command') ] if sql.get_setting('firewall_enable') == "1": commands.extend(open_port_firewalld(cfg)) - error += str(upload(serv, tmp_file, cfg, dir='fullpath')) try: @@ -500,17 +498,20 @@ def upload_and_restart(serv, cfg, **kwargs): error += e if error: logging('localhost', error, haproxywi=1) - return error + + return error def master_slave_upload_and_restart(serv, cfg, just_save): import sql MASTERS = sql.is_master(serv) + error = "" for master in MASTERS: if master[0] != None: - upload_and_restart(master[0], cfg, just_save=just_save) + error += upload_and_restart(master[0], cfg, just_save=just_save) - return upload_and_restart(serv, cfg, just_save=just_save) + error += upload_and_restart(serv, cfg, just_save=just_save) + return error def open_port_firewalld(cfg): @@ -778,4 +779,4 @@ def get_hash(value): import hashlib h = hashlib.md5(value.encode('utf-8')) p = h.hexdigest() - return p \ No newline at end of file + return p diff --git a/app/ha.py b/app/ha.py index cceb83d2..dddc6f98 100644 --- a/app/ha.py +++ b/app/ha.py @@ -11,7 +11,7 @@ print('Content-type: text/html\n') funct.check_login() funct.page_for_admin(level = 2) -form = cgi.FieldStorage() +form = funct.form serv = form.getvalue('serv') try: @@ -31,4 +31,4 @@ output_from_parsed_template = template.render(h2 = 1, title = "Configure HA", selects = servers, versions = funct.versions(), token = token) -print(output_from_parsed_template) \ No newline at end of file +print(output_from_parsed_template) diff --git a/app/hapservers.py b/app/hapservers.py index 6f4f8676..93c4075c 100644 --- a/app/hapservers.py +++ b/app/hapservers.py @@ -21,7 +21,7 @@ try: except: pass -form = cgi.FieldStorage() +form = funct.form serv = form.getvalue('serv') if serv: diff --git a/app/keepalivedconfig.py b/app/keepalivedconfig.py index 4c00511a..2a08b2e6 100644 --- a/app/keepalivedconfig.py +++ b/app/keepalivedconfig.py @@ -13,7 +13,7 @@ print('Content-type: text/html\n') funct.check_login() funct.page_for_admin(level = 2) -form = cgi.FieldStorage() +form = funct.form serv = form.getvalue('serv') log_path = funct.get_config_var('main', 'log_path') kp_save_configs_dir = funct.get_config_var('configs', 'kp_save_configs_dir') @@ -90,4 +90,4 @@ output_from_parsed_template = template.render(h2 = 1, title = "Edit Runnig Keepa keepalived = 1, versions = funct.versions(), token = token) -print(output_from_parsed_template) \ No newline at end of file +print(output_from_parsed_template) diff --git a/app/lists.py b/app/lists.py index 5d796141..62146a46 100644 --- a/app/lists.py +++ b/app/lists.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 import os -import sql import http, cgi import funct import sql @@ -10,7 +9,7 @@ template = env.get_template('lists.html') print('Content-type: text/html\n') funct.check_login() -form = cgi.FieldStorage() +form = funct.form funct.page_for_admin(level = 2) try: @@ -52,4 +51,4 @@ template = template.render(h2 = 1, group = user_group, versions = funct.versions(), token = token) -print(template) \ No newline at end of file +print(template) diff --git a/app/login.py b/app/login.py index 3fb6d077..111cfcfa 100644 --- a/app/login.py +++ b/app/login.py @@ -13,7 +13,7 @@ import uuid from jinja2 import Environment, FileSystemLoader env = Environment(loader=FileSystemLoader('templates/')) template = env.get_template('login.html') -form = cgi.FieldStorage() +form = funct.form cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) user_id = cookie.get('uuid') @@ -69,13 +69,25 @@ def check_in_ldap(user, password): server = sql.get_setting('ldap_server') port = sql.get_setting('ldap_port') ldap_class_search = sql.get_setting('ldap_class_search') + root_user = sql.get_setting('ldap_user') + root_password = sql.get_setting('ldap_password') + ldap_base = sql.get_setting('ldap_base') + domain = sql.get_setting('ldap_domain') + ldap_search_field = sql.get_setting('ldap_search_field') + ldap_user_attribute = sql.get_setting('ldap_user_attribute') - l = ldap.initialize("ldap://"+server+':'+port) + l = ldap.initialize(server+':'+port) try: l.protocol_version = ldap.VERSION3 l.set_option(ldap.OPT_REFERRALS, 0) - bind = l.simple_bind_s(ldap_class_search+'='+user, password) + bind = l.simple_bind_s(root_user, root_password) + + criteria = "(&(objectClass="+ldap_class_search+")("+ldap_user_attribute+"="+user+"))" + attributes = [ldap_search_field] + result = l.search_s(ldap_base, ldap.SCOPE_SUBTREE, criteria, attributes) + + bind = l.simple_bind_s(result[0][0], password) except ldap.INVALID_CREDENTIALS: print("Content-type: text/html\n") print('
Invalid credentials


') @@ -170,4 +182,4 @@ output_from_parsed_template = template.render(h2 = 0, title = "Login page", ref = ref, versions = funct.versions(), db_create = db_create) -print(output_from_parsed_template) \ No newline at end of file +print(output_from_parsed_template) diff --git a/app/logs.py b/app/logs.py index f85e3697..1f860994 100644 --- a/app/logs.py +++ b/app/logs.py @@ -7,7 +7,7 @@ import os, http from jinja2 import Environment, FileSystemLoader env = Environment(loader=FileSystemLoader('templates/')) template = env.get_template('logs.html') -form = cgi.FieldStorage() +form = funct.form if form.getvalue('grep') is None: grep = "" diff --git a/app/options.py b/app/options.py index 14ee1054..cc934b04 100644 --- a/app/options.py +++ b/app/options.py @@ -5,7 +5,7 @@ import os, sys import funct import sql -form = cgi.FieldStorage() +form = funct.form serv = form.getvalue('serv') act = form.getvalue('act') @@ -893,7 +893,7 @@ if form.getvalue('get_ldap_email'): ldap_class_search = sql.get_setting('ldap_class_search') ldap_user_attribute = sql.get_setting('ldap_user_attribute') - l = ldap.initialize("ldap://"+server+':'+port) + l = ldap.initialize(server+':'+port) try: l.protocol_version = ldap.VERSION3 l.set_option(ldap.OPT_REFERRALS, 0) diff --git a/app/sections.py b/app/sections.py index 6e670081..09553aec 100644 --- a/app/sections.py +++ b/app/sections.py @@ -11,7 +11,7 @@ template = env.get_template('sections.html') print('Content-type: text/html\n') funct.check_login() -form = cgi.FieldStorage() +form = funct.form serv = form.getvalue('serv') section = form.getvalue('section') sections = "" @@ -98,4 +98,4 @@ template = template.render(h2 = 1, title = "Working with HAProxy configs", note = 1, versions = funct.versions(), token = token) -print(template) \ No newline at end of file +print(template) diff --git a/app/servers.py b/app/servers.py index 515513b8..a85f44fb 100644 --- a/app/servers.py +++ b/app/servers.py @@ -8,7 +8,7 @@ import sql from jinja2 import Environment, FileSystemLoader env = Environment(extensions=["jinja2.ext.do"],loader=FileSystemLoader('templates/')) template = env.get_template('servers.html') -form = cgi.FieldStorage() +form = funct.form print('Content-type: text/html\n') funct.check_login() @@ -38,4 +38,4 @@ output_from_parsed_template = template.render(title = "Servers manage", token = token, versions = funct.versions(), ldap_enable = ldap_enable) -print(output_from_parsed_template) \ No newline at end of file +print(output_from_parsed_template) diff --git a/app/sql.py b/app/sql.py index 8ce96558..3a4bdf7d 100644 --- a/app/sql.py +++ b/app/sql.py @@ -1415,8 +1415,8 @@ def check_token_exists(token): funct.logging('localhost', ' Cannot check token', haproxywi=1) return False - -form = cgi.FieldStorage() + +form = funct.form error_mess = 'All fields must be completed X' diff --git a/app/templates/add.html b/app/templates/add.html index 454b01f2..8369a789 100644 --- a/app/templates/add.html +++ b/app/templates/add.html @@ -24,7 +24,7 @@ h3 { {% include 'include/add_proxy.html' %}
-
+ @@ -213,7 +213,7 @@ h3 {
- +

Add listen

@@ -354,7 +354,7 @@ h3 {
- +

Add frontend

@@ -670,7 +670,7 @@ h3 {
- +

Add backend

@@ -753,4 +753,4 @@ $( function() { }); }); -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/app/templates/ajax/config_show.html b/app/templates/ajax/config_show.html index 72464c2a..b83e0236 100644 --- a/app/templates/ajax/config_show.html +++ b/app/templates/ajax/config_show.html @@ -161,7 +161,7 @@ {% if configver %}
- + diff --git a/app/templates/ajax/overview.html b/app/templates/ajax/overview.html index edd32f10..f1db51fd 100644 --- a/app/templates/ajax/overview.html +++ b/app/templates/ajax/overview.html @@ -23,4 +23,4 @@
-{% endfor %} \ No newline at end of file +{% endfor %} diff --git a/app/templates/ajax/show_compare_configs.html b/app/templates/ajax/show_compare_configs.html index b2bbfb60..447b596c 100644 --- a/app/templates/ajax/show_compare_configs.html +++ b/app/templates/ajax/show_compare_configs.html @@ -1,5 +1,5 @@ {% from 'include/input_macros.html' import input %} - +

Choose left diff --git a/app/templates/config.html b/app/templates/config.html index c16ed250..388808e0 100644 --- a/app/templates/config.html +++ b/app/templates/config.html @@ -4,7 +4,7 @@

Choose server

- + Back @@ -97,4 +97,4 @@ } $('textarea').linenumbers({col_width: '25px'}); -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/app/templates/configver.html b/app/templates/configver.html index ebe4b5c1..ccfdb5c1 100644 --- a/app/templates/configver.html +++ b/app/templates/configver.html @@ -3,7 +3,7 @@

Choose server

- + Back {% include 'include/select.html' %} diff --git a/app/templates/delver.html b/app/templates/delver.html index e35aa103..d4590ae0 100644 --- a/app/templates/delver.html +++ b/app/templates/delver.html @@ -3,7 +3,7 @@

Choose server

- + Back {% include 'include/select.html' %} @@ -17,7 +17,7 @@ {% if open %}

Choose old version

- +
{% for file in return_files %} diff --git a/app/templates/logs.html b/app/templates/logs.html index 2d3147f4..ae947c96 100644 --- a/app/templates/logs.html +++ b/app/templates/logs.html @@ -25,7 +25,7 @@

Add Userlist

- + {% if onclick == 'viewLogs()' %}
- + {% include 'include/select.html' %} diff --git a/app/templates/sections.html b/app/templates/sections.html index 3471e4d6..27f6cf7c 100644 --- a/app/templates/sections.html +++ b/app/templates/sections.html @@ -3,7 +3,7 @@

Choose a section

- + {% if aftersave %} Back {% else %} @@ -29,7 +29,7 @@ {% if role <= 2 %}

You are editting "{{section}}" from server {{ serv }}

- + diff --git a/app/templates/servers.html b/app/templates/servers.html index d685a44e..a0376a23 100644 --- a/app/templates/servers.html +++ b/app/templates/servers.html @@ -332,7 +332,7 @@