switch to infinite lease and clenaup

This commit is contained in:
2025-11-27 21:37:50 +01:00
parent 1bdd45660e
commit 502957a3e7
+41 -22
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,40 +67,50 @@ 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;
instancesPorts = `${Name}\n`;
if (!upnpPortList.includes(Name)) {
switch (instancePort.Protocol) { switch (instancePort.Protocol) {
case 0: case 0:
try { try {
run(`upnpc -e "${Name}" -a ${config.ip} ${Number} ${Number} TCP ${leaseTime}`); run(`upnpc -e "${Name}" -a ${config.ip} ${Number} ${Number} TCP`);
console.log(`Port added: "${Name}" ${Number} TCP`); console.log(`Port added: "${Name}" ${Number} TCP`);
} catch { } catch {
console.log(`Port failed: "${Name}" ${Number} TCP`); console.log(`Port failed: "${Name}" ${Number} TCP`);
@@ -110,7 +119,7 @@ function mapPorts(instancesJSON) {
case 1: case 1:
try { try {
run(`upnpc -e "${Name}" -a ${config.ip} ${Number} ${Number} UDP ${leaseTime}`); run(`upnpc -e "${Name}" -a ${config.ip} ${Number} ${Number} UDP`);
console.log(`Port added: "${Name}" ${Number} UDP`); console.log(`Port added: "${Name}" ${Number} UDP`);
} catch { } catch {
console.log(`Port failed: "${Name}" ${Number} UDP`); console.log(`Port failed: "${Name}" ${Number} UDP`);
@@ -119,13 +128,13 @@ function mapPorts(instancesJSON) {
case 2: case 2:
try { try {
run(`upnpc -e "${Name}" -a ${config.ip} ${Number} ${Number} TCP ${leaseTime}`); run(`upnpc -e "${Name}" -a ${config.ip} ${Number} ${Number} TCP`);
console.log(`Port added: "${Name}" ${Number} TCP`); console.log(`Port added: "${Name}" ${Number} TCP`);
} catch { } catch {
console.log(`Port failed: "${Name}" ${Number} TCP`); console.log(`Port failed: "${Name}" ${Number} TCP`);
} }
try { try {
run(`upnpc -e "${Name}" -a ${config.ip} ${Number} ${Number} UDP ${leaseTime}`); run(`upnpc -e "${Name}" -a ${config.ip} ${Number} ${Number} UDP`);
console.log(`Port added: "${Name}" ${Number} UDP`); console.log(`Port added: "${Name}" ${Number} UDP`);
} catch { } catch {
console.log(`Port failed: "${Name}" ${Number} UDP`); console.log(`Port failed: "${Name}" ${Number} UDP`);
@@ -138,12 +147,22 @@ function mapPorts(instancesJSON) {
} }
} }
} }
} }
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();