From c063ba1cc1f3345079b40a362bef78f5720a6678 Mon Sep 17 00:00:00 2001 From: SachinAsus Date: Sun, 25 Feb 2024 10:22:17 +0530 Subject: [PATCH] make change to working on daily --- src/config.js | 32 +++++++++++++++----------------- src/lib/WireGuard.js | 7 ++++++- test.js | 9 +++++++++ wgsh/wg-post-down.sh.bak | 25 +++++++++++++++++++++++++ wgsh/wg-post-up.sh | 15 +++++++++++++++ wgsh/wg-pre-down.sh | 28 ++++++++++++++++++++++++++++ wgsh/wg-pre-up.sh | 24 ++++++++++++++++++++++++ wgsh/wg0-post-down.sh | 27 +++++++++++++++++++++++++++ wgsh/wg0-post-up.sh | 29 +++++++++++++++++++++++++++++ 9 files changed, 178 insertions(+), 18 deletions(-) create mode 100644 test.js create mode 100644 wgsh/wg-post-down.sh.bak create mode 100644 wgsh/wg-post-up.sh create mode 100644 wgsh/wg-pre-down.sh create mode 100644 wgsh/wg-pre-up.sh create mode 100644 wgsh/wg0-post-down.sh create mode 100644 wgsh/wg0-post-up.sh diff --git a/src/config.js b/src/config.js index 09fbcf3e..edc72e53 100644 --- a/src/config.js +++ b/src/config.js @@ -1,31 +1,29 @@ 'use strict'; const { release } = require('./package.json'); +const path = require('path'); +const dirFullPath = path.resolve(__dirname); module.exports.RELEASE = release; module.exports.PORT = process.env.PORT || 51821; module.exports.WEBUI_HOST = process.env.WEBUI_HOST || '0.0.0.0'; -module.exports.PASSWORD = process.env.PASSWORD; +module.exports.PASSWORD = process.env.PASSWORD || ''; module.exports.WG_PATH = process.env.WG_PATH || '/etc/wireguard/'; -module.exports.WG_DEVICE = process.env.WG_DEVICE || 'eth0'; -module.exports.WG_HOST = process.env.WG_HOST; -module.exports.WG_PORT = process.env.WG_PORT || 51820; -module.exports.WG_MTU = process.env.WG_MTU || null; -module.exports.WG_PERSISTENT_KEEPALIVE = process.env.WG_PERSISTENT_KEEPALIVE || 0; -module.exports.WG_DEFAULT_ADDRESS = process.env.WG_DEFAULT_ADDRESS || '10.8.0.x'; +module.exports.WG_DEVICE = process.env.WG_DEVICE || 'ens3'; +module.exports.WG_HOST = process.env.WG_HOST || 'oracle-test.duckdns.org'; +module.exports.WG_PORT = 51820; +module.exports.WG_MTU = process.env.WG_MTU || 1412; +module.exports.WG_PERSISTENT_KEEPALIVE = process.env.WG_PERSISTENT_KEEPALIVE || 25; +module.exports.WG_DEFAULT_ADDRESS = process.env.WG_DEFAULT_ADDRESS || '10.250.1.x'; module.exports.WG_DEFAULT_DNS = typeof process.env.WG_DEFAULT_DNS === 'string' ? process.env.WG_DEFAULT_DNS - : '1.1.1.1'; -module.exports.WG_ALLOWED_IPS = process.env.WG_ALLOWED_IPS || '0.0.0.0/0, ::/0'; + : '10.250.0.2'; +module.exports.WG_ALLOWED_IPS = process.env.WG_ALLOWED_IPS || '10.250.0.0/22, 10.254.1.0/24'; module.exports.WG_PRE_UP = process.env.WG_PRE_UP || ''; -module.exports.WG_POST_UP = process.env.WG_POST_UP || ` -iptables -t nat -A POSTROUTING -s ${module.exports.WG_DEFAULT_ADDRESS.replace('x', '0')}/24 -o ${module.exports.WG_DEVICE} -j MASQUERADE; -iptables -A INPUT -p udp -m udp --dport 51820 -j ACCEPT; -iptables -A FORWARD -i wg0 -j ACCEPT; -iptables -A FORWARD -o wg0 -j ACCEPT; -`.split('\n').join(' '); +// module.exports.WG_POST_UP = '/app/wg0-post-up.sh'; +module.exports.WG_POST_UP = path.resolve(__dirname, './wgsh/wg0-post-up.sh'); -module.exports.WG_PRE_DOWN = process.env.WG_PRE_DOWN || ''; -module.exports.WG_POST_DOWN = process.env.WG_POST_DOWN || ''; +module.exports.WG_PRE_DOWN = path.resolve(__dirname, './wgsh/wg0-pre-down.sh'); +module.exports.WG_POST_DOWN = process.env.WG_PRE_DOWN || ''; module.exports.LANG = process.env.LANG || 'en'; diff --git a/src/lib/WireGuard.js b/src/lib/WireGuard.js index f72c3a23..e93c7b78 100644 --- a/src/lib/WireGuard.js +++ b/src/lib/WireGuard.js @@ -95,7 +95,12 @@ module.exports = class WireGuard { [Interface] PrivateKey = ${config.server.privateKey} Address = ${config.server.address}/24 -ListenPort = 51820 +ListenPort = ${WG_PORT} +${WG_DEFAULT_DNS ? `DNS = ${WG_DEFAULT_DNS}\n` : ''}\ +${WG_MTU ? `MTU = ${WG_MTU}\n` : ''}\ +Table = 10 +# DNS = ${WG_DEFAULT_ADDRESS} +FwMark = ${WG_PORT} PreUp = ${WG_PRE_UP} PostUp = ${WG_POST_UP} PreDown = ${WG_PRE_DOWN} diff --git a/test.js b/test.js new file mode 100644 index 00000000..ae0cb0d5 --- /dev/null +++ b/test.js @@ -0,0 +1,9 @@ +const path = require('path'); + +// Relative path to the file +const relativePath = './app/wg0-post-up.sh'; + +// Resolve the full path +const fullPath = path.resolve(__dirname, relativePath); + +console.log('Full path of ./app/wg0-post-up.sh:', fullPath); \ No newline at end of file diff --git a/wgsh/wg-post-down.sh.bak b/wgsh/wg-post-down.sh.bak new file mode 100644 index 00000000..d2f2c8e0 --- /dev/null +++ b/wgsh/wg-post-down.sh.bak @@ -0,0 +1,25 @@ +#!/bin/bash +set +e + +IPT="/sbin/iptables" + +IN_FACE="ens3" # NIC connected to the internet +WG_FACE="wg1" # WG NIC +SUB_NET="10.250.1.0/24" # WG IPv4 sub/net aka CIDR +WG_PORT="51820" # WG udp port +#SUB_NET_6="fd42:42:42::/64" # WG IPv6 sub/net + +# IPv4 rules # +$IPT -t nat -D POSTROUTING -s 0.0.0.0/1 -o $IN_FACE -j MASQUERADE +$IPT -D FORWARD -i $WG_FACE -j ACCEPT +$IPT -D FORWARD -o $WG_FACE -j ACCEPT + +# $IPT -D OUTPUT -o $WG_FACE -j ACCEPT +# $IPT -D FORWARD -i $IN_FACE -o $WG_FACE -j ACCEPT +# $IPT -D FORWARD -i $WG_FACE -o $IN_FACE -j ACCEPT +# $IPT -D INPUT -i $IN_FACE -p udp --dport $WG_PORT -j ACCEPT + +ip route del 10.250.1.0/24 via 10.250.1.1 dev wg0 table wg priority 1 +ip route del 10.254.1.0/24 via 10.254.1.1 dev ens3 table wg priority 2 + +set -e \ No newline at end of file diff --git a/wgsh/wg-post-up.sh b/wgsh/wg-post-up.sh new file mode 100644 index 00000000..ac315750 --- /dev/null +++ b/wgsh/wg-post-up.sh @@ -0,0 +1,15 @@ +#!/bin/bash +set +e + +IPT="/sbin/iptables" + +IN_FACE="ens3" # NIC connected to the internet +WG_FACE="wg1" # WG NIC +SUB_NET="10.250.1.0/24" # WG IPv4 sub/net aka CIDR +WG_PORT="51820" # WG udp port + +$IPT -t nat -I POSTROUTING 1 -s $SUB_NET -o $WG_FACE -j MASQUERADE +$IPT -I FORWARD 1 -i $WG_FACE -o wg0 -j ACCEPT #for internet +$IPT -I FORWARD 1 -i wg0 -o $WG_FACE -j ACCEPT #for internet +wg set wg0 fwmark 51820 +set -e \ No newline at end of file diff --git a/wgsh/wg-pre-down.sh b/wgsh/wg-pre-down.sh new file mode 100644 index 00000000..857a7b51 --- /dev/null +++ b/wgsh/wg-pre-down.sh @@ -0,0 +1,28 @@ +#!/bin/bash +set +e + +IPT="/sbin/iptables" + +IN_FACE="ens3" # NIC connected to the internet +WG_FACE="wg1" # WG NIC +SUB_NET="10.250.1.0/24" # WG IPv4 sub/net aka CIDR +WG_PORT="51820" # WG udp port +#SUB_NET_6="fd42:42:42::/64" # WG IPv6 sub/net + +# IPv4 rules # +$IPT -t nat -D POSTROUTING -s $SUB_NET -o $WG_FACE -j MASQUERADE +$IPT -D FORWARD -i $WG_FACE -o wg0 -j ACCEPT #for internet +$IPT -D FORWARD -i wg0 -o $WG_FACE -j ACCEPT #for internet + +# $IPT -t nat -D POSTROUTING -s 0.0.0.0/1 -o $IN_FACE -j MASQUERADE +# $IPT -D OUTPUT -o $WG_FACE -j ACCEPT +# $IPT -D FORWARD -i $WG_FACE -j ACCEPT +# $IPT -D FORWARD -o $WG_FACE -j ACCEPT +# $IPT -D FORWARD -i $IN_FACE -o $WG_FACE -j ACCEPT +# $IPT -D FORWARD -i $WG_FACE -o $IN_FACE -j ACCEPT +# $IPT -D INPUT -i $IN_FACE -p udp --dport $WG_PORT -j ACCEPT + +# ip route del 10.250.1.0/24 via 10.250.1.1 dev wg0 table wg priority 1 +# ip route del 10.254.1.0/24 via 10.254.1.1 dev ens3 table wg priority 2 + +set -e \ No newline at end of file diff --git a/wgsh/wg-pre-up.sh b/wgsh/wg-pre-up.sh new file mode 100644 index 00000000..c453958f --- /dev/null +++ b/wgsh/wg-pre-up.sh @@ -0,0 +1,24 @@ +#!/bin/bash +set +e + +IPT="/sbin/iptables" +IPT6="/sbin/ip6tables" + +IN_FACE="ens3" # NIC connected to the internet +WG_FACE="wg0" # WG NIC +SUB_NET="10.250.1.0/24" # WG IPv4 sub/net aka CIDR +#SUB_NET_6="fd42:42:42::/64" # WG IPv6 sub/net + +# IPv4 rules # +$IPT -t nat -D POSTROUTING -s $SUB_NET -o $IN_FACE -j MASQUERADE +$IPT -D FORWARD -i $IN_FACE -o $WG_FACE -j ACCEPT +$IPT -D FORWARD -i $WG_FACE -o $IN_FACE -j ACCEPT +# ip rule del from all lookup $WG_TABLE pref 10 + +# IPv6 rules (uncomment) # +# $IPT6 -t nat -D POSTROUTING -s $SUB_NET_6 -o $IN_FACE -j MASQUERADE +# $IPT6 -D INPUT -i $WG_FACE -j ACCEPT +# $IPT6 -D FORWARD -i $IN_FACE -o $WG_FACE -j ACCEPT +# $IPT6 -D FORWARD -i $WG_FACE -o $IN_FACE -j ACCEPT + +set -e \ No newline at end of file diff --git a/wgsh/wg0-post-down.sh b/wgsh/wg0-post-down.sh new file mode 100644 index 00000000..24a3cac7 --- /dev/null +++ b/wgsh/wg0-post-down.sh @@ -0,0 +1,27 @@ +#!/bin/bash +set +e + +IPT="/sbin/iptables" +IPT6="/sbin/ip6tables" + +IN_FACE="ens3" # NIC connected to the internet +WG_FACE="wg0" # WG NIC +SUB_NET="10.250.1.0/24" # WG IPv4 sub/net aka CIDR +#SUB_NET_6="fd42:42:42::/64" # WG IPv6 sub/net +WG_PORT="61820" # WG udp port +WG_TABLE='10' + +# IPv4 rules # +$IPT -t nat -D POSTROUTING -s $SUB_NET -o $IN_FACE -j MASQUERADE +$IPT -D FORWARD -i $IN_FACE -o $WG_FACE -j ACCEPT +$IPT -D FORWARD -i $WG_FACE -o $IN_FACE -j ACCEPT +$IPT -D INPUT -i $IN_FACE -p udp --dport $WG_PORT -j ACCEPT +ip rule del from all lookup $WG_TABLE pref 10 + +# IPv6 rules (uncomment) # +# $IPT6 -t nat -D POSTROUTING -s $SUB_NET_6 -o $IN_FACE -j MASQUERADE +# $IPT6 -D INPUT -i $WG_FACE -j ACCEPT +# $IPT6 -D FORWARD -i $IN_FACE -o $WG_FACE -j ACCEPT +# $IPT6 -D FORWARD -i $WG_FACE -o $IN_FACE -j ACCEPT + +set -e \ No newline at end of file diff --git a/wgsh/wg0-post-up.sh b/wgsh/wg0-post-up.sh new file mode 100644 index 00000000..60b5e9d7 --- /dev/null +++ b/wgsh/wg0-post-up.sh @@ -0,0 +1,29 @@ +#!/bin/bash +set +e + +IPT="/sbin/iptables" +IPT6="/sbin/ip6tables" + +IN_FACE="ens3" # NIC connected to the internet +WG_FACE="wg0" # WG NIC +SUB_NET="10.250.1.0/24" # WG IPv4 sub/net aka CIDR +# SUB_NET_6="" # Change this according +WG_PORT="51820" # WG udp port +WG_TABLE='10' + +## IPv4 ## working with single tunnel +$IPT -t nat -I POSTROUTING 1 -s $SUB_NET -o $IN_FACE -j MASQUERADE +$IPT -I FORWARD 1 -i $IN_FACE -o $WG_FACE -j ACCEPT #for internet +$IPT -I FORWARD 1 -i $WG_FACE -o $IN_FACE -j ACCEPT #for internet +$IPT -I INPUT 1 -i $IN_FACE -p udp --dport $WG_PORT -j ACCEPT # for incoming connection +$IPT -I INPUT 1 -i $IN_FACE -p tcp --dport 51821 -j ACCEPT +# $IPT -I INPUT 1 -i $WG_FACE -p tcp --dport 51821 -j ACCEPT +wg set wg0 fwmark 51820 + +## IPv6 (Uncomment) ## +# $IPT6 -t nat -I POSTROUTING 1 -s $SUB_NET_6 -o $IN_FACE -j MASQUERADE +# $IPT6 -I INPUT 1 -i $WG_FACE -j ACCEPT +# $IPT6 -I FORWARD 1 -i $IN_FACE -o $WG_FACE -j ACCEPT +# $IPT6 -I FORWARD 1 -i $WG_FACE -o $IN_FACE -j ACCEPT + +set -e \ No newline at end of file