mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-28 16:24:54 +02:00
some changes
This commit is contained in:
parent
81b1454b2e
commit
b0824e048e
@ -38,7 +38,7 @@ require_once $config['homedir'].'/godmode/wizards/Wizard.main.php';
|
|||||||
class Diagnostics extends Wizard
|
class Diagnostics extends Wizard
|
||||||
{
|
{
|
||||||
|
|
||||||
const INNODB_FLUSH_LOG_AT_TRX_COMMIT = 1;
|
const INNODB_FLUSH_LOG_AT_TRX_COMMIT = 2;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ajax controller page.
|
* Ajax controller page.
|
||||||
|
@ -204,11 +204,21 @@ class WSManager extends WebSocketServer
|
|||||||
/**
|
/**
|
||||||
* Read from user's socket.
|
* Read from user's socket.
|
||||||
*
|
*
|
||||||
* @param object $user Target user connection.
|
* @param object $user Target user connection.
|
||||||
|
* @param integer $flags Socket receive flags:
|
||||||
|
* Flag Description
|
||||||
|
* MSG_OOB Process out-of-band data.
|
||||||
|
* MSG_PEEK Receive data from the beginning of the receive
|
||||||
|
* queue without removing it from the queue.
|
||||||
|
* MSG_WAITALL Block until at least len are received. However,
|
||||||
|
* if a signal is caught or the remote host
|
||||||
|
* disconnects, the function may return less data.
|
||||||
|
* MSG_DONTWAIT With this flag set, the function returns even
|
||||||
|
* if it would normally have blocked.
|
||||||
*
|
*
|
||||||
* @return string Buffer.
|
* @return string Buffer.
|
||||||
*/
|
*/
|
||||||
public function readSocket($user)
|
public function readSocket($user, $flags=0)
|
||||||
{
|
{
|
||||||
$buffer = '';
|
$buffer = '';
|
||||||
|
|
||||||
@ -216,7 +226,7 @@ class WSManager extends WebSocketServer
|
|||||||
$user->socket,
|
$user->socket,
|
||||||
$buffer,
|
$buffer,
|
||||||
$this->maxBufferSize,
|
$this->maxBufferSize,
|
||||||
0
|
$flags
|
||||||
);
|
);
|
||||||
if ($numBytes === false) {
|
if ($numBytes === false) {
|
||||||
// Failed. Disconnect.
|
// Failed. Disconnect.
|
||||||
@ -225,7 +235,7 @@ class WSManager extends WebSocketServer
|
|||||||
} else if ($numBytes == 0) {
|
} else if ($numBytes == 0) {
|
||||||
$this->disconnect($user->socket);
|
$this->disconnect($user->socket);
|
||||||
$this->stderr(
|
$this->stderr(
|
||||||
'Client disconnected. TCP connection lost: '.$user->socket
|
'Client disconnected. TCP connection lost: '.$user->id
|
||||||
);
|
);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -246,7 +256,7 @@ class WSManager extends WebSocketServer
|
|||||||
public function writeSocket($user, $message)
|
public function writeSocket($user, $message)
|
||||||
{
|
{
|
||||||
if (is_resource($user->socket)) {
|
if (is_resource($user->socket)) {
|
||||||
if (!socket_write($user->socket, $message)) {
|
if (socket_write($user->socket, $message) === false) {
|
||||||
$this->disconnect($user->socket);
|
$this->disconnect($user->socket);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -259,7 +269,6 @@ class WSManager extends WebSocketServer
|
|||||||
$this->disconnect($user->redirect->socket);
|
$this->disconnect($user->redirect->socket);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -218,8 +218,6 @@ abstract class WebSocketServer
|
|||||||
|
|
||||||
$this->sockets['m'] = $this->master;
|
$this->sockets['m'] = $this->master;
|
||||||
$this->stderr('Listening on: '.$addr.':'.$port);
|
$this->stderr('Listening on: '.$addr.':'.$port);
|
||||||
$this->stderr('Master socket: '.\obhd($this->master)."\n");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -353,7 +351,7 @@ abstract class WebSocketServer
|
|||||||
/**
|
/**
|
||||||
* Manage behaviour on socket error.
|
* Manage behaviour on socket error.
|
||||||
*
|
*
|
||||||
* @param socket $socket Target socket.
|
* @param \socket $socket Target socket.
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
@ -449,15 +447,15 @@ abstract class WebSocketServer
|
|||||||
if ($socket == $this->master) {
|
if ($socket == $this->master) {
|
||||||
// External to master connection. New client.
|
// External to master connection. New client.
|
||||||
$client = socket_accept($socket);
|
$client = socket_accept($socket);
|
||||||
if ($client < 0) {
|
if ((bool) $client !== true) {
|
||||||
$this->stderr('Failed: socket_accept()');
|
$this->stderr('Failed: socket_accept(), reason: ', socket_last_error());
|
||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
$this->connect($client);
|
$this->connect($client);
|
||||||
$this->stderr('Client connected. '.\obhd($client));
|
$this->stderr('Client connected. '.obhd($client));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!$socket) {
|
if ((bool) $socket !== true) {
|
||||||
$this->disconnect($socket);
|
$this->disconnect($socket);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -60,12 +60,15 @@ function connectInt(
|
|||||||
$to_url
|
$to_url
|
||||||
) {
|
) {
|
||||||
$intSocket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
$intSocket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||||
|
// Not sure.
|
||||||
$connect = socket_connect(
|
$connect = socket_connect(
|
||||||
$intSocket,
|
$intSocket,
|
||||||
$to_addr,
|
$to_addr,
|
||||||
$to_port
|
$to_port
|
||||||
);
|
);
|
||||||
if (!$connect) {
|
|
||||||
|
if ($connect === false) {
|
||||||
|
$ws_object->stderr(socket_last_error($intSocket));
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,7 +83,7 @@ function connectInt(
|
|||||||
$c_str .= 'Sec-WebSocket-Protocol: '.$headers['Sec-WebSocket-Protocol']."\r\n";
|
$c_str .= 'Sec-WebSocket-Protocol: '.$headers['Sec-WebSocket-Protocol']."\r\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
$c_str .= "\r\n";
|
$c_str .= "\r\n\r\n";
|
||||||
|
|
||||||
// Send.
|
// Send.
|
||||||
// Register user - internal.
|
// Register user - internal.
|
||||||
@ -92,6 +95,7 @@ function connectInt(
|
|||||||
'origin' => $to_addr,
|
'origin' => $to_addr,
|
||||||
'sec-websocket-protocol' => 'gotty',
|
'sec-websocket-protocol' => 'gotty',
|
||||||
];
|
];
|
||||||
|
|
||||||
$ws_object->writeSocket($intUser, $c_str);
|
$ws_object->writeSocket($intUser, $c_str);
|
||||||
|
|
||||||
return $intUser;
|
return $intUser;
|
||||||
@ -118,9 +122,9 @@ function proxyConnected(
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// Gotty. Based on the command selected, redirect to a target port.
|
// Gotty. Based on the command selected, redirect to a target port.
|
||||||
if ($user->requestedResource == '/ssh') {
|
if ($user->requestedResource === '/ssh') {
|
||||||
$port = $config['gotty_ssh_port'];
|
$port = $config['gotty_ssh_port'];
|
||||||
} else if ($user->requestedResource == '/telnet') {
|
} else if ($user->requestedResource === '/telnet') {
|
||||||
$port = $config['gotty_telnet_port'];
|
$port = $config['gotty_telnet_port'];
|
||||||
} else {
|
} else {
|
||||||
$ws_object->disconnect($user->socket);
|
$ws_object->disconnect($user->socket);
|
||||||
@ -154,7 +158,8 @@ function proxyConnected(
|
|||||||
$ws_object->remoteUsers[$intUser->id] = $intUser;
|
$ws_object->remoteUsers[$intUser->id] = $intUser;
|
||||||
|
|
||||||
// Ignore. Cleanup socket.
|
// Ignore. Cleanup socket.
|
||||||
$response = $ws_object->readSocket($user->intUser);
|
// $response = $ws_object->readSocket($user->intUser);
|
||||||
|
flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user