Added mobile site SFTP integration for agent devices, #3969

Ylian Saint-Hilaire committed May 13, 2022 at 13:29 UTC 5ac5d5a62438b06cc52d0898f008047c4560093d
2 files changed +22 -10
views/default-mobile.handlebars
+19 -6
@@ -951,7 +951,9 @@
951 </div>
952 <div style="margin-left:2px">
953 <input id=p13AutoConnect value="AutoConnect" onclick=autoConnectFiles(event) onkeypress="return false" onkeydown="return false" type="button" style="display:none">
954 - <input id=p13Connect value="Connect" onclick=connectFiles(event) onkeypress="return false" onkeydown="return false" type="button">
954 + <input id=p13Connect value="Connect" onclick=connectFiles(event,1) onkeypress="return false" onkeydown="return false" type="button" />
955 + <input id=p13Connects value="SFTP Connect" onclick=connectFiles(event,2) onkeypress="return false" onkeydown="return false" type="button" />
956 + <input id=p13Disconnect value="Disconnect" onclick=connectFiles(event) onkeypress="return false" onkeydown="return false" type="button" />
957 <span class=textOverGray id=p13Status>Disconnected</span>
958 </div>
959 </td>
@@ -5028,15 +5030,24 @@
5030 filesNode = currentNode;
5031 var online = ((filesNode.conn & 1) != 0) || (filesNode.mtype == 3); // If Agent (1) connected, enable Terminal
5032 QE('p13Connect', online);
5033 + QE('p13Connects', online);
5034 + QV('p13Connect', (files == null) && (filesNode.mtype == 2));
5035 + QV('p13Connects', (files == null) && (filesNode.agent != null) && (filesNode.agent.id != 3) && (filesNode.agent.id != 4));
5036 + QV('p13Disconnect', files != null);
5037 if (((samenode == false) || (online == false)) && files) { files.Stop(); files = null; }
5038 p13setActions();
5039 }
5040
5041 function onFilesStateChange(xfiles, state) {
5042 setSessionActivity();
5037 - p13Connect.value = (state == 0) ? "Connect" : "Disconnect";
5043 + QV('p13Connect', (state == 0) && (filesNode.mtype == 2));
5044 + QV('p13Connects', (state == 0) && (filesNode.agent != null) && (filesNode.agent.id != 3) && (filesNode.agent.id != 4));
5045 + QV('p13Disconnect', state != 0);
5046 var str = StatusStrs[state];
5039 - if (files.webRtcActive == true) { str += ", WebRTC"; }
5047 + if (state == 3) {
5048 + if (files.contype == 2) { str += ", SFTP"; }
5049 + if (files.webRtcActive == true) { str += ", WebRTC"; }
5050 + }
5051 Q('p13Status').textContent = str;
5052 switch (state) {
5053 case 0:
@@ -5080,12 +5091,13 @@
5091 var autoConnectFilesTimer = null;
5092 function autoConnectFiles(e) { if (autoConnectFilesTimer == null) { autoConnectFilesTimer = setInterval(connectFiles, 100); } else { clearInterval(autoConnectFilesTimer); autoConnectFilesTimer = null; } }
5093
5083 - function connectFiles(e) {
5094 + function connectFiles(e, contype) {
5095 p13clearConsoleMsg();
5096 if (!files) {
5097 // Setup a mesh agent files
5098 files = CreateAgentRedirect(meshserver, CreateRemoteFiles(p13gotFiles), serverPublicNamePort, authCookie, authRelayCookie, domainUrl);
5088 - if (filesNode.mtype == 3) { files.urlname = 'sshfilesrelay.ashx'; } // If this is a SSH session, change the URL to the SSH application relay.
5099 + if (contype == 2) { files.urlname = 'sshfilesrelay.ashx'; } // If this is a SSH session, change the URL to the SSH application relay.
5100 + files.contype = contype;
5101 files.attemptWebRTC = attemptWebRTC;
5102 files.onStateChanged = onFilesStateChange;
5103 files.onConsoleMessageChange = function () {
@@ -5304,7 +5316,8 @@
5316 QE('p13CopyButton', advancedFeatures && (cc > 0) && (cc == sfc) && (currentNode.mtype != 3) && ((p13filetreelocation.length > 0) || (winAgent == false)));
5317 QE('p13PasteButton', advancedFeatures && (currentNode.mtype != 3) && ((p13filetreelocation.length > 0) || (winAgent == false)) && ((p13clipboard != null) && (p13clipboard.length > 0)));
5318 }
5307 - if (filesNode.mtype != 3) {
5319 + var filesState = ((files != null) && (files.state != 0));
5320 + if (((filesState == true) && (files.contype != 2)) || (filesNode.agent.id == 3) || (filesNode.agent.id == 4)) {
5321 QH('filesCustomUpperRight', '');
5322 } else {
5323 QH('filesCustomUpperRight', '<a style=cursor:pointer onclick=cmsshportaction(1,event)>' + format("SSH Port {0}", (filesNode.sshport ? filesNode.sshport : 22)) + '</a>');
views/default.handlebars
+3 -4
@@ -9988,7 +9988,7 @@
9988 var online = ((filesNode.conn & 1) != 0) || (filesNode.mtype == 3); // If Agent (1) connected, enable Terminal
9989 QE('p13Connect', online);
9990 QE('p13Connects', online);
9991 - QV('p13Connect', files == null);
9991 + QV('p13Connect', (files == null) && (filesNode.mtype == 2));
9992 QV('p13Connects', (files == null) && (filesNode.agent != null) && (filesNode.agent.id != 3) && (filesNode.agent.id != 4));
9993 QV('p13Disconnect', files != null);
9994 if (((samenode == false) || (online == false)) && files) { files.Stop(); files = null; }
@@ -9996,10 +9996,9 @@
9996 }
9997
9998 function onFilesStateChange(xfiles, state) {
9999 - QV('p13Connect', state == 0);
10000 - QV('p13Connects', state == 0);
9999 + QV('p13Connect', (state == 0) && (files == null) && (filesNode.mtype == 2));
10000 + QV('p13Connects', (state == 0) && (files == null) && (filesNode.agent != null) && (filesNode.agent.id != 3) && (filesNode.agent.id != 4));
10001 QV('p13Disconnect', state != 0);
10002 - //p13Connect.value = (state == 0) ? "Connect" : "Disconnect";
10002 var str = StatusStrs[state];
10003 if (state == 3) {
10004 if (files.contype == 2) { str += ", SFTP"; }