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 }