Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7e20c14299 | |||
| b9155cf674 | |||
| 159f775e12 | |||
| ae672439be | |||
| 6dafba5618 | |||
| 7daf61a4f5 | |||
| f9266827c9 | |||
| 9e22c64771 | |||
| a2026a4436 |
+39
-24
@@ -37,20 +37,9 @@ class Bot
|
|||||||
'xray',
|
'xray',
|
||||||
];
|
];
|
||||||
$this->reg = '~' . implode('|', [
|
$this->reg = '~' . implode('|', [
|
||||||
'GET /ws HTTP',
|
|
||||||
'GET /adguard/(?:.+)? HTTP',
|
|
||||||
'GET /webapp(?:.+)? HTTP',
|
|
||||||
'GET /pac(?:.+)? HTTP',
|
|
||||||
'GET \.well-known(?:.+)? HTTP',
|
|
||||||
'GET /v2ray(?:.+)? HTTP',
|
|
||||||
'GET /dns-query(?:.+)? HTTP',
|
|
||||||
'GET / HTTP',
|
'GET / HTTP',
|
||||||
'GET /tlgrm(?:.+)? HTTP',
|
|
||||||
'GET /jsoneditor.min.css HTTP',
|
|
||||||
'GET /jsoneditor.min.js HTTP',
|
|
||||||
'GET /jquery-3.7.1.min.js HTTP',
|
|
||||||
'GET /img/jsoneditor-icons.svg HTTP',
|
|
||||||
'GET /favicon.ico HTTP',
|
'GET /favicon.ico HTTP',
|
||||||
|
preg_quote($this->getHashBot())
|
||||||
]) . '~';
|
]) . '~';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1542,6 +1531,8 @@ class Bot
|
|||||||
'xray' => $this->getXray(),
|
'xray' => $this->getXray(),
|
||||||
'oc' => file_get_contents('/config/ocserv.conf'),
|
'oc' => file_get_contents('/config/ocserv.conf'),
|
||||||
'ocu' => file_get_contents('/config/ocserv.passwd'),
|
'ocu' => file_get_contents('/config/ocserv.passwd'),
|
||||||
|
'ss' => $this->getSSConfig(),
|
||||||
|
'sl' => $this->getSSLocalConfig(),
|
||||||
|
|
||||||
];
|
];
|
||||||
return json_encode($conf, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
|
return json_encode($conf, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
|
||||||
@@ -1623,6 +1614,22 @@ class Bot
|
|||||||
yaml_emit_file($this->adguard, $json['ad']);
|
yaml_emit_file($this->adguard, $json['ad']);
|
||||||
$this->startAd();
|
$this->startAd();
|
||||||
}
|
}
|
||||||
|
// ss
|
||||||
|
if (!empty($json['ss'])) {
|
||||||
|
$out[] = 'update shadowsocks server';
|
||||||
|
$this->update($this->input['chat'], $this->input['message_id'], implode("\n", $out));
|
||||||
|
$this->ssh('pkill ssserver', 'ss');
|
||||||
|
file_put_contents('/config/ssserver.json', json_encode($json['ss'], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
|
||||||
|
$this->ssh('ssserver -v -d -c /config.json', 'ss');
|
||||||
|
}
|
||||||
|
// sl
|
||||||
|
if (!empty($json['sl'])) {
|
||||||
|
$out[] = 'update shadowsocks proxy';
|
||||||
|
$this->update($this->input['chat'], $this->input['message_id'], implode("\n", $out));
|
||||||
|
$this->ssh('pkill sslocal', 'proxy');
|
||||||
|
file_put_contents('/config/sslocal.json', json_encode($json['sl'], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
|
||||||
|
$this->ssh('sslocal -v -d -c /config.json', 'proxy');
|
||||||
|
}
|
||||||
// mtproto
|
// mtproto
|
||||||
if (!empty($json['mtproto'])) {
|
if (!empty($json['mtproto'])) {
|
||||||
$out[] = 'update mtproto';
|
$out[] = 'update mtproto';
|
||||||
@@ -4006,14 +4013,12 @@ DNS-over-HTTPS with IP:
|
|||||||
|
|
||||||
public function menuSS()
|
public function menuSS()
|
||||||
{
|
{
|
||||||
$conf = $this->getPacConf();
|
$hash = $this->getHashBot();
|
||||||
$ip = $this->ip;
|
|
||||||
$domain = $this->getDomain();
|
$domain = $this->getDomain();
|
||||||
$scheme = empty($ssl = $this->nginxGetTypeCert()) ? 'http' : 'https';
|
|
||||||
$ss = $this->getSSConfig();
|
$ss = $this->getSSConfig();
|
||||||
$v2ray = !empty($ss['plugin']) ? 'ON' : 'OFF';
|
$v2ray = !empty($ss['plugin']) ? 'ON' : 'OFF';
|
||||||
$port = !empty($ss['plugin']) ? (!empty($ssl) ? 443 : 80) : getenv('SSPORT');
|
$port = !empty($ss['plugin']) ? 443 : getenv('SSPORT');
|
||||||
$options = !empty($ssl) && !empty($ss['plugin']) ? "tls;fast-open;path=/v2ray;host=$domain" : "path=/v2ray;host=$domain";
|
$options = !empty($ss['plugin']) ? "tls;fast-open;path=/v2ray$hash;host=$domain" : "path=/v2ray$hash;host=$domain";
|
||||||
|
|
||||||
$text = "Menu -> ShadowSocks";
|
$text = "Menu -> ShadowSocks";
|
||||||
$data[] = [
|
$data[] = [
|
||||||
@@ -4022,7 +4027,7 @@ DNS-over-HTTPS with IP:
|
|||||||
'callback_data' => "/sspswd",
|
'callback_data' => "/sspswd",
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
$ss_link = preg_replace('~==~', '', 'ss://' . base64_encode("{$ss['method']}:{$ss['password']}")) . "@$domain:$port" . (!empty($ss['plugin']) ? '?plugin=' . urlencode("v2ray-plugin;path=/v2ray;host=$domain" . (!empty($ssl) ? ';tls' : '')) : '');
|
$ss_link = preg_replace('~==~', '', 'ss://' . base64_encode("{$ss['method']}:{$ss['password']}")) . "@$domain:$port" . (!empty($ss['plugin']) ? '?plugin=' . urlencode("v2ray-plugin;path=/v2ray$hash;host=$domain;tls") : '');
|
||||||
$text .= "\n\n<code>$ss_link</code>\n";
|
$text .= "\n\n<code>$ss_link</code>\n";
|
||||||
$text .= "\n\npassword: <span class='tg-spoiler'>{$ss['password']}</span>";
|
$text .= "\n\npassword: <span class='tg-spoiler'>{$ss['password']}</span>";
|
||||||
$text .= "\n\nserver: <code>$domain:$port</code>";
|
$text .= "\n\nserver: <code>$domain:$port</code>";
|
||||||
@@ -4090,16 +4095,17 @@ DNS-over-HTTPS with IP:
|
|||||||
$c = yaml_parse_file($f)['services'];
|
$c = yaml_parse_file($f)['services'];
|
||||||
$main[] = 'v' . getenv('VER') . " $branch" . ($update ? ' (have updates)' : '');
|
$main[] = 'v' . getenv('VER') . " $branch" . ($update ? ' (have updates)' : '');
|
||||||
$main[] = '';
|
$main[] = '';
|
||||||
$main[] = $this->i18n($c['wg'] ? 'on' : 'off') . ' ' . getenv('WGPORT') . ' Wireguard';
|
|
||||||
$main[] = $this->i18n($c['wg1'] ? 'on' : 'off') . ' ' . getenv('WG1PORT') . ' Wireguard 1';
|
|
||||||
$main[] = $this->i18n($c['tg'] ? 'on' : 'off') . ' ' . getenv('TGPORT') . ' MTProto';
|
|
||||||
$main[] = $this->i18n($c['ad'] ? 'on' : 'off') . ' 853 AdguardHome DoT';
|
|
||||||
$main[] = '';
|
|
||||||
$main[] = $cron;
|
$main[] = $cron;
|
||||||
$main[] = $this->i18n($backup ? 'on' : 'off') . ' autobackup' . ($backup ? " $backup" : '');
|
$main[] = $this->i18n($backup ? 'on' : 'off') . ' autobackup' . ($backup ? " $backup" : '');
|
||||||
$main[] = $this->i18n($conf['autoupdate'] ? 'on' : 'off') . ' autoupdate';
|
$main[] = $this->i18n($conf['autoupdate'] ? 'on' : 'off') . ' autoupdate';
|
||||||
$main[] = $this->i18n($conf['autoscan'] ? 'on' : 'off') . ' autoscan';
|
$main[] = $this->i18n($conf['autoscan'] ? 'on' : 'off') . ' autoscan';
|
||||||
$main[] = $this->i18n($conf['autodeny'] ? 'on' : 'off') . ' autoblock' . ($conf['deny'] ? ': ' . count($conf['deny']) : '');
|
$main[] = $this->i18n($conf['autodeny'] ? 'on' : 'off') . ' autoblock' . ($conf['deny'] ? ': ' . count($conf['deny']) : '');
|
||||||
|
$main[] = '';
|
||||||
|
$main[] = $this->i18n($c['wg'] ? 'on' : 'off') . ' ' . getenv('WGPORT') . ' Wireguard';
|
||||||
|
$main[] = $this->i18n($c['wg1'] ? 'on' : 'off') . ' ' . getenv('WG1PORT') . ' Wireguard 1';
|
||||||
|
$main[] = $this->i18n($c['tg'] ? 'on' : 'off') . ' ' . getenv('TGPORT') . ' MTProto';
|
||||||
|
$main[] = $this->i18n($c['ad'] ? 'on' : 'off') . ' 853 AdguardHome DoT';
|
||||||
|
$main[] = $this->i18n($c['ss'] ? 'on' : 'off') . ' 8388 Shadowsocks';
|
||||||
if (!empty($conf['domain'])) {
|
if (!empty($conf['domain'])) {
|
||||||
$main[] = '';
|
$main[] = '';
|
||||||
$oc = $this->getHashSubdomain('oc');
|
$oc = $this->getHashSubdomain('oc');
|
||||||
@@ -4160,6 +4166,10 @@ DNS-over-HTTPS with IP:
|
|||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
[
|
||||||
|
'text' => $this->i18n('sh_title'),
|
||||||
|
'callback_data' => "/menu ss",
|
||||||
|
],
|
||||||
[
|
[
|
||||||
'text' => $this->i18n('pac'),
|
'text' => $this->i18n('pac'),
|
||||||
'callback_data' => "/pacMenu 0",
|
'callback_data' => "/pacMenu 0",
|
||||||
@@ -6451,7 +6461,7 @@ DNS-over-HTTPS with IP:
|
|||||||
location
|
location
|
||||||
CONF;
|
CONF;
|
||||||
$template = preg_replace('~(location /adguard.+?})\s*location~s', $r, $template);
|
$template = preg_replace('~(location /adguard.+?})\s*location~s', $r, $template);
|
||||||
$template = preg_replace('~(/webapp|/pac|/adguard|/ws|location /dns-query)~', '${1}' . $h, $template);
|
$template = preg_replace('~(/webapp|/pac|/adguard|/ws|/v2ray|location /dns-query)~', '${1}' . $h, $template);
|
||||||
file_put_contents('/config/nginx.conf', $template);
|
file_put_contents('/config/nginx.conf', $template);
|
||||||
$x = $this->getXray();
|
$x = $this->getXray();
|
||||||
if (!empty($x['inbounds'][0]['streamSettings']['wsSettings']['path'])) {
|
if (!empty($x['inbounds'][0]['streamSettings']['wsSettings']['path'])) {
|
||||||
@@ -6926,6 +6936,10 @@ DNS-over-HTTPS with IP:
|
|||||||
'text' => $this->i18n($c['ad'] ? 'on' : 'off') . ' 853 AdguardHome DoT',
|
'text' => $this->i18n($c['ad'] ? 'on' : 'off') . ' 853 AdguardHome DoT',
|
||||||
'callback_data' => "/hidePort ad",
|
'callback_data' => "/hidePort ad",
|
||||||
]],
|
]],
|
||||||
|
[[
|
||||||
|
'text' => $this->i18n($c['ss'] ? 'on' : 'off') . ' 8388 Shadowsocks',
|
||||||
|
'callback_data' => "/hidePort ss",
|
||||||
|
]],
|
||||||
];
|
];
|
||||||
$data[] = [
|
$data[] = [
|
||||||
[
|
[
|
||||||
@@ -6948,6 +6962,7 @@ DNS-over-HTTPS with IP:
|
|||||||
'wg1' => getenv('WG1PORT') . ':' . getenv('WG1PORT') . '/udp',
|
'wg1' => getenv('WG1PORT') . ':' . getenv('WG1PORT') . '/udp',
|
||||||
'tg' => getenv('TGPORT') . ':' . getenv('TGPORT'),
|
'tg' => getenv('TGPORT') . ':' . getenv('TGPORT'),
|
||||||
'ad' => '853:853',
|
'ad' => '853:853',
|
||||||
|
'ss' => '8388:8388',
|
||||||
];
|
];
|
||||||
$f = '/docker/compose';
|
$f = '/docker/compose';
|
||||||
$c = yaml_parse_file($f);
|
$c = yaml_parse_file($f);
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ if ($c['debug']) {
|
|||||||
$bot = new Bot($c['key'], $i);
|
$bot = new Bot($c['key'], $i);
|
||||||
|
|
||||||
$bot->selfUpdate();
|
$bot->selfUpdate();
|
||||||
|
$bot->ssPswdCheck();
|
||||||
$bot->restartTG();
|
$bot->restartTG();
|
||||||
if (!empty($bot->selfupdate)) {
|
if (!empty($bot->selfupdate)) {
|
||||||
$bot->offWarp();
|
$bot->offWarp();
|
||||||
|
|||||||
@@ -97,6 +97,18 @@ http {
|
|||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
proxy_read_timeout 5d;
|
proxy_read_timeout 5d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
location /v2ray {
|
||||||
|
access_log /logs/nginx_v2ray_access;
|
||||||
|
proxy_redirect off;
|
||||||
|
proxy_buffering off;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_pass http://ss:8388/;
|
||||||
|
proxy_set_header Host $http_host;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "upgrade";
|
||||||
|
}
|
||||||
|
|
||||||
location /dns-query {
|
location /dns-query {
|
||||||
access_log /logs/nginx_doh_access;
|
access_log /logs/nginx_doh_access;
|
||||||
proxy_http_version 1.1;
|
proxy_http_version 1.1;
|
||||||
@@ -162,6 +174,17 @@ http {
|
|||||||
# proxy_pass http://php;
|
# proxy_pass http://php;
|
||||||
# }
|
# }
|
||||||
|
|
||||||
|
# location /v2ray {
|
||||||
|
# access_log /logs/nginx_v2ray_access;
|
||||||
|
# proxy_redirect off;
|
||||||
|
# proxy_buffering off;
|
||||||
|
# proxy_http_version 1.1;
|
||||||
|
# proxy_pass http://ss:8388/;
|
||||||
|
# proxy_set_header Host $http_host;
|
||||||
|
# proxy_set_header Upgrade $http_upgrade;
|
||||||
|
# proxy_set_header Connection "upgrade";
|
||||||
|
# }
|
||||||
|
|
||||||
# location /ws {
|
# location /ws {
|
||||||
# proxy_pass http://xr:443;
|
# proxy_pass http://xr:443;
|
||||||
# proxy_redirect off;
|
# proxy_redirect off;
|
||||||
@@ -173,6 +196,7 @@ http {
|
|||||||
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
# proxy_read_timeout 5d;
|
# proxy_read_timeout 5d;
|
||||||
# }
|
# }
|
||||||
|
|
||||||
# location /dns-query {
|
# location /dns-query {
|
||||||
# access_log /logs/nginx_doh_access;
|
# access_log /logs/nginx_doh_access;
|
||||||
# proxy_http_version 1.1;
|
# proxy_http_version 1.1;
|
||||||
|
|||||||
@@ -97,6 +97,18 @@ http {
|
|||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
proxy_read_timeout 5d;
|
proxy_read_timeout 5d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
location /v2ray {
|
||||||
|
access_log /logs/nginx_v2ray_access;
|
||||||
|
proxy_redirect off;
|
||||||
|
proxy_buffering off;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_pass http://ss:8388/;
|
||||||
|
proxy_set_header Host $http_host;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "upgrade";
|
||||||
|
}
|
||||||
|
|
||||||
location /dns-query {
|
location /dns-query {
|
||||||
access_log /logs/nginx_doh_access;
|
access_log /logs/nginx_doh_access;
|
||||||
proxy_http_version 1.1;
|
proxy_http_version 1.1;
|
||||||
@@ -162,6 +174,17 @@ http {
|
|||||||
# proxy_pass http://php;
|
# proxy_pass http://php;
|
||||||
# }
|
# }
|
||||||
|
|
||||||
|
# location /v2ray {
|
||||||
|
# access_log /logs/nginx_v2ray_access;
|
||||||
|
# proxy_redirect off;
|
||||||
|
# proxy_buffering off;
|
||||||
|
# proxy_http_version 1.1;
|
||||||
|
# proxy_pass http://ss:8388/;
|
||||||
|
# proxy_set_header Host $http_host;
|
||||||
|
# proxy_set_header Upgrade $http_upgrade;
|
||||||
|
# proxy_set_header Connection "upgrade";
|
||||||
|
# }
|
||||||
|
|
||||||
# location /ws {
|
# location /ws {
|
||||||
# proxy_pass http://xr:443;
|
# proxy_pass http://xr:443;
|
||||||
# proxy_redirect off;
|
# proxy_redirect off;
|
||||||
@@ -173,6 +196,7 @@ http {
|
|||||||
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
# proxy_read_timeout 5d;
|
# proxy_read_timeout 5d;
|
||||||
# }
|
# }
|
||||||
|
|
||||||
# location /dns-query {
|
# location /dns-query {
|
||||||
# access_log /logs/nginx_doh_access;
|
# access_log /logs/nginx_doh_access;
|
||||||
# proxy_http_version 1.1;
|
# proxy_http_version 1.1;
|
||||||
|
|||||||
@@ -44,6 +44,8 @@ services:
|
|||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
ad:
|
ad:
|
||||||
condition: service_started
|
condition: service_started
|
||||||
|
ss:
|
||||||
|
condition: service_started
|
||||||
env_file:
|
env_file:
|
||||||
- path: ./.env
|
- path: ./.env
|
||||||
required: true # default
|
required: true # default
|
||||||
@@ -162,6 +164,7 @@ services:
|
|||||||
- ./update:/update
|
- ./update:/update
|
||||||
- ./.git:/.git
|
- ./.git:/.git
|
||||||
- ./scripts/start_service.sh:/start_service.sh
|
- ./scripts/start_service.sh:/start_service.sh
|
||||||
|
- ./docker-compose.override.yml:/docker/compose
|
||||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
environment:
|
environment:
|
||||||
IP: ${IP}
|
IP: ${IP}
|
||||||
@@ -192,6 +195,8 @@ services:
|
|||||||
- xr
|
- xr
|
||||||
- oc
|
- oc
|
||||||
- np
|
- np
|
||||||
|
- proxy
|
||||||
|
- ss
|
||||||
wg:
|
wg:
|
||||||
image: mercurykd/vpnbot-wg:1.1
|
image: mercurykd/vpnbot-wg:1.1
|
||||||
build:
|
build:
|
||||||
@@ -460,3 +465,61 @@ services:
|
|||||||
default:
|
default:
|
||||||
ipv4_address: 10.10.0.13
|
ipv4_address: 10.10.0.13
|
||||||
logging: *default-logging
|
logging: *default-logging
|
||||||
|
proxy:
|
||||||
|
image: mercurykd/vpnbot-ss:1.2
|
||||||
|
build:
|
||||||
|
dockerfile: dockerfile/shadowsocks.dockerfile
|
||||||
|
args:
|
||||||
|
image: ${IMAGE}
|
||||||
|
volumes:
|
||||||
|
- ./config/.profile:/root/.ashrc:ro
|
||||||
|
- ./config/sslocal.json:/config.json
|
||||||
|
- ./ssh:/ssh
|
||||||
|
- ./config/sshd_config:/etc/ssh/sshd_config
|
||||||
|
- ./scripts/start_proxy.sh:/start_proxy.sh
|
||||||
|
hostname: proxy
|
||||||
|
container_name: proxy-${VER}
|
||||||
|
depends_on:
|
||||||
|
php:
|
||||||
|
condition: service_healthy
|
||||||
|
networks:
|
||||||
|
default:
|
||||||
|
ipv4_address: 10.10.0.3
|
||||||
|
environment:
|
||||||
|
TZ: ${TZ}
|
||||||
|
env_file:
|
||||||
|
- path: ./.env
|
||||||
|
required: true # default
|
||||||
|
- path: ./override.env
|
||||||
|
required: false
|
||||||
|
stop_grace_period: 1s
|
||||||
|
command: ["/bin/sh", "/start_proxy.sh"]
|
||||||
|
logging: *default-logging
|
||||||
|
ss:
|
||||||
|
image: mercurykd/vpnbot-ss:1.2
|
||||||
|
build:
|
||||||
|
dockerfile: dockerfile/shadowsocks.dockerfile
|
||||||
|
args:
|
||||||
|
image: ${IMAGE}
|
||||||
|
volumes:
|
||||||
|
- ./config/.profile:/root/.ashrc:ro
|
||||||
|
- ./config/ssserver.json:/config.json
|
||||||
|
- ./ssh:/ssh
|
||||||
|
- ./config/sshd_config:/etc/ssh/sshd_config
|
||||||
|
- ./scripts/start_ss.sh:/start_ss.sh
|
||||||
|
hostname: shadowsocks
|
||||||
|
container_name: shadowsocks-${VER}
|
||||||
|
depends_on:
|
||||||
|
php:
|
||||||
|
condition: service_healthy
|
||||||
|
env_file:
|
||||||
|
- path: ./.env
|
||||||
|
required: true # default
|
||||||
|
- path: ./override.env
|
||||||
|
required: false
|
||||||
|
stop_grace_period: 1s
|
||||||
|
command: ["/bin/sh", "/start_ss.sh"]
|
||||||
|
networks:
|
||||||
|
default:
|
||||||
|
ipv4_address: 10.10.0.6
|
||||||
|
logging: *default-logging
|
||||||
|
|||||||
@@ -1,87 +1,14 @@
|
|||||||
telegram bot to manage servers (inside the bot)
|
telegram bot to manage servers (inside the bot)
|
||||||
|
|
||||||
<img src="https://github.com/user-attachments/assets/ec5faa51-987c-461a-a973-d94c7edf7115" width="300">
|
- VLESS (Reality OR Websocket)
|
||||||
|
- NaiveProxy
|
||||||
### VLESS (Reality OR Websocket)
|
- OpenConnect
|
||||||
- change secret
|
- Wireguard
|
||||||
- qr/config
|
- Amnezia
|
||||||
- change fake domain
|
- AdguardHome
|
||||||
- multiple users
|
- MTProto
|
||||||
- subscriptions with routing (xray, sing-box, mihomo)
|
- PAC
|
||||||
- routing templates per user
|
- automatic ssl
|
||||||
- routing via rulesets (sing-box, mihomo)
|
|
||||||
- steal from yourself
|
|
||||||
- add domains to warp
|
|
||||||
|
|
||||||
### Main menu VLESS:
|
|
||||||
<img src="https://github.com/user-attachments/assets/80d2f671-fade-4819-a96a-efa253741ffd" width="300">
|
|
||||||
|
|
||||||
### User menu VLESS:
|
|
||||||
<img src="https://github.com/user-attachments/assets/5c3c5b5e-1931-4e98-a472-d303bac61a4e" width="300">
|
|
||||||
|
|
||||||
### NaiveProxy
|
|
||||||
- change login
|
|
||||||
- change password
|
|
||||||
<img src="https://github.com/mercurykd/vpnbot/assets/30900414/2127a4af-0436-452c-bfe2-c750dd5dbc06" width="300">
|
|
||||||
|
|
||||||
### OpenConnect
|
|
||||||
- change secret
|
|
||||||
- change password
|
|
||||||
- change dns
|
|
||||||
- add user
|
|
||||||
- add ip subnet
|
|
||||||
- expose-iroutes (lan between users)
|
|
||||||
<img src="https://github.com/user-attachments/assets/c3a8a78e-fe99-423c-a626-610b333a2a56" width="300">
|
|
||||||
|
|
||||||
### Wireguard / Amnezia
|
|
||||||
- create
|
|
||||||
- delete
|
|
||||||
- rename
|
|
||||||
- timer
|
|
||||||
- torrent blocking
|
|
||||||
- qr/config
|
|
||||||
- AmneziaVPN vpn:// link
|
|
||||||
- statistics
|
|
||||||
<img src="https://github.com/mercurykd/vpnbot/assets/30900414/51a79c93-8083-40ba-a14b-a6ef19f00531" width="300">
|
|
||||||
<img src="https://github.com/mercurykd/vpnbot/assets/30900414/fd6ffd9f-bd75-479c-8dca-ea6c0b938b6c" width="300">
|
|
||||||
|
|
||||||
### Shadowsocks + v2ray
|
|
||||||
- change password
|
|
||||||
- on/off v2ray
|
|
||||||
- qr
|
|
||||||
- short link
|
|
||||||
<img src="https://github.com/mercurykd/vpnbot/assets/30900414/fbe39617-63ae-4536-8ab0-e4269ed8784a" width="300">
|
|
||||||
|
|
||||||
### AdguardHome
|
|
||||||
- change password
|
|
||||||
- change upstream dns
|
|
||||||
- check dns
|
|
||||||
- check safesearch
|
|
||||||
- add custom clientID for DNSoverTLS (DOT)
|
|
||||||
- fill allowed clients (WG/AWG + OpenConnect + VLESS)
|
|
||||||
- custom ID for each user VLESS
|
|
||||||
<img src="https://github.com/user-attachments/assets/1dcdd9f9-f781-4ec2-8e32-01ce6095e0a3" width="300">
|
|
||||||
|
|
||||||
### PAC
|
|
||||||
- the ability to create your own PAC available by url with the ability to substitute the final ip and port
|
|
||||||
- Shadowsocks Android PAC
|
|
||||||
- add [antifilter-community](https://community.antifilter.download/) or [ru-bundle](https://github.com/legiz-ru/sb-rule-sets/blob/main/ru-bundle.lst) domain lists
|
|
||||||
<img src="https://github.com/user-attachments/assets/8d039dbb-6478-43a8-811a-4279e766c884" width="300">
|
|
||||||
|
|
||||||
### MTProto
|
|
||||||
- change secret
|
|
||||||
- qr/config
|
|
||||||
<img src="https://github.com/user-attachments/assets/d37b2e1c-f991-4e1c-8060-1b547eea8fe2" width="300">
|
|
||||||
|
|
||||||
### Settings
|
|
||||||
- add/change admin
|
|
||||||
- change language (en/ru)
|
|
||||||
- import/export all settings
|
|
||||||
- domain binding
|
|
||||||
- obtain ssl for domain
|
|
||||||
- fake html for domain
|
|
||||||
- ports block
|
|
||||||
<img src="https://github.com/user-attachments/assets/82b78014-eaa2-4b4c-bc90-77f58d03d57c" width="300">
|
|
||||||
|
|
||||||
---
|
---
|
||||||
environment: ubuntu 22.04/24.04, debian 11/12
|
environment: ubuntu 22.04/24.04, debian 11/12
|
||||||
@@ -89,12 +16,5 @@ environment: ubuntu 22.04/24.04, debian 11/12
|
|||||||
### Install:
|
### Install:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
wget -O- https://raw.githubusercontent.com/mercurykd/vpnbot/master/scripts/init.sh | sh -s YOUR_TELEGRAM_BOT_KEY
|
wget -O- https://raw.githubusercontent.com/mercurykd/vpnbot/master/scripts/init.sh | sh -s YOUR_TELEGRAM_BOT_KEY master
|
||||||
```
|
|
||||||
|
|
||||||
### Install as service (autoload on start):
|
|
||||||
|
|
||||||
```shell
|
|
||||||
cd /root/vpnbot
|
|
||||||
bash scripts/install_as_service.sh
|
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
TAG="${2:-master}"
|
||||||
apt update
|
apt update
|
||||||
apt install -y \
|
apt install -y \
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
@@ -13,6 +14,7 @@ apt install -y \
|
|||||||
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh
|
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh
|
||||||
git clone https://github.com/mercurykd/vpnbot.git
|
git clone https://github.com/mercurykd/vpnbot.git
|
||||||
cd ./vpnbot
|
cd ./vpnbot
|
||||||
|
git checkout $TAG
|
||||||
echo "<?php
|
echo "<?php
|
||||||
|
|
||||||
\$c = ['key' => '$1'];" > ./app/config.php
|
\$c = ['key' => '$1'];" > ./app/config.php
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
07.01.2025 v2.4
|
||||||
|
- вернул shadowsocks (спасибо за донат)
|
||||||
|
04.01.2025
|
||||||
|
- возможность установить нужную версию с нуля
|
||||||
|
- корректировка автосканера под новую версию
|
||||||
|
- улучшение основного меню
|
||||||
26.12.2024 v2.2
|
26.12.2024 v2.2
|
||||||
- возможность менять поддомен для naive/openconnect
|
- возможность менять поддомен для naive/openconnect
|
||||||
26.12.2024 v2.1
|
26.12.2024 v2.1
|
||||||
|
|||||||
Reference in New Issue
Block a user