Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7a4583c036 | |||
| 7ffd9c10c5 | |||
| 228b617bfc | |||
| 9749677b86 | |||
| 045a849be8 |
+37
-16
@@ -3505,21 +3505,27 @@ DNS-over-HTTPS with IP:
|
||||
);
|
||||
}
|
||||
|
||||
public function userXr($i)
|
||||
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[] = [
|
||||
[
|
||||
@@ -3553,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;
|
||||
@@ -3562,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;
|
||||
}
|
||||
@@ -3681,10 +3690,15 @@ 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);
|
||||
}
|
||||
|
||||
public function singboxSubscription($key)
|
||||
public function singboxSubscription($key, $fs = 0)
|
||||
{
|
||||
$pac = $this->getPacConf();
|
||||
$domain = $pac['domain'] ?: $this->ip;
|
||||
@@ -3693,12 +3707,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 = [
|
||||
@@ -3808,7 +3825,7 @@ DNS-over-HTTPS with IP:
|
||||
"outbound" => "dns-out"
|
||||
],
|
||||
[
|
||||
"domain" => array_keys(array_filter($pac['includelist'])),
|
||||
"domain_suffix" => array_keys(array_filter($pac['includelist'])),
|
||||
"outbound" => "proxy"
|
||||
],
|
||||
[
|
||||
@@ -3820,7 +3837,11 @@ DNS-over-HTTPS with IP:
|
||||
]
|
||||
]
|
||||
];
|
||||
echo json_encode($c);
|
||||
if (empty($c['route']['rules'][1]['domain_suffix'])) {
|
||||
unset($c['route']['rules'][1]);
|
||||
$c['route']['rules'] = array_values($c['route']['rules']);
|
||||
}
|
||||
return json_encode($c);
|
||||
}
|
||||
|
||||
public function getXray()
|
||||
|
||||
+16
-2
@@ -34,14 +34,28 @@ 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':
|
||||
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);
|
||||
header("Location: $fs");
|
||||
exit;
|
||||
} else {
|
||||
header('Content-Type: application/json');
|
||||
echo $bot->singboxSubscription($_GET['s']);
|
||||
}
|
||||
exit;
|
||||
|
||||
default:
|
||||
|
||||
@@ -1,3 +1,16 @@
|
||||
09.04.2024 v1.15.4
|
||||
- замена domain на domain_suffix
|
||||
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
|
||||
08.04.2024 v1.15
|
||||
- подписка с маршрутизацией для singbox
|
||||
07.04.2024 v1.14
|
||||
|
||||
Reference in New Issue
Block a user