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
						
					
					
				<?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,
 | 
						|
		);
 | 
						|
	}
 | 
						|
}
 |