Added web relay links to mobile web site (#4342)

Ylian Saint-Hilaire committed Jul 29, 2022 at 11:53 UTC f57730f8aea0cd81d3f7a9eadca69b19af4ea1d9
1 file changed +27 -2
views/default-mobile.handlebars
+27 -2
@@ -854,7 +854,7 @@
854 <div id="p10deviceBattery" class="deviceBatteryLarge deviceBatteryLarge1"></div>
855 <div id=p10html style="margin-left:8px;margin-right:8px"></div>
856 <div id=p10html2></div>
857 - <div id=p10html3></div>
857 + <div id=p10html3 style="margin-left:8px"></div>
858 </div>
859 <img id="deskkeybutton1" src="images/mobile-desk-exit.png" class="deskButton" style="top:10px;display:none" onclick="exitButton()" />
860 <img id="deskkeybutton3a" src="images/mobile-desk-menu-open.png" class="deskButton" style="top:60px;display:none" onclick="toggleMenu(false)" />
@@ -1228,6 +1228,8 @@
1228 var authCookie = '{{{authCookie}}}';
1229 var authRelayCookie = '{{{authRelayCookie}}}';
1230 var authCookieRenewTimer = null;
1231 + var webRelayPort = parseInt('{{{webRelayPort}}}');
1232 + var webRelayDns = '{{{webRelayDns}}}';
1233 var meshserver = null;
1234 var xdr = null;
1235 var usergroups = null;
@@ -1911,6 +1913,8 @@
1913 node.rdpport = message.event.node.rdpport;
1914 node.rfbport = message.event.node.rfbport;
1915 node.sshport = message.event.node.sshport;
1916 + node.httpport = message.event.node.httpport;
1917 + node.httpsport = message.event.node.httpsport;
1918 node.consent = message.event.node.consent;
1919 node.pmt = message.event.node.pmt;
1920 if (message.event.node.agent != null) {
@@ -3572,6 +3576,10 @@
3576 x = '<div style=float:right;font-size:x-small;margin-right:10px>';
3577 if ((meshrights & 0x8000) != 0) { x += '<a style=cursor:pointer onclick=p10showDeleteNodeDialog("' + node._id + '")>' + "Delete Device" + '</a>'; }
3578 x += '</div><div style=font-size:x-small>';
3579 + if (webRelayPort != 0) {
3580 + x += '<a onclick=p10WebRouter("' + node._id + '",1,' + (node.httpport ? node.httpport : 80) + ')>' + "HTTP" + ((node.httpport && (node.httpport != 80)) ? '/' + node.httpport : '') + '</a>&nbsp;';
3581 + x += '<a onclick=p10WebRouter("' + node._id + '",2,' + (node.httpsport ? node.httpsport : 443) + ')>' + "HTTPS" + ((node.httpsport && (node.httpsport != 443)) ? '/' + node.httpsport : '') + '</a>&nbsp;';
3582 + }
3583 //if (mesh.mtype == 2) x += '<a style=cursor:pointer onclick=p10showNodeNetInfoDialog("' + node._id + '")>Interfaces</a>&nbsp;';
3584 //if (xxmap != null) x += '<a style=cursor:pointer onclick=p10showNodeLocationDialog("' + node._id + '")>Location</a>&nbsp;';
3585 x += '</div><br>'
@@ -3808,7 +3816,7 @@
3816
3817 // Draw device power bars. The bars are 766px wide.
3818 function drawDeviceTimeline() {
3811 - if (currentNode.mtype == 3) return;
3819 + if (currentNode.mtype == 3) { QH('p10html2', '<br />'); return; }
3820 var timeline = null, now = Date.now();
3821 if (currentNode._id == powerTimelineNode) { timeline = powerTimeline; }
3822
@@ -3918,6 +3926,23 @@
3926 meshserver.send({ action: 'removedevices', nodeids: [nodeid] });
3927 }
3928
3929 + function p10WebRouter(nodeid, protocol, port, addr) {
3930 + var relayid = null;
3931 + var node = getNodeFromId(nodeid);
3932 + if (node.mtype == 3) { // Setup device relay if needed
3933 + var mesh = meshes[node.meshid];
3934 + if (mesh && mesh.relayid) { relayid = mesh.relayid; addr = node.host; }
3935 + }
3936 + var servername = serverinfo.name;
3937 + if ((servername.indexOf('.') == -1) || ((features & 2) != 0)) { servername = window.location.hostname; } // If the server name is not set or it's in LAN-only mode, use the URL hostname as server name.
3938 + if (webRelayDns != '') { servername = webRelayDns; }
3939 + var url = 'https://' + servername + ':' + webRelayPort + '/control-redirect.ashx?n=' + nodeid + '&p=' + port + '&appid=' + protocol + '&c=' + authRelayCookie; // Protocol: 1 = HTTP, 2 = HTTPS
3940 + if (addr != null) { url += '&addr=' + addr; }
3941 + if (relayid != null) { url += '&relayid=' + relayid; }
3942 + safeNewWindow(url, 'WebRelay');
3943 + return false;
3944 + }
3945 +
3946 function p10showiconselector() {
3947 if (xxdialogMode) return;
3948 var rights = GetNodeRights(currentNode);