143 lines
5.3 KiB
HTML
Raw Normal View History

2022-01-12 19:53:36 -05:00
<!-- index.html - < WGDashboard > - Copyright(C) 2021 Donald Zou [https://github.com/donaldzou]-->
<html lang="en">
2021-08-14 23:30:05 -04:00
{% with %}
{% set title="Home" %}
{% include "header.html"%}
{% endwith %}
2020-10-18 01:10:13 -04:00
<body>
2021-05-04 01:32:34 -04:00
{% include "navbar.html" %}
2020-10-18 01:10:13 -04:00
<div class="container-fluid">
2021-05-04 01:32:34 -04:00
{% include "sidebar.html" %}
2021-05-13 18:00:40 -04:00
<main role="main" class="col-md-9 ml-sm-auto col-lg-10 px-md-4 mb-4">
2022-01-12 19:53:36 -05:00
<div style="display: flex; flex-direction: row; align-items: center;">
<h1 class="pb-4 mt-4">Home</h1>
</div>
2022-01-13 09:37:23 -05:00
{% if msg != "" %}
<div class="alert alert-danger" role="alert">
Configuration toggle failed. Please check the following error message:
</div>
<pre class="index-alert"><code>{{ msg }}</code></pre>
{% endif %}
2022-01-12 19:53:36 -05:00
2021-07-02 13:23:04 -04:00
{% if conf == [] %}
<p class="text-muted">You don't have any WireGuard configurations yet. Please check the configuration folder or change it in "Settings". By default the folder is "/etc/wireguard".</p>
{% endif %}
2022-03-21 22:33:19 -04:00
2020-10-18 01:10:13 -04:00
{% for i in conf%}
2022-03-21 22:33:19 -04:00
<div class="card mt-3 conf_card" data-conf-id="{{i['conf']}}">
2020-10-18 01:10:13 -04:00
<div class="card-body">
2020-10-18 01:52:53 -04:00
<div class="row">
2021-05-04 01:32:34 -04:00
<div class="col card-col">
2020-10-23 01:31:10 -04:00
<small class="text-muted"><strong>CONFIGURATION</strong></small>
<a href="/configuration/{{i['conf']}}" class="conf_link">
2022-01-12 19:53:36 -05:00
<h6 class="card-title" style="margin:0 !important;"><samp>{{i['conf']}}</samp></h6>
2020-10-18 12:23:38 -04:00
</a>
</div>
2021-05-04 01:32:34 -04:00
<div class="col card-col">
2020-10-18 01:52:53 -04:00
<small class="text-muted"><strong>STATUS</strong></small>
2022-03-21 22:33:19 -04:00
<h6 style="text-transform: uppercase; margin:0 !important;"><span>{{i['status']}}</span><span class="dot dot-{{i['status']}}"></span></h6>
2020-10-18 01:52:53 -04:00
</div>
2022-03-21 22:33:19 -04:00
<div class="col-sm card-col">
2020-10-18 01:52:53 -04:00
<small class="text-muted"><strong>PUBLIC KEY</strong></small>
2022-01-16 20:35:24 -05:00
<h6 style="margin:0 !important;"><samp>{{i['public_key']}}</samp></h6>
2021-05-04 01:32:34 -04:00
</div>
2022-03-21 22:33:19 -04:00
<div class="col-sm index-switch">
<div class="switch-test">
<input type="checkbox" class="toggle--switch" id="{{i['conf']}}-switch" {{i['checked']}} data-conf-id="{{i['conf']}}">
<label for="{{i['conf']}}-switch" class="toggleLabel"></label>
</div>
<!-- {% if i['checked'] == "checked" %}
<a href="#" id="{{i['conf']}}" class="switch text-primary tt"><i class="bi bi-toggle2-on"></i></a>
2021-05-04 01:32:34 -04:00
{% else %}
<a href="#" id="{{i['conf']}}" {{i['checked']}} class="switch text-secondary"><i class="bi bi-toggle2-off"></i></a>
2022-03-21 22:33:19 -04:00
{% endif %} -->
<!-- <div class="spinner-border text-primary" role="status" style="display: none">
2021-05-04 21:26:40 -04:00
<span class="sr-only">Loading...</span>
2022-03-21 22:33:19 -04:00
</div> -->
2020-10-18 01:52:53 -04:00
</div>
</div>
2020-10-18 01:10:13 -04:00
</div>
</div>
{%endfor%}
</main>
</div>
2022-03-21 22:33:19 -04:00
<div class="position-fixed top-0 right-0 p-3 toastContainer" style="z-index: 5; right: 0; top: 50px;">
</div>
2021-05-13 18:00:40 -04:00
{% include "tools.html" %}
2020-10-18 01:10:13 -04:00
</body>
2021-05-04 01:32:34 -04:00
{% include "footer.html" %}
2020-10-18 01:10:13 -04:00
<script>
2022-03-21 22:33:19 -04:00
let numberToast = 0;
function showToast(msg){
$(".toastContainer").append(
`<div id="${numberToast}-toast" class="toast hide" role="alert" data-delay="5000">
<div class="toast-header">
<strong class="mr-auto">WGDashboard</strong>
<button type="button" class="ml-2 mb-1 close" data-dismiss="toast" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="toast-body">${msg}</div>
<div class="toast-progressbar"></div>
</div>` )
$(`#${numberToast}-toast`).toast('show');
$(`#${numberToast}-toast .toast-body`).html(msg);
$(`#${numberToast}-toast .toast-progressbar`).css("transition", `width ${$(`#${numberToast}-toast .toast-progressbar`).parent().data('delay')}ms cubic-bezier(0, 0, 0, 0)`);
$(`#${numberToast}-toast .toast-progressbar`).css("width", "0px");
numberToast++;
}
$(".toggle--switch").on("change", function(){
$(this).addClass("waiting").attr("disabled", "disabled");
let id = $(this).data("conf-id");
let status = $(this).prop("checked");
let ele = $(this);
let label = $(this).siblings("label");
$.ajax({
url: `/switch/${id}`
}).done(function(res){
let dot = $(`div[data-conf-id="${id}"] .dot`);
console.log();
if (res){
if (status){
dot.removeClass("dot-stopped").addClass("dot-running");
dot.siblings().text("Running");
showToast(`${id} is running.`)
}else{
dot.removeClass("dot-running").addClass("dot-stopped");
showToast(`${id} is stopped.`)
}
ele.removeClass("waiting");
ele.removeAttr("disabled");
}else{
if (status){
$(this).prop("checked", false)
}else{
$(this).prop("checked", true)
}
}
})
});
$('.switch').on("click", function() {
2021-05-04 21:26:40 -04:00
$(this).siblings($(".spinner-border")).css("display", "inline-block")
$(this).remove()
2021-05-04 01:32:34 -04:00
location.replace("/switch/"+$(this).attr('id'))
2020-10-23 01:31:10 -04:00
});
$(".sb-home-url").addClass("active");
$(".card-body").on("click", function(handle){
2022-03-21 22:33:19 -04:00
if ($(handle.target).attr("class") !== "toggleLabel" && $(handle.target).attr("class") !== "toggle--switch") {
window.open($(this).find("a").attr("href"), "_self");
}
2022-02-28 13:34:46 -05:00
});
2020-10-18 01:10:13 -04:00
</script>
</html>