Apply fixes from StyleCI

This commit is contained in:
Marcel Pociot
2020-06-17 10:35:07 +00:00
committed by StyleCI Bot
parent 0e33bc7d99
commit 83676deddb
56 changed files with 189 additions and 316 deletions

View File

@@ -38,7 +38,7 @@ class Configuration implements \JsonSerializable
}
/**
* @inheritDoc
* {@inheritdoc}
*/
public function jsonSerialize()
{

View File

@@ -35,14 +35,14 @@ class ConnectionManager implements ConnectionManagerContract
$connection->setMaximumConnectionLength($maximumConnectionLength);
$this->loop->addTimer($maximumConnectionLength * 60, function() use ($connection) {
$this->loop->addTimer($maximumConnectionLength * 60, function () use ($connection) {
$connection->socket->close();
});
}
public function storeConnection(string $host, ?string $subdomain, ConnectionInterface $connection): ControlConnection
{
$clientId = (string)uniqid();
$clientId = (string) uniqid();
$connection->client_id = $clientId;

View File

@@ -3,16 +3,7 @@
namespace App\Server\Connections;
use Evenement\EventEmitterTrait;
use GuzzleHttp\Psr7\Request;
use Illuminate\Contracts\Support\Arrayable;
use Illuminate\Support\Str;
use Nyholm\Psr7\Factory\Psr17Factory;
use Ratchet\Client\WebSocket;
use Ratchet\ConnectionInterface;
use Ratchet\RFC6455\Messaging\Frame;
use Ratchet\WebSocket\WsConnection;
use React\Stream\Util;
use Symfony\Bridge\PsrHttpMessage\Factory\PsrHttpFactory;
class ControlConnection
{

View File

@@ -5,6 +5,7 @@ namespace App\Server;
use App\Contracts\ConnectionManager as ConnectionManagerContract;
use App\Contracts\SubdomainGenerator;
use App\Contracts\UserRepository;
use App\Http\RouteGenerator;
use App\Http\Server as HttpServer;
use App\Server\Connections\ConnectionManager;
use App\Server\Http\Controllers\Admin\DeleteUsersController;
@@ -15,28 +16,24 @@ use App\Server\Http\Controllers\Admin\GetUsersController;
use App\Server\Http\Controllers\Admin\ListSitesController;
use App\Server\Http\Controllers\Admin\ListUsersController;
use App\Server\Http\Controllers\Admin\RedirectToUsersController;
use App\Server\Http\Controllers\Admin\StoreSettingsController;
use App\Server\Http\Controllers\Admin\ShowSettingsController;
use App\Server\Http\Controllers\Admin\StoreSettingsController;
use App\Server\Http\Controllers\Admin\StoreUsersController;
use App\Server\Http\Controllers\ControlMessageController;
use App\Server\Http\Controllers\TunnelMessageController;
use App\Http\RouteGenerator;
use App\Server\Http\Router;
use App\Server\SubdomainGenerator\RandomSubdomainGenerator;
use Clue\React\SQLite\DatabaseInterface;
use Phar;
use Ratchet\Server\IoServer;
use Ratchet\WebSocket\WsServer;
use React\Socket\Server;
use React\EventLoop\LoopInterface;
use React\EventLoop\Factory as LoopFactory;
use React\EventLoop\LoopInterface;
use React\Socket\Server;
use Symfony\Component\Finder\Finder;
use Symfony\Component\Finder\SplFileInfo;
use Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler;
use Symfony\Component\Routing\Matcher\UrlMatcher;
use Symfony\Component\Routing\RequestContext;
use Symfony\Component\Routing\Route;
use Symfony\Component\Routing\RouteCollection;
class Factory
{
@@ -98,7 +95,7 @@ class Factory
new Route('/{__catchall__}', [
'_controller' => app(TunnelMessageController::class),
], [
'__catchall__' => '.*'
'__catchall__' => '.*',
]));
}
@@ -195,7 +192,7 @@ class Factory
protected function bindUserRepository()
{
app()->singleton(UserRepository::class, function() {
app()->singleton(UserRepository::class, function () {
return app(config('expose.admin.user_repository'));
});
@@ -204,10 +201,10 @@ class Factory
protected function bindDatabase()
{
app()->singleton(DatabaseInterface::class, function() {
app()->singleton(DatabaseInterface::class, function () {
$factory = new \Clue\React\SQLite\Factory($this->loop);
$options = ['worker_command' => Phar::running(false) ? Phar::running(false) . ' --sqlite-worker' : null];
$options = ['worker_command' => Phar::running(false) ? Phar::running(false).' --sqlite-worker' : null];
return $factory->openLazy(
config('expose.admin.database', ':memory:'),
@@ -244,5 +241,4 @@ class Factory
return $this;
}
}

View File

@@ -4,10 +4,10 @@ namespace App\Server\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use GuzzleHttp\Psr7\Response;
use function GuzzleHttp\Psr7\str;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Ratchet\ConnectionInterface;
use function GuzzleHttp\Psr7\str;
abstract class AdminController extends Controller
{
@@ -16,17 +16,19 @@ abstract class AdminController extends Controller
try {
$authorization = Str::after($request->header('Authorization'), 'Basic ');
$authParts = explode(':', base64_decode($authorization), 2);
list($user, $password) = $authParts;
[$user, $password] = $authParts;
if (! $this->credentialsAreAllowed($user, $password)) {
throw new \InvalidArgumentException('Invalid Login');
}
return true;
} catch (\Throwable $e) {
$httpConnection->send(str(new Response(401, [
'WWW-Authenticate' => 'Basic realm="Expose"'
'WWW-Authenticate' => 'Basic realm="Expose"',
])));
}
return false;
}

View File

@@ -3,16 +3,8 @@
namespace App\Server\Http\Controllers\Admin;
use App\Contracts\UserRepository;
use App\Http\Controllers\Controller;
use GuzzleHttp\Psr7\Response;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Str;
use Ratchet\ConnectionInterface;
use Twig\Environment;
use Twig\Loader\ArrayLoader;
use function GuzzleHttp\Psr7\str;
use function GuzzleHttp\Psr7\stream_for;
class DeleteUsersController extends AdminController
{
@@ -29,7 +21,7 @@ class DeleteUsersController extends AdminController
public function handle(Request $request, ConnectionInterface $httpConnection)
{
$this->userRepository->deleteUser($request->get('id'))
->then(function() use ($httpConnection) {
->then(function () use ($httpConnection) {
$httpConnection->send(respond_json(['deleted' => true], 200));
$httpConnection->close();
});

View File

@@ -3,15 +3,9 @@
namespace App\Server\Http\Controllers\Admin;
use App\Contracts\ConnectionManager;
use App\Http\Controllers\Controller;
use App\Server\Configuration;
use GuzzleHttp\Psr7\Response;
use Illuminate\Http\Request;
use Ratchet\ConnectionInterface;
use Twig\Environment;
use Twig\Loader\ArrayLoader;
use function GuzzleHttp\Psr7\str;
use function GuzzleHttp\Psr7\stream_for;
class DisconnectSiteController extends AdminController
{
@@ -37,7 +31,7 @@ class DisconnectSiteController extends AdminController
}
$httpConnection->send(respond_json([
'sites' => $this->connectionManager->getConnections()
'sites' => $this->connectionManager->getConnections(),
]));
}
}

View File

@@ -6,10 +6,6 @@ use App\Contracts\ConnectionManager;
use App\Server\Configuration;
use Illuminate\Http\Request;
use Ratchet\ConnectionInterface;
use Twig\Environment;
use Twig\Loader\ArrayLoader;
use function GuzzleHttp\Psr7\str;
use function GuzzleHttp\Psr7\stream_for;
class GetSettingsController extends AdminController
{

View File

@@ -3,14 +3,9 @@
namespace App\Server\Http\Controllers\Admin;
use App\Contracts\ConnectionManager;
use App\Http\Controllers\Controller;
use App\Server\Configuration;
use Illuminate\Http\Request;
use Ratchet\ConnectionInterface;
use Twig\Environment;
use Twig\Loader\ArrayLoader;
use function GuzzleHttp\Psr7\str;
use function GuzzleHttp\Psr7\stream_for;
class GetSitesController extends AdminController
{
@@ -33,7 +28,7 @@ class GetSitesController extends AdminController
$site['id'] = $siteId;
return $site;
})->values()
})->values(),
])
);
}

View File

@@ -3,15 +3,8 @@
namespace App\Server\Http\Controllers\Admin;
use App\Contracts\UserRepository;
use App\Http\Controllers\Controller;
use Clue\React\SQLite\Result;
use GuzzleHttp\Psr7\Response;
use Illuminate\Http\Request;
use Ratchet\ConnectionInterface;
use Twig\Environment;
use Twig\Loader\ArrayLoader;
use function GuzzleHttp\Psr7\str;
use function GuzzleHttp\Psr7\stream_for;
class GetUsersController extends AdminController
{

View File

@@ -3,14 +3,9 @@
namespace App\Server\Http\Controllers\Admin;
use App\Contracts\ConnectionManager;
use App\Http\Controllers\Controller;
use App\Server\Configuration;
use Illuminate\Http\Request;
use Ratchet\ConnectionInterface;
use Twig\Environment;
use Twig\Loader\ArrayLoader;
use function GuzzleHttp\Psr7\str;
use function GuzzleHttp\Psr7\stream_for;
class ListSitesController extends AdminController
{
@@ -30,7 +25,7 @@ class ListSitesController extends AdminController
$sites = $this->getView($httpConnection, 'server.sites.index', [
'scheme' => $this->configuration->port() === 443 ? 'https' : 'http',
'configuration' => $this->configuration,
'sites' => $this->connectionManager->getConnections()
'sites' => $this->connectionManager->getConnections(),
]);
$httpConnection->send(

View File

@@ -3,15 +3,8 @@
namespace App\Server\Http\Controllers\Admin;
use App\Contracts\UserRepository;
use App\Http\Controllers\Controller;
use Clue\React\SQLite\Result;
use GuzzleHttp\Psr7\Response;
use Illuminate\Http\Request;
use Ratchet\ConnectionInterface;
use Twig\Environment;
use Twig\Loader\ArrayLoader;
use function GuzzleHttp\Psr7\str;
use function GuzzleHttp\Psr7\stream_for;
class ListUsersController extends AdminController
{

View File

@@ -2,19 +2,18 @@
namespace App\Server\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use GuzzleHttp\Psr7\Response;
use function GuzzleHttp\Psr7\str;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Ratchet\ConnectionInterface;
use function GuzzleHttp\Psr7\str;
class RedirectToUsersController extends AdminController
{
public function handle(Request $request, ConnectionInterface $httpConnection)
{
$httpConnection->send(str(new Response(301, [
'Location' => '/sites'
'Location' => '/sites',
])));
}
}

View File

@@ -6,10 +6,6 @@ use App\Contracts\ConnectionManager;
use App\Server\Configuration;
use Illuminate\Http\Request;
use Ratchet\ConnectionInterface;
use Twig\Environment;
use Twig\Loader\ArrayLoader;
use function GuzzleHttp\Psr7\str;
use function GuzzleHttp\Psr7\stream_for;
class ShowSettingsController extends AdminController
{

View File

@@ -2,18 +2,10 @@
namespace App\Server\Http\Controllers\Admin;
use App\Contracts\ConnectionManager;
use App\Http\Controllers\Controller;
use App\Server\Configuration;
use Clue\React\SQLite\Result;
use GuzzleHttp\Psr7\Response;
use Illuminate\Http\Request;
use Illuminate\Support\Arr;
use Ratchet\ConnectionInterface;
use Twig\Environment;
use Twig\Loader\ArrayLoader;
use function GuzzleHttp\Psr7\str;
use function GuzzleHttp\Psr7\stream_for;
class StoreSettingsController extends AdminController
{
@@ -27,7 +19,7 @@ class StoreSettingsController extends AdminController
public function handle(Request $request, ConnectionInterface $httpConnection)
{
config()->set('expose.admin.validate_auth_tokens', (bool)$request->get('validate_auth_tokens'));
config()->set('expose.admin.validate_auth_tokens', (bool) $request->get('validate_auth_tokens'));
$messages = $request->get('messages');

View File

@@ -3,17 +3,11 @@
namespace App\Server\Http\Controllers\Admin;
use App\Contracts\UserRepository;
use App\Http\Controllers\Controller;
use Clue\React\SQLite\Result;
use GuzzleHttp\Psr7\Response;
use function GuzzleHttp\Psr7\str;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Str;
use Ratchet\ConnectionInterface;
use Twig\Environment;
use Twig\Loader\ArrayLoader;
use function GuzzleHttp\Psr7\str;
use function GuzzleHttp\Psr7\stream_for;
class StoreUsersController extends AdminController
{
@@ -44,7 +38,7 @@ class StoreUsersController extends AdminController
$insertData = [
'name' => $request->get('name'),
'auth_token' => (string)Str::uuid()
'auth_token' => (string) Str::uuid(),
];
$this->userRepository

View File

@@ -5,16 +5,15 @@ namespace App\Server\Http\Controllers;
use App\Contracts\ConnectionManager;
use App\Contracts\UserRepository;
use App\Http\QueryParameters;
use Ratchet\ConnectionInterface;
use Ratchet\WebSocket\MessageComponentInterface;
use React\Promise\Deferred;
use React\Promise\FulfilledPromise;
use React\Promise\PromiseInterface;
use stdClass;
use Ratchet\ConnectionInterface;
class ControlMessageController implements MessageComponentInterface
{
/** @var ConnectionManager */
protected $connectionManager;
@@ -28,16 +27,16 @@ class ControlMessageController implements MessageComponentInterface
}
/**
* @inheritDoc
* {@inheritdoc}
*/
function onOpen(ConnectionInterface $connection)
public function onOpen(ConnectionInterface $connection)
{
}
/**
* @inheritDoc
* {@inheritdoc}
*/
function onClose(ConnectionInterface $connection)
public function onClose(ConnectionInterface $connection)
{
if (isset($connection->request_id)) {
$httpConnection = $this->connectionManager->getHttpConnectionForRequestId($connection->request_id);
@@ -48,9 +47,9 @@ class ControlMessageController implements MessageComponentInterface
}
/**
* @inheritDoc
* {@inheritdoc}
*/
function onMessage(ConnectionInterface $connection, $msg)
public function onMessage(ConnectionInterface $connection, $msg)
{
if (isset($connection->request_id)) {
return $this->sendResponseToHttpConnection($connection->request_id, $msg);
@@ -92,15 +91,15 @@ class ControlMessageController implements MessageComponentInterface
'data' => [
'message' => config('expose.admin.messages.message_of_the_day'),
'subdomain' => $connectionInfo->subdomain,
'client_id' => $connectionInfo->client_id
'client_id' => $connectionInfo->client_id,
],
]));
}, function () use ($connection) {
$connection->send(json_encode([
'event' => 'authenticationFailed',
'data' => [
'message' => config('expose.admin.messages.invalid_auth_token')
]
'message' => config('expose.admin.messages.invalid_auth_token'),
],
]));
$connection->close();
});
@@ -112,15 +111,15 @@ class ControlMessageController implements MessageComponentInterface
$connectionInfo = $this->connectionManager->findControlConnectionForClientId($data->client_id);
$connectionInfo->emit('proxy_ready_' . $data->request_id, [
$connectionInfo->emit('proxy_ready_'.$data->request_id, [
$connection,
]);
}
/**
* @inheritDoc
* {@inheritdoc}
*/
function onError(ConnectionInterface $conn, \Exception $e)
public function onError(ConnectionInterface $conn, \Exception $e)
{
//
}
@@ -150,9 +149,9 @@ class ControlMessageController implements MessageComponentInterface
protected function hasValidSubdomain(ConnectionInterface $connection, ?string $subdomain): bool
{
if (!is_null($subdomain)) {
if (! is_null($subdomain)) {
$controlConnection = $this->connectionManager->findControlConnectionForSubdomain($subdomain);
if (!is_null($controlConnection) || $subdomain === config('expose.admin.subdomain')) {
if (! is_null($controlConnection) || $subdomain === config('expose.admin.subdomain')) {
$message = config('expose.admin.messages.subdomain_taken');
$message = str_replace(':subdomain', $subdomain, $message);
@@ -160,7 +159,7 @@ class ControlMessageController implements MessageComponentInterface
'event' => 'subdomainTaken',
'data' => [
'message' => $message,
]
],
]));
$connection->close();

View File

@@ -7,16 +7,13 @@ use App\Http\Controllers\Controller;
use App\Server\Configuration;
use App\Server\Connections\ControlConnection;
use App\Server\Connections\HttpConnection;
use GuzzleHttp\Psr7\Response;
use function GuzzleHttp\Psr7\str;
use Illuminate\Http\Request;
use Illuminate\Pipeline\Pipeline;
use Illuminate\Support\Str;
use Nyholm\Psr7\Factory\Psr17Factory;
use Ratchet\ConnectionInterface;
use Ratchet\RFC6455\Messaging\Frame;
use React\Promise\Deferred;
use Symfony\Bridge\PsrHttpMessage\Factory\PsrHttpFactory;
use function GuzzleHttp\Psr7\str;
class TunnelMessageController extends Controller
{
@@ -45,6 +42,7 @@ class TunnelMessageController extends Controller
respond_html($this->getView($httpConnection, 'server.homepage'), 200)
);
$httpConnection->close();
return;
}
@@ -55,6 +53,7 @@ class TunnelMessageController extends Controller
respond_html($this->getView($httpConnection, 'server.errors.404', ['subdomain' => $subdomain]), 404)
);
$httpConnection->close();
return;
}
@@ -77,7 +76,7 @@ class TunnelMessageController extends Controller
$httpConnection = $this->connectionManager->storeHttpConnection($httpConnection, $requestId);
transform($this->passRequestThroughModifiers($request, $httpConnection), function (Request $request) use ($controlConnection, $httpConnection, $requestId) {
$controlConnection->once('proxy_ready_' . $requestId, function (ConnectionInterface $proxy) use ($request) {
$controlConnection->once('proxy_ready_'.$requestId, function (ConnectionInterface $proxy) use ($request) {
// Convert the Laravel request into a PSR7 request
$psr17Factory = new Psr17Factory();
$psrHttpFactory = new PsrHttpFactory($psr17Factory, $psr17Factory, $psr17Factory, $psr17Factory);
@@ -110,7 +109,7 @@ class TunnelMessageController extends Controller
$host = $this->configuration->hostname();
if (!$request->isSecure()) {
if (! $request->isSecure()) {
$host .= ":{$this->configuration->port()}";
}
@@ -118,7 +117,7 @@ class TunnelMessageController extends Controller
$request->headers->set('X-Forwarded-Proto', $request->isSecure() ? 'https' : 'http');
$request->headers->set('X-Expose-Request-ID', uniqid());
$request->headers->set('Upgrade-Insecure-Requests', 1);
$request->headers->set('X-Exposed-By', config('app.name') . ' ' . config('app.version'));
$request->headers->set('X-Exposed-By', config('app.name').' '.config('app.version'));
$request->headers->set('X-Original-Host', "{$controlConnection->subdomain}.{$host}");
return $request;

View File

@@ -3,6 +3,8 @@
namespace App\Server\Http;
use App\Http\QueryParameters;
use function GuzzleHttp\Psr7\build_query;
use function GuzzleHttp\Psr7\parse_query;
use GuzzleHttp\Psr7\ServerRequest;
use Psr\Http\Message\RequestInterface;
use Ratchet\ConnectionInterface;
@@ -13,8 +15,6 @@ use Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory;
use Symfony\Component\Routing\Exception\MethodNotAllowedException;
use Symfony\Component\Routing\Exception\ResourceNotFoundException;
use Symfony\Component\Routing\Matcher\UrlMatcher;
use function GuzzleHttp\Psr7\build_query;
use function GuzzleHttp\Psr7\parse_query;
class Router implements HttpServerInterface
{
@@ -56,7 +56,7 @@ class Router implements HttpServerInterface
try {
$route = $this->_matcher->matchRequest($symfonyRequest);
} catch (MethodNotAllowedException $nae) {
return $this->close($conn, 405, array('Allow' => $nae->getAllowedMethods()));
return $this->close($conn, 405, ['Allow' => $nae->getAllowedMethods()]);
} catch (ResourceNotFoundException $nfe) {
return $this->close($conn, 404);
}
@@ -65,7 +65,7 @@ class Router implements HttpServerInterface
$route['_controller'] = new $route['_controller'];
}
if (!($route['_controller'] instanceof HttpServerInterface)) {
if (! ($route['_controller'] instanceof HttpServerInterface)) {
throw new \UnexpectedValueException('All routes must implement Ratchet\Http\HttpServerInterface');
}

View File

@@ -2,8 +2,8 @@
namespace App\Server\SubdomainGenerator;
use Illuminate\Support\Str;
use App\Contracts\SubdomainGenerator;
use Illuminate\Support\Str;
class RandomSubdomainGenerator implements SubdomainGenerator
{

View File

@@ -23,7 +23,7 @@ class DatabaseUserRepository implements UserRepository
$deferred = new Deferred();
$this->database
->query("SELECT * FROM users ORDER by created_at DESC")
->query('SELECT * FROM users ORDER by created_at DESC')
->then(function (Result $result) use ($deferred) {
$deferred->resolve($result->rows);
});
@@ -36,7 +36,7 @@ class DatabaseUserRepository implements UserRepository
$deferred = new Deferred();
$this->database
->query("SELECT * FROM users WHERE id = :id", ['id' => $id])
->query('SELECT * FROM users WHERE id = :id', ['id' => $id])
->then(function (Result $result) use ($deferred) {
$deferred->resolve($result->rows[0] ?? null);
});
@@ -49,7 +49,7 @@ class DatabaseUserRepository implements UserRepository
$deferred = new Deferred();
$this->database
->query("SELECT * FROM users WHERE auth_token = :token", ['token' => $authToken])
->query('SELECT * FROM users WHERE auth_token = :token', ['token' => $authToken])
->then(function (Result $result) use ($deferred) {
$deferred->resolve($result->rows[0] ?? null);
});
@@ -66,7 +66,7 @@ class DatabaseUserRepository implements UserRepository
VALUES (:name, :auth_token, DATETIME('now'))
", $data)
->then(function (Result $result) use ($deferred) {
$this->database->query("SELECT * FROM users WHERE id = :id", ['id' => $result->insertId])
$this->database->query('SELECT * FROM users WHERE id = :id', ['id' => $result->insertId])
->then(function (Result $result) use ($deferred) {
$deferred->resolve($result->rows[0]);
});
@@ -79,7 +79,7 @@ class DatabaseUserRepository implements UserRepository
{
$deferred = new Deferred();
$this->database->query("DELETE FROM users WHERE id = :id", ['id' => $id])
$this->database->query('DELETE FROM users WHERE id = :id', ['id' => $id])
->then(function (Result $result) use ($deferred) {
$deferred->resolve($result);
});