Compare commits

...

2 Commits

Author SHA1 Message Date
mercury 7ffd9c10c5 fix v2ray link 2024-04-09 02:24:50 +04:00
mercury 228b617bfc fix subscriptions + redirect link 2024-04-09 02:16:54 +04:00
3 changed files with 40 additions and 25 deletions
+21 -17
View File
@@ -3505,30 +3505,28 @@ DNS-over-HTTPS with IP:
);
}
public function userXr($i, $fs = 0)
public function userXr($i, $fs = 0, $fv = 0)
{
$c = $this->getXray();
$domain = $this->getPacConf()['domain'] ?: $this->ip;
$scheme = empty($this->nginxGetTypeCert()) ? 'http' : 'https';
$hash = substr(md5($this->key), 0, 8);
$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";
$c = $this->getXray();
$domain = $this->getPacConf()['domain'] ?: $this->ip;
$scheme = empty($this->nginxGetTypeCert()) ? 'http' : 'https';
$hash = substr(md5($this->key), 0, 8);
$v2ray = "$scheme://{$domain}/pac?h=$hash&t=s&b=1&s={$c['inbounds'][0]['settings']['clients'][$i]['id']}";
$sing = "$scheme://{$domain}/pac?h=$hash&t=si&b=1&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";
$fullv2ray = 'v2rayng://install-config?url=' . urlencode("$scheme://{$domain}/pac?h=$hash&t=s&s={$c['inbounds'][0]['settings']['clients'][$i]['id']}") . "#vpnbot$i";
if (!empty($fs)) {
return $fullsing;
}
if (!empty($fv)) {
return $fullv2ray;
}
$text[] = "Menu -> " . $this->i18n('xray') . " -> {$c['inbounds'][0]['settings']['clients'][$i]['email']}\n";
$text[] = "<code>{$this->linkXray($i)}</code>\n";
$text[] = "v2ray subscription: <code>$v2ray</code>";
$text[] = "sing-box subscription: <code>$sing</code>";
$text[] = "v2ray: <a href='$v2ray'>$v2ray</a>\n";
$text[] = "sing-box: <a href='$sing'>$sing</a>";
$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'),
@@ -3561,7 +3559,7 @@ DNS-over-HTTPS with IP:
);
}
public function v2raySubscription($key)
public function v2raySubscription($key, $fs = 0)
{
$pac = $this->getPacConf();
$domain = $pac['domain'] ?: $this->ip;
@@ -3570,6 +3568,9 @@ 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, 0, 1);
}
$flag = false;
break;
}
@@ -3691,6 +3692,8 @@ DNS-over-HTTPS with IP:
];
if (empty($c['routing']['rules'][0]['domain'])) {
unset($c['routing']['rules'][0]);
$c['routing']['rules'] = array_values($c['routing']['rules']);
}
echo json_encode($c);
}
@@ -3836,6 +3839,7 @@ DNS-over-HTTPS with IP:
];
if (empty($c['route']['rules'][1]['domain'])) {
unset($c['route']['rules'][1]);
$c['route']['rules'] = array_values($c['route']['rules']);
}
return json_encode($c);
}
+11 -8
View File
@@ -34,7 +34,14 @@ if ($hash == substr(md5($c['key']), 0, 8)) {
require __DIR__ . '/bot.php';
require __DIR__ . '/i18n.php';
$bot = new Bot($c['key'], $i);
$bot->v2raySubscription($_GET['s']);
if (!empty($_GET['b'])) {
$fs = $bot->v2raySubscription($_GET['s'], 1);
header("Location: $fs");
exit;
} else {
header('Content-Type: application/json');
echo $bot->v2raySubscription($_GET['s']);
}
exit;
case 'si':
@@ -43,16 +50,12 @@ if ($hash == substr(md5($c['key']), 0, 8)) {
$bot = new Bot($c['key'], $i);
if (!empty($_GET['b'])) {
$fs = $bot->singboxSubscription($_GET['s'], 1);
$r = <<<HTML
<div style='width:100%;height:100%;text-align:center;'>
<a style='padding: 20px; border: 1px outset buttonborder; border-radius: 3px; color: buttontext; background-color: buttonface; text-decoration: none; height: 30px; display: inline-block; width: 50%; line-height: 30px;' href='$fs' target='_blank'>sing-box</a>
</div>
HTML;
header("Location: $fs");
exit;
} else {
header('Content-Type: application/json');
$r = $bot->singboxSubscription($_GET['s']);
echo $bot->singboxSubscription($_GET['s']);
}
echo $r;
exit;
default:
+8
View File
@@ -1,3 +1,11 @@
09.04.2024 v1.15.2
- фикс подписки v2ray
09.04.2024 v1.15.2
- редиректы вместо кнопки-подписки
- фикс добавления подписки
09.04.2024 v1.15.1
- кнопка sing-box
- фикс пустого списка РАС для sing-box
09.04.2024 v1.15.1
- кнопка sing-box
- фикс пустого списка РАС для sing-box