on/off xtls users
This commit is contained in:
+45
-18
@@ -281,6 +281,9 @@ class Bot
|
||||
case preg_match('~^/timerXr (\d+)$~', $this->input['callback'], $m):
|
||||
$this->timerXr($m[1]);
|
||||
break;
|
||||
case preg_match('~^/switchXr (\d+)$~', $this->input['callback'], $m):
|
||||
$this->switchXr($m[1]);
|
||||
break;
|
||||
case preg_match('~^/delxr (\d+)$~', $this->input['callback'], $m):
|
||||
$this->delxr($m[1]);
|
||||
break;
|
||||
@@ -1046,16 +1049,11 @@ class Bot
|
||||
{
|
||||
try {
|
||||
$c = $this->getXray();
|
||||
$f = 0;
|
||||
foreach ($c['inbounds'][0]['settings']['clients'] as $k => $v) {
|
||||
if (!empty($v['time']) && $v['time'] < time()) {
|
||||
unset($c['inbounds'][0]['settings']['clients'][$k]);
|
||||
$f = 1;
|
||||
if (!empty($v['time']) && ($v['time'] < time())) {
|
||||
$this->switchXr($k, 1);
|
||||
}
|
||||
}
|
||||
if (!empty($f)) {
|
||||
$this->restartXray($c);
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
}
|
||||
@@ -3506,16 +3504,42 @@ DNS-over-HTTPS with IP:
|
||||
|
||||
public function setTimerXr($time, $i)
|
||||
{
|
||||
$time = strtotime($time);
|
||||
if ($time === false) {
|
||||
$this->send($this->input['chat'], 'wrong format');
|
||||
return;
|
||||
}
|
||||
$c = $this->getXray();
|
||||
if (empty($time)) {
|
||||
unset($c['inbounds'][0]['settings']['clients'][$i]['time']);
|
||||
} else {
|
||||
$c['inbounds'][0]['settings']['clients'][$i]['time'] = strtotime($time);
|
||||
if (!empty($c['inbounds'][0]['settings']['clients'][$i]['off'])) {
|
||||
$this->switchXr($i, 1);
|
||||
$c = $this->getXray();
|
||||
}
|
||||
$c['inbounds'][0]['settings']['clients'][$i]['time'] = $time;
|
||||
}
|
||||
file_put_contents('/config/xray.json', json_encode($c, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
|
||||
$this->userXr($i);
|
||||
}
|
||||
|
||||
public function switchXr($i, $nm = 0)
|
||||
{
|
||||
$c = $this->getXray();
|
||||
unset($c['inbounds'][0]['settings']['clients'][$i]['time']);
|
||||
if (empty($c['inbounds'][0]['settings']['clients'][$i]['off'])) {
|
||||
$c['inbounds'][0]['settings']['clients'][$i]['off'] = $c['inbounds'][0]['settings']['clients'][$i]['id'];
|
||||
$c['inbounds'][0]['settings']['clients'][$i]['id'] = trim($this->ssh('xray uuid', 'xr'));
|
||||
} else {
|
||||
$c['inbounds'][0]['settings']['clients'][$i]['id'] = $c['inbounds'][0]['settings']['clients'][$i]['off'];
|
||||
unset($c['inbounds'][0]['settings']['clients'][$i]['off']);
|
||||
}
|
||||
$this->restartXray($c);
|
||||
if (empty($nm)) {
|
||||
$this->userXr($i);
|
||||
}
|
||||
}
|
||||
|
||||
public function renXrUs($name, $i)
|
||||
{
|
||||
$c = $this->getXray();
|
||||
@@ -3552,7 +3576,7 @@ DNS-over-HTTPS with IP:
|
||||
$time = $v['time'] ? $this->getTime($v['time']) : '';
|
||||
$data[] = [
|
||||
[
|
||||
'text' => "{$v['email']}" . ($time ? ": $time" : ''),
|
||||
'text' => $this->i18n($v['off'] ? 'off' : 'on') . " {$v['email']}" . ($time ? ": $time" : ''),
|
||||
'callback_data' => "/userXr $k",
|
||||
],
|
||||
];
|
||||
@@ -3593,15 +3617,15 @@ DNS-over-HTTPS with IP:
|
||||
$text[] = "v2ray: <a href='$v2ray'>$v2ray</a>\n";
|
||||
$text[] = "sing-box: <a href='$sing'>$sing</a>";
|
||||
|
||||
if ($time = $c['inbounds'][0]['settings']['clients'][$i]['time']) {
|
||||
$text[] = "\ntimer: " . $this->getTime($time);
|
||||
}
|
||||
|
||||
$data[] = [
|
||||
[
|
||||
'text' => $this->i18n('timer'),
|
||||
'text' => $c['inbounds'][0]['settings']['clients'][$i]['time'] ? "timer: " . $this->getTime($c['inbounds'][0]['settings']['clients'][$i]['time']) : $this->i18n('timer'),
|
||||
'callback_data' => "/timerXr $i",
|
||||
],
|
||||
[
|
||||
'text' => $this->i18n($c['inbounds'][0]['settings']['clients'][$i]['off'] ? 'off' : 'on'),
|
||||
'callback_data' => "/switchXr $i",
|
||||
],
|
||||
];
|
||||
$data[] = [
|
||||
[
|
||||
@@ -3647,7 +3671,9 @@ DNS-over-HTTPS with IP:
|
||||
if (!empty($fs)) {
|
||||
return $this->userXr($k, 0, 1);
|
||||
}
|
||||
$flag = false;
|
||||
if (empty($v['off'])) {
|
||||
$flag = false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -3684,7 +3710,10 @@ DNS-over-HTTPS with IP:
|
||||
if (!empty($fs)) {
|
||||
return $this->userXr($k, 1);
|
||||
}
|
||||
$flag = false;
|
||||
if (empty($v['off'])) {
|
||||
$flag = false;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -3692,8 +3721,6 @@ DNS-over-HTTPS with IP:
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
$c = json_decode(file_get_contents('/config/sing.json'), true);
|
||||
|
||||
if ($c['dns']['servers'][0]['address'] == '~dns~') {
|
||||
|
||||
Reference in New Issue
Block a user