Fixes and improvements to web power switch support.
Ylian Saint-Hilaire committed
Dec 31, 2021 at 12:58 UTC
d8c078d4f12070e63004f2d5126e83a7f1aa921e
42 files changed
+23
-6
agents/MeshCmd-signed.exe
Binary files a/agents/MeshCmd-signed.exe and b/agents/MeshCmd-signed.exe differ
agents/MeshCmd64-signed.exe
Binary files a/agents/MeshCmd64-signed.exe and b/agents/MeshCmd64-signed.exe differ
agents/MeshService-signed.exe
Binary files a/agents/MeshService-signed.exe and b/agents/MeshService-signed.exe differ
agents/MeshService.exe
Binary files a/agents/MeshService.exe and b/agents/MeshService.exe differ
agents/MeshService64-signed.exe
Binary files a/agents/MeshService64-signed.exe and b/agents/MeshService64-signed.exe differ
agents/MeshService64.exe
Binary files a/agents/MeshService64.exe and b/agents/MeshService64.exe differ
agents/agents-new/MeshCmd-signed.exe
Binary files /dev/null and b/agents/agents-new/MeshCmd-signed.exe differ
agents/agents-new/MeshCmd64-signed.exe
Binary files /dev/null and b/agents/agents-new/MeshCmd64-signed.exe differ
agents/agents-new/MeshService-signed.exe
Binary files /dev/null and b/agents/agents-new/MeshService-signed.exe differ
agents/agents-new/MeshService.exe
Binary files /dev/null and b/agents/agents-new/MeshService.exe differ
agents/agents-new/MeshService64-signed.exe
Binary files /dev/null and b/agents/agents-new/MeshService64-signed.exe differ
agents/agents-new/MeshService64.exe
Binary files /dev/null and b/agents/agents-new/MeshService64.exe differ
agents/agents-old/MeshCmd-signed.exe
Binary files /dev/null and b/agents/agents-old/MeshCmd-signed.exe differ
agents/agents-old/MeshCmd64-signed.exe
Binary files /dev/null and b/agents/agents-old/MeshCmd64-signed.exe differ
agents/agents-old/MeshService-signed.exe
Binary files /dev/null and b/agents/agents-old/MeshService-signed.exe differ
agents/agents-old/MeshService.exe
Binary files /dev/null and b/agents/agents-old/MeshService.exe differ
agents/agents-old/MeshService64-signed.exe
Binary files /dev/null and b/agents/agents-old/MeshService64-signed.exe differ
agents/agents-old/MeshService64.exe
Binary files /dev/null and b/agents/agents-old/MeshService64.exe differ
agents/agents-old/meshagent_aarch64
renamed
agents/agents-old/meshagent_aarch64-cortex-a53
renamed
agents/agents-old/meshagent_arm
renamed
agents/agents-old/meshagent_arm-linaro
renamed
agents/agents-old/meshagent_armhf
renamed
agents/agents-old/meshagent_armhf2
renamed
agents/agents-old/meshagent_freebsd_x86-64
renamed
agents/agents-old/meshagent_linux-armada370-hf
renamed
agents/agents-old/meshagent_mips
renamed
agents/agents-old/meshagent_mips24kc
renamed
agents/agents-old/meshagent_mipsel24kc
renamed
agents/agents-old/meshagent_openbsd_x86-64
renamed
agents/agents-old/meshagent_openwrt_x86_64
renamed
agents/agents-old/meshagent_osx-arm-64
renamed
agents/agents-old/meshagent_osx-universal-64
renamed
agents/agents-old/meshagent_osx-x86-64
renamed
agents/agents-old/meshagent_pogo
renamed
agents/agents-old/meshagent_poky
renamed
agents/agents-old/meshagent_poky64
renamed
agents/agents-old/meshagent_x86
renamed
agents/agents-old/meshagent_x86-64
renamed
agents/agents-old/meshagent_x86-64_nokvm
renamed
agents/agents-old/meshagent_x86_nokvm
renamed
meshipkvm.js
+23
-6
@@ -110,6 +110,19 @@ function CreateIPKVMManager(parent) {
110
if (sender.firmwareVersion) { console.log('FirmwareVersion:', sender.firmwareVersion); }
111
}
112
*/
113
+
114
+ if (state == 0) {
115
+ // Disconnect all nodes for this device group
116
+ for (var i in sender.ports) {
117
+ const port = sender.ports[i];
118
+ const nodeid = generateIpKvmNodeId(sender.meshid, port.PortId, sender.domainid);
119
+ if (obj.managedPorts[nodeid] != null) {
120
+ parent.ClearConnectivityState(sender.meshid, nodeid, 1, null, null);
121
+ delete obj.managedPorts[nodeid];
122
+ }
123
+ }
124
+ }
125
+
126
}
127
128
// Called when a KVM device changes state
@@ -343,6 +356,7 @@ function CreateRaritanKX3Manager(parent, hostname, port, username, password) {
356
if ((newState == 2) && (updateTimer == null)) { updateTimer = setInterval(obj.update, 10000); }
357
if ((newState != 2) && (updateTimer != null)) { clearInterval(updateTimer); updateTimer = null; }
358
if ((newState == 0) && (obj.started == true) && (retryTimer == null)) { retryTimer = setTimeout(connect, 20000); }
359
+ if (newState == 0) { obj.ports = []; obj.portCount = 0; obj.deviceCount = 0; }
360
}
361
362
function connect() {
@@ -753,6 +767,7 @@ function CreateWebPowerSwitch(parent, hostname, port, username, password) {
767
obj.started = false;
768
if (retryTimer != null) { clearTimeout(retryTimer); retryTimer = null; }
769
setState(0);
770
+ obj.ports = [];
771
}
772
773
function setState(newState) {
@@ -762,10 +777,12 @@ function CreateWebPowerSwitch(parent, hostname, port, username, password) {
777
if ((newState == 2) && (updateTimer == null)) { updateTimer = setInterval(obj.update, 10000); }
778
if ((newState != 2) && (updateTimer != null)) { clearInterval(updateTimer); updateTimer = null; }
779
if ((newState == 0) && (obj.started == true) && (retryTimer == null)) { retryTimer = setTimeout(connect, 20000); }
780
+ if (newState == 0) { obj.ports = []; obj.portCount = 0; }
781
}
782
783
function connect() {
784
if (obj.state != 0) return;
785
+ if (retryTimer != null) { clearTimeout(retryTimer); retryTimer = null; }
786
setState(1); // 1 = Connecting
787
obj.update();
788
}
@@ -891,11 +908,11 @@ function CreateWebPowerSwitch(parent, hostname, port, username, password) {
908
909
function parseChallenge(header) {
910
header = header.replace('qop="auth,auth-int"', 'qop="auth"'); // We don't support auth-int yet, easiest way to get rid of it.
894
- var prefix = 'Digest ';
895
- var challenge = header.substr(header.indexOf(prefix) + prefix.length);
896
- var parts = challenge.split(',');
897
- var length = parts.length;
898
- var params = {};
911
+ const prefix = 'Digest ';
912
+ const challenge = header.substr(header.indexOf(prefix) + prefix.length);
913
+ const parts = challenge.split(',');
914
+ const length = parts.length;
915
+ const params = {};
916
for (var i = 0; i < length; i++) {
917
var part = parts[i].match(/^\s*?([a-zA-Z0-0]+)="(.*)"\s*?$/);
918
if (part && part.length > 2) { params[part[1]] = part[2]; }
@@ -904,7 +921,7 @@ function CreateWebPowerSwitch(parent, hostname, port, username, password) {
921
}
922
923
function renderDigest(params) {
907
- var parts = [];
924
+ const parts = [];
925
for (var i in params) { parts.push(i + '="' + params[i] + '"'); }
926
return 'Digest ' + parts.join(', ');
927
}