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(); |