summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevaev Maxim <[email protected]>2019-11-30 02:25:02 +0300
committerDevaev Maxim <[email protected]>2019-11-30 02:25:02 +0300
commitf23d009d0c1228bc901866fe017eb3bec252df1a (patch)
tree412b2b1db11ce7bddc49df3e62e674d17fead998
parentf6fab6415e86daa4e4372412968d70ca6bdf8620 (diff)
wol ui
-rw-r--r--web/kvm/index.html4
-rw-r--r--web/share/js/kvm/session.js4
-rw-r--r--web/share/js/kvm/wol.js67
3 files changed, 75 insertions, 0 deletions
diff --git a/web/kvm/index.html b/web/kvm/index.html
index ec8ee6ac..5411f43f 100644
--- a/web/kvm/index.html
+++ b/web/kvm/index.html
@@ -127,6 +127,10 @@
<div class="menu-item-content-buttons">
<button data-force-hide-menu id="open-log-button">&bull; Open log</button>
</div>
+ <div id="wol" class="menu-item-content-buttons feature-disabled">
+ <hr>
+ <button disabled id="wol-wakeup-button">&bull; Wake on LAN server</button>
+ </div>
</div>
</li>
diff --git a/web/share/js/kvm/session.js b/web/share/js/kvm/session.js
index 5b7d9dda..cc9af52d 100644
--- a/web/share/js/kvm/session.js
+++ b/web/share/js/kvm/session.js
@@ -30,6 +30,7 @@ import {Hid} from "./hid.js";
import {Atx} from "./atx.js";
import {Msd} from "./msd.js";
import {Streamer} from "./stream.js";
+import {WakeOnLan} from "./wol.js";
export function Session() {
@@ -46,6 +47,7 @@ export function Session() {
var __atx = new Atx();
var __msd = new Msd();
var __streamer = new Streamer();
+ var __wol = new WakeOnLan();
var __init__ = function() {
__startSession();
@@ -126,6 +128,8 @@ export function Session() {
__msd.setState(event.msg.event_attrs);
} else if (event.msg.event === "streamer_state") {
__streamer.setState(event.msg.event_attrs);
+ } else if (event.msg.event === "wol_state") {
+ __wol.setState(event.msg.event_attrs);
}
}
};
diff --git a/web/share/js/kvm/wol.js b/web/share/js/kvm/wol.js
new file mode 100644
index 00000000..574fc371
--- /dev/null
+++ b/web/share/js/kvm/wol.js
@@ -0,0 +1,67 @@
+/*****************************************************************************
+# #
+# KVMD - The main Pi-KVM daemon. #
+# #
+# Copyright (C) 2018 Maxim Devaev <[email protected]> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation, either version 3 of the License, or #
+# (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program. If not, see <https://www.gnu.org/licenses/>. #
+# #
+*****************************************************************************/
+
+
+"use strict";
+
+
+import {tools, $} from "../tools.js";
+import {wm} from "../wm.js";
+
+
+export function WakeOnLan() {
+ var self = this;
+
+ /************************************************************************/
+
+ var __target = {};
+
+ var __init__ = function() {
+ tools.setOnClick($("wol-wakeup-button"), __clickWakeupButton);
+ };
+
+ /************************************************************************/
+
+ self.setState = function(state) {
+ if (state) {
+ $("wol").classList.toggle("feature-disabled", !state.enabled);
+ __target = state.target;
+ }
+ wm.switchEnabled($("wol-wakeup-button"), (state && state.enabled));
+ };
+
+ var __clickWakeupButton = function() {
+ let msg = `Are you sure to send Wake-on-LAN packet to the server?<br>Target: <b>${__target.mac}</b> (${__target.ip}:${__target.port})?`;
+ wm.confirm(msg).then(function(ok) {
+ if (ok) {
+ let http = tools.makeRequest("POST", "/api/wol/wakeup", function() {
+ if (http.readyState === 4) {
+ if (http.status !== 200) {
+ wm.error("Wakeup error:<br>", http.responseText);
+ }
+ }
+ });
+ }
+ });
+ };
+
+ __init__();
+}