From 252d555374cba372f81400cb7eeb306f59113437 Mon Sep 17 00:00:00 2001 From: mercury Date: Wed, 12 Apr 2023 11:01:01 +0400 Subject: [PATCH] option set/delete internal dns for wireguard peer --- app/bot.php | 29 +++++++++++++++++- app/i18n.php | 84 +++++++++++++++++++++++++++------------------------- 2 files changed, 72 insertions(+), 41 deletions(-) diff --git a/app/bot.php b/app/bot.php index 4952795..8417e49 100644 --- a/app/bot.php +++ b/app/bot.php @@ -180,6 +180,12 @@ class Bot case preg_match('~^/delete (?P\d+(?:_(?:-)?\d+)?)$~', $this->input['callback'], $m): $this->deletePeer(...explode('_', $m['arg'])); break; + case preg_match('~^/dns (?P\d+(?:_(?:-)?\d+)?)$~', $this->input['callback'], $m): + $this->dnsPeer(...explode('_', $m['arg'])); + break; + case preg_match('~^/deletedns (?P\d+(?:_(?:-)?\d+)?)$~', $this->input['callback'], $m): + $this->deletednsPeer(...explode('_', $m['arg'])); + break; case preg_match('~^/deldomain$~', $this->input['callback'], $m): $this->delDomain(); break; @@ -1271,6 +1277,22 @@ DNS-over-HTTPS with IP: } } + public function dnsPeer($client, $page) + { + $clients = $this->readClients(); + $clients[$client]['interface']['DNS'] = '10.10.0.5'; + $this->saveClients($clients); + $this->menu('client', "{$client}_$page"); + } + + public function deletednsPeer($client, $page) + { + $clients = $this->readClients(); + unset($clients[$client]['interface']['DNS']); + $this->saveClients($clients); + $this->menu('client', "{$client}_$page"); + } + public function statusWg(int $page = 0) { $conf = $this->readConfig(); @@ -1355,6 +1377,12 @@ DNS-over-HTTPS with IP: 'callback_data' => "/download $client", ], ], + [ + [ + 'text' => $this->i18n($clients[$client]['interface']['DNS'] ? 'delete internal dns' : 'set internal dns'), + 'callback_data' => "/" . ($clients[$client]['interface']['DNS'] ? 'delete' : '') . "dns {$client}_$page", + ], + ], [ [ 'text' => $this->i18n('delete'), @@ -2154,7 +2182,6 @@ DNS-over-HTTPS with IP: 'PrivateKey' => $private_peer_key, 'Address' => "$client_ip/32", 'MTU' => 1350, - // 'DNS' => '10.10.0.5', ], 'peers' => [ [ diff --git a/app/i18n.php b/app/i18n.php index 2324b89..190f007 100644 --- a/app/i18n.php +++ b/app/i18n.php @@ -46,51 +46,55 @@ $i = [ 'reverse list explain' => ' - domains that will work without a proxy, all others through a proxy', 'timer' => 'set timer', 'reset nginx' => 'reset nginx', + 'set internal dns' => 'set internal dns', + 'delete internal dns' => 'delete internal dns', ], 'ru' => [ - 'wg_title' => 'Wireguard', - 'sh_title' => 'Shadowsocks', - 'ad_title' => 'AdGuard', - 'config' => 'настройки', - 'pac' => 'PAC', - 'chat' => 'чат поддержки', - 'back' => 'назад', - 'import' => 'импорт', - 'export' => 'экспорт', - 'delete' => 'удалить', - 'add' => 'добавить', - 'donate' => 'донат', - 'admin' => 'админа', - 'menu' => 'Меню', - 'update status' => 'обновить статус', - 'add peer' => 'добавить клиента', - 'all traffic' => 'весь трафик', - 'subnet' => 'подсеть', - 'proxy ip' => 'айпи прокси', - 'rename' => 'переименовать', - 'show QR' => 'показать QR', - 'download config' => 'скачать настройки', - 'install domain' => 'установить домен', - 'renew SSL' => 'обновить SSL', - 'delete SSL' => 'удалить SSL', - 'Letsencrypt SSL' => 'Letsencrypt SSL', - 'Self SSL' => 'Собственный SSL', - 'change password' => 'изменить пароль', - 'reset settings' => 'сбросить настройки', - 'add upstream' => 'добавить DNS', - 'check DNS' => 'проверить DNS', - 'update' => 'обновить', - 'self list' => 'собственный список', - 'reverse list' => 'обратный список', - 'subzones' => 'поддомены', - 'check url' => 'проверить домен', - 'lang' => 'язык', - 'blacklist exclude' => 'список исключений из блэклиста', - 'adguard web' => 'вебморда адгварда', - 'domain explain' => 'Некоторым клиентам требуется валидный сертификат при подключении, например Windows 11 DoH или ShadowSocks Android (URL-адрес PAC), для этого требуется домен', + 'wg_title' => 'Wireguard', + 'sh_title' => 'Shadowsocks', + 'ad_title' => 'AdGuard', + 'config' => 'настройки', + 'pac' => 'PAC', + 'chat' => 'чат поддержки', + 'back' => 'назад', + 'import' => 'импорт', + 'export' => 'экспорт', + 'delete' => 'удалить', + 'add' => 'добавить', + 'donate' => 'донат', + 'admin' => 'админа', + 'menu' => 'Меню', + 'update status' => 'обновить статус', + 'add peer' => 'добавить клиента', + 'all traffic' => 'весь трафик', + 'subnet' => 'подсеть', + 'proxy ip' => 'айпи прокси', + 'rename' => 'переименовать', + 'show QR' => 'показать QR', + 'download config' => 'скачать настройки', + 'install domain' => 'установить домен', + 'renew SSL' => 'обновить SSL', + 'delete SSL' => 'удалить SSL', + 'Letsencrypt SSL' => 'Letsencrypt SSL', + 'Self SSL' => 'Собственный SSL', + 'change password' => 'изменить пароль', + 'reset settings' => 'сбросить настройки', + 'add upstream' => 'добавить DNS', + 'check DNS' => 'проверить DNS', + 'update' => 'обновить', + 'self list' => 'собственный список', + 'reverse list' => 'обратный список', + 'subzones' => 'поддомены', + 'check url' => 'проверить домен', + 'lang' => 'язык', + 'blacklist exclude' => 'список исключений из блэклиста', + 'adguard web' => 'вебморда адгварда', + 'domain explain' => 'Некоторым клиентам требуется валидный сертификат при подключении, например Windows 11 DoH или ShadowSocks Android (URL-адрес PAC), для этого требуется домен', 'self list explain' => ' - домены, которые будут работать через прокси', 'reverse list explain' => ' - домены которые будут работать без прокси, все остальные через прокси', 'timer' => 'установить время действия', 'reset nginx' => 'сбросить nginx', + 'set internal dns' => 'установить внутренний dns', + 'delete internal dns' => 'удалить внутренний dns', ], ];