diff options
author | Devaev Maxim <[email protected]> | 2019-11-30 02:25:02 +0300 |
---|---|---|
committer | Devaev Maxim <[email protected]> | 2019-11-30 02:25:02 +0300 |
commit | f23d009d0c1228bc901866fe017eb3bec252df1a (patch) | |
tree | 412b2b1db11ce7bddc49df3e62e674d17fead998 | |
parent | f6fab6415e86daa4e4372412968d70ca6bdf8620 (diff) |
wol ui
-rw-r--r-- | web/kvm/index.html | 4 | ||||
-rw-r--r-- | web/share/js/kvm/session.js | 4 | ||||
-rw-r--r-- | web/share/js/kvm/wol.js | 67 |
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">• Open log</button> </div> + <div id="wol" class="menu-item-content-buttons feature-disabled"> + <hr> + <button disabled id="wol-wakeup-button">• 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__(); +} |