reset vless stats monthly
This commit is contained in:
+43
-2
@@ -162,6 +162,9 @@ class Bot
|
||||
case preg_match('~^/switchBanIp$~', $this->input['callback'], $m):
|
||||
$this->switchBanIp();
|
||||
break;
|
||||
case preg_match('~^/switchMonthlyStats$~', $this->input['callback'], $m):
|
||||
$this->switchMonthlyStats();
|
||||
break;
|
||||
case preg_match('~^/setIpLimit$~', $this->input['callback'], $m):
|
||||
$this->setIpLimit();
|
||||
break;
|
||||
@@ -1337,6 +1340,7 @@ class Bot
|
||||
$this->checkVersion();
|
||||
$this->checkBackup($period);
|
||||
$this->checkLogs($period);
|
||||
$this->checkResetXrayStats($period);
|
||||
$this->checkCert();
|
||||
$this->autoAnalyzeLogs();
|
||||
$this->xrayStatsUser();
|
||||
@@ -1444,6 +1448,29 @@ class Bot
|
||||
}
|
||||
}
|
||||
|
||||
public function checkResetXrayStats($delta)
|
||||
{
|
||||
$pac = $this->getPacConf();
|
||||
if (!empty($pac['reset_monthly'])) {
|
||||
$now = strtotime(date('Y-m-d H:i:s'));
|
||||
$start = strtotime('first day of previous month midnight');
|
||||
$period = strtotime('1 month', 0);
|
||||
if (
|
||||
!empty($start)
|
||||
&& !empty($period)
|
||||
&& empty($this->backup)
|
||||
&& $now - $start >= 0
|
||||
&& (($now - $start) % $period < $delta)
|
||||
) {
|
||||
$this->resetXrStats(1);
|
||||
require __DIR__ . '/config.php';
|
||||
foreach ($c['admin'] as $admin) {
|
||||
$this->send($admin, "vless: reset stats");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function checkLogs($delta)
|
||||
{
|
||||
$c = $this->getPacConf();
|
||||
@@ -4459,6 +4486,14 @@ DNS-over-HTTPS with IP:
|
||||
$this->ipMenu();
|
||||
}
|
||||
|
||||
public function switchMonthlyStats()
|
||||
{
|
||||
$c = $this->getPacConf();
|
||||
$c['reset_monthly'] = $c['reset_monthly'] ? 0 : 1;
|
||||
$this->setPacConf($c);
|
||||
$this->xray();
|
||||
}
|
||||
|
||||
public function switchIpLimit($limit)
|
||||
{
|
||||
$limit = explode(':', $limit);
|
||||
@@ -5440,11 +5475,13 @@ DNS-over-HTTPS with IP:
|
||||
$this->userXr($i);
|
||||
}
|
||||
|
||||
public function resetXrStats()
|
||||
public function resetXrStats($nomenu = false)
|
||||
{
|
||||
$this->restartXray($this->getXray());
|
||||
$this->setXrayStats([]);
|
||||
$this->xray();
|
||||
if (empty($nomenu)) {
|
||||
$this->xray();
|
||||
}
|
||||
}
|
||||
|
||||
public function listXr($i)
|
||||
@@ -5756,6 +5793,10 @@ DNS-over-HTTPS with IP:
|
||||
'text' => $this->i18n('reset stats') . ": ↓$td ↑$tu",
|
||||
'callback_data' => '/resetXrStats',
|
||||
],
|
||||
[
|
||||
'text' => $this->i18n('reset monthly') . ": " . $this->i18n($this->getPacConf()['reset_monthly'] ? 'on' : 'off'),
|
||||
'callback_data' => '/switchMonthlyStats',
|
||||
],
|
||||
];
|
||||
$data[] = [
|
||||
[
|
||||
|
||||
Reference in New Issue
Block a user