#!/usr/bin/php -q directory static $srcPathList = array(); static $init; // Attempts to set include path and directories once if( is_null( $init )){ // Sets init flag $init = true; // Sets a contextual directory $srcPathList["standard"] = __DIR__."/../lib"; // Updates include_path according to this list $includePathList = explode(PATH_SEPARATOR, get_include_path()); foreach($srcPathList as $path){ if ( !in_array($path, $includePathList)){ $includePathList[] = $path; } } // Reverses the path for search efficiency $finalIncludePathList = array_reverse($includePathList); // Sets the updated include_path set_include_path(implode(PATH_SEPARATOR, $finalIncludePathList)); } // Accepts old Foo_Bar namespacing if(preg_match("/_/", $class_name)){ $file_name = str_replace('_', DIRECTORY_SEPARATOR, $class_name) . '.php'; // Accepts 5.3 Foo\Bar PSR-0 namespacing } else if(preg_match("/\\/", $class_name)){ $file_name = str_replace('\\', DIRECTORY_SEPARATOR, ltrim($class_name,'\\')) . '.php'; // Accepts non namespaced classes } else { $file_name = $class_name . '.php'; } // Attempts to find file in namespace foreach($srcPathList as $namespace => $path ){ $file_path = $path.DIRECTORY_SEPARATOR.$file_name; if(is_file($file_path) && is_readable($file_path)){ require $file_path; return true; } } // Failed to find file return false; } // ================================================================== // ================================================================== // alternc config // ================================================================== // ================================================================== $version = "3.2"; // alternc 1.0 if(is_file("/usr/share/alternc/panel/class/config_nochk.php")){ require_once("/usr/share/alternc/panel/class/config_nochk.php"); }else{ $version = "1.0"; require_once("/var/alternc/bureau/class/config_nochk.php"); include "../bureau/class/class_system_bind.php"; } $directoryInstance = new Alternc_Diagnostic_Directory("/var/log/alternc/diagnostic"); // instanciation of the diagnosticManager service $diagnosticManager = new Alternc_Diagnostic_Manager( array( "directoryInstance" => $directoryInstance, "formatInstance" => new Alternc_Diagnostic_Format_Json($directoryInstance), "version" => $version )); // ================================================================== // ================================================================== // Console parser configuration // ================================================================== // ================================================================== $consoleParser = new Alternc_Diagnostic_Console(); $createCommmand = $consoleParser->addCommand('create', array('multiple'=>true,"alias"=>"c","description" => "Creates a new diagnostic")); $createCommmand->addOption('services', array( 'short_name' => '-s', 'long_name' => '--services', 'action' => 'StoreString', 'default' => 'apache2,dns,mail,system,mailman,mysql,panel,ftp', 'description' => 'Sets the services to use for diagnostics separated by comma ex: -d apache2,dns,mail', 'help_name' => 'services' )); $createCommmand->addOption('format', array( 'short_name' => '-f', 'long_name' => '--format', 'action' => 'StoreString', 'default' => 'json', 'description' => 'Sets the format of the diagnostic file : json (default)', 'help_name' => 'format' )); $listCommmand = $consoleParser->addCommand('list', array('multiple'=>false,"alias"=>"i","description" => "Shows all available diagnostics")); $diffCommmand = $consoleParser->addCommand('diff', array('multiple'=>false,"alias"=>"x","description" => "Removes one or more diagnotics")); $diffCommmand->addOption('source', array( 'short_name' => '-s', 'long_name' => '--source', 'action' => 'StoreString', 'default' => '0', 'description' => 'First file to diff, id or basename. Default: 0', 'help_name' => 'source' )); $diffCommmand->addOption('target', array( 'short_name' => '-t', 'long_name' => '--target', 'action' => 'StoreString', 'default' => '1', 'description' => 'First file to diff, id or basename. Default: 1', 'help_name' => 'target' )); $diffCommmand->addOption('format', array( 'short_name' => '-f', 'long_name' => '--format', 'action' => 'StoreString', 'default' => 'txt', 'description' => 'Sets the format of the diagnostic diff. default: txt', 'help_name' => 'format' )); $showCommand = $consoleParser->addCommand('show', array('multiple'=>false,"alias"=>"s","description" => "Prints a diagnotic content")); $showCommand->addOption('id', array( 'short_name' => '-i', 'long_name' => '--id', 'action' => 'StoreString', 'default' => '0', 'description' => 'Provides the id or name of a diagnostic to show. Default: 0', 'help_name' => 'id' )); $showCommand->addOption('format', array( 'short_name' => '-f', 'long_name' => '--format', 'action' => 'StoreString', 'default' => 'txt', 'description' => 'Sets the format of the output. Default: txt. Other choices : array', 'help_name' => 'format' )); $deleteCommmand = $consoleParser->addCommand('delete', array('multiple'=>false,"alias"=>"d","description" => "Deletes diagnostic files")); // Attempts to parse command line try { $result = $consoleParser->parse(); if ($result->command_name){ $command_name = "c_".$result->command_name; $command = $result->command; }else{ throw new \Exception("Welcome to AlternC Diagnostics! Use -h to learn about available commands."); } if( !method_exists($diagnosticManager, $command_name)){ throw new \Exception("Invalid command : $command"); } $result = $diagnosticManager->$command_name($command); } catch (\Exception $exc) { $consoleParser->displayError($exc->getMessage()); }