From a06211b497b522de39da8218c76441f6d3d9203e Mon Sep 17 00:00:00 2001 From: "Andreas Burchert (scarya)" Date: Wed, 20 Oct 2010 19:07:51 +0000 Subject: [PATCH] - description fix in FroxlorSshTransport - added FroxlorPkgCreator --- .../sshtransport/class.FroxlorPkgCreator.php | 148 ++++++++++++++++++ .../class.FroxlorSshTransport.php | 2 +- 2 files changed, 149 insertions(+), 1 deletion(-) create mode 100644 lib/classes/sshtransport/class.FroxlorPkgCreator.php diff --git a/lib/classes/sshtransport/class.FroxlorPkgCreator.php b/lib/classes/sshtransport/class.FroxlorPkgCreator.php new file mode 100644 index 00000000..0bcf7135 --- /dev/null +++ b/lib/classes/sshtransport/class.FroxlorPkgCreator.php @@ -0,0 +1,148 @@ + + * @copyright 2010 the authors + * @license GPLv2 http://files.froxlor.org/misc/COPYING.txt + * @version SVN: $Id$ + * @link http://www.froxlor.org/ + */ + +/** + * Class FroxlorPkgCreator + * + * This class creates packages to send over ssh. + * + * @category FroxlorCore + * @package Classes + * @subpackage System + * @author Froxlor Team + * @copyright 2010 the authors + * @license GPLv2 http://files.froxlor.org/misc/COPYING.txt + * @link http://www.froxlor.org/ + */ +class FroxlorPkgCreator +{ + + /** + * Path to file-include list. + * + * @var string + */ + private $_path = null; + + /** + * Contains the file-list as an array. + * + * @var array + */ + private $_config = array(); + + /** + * Constructor. + * + * @param string $incListPath contains the path to include-configuration + * @param string $toPath path where the package is saved + */ + public function __construct($incListPath, $toPath) + { + $this->_path = $incListPath; + + // load the config + $this->_config = $this->_readConfig(); + + // parse the config + if (!$this->_checkConfig()) { + die("Error in FroxlorPkgCreator::_checkConfig()"); + } + + $this->pack($toPath); + } + + /** + * Loads the config to an array. + * + * @return array pathes to files + */ + private function _readConfig() + { + $arr = array(); + + if (is_readable($this->_path)) { + $arr = file($this->_path); + } + + return $arr; + } + + /** + * This function checks the files for readability and prohibted files. + * + * @return boolean check result + */ + private function _checkConfig() + { + foreach ($this->_config as $key => $var) { + // TODO maybe more excluded files? + if (strstr($var, "userdata.inc")) { + // delete this entry + unset($this->_config[$key]); + } else { + $this->_config[$key] = trim($var); + } + } + + // no items, can't pack them + if (count($this->_config) == 0) { + return false; + } + + // everything checked + return true; + } + + /** + * This functions creates the package. + * + * @param string $toPath the path where this file should be saved + * + * @return string path + */ + public function pack($toPath) + { + $zip = new ZipArchive; + + // create archive + if ($zip->open($toPath, ZIPARCHIVE::OVERWRITE)) { + // write data + foreach ($this->_config as $var) { + $zip->addFile($var); + } + + // close it + $zip->close(); + + return true; + } + + // return + return false; + } +} +?> \ No newline at end of file diff --git a/lib/classes/sshtransport/class.FroxlorSshTransport.php b/lib/classes/sshtransport/class.FroxlorSshTransport.php index a6d392d1..61f84110 100644 --- a/lib/classes/sshtransport/class.FroxlorSshTransport.php +++ b/lib/classes/sshtransport/class.FroxlorSshTransport.php @@ -3,7 +3,7 @@ /** * ssh Transport class * - * This class provides interaction with modules + * This class handles remote server related stuff. * * PHP version 5 *