diff --git a/app/bot.php b/app/bot.php index c3c9927..ba17a53 100644 --- a/app/bot.php +++ b/app/bot.php @@ -145,6 +145,9 @@ class Bot case preg_match('~^/appOutbound$~', $this->input['callback'], $m): $this->appOutbound(); break; + case preg_match('~^/processOutbound$~', $this->input['callback'], $m): + $this->processOutbound(); + break; case preg_match('~^/offWarp$~', $this->input['callback'], $m): $this->offWarp(); break; @@ -431,6 +434,9 @@ class Bot case preg_match('~^/xtlsapp(?: (\d+))?$~', $this->input['callback'], $m): $this->xtlsapp($m[1] ?: 0); break; + case preg_match('~^/xtlsprocess(?: (\d+))?$~', $this->input['callback'], $m): + $this->xtlsprocess($m[1] ?: 0); + break; case preg_match('~^/xtlsrulesset(?: (\d+))?$~', $this->input['callback'], $m): $this->xtlsrulesset($m[1] ?: 0); break; @@ -2446,6 +2452,10 @@ DNS-over-HTTPS with IP: $this->xrayUpdateRules(); $this->xtlswarp(); break; + case 'processlist': + $this->xrayUpdateRules(); + $this->xtlsprocess(); + break; case 'packagelist': $this->xrayUpdateRules(); $this->xtlsapp(); @@ -3425,6 +3435,9 @@ DNS-over-HTTPS with IP: case 'packagelist': $this->xtlsapp(); break; + case 'processlist': + $this->xtlsprocess(); + break; case 'rulessetlist': $this->xtlsrulesset(); break; @@ -3570,6 +3583,14 @@ DNS-over-HTTPS with IP: $this->xtlsapp(); } + public function processOutbound() + { + $p = $this->getPacConf(); + $p['process_outbound'] = !$p['process_outbound']; + $p = $this->setPacConf($p); + $this->xtlsprocess(); + } + public function xtlsapp($page = 0) { $text[] = "Menu -> " . $this->i18n('xray') . ' -> ' . $this->i18n('routes') . ' -> package list'; @@ -3596,6 +3617,32 @@ DNS-over-HTTPS with IP: ); } + public function xtlsprocess($page = 0) + { + $text[] = "Menu -> " . $this->i18n('xray') . ' -> ' . $this->i18n('routes') . ' -> process list'; + + $data = $this->listPac('processlist', $page, 'xtlsprocess'); + $p = $this->getPacConf(); + $data[] = [ + [ + 'text' => 'set to ' . ($p['process_outbound'] ? 'proxy' : 'direct'), + 'callback_data' => "/processOutbound", + ], + ]; + $data[] = [ + [ + 'text' => $this->i18n('back'), + 'callback_data' => "/routes", + ], + ]; + $this->update( + $this->input['chat'], + $this->input['message_id'], + implode("\n", $text ?: ['...']), + $data ?: false, + ); + } + public function xtlsrulesset($page = 0) { $text[] = "Menu -> " . $this->i18n('xray') . ' -> ' . $this->i18n('routes') . ' -> rulesset list'; @@ -4496,6 +4543,10 @@ DNS-over-HTTPS with IP: 'text' => $this->i18n('warp'), 'callback_data' => "/xtlswarp", ]], + [[ + 'text' => $this->i18n('process'), + 'callback_data' => "/xtlsprocess", + ]], [[ 'text' => $this->i18n('package'), 'callback_data' => "/xtlsapp", @@ -4981,8 +5032,6 @@ DNS-over-HTTPS with IP: } $c['route']['rules'] = array_values($c['route']['rules']); $c['route'] = $this->addRuleSet($c['route']); - $c['route'] = $this->addPackageRule($c['route']); - $c['route'] = $this->addProcessRule($c['route']); $c['route'] = $this->createRuleSet($c['route'], $uid, $domain); $c['route'] = $this->clearEmptyRules($c['route']); break; @@ -5003,42 +5052,6 @@ DNS-over-HTTPS with IP: return $route; } - public function addPackageRule($route) - { - foreach ($route['rules'] as $k => $v) { - if (array_key_exists('package_name', $v)) { - $p = $this->getPacConf(); - if (!empty($t = array_filter($p['packagelist'] ?: []))) { - $route['rules'][$k] = [ - 'package_name' => array_keys($t), - 'outbound' => $p['app_outbound'] ? 'direct' : 'proxy', - ]; - } else { - unset($route['rules'][$k]); - } - } - } - return $route; - } - - public function addProcessRule($route) - { - foreach ($route['rules'] as $k => $v) { - if (array_key_exists('process_name', $v)) { - $p = $this->getPacConf(); - if (!empty($t = array_filter($p['processlist'] ?: []))) { - $route['rules'][$k] = [ - 'process_name' => array_keys($t), - 'outbound' => $p['process_outbound'] ? 'direct' : 'proxy', - ]; - } else { - unset($route['rules'][$k]); - } - } - } - return $route; - } - public function addRuleSet($route) { foreach ($route['rules'] as $k => $v) { diff --git a/version b/version index abac39d..39f3e50 100644 --- a/version +++ b/version @@ -1,3 +1,5 @@ +14.10.2024 v1.69 +- xray route: добавлен список process_name 14.10.2024 v1.68 - singbox template: package_name -> ruleset 13.10.2024 v1.67