Example #1
0
 /**
  * Move the children of this directory into targetDir
  *
  * @param string $targetDir Target directory pathname
  *
  * @return void
  */
 public function moveChildren($targetDir)
 {
     $info = new \SplFileInfo($targetDir);
     if (!$info->isDir()) {
         throw new InvalidArgumentException(sprintf('Target dir not found'));
     }
     if (!$info->isReadable()) {
         throw new InvalidArgumentException(sprintf('Target dir not readable'));
     }
     if (!$info->isWritable()) {
         throw new InvalidArgumentException(sprintf('Target dir not writable'));
     }
     foreach (new \DirectoryIterator($this->dir) as $info) {
         if ($info->isDot()) {
             continue;
         }
         $sourcePathname = $info->getPathname();
         $subdirPathname = $this->subtractBasedir($sourcePathname, $this->dir);
         $targetPathname = sprintf('%s/%s', $targetDir, $subdirPathname);
         rename($sourcePathname, $targetPathname);
     }
 }
Example #2
0
 public function deleteSubDir($subDir)
 {
     $pathname = $this->getPathname($subDir);
     if (!$this->isValidSubDir($pathname)) {
         throw new InvalidArgumentException(sprintf('Not a valid subDir of temporary dir: "%s"', $pathname));
     }
     $fileInfo = new \SplFileInfo($pathname);
     if (!$fileInfo->isDir() || !$fileInfo->isReadable() || !$fileInfo->isWritable()) {
         return;
     }
     foreach (new \DirectoryIterator($pathname) as $fileInfo) {
         if ($fileInfo->isDot()) {
             continue;
         }
         if ($fileInfo->isDir()) {
             $this->deleteSubDir($this->getSubDir($fileInfo->getPathname()));
         } else {
             unlink($fileInfo->getPathname());
         }
     }
     rmdir($pathname);
 }
 /**
  * Flushes the cache record for the given file info instance, independent if
  * it is a file, directory or symlink.
  *
  * @param \SplFileInfo $file
  * @return void
  */
 protected function flushEntry(\SplFileInfo $file)
 {
     $path = $file->getRealPath();
     if ($file->isDot()) {
         return;
     } elseif ($file->isFile()) {
         unlink($path);
     } else {
         $this->flushDirectory($path);
         rmdir($path);
     }
 }
Example #4
0
 /**
  * Writes new config to files.
  * @throws \Exception
  */
 private function updateConfigs()
 {
     $configDir = $this->configDir;
     $fileInfo = new \SplFileInfo($configDir);
     if (!$fileInfo->isDir()) {
         if (!mkdir($configDir, 0777, true)) {
             throw new \Exception("Please create config directory [{$configDir}] and give PHP full access to it.");
         }
     }
     $configDir = realpath($configDir);
     if (!$fileInfo->isWritable()) {
         $this->canWrite = false;
     }
     if (isset($this->previousSteps['admin_credentials'])) {
         $adminCredSettings = $this->previousSteps['admin_credentials']->getViewData();
         $this->pixie->config->load_inherited_group('parameters');
         $paramsConfig = $this->pixie->config->get_group('parameters');
         $paramsConfig['installer_password'] = $adminCredSettings['password'];
         $this->writeConfigFile($this->configDir . "/parameters.php", $paramsConfig);
     } else {
         $this->createOverriddenConfig('parameters');
     }
     $this->createOverriddenConfig('rest');
     // Update DB settings
     $dbConfig = $this->pixie->config->get('db');
     /** @var AbstractStep $dbSettings */
     $dbSettings = $this->previousSteps['db_settings'];
     $dbSettings = $dbSettings->getViewData();
     $dbConfig['default']['user'] = $dbSettings['user'];
     $dbConfig['default']['password'] = $dbSettings['password'];
     $dbConfig['default']['db'] = $dbSettings['db'];
     $dbConfig['default']['host'] = $dbSettings['host'];
     $dbConfig['default']['port'] = $dbSettings['port'];
     $dbConfig['default']['driver'] = 'PDOV';
     $dbConfig['default']['connection'] = 'mysql:host=' . $dbSettings['host'] . ';port=' . $dbSettings['port'] . ';dbname=' . $dbSettings['db'];
     $this->writeConfigFile($configDir . '/db.php', $dbConfig);
     // Update email settings
     $dbConfig = $this->pixie->config->get('email');
     /** @var AbstractStep $dbSettings */
     $dbSettings = $this->previousSteps['email_settings'];
     $dbSettings = $dbSettings->getViewData();
     $dbConfig['default']['type'] = $dbSettings['type'];
     $dbConfig['default']['sendmail_command'] = $dbSettings['sendmail_command'];
     $dbConfig['default']['mail_parameters'] = $dbSettings['mail_parameters'];
     $dbConfig['default']['hostname'] = $dbSettings['hostname'];
     $dbConfig['default']['port'] = $dbSettings['port'];
     $dbConfig['default']['username'] = $dbSettings['username'];
     $dbConfig['default']['password'] = $dbSettings['password'];
     $dbConfig['default']['encryption'] = $dbSettings['encryption'];
     $dbConfig['default']['timeout'] = $dbSettings['timeout'];
     $this->writeConfigFile($configDir . '/email.php', $dbConfig);
     // Vuln configs
     $vulnSampleDir = $this->configDir . '/vuln.sample';
     $vulnTargetDir = $this->configDir . '/vuln';
     foreach (new \DirectoryIterator($vulnSampleDir) as $fileInfo) {
         if ($fileInfo->isDot() || $fileInfo->getExtension() != 'php') {
             continue;
         }
         $configName = $fileInfo->getBasename();
         $targetFileName = $vulnTargetDir . '/' . $configName;
         if (file_exists($targetFileName) && is_file($targetFileName)) {
             continue;
         }
         try {
             copy($fileInfo->getPathname(), $targetFileName);
         } catch (\Exception $e) {
             $this->configsToAdd[$targetFileName] = file_get_contents($fileInfo->getPathname());
         }
     }
 }