From 475eea1f471d668280fb9aa0d28e2482ae27e52c Mon Sep 17 00:00:00 2001 From: mercury Date: Thu, 26 Dec 2024 18:12:42 +0400 Subject: [PATCH] ability to change subdomain for openconnect --- app/bot.php | 43 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/app/bot.php b/app/bot.php index 1cac74a..98416bd 100644 --- a/app/bot.php +++ b/app/bot.php @@ -358,6 +358,9 @@ class Bot case preg_match('~^/changeCamouflage$~', $this->input['callback'], $m): $this->changeCamouflage(); break; + case preg_match('~^/changeOcDomain$~', $this->input['callback'], $m): + $this->changeOcDomain(); + break; case preg_match('~^/changeOcPass$~', $this->input['callback'], $m): $this->changeOcPass(); break; @@ -816,7 +819,7 @@ class Bot $this->input['chat'], "@{$this->input['username']} enter camouflage key", $this->input['message_id'], - reply: 'enter password', + reply: 'enter camouflage key', ); $_SESSION['reply'][$r['result']['message_id']] = [ 'start_message' => $this->input['message_id'], @@ -826,6 +829,22 @@ class Bot ]; } + public function changeOcDomain() + { + $r = $this->send( + $this->input['chat'], + "@{$this->input['username']} enter subdomain", + $this->input['message_id'], + reply: 'enter subdomain', + ); + $_SESSION['reply'][$r['result']['message_id']] = [ + 'start_message' => $this->input['message_id'], + 'start_callback' => $this->input['callback_id'], + 'callback' => 'chOcSubdomain', + 'args' => [], + ]; + } + public function changeOcDns() { $r = $this->send( @@ -987,6 +1006,20 @@ class Bot $this->menu('oc'); } + public function chOcSubdomain($domain) + { + $pac = $this->getPacConf(); + if (empty($domain)) { + unset($pac["oc_domain"]); + } else { + $pac["oc_domain"] = $domain; + } + $this->setPacConf($pac); + $this->chocdomain($pac['domain']); + $this->setUpstreamDomainOcserv($pac['domain']); + $this->menu('oc'); + } + public function chnplogin($user) { $pac = $this->getPacConf(); @@ -4926,6 +4959,12 @@ DNS-over-HTTPS with IP: $text[] = "https://$oc.$domain/?$cs"; } $text[] = "password: $pass"; + $data[] = [ + [ + 'text' => $this->i18n('change subdomain'), + 'callback_data' => "/changeOcDomain", + ], + ]; $data[] = [ [ 'text' => $this->i18n('change secret'), @@ -6386,7 +6425,7 @@ DNS-over-HTTPS with IP: public function getHashSubdomain($subdomain) { - return substr(hash('sha256', "$subdomain{$this->key}"), 0, 8); + return $this->getPacConf()["{$subdomain}_domain"] ?: substr(hash('sha256', "$subdomain{$this->key}"), 0, 8); } public function addWg($page)