Small secret chat fixes
This commit is contained in:
parent
b325357016
commit
dd06d6c92e
@ -87,7 +87,7 @@ $calls = [];
|
|||||||
$users = [];
|
$users = [];
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
while (1) {
|
while (1) {
|
||||||
$updates = $MadelineProto->API->get_updates(['offset' => $offset, 'limit' => 50, 'timeout' => 0]); // Just like in the bot API, you can specify an offset, a limit and a timeout
|
$updates = $MadelineProto->API->get_updates(['offset' => $offset, 'limit' => 500, 'timeout' => 0]); // Just like in the bot API, you can specify an offset, a limit and a timeout
|
||||||
foreach ($MadelineProto->programmed_call as $key => $pair) {
|
foreach ($MadelineProto->programmed_call as $key => $pair) {
|
||||||
list($user, $time) = $pair;
|
list($user, $time) = $pair;
|
||||||
if ($time < time()) {
|
if ($time < time()) {
|
||||||
|
@ -91,10 +91,48 @@ while (true) {
|
|||||||
if (isset($sent[$update['update']['message']['chat_id']])) {
|
if (isset($sent[$update['update']['message']['chat_id']])) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
$secret = $update['update']['message']['chat_id'];
|
||||||
|
$secret_media = [];
|
||||||
|
|
||||||
|
// Photo uploaded as document, secret chat
|
||||||
|
$inputEncryptedFile = $MadelineProto->upload_encrypted('tests/faust.jpg', 'fausticorn.jpg'); // This gets an inputFile object with file name magic
|
||||||
|
$secret_media['document_photo'] = ['peer' => $secret, 'file' => $inputEncryptedFile, 'message' => ['_' => 'decryptedMessage', 'ttl' => 0, 'message' => '', 'media' => ['_' => 'decryptedMessageMediaDocument', 'thumb' => file_get_contents('tests/faust.preview.jpg'), 'thumb_w' => 90, 'thumb_h' => 90, 'mime_type' => mime_content_type('tests/faust.jpg'), 'caption' => 'This file was uploaded using MadelineProto', 'key' => $inputEncryptedFile['key'], 'iv' => $inputEncryptedFile['iv'], 'file_name' => 'faust.jpg', 'size' => filesize('tests/faust.jpg'), 'attributes' => [['_' => 'documentAttributeImageSize', 'w' => 1280, 'h' => 914]]]]];
|
||||||
|
|
||||||
|
// Photo, secret chat
|
||||||
|
$secret_media['photo'] = ['peer' => $secret, 'file' => $inputEncryptedFile, 'message' => ['_' => 'decryptedMessage', 'ttl' => 0, 'message' => '', 'media' => ['_' => 'decryptedMessageMediaPhoto', 'thumb' => file_get_contents('tests/faust.preview.jpg'), 'thumb_w' => 90, 'thumb_h' => 90, 'caption' => 'This file was uploaded using MadelineProto', 'key' => $inputEncryptedFile['key'], 'iv' => $inputEncryptedFile['iv'], 'size' => filesize('tests/faust.jpg'), 'w' => 1280, 'h' => 914]]];
|
||||||
|
|
||||||
|
// GIF, secret chat
|
||||||
|
$inputEncryptedFile = $MadelineProto->upload_encrypted('tests/pony.mp4');
|
||||||
|
$secret_media['gif'] = ['peer' => $secret, 'file' => $inputEncryptedFile, 'message' => ['_' => 'decryptedMessage', 'ttl' => 0, 'message' => '', 'media' => ['_' => 'decryptedMessageMediaDocument', 'thumb' => file_get_contents('tests/pony.preview.jpg'), 'thumb_w' => 90, 'thumb_h' => 90, 'mime_type' => mime_content_type('tests/pony.mp4'), 'caption' => 'test', 'key' => $inputEncryptedFile['key'], 'iv' => $inputEncryptedFile['iv'], 'file_name' => 'pony.mp4', 'size' => filesize('tests/faust.jpg'), 'attributes' => [['_' => 'documentAttributeAnimated']]]]];
|
||||||
|
|
||||||
|
// Sticker, secret chat
|
||||||
|
$inputEncryptedFile = $MadelineProto->upload_encrypted('tests/lel.webp');
|
||||||
|
$secret_media['sticker'] = ['peer' => $secret, 'file' => $inputEncryptedFile, 'message' => ['_' => 'decryptedMessage', 'ttl' => 0, 'message' => '', 'media' => ['_' => 'decryptedMessageMediaDocument', 'thumb' => file_get_contents('tests/lel.preview.jpg'), 'thumb_w' => 90, 'thumb_h' => 90, 'mime_type' => mime_content_type('tests/lel.webp'), 'caption' => 'test', 'key' => $inputEncryptedFile['key'], 'iv' => $inputEncryptedFile['iv'], 'file_name' => 'lel.webp', 'size' => filesize('tests/lel.webp'), 'attributes' => [['_' => 'documentAttributeSticker', 'alt' => 'LEL', 'stickerset' => ['_' => 'inputStickerSetEmpty']]]]]];
|
||||||
|
|
||||||
|
// Document, secrey chat
|
||||||
|
$time = time();
|
||||||
|
$inputEncryptedFile = $MadelineProto->upload_encrypted('tests/60', 'magic'); // This gets an inputFile object with file name magic
|
||||||
|
var_dump(time() - $time);
|
||||||
|
$secret_media['document'] = ['peer' => $secret, 'file' => $inputEncryptedFile, 'message' => ['_' => 'decryptedMessage', 'ttl' => 0, 'message' => '', 'media' => ['_' => 'decryptedMessageMediaDocument', 'thumb' => file_get_contents('tests/faust.preview.jpg'), 'thumb_w' => 90, 'thumb_h' => 90, 'mime_type' => 'magic/magic', 'caption' => 'test', 'key' => $inputEncryptedFile['key'], 'iv' => $inputEncryptedFile['iv'], 'file_name' => 'magic.magic', 'size' => filesize('tests/60'), 'attributes' => [['_' => 'documentAttributeFilename', 'file_name' => 'fairy']]]]];
|
||||||
|
|
||||||
|
// Video, secret chat
|
||||||
|
$inputEncryptedFile = $MadelineProto->upload_encrypted('tests/swing.mp4');
|
||||||
|
$secret_media['video'] = ['peer' => $secret, 'file' => $inputEncryptedFile, 'message' => ['_' => 'decryptedMessage', 'ttl' => 0, 'message' => '', 'media' => ['_' => 'decryptedMessageMediaDocument', 'thumb' => file_get_contents('tests/swing.preview.jpg'), 'thumb_w' => 90, 'thumb_h' => 90, 'mime_type' => mime_content_type('tests/swing.mp4'), 'caption' => 'test', 'key' => $inputEncryptedFile['key'], 'iv' => $inputEncryptedFile['iv'], 'file_name' => 'swing.mp4', 'size' => filesize('tests/swing.mp4'), 'attributes' => [['_' => 'documentAttributeVideo', 'duration' => 5, 'w' => 1280, 'h' => 720]]]]];
|
||||||
|
|
||||||
|
// audio, secret chat
|
||||||
|
$inputEncryptedFile = $MadelineProto->upload_encrypted('tests/mosconi.mp3');
|
||||||
|
$secret_media['audio'] = ['peer' => $secret, 'file' => $inputEncryptedFile, 'message' => ['_' => 'decryptedMessage', 'ttl' => 0, 'message' => '', 'media' => ['_' => 'decryptedMessageMediaDocument', 'thumb' => file_get_contents('tests/faust.preview.jpg'), 'thumb_w' => 90, 'thumb_h' => 90, 'mime_type' => mime_content_type('tests/mosconi.mp3'), 'caption' => 'test', 'key' => $inputEncryptedFile['key'], 'iv' => $inputEncryptedFile['iv'], 'file_name' => 'mosconi.mp3', 'size' => filesize('tests/mosconi.mp3'), 'attributes' => [['_' => 'documentAttributeAudio', 'voice' => false, 'duration' => 1, 'title' => 'AH NON LO SO IO', 'performer' => 'IL DIO GERMANO MOSCONI']]]]];
|
||||||
|
|
||||||
|
$secret_media['voice'] = ['peer' => $secret, 'file' => $inputEncryptedFile, 'message' => ['_' => 'decryptedMessage', 'ttl' => 0, 'message' => '', 'media' => ['_' => 'decryptedMessageMediaDocument', 'thumb' => file_get_contents('tests/faust.preview.jpg'), 'thumb_w' => 90, 'thumb_h' => 90, 'mime_type' => mime_content_type('tests/mosconi.mp3'), 'caption' => 'test', 'key' => $inputEncryptedFile['key'], 'iv' => $inputEncryptedFile['iv'], 'file_name' => 'mosconi.mp3', 'size' => filesize('tests/mosconi.mp3'), 'attributes' => [['_' => 'documentAttributeAudio', 'voice' => true, 'duration' => 1, 'title' => 'AH NON LO SO IO', 'performer' => 'IL DIO GERMANO MOSCONI']]]]];
|
||||||
|
|
||||||
|
foreach ($secret_media as $type => $smessage) {
|
||||||
|
$type = $MadelineProto->messages->sendEncryptedFile($smessage);
|
||||||
|
}
|
||||||
|
|
||||||
$i = 0;
|
$i = 0;
|
||||||
while ($i < $argv[1]) {
|
while ($i < $argv[1]) {
|
||||||
echo "SENDING MESSAGE $i TO ".$update['update']['message']['chat_id'].PHP_EOL;
|
echo "SENDING MESSAGE $i TO ".$update['update']['message']['chat_id'].PHP_EOL;
|
||||||
$MadelineProto->messages->sendEncrypted(['peer' => $update['update']['message']['chat_id'], 'message' => ['_' => 'decryptedMessage', 'ttl' => 0, 'message' => $i++]]);
|
$MadelineProto->messages->sendEncrypted(['peer' => $update['update']['message']['chat_id'], 'message' => ['_' => 'decryptedMessage', 'ttl' => 0, 'message' => (string) ($i++)]]);
|
||||||
\danog\MadelineProto\Serialization::serialize('s.madeline', $MadelineProto);
|
\danog\MadelineProto\Serialization::serialize('s.madeline', $MadelineProto);
|
||||||
}
|
}
|
||||||
$sent[$update['update']['message']['chat_id']] = true;
|
$sent[$update['update']['message']['chat_id']] = true;
|
||||||
@ -105,5 +143,6 @@ while (true) {
|
|||||||
} catch (\danog\MadelineProto\Exception $e) {
|
} catch (\danog\MadelineProto\Exception $e) {
|
||||||
var_dump($e->getMessage());
|
var_dump($e->getMessage());
|
||||||
}
|
}
|
||||||
|
//sleep(1);
|
||||||
echo 'Wrote '.\danog\MadelineProto\Serialization::serialize('s.madeline', $MadelineProto).' bytes'.PHP_EOL;
|
echo 'Wrote '.\danog\MadelineProto\Serialization::serialize('s.madeline', $MadelineProto).' bytes'.PHP_EOL;
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ $songs = [
|
|||||||
'Caravan Palace - Lone Digger' => 'inputb.raw',
|
'Caravan Palace - Lone Digger' => 'inputb.raw',
|
||||||
'Postmodern Jukebox - Thrift Shop' => 'inputd.raw',
|
'Postmodern Jukebox - Thrift Shop' => 'inputd.raw',
|
||||||
];
|
];
|
||||||
|
$songs = glob('*raw');
|
||||||
for ($x = 0; $x < count($songs); $x++) {
|
for ($x = 0; $x < count($songs); $x++) {
|
||||||
shuffle($songs);
|
shuffle($songs);
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ trait Files
|
|||||||
$iv = $this->random(32);
|
$iv = $this->random(32);
|
||||||
$digest = hash('md5', $key.$iv, true);
|
$digest = hash('md5', $key.$iv, true);
|
||||||
$fingerprint = $this->unpack_signed_int(substr($digest, 0, 4) ^ substr($digest, 4, 4));
|
$fingerprint = $this->unpack_signed_int(substr($digest, 0, 4) ^ substr($digest, 4, 4));
|
||||||
$ige = new \phpseclib\Crypt\AES(\phpseclib\Crypt\AES::MODE_IGE);
|
$ige = new \phpseclib\Crypt\AES('ige');
|
||||||
$ige->setIV($iv);
|
$ige->setIV($iv);
|
||||||
$ige->setKey($key);
|
$ige->setKey($key);
|
||||||
$ige->enableContinuousBuffer();
|
$ige->enableContinuousBuffer();
|
||||||
@ -73,7 +73,7 @@ trait Files
|
|||||||
$constructor['key_fingerprint'] = $fingerprint;
|
$constructor['key_fingerprint'] = $fingerprint;
|
||||||
$constructor['key'] = $key;
|
$constructor['key'] = $key;
|
||||||
$constructor['iv'] = $iv;
|
$constructor['iv'] = $iv;
|
||||||
// $constructor['md5_checksum'] = '';
|
$constructor['md5_checksum'] = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
return $constructor;
|
return $constructor;
|
||||||
@ -274,7 +274,7 @@ trait Files
|
|||||||
if ($fingerprint !== $message_media['key_fingerprint']) {
|
if ($fingerprint !== $message_media['key_fingerprint']) {
|
||||||
throw new \danog\MadelineProto\Exception('Fingerprint mismatch!');
|
throw new \danog\MadelineProto\Exception('Fingerprint mismatch!');
|
||||||
}
|
}
|
||||||
$ige = new \phpseclib\Crypt\AES(\phpseclib\Crypt\AES::MODE_IGE);
|
$ige = new \phpseclib\Crypt\AES('ige');
|
||||||
$ige->setIV($message_media['iv']);
|
$ige->setIV($message_media['iv']);
|
||||||
$ige->setKey($message_media['key']);
|
$ige->setKey($message_media['key']);
|
||||||
$ige->enableContinuousBuffer();
|
$ige->enableContinuousBuffer();
|
||||||
|
@ -19,9 +19,10 @@ trait ResponseHandler
|
|||||||
{
|
{
|
||||||
public function handle_decrypted_update($update)
|
public function handle_decrypted_update($update)
|
||||||
{
|
{
|
||||||
if (isset($update['message']['decrypted_message']['random_bytes']) && strlen($update['message']['decrypted_message']['random_bytes']) < 15) {
|
/*if (isset($update['message']['decrypted_message']['random_bytes']) && strlen($update['message']['decrypted_message']['random_bytes']) < 15) {
|
||||||
throw new \danog\MadelineProto\ResponseException(\danog\MadelineProto\Lang::$current_lang['rand_bytes_too_short']);
|
throw new \danog\MadelineProto\ResponseException(\danog\MadelineProto\Lang::$current_lang['rand_bytes_too_short']);
|
||||||
}
|
}*/ // already checked in TL.php
|
||||||
|
//var_dump($update);
|
||||||
switch ($update['message']['decrypted_message']['_']) {
|
switch ($update['message']['decrypted_message']['_']) {
|
||||||
case 'decryptedMessageService':
|
case 'decryptedMessageService':
|
||||||
switch ($update['message']['decrypted_message']['action']['_']) {
|
switch ($update['message']['decrypted_message']['action']['_']) {
|
||||||
|
Loading…
Reference in New Issue
Block a user