mirror of
https://github.com/sakaljurgis/pvpn-transmission.git
synced 2026-07-08 20:47:41 +00:00
add docker-compose, open port in firewall
This commit is contained in:
@@ -60,4 +60,11 @@ export class DockerContainer {
|
||||
ip: dataRaw[6],
|
||||
}
|
||||
}
|
||||
|
||||
async setOpenFirewallPort(port: number) {
|
||||
const {exitCode: exit0} = await this.exec(`iptables -A INPUT -i tun0 -p tcp --dport ${port} -j ACCEPT`);
|
||||
const {exitCode: exit1} = await this.exec(`iptables -A INPUT -i tun0 -p udp --dport ${port} -j ACCEPT`);
|
||||
|
||||
return exit0 === 0 && exit1 === 0;
|
||||
}
|
||||
}
|
||||
|
||||
+16
-2
@@ -20,8 +20,14 @@ export async function setPortFlow() {
|
||||
settings.dockerTransmission.cwd,
|
||||
settings.dockerTransmission.serviceName
|
||||
);
|
||||
const gluetunContainer = new DockerContainer(
|
||||
settings.dockerGluetun.service,
|
||||
settings.dockerGluetun.cwd,
|
||||
settings.dockerGluetun.serviceName
|
||||
);
|
||||
|
||||
try {
|
||||
await doSetPortFlow(transmissionClient, transmissionContainer);
|
||||
await doSetPortFlow(transmissionClient, transmissionContainer, gluetunContainer);
|
||||
} catch (e) {
|
||||
console.error('Error in set port flow', e);
|
||||
await downTransmission(transmissionContainer, `Shutting down: error in set port flow.`);
|
||||
@@ -29,7 +35,7 @@ export async function setPortFlow() {
|
||||
await dailyCheckIn();
|
||||
}
|
||||
|
||||
async function doSetPortFlow(transmissionClient: Transmission, transmissionContainer: DockerContainer) {
|
||||
async function doSetPortFlow(transmissionClient: Transmission, transmissionContainer: DockerContainer, gluetunContainer: DockerContainer) {
|
||||
console.log('Starting set port flow');
|
||||
|
||||
const containerState = await transmissionContainer.getState();
|
||||
@@ -102,6 +108,14 @@ async function doSetPortFlow(transmissionClient: Transmission, transmissionConta
|
||||
}
|
||||
|
||||
console.log(`Setting port to ${newPort}`);
|
||||
const resultOK = await gluetunContainer.setOpenFirewallPort(newPort);
|
||||
if (!resultOK) {
|
||||
return await downTransmission(
|
||||
transmissionContainer,
|
||||
`Shutting down: could not open new port in gluetun firewall`,
|
||||
);
|
||||
}
|
||||
console.log(`Port in gluetun firewall opened successfully`);
|
||||
await transmissionClient.setPort(newPort);
|
||||
|
||||
const numPortsChanged = kvDataStorage.get<number>('numPortsChanged') || 0;
|
||||
|
||||
+6
-1
@@ -1,5 +1,5 @@
|
||||
import dotenv from 'dotenv';
|
||||
dotenv.config();
|
||||
dotenv.config({ path: '.env.app'});
|
||||
|
||||
export const settings = {
|
||||
ipInfoCommand: `curl ${process.env.IP_INFO_URL ?? 'https://ipinfo.io'}`,
|
||||
@@ -13,6 +13,11 @@ export const settings = {
|
||||
service: process.env.DOCKER_TRANSMISSION_SERVICE ?? 'transmission',
|
||||
serviceName: process.env.DOCKER_TRANSMISSION_SERVICE_NAME ?? process.env.DOCKER_TRANSMISSION_SERVICE,
|
||||
},
|
||||
dockerGluetun: {
|
||||
cwd: process.env.DOCKER_GLUETUN_CWD ?? __dirname,
|
||||
service: process.env.DOCKER_GLUETUN_SERVICE ?? 'gluetun',
|
||||
serviceName: process.env.DOCKER_GLUETUN_SERVICE_NAME ?? process.env.DOCKER_GLUETUN_SERVICE,
|
||||
},
|
||||
allowedInterfaces: process.env.ALLOWED_INTERFACES?.split(',') ?? [],
|
||||
disallowedCountries: process.env.DISALLOWED_COUNTRIES?.split(',') ?? [],
|
||||
disallowedIntIps: process.env.DISALLOWED_INTERNAL_IPS?.split(',') ?? [],
|
||||
|
||||
Reference in New Issue
Block a user