From c05a21a8fc2381d385e537e2abe020c399b31e45 Mon Sep 17 00:00:00 2001 From: Roland Haeder Date: Tue, 25 Aug 2015 19:50:29 +0200 Subject: [PATCH] Added initial stuff for FUSE virtual file system + updated 'core'. Signed-off-by: Roland Haeder --- .../class_HubConsoleFuseController.php | 110 ++++++++++++++++++ .../class_HubcoinRewardFeature.php | 4 + application/hub/config-local.php-dist | 3 + application/hub/config.php | 10 ++ core | 2 +- docs/README | 15 +++ fuse/README.txt | 2 + 7 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 application/hub/classes/controller/console/class_HubConsoleFuseController.php create mode 100644 fuse/README.txt diff --git a/application/hub/classes/controller/console/class_HubConsoleFuseController.php b/application/hub/classes/controller/console/class_HubConsoleFuseController.php new file mode 100644 index 000000000..1ae5f8a04 --- /dev/null +++ b/application/hub/classes/controller/console/class_HubConsoleFuseController.php @@ -0,0 +1,110 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007 - 2008 Roland Haeder, 2009 - 2015 Hub Developer Team + * @license GNU GPL 3.0 or any newer version + * @link http://www.shipsimu.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class HubConsoleFuseController extends BaseController implements Controller { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + + // Init additional filter chains + foreach (array('bootstrap','shutdown') as $filterChain) { + $this->initFilterChain($filterChain); + } // END - foreach + } + + /** + * Creates an instance of this class + * + * @param $resolverInstance An instance of a command resolver class + * @return $controllerInstance A prepared instance of this class + */ + public static final function createHubConsoleFuseController (CommandResolver $resolverInstance) { + // Create the instance + $controllerInstance = new HubConsoleFuseController(); + + // Set the command resolver + $controllerInstance->setResolverInstance($resolverInstance); + + // Return the prepared instance + return $controllerInstance; + } + + /** + * Handles the given request and response + * + * @param $requestInstance An instance of a request class + * @param $responseInstance An instance of a response class + * @return void + */ + public function handleRequest (Requestable $requestInstance, Responseable $responseInstance) { + // Get the command instance from the resolver by sending a request instance to the resolver + $commandInstance = $this->getResolverInstance()->resolveCommandByRequest($requestInstance); + + // Add more filters by the command + $commandInstance->addExtraFilters($this, $requestInstance); + + // Run the pre filters + $this->executePreFilters($requestInstance, $responseInstance); + + // This request was valid! :-D + $requestInstance->requestIsValid(); + + // Execute the command + $commandInstance->execute($requestInstance, $responseInstance); + + // Run the pre filters + $this->executePostFilters($requestInstance, $responseInstance); + + // Flush the response out + $responseInstance->flushBuffer(); + } + + /** + * Add a bootstrap filter + * + * @param $filterInstance A Filterable class + * @return void + */ + public function addBootstrapFilter (Filterable $filterInstance) { + $this->addFilter('bootstrap', $filterInstance); + } + + /** + * Executes all bootstrap filters + * + * @param $requestInstance A Requestable class + * @param $responseInstance A Responseable class + * @return void + */ + public function executeBootstrapFilters (Requestable $requestInstance, Responseable $responseInstance) { + $this->executeFilters('bootstrap', $requestInstance, $responseInstance); + } +} + +// [EOF] +?> diff --git a/application/hub/classes/feature/hubcoin_reward/class_HubcoinRewardFeature.php b/application/hub/classes/feature/hubcoin_reward/class_HubcoinRewardFeature.php index f868dd949..5c987420d 100644 --- a/application/hub/classes/feature/hubcoin_reward/class_HubcoinRewardFeature.php +++ b/application/hub/classes/feature/hubcoin_reward/class_HubcoinRewardFeature.php @@ -64,6 +64,10 @@ class HubcoinRewardFeature extends BaseFeature implements Feature { return $isAvailable; } + /////////////////////////////////////////////////////////////////////////// + // Feature methods + /////////////////////////////////////////////////////////////////////////// + /** * Feature method 'generateHash' * diff --git a/application/hub/config-local.php-dist b/application/hub/config-local.php-dist index 3525a612a..554d7a265 100644 --- a/application/hub/config-local.php-dist +++ b/application/hub/config-local.php-dist @@ -57,5 +57,8 @@ $cfg->setConfigEntry('hub_bootstrap_nodes', 'tcp://188.138.90.169:9060'); // CFG: ENABLE-FEATURE-HUBCOINS-REWARD // Disable this if you don't want to "earn" HubCoins: $cfg->setConfigEntry('enable_feature_hubcoins_reward', 'N'); +// CFG: ENABLE-FEATURE-FUSE +// Enable this, if you have fuse.dll/so installed and want to access your node: $cfg->setConfigEntry('enable_feature_fuse', 'Y'); + // [EOF] ?> diff --git a/application/hub/config.php b/application/hub/config.php index df325dd15..2ad23e7c6 100644 --- a/application/hub/config.php +++ b/application/hub/config.php @@ -1543,5 +1543,15 @@ $cfg->setConfigEntry('news_index_limit', 10); // CFG: HUB-INDEX-MENU-CLASS $cfg->setConfigEntry('hub_index_menu_class', 'HubIndexMenu'); +/////////////////////////////////////////////////////////////////////////////// +// Virtual file system with FUSE // +/////////////////////////////////////////////////////////////////////////////// + +// CFG: HUB-CONSOLE-CMD-FUSE-RESOLVER-CLASS +$cfg->setConfigEntry('hub_console_cmd_fuse_resolver_class', 'ConsoleCommandResolver'); + +// CFG: ENABLE-FEATURE-FUSE +$cfg->setConfigEntry('enable_feature_fuse', 'N'); + // [EOF] ?> diff --git a/core b/core index 7bc401465..2fa8c1839 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit 7bc4014657a70dedfc38b9b28d134aa7c3a6158c +Subproject commit 2fa8c1839a405d28950d4c1503270942ace0ca24 diff --git a/docs/README b/docs/README index 01affac84..1c27ada58 100644 --- a/docs/README +++ b/docs/README @@ -134,3 +134,18 @@ and deb-src lines: deb [arch=amd64,i386] http://localhost:xxxxx/ftp.de.debian.org/debian unstable main non-free contrib deb-src [arch=amd64,i386] http://localhost:xxxxx/ftp.de.debian.org/debian unstable main non-free contrib + +-------------------------------------------------------------------------------- +9.) How to start the virtual file system and use it +-------------------------------------------------------------------------------- + +The FUSE virtual filesystem allows to access your node's properties and (later) +many more through FUSE (Filesystem in User SpacE). You need the PHP extension +'fuse' enabled in your php.ini and please use latest SVN code from +https://svn.php.net/repository/pecl/fuse/trunk as I also use it. If fuse.dll/so +is correctly installed and enabled in php.ini, you can try to start it like this: + +php index.php app=hub command=fuse + +If all went smooth, you can then access the virtual file system through the +mount point 'fuse' in root directory. diff --git a/fuse/README.txt b/fuse/README.txt new file mode 100644 index 000000000..b1e8e7233 --- /dev/null +++ b/fuse/README.txt @@ -0,0 +1,2 @@ +Do not add any files here, they won't be readable in the virtual file system as +this is the mount point for FUSE. -- 2.39.5