diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
index 8581230d..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://paypal.me/loginovpavel', 'https://money.yandex.ru/to/410015575994949']
+custom: ['https://paypal.me/loginovpavel']
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
deleted file mode 100644
index c46393b2..00000000
--- a/CONTRIBUTING.md
+++ /dev/null
@@ -1,3 +0,0 @@
-Feel free to contribute and build the best HAProxy web interface.
-
-Python 3.4 what's all =^.^=
diff --git a/README.md b/README.md
index b42c3e1d..95d3f32f 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# Haproxy web interface
+# HAProxy-WI
Web interface(user-friendly web GUI, alerting, monitoring and secure) for managing HAProxy servers. Leave your [feedback](https://github.com/Aidaho12/haproxy-wi/issues)
# Youtube
diff --git a/app/add.py b/app/add.py
index 6b6e5dc4..979f6d7a 100644
--- a/app/add.py
+++ b/app/add.py
@@ -1,5 +1,4 @@
#!/usr/bin/env python3
-import cgi
import os
import funct
import sql
@@ -20,12 +19,8 @@ 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)
- servers = sql.get_dick_permit()
+ user, user_id, role, token, servers = funct.get_users_params()
user_group = sql.get_user_group_by_uuid(user_id.value)
- token = sql.get_token(user_id.value)
except:
pass
@@ -46,7 +41,7 @@ black_lists = funct.get_files(dir=black_dir, format="lst")
template = template.render(title = "Add",
- role = sql.get_user_role_by_uuid(user_id.value),
+ role = role,
user = user,
selects = servers,
add = form.getvalue('add'),
diff --git a/app/config.py b/app/config.py
index 1191862c..6edabbaf 100644
--- a/app/config.py
+++ b/app/config.py
@@ -1,7 +1,5 @@
#!/usr/bin/env python3
-import cgi
import os
-import http.cookies
import funct
import sql
from jinja2 import Environment, FileSystemLoader
@@ -21,15 +19,10 @@ error = ""
aftersave = ""
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)
- role = sql.get_user_role_by_uuid(user_id.value)
+ user, user_id, role, token, servers = funct.get_users_params()
except:
pass
-
if service == 'keepalived':
title = "Working with Keepalived configs"
action = "config.py?service=keepalived"
diff --git a/app/funct.py b/app/funct.py
index 00b9c19d..98283c48 100644
--- a/app/funct.py
+++ b/app/funct.py
@@ -5,11 +5,13 @@ import os, sys
form = cgi.FieldStorage()
serv = form.getvalue('serv')
+
def get_app_dir():
d = sys.path[0]
d = d.split('/')[-1]
return sys.path[0] if d == "app" else os.path.dirname(sys.path[0])
+
def get_config_var(sec, var):
from configparser import ConfigParser, ExtendedInterpolation
try:
@@ -25,6 +27,7 @@ def get_config_var(sec, var):
print('Content-type: text/html\n')
print('
Check the config file. Presence section %s and parameter %s
' % (sec, var))
+
def get_data(type):
from datetime import datetime
from pytz import timezone
@@ -111,6 +114,7 @@ def telegram_send_mess(mess, **kwargs):
logging('localhost', mess, haproxywi=1)
sys.exit()
+
def check_login(**kwargs):
import sql
import http.cookies
@@ -129,6 +133,7 @@ def check_login(**kwargs):
print('' % ref)
return False
+
def is_admin(**kwargs):
import sql
import http.cookies
@@ -150,6 +155,7 @@ def is_admin(**kwargs):
return False
pass
+
def page_for_admin(**kwargs):
give_level = 1
give_level = kwargs.get("level")
@@ -227,6 +233,7 @@ def ssh_connect(serv, **kwargs):
pass
return str(error)
+
def get_config(serv, cfg, **kwargs):
import sql
@@ -254,6 +261,7 @@ def get_config(serv, cfg, **kwargs):
logging('localhost', ssh, haproxywi=1)
return ssh
+
def diff_config(oldcfg, cfg):
log_path = get_config_var('main', 'log_path')
diff = ""
@@ -898,4 +906,21 @@ def out_error(e):
else:
error = e.args[0]
print('An error occurred: ' + error + ' X')
-
\ No newline at end of file
+
+
+def get_users_params(**kwargs):
+ import http.cookies
+ import sql
+ cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE"))
+ user_id = cookie.get('uuid')
+ user = sql.get_user_name_by_uuid(user_id.value)
+ role = sql.get_user_role_by_uuid(user_id.value)
+ token = sql.get_token(user_id.value)
+ if kwargs.get('virt'):
+ servers = sql.get_dick_permit(virt=1)
+ elif kwargs.get('disable'):
+ servers = sql.get_dick_permit(disable=0)
+ else:
+ servers = sql.get_dick_permit()
+
+ return user, user_id, role, token, servers
\ No newline at end of file
diff --git a/app/ha.py b/app/ha.py
index dddc6f98..ca93c2ec 100644
--- a/app/ha.py
+++ b/app/ha.py
@@ -1,8 +1,5 @@
#!/usr/bin/env python3
-import http.cookies
-import cgi
-import os
-import funct, sql
+import funct
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('templates/'))
template = env.get_template('ha.html')
@@ -15,17 +12,13 @@ form = funct.form
serv = form.getvalue('serv')
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)
- servers = sql.get_dick_permit()
- token = sql.get_token(user_id.value)
+ user, user_id, role, token, servers = funct.get_users_params()
except:
pass
output_from_parsed_template = template.render(h2 = 1, title = "Configure HA",
- role = sql.get_user_role_by_uuid(user_id.value),
+ role = role,
user = user,
serv = serv,
selects = servers,
diff --git a/app/hapservers.py b/app/hapservers.py
index 6ae42206..2e7a5821 100644
--- a/app/hapservers.py
+++ b/app/hapservers.py
@@ -1,7 +1,5 @@
#!/usr/bin/env python3
import funct, sql
-import os, http.cookies
-import cgi
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('templates/'))
template = env.get_template('hapservers.html')
@@ -10,12 +8,9 @@ print('Content-type: text/html\n')
funct.check_login()
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)
+ user, user_id, role, token, servers = funct.get_users_params()
users = sql.select_users()
groups = sql.select_groups()
- token = sql.get_token(user_id.value)
except:
pass
@@ -80,7 +75,7 @@ for s in servers:
template = template.render(h2 = 1,
autorefresh = autorefresh,
title = title,
- role = sql.get_user_role_by_uuid(user_id.value),
+ role = role,
user = user,
users = users,
groups = groups,
diff --git a/app/logs.py b/app/logs.py
index 73bd59be..d9f9333c 100644
--- a/app/logs.py
+++ b/app/logs.py
@@ -1,9 +1,5 @@
#!/usr/bin/env python3
-
-import cgi
import funct
-import sql
-import os, http
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('templates/'))
template = env.get_template('logs.html')
@@ -30,11 +26,7 @@ print('Content-type: text/html\n')
funct.check_login()
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)
- servers = sql.get_dick_permit()
- token = sql.get_token(user_id.value)
+ user, user_id, role, token, servers = funct.get_users_params()
except:
pass
@@ -46,7 +38,7 @@ else:
template = template.render(h2 = 1,
autorefresh = 1,
title = title,
- role = sql.get_user_role_by_uuid(user_id.value),
+ role = role,
user = user,
onclick = "showLog()",
select_id = "serv",
diff --git a/app/metrics.py b/app/metrics.py
index 0e6a582b..7e3e3da8 100644
--- a/app/metrics.py
+++ b/app/metrics.py
@@ -1,7 +1,5 @@
#!/usr/bin/env python3
-import os
import sql
-import http.cookies
import funct
import sql
from jinja2 import Environment, FileSystemLoader
@@ -12,17 +10,14 @@ print('Content-type: text/html\n')
funct.check_login()
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)
+ user, user_id, role, token, servers = funct.get_users_params()
except:
pass
template = template.render(h2 = 1, title = "Metrics",
autorefresh = 1,
- role = sql.get_user_role_by_uuid(user_id.value),
+ role = role,
user = user,
servers = sql.select_servers_metrics(user_id.value),
versions = funct.versions(),
diff --git a/app/overview.py b/app/overview.py
index 143603a4..91c6695e 100644
--- a/app/overview.py
+++ b/app/overview.py
@@ -1,7 +1,6 @@
#!/usr/bin/env python3
import funct, sql
import create_db
-import os, http.cookies
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('templates/'))
template = env.get_template('ovw.html')
@@ -14,13 +13,9 @@ create_db.update_all_silent()
funct.check_login()
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)
+ user, user_id, role, token, servers = funct.get_users_params()
users = sql.select_users()
groups = sql.select_groups()
- token = sql.get_token(user_id.value)
- role = sql.get_user_role_by_uuid(user_id.value)
cmd = "ps ax |grep checker_mas |grep -v grep |wc -l"
checker_master, stderr = funct.subprocess_execute(cmd)
cmd = "ps ax |grep checker_worker |grep -v grep |wc -l"
@@ -33,7 +28,6 @@ try:
keep_alive, stderr = funct.subprocess_execute(cmd)
cmd = "ps ax |grep '(wsgi:api)'|grep -v grep|wc -l"
api, stderr = funct.subprocess_execute(cmd)
- servers = sql.get_dick_permit()
except:
role = ''
user = ''
diff --git a/app/edit.py b/app/runtimeapi.py
similarity index 71%
rename from app/edit.py
rename to app/runtimeapi.py
index 1cba68c1..49084098 100644
--- a/app/edit.py
+++ b/app/runtimeapi.py
@@ -1,8 +1,5 @@
#!/usr/bin/env python3
-import os
-import http, cgi
import funct
-import sql
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('templates/'))
template = env.get_template('runtimeapi.html')
@@ -12,11 +9,7 @@ funct.check_login()
form = funct.form
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)
- servers = sql.get_dick_permit(virt=1)
- token = sql.get_token(user_id.value)
+ user, user_id, role, token, servers = funct.get_users_params(virt=1)
servbackend = form.getvalue('servbackend')
serv = form.getvalue('serv')
if servbackend is None:
@@ -27,7 +20,7 @@ except:
output_from_parsed_template = template.render(h2 = 1,
title = "Runtime API",
- role = sql.get_user_role_by_uuid(user_id.value),
+ role = role,
user = user,
onclick = "showRuntime()",
select_id = "serv",
diff --git a/app/sections.py b/app/sections.py
index 09553aec..bac950ba 100644
--- a/app/sections.py
+++ b/app/sections.py
@@ -1,9 +1,6 @@
#!/usr/bin/env python3
-import cgi
import os
-import http.cookies
import funct
-import sql
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('templates/'), autoescape=True,extensions=['jinja2.ext.loopcontrols'])
template = env.get_template('sections.html')
@@ -24,12 +21,7 @@ start_line = ""
end_line = ""
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)
- servers = sql.get_dick_permit()
- token = sql.get_token(user_id.value)
- role = sql.get_user_role_by_uuid(user_id.value)
+ user, user_id, role, token, servers = funct.get_users_params()
except:
pass
diff --git a/app/servers.py b/app/servers.py
index 8386fa8d..d252683f 100644
--- a/app/servers.py
+++ b/app/servers.py
@@ -1,8 +1,4 @@
#!/usr/bin/env python3
-import http
-import cgi
-import sys
-import os
import funct
import sql
from jinja2 import Environment, FileSystemLoader
@@ -14,18 +10,14 @@ 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)
- servers = sql.get_dick_permit()
- token = sql.get_token(user_id.value)
+ user, user_id, role, token, servers = funct.get_users_params()
ldap_enable = sql.get_setting('ldap_enable')
except:
pass
output_from_parsed_template = template.render(title = "Servers manage",
- role = sql.get_user_role_by_uuid(user_id.value),
+ role = role,
user = user,
users = sql.select_users(),
groups = sql.select_groups(),
diff --git a/app/templates/base.html b/app/templates/base.html
index e5a3f53f..c4cdda80 100644
--- a/app/templates/base.html
+++ b/app/templates/base.html
@@ -58,7 +58,7 @@
-
+
{% if role <= 2 %}
diff --git a/app/templates/delver.html b/app/templates/delver.html
index 974385d1..9ac1fcd2 100644
--- a/app/templates/delver.html
+++ b/app/templates/delver.html
@@ -14,6 +14,18 @@
{% endif %}
+ {% if aftersave %}
+ The following files have been deleted:
+ {% if stderr %}
+ {% include 'include/errors.html' %}
+ {% else %}
+
+ {% for f in file %}
+ {{f}}
+ {% endfor %}
+
+ {% endif %}
+ {% endif %}
{% if open %}
Choose old version
@@ -35,17 +47,5 @@
{% endif %}
- {% if aftersave %}
- The following files were deleted:
- {% if stderr %}
- {% include 'include/errors.html' %}
- {% else %}
-
- {% for f in file %}
- {{f}}
- {% endfor %}
-
- {% endif %}
- {% endif %}
{% endblock %}
\ No newline at end of file
diff --git a/app/users.py b/app/users.py
index 019aa490..12532b61 100644
--- a/app/users.py
+++ b/app/users.py
@@ -1,10 +1,5 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-
-import http
-import cgi
-import sys
-import os
import funct
import sql
from jinja2 import Environment, FileSystemLoader
@@ -17,12 +12,8 @@ print('Content-type: text/html\n')
funct.check_login()
funct.page_for_admin()
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)
+ user, user_id, role, token, servers = funct.get_users_params()
users = sql.select_users()
- servers = sql.get_dick_permit()
- token = sql.get_token(user_id.value)
settings = sql.get_setting('', all=1)
ldap_enable = sql.get_setting('ldap_enable')
except:
@@ -30,7 +21,7 @@ except:
template = template.render(title = "Admin area: users manage",
- role = sql.get_user_role_by_uuid(user_id.value),
+ role = role,
user = user,
users = users,
groups = sql.select_groups(),
@@ -42,5 +33,6 @@ template = template.render(title = "Admin area: users manage",
token = token,
versions = funct.versions(),
settings = settings,
+ backups = sql.select_backups(),
ldap_enable = ldap_enable)
print(template)
diff --git a/app/versions.py b/app/versions.py
index ea9d78f4..c1c94f01 100644
--- a/app/versions.py
+++ b/app/versions.py
@@ -1,9 +1,6 @@
#!/usr/bin/env python3
-import http.cookies
-import cgi
import os
import funct, sql
-import glob
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('templates/'))
template = env.get_template('delver.html')
@@ -25,11 +22,7 @@ if form.getvalue('configver'):
template = env.get_template('configver.html')
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)
- servers = sql.get_dick_permit(disable=0)
+ user, user_id, role, token, servers = funct.get_users_params(disable=1)
except:
pass
@@ -86,7 +79,7 @@ if serv is not None and form.getvalue('config') is not None:
template = template.render(h2 = 1, title = title,
- role = sql.get_user_role_by_uuid(user_id.value),
+ role = role,
action = action,
user = user,
select_id = "serv",
diff --git a/app/viewlogs.py b/app/viewlogs.py
index 1ab9b1c4..cb2753b3 100644
--- a/app/viewlogs.py
+++ b/app/viewlogs.py
@@ -1,7 +1,5 @@
#!/usr/bin/env python3
-import os, sys
-import http, cgi
-import glob
+import os
import datetime
import funct
import sql
@@ -51,10 +49,7 @@ except:
pass
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)
+ user, user_id, role, token, servers = funct.get_users_params()
except:
pass
@@ -65,7 +60,7 @@ selects.append(['haproxy-wi.access.log','access.log'])
output_from_parsed_template = template.render(h2 = 1,
autorefresh = 1,
title = "View internal logs",
- role = sql.get_user_role_by_uuid(user_id.value),
+ role = role,
user = user,
onclick = "viewLogs()",
serv = serv,
diff --git a/app/viewsttats.py b/app/viewsttats.py
index 731a242b..7b5c7de1 100644
--- a/app/viewsttats.py
+++ b/app/viewsttats.py
@@ -1,27 +1,20 @@
#!/usr/bin/env python3
-import http.cookies, os
-import cgi
import funct
-import sql
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('templates/'))
template = env.get_template('viewstats.html')
form = funct.form
serv = form.getvalue('serv')
+service = form.getvalue('service')
print('Content-type: text/html\n')
funct.check_login()
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)
- role = sql.get_user_role_by_uuid(user_id.value)
- servers = sql.get_dick_permit(virt=1)
- token = sql.get_token(user_id.value)
+ user, user_id, role, token, servers = funct.get_users_params(virt=1)
if serv is None:
- first_serv = sql.get_dick_permit()
+ first_serv = servers
for i in first_serv:
serv = i[2]
break
@@ -39,6 +32,7 @@ output_from_parsed_template = template.render(h2 = 1,
selects = servers,
serv = serv,
versions = funct.versions(),
+ service = service,
token = token)
print(output_from_parsed_template)
diff --git a/app/waf.py b/app/waf.py
index a7ef7d4c..af0fdf8b 100644
--- a/app/waf.py
+++ b/app/waf.py
@@ -1,7 +1,4 @@
#!/usr/bin/env python3
-import os
-import sql
-import http
import funct
import sql
from jinja2 import Environment, FileSystemLoader
@@ -13,19 +10,17 @@ 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)
+ user, user_id, role, token, servers = funct.get_users_params()
except:
pass
template = template.render(h2 = 1, title = "Web application firewall",
autorefresh = 1,
- role = sql.get_user_role_by_uuid(user_id.value),
+ role = role,
user = user,
servers = sql.select_waf_servers_metrics(user_id.value),
+ servers_all = servers,
versions = funct.versions(),
token = token)
print(template)
\ No newline at end of file
diff --git a/index.html b/index.html
index d512fdb4..cc48e17e 100644
--- a/index.html
+++ b/index.html
@@ -27,6 +27,10 @@
+
+
+
+