Merge branch 'dashboard-modifications' into share-files

This commit is contained in:
Marcel Pociot
2021-05-19 11:57:25 +02:00
8 changed files with 170 additions and 114 deletions

View File

@@ -140,7 +140,7 @@ class Factory
$this->router->post('/api/logs/{request_id}/data', AttachDataToLogController::class);
$this->router->get('/api/logs/clear', ClearLogsController::class);
$this->app->route('/socket', new WsServer(new Socket()), ['*']);
$this->app->route('/socket', new WsServer(new Socket()), ['*'], "");
foreach ($this->router->getRoutes()->all() as $name => $route) {
$this->app->routes->add($name, $route);
@@ -162,7 +162,7 @@ class Factory
config()->set('expose.dashboard_port', $dashboardPort);
$this->app = new App('127.0.0.1', $dashboardPort, '0.0.0.0', $this->loop);
$this->app = new App('0.0.0.0', $dashboardPort, '0.0.0.0', $this->loop);
$this->addRoutes();

View File

@@ -4,8 +4,12 @@ namespace App\Client\Http\Controllers;
use App\Client\Http\HttpClient;
use App\Http\Controllers\Controller;
use App\Logger\LoggedRequest;
use App\Logger\RequestLogger;
use GuzzleHttp\Psr7\Message;
use GuzzleHttp\Psr7\Response;
use Illuminate\Support\Str;
use Laminas\Http\Header\GenericHeader;
use function GuzzleHttp\Psr7\str;
use Illuminate\Http\Request;
use Ratchet\ConnectionInterface;
@@ -29,13 +33,15 @@ class ReplayLogController extends Controller
$loggedRequest = $this->requestLogger->findLoggedRequest($request->get('log'));
if (is_null($loggedRequest)) {
$httpConnection->send(str(new Response(404)));
$httpConnection->send(Message::toString(new Response(404)));
return;
}
$this->httpClient->performRequest($loggedRequest->getRequestData());
$loggedRequest->refreshId();
$httpConnection->send(str(new Response(200)));
$this->httpClient->performRequest($loggedRequest->getRequest()->toString());
$httpConnection->send(Message::toString(new Response(200)));
}
}

View File

@@ -10,7 +10,7 @@ use Symfony\Component\Console\Output\ConsoleOutput;
class ShareCommand extends Command
{
protected $signature = 'share {host} {--subdomain=} {--auth=} {--server-host=} {--server-port=}';
protected $signature = 'share {host} {--subdomain=} {--auth=} {--server-host=} {--server-port=} {--dns=}';
protected $description = 'Share a local url with a remote expose server';
@@ -31,6 +31,14 @@ class ShareCommand extends Command
$serverPort = $this->option('server-port') ?? config('expose.port', 8080);
$auth = $this->option('auth') ?? config('expose.auth_token', '');
if (strstr($this->argument('host'), 'host.docker.internal')) {
config(['expose.dns' => true]);
}
if ($this->option('dns') !== null) {
config(['expose.dns' => empty($this->option('dns')) ? true : $this->option('dns')]);
}
(new Factory())
->setLoop(app(LoopInterface::class))
->setHost($serverHost)

View File

@@ -3,6 +3,7 @@
namespace App\Logger;
use Carbon\Carbon;
use Laminas\Http\Header\GenericHeader;
use function GuzzleHttp\Psr7\parse_request;
use Illuminate\Support\Arr;
use Illuminate\Support\Str;
@@ -211,4 +212,17 @@ class LoggedRequest implements \JsonSerializable
return '';
}
}
public function refreshId()
{
$requestId = (string) Str::uuid();
$this->getRequest()->getHeaders()->removeHeader(
$this->getRequest()->getHeader('x-expose-request-id')
);
$this->getRequest()->getHeaders()->addHeader(new GenericHeader('x-expose-request-id', $requestId));
$this->id = $requestId;
}
}