This commit is contained in:
Devaev Maxim 2019-11-30 02:25:02 +03:00
parent f6fab6415e
commit f23d009d0c
3 changed files with 75 additions and 0 deletions

View File

@ -127,6 +127,10 @@
<div class="menu-item-content-buttons"> <div class="menu-item-content-buttons">
<button data-force-hide-menu id="open-log-button">&bull; Open log</button> <button data-force-hide-menu id="open-log-button">&bull; Open log</button>
</div> </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> </div>
</li> </li>

View File

@ -30,6 +30,7 @@ import {Hid} from "./hid.js";
import {Atx} from "./atx.js"; import {Atx} from "./atx.js";
import {Msd} from "./msd.js"; import {Msd} from "./msd.js";
import {Streamer} from "./stream.js"; import {Streamer} from "./stream.js";
import {WakeOnLan} from "./wol.js";
export function Session() { export function Session() {
@ -46,6 +47,7 @@ export function Session() {
var __atx = new Atx(); var __atx = new Atx();
var __msd = new Msd(); var __msd = new Msd();
var __streamer = new Streamer(); var __streamer = new Streamer();
var __wol = new WakeOnLan();
var __init__ = function() { var __init__ = function() {
__startSession(); __startSession();
@ -126,6 +128,8 @@ export function Session() {
__msd.setState(event.msg.event_attrs); __msd.setState(event.msg.event_attrs);
} else if (event.msg.event === "streamer_state") { } else if (event.msg.event === "streamer_state") {
__streamer.setState(event.msg.event_attrs); __streamer.setState(event.msg.event_attrs);
} else if (event.msg.event === "wol_state") {
__wol.setState(event.msg.event_attrs);
} }
} }
}; };

67
web/share/js/kvm/wol.js Normal file
View File

@ -0,0 +1,67 @@
/*****************************************************************************
# #
# KVMD - The main Pi-KVM daemon. #
# #
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
# #
# 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__();
}