remcodex / server
远程代码执行服务器。
dev-master
2021-02-15 02:28 UTC
Requires
- php: ^7.4 || ^8.0
- ext-json: *
- ext-pdo: *
- ahmard/guzwrap: ^2.1
- ahmard/quick-route: ^2.0
- evenement/evenement: ^3.0
- laminas/laminas-diactoros: ^2.4
- laminas/laminas-stratigility: ^3.3
- nette/utils: ^3.2
- symfony/validator: ^5.1
- vlucas/phpdotenv: ^5.2
Requires (Dev)
- phpstan/phpstan: ^0.12.58
- phpunit/phpunit: ^9
This package is auto-updated.
Last update: 2024-09-18 07:20:01 UTC
README
远程代码执行服务器 - 此库使用 Guzwrap 来解构发送的请求,执行它,然后将请求响应发送回 RCE 客户端。
此库像奴隶一样,除了目前只支持 Guzwrap 请求对象。
注意 🔊
该项目目前正在接受大量更新,可能包括代码重构、命名空间更改以及可能导致代码损坏或无法完全工作的许多其他内容。
该项目尚未准备就绪!!!
安装
composer require remcodex/server
用法
use Remcodex\Server\Command; use Remcodex\Server\ErrorHandler; use Remcodex\Server\Prebuilt\RequestListener; use Remcodex\Server\Prebuilt\ResponseListener; use Remcodex\Server\Router; use Remcodex\Server\Server; require 'vendor/autoload.php'; //Load http routes $collector = Router::load(__DIR__ . '/routes.php'); //Load request commands $commands = Command::load(__DIR__ . '/commands.php'); //Create and start server Server::create() ->setEnvironment(Server::ENV_DEVELOPMENT) ->setErrorHandler(new ErrorHandler()) ->setRouteCollector($collector) ->setCommands($commands) ->onRequest(new RequestListener()) ->onResponse(new ResponseListener()) ->run();
事件
- 应用事件
use Remcodex\Server\Events\AppEvent; AppEvent::onError(function (Throwable $exception){ echo "Error: {$exception->getMessage()} \n"; });
- HTTP 事件
use Psr\Http\Message\ServerRequestInterface; use QuickRoute\Route\DispatchResult; use Remcodex\Server\Events\HttpEvent; use Remcodex\Server\Response\ResponseInterface; HttpEvent::onRequest(function (ServerRequestInterface $request){ echo "Request received: [{$request->getMethod()}] {$request->getUri()} \n"; }); HttpEvent::onDispatch(function (DispatchResult $dispatchResult){ echo "Route dispatched: {$dispatchResult->getRoute()->getPrefix()} \n"; }); HttpEvent::onResponse(function (ResponseInterface $response){ echo "Response about to be sent: {$response->getStatusCode()} \n"; });