150 lines
3.7 KiB
JavaScript
150 lines
3.7 KiB
JavaScript
|
|
function getAppIP( network, device, app ) {
|
||
|
|
let deviceIP;
|
||
|
|
let port;
|
||
|
|
|
||
|
|
console.log(network, " - ", device, " - ", app)
|
||
|
|
|
||
|
|
if (network == 'tailscale') {
|
||
|
|
deviceIP = (device == 'qnap') ? '100.97.249.88' : '100.115.109.63';
|
||
|
|
} else {
|
||
|
|
deviceIP = (device == 'qnap') ? '192.168.1.81' : '192.168.1.13';
|
||
|
|
}
|
||
|
|
|
||
|
|
switch (app) {
|
||
|
|
case 'nginx':
|
||
|
|
port = ":81";
|
||
|
|
break;
|
||
|
|
case 'qnas':
|
||
|
|
port = ":8080";
|
||
|
|
break;
|
||
|
|
case 'dockerRegistry':
|
||
|
|
port = ":5000";
|
||
|
|
break;
|
||
|
|
case 'jellyfin':
|
||
|
|
port = ":8096";
|
||
|
|
break;
|
||
|
|
case 'qtorrent':
|
||
|
|
port = ":8181";
|
||
|
|
break;
|
||
|
|
case 'radarr':
|
||
|
|
port = ":7878";
|
||
|
|
break;
|
||
|
|
default:
|
||
|
|
port = ""
|
||
|
|
// case sonarr:
|
||
|
|
// port = ":"
|
||
|
|
// break;
|
||
|
|
// case lidarr:
|
||
|
|
// port = ":"
|
||
|
|
// break;
|
||
|
|
// case gitRegistry:
|
||
|
|
// port = ":"
|
||
|
|
// break;
|
||
|
|
};
|
||
|
|
|
||
|
|
return "http://" + deviceIP + port;
|
||
|
|
}
|
||
|
|
|
||
|
|
function propigateIps( network ) {
|
||
|
|
console.log('prop started: ', network)
|
||
|
|
const ipHasPortRegex = /^http:\/\/(\d{1,3}\.){3}\d{1,3}:\d+$/;
|
||
|
|
['qnap', 'pc'].forEach(function(deviceClass) {
|
||
|
|
$("." + deviceClass).each(function() {
|
||
|
|
let appName = $(this).attr("id");
|
||
|
|
let ipAddress = getAppIP(network, deviceClass, appName);
|
||
|
|
if (ipHasPortRegex.test(ipAddress)) {
|
||
|
|
$(this).attr('href', ipAddress);
|
||
|
|
} else {
|
||
|
|
$(this).removeAttr('href');
|
||
|
|
$(this).removeClass('button');
|
||
|
|
$(this).addClass('button-disabled');
|
||
|
|
}
|
||
|
|
})
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
function determineNetwork() {
|
||
|
|
const apiUrlTailscale = 'http://100.97.249.88:3030/';
|
||
|
|
try {
|
||
|
|
fetch(apiUrlTailscale);
|
||
|
|
console.log('determined: tailscale')
|
||
|
|
return 'tailscale';
|
||
|
|
} catch {
|
||
|
|
console.log('determined: local')
|
||
|
|
return'local';
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
async function fillIpsBasedOnNetwork() {
|
||
|
|
const apiUrlTailscale = 'http://100.97.249.88:3030/';
|
||
|
|
let network;
|
||
|
|
try {
|
||
|
|
await fetch(apiUrlTailscale);
|
||
|
|
console.log('determined: tailscale')
|
||
|
|
network = 'tailscale'
|
||
|
|
setHeader (network)
|
||
|
|
propigateIps(network);
|
||
|
|
} catch {
|
||
|
|
console.log('determined: local')
|
||
|
|
network = 'local'
|
||
|
|
setHeader (network)
|
||
|
|
propigateIps(network);
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
function setHeader( network ) {
|
||
|
|
const networkName = network.charAt(0).toUpperCase() + network.slice(1) + ' Network';
|
||
|
|
$("#currentDashboard").text(networkName);
|
||
|
|
}
|
||
|
|
|
||
|
|
$(document).ready(function() {
|
||
|
|
fillIpsBasedOnNetwork();
|
||
|
|
|
||
|
|
});
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
/* document.addEventListener('DOMContentLoaded', function() {
|
||
|
|
const changeDashboardButton = document.getElementById('changeDashboardButton');
|
||
|
|
|
||
|
|
changeDashboardButton.addEventListener('click', function() {
|
||
|
|
console.log("click")
|
||
|
|
$("#currentDashboard")
|
||
|
|
const currentDashboard = $("#currentDashboard")
|
||
|
|
|
||
|
|
let currentDashboardClasses = currentDashboard.attr('class');
|
||
|
|
let newNetwork = currentDashboardClasses.includes('tailscale') ? 'local' : 'tailscale';
|
||
|
|
|
||
|
|
['qnap', 'pc'].forEach(function(deviceClass) {
|
||
|
|
$("." + deviceClass).each(function() {
|
||
|
|
let appName = $(this).attr("id");
|
||
|
|
let ipAddress = getIP(newNetwork, deviceClass, appName);
|
||
|
|
if (ipRegex.test(ipAddress)) {
|
||
|
|
$(this).attr('href', ipAddress);
|
||
|
|
$(this).removeClass('button-disabled');
|
||
|
|
$(this).addClass('button');
|
||
|
|
} else {
|
||
|
|
$(this).removeAttr('href');
|
||
|
|
$(this).removeClass('button');
|
||
|
|
$(this).addClass('button-disabled');
|
||
|
|
}
|
||
|
|
})
|
||
|
|
})
|
||
|
|
|
||
|
|
currentDashboard.toggleClass('local tailscale');
|
||
|
|
let networkName = newNetwork.charAt(0).toUpperCase() + newNetwork.slice(1) + ' Network';
|
||
|
|
currentDashboard.text(networkName)
|
||
|
|
|
||
|
|
const logoOn = $('#logoOn');
|
||
|
|
const logoOff = $('#logoOff');
|
||
|
|
let logoOnSrc = logoOn.attr('src');
|
||
|
|
let logoOffSrc = logoOff.attr('src');
|
||
|
|
|
||
|
|
logoOn.attr('src', logoOffSrc)
|
||
|
|
logoOff.attr('src', logoOnSrc)
|
||
|
|
});
|
||
|
|
}); */
|