diff options
author | Devaev Maxim <[email protected]> | 2020-04-21 08:01:16 +0300 |
---|---|---|
committer | Devaev Maxim <[email protected]> | 2020-04-21 08:01:16 +0300 |
commit | 05d35d7eb0a30d71a88b7e443ff9755ad0a17bff (patch) | |
tree | 0a0b261715a0fb3f3c4d1ccbb2332675eb080701 /web | |
parent | 8c904cf4a8e78fc4a688131a9b360085b7bfbf75 (diff) |
real ports for extras
Diffstat (limited to 'web')
-rw-r--r-- | web/ipmi/index.html | 4 | ||||
-rw-r--r-- | web/share/js/ipmi/main.js | 73 | ||||
-rw-r--r-- | web/share/js/vnc/main.js | 50 | ||||
-rw-r--r-- | web/vnc/index.html | 11 |
4 files changed, 105 insertions, 33 deletions
diff --git a/web/ipmi/index.html b/web/ipmi/index.html index bc146f1b..07fda012 100644 --- a/web/ipmi/index.html +++ b/web/ipmi/index.html @@ -52,8 +52,8 @@ </a> <hr> <p class="text"> - This Pi-KVM device has running kvmd-ipmi daemon and provides IPMI 2.0 port (default 623) - for some basic BMC operations like on/off/reset for the server. + This Pi-KVM device has running <b>kvmd-ipmi</b> daemon and provides IPMI 2.0 interface for some basic + BMC operations like on/off/reset the server. </p> <p class="text"> <b>WARNING!</b> We strongly don't recommend you to use IPMI in untrusted networks because diff --git a/web/share/js/ipmi/main.js b/web/share/js/ipmi/main.js index ff3032f5..2c48e7d3 100644 --- a/web/share/js/ipmi/main.js +++ b/web/share/js/ipmi/main.js @@ -23,36 +23,51 @@ "use strict"; -import {$} from "../tools.js"; +import {$, tools} from "../tools.js"; export function main() { - let host = window.location.hostname; - let site = `${window.location.protocol}//${window.location.host}`; - $("ipmi-text").innerHTML = ` - <span class="code-comment"># Power on the server if it's off:<br> - $</span> ipmitool -I lanplus -U admin -P admin -H ${host} power on<br> - <span class="code-comment">$</span> curl -XPOST -HX-KVMD-User:admin -HX-KVMD-Passwd:admin -k \\<br> - ${site}/api/atx/power?action=on<br> - <br> - <span class="code-comment"># Soft power off the server if it's on:<br> - $</span> ipmitool -I lanplus -U admin -P admin -H ${host} power soft<br> - <span class="code-comment">$</span> curl -XPOST -HX-KVMD-User:admin -HX-KVMD-Passwd:admin -k \\<br> - ${site}/api/atx/power?action=off<br> - <br> - <span class="code-comment"># Hard power off the server if it's on:<br> - $</span> ipmitool -I lanplus -U admin -P admin -H ${host} power off<br> - <span class="code-comment">$</span> curl -XPOST -HX-KVMD-User:admin -HX-KVMD-Passwd:admin -k \\<br> - ${site}/api/atx/power?action=off_hard<br> - <br> - <span class="code-comment"># Hard reset the server if it's on:<br> - $</span> ipmitool -I lanplus -U admin -P admin -H ${host} power reset<br> - <span class="code-comment">$</span> curl -XPOST -HX-KVMD-User:admin -HX-KVMD-Passwd:admin -k \\<br> - ${site}/api/atx/power?action=reset_hard<br> - <br> - <span class="code-comment"># Check the power status:<br> - $</span> ipmitool -I lanplus -U admin -P admin -H ${host} power status<br> - <span class="code-comment">$</span> curl -HX-KVMD-User:admin -HX-KVMD-Passwd:admin -k \\<br> - ${site}/api/atx - `; + __loadKvmdInfo(); +} + +function __loadKvmdInfo() { + let http = tools.makeRequest("GET", "/api/info", function() { + if (http.readyState === 4) { + if (http.status === 200) { + let port = JSON.parse(http.responseText).result.extras.ipmi.port; + let host = window.location.hostname; + let site = `${window.location.protocol}//${window.location.host}`; + $("ipmi-text").innerHTML = ` + <span class="code-comment"># Power on the server if it's off:<br> + $</span> ipmitool -I lanplus -U admin -P admin -H ${host} -p ${port} power on<br> + <span class="code-comment">$</span> curl -XPOST -HX-KVMD-User:admin -HX-KVMD-Passwd:admin -k \\<br> + ${site}/api/atx/power?action=on<br> + <br> + <span class="code-comment"># Soft power off the server if it's on:<br> + $</span> ipmitool -I lanplus -U admin -P admin -H ${host} -p ${port} power soft<br> + <span class="code-comment">$</span> curl -XPOST -HX-KVMD-User:admin -HX-KVMD-Passwd:admin -k \\<br> + ${site}/api/atx/power?action=off<br> + <br> + <span class="code-comment"># Hard power off the server if it's on:<br> + $</span> ipmitool -I lanplus -U admin -P admin -H ${host} -p ${port} power off<br> + <span class="code-comment">$</span> curl -XPOST -HX-KVMD-User:admin -HX-KVMD-Passwd:admin -k \\<br> + ${site}/api/atx/power?action=off_hard<br> + <br> + <span class="code-comment"># Hard reset the server if it's on:<br> + $</span> ipmitool -I lanplus -U admin -P admin -H ${host} -p ${port} power reset<br> + <span class="code-comment">$</span> curl -XPOST -HX-KVMD-User:admin -HX-KVMD-Passwd:admin -k \\<br> + ${site}/api/atx/power?action=reset_hard<br> + <br> + <span class="code-comment"># Check the power status:<br> + $</span> ipmitool -I lanplus -U admin -P admin -H ${host} -p ${port} power status<br> + <span class="code-comment">$</span> curl -HX-KVMD-User:admin -HX-KVMD-Passwd:admin -k \\<br> + ${site}/api/atx + `; + } else if (http.status === 401 || http.status === 403) { + document.location.href = "/login"; + } else { + setTimeout(__loadKvmdInfo, 1000); + } + } + }); } diff --git a/web/share/js/vnc/main.js b/web/share/js/vnc/main.js new file mode 100644 index 00000000..41f310b7 --- /dev/null +++ b/web/share/js/vnc/main.js @@ -0,0 +1,50 @@ +/***************************************************************************** +# # +# 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"; + + +export function main() { + __loadKvmdInfo(); +} + +function __loadKvmdInfo() { + let http = tools.makeRequest("GET", "/api/info", function() { + if (http.readyState === 4) { + if (http.status === 200) { + let port = JSON.parse(http.responseText).result.extras.vnc.port; + let host = window.location.hostname; + $("vnc-text").innerHTML = ` + <span class="code-comment"># How to connect using the Linux terminal:<br> + $</span> vncviewer ${host}::${port} + `; + } else if (http.status === 401 || http.status === 403) { + document.location.href = "/login"; + } else { + setTimeout(__loadKvmdInfo, 1000); + } + } + }); +} diff --git a/web/vnc/index.html b/web/vnc/index.html index 9cf2b251..966f5b22 100644 --- a/web/vnc/index.html +++ b/web/vnc/index.html @@ -37,6 +37,11 @@ <link rel="stylesheet" href="../share/css/vars.css"> <link rel="stylesheet" href="../share/css/main.css"> <link rel="stylesheet" href="../share/css/start.css"> + + <script type="module"> + import {main} from "/share/js/vnc/main.js"; + main(); + </script> </head> <body> @@ -47,8 +52,7 @@ </a> <hr> <p class="text"> - This Pi-KVM device has running kvmd-vnc daemon and provides VNC port (default 5900) - for alternative access to the server other than the web interface. + This Pi-KVM device has running <b>kvmd-vnc</b> daemon and provides VNC access to the server. </p> <p class="text"> <b>WARNING!</b> We strongly don't recommend you to use VNC in untrusted networks. @@ -58,7 +62,10 @@ <p class="text"> Your VNC client must support Tight JPEG compression, password authentication and allow connection without encryption. <a href="https://tigervnc.org">TigerVNC</a> is a good choice. + On Linux, this client will most likely be available for installation from the repository. + It can also be called vncviewer. </p> + <div id="vnc-text" class="code" style="max-height:200px;"></div> </div> </div> </body> |