More tests, misc fixes
This commit is contained in:
@@ -8,6 +8,10 @@ class Configuration
|
||||
{
|
||||
private array $config = [];
|
||||
|
||||
public function __construct(array $config=[])
|
||||
{
|
||||
$this->config = $config;
|
||||
}
|
||||
|
||||
public static function createDefault(): Configuration
|
||||
{
|
||||
|
||||
+11
-6
@@ -11,6 +11,7 @@ use React\EventLoop\Loop;
|
||||
use React\EventLoop\LoopInterface;
|
||||
use React\Socket\SecureServer;
|
||||
use React\Socket\SocketServer;
|
||||
use React\Socket\TcpServer;
|
||||
|
||||
class Daemon
|
||||
{
|
||||
@@ -20,10 +21,11 @@ class Daemon
|
||||
|
||||
private Server $server;
|
||||
|
||||
private LoggerInterface $logger;
|
||||
private Logger $logger;
|
||||
|
||||
public function __construct(Configuration $config, bool $verbose=false, ?LoopInterface $loop=null)
|
||||
{
|
||||
if (!defined("MERCUREACT_VERSION")) define("MERCUREACT_VERSION", "0.0.0");
|
||||
$this->config = $config;
|
||||
$this->loop = $loop??Loop::get();
|
||||
$this->logger = $this->createLogger($verbose);
|
||||
@@ -42,7 +44,7 @@ class Daemon
|
||||
{
|
||||
$this->server = new Server($this->config, $this->logger, $this->loop);
|
||||
|
||||
$this->logger->info("NoccyLabs Mercureact Daemon v".MERCUREACT_VERSION);
|
||||
$this->logger->info("Starting NoccyLabs Mercureact Daemon v".MERCUREACT_VERSION." (".MERCUREACT_BUILDTIME.")");
|
||||
|
||||
$listenAddress = $this->config->getListenAddress();
|
||||
if (!$listenAddress) {
|
||||
@@ -53,16 +55,19 @@ class Daemon
|
||||
$certificate = $this->config->get("server.encryption.local_cert");
|
||||
|
||||
if ($certificate) {
|
||||
$this->logger->warning("SSL/TLS suport is broken.");
|
||||
$this->logger->info("Using local cert: {$certificate}");
|
||||
$context = [
|
||||
'tls' => $this->config->get("server.encryption.")
|
||||
];
|
||||
$context = $this->config->get("server.encryption.");
|
||||
$uri = 'tls://' . $listenAddress;
|
||||
$context['crypto_method'] = STREAM_CRYPTO_METHOD_TLSv1_3_SERVER;
|
||||
$socket = new TcpServer($listenAddress);
|
||||
$socket = new SecureServer($socket, null, $context??[]);
|
||||
} else {
|
||||
$uri = 'tcp://' . $listenAddress;
|
||||
$context = [];
|
||||
$socket = new SocketServer($uri);
|
||||
}
|
||||
|
||||
$socket = new SocketServer($uri, $context??[]);
|
||||
|
||||
$this->server->listen($socket);
|
||||
}
|
||||
|
||||
@@ -32,6 +32,11 @@ class ApiHandler
|
||||
return new Promise(
|
||||
function (callable $resolve, callable $reject) use ($next, $request) {
|
||||
|
||||
if (!$this->config->get('server.enable_api', true)) {
|
||||
$resolve($next($request));
|
||||
return;
|
||||
}
|
||||
|
||||
$path = $request->getUri()->getPath();
|
||||
|
||||
// FIXME remove this when done debugging
|
||||
|
||||
@@ -75,11 +75,14 @@ class ResponseMiddleware
|
||||
'method' => $request->getMethod(),
|
||||
'path' => $request->getUri()->getPath(),
|
||||
]);
|
||||
|
||||
return $response
|
||||
// ->withAddedHeader('Link', '<https://'.$host.'/.well-known/mercure>; rel="mercure"')
|
||||
// ->withAddedHeader('Link', '<wss://'.$host.'/.well-known/mercure>; rel="mercure+ws"')
|
||||
->withHeader('Access-Control-Allow-Origin', '*')
|
||||
->withHeader('Content-Security-Policy', "default-src * 'self' http: 'unsafe-eval' 'unsafe-inline'; connect-src * 'self'")
|
||||
->withHeader('Access-Control-Allow-Origin',
|
||||
$this->config->get('server.cors.allow_origin', '*'))
|
||||
->withHeader('Content-Security-Policy',
|
||||
$this->config->get('server.cors.csp', "default-src * 'self' http: 'unsafe-eval' 'unsafe-inline'; connect-src * 'self'"))
|
||||
->withHeader('Cache-Control', 'must-revalidate')
|
||||
->withHeader('Server', 'Mercureact/0.1.0');
|
||||
}
|
||||
|
||||
+4
-4
@@ -32,7 +32,7 @@ class Server
|
||||
private SplObjectStorage $webSocketClients;
|
||||
|
||||
private TopicManager $topicManager;
|
||||
|
||||
|
||||
private Logger $logger;
|
||||
|
||||
private ResponseMiddleware $responseMiddleware;
|
||||
@@ -47,13 +47,13 @@ class Server
|
||||
*
|
||||
*
|
||||
*/
|
||||
public function __construct(Configuration $config, ?LoggerInterface $logger, ?LoopInterface $loop=null)
|
||||
public function __construct(Configuration $config, ?Logger $logger, ?LoopInterface $loop=null)
|
||||
{
|
||||
$this->loop = $loop??Loop::get();
|
||||
|
||||
$this->config = $config;
|
||||
|
||||
$this->logger = $logger ?? new NullLogger();
|
||||
$this->logger = $logger ?? new Logger("main");
|
||||
if ($logger instanceof Logger) {
|
||||
$topicLogger = $logger->withName("broker");
|
||||
} else {
|
||||
@@ -89,7 +89,7 @@ class Server
|
||||
* @return HttpServer
|
||||
*/
|
||||
private function createHttpServer(): HttpServer
|
||||
{
|
||||
{
|
||||
$stack = [
|
||||
$this->responseMiddleware = new ResponseMiddleware(
|
||||
config: $this->config,
|
||||
|
||||
Reference in New Issue
Block a user