81 lines
1.8 KiB
PHP
Executable File
81 lines
1.8 KiB
PHP
Executable File
#!/usr/bin/env php
|
|
<?php
|
|
|
|
use NoccyLabs\Mercureact\Configuration;
|
|
use NoccyLabs\Mercureact\Daemon;
|
|
use PHPUnit\TextUI\Help;
|
|
|
|
require_once __DIR__."/../vendor/autoload.php";
|
|
|
|
$opts = getopt("c:C:h");
|
|
|
|
if (isset($opts['h'])) {
|
|
fwrite(STDERR, <<<HELP
|
|
Mercureact Realtime SSE Daemon
|
|
(c) 2024, NoccyLabs - Distributed under GNU GPL v3 or later.
|
|
|
|
Options:
|
|
|
|
-c config Read configuration from file
|
|
-C config Write a new configuration to file and open with editor
|
|
|
|
|
|
HELP);
|
|
exit(0);
|
|
}
|
|
|
|
if (isset($opts['C'])) {
|
|
$file = $opts['C'];
|
|
if (file_exists($file)) {
|
|
fwrite(STDERR, "File {$file} already exists. Will not overwrite.\n");
|
|
exit(1);
|
|
}
|
|
file_put_contents($file, <<<DEFAULTS
|
|
listeners:
|
|
- address: 0.0.0.0:9000
|
|
cors:
|
|
allow_origin: '*'
|
|
csp: "default-src * 'self' http: 'unsafe-eval' 'unsafe-inline'; connect-src * 'self'"
|
|
encryption:
|
|
cert: foo.pem
|
|
key: foo.key
|
|
|
|
websocket:
|
|
enable: true
|
|
|
|
publish:
|
|
overwrite_id: false
|
|
reject_duplicates: true
|
|
|
|
subscribe:
|
|
allow_anonymous: true
|
|
|
|
security:
|
|
jwt_secret: "!ChangeThisMercureHubJWTSecretKey!"
|
|
|
|
DEFAULTS);
|
|
passthru("editor ".escapeshellarg($file));
|
|
exit(1);
|
|
}
|
|
|
|
if (isset($opts['c'])) {
|
|
$config = Configuration::fromFile($opts['c']);
|
|
} else {
|
|
$config = Configuration::createDefault()
|
|
->addListener([
|
|
'address' => '127.0.0.1:8888',
|
|
'subscribe' => [
|
|
'anonymous' => true
|
|
]
|
|
])
|
|
->setAllowAnonymousSubscribe(true)
|
|
->setJwtSecret("!ChangeThisMercureHubJWTSecretKey!");
|
|
}
|
|
|
|
if (count($config->getListeners()) == 0) {
|
|
fwrite(STDERR, "No listeners available\n");
|
|
exit(1);
|
|
}
|
|
|
|
$daemon = new Daemon($config);
|
|
$daemon->start(); |