Compare commits

..

53 Commits

Author SHA1 Message Date
mercury 6fb1931c2d fix choice default template sing-box 2024-05-01 17:52:17 +04:00
mercury 6a31985863 clear old images 2024-04-22 23:12:23 +04:00
mercury f4a9e63793 docker clean 2024-04-22 21:49:55 +04:00
mercury 581e3a9bd1 delete old image 2024-04-22 12:48:42 +04:00
mercury 8491ee9f51 fix star button freeze 2024-04-22 12:46:19 +04:00
Bkeenke 49cefc3231 Update "qrPeer" function (#11) 2024-04-21 12:06:32 +04:00
mercury b227431b7a singbox ruleset 2024-04-19 15:40:45 +04:00
mercury bb83ab0684 warp status on menu 2024-04-18 16:10:13 +04:00
mercury 05267f44be fix naming templates 2024-04-18 15:52:37 +04:00
mercury d1be532270 warp+ set key 2024-04-18 01:58:25 +04:00
mercury 48798c7e61 add restart for singbox window 2024-04-16 23:06:25 +04:00
mercury 84e71ab45b improve mtproto menu 2024-04-16 19:22:21 +04:00
mercury 068f2d0cc9 improve message update 2024-04-16 17:51:23 +04:00
mercury 759cf1973a update version 2024-04-16 17:45:55 +04:00
mercury a11b7e0664 improve update script 2024-04-16 17:43:07 +04:00
mercury d370b78815 refactoring subscription + v2ray templates 2024-04-16 15:20:44 +04:00
mercury 913f75b4a8 improve on/off on paclist 2024-04-15 13:49:14 +04:00
mercury c3e850b102 warp 2024-04-15 13:43:43 +04:00
mercury 3a89a1543b add block and warp list domains for xray 2024-04-15 12:08:43 +04:00
mercury 2a3e8e393c improve timer 2024-04-15 12:04:52 +04:00
mercury 332b74e366 winsw3 + update script for singbox windows 2024-04-14 13:05:55 +04:00
mercury dfa9efec7a fix singbox zip 2024-04-13 19:30:57 +04:00
mercury e1902827ce singbox for windows as service 2024-04-13 19:20:54 +04:00
mercury 95fea3bb7b improve xtls user menu 2024-04-13 04:22:09 +04:00
mercury 80a9f9f32d github btns 2024-04-12 21:38:54 +04:00
mercury 7fc1105728 update readme 2024-04-12 17:05:48 +04:00
mercury d46679caf6 log upstream 2024-04-12 15:47:58 +04:00
mercury 910186ff00 improve name for subscription 2024-04-12 02:22:39 +04:00
mercury 5e72452a8d improve template sign 2024-04-11 22:38:03 +04:00
mercury 668756f1c7 add https://community.antifilter.download/ in PAC 2024-04-11 21:05:41 +04:00
mercury 29e7be6cd8 improve xray config 2024-04-11 17:06:21 +04:00
mercury a5599118fc improve choice templae sing-box per user 2024-04-11 14:02:30 +04:00
mercury 040e8919f8 fix adguard 2024-04-11 13:09:44 +04:00
mercury d8e66f54a1 update version 2024-04-10 15:33:44 +04:00
mercury 8a64bd7308 choice default sing-box template 2024-04-10 15:32:07 +04:00
mercury 06a591debe sing-box template per user 2024-04-10 14:34:34 +04:00
mercury 7a77283b6e update donate 2024-04-10 10:33:52 +04:00
mercury 4a40a82d5b update version 2024-04-10 01:23:14 +04:00
mercury abe78182fe xtls pagination 2024-04-10 01:21:51 +04:00
mercury 16fc468516 xtls list improve 2024-04-10 00:53:29 +04:00
mercury 85d8bc4e6d on/off xtls users 2024-04-10 00:03:47 +04:00
mercury 5f8979a62d update version 2024-04-09 18:14:04 +04:00
mercury 969e981874 timer for xray users 2024-04-09 18:13:19 +04:00
mercury 99d27da162 fix back in branches 2024-04-09 15:18:12 +04:00
mercury a0f8b4df05 fix sing-box sub 2024-04-09 15:16:34 +04:00
mercury ed720406da update version 2024-04-09 15:07:03 +04:00
mercury 43d68515db editable v2ray/sing-box conf 2024-04-09 15:05:39 +04:00
mercury ac8aff2fb3 donate button update 2024-04-09 13:23:43 +04:00
mercury 7a4583c036 singbox: domain -> domain_suffix 2024-04-09 02:54:49 +04:00
mercury 7ffd9c10c5 fix v2ray link 2024-04-09 02:24:50 +04:00
mercury 228b617bfc fix subscriptions + redirect link 2024-04-09 02:16:54 +04:00
mercury 9749677b86 update version 2024-04-09 01:21:46 +04:00
mercury 045a849be8 fix empty pac + singbox:// 2024-04-09 01:16:22 +04:00
29 changed files with 1371 additions and 532 deletions
+924 -415
View File
File diff suppressed because it is too large Load Diff
+4
View File
@@ -1,6 +1,10 @@
<?php
$i = [
'warp' => [
'en' => 'Warp',
'ru' => 'Warp',
],
'wg_title' => [
'en' => 'Wireguard',
'ru' => 'Wireguard',
+16 -14
View File
@@ -22,27 +22,29 @@ $address = $_GET['a'] ?: '127.0.0.1';
$port = $_GET['p'] ?: '1080';
$hash = $_GET['h'];
if ($hash == substr(md5($c['key']), 0, 8)) {
require __DIR__ . '/bot.php';
require __DIR__ . '/i18n.php';
$bot = new Bot($c['key'], $i);
switch ($type) {
case 'mirror':
require __DIR__ . '/bot.php';
require __DIR__ . '/i18n.php';
$bot = new Bot($c['key'], $i);
$bot->getMirror();
break;
case 's':
require __DIR__ . '/bot.php';
require __DIR__ . '/i18n.php';
$bot = new Bot($c['key'], $i);
$bot->v2raySubscription($_GET['s']);
case 'si':
$bot->subscription();
exit;
case 'si':
require __DIR__ . '/bot.php';
require __DIR__ . '/i18n.php';
$bot = new Bot($c['key'], $i);
$bot->singboxSubscription($_GET['s']);
exit;
case 'te':
if (!empty($_GET['te'])) {
$t = $bot->getPacConf()["{$_GET['ty']}templates"][$_GET['te']];
} else {
$t = json_decode(file_get_contents("/config/{$_GET['ty']}.json"), true);
}
if ($t) {
header('Content-Type: application/json');
echo json_encode($t, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
exit;
}
default:
if (file_exists($file = __DIR__ . "/zapretlists/$type")) {
+4 -1
View File
@@ -2,13 +2,16 @@
require __DIR__ . '/timezone.php';
// require __DIR__ . '/debug.php';
require __DIR__ . '/bot.php';
require __DIR__ . '/config.php';
require __DIR__ . '/i18n.php';
if ($c['debug']) {
require __DIR__ . '/debug.php';
}
$bot = new Bot($c['key'], $i);
$bot->adguardProtect();
$bot->adguardCheckPswd();
$bot->setcommands();
$bot->syncPortClients();
$bot->setwebhook();
+5 -1
View File
@@ -2,11 +2,14 @@
require __DIR__ . '/timezone.php';
// require __DIR__ . '/debug.php';
require __DIR__ . '/bot.php';
require __DIR__ . '/config.php';
require __DIR__ . '/i18n.php';
if ($c['debug']) {
require __DIR__ . '/debug.php';
}
$bot = new Bot($c['key'], $i);
if (!empty($c['admin'])) {
@@ -37,3 +40,4 @@ file_put_contents('/update/message', '');
file_put_contents('/update/reload_message', '');
$bot->restartTG();
$bot->sslip();
$bot->cleanDocker();
+1 -89
View File
@@ -93,95 +93,7 @@ function start()
// check && exclude
$include = array_filter($conf['includelist'], fn($x) => $x == true);
if ($conf['zapret']) {
foreach ($source as $k => $v) {
$size = getSize($v['source']);
if ($size > 0) {
if (file_exists($v['dest'])) {
unlink($v['dest']);
}
touch($v['dest']);
$percent = 0;
$curr = 0;
exec("php updatepac.php download $k > /dev/null &");
$i = $j = 0;
while ($curr <= $size) {
$rotate = $curr != $size ? $load[$j % count($load)] : '';
$tail = <<<text
Downloading {$v['source']}
$curr/$size $percent% $rotate
text;
update($text . $tail);
if ($curr == $size || $i > 50) {
break;
}
usleep(50000);
clearstatcache();
if ($curr == filesize($v['dest'])) {
$i++;
}
$curr = filesize($v['dest']);
$percent = (int) ceil($curr * 100 / $size);
$j++;
}
if ($curr != $size) {
$text .= "\nError downloading {$v['source']}\nabort script";
endScript($text);
}
} else {
$text .= "\nError size {$v['source']}\nabort script";
endScript($text);
}
$text .= $tail ? "$tail\n" : '';
}
// prepare
$reg = '~^([^.*]+\.(?:(?:' . implode('|', $subzones) . ')\.)?[^.]+)$~';
foreach ($source as $k => $v) {
$size = filesize($v['dest']);
$curr = $j = 0;
$time = microtime(true);
$name = basename($v['dest']);
$f = fopen($v['dest'], 'r');
while (($s = fgets($f)) !== false) {
$curr += strlen($s);
$percent = (int) ceil($curr * 100 / $size);
$rotate = $curr != $size ? $load[$j % count($load)] : '';
$tail = <<<text
Prepare $name $percent% $rotate
text;
if (microtime(true) - $time > 0.1) {
update($text . $tail);
$time = microtime(true);
$j++;
}
if ($name == 'dump.csv') {
if (!preg_match('~;.*;~', $s)) {
continue;
}
$t = explode(';', iconv('CP1251', 'utf-8', $s));
if (empty($t[1])) {
continue;
}
if (preg_match($reg, idn_to_ascii(trim($t[1])), $m)) {
$domains[$m[1]] = 0;
}
} else {
if (preg_match($reg, idn_to_ascii(iconv('CP1251', 'utf-8', trim($s))), $m)) {
$domains[$m[1]] = 0;
}
}
}
fclose($f);
$text .= $tail ? "$tail\n" : '';
}
$exclude = array_keys(array_filter($conf['excludelist'], fn($x) => $x == true));
foreach ($include as $k => $v) {
$domains[$k] = 0;
}
} else {
$domains = $include;
}
$domains = $include;
if (empty($domains)) {
$text = "Empty domains. Delete pac files";
unlink(__DIR__ . '/zapretlists/mpac');
+26
View File
@@ -0,0 +1,26 @@
<meta charset="utf-8">
<script src="jquery-3.7.1.min.js"></script>
<script>
jQuery(function($){
$('#copy').on('click', function (e){
$(this).text('copied');
var $temp = $("<input>");
$("body").append($temp);
$temp.val($(this).attr('data-id')).select();
document.execCommand("copy");
$temp.remove();
});
});
</script>
<div style="position:relative;width:100%;height:100%; background-color: white;">
<div style="position:absolute;top:0;right:0;width:35%;text-align:center;background-color: #17212b;">
<img src="toncoin.png" width="100%" alt="">
<a href="javascript:;" id="copy" style="color:white;text-decoration:none" data-id="UQCDDkaX3fCAFBek28Hx4TfvDDRqeizOW74blVMVAM4_m4OW">copy</a>
<!-- <iframe src="https://ghbtns.com/github-btn.html?user=mercurykd&repo=vpnbot&type=star&count=true" frameborder="0" scrolling="0" width="150" height="20" title="GitHub"></iframe> -->
</div>
<a style="background-color: #8B3FFD;height: 46px;display:inline-block;padding:0 54px;color: white;border-radius: 12px;text-decoration: none;font-size: 20px;line-height: 46px;font-family: arial;" href="https://yoomoney.ru/to/410011827900450">
<svg style="width: 24px;fill: white;position: relative;top: 4px;" class="qa-fundraise-button-logo mui-m0okdh" viewBox="0 0 16 16"><path d="M4.638 8.5a5.67 5.67 0 015.681-5.68A5.693 5.693 0 0116 8.5a5.693 5.693 0 01-5.68 5.682A5.67 5.67 0 014.637 8.5zm3.56 0c0 1.151.97 2.122 2.121 2.122 1.15 0 2.085-.97 2.121-2.121 0-1.15-.97-2.121-2.12-2.121-1.151 0-2.122.97-2.122 2.12zm-3.596 4.243v-8.27H0l2.589 8.27h2.013z" clip-rule="evenodd"></path></svg>
Перевести
</a>
<iframe style="width:100%;height:100%" src="https://pay.cloudtips.ru/p/757de378" frameborder="0"></iframe>
</div>
Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

+130
View File
@@ -0,0 +1,130 @@
{
"log": {
"level": "error",
"timestamp": true
},
"inbounds": [
{
"type": "tun",
"tag": "tun-in",
"domain_strategy": "prefer_ipv4",
"interface_name": "sing-tun",
"inet4_address": "172.19.0.1\/30",
"mtu": 1400,
"gso": true,
"auto_route": true,
"strict_route": true,
"sniff": true,
"endpoint_independent_nat": false,
"stack": "mixed",
"platform": {
"http_proxy": {
"enabled": false,
"server": "127.0.0.1",
"server_port": 2080
}
}
},
{
"type": "mixed",
"tag": "mixed-in",
"domain_strategy": "prefer_ipv4",
"listen": "127.0.0.1",
"listen_port": 2080,
"tcp_fast_open": true,
"sniff": true,
"sniff_override_destination": false,
"users": []
}
],
"dns": {
"servers": [
{
"tag": "dns_direct",
"address": "~dns~",
"address_resolver": "dns-remote",
"strategy": "prefer_ipv4",
"detour": "direct"
},
{
"tag": "dns-remote",
"address": "tcp:\/\/8.8.8.8",
"address_strategy": "prefer_ipv4",
"strategy": "prefer_ipv4",
"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"
}
],
"route": {
"auto_detect_interface": true,
"override_android_vpn": true,
"rules": [
{
"protocol": "dns",
"outbound": "dns-out"
},
{
"createruleset": [
{
"name": "selfpac",
"interval": "15s",
"rules": [
{
"domain_suffix": "~pac~"
}
]
}
],
"outbound": "proxy"
}
],
"final": "direct"
}
}
+1 -1
View File
@@ -3,7 +3,7 @@ worker_processes auto;
load_module /usr/lib/nginx/modules/ngx_stream_module.so;
error_log /logs/nginx_error;
error_log /logs/upstream_error;
pid /var/run/nginx.pid;
events {
+95
View File
@@ -0,0 +1,95 @@
{
"log": {
"access": "",
"error": "",
"loglevel": "warning"
},
"inbounds": [{
"tag": "socks",
"port": 10808,
"listen": "127.0.0.1",
"protocol": "socks",
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls"],
"routeOnly": false
},
"settings": {
"auth": "noauth",
"udp": true,
"allowTransparent": false
}
}, {
"tag": "http",
"port": 10809,
"listen": "127.0.0.1",
"protocol": "http",
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls"],
"routeOnly": false
},
"settings": {
"auth": "noauth",
"udp": true,
"allowTransparent": false
}
}],
"outbounds": [{
"tag": "proxy",
"protocol": "vless",
"settings": {
"vnext": [{
"address": "",
"port": 443,
"users": [{
"id": "",
"alterId": 0,
"email": "t@t.tt",
"security": "auto",
"encryption": "none",
"flow": "xtls-rprx-vision"
}]
}]
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"serverName": "",
"fingerprint": "chrome",
"show": false,
"publicKey": "",
"shortId": "",
"spiderX": ""
}
},
"mux": {
"enabled": false,
"concurrency": -1
}
}, {
"tag": "direct",
"protocol": "freedom"
}, {
"tag": "block",
"protocol": "blackhole",
"settings": {
"response": {
"type": "http"
}
}
}],
"routing": {
"domainStrategy": "AsIs",
"rules": [{
"type": "field",
"outboundTag": "proxy",
"domain": "~pac~"
}, {
"type": "field",
"port": "0-65535",
"outboundTag": "direct"
}]
}
}
-5
View File
@@ -5,11 +5,6 @@
"protocol": "vless",
"settings": {
"clients": [
{
"email": "user1@myserver",
"flow": "xtls-rprx-vision",
"id": ""
}
],
"decryption": "none"
},
+35 -4
View File
@@ -1,5 +1,3 @@
version: "3.7"
x-logging:
&default-logging
driver: "json-file"
@@ -95,7 +93,7 @@ services:
ipv4_address: 10.10.1.2
logging: *default-logging
php:
image: mercurykd/vpnbot-php:1.3
image: mercurykd/vpnbot-php:1.5
build:
dockerfile: dockerfile/php.dockerfile
args:
@@ -117,6 +115,8 @@ services:
- ./.env:/mirror/.env
- ./update:/update
- ./.git:/.git
- ./singbox_windows:/singbox
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
IP: ${IP}
VER: ${VER}
@@ -143,7 +143,7 @@ services:
timeout: 5s
retries: 5
service:
image: mercurykd/vpnbot-php:1.2
image: mercurykd/vpnbot-php:1.5
build:
dockerfile: dockerfile/php.dockerfile
args:
@@ -158,6 +158,7 @@ services:
- ./logs/:/logs/
- ./update:/update
- ./scripts/start_service.sh:/start_service.sh
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
IP: ${IP}
VER: ${VER}
@@ -491,3 +492,33 @@ services:
default:
ipv4_address: 10.10.0.12
logging: *default-logging
wp:
image: mercurykd/vpnbot-wp:1.1
build:
dockerfile: dockerfile/warp.dockerfile
args:
image: ${IMAGE}
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
volumes:
- ./config/.profile:/root/.bashrc:ro
- ./ssh:/ssh
- ./config/sshd_config:/etc/ssh/sshd_config
- ./config:/config
- ./certs:/certs
- ./scripts/start_wp.sh:/start_wp.sh
hostname: warp
container_name: warp-${VER}
depends_on:
php:
condition: service_healthy
environment:
TZ: ${TZ}
stop_grace_period: 1s
command: ["/bin/sh", "/start_wp.sh"]
networks:
default:
ipv4_address: 10.10.0.13
logging: *default-logging
+7 -1
View File
@@ -4,6 +4,7 @@ RUN apk add --no-cache --update php81 \
php81-mbstring \
php81-session \
php81-phar \
php81-zip \
php81-curl \
php81-opcache \
php81-openssl \
@@ -25,5 +26,10 @@ RUN apk add --no-cache --update php81 \
&& tar -xf dnslookup-linux-amd64-v1.9.1.tar.gz \
&& mv linux-amd64/dnslookup /usr/bin \
&& rm dnslookup-linux-amd64-v1.9.1.tar.gz \
&& rm -rf /linux-amd64
&& rm -rf /linux-amd64 \
&& wget https://github.com/SagerNet/sing-box/releases/download/v1.8.11/sing-box-1.8.11-linux-amd64.tar.gz \
&& tar -xf sing-box-1.8.11-linux-amd64.tar.gz \
&& mv sing-box-1.8.11-linux-amd64/sing-box /usr/bin \
&& rm sing-box-1.8.11-linux-amd64.tar.gz \
&& rm -rf /sing-box-1.8.11-linux-amd64
ENV ENV="/root/.ashrc"
+6
View File
@@ -0,0 +1,6 @@
FROM ubuntu:22.04
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 \
&& 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 \
&& mkdir /root/.ssh
+1 -1
View File
@@ -9,7 +9,7 @@ d: # остановка контейнеров
docker compose down --remove-orphans
dv: # остановка контейнеров
docker compose down -v
r: d cleanf u cleanf
r: d u
ps: # список контейнеров
docker compose ps
l: # логи из контейнеров
+4
View File
@@ -6,6 +6,10 @@ telegram bot to manage servers (inside the bot)
- change secret
- qr/config
- change fake domain
- multiple users
- subscriptions with routing
- routing templates per user
- steal from yourself
<img src="https://github.com/mercurykd/vpnbot/assets/30900414/39bdf4e0-96a6-4257-b61e-30a14122e236" width="200">
### NaiveProxy
+15
View File
@@ -0,0 +1,15 @@
cat /ssh/key.pub > /root/.ssh/authorized_keys
echo 'HostKeyAlgorithms +ssh-rsa' >> /etc/ssh/sshd_config
echo 'PubkeyAcceptedKeyTypes +ssh-rsa' >> /etc/ssh/sshd_config
service ssh start
warp-svc > /dev/null &
sleep 3
warp-cli --accept-tos registration new
key=$(cat /config/pac.json | jq -r .warp)
if [ ! -z "$key" ]
then
warp-cli --accept-tos registration license $key
fi
warp-cli --accept-tos mode proxy
warp-cli --accept-tos connect
socat TCP-LISTEN:4000,fork TCP:127.0.0.1:40000
+2
View File
@@ -0,0 +1,2 @@
winsw3.exe install
pause
+2
View File
@@ -0,0 +1,2 @@
winsw3.exe stop
winsw3.exe start
Binary file not shown.
+1
View File
@@ -0,0 +1 @@
winsw3.exe start
+2
View File
@@ -0,0 +1,2 @@
winsw3.exe status
pause
+1
View File
@@ -0,0 +1 @@
winsw3.exe stop
+2
View File
@@ -0,0 +1,2 @@
winsw3.exe uninstall
pause
Binary file not shown.
+17
View File
@@ -0,0 +1,17 @@
<service>
<id>singbox</id>
<name>singbox</name>
<description>singbox</description>
<executable>%BASE%\sing-box.exe</executable>
<arguments>run -c %BASE%\config.json</arguments>
<logmode>rotate</logmode>
<onfailure action="restart" delay="10 sec" />
<onfailure action="restart" delay="20 sec" />
<onfailure action="restart" delay="30 sec" />
<onfailure action="none" />
<onexit action="restart" />
<onexit action="restart" />
<onexit action="restart" />
<onexit action="none" />
<download from="~url~" to="%BASE%\config.json"/>
</service>
+9
View File
@@ -9,16 +9,25 @@ do
branch=$(cat $pwd/update/branch 2>/dev/null)
if [[ -n "$cmd" ]]
then
key=$(cat $pwd/update/key)
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": "останавливаю бота"/')"
docker compose down --remove-orphans
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": "очищаю директорию"/')"
git reset --hard && git clean -fd
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": "скачиваю обновление"/')"
git fetch
if [[ -n "$branch" ]]
then
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": "меняю ветку"/')"
git checkout -t origin/$branch || git checkout $branch
fi
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": "применяю обновления"/')"
git pull > ./update/message
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": "запускаю бота"/')"
IP=$(curl https://ipinfo.io/ip) VER=$(git describe --tags) docker compose up -d --force-recreate
bash $pwd/update/update.sh &
> $pwd/update/key
> $pwd/update/curl
exit 0
fi
sleep 1
+61
View File
@@ -1,3 +1,64 @@
22.04.2024 v1.35
- очистка старых образов
19.04.2024 v1.34
- формирование rule_set из шаблона singbox
18.04.2024 v1.33
- вывод статуса warp в меню
18.04.2024 v1.32
- фиксы в названии и отображении выбранного шаблона xtls
18.04.2024 v1.31
- возможность устанавливать ключ для warp
16.04.2024 v1.30.1
- улучшение сообщения об обновлениях
16.04.2024 v1.30
- улучшение скрипта обновления
16.04.2024 v1.29
- рефакторинг подписок
- кнопки импорта для различных клиентов
- шаблоны для v2ray
15.04.2024 v1.28
- xtls: список блокировки, список warp
- улучшение отображения таймера
14.04.2024 v1.27.1
- singbox windows: замена winsw на winsw3, + скрипт обновления подписки
13.04.2024 v1.27
- архив сингбокса для windows, работает как служба
12.04.2024 v1.26
- имя клиента xtls подтягивается по подписке из бота
11.04.2024 v1.25
- подпись дефолтного шаблона в разделе пользователя xtls
11.04.2024 v1.24
- обновлен раздел PAC, добавлена возможность добавить домены из https://community.antifilter.download/
11.04.2024 v1.23
- фикс совместимости старого конфига xray из бэкапа
11.04.2024 v1.22
- улучшение гибкости выбора шаблона sing-box
11.04.2024 v1.21
- фикс доступности адгвард панели при первом запуске
10.04.2024 v1.20
- выбор дефолтного шаблона sing-box
10.04.2024 v1.19
- загрузка шаблонов sing-box
- выбор шаблона sing-box для пользователя
10.04.2024 v1.18
- включение/выключение xtls юзеров
09.04.2024 v1.17
- редактируемые конфиги v2ray/sing-box
09.04.2024 v1.16
- редактируемые конфиги v2ray/sing-box
09.04.2024 v1.15.4
- замена domain на domain_suffix
09.04.2024 v1.15.2
- фикс подписки v2ray
09.04.2024 v1.15.2
- редиректы вместо кнопки-подписки
- фикс добавления подписки
09.04.2024 v1.15.1
- кнопка sing-box
- фикс пустого списка РАС для sing-box
09.04.2024 v1.15.1
- кнопка sing-box
- фикс пустого списка РАС для sing-box
08.04.2024 v1.15
- подписка с маршрутизацией для singbox
07.04.2024 v1.14