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('