Compare commits

..

68 Commits

Author SHA1 Message Date
mercury ece8fb75d5 Merge branch 'master' into singbox 2024-08-26 23:31:05 +04:00
mercury a82147eeda update version 2024-08-26 23:23:09 +04:00
mercury 6bd21d06c0 fix list actions 2024-08-26 23:19:31 +04:00
mercury 3416cda826 qr for singbox 2024-08-25 23:30:19 +04:00
mercury 75c0a6a294 Merge branch 'master' into singbox 2024-08-21 23:06:02 +04:00
mercury 2e40daf0c4 update version 2024-08-21 23:04:58 +04:00
mercury 9e2b0c041a Merge branch 'dev' into singbox 2024-08-21 23:01:27 +04:00
mercury 9c40b04392 custom outbound for ruleset 2024-08-18 20:01:53 +04:00
mercury 108a048f5a Merge branch 'dev' into singbox 2024-08-18 11:54:39 +04:00
mercury 1217ea7a09 fix empty packagelist 2024-08-18 11:54:12 +04:00
mercury a6ec5b041c Merge branch 'dev' into singbox 2024-08-18 02:15:42 +04:00
mercury 7f6d462f22 fix name for short link vless 2024-08-18 02:11:05 +04:00
mercury f55bf31c07 Merge branch 'master' into singbox 2024-08-18 02:02:43 +04:00
mercury 47876ecdb4 rule package_name separately 2024-08-18 02:00:09 +04:00
mercury b5a40fa0cc Merge branch 'master' into singbox 2024-08-16 22:28:46 +04:00
mercury 7e79f591c3 Merge branch 'master' into singbox 2024-08-16 22:27:31 +04:00
mercury 66f03709fc Merge branch 'master' into dev 2024-08-16 22:27:14 +04:00
mercury 42aafc6427 update version 2024-08-16 22:26:42 +04:00
mercury 1674f6929e fix ruleset list key 2024-08-16 22:24:23 +04:00
mercury 12babef21e Merge branch 'master' into singbox 2024-08-16 12:21:39 +04:00
mercury 5791cabfb5 update version 2024-08-16 12:12:07 +04:00
mercury 49d2d21f41 fix changelist 2024-08-16 11:41:42 +04:00
mercury 5263de514e fix naming ruleset 2024-08-16 11:24:51 +04:00
mercury 9da810ba3d fix empty rules route 2024-08-16 02:21:29 +04:00
mercury b663eca445 routes for sinbox 2024-08-16 02:08:44 +04:00
mercury f8f95e22ac backup for domain lists 2024-08-15 10:40:20 +04:00
mercury 30f0f8c5f0 fix selfpac update 2024-08-15 01:07:31 +04:00
mercury 741f402ca1 fix singbox import 2024-08-15 00:13:41 +04:00
mercury b6e078adc0 Merge branch 'master' into singbox 2024-08-10 00:00:46 +04:00
mercury ef3d40c098 update version 2024-08-09 23:59:48 +04:00
mercury ded85fb79f fix "delete all" 2024-08-09 23:56:57 +04:00
mercury 31a5415e1f Merge branch 'dev' into singbox 2024-08-08 17:13:46 +04:00
mercury b5ca5fbf93 mirror 2024-08-08 17:11:26 +04:00
mercury 570420274e improve updatepac 2024-08-08 12:45:44 +04:00
mercury 7df97c6ca1 update singbox 2024-08-08 12:43:55 +04:00
mercury 638fcf35d7 improve updatepac 2024-08-08 11:26:14 +04:00
mercury 07022b1697 Merge branch 'dev' into singbox 2024-08-06 22:03:22 +04:00
mercury baaf0e2d01 clear pac list button 2024-08-06 21:58:08 +04:00
mercury f2bfad7c80 Merge branch 'dev' into singbox 2024-08-05 01:48:39 +04:00
mercury be8bec6a7d fix ocserv pass 2024-08-04 11:51:01 +04:00
mercury 4d6f59bc06 Merge branch 'master' into singbox 2024-08-03 11:44:17 +04:00
mercury fe42515617 Merge branch 'master' into singbox 2024-07-07 15:38:48 +04:00
mercury 7e05806f6e Merge branch 'dev' into singbox 2024-05-28 14:47:08 +04:00
mercury 149ce068bf Merge branch 'dev' into singbox 2024-05-18 17:20:19 +04:00
mercury 144366ce9d singbox 1.8.13 2024-05-08 18:19:57 +04:00
mercury 12b42d16b9 Merge branch 'dev' into singbox 2024-05-08 00:41:24 +04:00
mercury 2d94504aa3 outbounds auto fill 2024-05-08 00:40:31 +04:00
mercury d99ddc7ad9 Merge branch 'master' into singbox 2024-05-04 13:02:15 +04:00
mercury a1ac552c3e fix start singbox 2024-05-04 12:09:52 +04:00
mercury 95c9d40b00 Merge branch 'dev' into singbox 2024-05-01 18:42:05 +04:00
mercury af88237ddc Merge branch 'master' into singbox 2024-05-01 17:55:56 +04:00
mercury 102ce5b0a5 delete trojan 2024-05-01 16:25:42 +04:00
mercury a72db227f0 Merge branch 'master' into singbox 2024-04-29 23:15:18 +04:00
mercury e52fa68edd Merge branch 'master' into singbox 2024-04-29 22:52:55 +04:00
mercury 8dba00c9f7 improve choice template 2024-04-29 22:44:27 +04:00
mercury 381e6a9dba choice singbox inbound type 2024-04-29 21:25:06 +04:00
mercury 08e001bcb0 chmod +x *.sh 2024-04-29 20:27:26 +04:00
mercury c5a35e43be fix import xray 2024-04-28 23:24:27 +04:00
mercury eb0d0bb59f fix nginx pid 2024-04-28 23:14:29 +04:00
mercury 7316d49af8 timer singbox user fix 2024-04-28 23:08:48 +04:00
mercury c1a637ac29 xray menu improve 2024-04-28 23:03:17 +04:00
mercury 98d1961669 migrate export xray to singbox 2024-04-28 22:55:55 +04:00
mercury 08f0babed6 fix sinbox users actions 2024-04-27 17:46:08 +04:00
mercury f2897d4b07 return proxy_protocol without singbox 2024-04-26 14:45:33 +04:00
mercury b728553db5 fix sshd warp 2024-04-25 15:13:48 +04:00
mercury 9742cecf51 remove proxy_protocol 2024-04-24 17:53:23 +04:00
mercury 2ed3dfb6dd fix links 2024-04-24 12:32:19 +04:00
mercury 0cc49a89e5 singbox core 2024-04-24 01:06:44 +04:00
20 changed files with 982 additions and 551 deletions
+831 -267
View File
File diff suppressed because it is too large Load Diff
+4 -4
View File
@@ -2,8 +2,8 @@
$i = [
'warp' => [
'en' => 'Warp',
'ru' => 'Warp',
'en' => 'warp',
'ru' => 'warp',
],
'wg_title' => [
'en' => 'Wireguard',
@@ -262,8 +262,8 @@ $i = [
'ru' => 'очистить',
],
'xray' => [
'en' => 'XTLS-Reality',
'ru' => 'XTLS-Reality',
'en' => 'Sing-box',
'ru' => 'Sing-box',
],
'geodb' => [
'en' => 'GeoIp/GeoSite',
+6 -3
View File
@@ -17,10 +17,13 @@ if ('POST' == $_SERVER['REQUEST_METHOD'] && $_GET['k'] == $c['key']) {
}
// pac
$type = $_GET['t'] ?? 'pac';
if (!empty($t = unserialize(base64_decode(explode('/', $_SERVER['REQUEST_URI'])[2])))) { // fix sing-box import
$_GET = array_merge($_GET, $t);
}
$type = $_GET['t'] ?? 'pac';
$address = $_GET['a'] ?: '127.0.0.1';
$port = $_GET['p'] ?: '1080';
$hash = $_GET['h'];
$port = $_GET['p'] ?: '1080';
$hash = $_GET['h'];
if ($hash == substr(md5($c['key']), 0, 8)) {
require __DIR__ . '/bot.php';
require __DIR__ . '/i18n.php';
+12 -6
View File
@@ -89,11 +89,14 @@ function start()
$conf = $bot->getPacConf();
$subzones = array_keys(array_filter($conf['subzoneslist'], fn($x) => $x == true));
if (!empty($conf['subzoneslist'])) {
$subzones = array_keys(array_filter($conf['subzoneslist'], fn($x) => $x == true));
}
// check && exclude
$include = array_filter($conf['includelist'], fn($x) => $x == true);
$domains = $include;
if (!empty($conf['includelist'])) {
$domains = array_filter($conf['includelist'], fn($x) => $x == true);
}
if (empty($domains)) {
$text = "Empty domains. Delete pac files";
unlink(__DIR__ . '/zapretlists/mpac');
@@ -146,10 +149,13 @@ function start()
file_put_contents(__DIR__ . '/zapretlists/pac', $pac);
$text .= "Create minified pac 100%\n";
}
// create reverse PAC
$domains = array_filter($conf['reverselist'], fn($x) => $x == true);
unset($domains);
if (!empty($conf['reverselist'])) {
$domains = array_filter($conf['reverselist'], fn($x) => $x == true);
}
if (empty($domains)) {
// $text .= "Empty reverse domains. Delete reverse pac files";
unlink(__DIR__ . '/zapretlists/rmpac');
unlink(__DIR__ . '/zapretlists/rpac');
@@ -197,6 +203,7 @@ function start()
file_put_contents(__DIR__ . '/zapretlists/rpac', $pac);
$text .= 'Create minified reverse pac 100%';
}
endScript($text);
}
@@ -242,7 +249,6 @@ $load = [
'-',
'\\',
];
switch ($_SERVER['argv'][1]) {
case 'start':
$bot = new Bot($c['key'], $i);
+4 -6
View File
@@ -2,7 +2,6 @@ user nginx;
worker_processes auto;
error_log /logs/nginx_error;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
@@ -22,8 +21,8 @@ http {
set_real_ip_from 10.10.0.10;
server {
listen 10.10.0.2:80 default_server;
listen 10.10.0.2:443 ssl http2 default_server proxy_protocol;
listen 80 default_server;
listen 443 ssl http2 default_server proxy_protocol;
ssl_certificate /certs/self_public;
ssl_certificate_key /certs/self_private;
@@ -75,12 +74,11 @@ http {
#-domain
# server {
# listen 10.10.0.2:80;
# listen 80;
# server_name ;
#-domain
#-ssl
# listen 10.10.0.2:443 ssl http2 proxy_protocol;
# listen 10.10.1.2:443 ssl http2;
# listen 443 ssl http2 proxy_protocol;
# ssl_certificate /certs/cert_public;
# ssl_certificate_key /certs/cert_private;
#-ssl
+4 -6
View File
@@ -2,7 +2,6 @@ user nginx;
worker_processes auto;
error_log /logs/nginx_error;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
@@ -22,8 +21,8 @@ http {
set_real_ip_from 10.10.0.10;
server {
listen 10.10.0.2:80 default_server;
listen 10.10.0.2:443 ssl http2 default_server proxy_protocol;
listen 80 default_server;
listen 443 ssl http2 default_server proxy_protocol;
ssl_certificate /certs/self_public;
ssl_certificate_key /certs/self_private;
@@ -75,12 +74,11 @@ http {
#-domain
# server {
# listen 10.10.0.2:80;
# listen 80;
# server_name ;
#-domain
#-ssl
# listen 10.10.0.2:443 ssl http2 proxy_protocol;
# listen 10.10.1.2:443 ssl http2;
# listen 443 ssl http2 proxy_protocol;
# ssl_certificate /certs/cert_public;
# ssl_certificate_key /certs/cert_private;
#-ssl
+2 -98
View File
@@ -1,99 +1,3 @@
{
"zapret": false,
"excludelist": {
"(?:v|w)ul(?:c|k)an": true,
"^\\d": true,
"^a\\w-": true,
"^admiral": true,
"^avtomaty": true,
"^azart": true,
"^azimob": true,
"^baltplay": true,
"a(?:s|z)ino": true,
"adrenalin": true,
"alco": true,
"bet": true,
"prostitut": true,
"zenit": true,
"zerkalo": true,
"777": true
},
"includelist": {},
"reverselist": {},
"subzoneslist": {
"3dn": false,
"3nx": true,
"akadns": true,
"appspot": true,
"azurewebsites": true,
"beget": true,
"berlogovo": true,
"biz": true,
"brightcove": true,
"cc": true,
"cloudfront": true,
"co": true,
"com": true,
"cu": true,
"ddns": true,
"deviantart": true,
"dn": true,
"dp": true,
"dyndns": true,
"edgecastcdn": true,
"edu": true,
"eu": true,
"fastly": true,
"force": true,
"github": true,
"google": true,
"googleusercontent": true,
"gov": true,
"herokuapp": true,
"hldns": true,
"ho": true,
"hopto": true,
"hwcdn": true,
"i": true,
"iboards": true,
"in": true,
"info": true,
"int": true,
"itch": true,
"keenetic": true,
"kiev": true,
"kirov": true,
"linode": true,
"livejournal": true,
"maryno": true,
"mil": true,
"msk": true,
"my1": true,
"mybb2": true,
"ne": true,
"net": true,
"netdna-ssl": true,
"nnov": true,
"notion": true,
"nov": true,
"od": true,
"org": true,
"pp": true,
"pximg": true,
"pythonanywhere": true,
"ru": true,
"scaleway": true,
"sl": true,
"sl-reverse": true,
"spb": true,
"tilda": true,
"trafficmanager": true,
"tut": true,
"u-stream": true,
"ucoz": true,
"v": true,
"vercel": true,
"wix": true,
"wixmp": true
}
}
"includelist": []
}
+28 -46
View File
@@ -54,54 +54,10 @@
"detour": "direct"
}
],
"rules": [
{
"outbound": "any",
"server": "dns-direct",
"disable_cache": false
}
],
"strategy": "ipv4_only",
"independent_cache": true
},
"outbounds": [
{
"flow": "xtls-rprx-vision",
"packet_encoding": "",
"server": "",
"server_port": 443,
"tls": {
"enabled": true,
"insecure": false,
"reality": {
"enabled": true,
"public_key": "",
"short_id": ""
},
"server_name": "",
"utls": {
"enabled": true,
"fingerprint": "chrome"
}
},
"uuid": "",
"type": "vless",
"domain_strategy": "ipv4_only",
"tag": "proxy"
},
{
"type": "direct",
"tag": "direct"
},
{
"type": "block",
"tag": "block"
},
{
"type": "dns",
"tag": "dns-out"
}
],
"outbounds": [],
"route": {
"auto_detect_interface": true,
"override_android_vpn": true,
@@ -113,16 +69,42 @@
{
"createruleset": [
{
"name": "selfpac",
"name": "pac",
"interval": "15s",
"rules": [
{
"domain_suffix": "~pac~"
}
]
},
{
"name": "warp",
"interval": "15s",
"rules": [
{
"domain_suffix": "~warp~"
}
]
}
],
"outbound": "proxy"
},
{
"createruleset": [
{
"name": "block",
"interval": "15s",
"rules": [
{
"domain_suffix": "~block~"
}
]
}
],
"outbound": "block"
},
{
"outbound": "direct"
}
],
"final": "direct"
+26
View File
@@ -0,0 +1,26 @@
{
"inbounds": [],
"log": {
"level": "info"
},
"outbounds": [
{
"type": "direct",
"tag": "direct"
},
{
"type": "block",
"tag": "block"
},
{
"type": "socks",
"tag": "warp",
"server": "10.10.0.13",
"server_port": 4000
}
],
"route" : {
"rules": [],
"final": "direct"
}
}
+14 -5
View File
@@ -15,8 +15,12 @@ stream {
server ng:443;
}
upstream reality {
server xr:443;
upstream si {
server si:443;
}
upstream singbox {
server 127.0.0.1:4443;
}
upstream ocserv {
@@ -30,7 +34,7 @@ stream {
map_hash_bucket_size 128;
map $ssl_preread_server_name $sni_name {
#domain
www.microsoft.com reality;
vk.com singbox;
#domain
#ocserv
@@ -43,17 +47,22 @@ stream {
default other;
}
server {
listen 4443 reuseport proxy_protocol;
proxy_pass si;
}
server {
listen 443 reuseport;
proxy_pass $sni_name;
proxy_protocol on;
ssl_preread on;
proxy_protocol on;
}
server {
listen 443 udp;
proxy_pass $sni_name;
proxy_protocol on;
ssl_preread on;
proxy_protocol on;
}
}
-61
View File
@@ -1,61 +0,0 @@
{
"inbounds": [
{
"port": 443,
"protocol": "vless",
"settings": {
"clients": [
],
"decryption": "none"
},
"sniffing": {
"destOverride": [
"http",
"tls"
],
"enabled": true
},
"streamSettings": {
"network": "tcp",
"realitySettings": {
"dest": "www.microsoft.com:443",
"maxClientVer": "",
"maxTimeDiff": 0,
"minClientVer": "",
"privateKey": "",
"serverNames": [
"www.microsoft.com"
],
"shortIds": [],
"show": false,
"xver": 0
},
"tcpSettings": {
"acceptProxyProtocol": true
},
"sockopt": {
"acceptProxyProtocol": true
},
"security": "reality"
},
"tag": "vless_tls"
}
],
"log": {
"loglevel": "info"
},
"outbounds": [
{
"protocol": "freedom",
"tag": "direct"
},
{
"protocol": "blackhole",
"tag": "block"
}
],
"routing": {
"domainStrategy": "AsIs",
"rules": []
}
}
+12 -21
View File
@@ -10,10 +10,6 @@ networks:
ipam:
config:
- subnet: 10.10.0.0/24
xray:
ipam:
config:
- subnet: 10.10.1.0/24
volumes:
adguard:
@@ -27,9 +23,9 @@ services:
image: ${IMAGE}
volumes:
- ./config/.profile:/root/.ashrc:ro
- ./config/upstream.conf:/etc/nginx/nginx.conf
- ./scripts/start_upstream.sh:/start_upstream.sh
- ./ssh:/ssh
- ./config:/config
- ./config/sshd_config:/etc/ssh/sshd_config
- ./logs/:/logs/
ports:
@@ -63,9 +59,7 @@ services:
image: ${IMAGE}
volumes:
- ./config/.profile:/root/.ashrc:ro
- ./config/nginx.conf:/etc/nginx/nginx.conf
- ./config/include.conf:/etc/nginx/include.conf
- ./config/nginx_default.conf:/nginx_default.conf
- ./config:/config
- ./scripts/start_ng.sh:/start_ng.sh
- ./certs/:/certs/
- ./ssh:/ssh
@@ -89,8 +83,6 @@ services:
networks:
default:
ipv4_address: 10.10.0.2
xray:
ipv4_address: 10.10.1.2
logging: *default-logging
php:
image: mercurykd/vpnbot-php:1.5
@@ -187,7 +179,7 @@ services:
- ad
- ss
- tg
- xr
- si
- oc
- np
proxy:
@@ -398,20 +390,21 @@ services:
default:
ipv4_address: 10.10.0.8
logging: *default-logging
xr:
image: mercurykd/vpnbot-xr:1.3
si:
image: mercurykd/vpnbot-sb:1.2
build:
dockerfile: dockerfile/xray.dockerfile
dockerfile: dockerfile/singbox.dockerfile
args:
image: ${IMAGE}
volumes:
- ./config/.profile:/root/.ashrc:ro
- ./ssh:/ssh
- ./config/sshd_config:/etc/ssh/sshd_config
- ./config/xray.json:/xray.json
- ./scripts/start_xray.sh:/start_xray.sh
hostname: xray
container_name: xray-${VER}
- ./config:/config
- ./certs:/certs
- ./scripts/start_sing.sh:/start_sing.sh
hostname: singbox
container_name: singbox-${VER}
depends_on:
php:
condition: service_healthy
@@ -421,12 +414,10 @@ services:
- path: ./override.env
required: false
stop_grace_period: 1s
command: ["/bin/sh", "/start_xray.sh"]
command: ["/bin/sh", "/start_sing.sh"]
networks:
default:
ipv4_address: 10.10.0.9
xray:
ipv4_address: 10.10.1.9
logging: *default-logging
oc:
image: mercurykd/vpnbot-oc:1.2
+9
View File
@@ -0,0 +1,9 @@
ARG image
FROM $image
RUN apk add openssh openssl jq \
&& mkdir /root/.ssh \
&& wget https://github.com/SagerNet/sing-box/releases/download/v1.9.3/sing-box-1.9.3-linux-amd64.tar.gz \
&& tar -xf sing-box-1.9.3-linux-amd64.tar.gz \
&& mv sing-box-1.9.3-linux-amd64/sing-box /usr/bin \
&& rm sing-box-1.9.3-linux-amd64.tar.gz \
&& rm -rf /sing-box-1.9.3-linux-amd64
-12
View File
@@ -1,12 +0,0 @@
ARG image
FROM $image
RUN apk add openssh openssl jq \
&& mkdir /root/.ssh \
&& wget -O Xray-linux-64.zip $(wget -q -O - https://api.github.com/repos/XTLS/Xray-core/releases/latest | grep browser_download_url | cut -d\" -f4 | egrep 'Xray-linux-64.zip$') \
&& unzip Xray-linux-64.zip \
&& mv xray /usr/bin/ \
&& rm Xray-linux-64.zip \
&& rm geoip.dat \
&& rm geosite.dat \
&& chmod +x /usr/bin/xray
ENV ENV="/root/.ashrc"
+2 -2
View File
@@ -36,8 +36,8 @@ proxy: # консоль сервиса
docker compose exec proxy /bin/sh
tg: # консоль сервиса
docker compose exec tg /bin/sh
xr: # консоль сервиса
docker compose exec xr /bin/sh
si: # консоль сервиса
docker compose exec si /bin/sh
oc: # консоль сервиса
docker compose exec oc /bin/sh
clean:
+5 -5
View File
@@ -1,8 +1,8 @@
cat /ssh/key.pub > /root/.ssh/authorized_keys
ssh-keygen -A
exec /usr/sbin/sshd -D -e "$@" &
sed "s/ss:[0-9]\+/ss:$SSPORT/" /nginx_default.conf > change_port
cat change_port > /nginx_default.conf
sed "s/ss:[0-9]\+/ss:$SSPORT/" /etc/nginx/nginx.conf > change_port
cat change_port > /etc/nginx/nginx.conf
nginx -g "daemon off;"
sed "s/ss:[0-9]\+/ss:$SSPORT/" /config/nginx_default.conf > change_port
cat change_port > /config/nginx_default.conf
sed "s/ss:[0-9]\+/ss:$SSPORT/" /config/nginx.conf > change_port
cat change_port > /config/nginx.conf
nginx -g "daemon off;" -c /config/nginx.conf
+5
View File
@@ -0,0 +1,5 @@
cat /ssh/key.pub > /root/.ssh/authorized_keys
ssh-keygen -A
exec /usr/sbin/sshd -D -e "$@" &
sing-box run -c /config/singbox.json > /dev/null &
tail -f /dev/null
+1 -1
View File
@@ -1,4 +1,4 @@
cat /ssh/key.pub > /root/.ssh/authorized_keys
ssh-keygen -A
exec /usr/sbin/sshd -D -e "$@" &
nginx -g "daemon off;"
nginx -g "daemon off;" -c /config/upstream.conf
-8
View File
@@ -1,8 +0,0 @@
cat /ssh/key.pub > /root/.ssh/authorized_keys
ssh-keygen -A
exec /usr/sbin/sshd -D -e "$@" &
if [ $(cat /xray.json | jq -r '.inbounds[0].settings.clients[0].id' | wc -c) -gt 1 ]
then
xray run -config /xray.json > /dev/null &
fi
tail -f /dev/null
+17
View File
@@ -1,3 +1,20 @@
26.08.2024 v1.44
- qr для xtls
- фикс действий на элементом списков
21.08.2024 v1.43
- singbox:поддержка кастомных outbound для ruleset
16.08.2024 v1.42.1
- фикс добавления рулсетов с длинными урл
16.08.2024 v1.42
- добавлена возможность сохранять/восстанавливать список доменов/правил маршрутизации
- изменена ссылка на сингбокс-конфиг для совместимости с клиентом сингбокса (фикс импорта в sing-box)
- sing-box: добавлена возможность добавлять свои packagename (outbound:proxy)
- sing-box: добавлена возможность добавлять свои ruleset с указанием outbound и временем обновления
- sing-box: списки доменов pac/warp/block трансформируются в собственный ruleset и присутствуют в шаблоне origin всегда, даже если они пустые. это дает возможность не ждать перезагрузки конфига клиентом
09.08.2024 v1.41.1
- фикс для "удалить все" в списках доменов
06.08.2024 v1.41
- возможность очистить РАС лист
03.08.2024 v1.40
- возможность менять MTU для Wireguard/Amnezia
- раздельный qr для AmneziaWG + AmneziaVPN