mirror of
https://github.com/danog/MadelineProto.git
synced 2024-12-02 10:17:46 +01:00
Important bugfixes
This commit is contained in:
parent
dba6b91f41
commit
08a3a00c13
@ -4,4 +4,6 @@ To contribute to this project simply fork it, make all improvements, commit chan
|
|||||||
|
|
||||||
If you have an issue, please *always* upload MadelineProto logs from when the error occurred to hastebin or similar websites.
|
If you have an issue, please *always* upload MadelineProto logs from when the error occurred to hastebin or similar websites.
|
||||||
|
|
||||||
|
If you make breaking changes, make sure to increase the number returned by the getV function on line 54 of API.php.
|
||||||
|
|
||||||
Bye :)
|
Bye :)
|
||||||
|
@ -12,7 +12,7 @@ PHP implementation of MTProto, based on [telepy](https://github.com/griganton/te
|
|||||||
|
|
||||||
This project can run on PHP 7 and HHVM, only 64 bit systems are supported ATM.
|
This project can run on PHP 7 and HHVM, only 64 bit systems are supported ATM.
|
||||||
|
|
||||||
Also note that MadelineProto will perform better if a big math extension like gmp or bcmath is installed.
|
Also note that MadelineProto will perform better if python and a big math extension like gmp or bcmath are installed.
|
||||||
|
|
||||||
This project is in beta state.
|
This project is in beta state.
|
||||||
|
|
||||||
|
6
bot.php
6
bot.php
@ -14,14 +14,16 @@ If not, see <http://www.gnu.org/licenses/>.
|
|||||||
require 'vendor/autoload.php';
|
require 'vendor/autoload.php';
|
||||||
$settings = [];
|
$settings = [];
|
||||||
|
|
||||||
|
try {
|
||||||
$MadelineProto = \danog\MadelineProto\Serialization::deserialize('bot.madeline');
|
$MadelineProto = \danog\MadelineProto\Serialization::deserialize('bot.madeline');
|
||||||
|
} catch (\danog\MadelineProto\Exception $e) {
|
||||||
if (file_exists('token.php') && $MadelineProto === false) {
|
if (file_exists('token.php')) {
|
||||||
include_once 'token.php';
|
include_once 'token.php';
|
||||||
$MadelineProto = new \danog\MadelineProto\API($settings);
|
$MadelineProto = new \danog\MadelineProto\API($settings);
|
||||||
$authorization = $MadelineProto->bot_login($token);
|
$authorization = $MadelineProto->bot_login($token);
|
||||||
\danog\MadelineProto\Logger::log([$authorization], \danog\MadelineProto\Logger::NOTICE);
|
\danog\MadelineProto\Logger::log([$authorization], \danog\MadelineProto\Logger::NOTICE);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
while (true) {
|
while (true) {
|
||||||
$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' => 50, 'timeout' => 0]); // Just like in the bot API, you can specify an offset, a limit and a timeout
|
||||||
|
@ -41,7 +41,7 @@ class API extends APIFactory
|
|||||||
\danog\MadelineProto\Logger::log(['Pong: '.$pong['ping_id']], Logger::ULTRA_VERBOSE);
|
\danog\MadelineProto\Logger::log(['Pong: '.$pong['ping_id']], Logger::ULTRA_VERBOSE);
|
||||||
\danog\MadelineProto\Logger::log(['Getting future salts...'], Logger::ULTRA_VERBOSE);
|
\danog\MadelineProto\Logger::log(['Getting future salts...'], Logger::ULTRA_VERBOSE);
|
||||||
$this->future_salts = $this->get_future_salts([3]);
|
$this->future_salts = $this->get_future_salts([3]);
|
||||||
|
$this->v = $this->getV();
|
||||||
\danog\MadelineProto\Logger::log(['MadelineProto is ready!'], Logger::NOTICE);
|
\danog\MadelineProto\Logger::log(['MadelineProto is ready!'], Logger::NOTICE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,13 +49,19 @@ class API extends APIFactory
|
|||||||
{
|
{
|
||||||
//$this->API->reset_session(false);
|
//$this->API->reset_session(false);
|
||||||
|
|
||||||
return ['API'];
|
return ['API', 'v'];
|
||||||
}
|
}
|
||||||
|
public function getV() { return 1; }
|
||||||
public function __wakeup()
|
public function __wakeup()
|
||||||
{
|
{
|
||||||
set_error_handler(['\danog\MadelineProto\Exception', 'ExceptionErrorHandler']);
|
set_error_handler(['\danog\MadelineProto\Exception', 'ExceptionErrorHandler']);
|
||||||
$this->APIFactory();
|
$this->APIFactory();
|
||||||
|
$this->API->setup_logger();
|
||||||
|
if (!isset($this->v) || $this->v !== $this->getV()) {
|
||||||
|
\danog\MadelineProto\Logger::log(['Serialization is out of date, reconstructing object!'], Logger::WARNING);
|
||||||
|
$this->API->__construct($this->API->settings);
|
||||||
|
$this->v = $current;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function __destruct()
|
public function __destruct()
|
||||||
|
@ -19,7 +19,7 @@ class DataCenter
|
|||||||
{
|
{
|
||||||
use \danog\MadelineProto\Tools;
|
use \danog\MadelineProto\Tools;
|
||||||
|
|
||||||
public $sockets;
|
public $sockets = [];
|
||||||
public $curdc = 0;
|
public $curdc = 0;
|
||||||
public $dclist = [];
|
public $dclist = [];
|
||||||
public $settings = [];
|
public $settings = [];
|
||||||
@ -28,6 +28,9 @@ class DataCenter
|
|||||||
{
|
{
|
||||||
$this->dclist = &$dclist;
|
$this->dclist = &$dclist;
|
||||||
$this->settings = &$settings;
|
$this->settings = &$settings;
|
||||||
|
foreach ($this->sockets as &$socket) {
|
||||||
|
$socket->close_and_reopen();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function dc_disconnect($dc_number)
|
public function dc_disconnect($dc_number)
|
||||||
|
@ -43,8 +43,11 @@ class MTProto extends PrimeModule
|
|||||||
|
|
||||||
// Connect to servers
|
// Connect to servers
|
||||||
\danog\MadelineProto\Logger::log(['Istantiating DataCenter...'], Logger::ULTRA_VERBOSE);
|
\danog\MadelineProto\Logger::log(['Istantiating DataCenter...'], Logger::ULTRA_VERBOSE);
|
||||||
$this->datacenter = new DataCenter($this->settings['connection'], $this->settings['connection_settings']);
|
if (isset($this->datacenter)) {
|
||||||
|
$this->datacenter->__construct($this->settings['connection'], $this->settings['connection_settings']);
|
||||||
|
} else {
|
||||||
|
$this->datacenter = new DataCenter($this->settings['connection'], $this->settings['connection_settings']);
|
||||||
|
}
|
||||||
// Load rsa key
|
// Load rsa key
|
||||||
\danog\MadelineProto\Logger::log(['Loading RSA key...'], Logger::ULTRA_VERBOSE);
|
\danog\MadelineProto\Logger::log(['Loading RSA key...'], Logger::ULTRA_VERBOSE);
|
||||||
$this->key = new RSA($this->settings['authorization']['rsa_key']);
|
$this->key = new RSA($this->settings['authorization']['rsa_key']);
|
||||||
@ -74,7 +77,7 @@ class MTProto extends PrimeModule
|
|||||||
$google = '';
|
$google = '';
|
||||||
try {
|
try {
|
||||||
$ctx = stream_context_create(['http'=> [
|
$ctx = stream_context_create(['http'=> [
|
||||||
'timeout' => 1, //1200 Seconds is 20 Minutes
|
'timeout' => 1,
|
||||||
],
|
],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user