diff --git a/app/configver.py b/app/configver.py index bae61c9b..dfd75524 100644 --- a/app/configver.py +++ b/app/configver.py @@ -62,7 +62,7 @@ if form.getvalue('serv') is not None and form.getvalue('config') is not None: if master[0] != None: funct.upload_and_restart(master[0], configver, just_save=save) - stderr, error = funct.upload_and_restart(serv, configver, just_save=save) + stderr = funct.upload_and_restart(serv, configver, just_save=save) aftersave = 1 diff --git a/app/funct.py b/app/funct.py index a72c2a7e..6c1fefed 100644 --- a/app/funct.py +++ b/app/funct.py @@ -144,34 +144,40 @@ def ssh_connect(serv, **kwargs): return False else: return 'Authentication failed, please verify your credentials' + pass except paramiko.SSHException as sshException: if kwargs.get('check'): print('
Unable to establish SSH connection: %s
' % sshException) return False else: return 'Unable to establish SSH connection: %s ' % sshException + pass except paramiko.BadHostKeyException as badHostKeyException: if kwargs.get('check'): print('
Unable to verify server\'s host key: %s
' % badHostKeyException) return False else: return 'Unable to verify server\'s host key: %s ' % badHostKeyException + pass except Exception as e: if e.args[1] == "No such file or directory": if kwargs.get('check'): print('
{}. Check ssh key
'.format(e.args[1])) else: return '{}. Check ssh key'.format(e.args[1]) + pass elif e.args[1] == "Invalid argument": if kwargs.get('check'): print('
Check the IP of the new server
') else: error = 'Check the IP of the new server' + pass else: if kwargs.get('check'): print('
{}
'.format(e.args[1])) else: error = e.args[1] + pass if kwargs.get('check'): return False else: @@ -372,9 +378,9 @@ def show_log(stdout): for line in stdout: i = i + 1 if i % 2 == 0: - print('
' + line + '
') + print('
' + escape_html(line) + '
') else: - print('
' + line + '
') + print('
' + escape_html(line) + '
') def show_ip(stdout): for line in stdout: @@ -418,6 +424,11 @@ def ssh_command(serv, commands, **kwargs): print('
'+stdout.read().decode(encoding='UTF-8')+'
') print(stderr.read().decode(encoding='UTF-8')) - - ssh.close() + try: + ssh.close() + except: + print(ssh) + pass +def escape_html(text): + return cgi.escape(text, quote=True) \ No newline at end of file diff --git a/app/sql.py b/app/sql.py index cdd0e434..8ce3037a 100644 --- a/app/sql.py +++ b/app/sql.py @@ -120,12 +120,12 @@ def add_server(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 - else: - return True + cur.close() con.close() @@ -220,29 +220,12 @@ def select_user_name_group(id): return group cur.close() con.close() - -def get_groups_select(id, **kwargs): - print('') 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 hostname='%s' """ % kwargs.get("server") + 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: @@ -445,85 +428,40 @@ def update_ssh(enable, username, password): cur.close() con.close() -def show_update_servers(): - SERVERS = select_servers() - print('' - 'Hostname' - 'IP' - 'Group' - '' - '') - for server in SERVERS: - print('' % server[0]) - print('' % (server[0], server[1])) - print('' % (server[0], server[2])) - print('') - get_groups_select("123", selected=server[3]) - print('') - print('') - get_enable_checkbox(server[0]) - print('') - print('') - get_type_ip_checkbox(server[0]) - print('') - print('' % server[0]) - print('') - def show_update_user(user): - USERS = select_users(user=user) - for users in USERS: - print('' % users[0]) - print('' % (users[0], users[1])) - print('' % (users[0], users[3])) - print('' % (users[0], users[2])) - print('') - need_id_role = "role-%s" % users[0] - get_roles_select(need_id_role, selected=users[4]) - print('') - print('') - need_id_group = "usergroup-%s" % users[0] - get_groups_select(need_id_group, selected=users[5]) - print('') - print('' % users[0]) - print('') + from jinja2 import Environment, FileSystemLoader + env = Environment(loader=FileSystemLoader('templates/ajax')) + template = env.get_template('/new_user.html') + + print('Content-type: text/html\n') + + output_from_parsed_template = template.render(users = select_users(user=user), + groups = select_groups(), + roles = select_roles()) + print(output_from_parsed_template) def show_update_server(server): - SERVERS = select_servers(server=server) - for server in SERVERS: - print('' % server[0]) - print('' % (server[0], server[1])) - print('' % (server[0], server[2])) - print('') - need_id_group = "servergroup-%s" % server[0] - get_groups_select(need_id_group, selected=server[3]) - print('') - print('') - get_enable_checkbox(server[0]) - print('') - print('') - get_type_ip_checkbox(server[0]) - print('') - print('') - print('' % server[0]) - print('') + from jinja2 import Environment, FileSystemLoader + env = Environment(loader=FileSystemLoader('templates/ajax/')) + template = env.get_template('/new_server.html') + + print('Content-type: text/html\n') + + output_from_parsed_template = template.render(groups = select_groups(), + servers = select_servers(server=server), + roles = select_roles(), + masters = select_servers(get_master_servers=1)) + print(output_from_parsed_template) def show_update_group(group): - GROUPS = select_groups(group=group) - for group in GROUPS: - print('' % group[0]) - print('' % (group[0], group[1])) - print('' % (group[0], group[2])) - print('' % group[0]) - print('') - print('') + from jinja2 import Environment, FileSystemLoader + env = Environment(loader=FileSystemLoader('templates/ajax/')) + template = env.get_template('/new_group.html') + + print('Content-type: text/html\n') + + output_from_parsed_template = template.render(groups = select_groups(group=group)) + print(output_from_parsed_template) def select_roles(**kwargs): con, cur = create_db.get_cur() @@ -552,21 +490,7 @@ def select_roles(**kwargs): return cur.fetchall() cur.close() con.close() - -def get_roles_select(id, **kwargs): - print('') - + form = cgi.FieldStorage() error_mess = 'All fields must be completed X' @@ -614,13 +538,10 @@ if form.getvalue('newserver') is not None: if ip is None or group is None: print('Content-type: text/html\n') print(error_mess) - else: + else: print('Content-type: text/html\n') - if funct.ssh_connect(ip, check=1): - if add_server(hostname, ip, group, typeip, enable, master): - show_update_server(hostname) - else: - print('X') + if add_server(hostname, ip, group, typeip, enable, master): + show_update_server(ip) if form.getvalue('serverdel') is not None: print('Content-type: text/html\n') diff --git a/app/templates/ajax/group_update.html b/app/templates/ajax/group_update.html new file mode 100644 index 00000000..e53bc0ea --- /dev/null +++ b/app/templates/ajax/group_update.html @@ -0,0 +1,13 @@ +{% for group in groups %} + + + + + + + + + + + +{% endfor %} \ No newline at end of file diff --git a/app/templates/ajax/new_group.html b/app/templates/ajax/new_group.html new file mode 100644 index 00000000..41fb49d9 --- /dev/null +++ b/app/templates/ajax/new_group.html @@ -0,0 +1,13 @@ +{% for group in groups %} + + + + + + + + + + + +{% endfor %} \ No newline at end of file diff --git a/app/templates/ajax/new_server.html b/app/templates/ajax/new_server.html new file mode 100644 index 00000000..4fa8d64d --- /dev/null +++ b/app/templates/ajax/new_server.html @@ -0,0 +1,51 @@ +{% for server in servers %} + + + + + + + + + + + + {% if server.5 == 1 %} + + {% else %} + + {% endif %} + + + {% if server.4 == 1 %} + + {% else %} + + {% endif %} + + + + + + + + + {% endfor %} diff --git a/app/templates/ajax/new_user.html b/app/templates/ajax/new_user.html new file mode 100644 index 00000000..7fb63e2b --- /dev/null +++ b/app/templates/ajax/new_user.html @@ -0,0 +1,32 @@ +{% for user in users %} + + + + + + + + + + + + + {% endfor %} \ No newline at end of file diff --git a/app/templates/ajax/server_update.html b/app/templates/ajax/server_update.html new file mode 100644 index 00000000..57ddd6b2 --- /dev/null +++ b/app/templates/ajax/server_update.html @@ -0,0 +1,53 @@ +{% for server in servers %} + + + + + + + + + + + + {% if server.5 == 1 %} + + {% else %} + + {% endif %} + + + {% if server.4 == 1 %} + + {% else %} + + {% endif %} + + + + + + + + + {% endfor %} + + diff --git a/app/templates/ajax/servers_update.html b/app/templates/ajax/servers_update.html new file mode 100644 index 00000000..a408b497 --- /dev/null +++ b/app/templates/ajax/servers_update.html @@ -0,0 +1,51 @@ +{% for server in servers %} + + + + + + + + + + + + {% if server.5 == 1 %} + + {% else %} + + {% endif %} + + + {% if server.4 == 1 %} + + {% else %} + + {% endif %} + + + + + + + + + {% endfor %} \ No newline at end of file diff --git a/app/templates/logs.html b/app/templates/logs.html index 02eee2fe..201198fb 100644 --- a/app/templates/logs.html +++ b/app/templates/logs.html @@ -19,9 +19,9 @@
- {% if onclick == 'showApacheLog()' %} + {% for select in selects %} {% if select.2 == serv %} @@ -31,6 +31,7 @@ {% endfor %} {% else %} {% for select in selects %} + {% if select.2 == serv %} {% else %} diff --git a/inc/style.css b/inc/style.css index 6aaf7764..3e7db826 100644 --- a/inc/style.css +++ b/inc/style.css @@ -291,6 +291,7 @@ pre { padding-left: 10px; float: right; margin-right: 10px; + cursor: pointer; } .serverDown { background-color: red; diff --git a/inc/users.js b/inc/users.js index f68fd82a..6bcfdf5f 100644 --- a/inc/users.js +++ b/inc/users.js @@ -129,7 +129,7 @@ $( function() { } else { $('.alert-danger').remove(); $("#ajax-users").append(data); - $( "#ajax-users tr td" ).addClass( "update", 1000, callbackUser ); + $( ".newuser" ).addClass( "update", 1000, callbackUser ); $.getScript(url); $.getScript(awesome); $.getScript(users); @@ -138,6 +138,8 @@ $( function() { } ); }); $('#add-group').click(function() { + $('#error').remove(); + $('.alert-danger').remove(); $.ajax( { url: "sql.py", data: { @@ -153,7 +155,7 @@ $( function() { var getId = new RegExp('[0-9]+'); var id = data.match(getId); $("#ajax-group").append(data); - $( "#ajax-group tr td" ).addClass( "update", 1000, callbackGroup ); + $( ".newgroup" ).addClass( "update", 1000, callbackGroup ); $('select:regex(id, group)').append('').selectmenu("refresh"); $.getScript(awesome); } @@ -190,10 +192,9 @@ $( function() { } else { $('.alert-danger').remove(); $("#ajax-servers").append(data); - $( "#ajax-servers tr td" ).addClass( "update", 1000, callback ); - $.getScript(url); - $.getScript(awesome); - $.getScript(users); + $(".newserver").addClass( "update", 1000, callbackServer ); + $.getScript(url); + $.getScript(awesome); } } } ); @@ -201,18 +202,17 @@ $( function() { function callbackUser() { setTimeout(function() { - $( "#ajax-users tr td" ).removeClass( "update" ); + $( ".newuser" ).removeClass( "update" ); }, 2500 ); } - function callback() { + function callbackServer() { setTimeout(function() { - $( "#ajax-servers tr td" ).removeClass( "update" ); + $( ".newserver" ).removeClass( "update" ); }, 2500 ); - } - + } function callbackGroup() { setTimeout(function() { - $( "#ajax-group tr td" ).removeClass( "update" ); + $( ".newgroup" ).removeClass( "update" ); }, 2500 ); } diff --git a/install.sh b/install.sh index c5800aed..c5a0ea33 100644 --- a/install.sh +++ b/install.sh @@ -292,6 +292,7 @@ echo "Edit firewalld" firewall-cmd --zone=public --add-port=$PORT/tcp --permanent firewall-cmd --reload +mkdir /var/www/$HOME_HAPROXY_WI/app/certs chmod +x /var/www/$HOME_HAPROXY_WI/app/*.py chown -R apache:apache /var/www/$HOME_HAPROXY_WI/ rm -f /var/www/$HOME_HAPROXY_WI/log/config_edit.log diff --git a/update.sh b/update.sh index 5030a15e..4a7b0999 100644 --- a/update.sh +++ b/update.sh @@ -1,9 +1,11 @@ #!/bin/bash + cp app/haproxy-webintarface.config /tmp/ git reset --hard git pull https://github.com/Aidaho12/haproxy-wi.git +mkdir app/certs chmod +x app/*py chown -R apache:apache *