Skip to content

Commit

Permalink
Added hooks for customization.
Browse files Browse the repository at this point in the history
  • Loading branch information
lotharthesavior committed Mar 3, 2024
1 parent c3a6e40 commit 6804bb2
Show file tree
Hide file tree
Showing 4 changed files with 103 additions and 14 deletions.
3 changes: 2 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@
"kanata-php/socket-conveyor": "^2.1",
"textalk/websocket": "^1.5",
"kanata-php/conveyor-laravel-broadcaster": "^0.0",
"laravel/sanctum": "^3.3"
"laravel/sanctum": "^3.3",
"lotharthesavior/hook": "^0.0.1"
},
"extra": {
"laravel": {
Expand Down
2 changes: 1 addition & 1 deletion composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

78 changes: 70 additions & 8 deletions src/Services/Server.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

namespace JackedPhp\JackedServer\Services;

use Conveyor\Constants;
use Conveyor\Conveyor;
use Conveyor\ConveyorServer;
use Conveyor\Constants as ConveyorConstants;
Expand All @@ -11,6 +10,7 @@
use Conveyor\Events\ServerStartedEvent;
use Conveyor\Persistence\Abstracts\GenericPersistence;
use Exception;
use Hook\Filter;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Console\OutputStyle;
use Illuminate\Database\Capsule\Manager;
Expand Down Expand Up @@ -92,6 +92,9 @@ public function __construct(
}
}

/**
* @throws Exception
*/
public function run(): void
{
$ssl = config('jacked-server.ssl-enabled', false);
Expand Down Expand Up @@ -160,7 +163,10 @@ public function handleWsHandshake(Request $request, Response $response): bool

// check for authorization
try {
$broadcaster = rescue(fn() => Broadcast::driver('conveyor'));
$broadcaster = rescue(
callback: fn() => Broadcast::driver('conveyor'),
report: false,
);
$wsAuth = config('jacked-server.websocket.broadcaster');

parse_str(Arr::get($request->server, 'query_string') ?? '', $query);
Expand Down Expand Up @@ -244,15 +250,71 @@ public function handleStart(OpenSwooleServer $server): void

public function handleRequest(Request $request, Response $response): void
{
if (config('jacked-server.proxy.enabled', false)) {
/**
* Description: This is a filter for requests proxy.
* Name: jacked_proxy_request
* Params:
* - $proxyRequest: bool
* - $request: Request
* Returns: bool
*/
$proxyRequest = Filter::applyFilters(
'jacked_proxy_request',
config('jacked-server.proxy.enabled', false),
$request,
);

if ($proxyRequest) {
/**
* Description: This is a filter for proxy host.
* Name: jacked_proxy_host
* Params:
* - $proxyHost: string
* - $request: Request
* Returns: string
*/
$proxyHost = Filter::applyFilters(
'jacked_proxy_host',
config('jacked-server.proxy.host', '127.0.0.1'),
$request,
);

/**
* Description: This is a filter for proxy port.
* Name: jacked_proxy_port
* Params:
* - $proxyPort: int
* - $request: Request
* Returns: int
*/
$proxyPort = Filter::applyFilters(
'jacked_proxy_port',
config('jacked-server.proxy.port', 3000),
$request,
);

/**
* Description: This is a filter for proxy allowed headers.
* Name: jacked_proxy_allowed_headers
* Params:
* - $proxyAllowedHeaders: array<array-key, string>
* - $request: Request
* Returns: array<array-key, string>
*/
$proxyAllowedHeaders = Filter::applyFilters(
'jacked_proxy_allowed_headers',
config('jacked-server.proxy.allowed-headers', [
'content-type',
]),
$request,
);

$this->proxyRequest(
request: $request,
response: $response,
host: config('jacked-server.proxy.host', '127.0.0.1'),
port: config('jacked-server.proxy.port', 3000),
allowedHeaders: config('jacked-server.proxy.allowed-headers', [
'content-type',
]),
host: $proxyHost,
port: $proxyPort,
allowedHeaders: $proxyAllowedHeaders,
);
return;
}
Expand Down
34 changes: 30 additions & 4 deletions src/Services/Traits/HttpSupport.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use Adoy\FastCGI\Client;
use Exception;
use Hook\Filter;
use Illuminate\Support\Arr;
use Illuminate\Support\Carbon;
use JackedPhp\JackedServer\Events\JackedRequestReceived;
Expand Down Expand Up @@ -90,6 +91,14 @@ protected function checkPathTrailingSlash(array $requestOptions): void
}
}

/**
* @param Request $request
* @param Response $response
* @param string $host
* @param int $port
* @param array<array-key, string> $allowedHeaders
* @return void
*/
protected function proxyRequest(
Request $request,
Response $response,
Expand Down Expand Up @@ -229,7 +238,11 @@ private function prepareRequestOptions(
'script_name' => $this->getScriptName($requestUri),
'script_filename' => $this->getScriptFilename($requestUri),
'content_length' => $contentLength,
'server_protocol' => Arr::get($serverInfo, 'server_protocol', config('jacked-server.server-protocol', 'HTTP/1.1')),
'server_protocol' => Arr::get(
$serverInfo,
'server_protocol',
config('jacked-server.server-protocol', 'HTTP/1.1'),
),
'server_name' => Arr::get($requestOptions, 'http_host'),
])), CASE_UPPER);
}
Expand Down Expand Up @@ -266,9 +279,22 @@ private function getInputFile(): string
*/
private function getDocumentRoot(string $requestUri): string
{
$documentRoot = $this->documentRoot
?? config('jacked-server.openswoole-server-settings.document_root')
?? public_path();
/**
* Description: This is a filter for the server's document root.
* Name: jacked_document_root
* Params:
* - $documentRoot: string
* - $requestUri: string
* Returns: string
*/
$documentRoot = $this->documentRoot ?? Filter::applyFilters(
'jacked_document_root',
config(
'jacked-server.openswoole-server-settings.document_root',
public_path(),
),
$requestUri,
);

if (is_dir($documentRoot . $requestUri)) {
return $documentRoot . $requestUri;
Expand Down

0 comments on commit 6804bb2

Please sign in to comment.