|
|
|
@@ -1076,23 +1076,27 @@ class Bot
|
|
|
|
|
public function checkBackup()
|
|
|
|
|
{
|
|
|
|
|
$c = $this->getPacConf();
|
|
|
|
|
$now = strtotime(date('Y-m-d H:i'));
|
|
|
|
|
if (!empty($c['backup'])) {
|
|
|
|
|
$now = strtotime(date('Y-m-d H:i:s'));
|
|
|
|
|
[$start, $period] = explode('/', $c['backup']);
|
|
|
|
|
$start = strtotime($start);
|
|
|
|
|
$period = strtotime($period, 0);
|
|
|
|
|
if (!empty($start) && !empty($period)) {
|
|
|
|
|
if ($now - $start >= $period && ($now - $start) % $period == 0) {
|
|
|
|
|
if (!empty($c['pinbackup'])) {
|
|
|
|
|
$this->pinAdmin($c['pinbackup'], 1);
|
|
|
|
|
}
|
|
|
|
|
$this->pinBackup();
|
|
|
|
|
$start = strtotime(trim($start));
|
|
|
|
|
$period = strtotime(trim($period), 0);
|
|
|
|
|
if (
|
|
|
|
|
!empty($start)
|
|
|
|
|
&& !empty($period)
|
|
|
|
|
&& empty($this->backup)
|
|
|
|
|
&& $now - $start >= $period
|
|
|
|
|
&& ($now - $start) % $period < 10
|
|
|
|
|
) {
|
|
|
|
|
if (!empty($c['pinbackup'])) {
|
|
|
|
|
$this->pinAdmin($c['pinbackup'], 1);
|
|
|
|
|
}
|
|
|
|
|
$this->pinBackup();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function cleanQueue()
|
|
|
|
|
public function cleanQueue(): void
|
|
|
|
|
{
|
|
|
|
|
$r = $this->request('deleteWebhook', []);
|
|
|
|
|
$r = $this->request('getUpdates', ['offset' => -1]);
|
|
|
|
@@ -1112,9 +1116,8 @@ class Bot
|
|
|
|
|
{
|
|
|
|
|
require __DIR__ . '/config.php';
|
|
|
|
|
$conf = $this->getPacConf();
|
|
|
|
|
$bot = $this->request('getMyName', [])['result']['name'];
|
|
|
|
|
$bot = preg_replace('~[\W]~iu', '_', $this->request('getMyName', [])['result']['name']);
|
|
|
|
|
$conf['pinbackup'] = $this->upload("{$bot}_export_" . date('d_m_Y_H_i') . '.json', $this->export(), $c['admin'][0])['result']['message_id'];
|
|
|
|
|
$conf['backup'] = implode(' / ', [date('Y-m-d H:i'), trim(explode('/', $conf['backup'])[1])]);
|
|
|
|
|
$this->setPacConf($conf);
|
|
|
|
|
$this->pinAdmin($conf['pinbackup']);
|
|
|
|
|
}
|
|
|
|
@@ -1324,7 +1327,7 @@ class Bot
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function importFile($file = false, $autoupdate = false)
|
|
|
|
|
public function importFile($file = false)
|
|
|
|
|
{
|
|
|
|
|
if (!empty($file)) {
|
|
|
|
|
$json = json_decode(file_get_contents($file), true);
|
|
|
|
@@ -1364,11 +1367,7 @@ class Bot
|
|
|
|
|
$this->update($this->input['chat'], $this->input['message_id'], implode("\n", $out));
|
|
|
|
|
$this->wg = 0;
|
|
|
|
|
$this->saveClients($json['wg']['clients']);
|
|
|
|
|
if (empty($autoupdate)) {
|
|
|
|
|
$this->restartWG($this->createConfig($json['wg']['server']), $switch_amnezia);
|
|
|
|
|
} else {
|
|
|
|
|
file_put_contents('/config/wg0.conf', $this->createConfig($json['wg']['server']));
|
|
|
|
|
}
|
|
|
|
|
$this->restartWG($this->createConfig($json['wg']['server']), $switch_amnezia);
|
|
|
|
|
$this->iptablesWG();
|
|
|
|
|
}
|
|
|
|
|
// wg1
|
|
|
|
@@ -1377,11 +1376,7 @@ class Bot
|
|
|
|
|
$this->update($this->input['chat'], $this->input['message_id'], implode("\n", $out));
|
|
|
|
|
$this->wg = 1;
|
|
|
|
|
$this->saveClients($json['wg1']['clients']);
|
|
|
|
|
if (empty($autoupdate)) {
|
|
|
|
|
$this->restartWG($this->createConfig($json['wg1']['server']), $switch_wg1amnezia);
|
|
|
|
|
} else {
|
|
|
|
|
file_put_contents('/config/wg1.conf', $this->createConfig($json['wg1']['server']));
|
|
|
|
|
}
|
|
|
|
|
$this->restartWG($this->createConfig($json['wg1']['server']), $switch_wg1amnezia);
|
|
|
|
|
$this->iptablesWG();
|
|
|
|
|
}
|
|
|
|
|
// ad
|
|
|
|
@@ -1808,8 +1803,9 @@ class Bot
|
|
|
|
|
$ip = getenv('IP');
|
|
|
|
|
$r = $this->send($c['admin'][0], "start $ip");
|
|
|
|
|
|
|
|
|
|
$this->input['chat'] = $c['admin'][0];
|
|
|
|
|
$this->input['message_id'] = $r['result']['message_id'];
|
|
|
|
|
$this->input['chat'] = $c['admin'][0];
|
|
|
|
|
$this->input['message_id'] = $r['result']['message_id'];
|
|
|
|
|
$this->input['callback_id'] = false;
|
|
|
|
|
if (empty($p['domain'])) {
|
|
|
|
|
$this->addDomain(str_replace('.', '-', $this->ip) . '.nip.io', 1);
|
|
|
|
|
$this->setSSL('letsencrypt');
|
|
|
|
@@ -4163,7 +4159,7 @@ DNS-over-HTTPS with IP:
|
|
|
|
|
$expose = $m[1];
|
|
|
|
|
$pass = htmlspecialchars($pac['ocserv']);
|
|
|
|
|
$text[] = "Menu -> OpenConnect";
|
|
|
|
|
if (!empty($m[1])) {
|
|
|
|
|
if (!empty($cs)) {
|
|
|
|
|
$text[] = "<code>https://oc.$domain/?$cs</code>";
|
|
|
|
|
}
|
|
|
|
|
$text[] = "password: <span class='tg-spoiler'>$pass</span>";
|
|
|
|
@@ -5763,7 +5759,7 @@ DNS-over-HTTPS with IP:
|
|
|
|
|
$r = $this->send($this->input['chat'], "import settings");
|
|
|
|
|
$this->input['message_id'] = $r['result']['message_id'];
|
|
|
|
|
$this->input['callback_id'] = $r['result']['message_id'];
|
|
|
|
|
$this->importFile($this->update, 1);
|
|
|
|
|
$this->importFile($this->update);
|
|
|
|
|
unlink($this->update);
|
|
|
|
|
}
|
|
|
|
|
file_put_contents('/update/message', '');
|
|
|
|
|