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> ';
3581
+ x += '<a onclick=p10WebRouter("' + node._id + '",2,' + (node.httpsport ? node.httpsport : 443) + ')>' + "HTTPS" + ((node.httpsport && (node.httpsport != 443)) ? '/' + node.httpsport : '') + '</a> ';
3582
+ }
3583
//if (mesh.mtype == 2) x += '<a style=cursor:pointer onclick=p10showNodeNetInfoDialog("' + node._id + '")>Interfaces</a> ';
3584
//if (xxmap != null) x += '<a style=cursor:pointer onclick=p10showNodeLocationDialog("' + node._id + '")>Location</a> ';
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);