From 5d8c8b122b034918a6214f569e09da783793cc27 Mon Sep 17 00:00:00 2001 From: yggverse Date: Mon, 6 May 2024 20:43:08 +0300 Subject: [PATCH] implement startup mode, init nex filesystem server --- README.md | 6 +++++ default.json | 1 + .../{Nex.php => Nex/Filesystem.php} | 6 ++--- src/server.php | 26 ++++++++++++++++--- 4 files changed, 32 insertions(+), 7 deletions(-) rename src/Controller/{Nex.php => Nex/Filesystem.php} (97%) diff --git a/README.md b/README.md index fd3e96d..a020446 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,10 @@ Based on [Ratchet](https://github.com/ratchetphp/Ratchet) asynchronous socket li * Multi-protocol: * [x] [NEX](https://nightfall.city/nex/info/specification.txt) * [ ] [Gemini](https://geminiprotocol.net) +* Multi-mode: + * [x] Static filesystem + * [ ] Dynamic application + * [ ] Reverse proxy * Connection event log * Optional: * file navigation on directory request @@ -71,6 +75,8 @@ Provide arguments in `key=value` format, separated by space ###### Optional +* `mode` - server implementation variant, `fs` (filesystem) by default + * `fs` - static files hosting for the `root` location * `host` - default is `127.0.0.1` e.g. `localhost` connections only * `port` - default value depends of server `type` selected, for example `1900` for `nex` or `1965` for `gemini` * `file` - index **file name** that server try to open on directory path requested, disabled by default diff --git a/default.json b/default.json index f14dbc6..b4bad41 100644 --- a/default.json +++ b/default.json @@ -1,5 +1,6 @@ { "host":"127.0.0.1", + "mode":"fs", "list":true, "dump":true } \ No newline at end of file diff --git a/src/Controller/Nex.php b/src/Controller/Nex/Filesystem.php similarity index 97% rename from src/Controller/Nex.php rename to src/Controller/Nex/Filesystem.php index a5aa544..67d580e 100644 --- a/src/Controller/Nex.php +++ b/src/Controller/Nex/Filesystem.php @@ -1,10 +1,10 @@ _environment->get('port'), (string) $this->_filesystem->root() ], - _('[{time}] [init] server started at {host}:{port}{root}') + _('[{time}] [init] filesystem server started at nex://{host}:{port}{root}') ) . PHP_EOL ); } diff --git a/src/server.php b/src/server.php index 553dea1..79016e4 100644 --- a/src/server.php +++ b/src/server.php @@ -31,11 +31,26 @@ try { case 'nex': + switch ($environment->get('mode')) + { + case 'fs': + + $controller = new \Yggverse\Next\Controller\Nex\Filesystem( + $environment, + $filesystem + ); + + break; + + default: + + throw new \Exception( + _('unsupported mode for nex server type!') + ); + } + $server = \Ratchet\Server\IoServer::factory( - new \Yggverse\Next\Controller\Nex( - $environment, - $filesystem - ), + $controller, $environment->get('port'), $environment->get('host') ); @@ -56,4 +71,7 @@ try catch (\Exception $exception) { // @TODO + print( + $exception->getMessage() + ) . PHP_EOL; }