make sysinfo part of core, and use YAML for easier parsing
This commit is contained in:
		
							parent
							
								
									06e5b02874
								
							
						
					
					
						commit
						ecbf4f52a0
					
				| @ -9,6 +9,7 @@ class ETInfo extends ExtensionInfo | ||||
|     public $url = self::SHIMMIE_URL; | ||||
|     public $authors = self::SHISH_AUTHOR; | ||||
|     public $license = self::LICENSE_GPLV2; | ||||
|     public $core = true; | ||||
|     public $description = "Show various bits of system information"; | ||||
|     public $documentation = | ||||
| "Knowing the information that this extension shows can be very useful for debugging. There's also an option to send
 | ||||
|  | ||||
							
								
								
									
										107
									
								
								ext/et/main.php
									
									
									
									
									
								
							
							
						
						
									
										107
									
								
								ext/et/main.php
									
									
									
									
									
								
							| @ -10,7 +10,7 @@ class ET extends Extension | ||||
|         global $user; | ||||
|         if ($event->page_matches("system_info")) { | ||||
|             if ($user->can(Permissions::VIEW_SYSINTO)) { | ||||
|                 $this->theme->display_info_page($this->get_info()); | ||||
|                 $this->theme->display_info_page($this->to_yaml($this->get_info())); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| @ -29,7 +29,7 @@ class ET extends Extension | ||||
|     { | ||||
|         global $user; | ||||
|         if ($user->can(Permissions::VIEW_SYSINTO)) { | ||||
|             $event->add_link("System Info", make_link("system_info")); | ||||
|             $event->add_link("System Info", make_link("system_info"), 99); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| @ -40,9 +40,7 @@ class ET extends Extension | ||||
|             print "\t\tList a bunch of info\n\n"; | ||||
|         } | ||||
|         if ($event->cmd == "info") { | ||||
|             foreach ($this->get_info() as $k => $v) { | ||||
|                 print("$k = $v\n"); | ||||
|             } | ||||
|             print($this->to_yaml($this->get_info())); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| @ -53,51 +51,66 @@ class ET extends Extension | ||||
|     { | ||||
|         global $config, $database; | ||||
| 
 | ||||
|         $info = []; | ||||
|         $info['site_title'] = $config->get_string(SetupConfig::TITLE); | ||||
|         $info['site_theme'] = $config->get_string(SetupConfig::THEME); | ||||
|         $info['site_url']   = "http://" . $_SERVER["HTTP_HOST"] . get_base_href(); | ||||
| 
 | ||||
|         $info['sys_shimmie'] = VERSION; | ||||
|         $info['sys_schema']  = $config->get_int("db_version"); | ||||
|         $info['sys_php']     = phpversion(); | ||||
|         $info['sys_db']      = $database->get_driver_name(); | ||||
|         $info['sys_os']      = php_uname(); | ||||
|         $info['sys_disk']    = to_shorthand_int((int)disk_total_space("./") - (int)disk_free_space("./")) . " / " . | ||||
|                                to_shorthand_int((int)disk_total_space("./")); | ||||
|         $info['sys_server']  = isset($_SERVER["SERVER_SOFTWARE"]) ? $_SERVER["SERVER_SOFTWARE"] : 'unknown'; | ||||
| 
 | ||||
|         $info[MediaConfig::FFMPEG_PATH]	= $config->get_string(MediaConfig::FFMPEG_PATH); | ||||
|         $info[MediaConfig::CONVERT_PATH]	= $config->get_string(MediaConfig::CONVERT_PATH); | ||||
|         $info[MediaConfig::MEM_LIMIT]	= $config->get_int(MediaConfig::MEM_LIMIT); | ||||
| 
 | ||||
|         $info[ImageConfig::THUMB_ENGINE]	= $config->get_string(ImageConfig::THUMB_ENGINE); | ||||
|         $info[ImageConfig::THUMB_QUALITY]	= $config->get_int(ImageConfig::THUMB_QUALITY); | ||||
|         $info[ImageConfig::THUMB_WIDTH]	= $config->get_int(ImageConfig::THUMB_WIDTH); | ||||
|         $info[ImageConfig::THUMB_HEIGHT]	= $config->get_int(ImageConfig::THUMB_HEIGHT); | ||||
|         $info[ImageConfig::THUMB_SCALING]	= $config->get_int(ImageConfig::THUMB_SCALING); | ||||
|         $info[ImageConfig::THUMB_TYPE]	    = $config->get_string(ImageConfig::THUMB_TYPE); | ||||
| 
 | ||||
|         $info['stat_images']   = $database->get_one("SELECT COUNT(*) FROM images"); | ||||
|         $info['stat_comments'] = $database->get_one("SELECT COUNT(*) FROM comments"); | ||||
|         $info['stat_users']    = $database->get_one("SELECT COUNT(*) FROM users"); | ||||
|         $info['stat_tags']     = $database->get_one("SELECT COUNT(*) FROM tags"); | ||||
|         $info['stat_image_tags'] = $database->get_one("SELECT COUNT(*) FROM image_tags"); | ||||
| 
 | ||||
|         $els = []; | ||||
|         foreach (getSubclassesOf("Extension") as $class) { | ||||
|             $els[] = $class; | ||||
|         $core_exts = ExtensionInfo::get_core_extensions(); | ||||
|         $extra_exts = []; | ||||
|         foreach (ExtensionInfo::get_all() as $info) { | ||||
|             if ($info->is_enabled() && !in_array($info->key, $core_exts)) { | ||||
|                 $extra_exts[] = $info->key; | ||||
|             } | ||||
|         } | ||||
|         $info['sys_extensions'] = join(', ', $els); | ||||
| 
 | ||||
|         $info['handled_extensions'] = join(', ', DataHandlerExtension::get_all_supported_exts()); | ||||
| 
 | ||||
|         //$cfs = array();
 | ||||
|         //foreach($database->get_all("SELECT name, value FROM config") as $pair) {
 | ||||
|         //	$cfs[] = $pair['name']."=".$pair['value'];
 | ||||
|         //}
 | ||||
|         //$info[''] = "Config: ".join(", ", $cfs);
 | ||||
|         $info = [ | ||||
|             "about" => [ | ||||
|                 'title' => $config->get_string(SetupConfig::TITLE), | ||||
|                 'theme' => $config->get_string(SetupConfig::THEME), | ||||
|                 'url'   => "http://" . $_SERVER["HTTP_HOST"] . get_base_href(), | ||||
|             ], | ||||
|             "versions" => [ | ||||
|                 'shimmie' => VERSION, | ||||
|                 'schema'  => $config->get_int("db_version"), | ||||
|                 'php'     => phpversion(), | ||||
|                 'db'      => $database->get_driver_name(), | ||||
|                 'os'      => php_uname(), | ||||
|                 'server'  => isset($_SERVER["SERVER_SOFTWARE"]) ? $_SERVER["SERVER_SOFTWARE"] : 'unknown', | ||||
|             ], | ||||
|             "extensions" => [ | ||||
|                 "core" => $core_exts, | ||||
|                 "extra" => $extra_exts, | ||||
|                 "handled_extensions" => DataHandlerExtension::get_all_supported_exts(), | ||||
|             ], | ||||
|             "stats" => [ | ||||
|                 'images'   => (int)$database->get_one("SELECT COUNT(*) FROM images"), | ||||
|                 'comments' => (int)$database->get_one("SELECT COUNT(*) FROM comments"), | ||||
|                 'users'    => (int)$database->get_one("SELECT COUNT(*) FROM users"), | ||||
|             ], | ||||
|             "media" => [ | ||||
|                 "memory_limit" => to_shorthand_int($config->get_int(MediaConfig::MEM_LIMIT)), | ||||
|                 "disk_use" => to_shorthand_int((int)disk_total_space("./") - (int)disk_free_space("./")), | ||||
|                 "disk_total" => to_shorthand_int((int)disk_total_space("./")), | ||||
|             ], | ||||
|             "thumbnails" => [ | ||||
|                 "engine" => $config->get_string(ImageConfig::THUMB_ENGINE), | ||||
|                 "quality" => $config->get_int(ImageConfig::THUMB_QUALITY), | ||||
|                 "width" => $config->get_int(ImageConfig::THUMB_WIDTH), | ||||
|                 "height" => $config->get_int(ImageConfig::THUMB_HEIGHT), | ||||
|                 "scaling" => $config->get_int(ImageConfig::THUMB_SCALING), | ||||
|                 "type" => $config->get_string(ImageConfig::THUMB_TYPE), | ||||
|             ], | ||||
|         ]; | ||||
| 
 | ||||
|         return $info; | ||||
|     } | ||||
| 
 | ||||
|     private function to_yaml($info) | ||||
|     { | ||||
|         $data = ""; | ||||
|         foreach ($info as $title => $section) { | ||||
|             $data .= "$title:\n"; | ||||
|             foreach ($section as $k => $v) { | ||||
|                 $data .= "  $k: " . json_encode($v, JSON_UNESCAPED_SLASHES) . "\n"; | ||||
|             } | ||||
|             $data .= "\n"; | ||||
|         } | ||||
|         return $data; | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -1,5 +1,10 @@ | ||||
| <?php declare(strict_types=1); | ||||
| 
 | ||||
| use function MicroHTML\FORM; | ||||
| use function MicroHTML\INPUT; | ||||
| use function MicroHTML\P; | ||||
| use function MicroHTML\TEXTAREA; | ||||
| 
 | ||||
| class ETTheme extends Themelet | ||||
| { | ||||
|     /* | ||||
| @ -7,61 +12,32 @@ class ETTheme extends Themelet | ||||
|      * | ||||
|      * $info = an array of ($name => $value) | ||||
|      */ | ||||
|     public function display_info_page($info) | ||||
|     public function display_info_page($yaml) | ||||
|     { | ||||
|         global $page; | ||||
| 
 | ||||
|         $page->set_title("System Info"); | ||||
|         $page->set_heading("System Info"); | ||||
|         $page->add_block(new NavBlock()); | ||||
|         $page->add_block(new Block("Information:", $this->build_data_form($info))); | ||||
|         $page->add_block(new Block("Information:", $this->build_data_form($yaml))); | ||||
|     } | ||||
| 
 | ||||
|     protected function build_data_form($info) | ||||
|     protected function build_data_form($yaml) | ||||
|     { | ||||
|         $data = <<<EOD | ||||
| Optional: | ||||
| Site title: {$info['site_title']} | ||||
| Theme: {$info['site_theme']} | ||||
| Genre: [describe your site here] | ||||
| URL: {$info['site_url']} | ||||
| 
 | ||||
| System stats: | ||||
| Shimmie: {$info['sys_shimmie']} | ||||
| Schema: {$info['sys_schema']} | ||||
| PHP: {$info['sys_php']} | ||||
| OS: {$info['sys_os']} | ||||
| Database: {$info['sys_db']} | ||||
| Server: {$info['sys_server']} | ||||
| Disk use: {$info['sys_disk']} | ||||
| 
 | ||||
| Media System: | ||||
| Memory Limit: {$info[MediaConfig::MEM_LIMIT]} | ||||
| 
 | ||||
| Thumbnail Generation: | ||||
| Engine: {$info[ImageConfig::THUMB_ENGINE]} | ||||
| Type: {$info[ImageConfig::THUMB_TYPE]} | ||||
| Quality: {$info[ImageConfig::THUMB_QUALITY]} | ||||
| Width: {$info[ImageConfig::THUMB_WIDTH]} | ||||
| Height: {$info[ImageConfig::THUMB_HEIGHT]} | ||||
| Scaling: {$info[ImageConfig::THUMB_SCALING]} | ||||
| 
 | ||||
| Shimmie stats: | ||||
| Images: {$info['stat_images']} | ||||
| Comments: {$info['stat_comments']} | ||||
| Users: {$info['stat_users']} | ||||
| Tags: {$info['stat_tags']} | ||||
| Applications: {$info['stat_image_tags']} | ||||
| Extensions: {$info['sys_extensions']} | ||||
| EOD; | ||||
|         return <<<EOD | ||||
| <form action='https://shimmie.shishnet.org/register.php' method='POST'> | ||||
| 	<input type='hidden' name='registration_api' value='1'> | ||||
| 	<textarea name='data' rows='20' cols='80'>$data</textarea> | ||||
| 	<br><input type='submit' value='Click to send to Shish'> | ||||
| 	<br>Your stats are useful so that I know which combinations | ||||
| 	of web servers / databases / etc I need to support. | ||||
| </form> | ||||
| EOD; | ||||
|         return (string)FORM( | ||||
|             ["action"=>"https://shimmie.shishnet.org/register.php", "method"=>"POST"], | ||||
|             INPUT(["type"=>"hidden", "name"=>"registration_api", "value"=>"2"]), | ||||
|             P( | ||||
|                 "Your stats are useful so that I know which combinations of ". | ||||
|                 "web servers / databases / etc I need to support :)" | ||||
|             ), | ||||
|             P(TEXTAREA( | ||||
|                 ["name"=>'data', "style"=>"width: 100%; height: 20em;"], | ||||
|                 $yaml | ||||
|             )), | ||||
|             P(INPUT( | ||||
|                 ["type"=>'submit', "value"=>'Click to send to Shish', "style"=>"width: 100%; padding: 1em;"] | ||||
|             )), | ||||
|         ); | ||||
|     } | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user