switch to infinite lease and clenaup

This commit is contained in:
2025-11-27 21:37:50 +01:00
parent 1bdd45660e
commit 502957a3e7
+40 -21
View File
@@ -3,7 +3,6 @@ const path = require('path');
const exec = require("child_process").execSync;
var config = null;
const leaseTime = 3600;
function clone(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) {
if (error) {
// console.log(`error: ${error.message}`);
if (consoleOutput) {
console.log(`error: ${error.message}`);
}
return;
}
if (stderr) {
// console.log(`stderr: ${stderr}`);
if (consoleOutput) {
console.log(`stderr: ${stderr}`);
}
return;
}
// console.log(`stdout: ${stdout}`);
if (consoleOutput) {
console.log(`stdout: ${stdout}`);
}
});
return convertOutput.toString();
}
function mapPorts(instancesJSON) {
portList = [];
async function main() {
await loadConfig();
instances = JSON.parse(instancesJSON);
for (const instance of instances) {
instancesJSON = await readFile(config.instancesPath);
instancesPorts = "";
upnpPortList = run('upnpc -l');
// console.log(upnpPortList);
for (const instance of JSON.parse(instancesJSON)) {
if (instance.DeploymentArgs['GenericModule.App.Ports'] != undefined) {
instancePorts = JSON.parse(instance.DeploymentArgs['GenericModule.App.Ports']);
// 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 Number = instancePort.Port;
instancesPorts = `${Name}\n`;
if (!upnpPortList.includes(Name)) {
switch (instancePort.Protocol) {
case 0:
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`);
} catch {
console.log(`Port failed: "${Name}" ${Number} TCP`);
@@ -110,7 +119,7 @@ function mapPorts(instancesJSON) {
case 1:
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`);
} catch {
console.log(`Port failed: "${Name}" ${Number} UDP`);
@@ -119,13 +128,13 @@ function mapPorts(instancesJSON) {
case 2:
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`);
} catch {
console.log(`Port failed: "${Name}" ${Number} TCP`);
}
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`);
} catch {
console.log(`Port failed: "${Name}" ${Number} UDP`);
@@ -140,10 +149,20 @@ function mapPorts(instancesJSON) {
}
}
async function main() {
await loadConfig();
// Delete all AMP
// 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();