diff --git a/app/bot.php b/app/bot.php
index d05a563..3b2d93b 100644
--- a/app/bot.php
+++ b/app/bot.php
@@ -3505,7 +3505,7 @@ DNS-over-HTTPS with IP:
);
}
- public function userXr($i)
+ public function userXr($i, $fs = 0)
{
$c = $this->getXray();
$domain = $this->getPacConf()['domain'] ?: $this->ip;
@@ -3514,13 +3514,21 @@ DNS-over-HTTPS with IP:
$v2ray = "$scheme://{$domain}/pac?h=$hash&t=s&s={$c['inbounds'][0]['settings']['clients'][$i]['id']}";
$sing = "$scheme://{$domain}/pac?h=$hash&t=si&s={$c['inbounds'][0]['settings']['clients'][$i]['id']}";
$fullsing = 'sing-box://import-remote-profile/?url=' . urlencode("$scheme://{$domain}/pac?h=$hash&t=si&s={$c['inbounds'][0]['settings']['clients'][$i]['id']}") . "#vpnbot$i";
-
+ if (!empty($fs)) {
+ return $fullsing;
+ }
$text[] = "Menu -> " . $this->i18n('xray') . " -> {$c['inbounds'][0]['settings']['clients'][$i]['email']}\n";
$text[] = "{$this->linkXray($i)}\n";
$text[] = "v2ray subscription: $v2ray";
$text[] = "sing-box subscription: $sing";
+ $data[] = [
+ [
+ 'text' => 'sing-box subscription',
+ 'web_app' => ['url' => "$scheme://{$domain}/pac?h=$hash&b=1&t=si&s={$c['inbounds'][0]['settings']['clients'][$i]['id']}"],
+ ],
+ ];
$data[] = [
[
'text' => $this->i18n('show QR'),
@@ -3681,10 +3689,13 @@ DNS-over-HTTPS with IP:
]
]
];
+ if (empty($c['routing']['rules'][0]['domain'])) {
+ unset($c['routing']['rules'][0]);
+ }
echo json_encode($c);
}
- public function singboxSubscription($key)
+ public function singboxSubscription($key, $fs = 0)
{
$pac = $this->getPacConf();
$domain = $pac['domain'] ?: $this->ip;
@@ -3693,12 +3704,15 @@ DNS-over-HTTPS with IP:
$flag = true;
foreach ($xr['inbounds'][0]['settings']['clients'] as $k => $v) {
if ($v['id'] == $key) {
+ if (!empty($fs)) {
+ return $this->userXr($k, 1);
+ }
$flag = false;
break;
}
}
if ($flag) {
- return;
+ return false;
}
$c = [
@@ -3820,7 +3834,10 @@ DNS-over-HTTPS with IP:
]
]
];
- echo json_encode($c);
+ if (empty($c['route']['rules'][1]['domain'])) {
+ unset($c['route']['rules'][1]);
+ }
+ return json_encode($c);
}
public function getXray()
diff --git a/app/index.php b/app/index.php
index a6ff686..b44c2c9 100644
--- a/app/index.php
+++ b/app/index.php
@@ -41,7 +41,18 @@ if ($hash == substr(md5($c['key']), 0, 8)) {
require __DIR__ . '/bot.php';
require __DIR__ . '/i18n.php';
$bot = new Bot($c['key'], $i);
- $bot->singboxSubscription($_GET['s']);
+ if (!empty($_GET['b'])) {
+ $fs = $bot->singboxSubscription($_GET['s'], 1);
+ $r = <<
+ sing-box
+
+ HTML;
+ } else {
+ header('Content-Type: application/json');
+ $r = $bot->singboxSubscription($_GET['s']);
+ }
+ echo $r;
exit;
default: