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.
		
		
		
		
		
			
		
			
				
					49 lines
				
				1.2 KiB
			
		
		
			
		
	
	
					49 lines
				
				1.2 KiB
			| 
								 
											2 years ago
										 
									 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace Filegator\Services\Archiver\Adapters;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use Filegator\Container\Container;
							 | 
						||
| 
								 | 
							
								use Filegator\Services\Archiver\ArchiverInterface;
							 | 
						||
| 
								 | 
							
								use Filegator\Services\Service;
							 | 
						||
| 
								 | 
							
								use Filegator\Services\Storage\Filesystem as Storage;
							 | 
						||
| 
								 | 
							
								use Filegator\Services\Tmpfs\TmpfsInterface;
							 | 
						||
| 
								 | 
							
								use function Hestiacp\quoteshellarg\quoteshellarg;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class HestiaZipArchiver extends ZipArchiver implements Service, ArchiverInterface {
							 | 
						||
| 
								 | 
							
									protected $container;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function __construct(TmpfsInterface $tmpfs, Container $container) {
							 | 
						||
| 
								 | 
							
										$this->tmpfs = $tmpfs;
							 | 
						||
| 
								 | 
							
										$this->container = $container;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function uncompress(string $source, string $destination, Storage $storage) {
							 | 
						||
| 
								 | 
							
										$auth = $this->container->get("Filegator\Services\Auth\AuthInterface");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										$v_user = basename($auth->user()->getUsername());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										if (!strlen($v_user)) {
							 | 
						||
| 
								 | 
							
											return;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										if (strpos($source, "/home") === false) {
							 | 
						||
| 
								 | 
							
											$source = "/home/$v_user/" . $source;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										if (strpos($destination, "/home") === false) {
							 | 
						||
| 
								 | 
							
											$destination = "/home/$v_user/" . $destination;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										exec(
							 | 
						||
| 
								 | 
							
											"sudo /usr/local/hestia/bin/v-extract-fs-archive " .
							 | 
						||
| 
								 | 
							
												quoteshellarg($v_user) .
							 | 
						||
| 
								 | 
							
												" " .
							 | 
						||
| 
								 | 
							
												quoteshellarg($source) .
							 | 
						||
| 
								 | 
							
												" " .
							 | 
						||
| 
								 | 
							
												quoteshellarg($destination),
							 | 
						||
| 
								 | 
							
											$output,
							 | 
						||
| 
								 | 
							
											$return_var,
							 | 
						||
| 
								 | 
							
										);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |