v3.5.4
|
@ -23,7 +23,7 @@ if act == "checkrestart":
|
||||||
sys.exit()
|
sys.exit()
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
if form.getvalue('token') is None:
|
if not sql.check_token_exists(form.getvalue('token')):
|
||||||
print("What the fuck?! U r hacker Oo?!")
|
print("What the fuck?! U r hacker Oo?!")
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
|
|
101
app/sql.py
|
@ -1369,18 +1369,54 @@ def select_keep_alive(**kwargs):
|
||||||
return cur.fetchall()
|
return cur.fetchall()
|
||||||
cur.close()
|
cur.close()
|
||||||
con.close()
|
con.close()
|
||||||
|
|
||||||
|
|
||||||
|
def check_token_exists(token):
|
||||||
|
try:
|
||||||
|
import http.cookies
|
||||||
|
import os
|
||||||
|
cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE"))
|
||||||
|
user_id = cookie.get('uuid')
|
||||||
|
if get_token(user_id.value) == token:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
funct.logging('localhost', ' tried do action with wrong token', haproxywi=1, login=1)
|
||||||
|
except:
|
||||||
|
funct.logging('localhost', ' An action with wrong token', haproxywi=1)
|
||||||
|
return False
|
||||||
|
except:
|
||||||
|
try:
|
||||||
|
funct.logging('localhost', ' cannot check token', haproxywi=1, login=1)
|
||||||
|
except:
|
||||||
|
funct.logging('localhost', ' Cannot check token', haproxywi=1)
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
form = cgi.FieldStorage()
|
form = cgi.FieldStorage()
|
||||||
error_mess = '<span class="alert alert-danger" id="error">All fields must be completed <a title="Close" id="errorMess"><b>X</b></a></span>'
|
error_mess = '<span class="alert alert-danger" id="error">All fields must be completed <a title="Close" id="errorMess"><b>X</b></a></span>'
|
||||||
|
|
||||||
|
|
||||||
def check_token():
|
def check_token():
|
||||||
if form.getvalue('token') is None:
|
if not check_token_exists(form.getvalue('token')):
|
||||||
print('Content-type: text/html\n')
|
print('Content-type: text/html\n')
|
||||||
print("What the fuck?! U r hacker Oo?!")
|
print("What the fuck?! U r hacker Oo?!")
|
||||||
import sys
|
import sys
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
|
|
||||||
|
def check_group(group):
|
||||||
|
import http.cookies
|
||||||
|
import os
|
||||||
|
cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE"))
|
||||||
|
user_id = cookie.get('uuid')
|
||||||
|
user_group = get_user_group_by_uuid(user_id.value)
|
||||||
|
if user_group == group or user_group == '1':
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
funct.logging(new_user, ' tried to change user group', haproxywi=1, login=1)
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
if form.getvalue('newuser') is not None:
|
if form.getvalue('newuser') is not None:
|
||||||
email = form.getvalue('newemail')
|
email = form.getvalue('newemail')
|
||||||
|
@ -1394,13 +1430,16 @@ if form.getvalue('newuser') is not None:
|
||||||
if password is None or role is None or group is None:
|
if password is None or role is None or group is None:
|
||||||
print(error_mess)
|
print(error_mess)
|
||||||
else:
|
else:
|
||||||
role_id = get_role_id_by_name(role)
|
if check_group(group):
|
||||||
if funct.is_admin(level=role_id):
|
role_id = get_role_id_by_name(role)
|
||||||
if add_user(new_user, email, password, role, group, activeuser):
|
if funct.is_admin(level=role_id):
|
||||||
show_update_user(new_user, page)
|
if add_user(new_user, email, password, role, group, activeuser):
|
||||||
else:
|
show_update_user(new_user, page)
|
||||||
funct.logging(new_user, ' tried to do privilege escalation', haproxywi=1, login=1)
|
else:
|
||||||
|
funct.logging(new_user, ' tried to privilege escalation', haproxywi=1, login=1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if form.getvalue('updateuser') is not None:
|
if form.getvalue('updateuser') is not None:
|
||||||
email = form.getvalue('email')
|
email = form.getvalue('email')
|
||||||
role = form.getvalue('role')
|
role = form.getvalue('role')
|
||||||
|
@ -1412,12 +1451,14 @@ if form.getvalue('updateuser') is not None:
|
||||||
check_token()
|
check_token()
|
||||||
if new_user is None or role is None or group is None:
|
if new_user is None or role is None or group is None:
|
||||||
print(error_mess)
|
print(error_mess)
|
||||||
else:
|
else:
|
||||||
role_id = get_role_id_by_name(role)
|
if check_group(group):
|
||||||
if funct.is_admin(level=role_id):
|
role_id = get_role_id_by_name(role)
|
||||||
update_user(new_user, email, role, group, id, activeuser)
|
if funct.is_admin(level=role_id):
|
||||||
else:
|
update_user(new_user, email, role, group, id, activeuser)
|
||||||
funct.logging(new_user, ' tried to do privilege escalation', haproxywi=1, login=1)
|
else:
|
||||||
|
funct.logging(new_user, ' tried to privilege escalation', haproxywi=1, login=1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if form.getvalue('updatepassowrd') is not None:
|
if form.getvalue('updatepassowrd') is not None:
|
||||||
|
@ -1437,6 +1478,7 @@ if form.getvalue('userdel') is not None:
|
||||||
check_token()
|
check_token()
|
||||||
if delete_user(form.getvalue('userdel')):
|
if delete_user(form.getvalue('userdel')):
|
||||||
print("Ok")
|
print("Ok")
|
||||||
|
|
||||||
|
|
||||||
if form.getvalue('newserver') is not None:
|
if form.getvalue('newserver') is not None:
|
||||||
hostname = form.getvalue('servername')
|
hostname = form.getvalue('servername')
|
||||||
|
@ -1460,6 +1502,7 @@ if form.getvalue('newserver') is not None:
|
||||||
else:
|
else:
|
||||||
if add_server(hostname, ip, group, typeip, enable, master, cred, alert, metrics, port, desc, active):
|
if add_server(hostname, ip, group, typeip, enable, master, cred, alert, metrics, port, desc, active):
|
||||||
show_update_server(ip, page)
|
show_update_server(ip, page)
|
||||||
|
|
||||||
|
|
||||||
if form.getvalue('serverdel') is not None:
|
if form.getvalue('serverdel') is not None:
|
||||||
print('Content-type: text/html\n')
|
print('Content-type: text/html\n')
|
||||||
|
@ -1467,6 +1510,7 @@ if form.getvalue('serverdel') is not None:
|
||||||
if delete_server(form.getvalue('serverdel')):
|
if delete_server(form.getvalue('serverdel')):
|
||||||
delete_waf_server(form.getvalue('serverdel'))
|
delete_waf_server(form.getvalue('serverdel'))
|
||||||
print("Ok")
|
print("Ok")
|
||||||
|
|
||||||
|
|
||||||
if form.getvalue('newgroup') is not None:
|
if form.getvalue('newgroup') is not None:
|
||||||
newgroup = form.getvalue('groupname')
|
newgroup = form.getvalue('groupname')
|
||||||
|
@ -1479,11 +1523,13 @@ if form.getvalue('newgroup') is not None:
|
||||||
if add_group(newgroup, desc):
|
if add_group(newgroup, desc):
|
||||||
show_update_group(newgroup)
|
show_update_group(newgroup)
|
||||||
|
|
||||||
|
|
||||||
if form.getvalue('groupdel') is not None:
|
if form.getvalue('groupdel') is not None:
|
||||||
print('Content-type: text/html\n')
|
print('Content-type: text/html\n')
|
||||||
check_token()
|
check_token()
|
||||||
if delete_group(form.getvalue('groupdel')):
|
if delete_group(form.getvalue('groupdel')):
|
||||||
print("Ok")
|
print("Ok")
|
||||||
|
|
||||||
|
|
||||||
if form.getvalue('updategroup') is not None:
|
if form.getvalue('updategroup') is not None:
|
||||||
name = form.getvalue('updategroup')
|
name = form.getvalue('updategroup')
|
||||||
|
@ -1495,6 +1541,7 @@ if form.getvalue('updategroup') is not None:
|
||||||
print(error_mess)
|
print(error_mess)
|
||||||
else:
|
else:
|
||||||
update_group(name, descript, id)
|
update_group(name, descript, id)
|
||||||
|
|
||||||
|
|
||||||
if form.getvalue('updateserver') is not None:
|
if form.getvalue('updateserver') is not None:
|
||||||
name = form.getvalue('updateserver')
|
name = form.getvalue('updateserver')
|
||||||
|
@ -1516,6 +1563,7 @@ if form.getvalue('updateserver') is not None:
|
||||||
print(error_mess)
|
print(error_mess)
|
||||||
else:
|
else:
|
||||||
update_server(name, ip, group, typeip, enable, master, id, cred, alert, metrics, port, desc, active)
|
update_server(name, ip, group, typeip, enable, master, id, cred, alert, metrics, port, desc, active)
|
||||||
|
|
||||||
|
|
||||||
if form.getvalue('updatessh'):
|
if form.getvalue('updatessh'):
|
||||||
id = form.getvalue('id')
|
id = form.getvalue('id')
|
||||||
|
@ -1544,7 +1592,8 @@ if form.getvalue('updatessh'):
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
update_ssh(id, name, enable, group, username, password)
|
update_ssh(id, name, enable, group, username, password)
|
||||||
|
|
||||||
|
|
||||||
if form.getvalue('new_ssh'):
|
if form.getvalue('new_ssh'):
|
||||||
name = form.getvalue('new_ssh')
|
name = form.getvalue('new_ssh')
|
||||||
enable = form.getvalue('ssh_enable')
|
enable = form.getvalue('ssh_enable')
|
||||||
|
@ -1560,6 +1609,7 @@ if form.getvalue('new_ssh'):
|
||||||
else:
|
else:
|
||||||
if insert_new_ssh(name, enable, group, username, password):
|
if insert_new_ssh(name, enable, group, username, password):
|
||||||
show_update_ssh(name, page)
|
show_update_ssh(name, page)
|
||||||
|
|
||||||
|
|
||||||
if form.getvalue('sshdel') is not None:
|
if form.getvalue('sshdel') is not None:
|
||||||
import funct
|
import funct
|
||||||
|
@ -1580,6 +1630,7 @@ if form.getvalue('sshdel') is not None:
|
||||||
if delete_ssh(form.getvalue('sshdel')):
|
if delete_ssh(form.getvalue('sshdel')):
|
||||||
print("Ok")
|
print("Ok")
|
||||||
|
|
||||||
|
|
||||||
if form.getvalue('newtelegram'):
|
if form.getvalue('newtelegram'):
|
||||||
token = form.getvalue('newtelegram')
|
token = form.getvalue('newtelegram')
|
||||||
chanel = form.getvalue('chanel')
|
chanel = form.getvalue('chanel')
|
||||||
|
@ -1593,12 +1644,14 @@ if form.getvalue('newtelegram'):
|
||||||
else:
|
else:
|
||||||
if insert_new_telegram(token, chanel, group):
|
if insert_new_telegram(token, chanel, group):
|
||||||
show_update_telegram(token, page)
|
show_update_telegram(token, page)
|
||||||
|
|
||||||
|
|
||||||
if form.getvalue('telegramdel') is not None:
|
if form.getvalue('telegramdel') is not None:
|
||||||
print('Content-type: text/html\n')
|
print('Content-type: text/html\n')
|
||||||
check_token()
|
check_token()
|
||||||
if delete_telegram(form.getvalue('telegramdel')):
|
if delete_telegram(form.getvalue('telegramdel')):
|
||||||
print("Ok")
|
print("Ok")
|
||||||
|
|
||||||
|
|
||||||
if form.getvalue('getoption'):
|
if form.getvalue('getoption'):
|
||||||
group = form.getvalue('getoption')
|
group = form.getvalue('getoption')
|
||||||
|
@ -1626,7 +1679,8 @@ if form.getvalue('newtoption'):
|
||||||
else:
|
else:
|
||||||
if insert_new_option(option, group):
|
if insert_new_option(option, group):
|
||||||
show_update_option(option)
|
show_update_option(option)
|
||||||
|
|
||||||
|
|
||||||
if form.getvalue('updateoption') is not None:
|
if form.getvalue('updateoption') is not None:
|
||||||
option = form.getvalue('updateoption')
|
option = form.getvalue('updateoption')
|
||||||
id = form.getvalue('id')
|
id = form.getvalue('id')
|
||||||
|
@ -1636,6 +1690,7 @@ if form.getvalue('updateoption') is not None:
|
||||||
print(error_mess)
|
print(error_mess)
|
||||||
else:
|
else:
|
||||||
update_options(option, id)
|
update_options(option, id)
|
||||||
|
|
||||||
|
|
||||||
if form.getvalue('optiondel') is not None:
|
if form.getvalue('optiondel') is not None:
|
||||||
print('Content-type: text/html\n')
|
print('Content-type: text/html\n')
|
||||||
|
@ -1675,7 +1730,8 @@ if form.getvalue('newsavedserver'):
|
||||||
else:
|
else:
|
||||||
if insert_new_savedserver(savedserver, description, group):
|
if insert_new_savedserver(savedserver, description, group):
|
||||||
show_update_savedserver(savedserver)
|
show_update_savedserver(savedserver)
|
||||||
|
|
||||||
|
|
||||||
if form.getvalue('updatesavedserver') is not None:
|
if form.getvalue('updatesavedserver') is not None:
|
||||||
savedserver = form.getvalue('updatesavedserver')
|
savedserver = form.getvalue('updatesavedserver')
|
||||||
description = form.getvalue('description')
|
description = form.getvalue('description')
|
||||||
|
@ -1686,12 +1742,14 @@ if form.getvalue('updatesavedserver') is not None:
|
||||||
print(error_mess)
|
print(error_mess)
|
||||||
else:
|
else:
|
||||||
update_savedserver(savedserver, description, id)
|
update_savedserver(savedserver, description, id)
|
||||||
|
|
||||||
|
|
||||||
if form.getvalue('savedserverdel') is not None:
|
if form.getvalue('savedserverdel') is not None:
|
||||||
print('Content-type: text/html\n')
|
print('Content-type: text/html\n')
|
||||||
check_token()
|
check_token()
|
||||||
if delete_savedserver(form.getvalue('savedserverdel')):
|
if delete_savedserver(form.getvalue('savedserverdel')):
|
||||||
print("Ok")
|
print("Ok")
|
||||||
|
|
||||||
|
|
||||||
if form.getvalue('updatetoken') is not None:
|
if form.getvalue('updatetoken') is not None:
|
||||||
token = form.getvalue('updatetoken')
|
token = form.getvalue('updatetoken')
|
||||||
|
@ -1703,7 +1761,8 @@ if form.getvalue('updatetoken') is not None:
|
||||||
print(error_mess)
|
print(error_mess)
|
||||||
else:
|
else:
|
||||||
update_telegram(token, chanel, group, id)
|
update_telegram(token, chanel, group, id)
|
||||||
|
|
||||||
|
|
||||||
if form.getvalue('updatesettings') is not None:
|
if form.getvalue('updatesettings') is not None:
|
||||||
print('Content-type: text/html\n')
|
print('Content-type: text/html\n')
|
||||||
check_token()
|
check_token()
|
||||||
|
|
|
@ -823,6 +823,12 @@ h3 {
|
||||||
<div id="ajax-option"></div>
|
<div id="ajax-option"></div>
|
||||||
<div class="add-note addName alert-info" style="width: inherit; margin-right: 15px;">
|
<div class="add-note addName alert-info" style="width: inherit; margin-right: 15px;">
|
||||||
In this section you can create, edit and delete options with given parameters. And after use them as autocomplete in the "Add" sections
|
In this section you can create, edit and delete options with given parameters. And after use them as autocomplete in the "Add" sections
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
How to use pre saved option you can see in
|
||||||
|
<a href="https://haproxy-wi.org/description.py?description=saved" title="How to use pre saved options" target="_blank">
|
||||||
|
<b>this video</b>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -872,6 +878,12 @@ h3 {
|
||||||
<div id="ajax-servers"></div>
|
<div id="ajax-servers"></div>
|
||||||
<div class="add-note addName alert-info" style="width: inherit; margin-right: 15px;">
|
<div class="add-note addName alert-info" style="width: inherit; margin-right: 15px;">
|
||||||
In this section you can create, edit and delete servers. And after use them as autocomplete in the "Add" sections
|
In this section you can create, edit and delete servers. And after use them as autocomplete in the "Add" sections
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
How to use pre saved servers you can see in
|
||||||
|
<a href="https://haproxy-wi.org/description.py?description=saved" title="How to use pre saved servers" target="_blank">
|
||||||
|
<b>this video</b>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
{{ option.0 }}
|
{{ option.0 }}
|
||||||
</td>
|
</td>
|
||||||
<td class="first-collumn" style="width: 100%;">
|
<td class="first-collumn" style="width: 100%;">
|
||||||
<input type="text" id="option-body-{{option.0}}" class="form-control" value="{{option.1}}">
|
<input type="text" id="option-body-{{option.0}}" class="form-control" value="{{option.1}}" size="100">
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
{% for s in server %}
|
{% for s in server %}
|
||||||
<tr style="width: 50%;" id="servers-saved-{{s.0}}" class="newsavedserver update">
|
<tr style="width: 50%;" id="servers-saved-{{s.0}}" class="newsavedserver update">
|
||||||
<td class="padding10 first-collumn">
|
<td class="padding10 first-collumn">
|
||||||
<input type="text" id="servers-ip-{{s.0}}" class="form-control" value="{{s.1}}">
|
<input type="text" id="servers-ip-{{s.0}}" class="form-control" value="{{s.1}}" size="15">
|
||||||
</td>
|
</td>
|
||||||
<td class="first-collumn" style="width: 50%;">
|
<td class="first-collumn" style="width: 100%;">
|
||||||
<input type="text" id="servers-desc-{{s.0}}" class="form-control" value="{{s.2}}">
|
<input type="text" id="servers-desc-{{s.0}}" class="form-control" value="{{s.2}}" size="60">
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a class="delete" onclick="confirmDeleteSavedServer({{s.0}})" style="cursor: pointer;"></a>
|
<a class="delete" onclick="confirmDeleteSavedServer({{s.0}})" style="cursor: pointer;"></a>
|
||||||
|
|
|
@ -1,11 +1,28 @@
|
||||||
<html>
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<title>{{title}} - HAproxy-WI</title>
|
<title>{{title}} - HAproxy-WI</title>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
|
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
|
||||||
<meta http-equiv="Pragma" content="no-cache" />
|
<meta http-equiv="Pragma" content="no-cache" />
|
||||||
<meta http-equiv="Expires" content="0" />
|
<meta http-equiv="Expires" content="0" />
|
||||||
<link href="/inc/images/favicon.ico" rel="icon" type="image/png" />
|
<link href="/inc/images/favicon/favicon.ico" rel="icon" type="image/png" />
|
||||||
|
<link rel="apple-touch-icon" sizes="57x57" href="/inc/images/favicon/inc/images/favicon/apple-icon-57x57.png">
|
||||||
|
<link rel="apple-touch-icon" sizes="60x60" href="/inc/images/favicon/apple-icon-60x60.png">
|
||||||
|
<link rel="apple-touch-icon" sizes="72x72" href="/inc/images/favicon/apple-icon-72x72.png">
|
||||||
|
<link rel="apple-touch-icon" sizes="76x76" href="/inc/images/favicon/apple-icon-76x76.png">
|
||||||
|
<link rel="apple-touch-icon" sizes="114x114" href="/inc/images/favicon/apple-icon-114x114.png">
|
||||||
|
<link rel="apple-touch-icon" sizes="120x120" href="/inc/images/favicon/apple-icon-120x120.png">
|
||||||
|
<link rel="apple-touch-icon" sizes="144x144" href="/inc/images/favicon/apple-icon-144x144.png">
|
||||||
|
<link rel="apple-touch-icon" sizes="152x152" href="/inc/images/favicon/apple-icon-152x152.png">
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="/inc/images/favicon/apple-icon-180x180.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="192x192" href="/inc/images/favicon/android-icon-192x192.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="/inc/images/favicon/favicon-32x32.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="96x96" href="/inc/images/favicon/favicon-96x96.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="16x16" href="/inc/images/favicon/favicon-16x16.png">
|
||||||
|
<link rel="manifest" href="/inc/images/favicon/manifest.json">
|
||||||
|
<meta name="msapplication-TileColor" content="#ffffff">
|
||||||
|
<meta name="msapplication-TileImage" content="/inc/images/favicon/ms-icon-144x144.png">
|
||||||
|
<meta name="theme-color" content="#ffffff">
|
||||||
<script>
|
<script>
|
||||||
FontAwesomeConfig = { searchPseudoElements: true, observeMutations: false };
|
FontAwesomeConfig = { searchPseudoElements: true, observeMutations: false };
|
||||||
</script>
|
</script>
|
||||||
|
@ -14,7 +31,7 @@
|
||||||
<link href="/inc/awesome.css" rel="stylesheet">
|
<link href="/inc/awesome.css" rel="stylesheet">
|
||||||
<link href="/inc/style.css" rel="stylesheet">
|
<link href="/inc/style.css" rel="stylesheet">
|
||||||
<link href="/inc/nprogress.css" rel="stylesheet">
|
<link href="/inc/nprogress.css" rel="stylesheet">
|
||||||
<link rel="stylesheet" href="/inc/jquery-ui.css">
|
<link href="/inc/jquery-ui.css" rel="stylesheet">
|
||||||
<script src="/inc/jquery-1.12.4.js"></script>
|
<script src="/inc/jquery-1.12.4.js"></script>
|
||||||
<script src="/inc/jquery-ui.js"></script>
|
<script src="/inc/jquery-ui.js"></script>
|
||||||
<script src="/inc/js-cookie.js"></script>
|
<script src="/inc/js-cookie.js"></script>
|
||||||
|
@ -243,7 +260,7 @@
|
||||||
<div class="footer-div">
|
<div class="footer-div">
|
||||||
<a href="https://github.com/Aidaho12/haproxy-wi/" class="footer-link" target="_blank">Github</a>
|
<a href="https://github.com/Aidaho12/haproxy-wi/" class="footer-link" target="_blank">Github</a>
|
||||||
<a href="https://github.com/Aidaho12/haproxy-wi/issues" class="footer-link" target="_blank">Help</a>
|
<a href="https://github.com/Aidaho12/haproxy-wi/issues" class="footer-link" target="_blank">Help</a>
|
||||||
<a href="https://github.com/Aidaho12" class="footer-link" target="_blank">Contact</a>
|
<a href="https://haproxy-wi.org/contacts.py" class="footer-link" target="_blank">Contact</a>
|
||||||
<a href="http://haproxy-wi.org" class="footer-link" target="_blank">About</a>
|
<a href="http://haproxy-wi.org" class="footer-link" target="_blank">About</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -928,6 +928,7 @@ function resetProxySettings() {
|
||||||
$('input:checkbox').checkboxradio("refresh");
|
$('input:checkbox').checkboxradio("refresh");
|
||||||
$('.advance-show').fadeIn();
|
$('.advance-show').fadeIn();
|
||||||
$('.advance').fadeOut();
|
$('.advance').fadeOut();
|
||||||
|
$('[id^=https-hide]').hide();
|
||||||
$('[name=mode').val('http');
|
$('[name=mode').val('http');
|
||||||
$('select').selectmenu('refresh');
|
$('select').selectmenu('refresh');
|
||||||
replace_text("#optionsInput", ssl_offloading_var);
|
replace_text("#optionsInput", ssl_offloading_var);
|
||||||
|
|
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 9.0 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 4.7 KiB |
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 6.6 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 22 KiB |
|
@ -0,0 +1,2 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<browserconfig><msapplication><tile><square70x70logo src="/ms-icon-70x70.png"/><square150x150logo src="/ms-icon-150x150.png"/><square310x310logo src="/ms-icon-310x310.png"/><TileColor>#ffffff</TileColor></tile></msapplication></browserconfig>
|
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 9.0 KiB |
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1,41 @@
|
||||||
|
{
|
||||||
|
"name": "App",
|
||||||
|
"icons": [
|
||||||
|
{
|
||||||
|
"src": "\/android-icon-36x36.png",
|
||||||
|
"sizes": "36x36",
|
||||||
|
"type": "image\/png",
|
||||||
|
"density": "0.75"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "\/android-icon-48x48.png",
|
||||||
|
"sizes": "48x48",
|
||||||
|
"type": "image\/png",
|
||||||
|
"density": "1.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "\/android-icon-72x72.png",
|
||||||
|
"sizes": "72x72",
|
||||||
|
"type": "image\/png",
|
||||||
|
"density": "1.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "\/android-icon-96x96.png",
|
||||||
|
"sizes": "96x96",
|
||||||
|
"type": "image\/png",
|
||||||
|
"density": "2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "\/android-icon-144x144.png",
|
||||||
|
"sizes": "144x144",
|
||||||
|
"type": "image\/png",
|
||||||
|
"density": "3.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "\/android-icon-192x192.png",
|
||||||
|
"sizes": "192x192",
|
||||||
|
"type": "image\/png",
|
||||||
|
"density": "4.0"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 6.0 KiB |
After Width: | Height: | Size: 1.0 MiB |
|
@ -7,10 +7,8 @@ function getChartData(server) {
|
||||||
token: $('#token').val()
|
token: $('#token').val()
|
||||||
},
|
},
|
||||||
type: "GET",
|
type: "GET",
|
||||||
success: function (result) {
|
success: function (result) {
|
||||||
|
|
||||||
var data = [];
|
var data = [];
|
||||||
|
|
||||||
data.push(result.chartData.curr_con);
|
data.push(result.chartData.curr_con);
|
||||||
data.push(result.chartData.curr_ssl_con);
|
data.push(result.chartData.curr_ssl_con);
|
||||||
data.push(result.chartData.sess_rate);
|
data.push(result.chartData.sess_rate);
|
||||||
|
@ -133,9 +131,20 @@ function renderWafChart(data, labels, server) {
|
||||||
$("#secIntervals").css("display", "none");
|
$("#secIntervals").css("display", "none");
|
||||||
|
|
||||||
function loadMetrics() {
|
function loadMetrics() {
|
||||||
$.get( "options.py?table_metrics=1&token="+$('#token').val(), function( data ) {
|
$.ajax({
|
||||||
$( "#table_metrics" ).html( data );
|
url: "options.py",
|
||||||
});
|
data: {
|
||||||
|
table_metrics: '1',
|
||||||
|
token: $('#token').val()
|
||||||
|
},
|
||||||
|
beforeSend: function() {
|
||||||
|
$('#table_metrics').prepend('<img class="loading_full_page" src="/inc/images/loading.gif" />')
|
||||||
|
},
|
||||||
|
type: "GET",
|
||||||
|
success: function (data) {
|
||||||
|
$( "#table_metrics" ).html( data );
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -198,6 +198,9 @@ function showOverview() {
|
||||||
act: "overview",
|
act: "overview",
|
||||||
token: $('#token').val()
|
token: $('#token').val()
|
||||||
},
|
},
|
||||||
|
beforeSend: function() {
|
||||||
|
$('#ajaxstatus').html('<img class="loading" src="/inc/images/loading.gif" />')
|
||||||
|
},
|
||||||
type: "GET",
|
type: "GET",
|
||||||
success: function( data ) {
|
success: function( data ) {
|
||||||
$("#ajaxstatus").empty();
|
$("#ajaxstatus").empty();
|
||||||
|
@ -218,6 +221,9 @@ function showOverviewServer(name,ip,id) {
|
||||||
page: 'hapservers.py',
|
page: 'hapservers.py',
|
||||||
token: $('#token').val()
|
token: $('#token').val()
|
||||||
},
|
},
|
||||||
|
beforeSend: function() {
|
||||||
|
$("#ajax-server-"+id).html('<img class="loading" src="/inc/images/loading.gif" />')
|
||||||
|
},
|
||||||
type: "GET",
|
type: "GET",
|
||||||
success: function( data ) {
|
success: function( data ) {
|
||||||
$("#ajax-server-"+id).empty();
|
$("#ajax-server-"+id).empty();
|
||||||
|
@ -255,6 +261,14 @@ function showOverviewWaf() {
|
||||||
page: cur_url[0],
|
page: cur_url[0],
|
||||||
token: $('#token').val()
|
token: $('#token').val()
|
||||||
},
|
},
|
||||||
|
beforeSend: function() {
|
||||||
|
if (cur_url[0] == "waf.py") {
|
||||||
|
var load_class = 'loading_full_page'
|
||||||
|
} else {
|
||||||
|
var load_class = 'loading'
|
||||||
|
}
|
||||||
|
$('#ajaxwafstatus').html('<img class="'+load_class+'" src="/inc/images/loading.gif" />')
|
||||||
|
},
|
||||||
type: "GET",
|
type: "GET",
|
||||||
success: function( data ) {
|
success: function( data ) {
|
||||||
$("#ajaxwafstatus").empty();
|
$("#ajaxwafstatus").empty();
|
||||||
|
@ -277,6 +291,9 @@ function showOverviewServers() {
|
||||||
act: "overviewServers",
|
act: "overviewServers",
|
||||||
token: $('#token').val()
|
token: $('#token').val()
|
||||||
},
|
},
|
||||||
|
beforeSend: function() {
|
||||||
|
$('#ajaxservers').html('<img class="loading" src="/inc/images/loading.gif" />')
|
||||||
|
},
|
||||||
type: "GET",
|
type: "GET",
|
||||||
success: function( data ) {
|
success: function( data ) {
|
||||||
$("#ajaxservers").html(data);
|
$("#ajaxservers").html(data);
|
||||||
|
@ -290,6 +307,9 @@ function showOverviewHapWI() {
|
||||||
act: "overviewHapwi",
|
act: "overviewHapwi",
|
||||||
token: $('#token').val()
|
token: $('#token').val()
|
||||||
},
|
},
|
||||||
|
beforeSend: function() {
|
||||||
|
$('#ajaxHapwi').html('<img class="loading_hapwi_overview" src="/inc/images/loading.gif" />')
|
||||||
|
},
|
||||||
type: "GET",
|
type: "GET",
|
||||||
success: function( data ) {
|
success: function( data ) {
|
||||||
$("#ajaxHapwi").html(data);
|
$("#ajaxHapwi").html(data);
|
||||||
|
@ -307,7 +327,7 @@ function showStats() {
|
||||||
type: "GET",
|
type: "GET",
|
||||||
success: function( data ) {
|
success: function( data ) {
|
||||||
$("#ajax").html(data);
|
$("#ajax").html(data);
|
||||||
// window.history.pushState("Stats", "Stats", cur_url[0]+"?serv="+$("#serv").val());
|
window.history.pushState("Stats", "Stats", cur_url[0]+"?serv="+$("#serv").val());
|
||||||
wait();
|
wait();
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
|
@ -309,7 +309,7 @@ pre {
|
||||||
font-size: 13px !important;
|
font-size: 13px !important;
|
||||||
}
|
}
|
||||||
.advance-show a{
|
.advance-show a{
|
||||||
color: #9d9d9d !important;
|
color: #23527c !important;
|
||||||
}
|
}
|
||||||
.addButton {
|
.addButton {
|
||||||
padding-top: 15px;
|
padding-top: 15px;
|
||||||
|
@ -810,6 +810,10 @@ label {
|
||||||
#logo_span {
|
#logo_span {
|
||||||
margin-left: 17%;
|
margin-left: 17%;
|
||||||
}
|
}
|
||||||
|
.chart-container {
|
||||||
|
height: 290px;
|
||||||
|
width: 32.4%;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@media (max-width: 1080px) {
|
@media (max-width: 1080px) {
|
||||||
#logo_span {
|
#logo_span {
|
||||||
|
@ -869,3 +873,23 @@ label {
|
||||||
max-width: 95%;
|
max-width: 95%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.loading, .loading_full_page, .loading_hapwi_overview {
|
||||||
|
width: 100px;
|
||||||
|
height: 100px;
|
||||||
|
margin-left: 100%;
|
||||||
|
}
|
||||||
|
.loading_full_page {
|
||||||
|
margin-left: 45%;
|
||||||
|
}
|
||||||
|
.loading_hapwi_overview{
|
||||||
|
margin-left: 40%;
|
||||||
|
}
|
||||||
|
.tooltip {
|
||||||
|
font-size: 12px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
.tooltipTop {
|
||||||
|
margin-bottom: -20px;
|
||||||
|
padding-top: 10px;
|
||||||
|
color: #9d9d9d;
|
||||||
|
}
|
||||||
|
|
|
@ -770,7 +770,8 @@ function cloneServer(id) {
|
||||||
$('#slavefor').selectmenu("refresh");
|
$('#slavefor').selectmenu("refresh");
|
||||||
$('#credentials').val($('#credentials-'+id+' option:selected').val()).change()
|
$('#credentials').val($('#credentials-'+id+' option:selected').val()).change()
|
||||||
$('#credentials').selectmenu("refresh");
|
$('#credentials').selectmenu("refresh");
|
||||||
if (cur_url[0] == 'users.py') {
|
cur_url = cur_url[0].split('#')[0]
|
||||||
|
if (cur_url == 'users.py') {
|
||||||
$('#new-server-group-add').val($('#servergroup-'+id+' option:selected').val()).change()
|
$('#new-server-group-add').val($('#servergroup-'+id+' option:selected').val()).change()
|
||||||
$('#new-server-group-add').selectmenu("refresh");
|
$('#new-server-group-add').selectmenu("refresh");
|
||||||
}
|
}
|
||||||
|
@ -785,7 +786,8 @@ function cloneUser(id) {
|
||||||
$('#activeuser').checkboxradio("refresh");
|
$('#activeuser').checkboxradio("refresh");
|
||||||
$('#new-role').val($('#role-'+id+' option:selected').val()).change()
|
$('#new-role').val($('#role-'+id+' option:selected').val()).change()
|
||||||
$('#new-role').selectmenu("refresh");
|
$('#new-role').selectmenu("refresh");
|
||||||
if (cur_url[0] == 'users.py') {
|
cur_url = cur_url[0].split('#')[0]
|
||||||
|
if (cur_url == 'users.py') {
|
||||||
$('#new-group').val($('#usergroup-'+id+' option:selected').val()).change();
|
$('#new-group').val($('#usergroup-'+id+' option:selected').val()).change();
|
||||||
$('#new-group').selectmenu("refresh");
|
$('#new-group').selectmenu("refresh");
|
||||||
}
|
}
|
||||||
|
@ -1191,7 +1193,6 @@ function changeUserPasswordDialog(id) {
|
||||||
effect: "fade",
|
effect: "fade",
|
||||||
duration: 200
|
duration: 200
|
||||||
},
|
},
|
||||||
// beforeClose: function( event, ui ) {return changeUserPassword(id);},
|
|
||||||
buttons: {
|
buttons: {
|
||||||
"Change": function() {
|
"Change": function() {
|
||||||
changeUserPassword(id, $(this));
|
changeUserPassword(id, $(this));
|
||||||
|
|