You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							94 lines
						
					
					
						
							4.0 KiB
						
					
					
				
			
		
		
	
	
							94 lines
						
					
					
						
							4.0 KiB
						
					
					
				| <?php
 | |
| 
 | |
| namespace Hestia\WebApp\Installers\Example;
 | |
| 
 | |
| use Hestia\System\Util;
 | |
| use \Hestia\WebApp\Installers\BaseSetup as BaseSetup;
 | |
| 
 | |
| class ExampleSetup extends BaseSetup {
 | |
| 
 | |
|     protected $appInfo = [ 
 | |
|         'name' => 'Example',
 | |
|         'group' => 'cms',
 | |
|         //keep always set to enabled. When PHP version isn't supported it will change it to no and disable it
 | |
|         'enabled' => true,
 | |
|         'version' => 'latest',
 | |
|         'thumbnail' => 'example.png' //Max size is 300px by 300px 
 | |
|     ];
 | |
|     
 | |
|     protected $appname = 'example';
 | |
|     protected $config = [
 | |
|         'form' => [
 | |
|             //Note at least one input field is currently required
 | |
|             'protocol' => [ 
 | |
|                 'type' => 'select',
 | |
|                 //type in this case dropdown / select
 | |
|                 'options' => ['http','https'],
 | |
|                 //default options
 | |
|                 'value' => 'https'
 | |
|                 //value for default value 
 | |
|             ],
 | |
|             'site_name' => ['type'=>'text', 'value'=>'Demo'],
 | |
|             'username' => ['value'=>'Username'],
 | |
|             'email' => 'text',
 | |
|             'password' => 'password',
 | |
|             ],
 | |
|         'database' => true, // add the text fields for Database Name, Database User, Database Password + the option to create them
 | |
|         'resources' => [
 | |
|             //resoruce may be an archive (zip, tar.gz)
 | |
|             'archive'  => [ 'src' => 'https://download.example.com/example.version.tar.gz' ],
 | |
|             //or a composer project for example.
 | |
|             //By default composer v2 is used if you need to use v1 you can append 'version' => 1 to the composer array 
 | |
|             'composer' => [ 'src' => 'example/projext', 'dst' => '/', 'version' => 1 ],
 | |
|             # even src is set it will download wordpress via wp-cli. Currently only downloading is done over cli. Setting up is still done with curl. 
 | |
|             'wp'  => [ 'src' => 'https://wordpress.org/latest.tar.gz' ],
 | |
|         ], 
 | |
|         'server' => [
 | |
|             'nginx' => [
 | |
|                 'template' => 'wordpress',
 | |
|             ],
 | |
|             'apache2' => [
 | |
|                 'template' => 'example',
 | |
|             ],
 | |
|             'php' => [
 | |
|                 //list of supported php versions if available it will always select the last version
 | |
|                 //When non is available it will disable the "Quick install app" in the view
 | |
|                 'supported' => [ '7.4','8.0','8.1' ],
 | |
|             ],
 | |
|         ],
 | |
|     ];
 | |
|     
 | |
|     public function install(array $options = null)
 | |
|     {
 | |
|         //parent::install will install the the resource on in /home/{user}/web/{domain}/public_html
 | |
|         //Currenly only archive and composer project and wp-cli is supported. 
 | |
|         parent::install($options);
 | |
|         /*  
 | |
|             Some can config need to be manipulated with config files
 | |
|             v-open-fs-file
 | |
|             v-move-fs-file
 | |
|             v-delete-fs-file
 | |
|             and so on. Please check /web/local/hesita/web/src/app/WebApp/Installers for more examples or use our documentation found on https://docs.hestiacp.com
 | |
|             v-run-cli-cmd  has an limited list of allowed commands see https://github.com/hestiacp/hestiacp/blob/main/bin/v-run-cli-cmd
 | |
|             
 | |
|             Run here the other commands 
 | |
|             Software that is installable via CLI command the easist way is use a an command like
 | |
|             for example:
 | |
|         */ 
 | |
|         $this->appcontext->runUser('v-run-cli-cmd', ['/usr/bin/php',
 | |
|             $this->getDocRoot('command/to/run'), 
 | |
|             'maintenance:install',
 | |
|             '--database mysql',
 | |
|             '--database-name '.$this->appcontext->user() . '_' .$options['database_name'],
 | |
|             '--database-user '.$this->appcontext->user() . '_' .$options['database_user'],
 | |
|             '--database-pass '.$options['database_password'],
 | |
|             '--admin-user '.$options['username'],
 | |
|             '--admin-pass '.$options['password']
 | |
|             ], $status);
 | |
|             // If $status->code === 0 the command was executed properly / successfully 
 | |
|             return ($status === 0);
 | |
| 
 | |
|     }
 | |
| }
 | |
| // When done upload the folder to /usr/local/hestia/web/src/app/WebApp/Installers
 |