switch to infinite lease and clenaup
This commit is contained in:
+41
-22
@@ -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();
|
||||||
Reference in New Issue
Block a user