switch to infinite lease and clenaup

This commit is contained in:
2025-11-27 21:37:50 +01:00
parent 1bdd45660e
commit 502957a3e7
+70 -51
View File
@@ -3,7 +3,6 @@ const path = require('path');
const exec = require("child_process").execSync; const exec = require("child_process").execSync;
var config = null; var config = null;
const leaseTime = 3600;
function clone(obj) { function clone(obj) {
return JSON.parse(JSON.stringify(obj)); return JSON.parse(JSON.stringify(obj));
@@ -68,82 +67,102 @@ async function saveConfig({ configPath = __dirname, configName = 'config.json' }
} }
function run(command) { function run(command, consoleOutput = false) {
let convertOutput = exec(command, function (error, stdout, stderr) { let convertOutput = exec(command, function (error, stdout, stderr) {
if (error) { if (error) {
// console.log(`error: ${error.message}`); if (consoleOutput) {
console.log(`error: ${error.message}`);
}
return; return;
} }
if (stderr) { if (stderr) {
// console.log(`stderr: ${stderr}`); if (consoleOutput) {
console.log(`stderr: ${stderr}`);
}
return; return;
} }
// console.log(`stdout: ${stdout}`); if (consoleOutput) {
console.log(`stdout: ${stdout}`);
}
}); });
return convertOutput.toString(); return convertOutput.toString();
} }
function mapPorts(instancesJSON) { async function main() {
portList = []; await loadConfig();
instances = JSON.parse(instancesJSON); instancesJSON = await readFile(config.instancesPath);
for (const instance of instances) { instancesPorts = "";
upnpPortList = run('upnpc -l');
// console.log(upnpPortList);
for (const instance of JSON.parse(instancesJSON)) {
if (instance.DeploymentArgs['GenericModule.App.Ports'] != undefined) { if (instance.DeploymentArgs['GenericModule.App.Ports'] != undefined) {
instancePorts = JSON.parse(instance.DeploymentArgs['GenericModule.App.Ports']);
// 0 - TCP; 1 = UDP; 2 - Both // 0 - TCP; 1 = UDP; 2 - Both
for (const instancePort of instancePorts) { for (const instancePort of JSON.parse(instance.DeploymentArgs['GenericModule.App.Ports'])) {
let Name = `AMP ${instance.FriendlyName} ${instancePort.Name}`; let Name = `AMP ${instance.FriendlyName} ${instancePort.Name}`;
let Number = instancePort.Port; let Number = instancePort.Port;
switch (instancePort.Protocol) { instancesPorts = `${Name}\n`;
case 0:
try {
run(`upnpc -e "${Name}" -a ${config.ip} ${Number} ${Number} TCP ${leaseTime}`);
console.log(`Port added: "${Name}" ${Number} TCP`);
} catch {
console.log(`Port failed: "${Name}" ${Number} TCP`);
}
break;
case 1: if (!upnpPortList.includes(Name)) {
try { switch (instancePort.Protocol) {
run(`upnpc -e "${Name}" -a ${config.ip} ${Number} ${Number} UDP ${leaseTime}`); case 0:
console.log(`Port added: "${Name}" ${Number} UDP`); try {
} catch { run(`upnpc -e "${Name}" -a ${config.ip} ${Number} ${Number} TCP`);
console.log(`Port failed: "${Name}" ${Number} UDP`); console.log(`Port added: "${Name}" ${Number} TCP`);
} } catch {
break; console.log(`Port failed: "${Name}" ${Number} TCP`);
}
break;
case 2: case 1:
try { try {
run(`upnpc -e "${Name}" -a ${config.ip} ${Number} ${Number} TCP ${leaseTime}`); run(`upnpc -e "${Name}" -a ${config.ip} ${Number} ${Number} UDP`);
console.log(`Port added: "${Name}" ${Number} TCP`); console.log(`Port added: "${Name}" ${Number} UDP`);
} catch { } catch {
console.log(`Port failed: "${Name}" ${Number} TCP`); console.log(`Port failed: "${Name}" ${Number} UDP`);
} }
try { break;
run(`upnpc -e "${Name}" -a ${config.ip} ${Number} ${Number} UDP ${leaseTime}`);
console.log(`Port added: "${Name}" ${Number} UDP`);
} catch {
console.log(`Port failed: "${Name}" ${Number} UDP`);
}
break;
default: case 2:
break; try {
run(`upnpc -e "${Name}" -a ${config.ip} ${Number} ${Number} TCP`);
console.log(`Port added: "${Name}" ${Number} TCP`);
} catch {
console.log(`Port failed: "${Name}" ${Number} TCP`);
}
try {
run(`upnpc -e "${Name}" -a ${config.ip} ${Number} ${Number} UDP`);
console.log(`Port added: "${Name}" ${Number} UDP`);
} catch {
console.log(`Port failed: "${Name}" ${Number} UDP`);
}
break;
default:
break;
}
} }
} }
} }
} }
}
async function main() { // Delete all AMP
await loadConfig(); // for (const portMap of upnpPortList.split('\n')) {
// if (portMap.includes("AMP")) {
// let found = portMap.match(/ *\d+ +(\w+) +(\d+).*/);
// run(`upnpc -d ${found[2]} ${found[1]}`);
// }
// }
mapPorts(await readFile(config.instancesPath)); for (const portMap of upnpPortList.split('\n')) {
if (portMap.includes("AMP") && !instancesJSON.includes(portMap.split("'")[1])) {
let found = portMap.match(/ *\d+ +(\w+) +(\d+).*/);
run(`upnpc -d ${found[2]} ${found[1]}`);
}
}
} }
main(); main();