Merge pull request #45 from denied1011/mtproto-adtag
Add MTProto adtag setting in bot UI
This commit is contained in:
+48
-1
@@ -651,6 +651,9 @@ class Bot
|
||||
case preg_match('~^/changeTGDomain$~', $this->input['callback'], $m):
|
||||
$this->changeTGDomain();
|
||||
break;
|
||||
case preg_match('~^/setTGAdtag$~', $this->input['callback'], $m):
|
||||
$this->changeTGAdtag();
|
||||
break;
|
||||
case preg_match('~^/include (\w+)$~', $this->input['callback'], $m):
|
||||
$this->include($m[1]);
|
||||
break;
|
||||
@@ -731,14 +734,32 @@ class Bot
|
||||
$this->mtproto();
|
||||
}
|
||||
|
||||
public function setTelegramAdtag($adtag)
|
||||
{
|
||||
$adtag = trim($adtag);
|
||||
if ($adtag === '0') {
|
||||
$adtag = '';
|
||||
} elseif (!preg_match('~^[a-f0-9]{32}$~i', $adtag)) {
|
||||
$this->update($this->input['chat'], $this->input['message_id'], 'wrong adtag');
|
||||
sleep(2);
|
||||
$this->mtproto();
|
||||
return;
|
||||
}
|
||||
file_put_contents('/config/mtprotoadtag', strtolower($adtag));
|
||||
$this->restartTG();
|
||||
$this->mtproto();
|
||||
}
|
||||
|
||||
public function restartTG()
|
||||
{
|
||||
$secret = file_get_contents('/config/mtprotosecret');
|
||||
$fakedomain = file_get_contents('/config/mtprotodomain') ?: 'yandex.ru';
|
||||
$adtag = trim(file_exists('/config/mtprotoadtag') ? file_get_contents('/config/mtprotoadtag') : '');
|
||||
$this->ssh('pkill mtproto-proxy', 'tg');
|
||||
if (preg_match('~^\w{32}$~', $secret)) {
|
||||
$p = getenv('TGPORT');
|
||||
$this->ssh("mtproto-proxy --domain $fakedomain -u nobody -H $p --nat-info 10.10.0.8:{$this->ip} -S $secret --aes-pwd /proxy-secret /proxy-multi.conf -M 1", 'tg', false, '/logs/mtproto');
|
||||
$proxyTag = $adtag ? " -P " . escapeshellarg($adtag) : '';
|
||||
$this->ssh("mtproto-proxy --domain $fakedomain -u nobody -H $p --nat-info 10.10.0.8:{$this->ip} -S $secret --aes-pwd /proxy-secret /proxy-multi.conf -M 1$proxyTag", 'tg', false, '/logs/mtproto');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -835,10 +856,12 @@ class Bot
|
||||
public function mtproto()
|
||||
{
|
||||
$d = file_get_contents('/config/mtprotodomain') ?: 'yandex.ru';
|
||||
$adtag = trim(file_exists('/config/mtprotoadtag') ? file_get_contents('/config/mtprotoadtag') : '');
|
||||
$st = $this->ssh('pgrep mtproto-proxy', 'tg') ? 'on' : 'off';
|
||||
$text[] = "Menu -> MTProto\n";
|
||||
$text[] = "status: $st\n";
|
||||
$text[] = "fake domain: <code>$d</code>\n";
|
||||
$text[] = "adtag: <code>" . ($adtag ?: 'off') . "</code>\n";
|
||||
if ($st == 'on') {
|
||||
$text[] = $this->linkMtproto();
|
||||
}
|
||||
@@ -860,6 +883,12 @@ class Bot
|
||||
'callback_data' => "/changeTGDomain",
|
||||
],
|
||||
];
|
||||
$data[] = [
|
||||
[
|
||||
'text' => $this->i18n('setAdTag'),
|
||||
'callback_data' => "/setTGAdtag",
|
||||
],
|
||||
];
|
||||
$data[] = [
|
||||
[
|
||||
'text' => $this->i18n('show QR'),
|
||||
@@ -1850,6 +1879,7 @@ class Bot
|
||||
] : false,
|
||||
'mtproto' => file_get_contents('/config/mtprotosecret'),
|
||||
'mtprotodomain' => file_get_contents('/config/mtprotodomain'),
|
||||
'mtprotoadtag' => file_exists('/config/mtprotoadtag') ? file_get_contents('/config/mtprotoadtag') : '',
|
||||
'xray' => $this->getXray(),
|
||||
'hy' => yaml_parse_file('/config/hysteria.yaml'),
|
||||
'oc' => file_get_contents('/config/ocserv.conf'),
|
||||
@@ -1959,6 +1989,7 @@ class Bot
|
||||
$this->update($this->input['chat'], $this->input['message_id'], implode("\n", $out));
|
||||
file_put_contents('/config/mtprotosecret', $json['mtproto']);
|
||||
file_put_contents('/config/mtprotodomain', $json['mtprotodomain'] ?: '');
|
||||
file_put_contents('/config/mtprotoadtag', trim($json['mtprotoadtag'] ?? ''));
|
||||
$this->restartTG();
|
||||
}
|
||||
// hwid
|
||||
@@ -9124,6 +9155,22 @@ DNS-over-HTTPS with IP:
|
||||
];
|
||||
}
|
||||
|
||||
public function changeTGAdtag()
|
||||
{
|
||||
$r = $this->send(
|
||||
$this->input['chat'],
|
||||
"@{$this->input['username']} enter adtag or 0 for disable",
|
||||
$this->input['message_id'],
|
||||
reply: 'enter adtag or 0 for disable',
|
||||
);
|
||||
$_SESSION['reply'][$r['result']['message_id']] = [
|
||||
'start_message' => $this->input['message_id'],
|
||||
'start_callback' => $this->input['callback_id'],
|
||||
'callback' => 'setTelegramAdtag',
|
||||
'args' => [],
|
||||
];
|
||||
}
|
||||
|
||||
public function setFakeDomain($domain, $self = false)
|
||||
{
|
||||
$c = $this->getXray();
|
||||
|
||||
@@ -261,6 +261,10 @@ $i = [
|
||||
'en' => 'setSecret',
|
||||
'ru' => 'установить свой ключ',
|
||||
],
|
||||
'setAdTag' => [
|
||||
'en' => 'set adtag',
|
||||
'ru' => 'установить adtag',
|
||||
],
|
||||
'defaultDNS' => [
|
||||
'en' => 'defaultDNS',
|
||||
'ru' => 'дефолтный днс',
|
||||
|
||||
Reference in New Issue
Block a user