Compare commits
74 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| db6a18f498 | |||
| 6954a16fa2 | |||
| ca7a9c955d | |||
| 852fbd55c6 | |||
| 3a8a843d8c | |||
| 90828d1117 | |||
| 37e8b96bcf | |||
| 306bc41813 | |||
| f6e5da382b | |||
| d7ed7042ec | |||
| 4496a30552 | |||
| ca1a596f85 | |||
| b3edf1bdcc | |||
| c6306aa918 | |||
| d5bbc9a564 | |||
| d2aab8ee4b | |||
| 304217d36e | |||
| 2622397542 | |||
| 702123e39c | |||
| 01ef7707c4 | |||
| 064d39d80b | |||
| 1b93d41421 | |||
| e41c8e30a4 | |||
| 260f988360 | |||
| ca4905220d | |||
| 08c5ff136e | |||
| 8709531717 | |||
| 71f53c3575 | |||
| 2607f1f264 | |||
| a94cab7dc1 | |||
| 694d446402 | |||
| 6074d40643 | |||
| 4b1df94325 | |||
| 232c75d5bf | |||
| 5e860a4896 | |||
| 5b05486b98 | |||
| fb22744fa7 | |||
| af812b7c93 | |||
| 3302ca8871 | |||
| 2c5eff03d5 | |||
| a8a203041f | |||
| a21c9b5fe9 | |||
| 696779450f | |||
| 7c5b3dfa3a | |||
| 74404559f9 | |||
| 11e8fb468b | |||
| ca92ca703f | |||
| f527888db8 | |||
| 0e47a771cc | |||
| ff10cbefc8 | |||
| 3371ba4bae | |||
| 621fb08467 | |||
| 5153b2c94a | |||
| 1e9461cc49 | |||
| 88f48a036c | |||
| b40e052d3f | |||
| a43082ae27 | |||
| c2cd945991 | |||
| 0737327e4b | |||
| f620bf12cd | |||
| 8b3730c61f | |||
| c6d9dcd47b | |||
| d83ba51d81 | |||
| 1a593100b7 | |||
| 414a67c10d | |||
| f92b484011 | |||
| 7af0276944 | |||
| 24aaa8756c | |||
| 07e2beff9b | |||
| 86261e6b76 | |||
| d816582e6f | |||
| 6d1ab0cb3a | |||
| 284b025881 | |||
| 0ca93b56a3 |
+544
-111
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -38,7 +38,7 @@ switch (true) {
|
|||||||
|
|
||||||
// adguard cookie
|
// adguard cookie
|
||||||
case preg_match('~^' . preg_quote("/webapp$hash/check") . '~', $_SERVER['REQUEST_URI']) && $webapp:
|
case preg_match('~^' . preg_quote("/webapp$hash/check") . '~', $_SERVER['REQUEST_URI']) && $webapp:
|
||||||
setcookie('c', substr(hash('sha256', $c['key']), 0, 8), 0, '/');
|
setcookie('c', $hash, 0, '/');
|
||||||
echo "/adguard$hash/";
|
echo "/adguard$hash/";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
require __DIR__ . '/timezone.php';
|
||||||
|
|
||||||
|
// require __DIR__ . '/debug.php';
|
||||||
|
require __DIR__ . '/bot.php';
|
||||||
|
require __DIR__ . '/config.php';
|
||||||
|
require __DIR__ . '/i18n.php';
|
||||||
|
|
||||||
|
(new Bot($c['key'], $i))->analyzeXray();
|
||||||
@@ -72,6 +72,7 @@
|
|||||||
"uuid": "~uid~",
|
"uuid": "~uid~",
|
||||||
"network": "tcp",
|
"network": "tcp",
|
||||||
"flow": "xtls-rprx-vision",
|
"flow": "xtls-rprx-vision",
|
||||||
|
"udp": true,
|
||||||
"tls": true,
|
"tls": true,
|
||||||
"reality-opts": {
|
"reality-opts": {
|
||||||
"public-key": "~public_key~",
|
"public-key": "~public_key~",
|
||||||
|
|||||||
+21
-21
@@ -9,12 +9,12 @@
|
|||||||
"tag": "tun-in",
|
"tag": "tun-in",
|
||||||
"domain_strategy": "prefer_ipv4",
|
"domain_strategy": "prefer_ipv4",
|
||||||
"interface_name": "sing-tun",
|
"interface_name": "sing-tun",
|
||||||
"address": ["172.19.0.1\/30"],
|
"address": [
|
||||||
|
"172.19.0.1\/30"
|
||||||
|
],
|
||||||
"mtu": 1400,
|
"mtu": 1400,
|
||||||
"gso": true,
|
|
||||||
"auto_route": true,
|
"auto_route": true,
|
||||||
"strict_route": true,
|
"strict_route": true,
|
||||||
"sniff": true,
|
|
||||||
"endpoint_independent_nat": false,
|
"endpoint_independent_nat": false,
|
||||||
"stack": "mixed",
|
"stack": "mixed",
|
||||||
"platform": {
|
"platform": {
|
||||||
@@ -27,14 +27,9 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "mixed",
|
"type": "mixed",
|
||||||
"tag": "mixed-in",
|
"tag": "in",
|
||||||
"domain_strategy": "prefer_ipv4",
|
|
||||||
"listen": "127.0.0.1",
|
"listen": "127.0.0.1",
|
||||||
"listen_port": 2080,
|
"listen_port": 2080
|
||||||
"tcp_fast_open": true,
|
|
||||||
"sniff": true,
|
|
||||||
"sniff_override_destination": false,
|
|
||||||
"users": []
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"dns": {
|
"dns": {
|
||||||
@@ -92,23 +87,28 @@
|
|||||||
{
|
{
|
||||||
"type": "direct",
|
"type": "direct",
|
||||||
"tag": "direct"
|
"tag": "direct"
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "block",
|
|
||||||
"tag": "block"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "dns",
|
|
||||||
"tag": "dns-out"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"route": {
|
"route": {
|
||||||
"auto_detect_interface": true,
|
"auto_detect_interface": true,
|
||||||
"override_android_vpn": true,
|
"override_android_vpn": true,
|
||||||
"rules": [
|
"rules": [
|
||||||
|
{
|
||||||
|
"action": "sniff"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"protocol": "dns",
|
"protocol": "dns",
|
||||||
"outbound": "dns-out"
|
"action": "hijack-dns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"inbound": "in",
|
||||||
|
"action": "resolve",
|
||||||
|
"strategy": "prefer_ipv4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"inbound": "in",
|
||||||
|
"action": "sniff",
|
||||||
|
"timeout": "1s"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"addruleset": true,
|
"addruleset": true,
|
||||||
@@ -187,7 +187,7 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"outbound": "block"
|
"action": "reject"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"addruleset": true,
|
"addruleset": true,
|
||||||
@@ -207,4 +207,4 @@
|
|||||||
],
|
],
|
||||||
"final": "direct"
|
"final": "direct"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+14
-6
@@ -42,10 +42,18 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
php:
|
php:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
|
ng:
|
||||||
|
condition: service_started
|
||||||
ad:
|
ad:
|
||||||
condition: service_started
|
condition: service_started
|
||||||
ss:
|
ss:
|
||||||
condition: service_started
|
condition: service_started
|
||||||
|
xr:
|
||||||
|
condition: service_started
|
||||||
|
oc:
|
||||||
|
condition: service_started
|
||||||
|
np:
|
||||||
|
condition: service_started
|
||||||
env_file:
|
env_file:
|
||||||
- path: ./.env
|
- path: ./.env
|
||||||
required: true # default
|
required: true # default
|
||||||
@@ -79,9 +87,6 @@ services:
|
|||||||
- 80:80
|
- 80:80
|
||||||
hostname: nginx
|
hostname: nginx
|
||||||
container_name: nginx-${VER}
|
container_name: nginx-${VER}
|
||||||
depends_on:
|
|
||||||
up:
|
|
||||||
condition: service_started
|
|
||||||
env_file:
|
env_file:
|
||||||
- path: ./.env
|
- path: ./.env
|
||||||
required: true # default
|
required: true # default
|
||||||
@@ -95,6 +100,9 @@ services:
|
|||||||
xray:
|
xray:
|
||||||
ipv4_address: 10.10.1.2
|
ipv4_address: 10.10.1.2
|
||||||
logging: *default-logging
|
logging: *default-logging
|
||||||
|
depends_on:
|
||||||
|
php:
|
||||||
|
condition: service_healthy
|
||||||
php:
|
php:
|
||||||
image: mercurykd/vpnbot-php:1.7
|
image: mercurykd/vpnbot-php:1.7
|
||||||
build:
|
build:
|
||||||
@@ -147,7 +155,7 @@ services:
|
|||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 5
|
retries: 5
|
||||||
service:
|
service:
|
||||||
image: mercurykd/vpnbot-php:1.6
|
image: mercurykd/vpnbot-php:1.7
|
||||||
build:
|
build:
|
||||||
dockerfile: dockerfile/php.dockerfile
|
dockerfile: dockerfile/php.dockerfile
|
||||||
args:
|
args:
|
||||||
@@ -432,7 +440,7 @@ services:
|
|||||||
ipv4_address: 10.10.0.12
|
ipv4_address: 10.10.0.12
|
||||||
logging: *default-logging
|
logging: *default-logging
|
||||||
wp:
|
wp:
|
||||||
image: mercurykd/vpnbot-wp:1.2
|
image: mercurykd/vpnbot-wp:1.3
|
||||||
build:
|
build:
|
||||||
dockerfile: dockerfile/warp.dockerfile
|
dockerfile: dockerfile/warp.dockerfile
|
||||||
args:
|
args:
|
||||||
@@ -442,7 +450,7 @@ services:
|
|||||||
devices:
|
devices:
|
||||||
- /dev/net/tun:/dev/net/tun
|
- /dev/net/tun:/dev/net/tun
|
||||||
volumes:
|
volumes:
|
||||||
- ./config/.profile:/root/.ashrc:ro
|
- ./config/.profile:/root/.bashrc:ro
|
||||||
- ./ssh:/ssh
|
- ./ssh:/ssh
|
||||||
- ./config/sshd_config:/etc/ssh/sshd_config
|
- ./config/sshd_config:/etc/ssh/sshd_config
|
||||||
- ./config:/config
|
- ./config:/config
|
||||||
|
|||||||
@@ -1,16 +1,6 @@
|
|||||||
FROM ubuntu:22.04 AS build
|
FROM ubuntu:22.04
|
||||||
RUN apt update && apt install -y curl gpg lsb-release \
|
RUN apt update && apt install -y curl gpg socat jq lsb-release openssh-server \
|
||||||
&& curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg \
|
&& curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg \
|
||||||
&& echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/cloudflare-client.list \
|
&& echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/cloudflare-client.list \
|
||||||
&& apt update && apt install -y cloudflare-warp
|
&& apt update && apt install -y cloudflare-warp \
|
||||||
|
|
||||||
FROM alpine:3.17
|
|
||||||
ARG GLIBC_VERSION=2.34-r0
|
|
||||||
COPY --from=build /usr/bin/warp-cli /usr/bin/warp-svc /usr/local/bin/
|
|
||||||
RUN apk add --no-cache dbus-libs wget socat openssh-server jq curl \
|
|
||||||
&& mkdir /tmp/glibc-pkgs \
|
|
||||||
&& for PKG in glibc-$GLIBC_VERSION.apk glibc-bin-$GLIBC_VERSION.apk; do wget -q --directory-prefix /tmp/glibc-pkgs https://github.com/sgerrand/alpine-pkg-glibc/releases/download/$GLIBC_VERSION/$PKG; done \
|
|
||||||
&& apk add --no-cache --allow-untrusted --force-overwrite /tmp/glibc-pkgs/* \
|
|
||||||
&& rm -rf /tmp/glibc-pkgs \
|
|
||||||
&& /usr/glibc-compat/sbin/ldconfig /lib /usr/glibc-compat/lib \
|
|
||||||
&& mkdir /root/.ssh
|
&& mkdir /root/.ssh
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
b:
|
b:
|
||||||
docker compose build
|
docker compose build
|
||||||
u: # запуск контейнеров
|
u: # запуск контейнеров
|
||||||
$(eval IP := $(shell curl -s -t 1 2ip.io || curl -s -t 1 ipinfo.io/ip || curl -s -t 1 ifconfig.me))
|
$(eval IP := $(shell hostname -I | awk '{print $$1}'))
|
||||||
bash ./update/update.sh &
|
bash ./update/update.sh &
|
||||||
touch ./override.env ./docker-compose.override.yml
|
touch ./override.env ./docker-compose.override.yml
|
||||||
IP=$(IP) VER=$(shell git describe --tags) docker compose --env-file ./.env --env-file ./override.env up -d --force-recreate
|
IP=$(IP) VER=$(shell git describe --tags) docker compose --env-file ./.env --env-file ./override.env up -d --force-recreate
|
||||||
@@ -32,7 +32,7 @@ up: # консоль сервиса
|
|||||||
ad: # консоль сервиса
|
ad: # консоль сервиса
|
||||||
docker compose exec ad /bin/sh
|
docker compose exec ad /bin/sh
|
||||||
wp: # консоль сервиса
|
wp: # консоль сервиса
|
||||||
docker compose exec wp /bin/sh
|
docker compose exec wp bash
|
||||||
proxy: # консоль сервиса
|
proxy: # консоль сервиса
|
||||||
docker compose exec proxy /bin/sh
|
docker compose exec proxy /bin/sh
|
||||||
tg: # консоль сервиса
|
tg: # консоль сервиса
|
||||||
@@ -41,6 +41,8 @@ xr: # консоль сервиса
|
|||||||
docker compose exec xr /bin/sh
|
docker compose exec xr /bin/sh
|
||||||
oc: # консоль сервиса
|
oc: # консоль сервиса
|
||||||
docker compose exec oc /bin/sh
|
docker compose exec oc /bin/sh
|
||||||
|
service: # консоль сервиса
|
||||||
|
docker compose exec service /bin/sh
|
||||||
clean:
|
clean:
|
||||||
docker image prune
|
docker image prune
|
||||||
docker builder prune
|
docker builder prune
|
||||||
|
|||||||
@@ -2,4 +2,5 @@ cat /ssh/key.pub > /root/.ssh/authorized_keys
|
|||||||
ssh-keygen -A
|
ssh-keygen -A
|
||||||
exec /usr/sbin/sshd -D -e "$@" &
|
exec /usr/sbin/sshd -D -e "$@" &
|
||||||
php service.php
|
php service.php
|
||||||
|
php iplimit.php &
|
||||||
php cron.php
|
php cron.php
|
||||||
+4
-3
@@ -1,9 +1,10 @@
|
|||||||
cat /ssh/key.pub > /root/.ssh/authorized_keys
|
cat /ssh/key.pub > /root/.ssh/authorized_keys
|
||||||
ssh-keygen -A
|
echo 'HostKeyAlgorithms +ssh-rsa' >> /etc/ssh/sshd_config
|
||||||
exec /usr/sbin/sshd -D -e "$@" &
|
echo 'PubkeyAcceptedKeyTypes +ssh-rsa' >> /etc/ssh/sshd_config
|
||||||
|
service ssh start
|
||||||
off=$(cat /config/pac.json | jq -r .warpoff)
|
off=$(cat /config/pac.json | jq -r .warpoff)
|
||||||
key=$(cat /config/pac.json | jq -r .warp)
|
key=$(cat /config/pac.json | jq -r .warp)
|
||||||
if [ "$off" == 'null' ]
|
if [ "$off" = 'null' ]
|
||||||
then
|
then
|
||||||
warp-svc > /dev/null &
|
warp-svc > /dev/null &
|
||||||
sleep 3
|
sleep 3
|
||||||
|
|||||||
Binary file not shown.
+1
-1
@@ -38,7 +38,7 @@ do
|
|||||||
curl -H "Content-Type: application/json" -X POST https://api.telegram.org/bot$key/editMessageText -d "$(cat $pwd/update/curl | sed 's/"text":"~t~"/"text": "launching the bot"/')"
|
curl -H "Content-Type: application/json" -X POST https://api.telegram.org/bot$key/editMessageText -d "$(cat $pwd/update/curl | sed 's/"text":"~t~"/"text": "launching the bot"/')"
|
||||||
> $pwd/update/key
|
> $pwd/update/key
|
||||||
> $pwd/update/curl
|
> $pwd/update/curl
|
||||||
IP=$(curl -s -t 1 2ip.io || curl -s -t 1 ipinfo.io/ip || curl -s -t 1 ifconfig.me) VER=$(git describe --tags) docker compose --env-file ./.env --env-file ./override.env up -d --force-recreate
|
IP=$(hostname -I | awk '{print $1}') VER=$(git describe --tags) docker compose --env-file ./.env --env-file ./override.env up -d --force-recreate
|
||||||
bash $pwd/update/update.sh &
|
bash $pwd/update/update.sh &
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,3 +1,48 @@
|
|||||||
|
18.06.2025 v2.22
|
||||||
|
- фикс определения айпи при запуске
|
||||||
|
11.06.2025 v2.21
|
||||||
|
- пагинация в списках
|
||||||
|
20.05.2025 v2.20
|
||||||
|
- коррекция главного меню
|
||||||
|
- vless: опция обнуления статы ежемесячно
|
||||||
|
17.05.2025 v2.19
|
||||||
|
- фикс падения vless при одинаковом имени пользователей
|
||||||
|
- фикс падения vless при установке таймера для выключенного пользователя
|
||||||
|
- подсветка в меню работы процесса контейнера
|
||||||
|
- overwrite=no для импорта клеш подписки (legiz)
|
||||||
|
18.04.2025 v2.18
|
||||||
|
- фикс отсутствия ssl при первом старте
|
||||||
|
- iplimit уведомляет без отключения пользователя
|
||||||
|
- включение udp в mihomo-шаблоне
|
||||||
|
- удаление лишнего образа пхп
|
||||||
|
07.04.2025 v2.17
|
||||||
|
- фикс циклической перезагрузки панели adguardHome
|
||||||
|
07.04.2025 v2.16
|
||||||
|
- фикс warp
|
||||||
|
07.04.2025 v2.15
|
||||||
|
- миграция поддоменов np/oc вместе в с бэкапом
|
||||||
|
02.03.2025 v2.14
|
||||||
|
- vless ip limit: фикс выключения юзера
|
||||||
|
22.02.2025 v2.13
|
||||||
|
- vless: улучшение сбора статы
|
||||||
|
- vless: фикс добавления правил srs для block outbound
|
||||||
|
11.02.2025 v2.12
|
||||||
|
- vless: хранение статы в отдельном файле
|
||||||
|
- vless ip limit: возможность указать кол-во айпи
|
||||||
|
08.02.2025 v2.11
|
||||||
|
- vless: singbox 1.11
|
||||||
|
07.02.2025 v2.10
|
||||||
|
- vless: ip limit
|
||||||
|
- vless: общая стата
|
||||||
|
- vless: пакетное добавление профилей
|
||||||
|
- vless: при добавлении можно указывать свой uuid (name:uuid, name:uuid, ...)
|
||||||
|
- автоудаление логов
|
||||||
|
- хэш бота сохраняется в настройках и восстанавливается с бэкапом. можно накатывать бэкап на нового бота
|
||||||
|
02.02.2025 v2.9
|
||||||
|
- откат sing-box 1.11
|
||||||
|
02.02.2025 v2.8
|
||||||
|
- vless: корректировка статы юзера
|
||||||
|
- sing-box 1.11
|
||||||
29.01.2025 v2.7
|
29.01.2025 v2.7
|
||||||
- vless: сброс статистики юзера
|
- vless: сброс статистики юзера
|
||||||
24.01.2025 v2.6
|
24.01.2025 v2.6
|
||||||
|
|||||||
Reference in New Issue
Block a user