|
|
|
<html lang="en">
|
|
|
|
<head>
|
|
|
|
<title>{{title}} - HAProxy-WI</title>
|
|
|
|
<meta charset="UTF-8">
|
|
|
|
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
|
|
|
|
<meta http-equiv="Pragma" content="no-cache" />
|
|
|
|
<meta http-equiv="Expires" content="0" />
|
|
|
|
<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>
|
|
|
|
FontAwesomeConfig = { searchPseudoElements: true, observeMutations: false };
|
|
|
|
</script>
|
|
|
|
<script defer src="/inc/fa-solid.min.js"></script>
|
|
|
|
<script defer src="/inc/fontawesome.min.js"></script>
|
|
|
|
<link href="/inc/awesome.css" rel="stylesheet">
|
|
|
|
<link href="/inc/style.css" rel="stylesheet">
|
|
|
|
<link href="/inc/nprogress.css" rel="stylesheet">
|
|
|
|
<link href="/inc/jquery-ui.css" rel="stylesheet">
|
|
|
|
<script src="/inc/jquery-1.12.4.js"></script>
|
|
|
|
<script src="/inc/jquery-ui.js"></script>
|
|
|
|
<script src="/inc/js.cookie.min.js"></script>
|
|
|
|
<script src="/inc/script.js"></script>
|
|
|
|
<script src="/inc/nprogress.js"></script>
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<input type="hidden" id="token" value="{{ token }}">
|
|
|
|
<div class="top-menu">
|
|
|
|
<div class="LogoText">
|
|
|
|
<span id="logo_text">
|
|
|
|
<a href="https://haproxy-wi.org" title="HAProxy-WI site" target="_blank">
|
|
|
|
<img src="/inc/images/logo_menu.png" alt="logo" width="170" />
|
|
|
|
</a>
|
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
<div id="top-link" class="top-link">
|
|
|
|
<nav id="menu">
|
|
|
|
<ul class="menu">
|
|
|
|
{% if user %}
|
|
|
|
<li><a href="/app/overview.py" title="Server and service status" class="overview-link">Overview</a></li>
|
|
|
|
<li class="p_menu"><a title="Actions with Haproxy configs" class="config-show">Haproxy</a>
|
|
|
|
<ul class="v_menu">
|
|
|
|
<li><a href="/app/hapservers.py" title="Overview HAProxy servers" class="overview-link head-submenu">Overview</a> </li>
|
|
|
|
<li><a href="/app/config.py" title="Working with HAProxy configs" class="edit head-submenu">Configs</a></li>
|
|
|
|
<li><a href="/app/viewsttats.py" title="Show stats" class="stats head-submenu">Stats</a></li>
|
|
|
|
<li><a href="/app/runtimeapi.py" title="Runtime API" class="runtime head-submenu">Runtime API</a></li>
|
|
|
|
<li><a href="/app/metrics.py" title="Metrics" class="metrics head-submenu">Metrics</a></li>
|
|
|
|
{% if role <= 2 %}
|
|
|
|
<li><a href="/app/add.py#proxy" title="Add proxy" class="add head-submenu" id="add1">Add proxy</a></li>
|
|
|
|
<li><a href="/app/versions.py" title="Actions with configs versions" class="version head-submenu">Versions</a></li>
|
|
|
|
<li><a href="/app/add.py#ssl" title="Upload SSL cert" class="cert head-submenu" id="add3">SSL</a></li>
|
|
|
|
<li><a href="/app/add.py#lists" title="Manage black and white lists" class="lists head-submenu" id="add7">Lists</a></li>
|
|
|
|
<li><a href="/app/waf.py" title="Web application firewall" class="waf head-submenu">WAF</a> </li>
|
|
|
|
{% endif %}
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
{% if role <= 2 %}
|
|
|
|
<li class="p_menu">
|
|
|
|
<a title="Nginx" class="nginx">Nginx</a>
|
|
|
|
<ul class="v_menu">
|
|
|
|
<li><a href="/app/hapservers.py?service=nginx" title="Overview Nginx servers" class="overview-link head-submenu">Overview</a> </li>
|
|
|
|
<li><a href="/app/config.py?service=nginx" title="Edit Nginx config" class="edit head-submenu">Configs</a></li>
|
|
|
|
<li><a href="/app/viewsttats.py?service=nginx" title="Show stats" class="stats head-submenu">Stats</a></li>
|
|
|
|
<li><a href="/app/versions.py?service=nginx" title="Actions with Nginx configs versions" class="version head-submenu">Versions</a></li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
<li class="p_menu">
|
|
|
|
<a title="Keepalived" class="ha">Keepalived</a>
|
|
|
|
<ul class="v_menu">
|
|
|
|
<li><a href="/app/ha.py" title="Create HA cluster" class="keepalived head-submenu">HA</a></li>
|
|
|
|
<li><a href="/app/config.py?service=keepalived" title="Edit Keepalived config" class="edit head-submenu">Configs</a></li>
|
|
|
|
<li><a href="/app/versions.py?service=keepalived" title="Actions with Keepalived configs versions" class="version head-submenu keepalived_versions">Versions</a></li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
<li class="p_menu">
|
|
|
|
<a title="Servers manage" class="runtime">Servers</a>
|
|
|
|
<ul class="v_menu">
|
|
|
|
<li><a href="/app/servers.py#users" title="Actions with users" class="users head-submenu">Users</a></li>
|
|
|
|
<li><a href="/app/servers.py#servers" title="Server manage" class="runtime head-submenu">Servers</a></li>
|
|
|
|
<li><a href="/app/servers.py#ssh" title="Manage SSH credentials" class="admin head-submenu">SSH credentials</a></li>
|
|
|
|
<li><a href="/app/servers.py#installhaproxy" title="Installation HAProxy" class="hap head-submenu">Installation</a> </li>
|
|
|
|
<li><a href="/app/servers.py#backup" title="Backups HAProxy's config files" class="backup head-submenu">Backups</a> </li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
{% endif %}
|
|
|
|
{% if role <= 1 %}
|
|
|
|
<li class="p_menu">
|
|
|
|
<a title="Admin area" class="admin">Admin area</a>
|
|
|
|
<ul class="v_menu">
|
|
|
|
<li><a href="/app/users.py#users" title="Actions with users" class="users head-submenu">Users</a></li>
|
|
|
|
<li><a href="/app/users.py#groups" title="Actions with groups" class="group head-submenu">Groups</a></li>
|
|
|
|
<li><a href="/app/users.py#servers" title="Actions with servers" class="runtime head-submenu">Servers</a></li>
|
|
|
|
<li><a href="/app/users.py#ssh" title="Manage SSH credentials" class="admin head-submenu">SSH credentials</a></li>
|
|
|
|
<li><a href="/app/users.py#settings" title="HAProxy-WI settings" class="settings head-submenu">Settings</a></li>
|
|
|
|
<li><a href="/app/viewlogs.py" title="View internal logs" class="logs head-submenu">Internal logs</a></li>
|
|
|
|
<li><a href="/app/users.py#updatehapwi" title="Update HAProxy-WI" class="upload updatehapwi head-submenu">Update</a></li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
{% endif %}
|
|
|
|
{% endif %}
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
|
|
<div class="donate-menu">
|
|
|
|
<a href="https://haproxy-wi.org/donate.py" title="Donate" target="_blank" style="color: #fff; margin-left: -10px; color: red;" class="patreon"> Donate</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div id="cover"></div>
|
|
|
|
<div class="container">
|
|
|
|
{% if h2 %}
|
|
|
|
<h2>
|
|
|
|
{{title}}
|
|
|
|
{% include 'include/login.html' %}
|
|
|
|
{% if autorefresh %}
|
|
|
|
<span class="auto-refresh">
|
|
|
|
<a onclick="pauseAutoRefresh()" class="auto-refresh-pause" style="display: none; margin-top: 4px;"></a>
|
|
|
|
<a onclick="pauseAutoResume()" class="auto-refresh-resume" style="display: none; margin-top: 4px;"></a>
|
|
|
|
<a id="0"><span class="service-reload"></span> Auto-refresh</a>
|
|
|
|
<a id="1" style="display: none;"><span class="service-reload"></span> Auto-refresh</a>
|
|
|
|
</span>
|
|
|
|
{% endif %}
|
|
|
|
</h2>
|
|
|
|
{% endif %}
|
|
|
|
{% if autorefresh %}
|
|
|
|
<div class="auto-refresh-div">
|
|
|
|
<div class="auto-refresh-head">
|
|
|
|
Refresh Interval
|
|
|
|
</div>
|
|
|
|
<div class="auto-refresh-interval">
|
|
|
|
<div class="auto-refresh-ul">
|
|
|
|
<ul>
|
|
|
|
<li>
|
|
|
|
<a class="ui-button ui-widget ui-corner-all" onclick="setRefreshInterval(0)" title="Turn off auto-refresh">Off</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
<div class="auto-refresh-ul" id="secIntervals">
|
|
|
|
<ul>
|
|
|
|
<li>
|
|
|
|
<a title="Auto-refresh every 5 seconds" onclick="setRefreshInterval(5000)">5 seconds</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a title="Auto-refresh every 10 seconds" onclick="setRefreshInterval(10000)">10 seconds</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a title="Auto-refresh every 30 seconds" onclick="setRefreshInterval(30000)">30 seconds</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a title="Auto-refresh ever 45 seconds" onclick="setRefreshInterval(45000)">45 seconds</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
<div class="auto-refresh-ul">
|
|
|
|
<ul>
|
|
|
|
<li>
|
|
|
|
<a title="Auto-refresh every 1 minute" onclick="setRefreshInterval(60000)">1 minute</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a title="Auto-refresh every 5 minutes" onclick="setRefreshInterval(300000)">5 minutes</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a title="Auto-refresh every 15 minutes" onclick="setRefreshInterval(900000)">15 minutes</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a title="Auto-refresh ever 30 minutes" onclick="setRefreshInterval(1800000)">30 minutes</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
<div class="auto-refresh-ul">
|
|
|
|
<ul>
|
|
|
|
<li>
|
|
|
|
<a title="Auto-refresh every 1 hour" onclick="setRefreshInterval(3600000)">1 hour</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a title="Auto-refresh every 2 hour" onclick="setRefreshInterval(7200000)">2 hour</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a title="Auto-refresh every 12 hour" onclick="setRefreshInterval(43200000)">12 hour</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a title="Auto-refresh ever 1 day" onclick="setRefreshInterval(86400000)">1 day</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{% endif %}
|
|
|
|
{% if h2 %}
|
|
|
|
<ul id='browse_histroy'></ul>
|
|
|
|
{% endif %}
|
|
|
|
{% if role %}
|
|
|
|
{% if role <= 2 %}
|
|
|
|
<div id="apply" style="display: none;">
|
|
|
|
<div class="alert alert-warning" id="apply_div"></div>
|
|
|
|
</div>
|
|
|
|
{% endif %}
|
|
|
|
{% endif %}
|
|
|
|
{% block content %}{% endblock %}
|
|
|
|
<div id="ajax-compare"></div>
|
|
|
|
<div id="ajax"></div>
|
|
|
|
</div>
|
|
|
|
<div id="show-updates" style="display: none;">
|
|
|
|
<div>
|
|
|
|
There is a new version HAProxy-WI. Check the <a href="/app/users.py#updatehapwi">Update page</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="footer">
|
|
|
|
<a href="#" id="hide_menu" title="Hide menu" style="float: left;">
|
|
|
|
<span class="ui-state-default ui-corner-all">
|
|
|
|
<span class="ui-icon ui-icon-arrowthick-1-w" id="arrow"></span>
|
|
|
|
</span>
|
|
|
|
</a>
|
|
|
|
<div class="show_menu" style="display: none; float: left;">
|
|
|
|
<a href="#" id="show_menu" title="Show menu">
|
|
|
|
<span class="ui-state-default ui-corner-all">
|
|
|
|
<span class="ui-icon ui-icon-arrowthick-1-e" id="arrow"></span>
|
|
|
|
</span>
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
<div id="version">
|
|
|
|
{% if versions is defined %}
|
|
|
|
{% set current_ver = versions.0 %}
|
|
|
|
{% set new_ver = versions.1 %}
|
|
|
|
{% set current_ver_without_dots = versions.2 %}
|
|
|
|
{% set new_ver_without_dots = versions.3 %}
|
|
|
|
{% endif %}
|
|
|
|
{% if new_ver_without_dots is defined and current_ver_without_dots is defined and new_ver is defined and new_ver_without_dots is defined %}
|
|
|
|
<a style="color: #000; cursor: pointer;">
|
|
|
|
{% if new_ver_without_dots > current_ver_without_dots and new_ver != "Sorry cannot get current version" %}
|
|
|
|
<span id="show-updates-button" class="new-version-exists">v{{current_ver}} </span>
|
|
|
|
{% else %}
|
|
|
|
v{{current_ver}}
|
|
|
|
{% endif %}
|
|
|
|
</a>
|
|
|
|
{% else %}
|
|
|
|
v{{current_ver}}
|
|
|
|
{% endif %}
|
|
|
|
<br>
|
|
|
|
</div>
|
|
|
|
<div id="logo_footer">
|
|
|
|
<a href="https://haproxy-wi.org" title="HAProxy-WI official site" target="_blank">
|
|
|
|
<img src="/inc/images/logo_footer.png" alt="logo" id="logo_footer_img" />
|
|
|
|
</a>
|
|
|
|
</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/issues" class="footer-link" target="_blank">Help</a>
|
|
|
|
<a href="https://haproxy-wi.org/contacts.py" class="footer-link" target="_blank">Contact</a>
|
|
|
|
<a href="https://haproxy-wi.org" class="footer-link" target="_blank">About</a>
|
|
|
|
<a href="https://haproxy-wi.org/cloud.py" class="footer-link" target="_blank" title="HAProxy-WI Cloud">Cloud</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</body>
|
|
|
|
</html>
|