Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3b9b930b48 | |||
| bd17e5cd14 | |||
| c3975549db | |||
| 3087bee82d |
+40
-9
@@ -271,6 +271,9 @@ class Bot
|
||||
case preg_match('~^/addOcUser$~', $this->input['callback'], $m):
|
||||
$this->addOcUser();
|
||||
break;
|
||||
case preg_match('~^/changeOcExpose$~', $this->input['callback'], $m):
|
||||
$this->changeOcExpose();
|
||||
break;
|
||||
case preg_match('~^/addXrUser$~', $this->input['callback'], $m):
|
||||
$this->addXrUser();
|
||||
break;
|
||||
@@ -1078,11 +1081,13 @@ class Bot
|
||||
[$start, $period] = explode('/', $c['backup']);
|
||||
$start = strtotime($start);
|
||||
$period = strtotime($period, 0);
|
||||
if ($now - $start >= $period && ($now - $start) % $period == 0) {
|
||||
if (!empty($c['pinbackup'])) {
|
||||
$this->pinAdmin($c['pinbackup'], 1);
|
||||
if (!empty($start) && !empty($period)) {
|
||||
if ($now - $start >= $period && ($now - $start) % $period == 0) {
|
||||
if (!empty($c['pinbackup'])) {
|
||||
$this->pinAdmin($c['pinbackup'], 1);
|
||||
}
|
||||
$this->pinBackup();
|
||||
}
|
||||
$this->pinBackup();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1293,7 +1298,7 @@ class Bot
|
||||
if (!empty($file)) {
|
||||
file_put_contents($file, $json);
|
||||
}
|
||||
$bot = $this->request('getMyName', [])['result']['name'];
|
||||
$bot = preg_replace('~[\W]~iu', '_', $this->request('getMyName', [])['result']['name']);
|
||||
return $this->upload("{$bot}_export_" . date('d_m_Y_H_i') . '.json', $json);
|
||||
}
|
||||
|
||||
@@ -3840,9 +3845,10 @@ DNS-over-HTTPS with IP:
|
||||
public function menu($type = false, $arg = false, $return = false)
|
||||
{
|
||||
$domain = $this->getPacConf()['domain'] ?: $this->ip;
|
||||
$cron = exec('pgrep -f cron.php');
|
||||
$menu = [
|
||||
'main' => [
|
||||
'text' => 'v' . getenv('VER'),
|
||||
'text' => 'v' . getenv('VER') . "\ncron: " . $this->i18n($cron ? 'on' : 'off') . ($cron ? '' : ' show <code>logs/php_error</code>'),
|
||||
'data' => [
|
||||
[
|
||||
[
|
||||
@@ -4129,7 +4135,9 @@ DNS-over-HTTPS with IP:
|
||||
preg_match('~^camouflage_secret[^\n]+?"([^"]+)*"~sm', $ocserv, $m);
|
||||
$cs = $m[1];
|
||||
preg_match('~^dns = ([^\n]+)~sm', $ocserv, $m);
|
||||
$dns = $m[1];
|
||||
$dns = $m[1];
|
||||
preg_match('~^expose-iroutes = (true)~sm', $ocserv, $m);
|
||||
$expose = $m[1];
|
||||
$pass = htmlspecialchars($pac['ocserv']);
|
||||
$text[] = "Menu -> OpenConnect";
|
||||
if (!empty($m[1])) {
|
||||
@@ -4150,6 +4158,12 @@ DNS-over-HTTPS with IP:
|
||||
'callback_data' => "/changeOcDns",
|
||||
],
|
||||
];
|
||||
$data[] = [
|
||||
[
|
||||
'text' => $this->i18n('expose-iroutes') . ' ' . $this->i18n($expose ? 'on' : 'off'),
|
||||
'callback_data' => "/changeOcExpose",
|
||||
],
|
||||
];
|
||||
$data[] = [
|
||||
[
|
||||
'text' => $this->i18n('add peer'),
|
||||
@@ -4177,6 +4191,15 @@ DNS-over-HTTPS with IP:
|
||||
];
|
||||
}
|
||||
|
||||
public function changeOcExpose()
|
||||
{
|
||||
$c = file_get_contents('/config/ocserv.conf');
|
||||
preg_match('~^expose-iroutes = ([^\n]+)~sm', $c, $m);
|
||||
$t = preg_replace('~^expose-iroutes[^\n]+~sm', "expose-iroutes = " . ($m[1] == 'true' ? 'false' : 'true'), $c);
|
||||
$this->restartOcserv($t);
|
||||
$this->menu('oc');
|
||||
}
|
||||
|
||||
public function deloc($i)
|
||||
{
|
||||
$clients = $this->getClientsOc();
|
||||
@@ -5545,7 +5568,11 @@ DNS-over-HTTPS with IP:
|
||||
];
|
||||
$backup = array_filter(explode('/', $conf['backup']));
|
||||
if (!empty($backup)) {
|
||||
$backup = "{$backup[0]} start / {$backup[1]} period";
|
||||
if (!empty(strtotime($backup[0])) && !empty(strtotime($backup[1]))) {
|
||||
$backup = "{$backup[0]} start / {$backup[1]} period";
|
||||
} else {
|
||||
$backup = $this->i18n('off') . " {$conf['backup']} - wrong format";
|
||||
}
|
||||
}
|
||||
$data[] = [
|
||||
[
|
||||
@@ -5855,7 +5882,11 @@ DNS-over-HTTPS with IP:
|
||||
$c['backup'] = '';
|
||||
} else {
|
||||
[$start, $period] = explode('/', $text);
|
||||
$c['backup'] = implode(' / ', [date('Y-m-d H:i', strtotime($start)), trim($period)]);
|
||||
if (!empty(strtotime($start)) && !empty(strtotime($period))) {
|
||||
$c['backup'] = implode(' / ', [date('Y-m-d H:i', strtotime($start)), trim($period)]);
|
||||
} else {
|
||||
$this->send($this->input['from'], $this->input['message'] . ' - wrong format');
|
||||
}
|
||||
}
|
||||
if ($c['pinbackup']) {
|
||||
$this->pinAdmin($c['pinbackup'], 1);
|
||||
|
||||
@@ -341,4 +341,8 @@ $i = [
|
||||
'en' => 'fake html',
|
||||
'ru' => 'фейк заглушка',
|
||||
],
|
||||
'expose-iroutes' => [
|
||||
'en' => 'expose-iroutes',
|
||||
'ru' => 'изоляция клиентов',
|
||||
],
|
||||
];
|
||||
|
||||
+2
-2
@@ -180,7 +180,7 @@ server-key = /certs/cert_private
|
||||
# the isolation was tested at. If you get random failures on worker processes, try
|
||||
# disabling that option and report the failures you, along with system and debugging
|
||||
# information at: https://gitlab.com/openconnect/ocserv/issues
|
||||
isolate-workers = true
|
||||
isolate-workers = false
|
||||
|
||||
# A banner to be displayed on clients after connection
|
||||
#banner = "Welcome"
|
||||
@@ -584,7 +584,7 @@ route = default
|
||||
# When set to true, all client's iroutes are made visible to all
|
||||
# connecting clients except for the ones offering them. This option
|
||||
# only makes sense if config-per-user is set.
|
||||
#expose-iroutes = true
|
||||
expose-iroutes = false
|
||||
|
||||
# Groups that a client is allowed to select from.
|
||||
# A client may belong in multiple groups, and in certain use-cases
|
||||
|
||||
@@ -462,11 +462,6 @@ services:
|
||||
default:
|
||||
ipv4_address: 10.10.0.11
|
||||
logging: *default-logging
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '0.50'
|
||||
memory: 200M
|
||||
np:
|
||||
image: mercurykd/vpnbot-np:1.1
|
||||
build:
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
b:
|
||||
docker compose build
|
||||
u: # запуск контейнеров
|
||||
$(eval IP := $(shell curl -s -t 1 2ip.io || curl -s -t 1 ipinfo.io/ip || curl -s -t 1 ifconfig.me))
|
||||
bash ./update/update.sh &
|
||||
touch ./override.env
|
||||
IP=$(shell curl ipinfo.io/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
|
||||
d: # остановка контейнеров
|
||||
-kill -9 $(shell cat ./update/update_pid) > /dev/null
|
||||
docker compose down --remove-orphans
|
||||
|
||||
@@ -1,3 +1,13 @@
|
||||
23.10.2024 v1.77
|
||||
- вывод статуса cron
|
||||
- фикс с отправкой бэкапа при спецсимволах в названии бота
|
||||
- проверка формата времени в автобэкапе
|
||||
22.10.2024 v1.76
|
||||
- улучшение определения ip бота при старте
|
||||
22.10.2024 v1.75
|
||||
- openconnect: isolate-workers = false
|
||||
21.10.2024 v1.74
|
||||
- openconnect: expose-iroutes on/off
|
||||
21.10.2024 v1.73
|
||||
- openconnect: ограничение контейнера по цпу и памяти
|
||||
21.10.2024 v1.72
|
||||
|
||||
Reference in New Issue
Block a user