mirror of
https://github.com/danog/MadelineProto.git
synced 2024-12-02 13:57:46 +01:00
Merge branch 'master' of https://github.com/danog/MadelineProto
This commit is contained in:
commit
c94f98509e
@ -14,6 +14,7 @@ if (!extension_loaded('pthreads')) {
|
|||||||
class Socket
|
class Socket
|
||||||
{
|
{
|
||||||
private $sock;
|
private $sock;
|
||||||
|
|
||||||
public function __construct(int $domain, int $type, int $protocol)
|
public function __construct(int $domain, int $type, int $protocol)
|
||||||
{
|
{
|
||||||
$this->sock = socket_create($domain, $type, $protocol);
|
$this->sock = socket_create($domain, $type, $protocol);
|
||||||
@ -41,50 +42,67 @@ if (!extension_loaded('pthreads')) {
|
|||||||
|
|
||||||
return socket_set_nonblock($this->sock);
|
return socket_set_nonblock($this->sock);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function bind(string $address, int $port = 0) {
|
public function bind(string $address, int $port = 0)
|
||||||
|
{
|
||||||
return socket_bind($this->sock, $address, $port);
|
return socket_bind($this->sock, $address, $port);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function listen(int $backlog = 0) {
|
public function listen(int $backlog = 0)
|
||||||
|
{
|
||||||
return socket_listen($this->sock, $backlog);
|
return socket_listen($this->sock, $backlog);
|
||||||
}
|
}
|
||||||
public function accept() {
|
|
||||||
|
public function accept()
|
||||||
|
{
|
||||||
return socket_accept($this->sock);
|
return socket_accept($this->sock);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function connect(string $address, int $port = 0) {
|
public function connect(string $address, int $port = 0)
|
||||||
|
{
|
||||||
return socket_connect($this->sock, $address, $port);
|
return socket_connect($this->sock, $address, $port);
|
||||||
}
|
}
|
||||||
public function select(array &$read, array &$write, array &$except, int $tv_sec, int $tv_usec = 0) {
|
|
||||||
|
public function select(array &$read, array &$write, array &$except, int $tv_sec, int $tv_usec = 0)
|
||||||
|
{
|
||||||
return socket_select($read, $write, $except, $tv_sec, $tv_usec);
|
return socket_select($read, $write, $except, $tv_sec, $tv_usec);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function read(int $length, int $flags = 0) {
|
public function read(int $length, int $flags = 0)
|
||||||
|
{
|
||||||
return socket_read($this->sock, $length, $flags);
|
return socket_read($this->sock, $length, $flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function write(string $buffer, int $length = -1) {
|
public function write(string $buffer, int $length = -1)
|
||||||
|
{
|
||||||
return $length === -1 ? socket_write($this->sock, $buffer) : socket_write($this->sock, $buffer, $Length);
|
return $length === -1 ? socket_write($this->sock, $buffer) : socket_write($this->sock, $buffer, $Length);
|
||||||
}
|
}
|
||||||
public function send(string $data, int $length, int $flags) {
|
|
||||||
|
public function send(string $data, int $length, int $flags)
|
||||||
|
{
|
||||||
return socket_send($data, $length, $flags);
|
return socket_send($data, $length, $flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function close() {
|
public function close()
|
||||||
|
{
|
||||||
return socket_close($this->sock);
|
return socket_close($this->sock);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getPeerName(bool $port = true) {
|
public function getPeerName(bool $port = true)
|
||||||
|
{
|
||||||
$address = '';
|
$address = '';
|
||||||
$port = 0;
|
$port = 0;
|
||||||
$port ? socket_getpeername($this->sock, $address, $ip) : socket_getpeername($this->sock, $address);
|
$port ? socket_getpeername($this->sock, $address, $ip) : socket_getpeername($this->sock, $address);
|
||||||
|
|
||||||
return $port ? ['host' => $address, 'port' => $port] : ['host' => $address];
|
return $port ? ['host' => $address, 'port' => $port] : ['host' => $address];
|
||||||
}
|
}
|
||||||
public function getSockName(bool $port = true) {
|
|
||||||
|
public function getSockName(bool $port = true)
|
||||||
|
{
|
||||||
$address = '';
|
$address = '';
|
||||||
$port = 0;
|
$port = 0;
|
||||||
$port ? socket_getsockname($this->sock, $address, $ip) : socket_getsockname($this->sock, $address);
|
$port ? socket_getsockname($this->sock, $address, $ip) : socket_getsockname($this->sock, $address);
|
||||||
|
|
||||||
return $port ? ['host' => $address, 'port' => $port] : ['host' => $address];
|
return $port ? ['host' => $address, 'port' => $port] : ['host' => $address];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ var_dump(is_null($this->{$name}));
|
|||||||
$this->port = $port;
|
$this->port = $port;
|
||||||
$this->proxy = $proxy;
|
$this->proxy = $proxy;
|
||||||
$this->extra = $extra;
|
$this->extra = $extra;
|
||||||
|
|
||||||
if (($has_proxy = $proxy !== '\Socket') && !isset(class_implements($proxy)['\danog\MadelineProto\Proxy'])) {
|
if (($has_proxy = $proxy !== '\Socket') && !isset(class_implements($proxy)['\danog\MadelineProto\Proxy'])) {
|
||||||
throw new \danog\MadelineProto\Exception('Invalid proxy class provided!');
|
throw new \danog\MadelineProto\Exception('Invalid proxy class provided!');
|
||||||
}
|
}
|
||||||
|
@ -464,7 +464,7 @@ class MTProto extends \Volatile
|
|||||||
'ipv6' => $this->ipv6, // decides whether to use ipv6, ipv6 attribute of API attribute of API class contains autodetected boolean
|
'ipv6' => $this->ipv6, // decides whether to use ipv6, ipv6 attribute of API attribute of API class contains autodetected boolean
|
||||||
'timeout' => 2, // timeout for sockets
|
'timeout' => 2, // timeout for sockets
|
||||||
'proxy' => '\Socket', // The proxy class to use
|
'proxy' => '\Socket', // The proxy class to use
|
||||||
'proxy_extra' => [] // Extra parameters to pass to the proxy class using setExtra
|
'proxy_extra' => [], // Extra parameters to pass to the proxy class using setExtra
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
'app_info' => [ // obtained in https://my.telegram.org
|
'app_info' => [ // obtained in https://my.telegram.org
|
||||||
|
@ -14,23 +14,33 @@ namespace danog\MadelineProto;
|
|||||||
|
|
||||||
interface Proxy
|
interface Proxy
|
||||||
{
|
{
|
||||||
public function __construct(int $domain, int $type, int $protocol);
|
public function __construct(int $domain, int $type, int $protocol);
|
||||||
|
|
||||||
public function setOption(int $level, int $name, $value);
|
public function setOption(int $level, int $name, $value);
|
||||||
public function getOption(int $level, int $name);
|
|
||||||
public function setBlocking(bool $blocking);
|
|
||||||
|
|
||||||
public function bind(string $address, int $port = 0);
|
|
||||||
public function listen(int $backlog = 0);
|
|
||||||
public function accept();
|
|
||||||
public function connect(string $address, int $port = 0);
|
|
||||||
public function select(array &$read, array &$write, array &$except, int $tv_sec, int $tv_usec = 0);
|
|
||||||
public function read(int $length, int $flags = 0);
|
|
||||||
|
|
||||||
public function write(string $buffer, int $length = -1);
|
|
||||||
public function send(string $data, int $length, int $flags);
|
|
||||||
public function close();
|
|
||||||
|
|
||||||
public function getPeerName(bool $port = true);
|
public function getOption(int $level, int $name);
|
||||||
public function getSockName(bool $port = true);
|
|
||||||
|
public function setBlocking(bool $blocking);
|
||||||
|
|
||||||
|
public function bind(string $address, int $port = 0);
|
||||||
|
|
||||||
|
public function listen(int $backlog = 0);
|
||||||
|
|
||||||
|
public function accept();
|
||||||
|
|
||||||
|
public function connect(string $address, int $port = 0);
|
||||||
|
|
||||||
|
public function select(array &$read, array &$write, array &$except, int $tv_sec, int $tv_usec = 0);
|
||||||
|
|
||||||
|
public function read(int $length, int $flags = 0);
|
||||||
|
|
||||||
|
public function write(string $buffer, int $length = -1);
|
||||||
|
|
||||||
|
public function send(string $data, int $length, int $flags);
|
||||||
|
|
||||||
|
public function close();
|
||||||
|
|
||||||
|
public function getPeerName(bool $port = true);
|
||||||
|
|
||||||
|
public function getSockName(bool $port = true);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user