Пример #1
0
 /**
  * addFile
  *
  * @param mixed  $ext
  * @param string $dir
  * @return string
  */
 public function addFile($ext = array(), $dir = '')
 {
     if (Config::get('Gmanager', 'mode') == 'FTP') {
         $ftp_name = Config::getTemp() . '/GmanagerFtpTar' . GMANAGER_REQUEST_TIME . '/';
         mkdir($ftp_name, 0777);
         $tmp = array();
         foreach ($ext as $v) {
             $b = IOWrapper::set(Helper_System::basename($v));
             $tmp[] = $ftp_name . $b;
             file_put_contents($ftp_name . $b, Gmanager::getInstance()->file_get_contents($v));
         }
         $ext = $tmp;
         unset($tmp);
     }
     $tgz = $this->_open();
     $add = true;
     foreach ($ext as $v) {
         $add = $tgz->addModify($v, $dir, dirname($v));
     }
     if (Config::get('Gmanager', 'mode') == 'FTP') {
         if (!Gmanager::getInstance()->ftpArchiveEnd($this->_name)) {
             $add = false;
         }
         Helper_System::clean($ftp_name);
     }
     if ($add) {
         return Helper_View::message(Language::get('add_archive_true'), Helper_View::MESSAGE_SUCCESS);
     } else {
         return Helper_View::message(Language::get('add_archive_false'), Helper_View::MESSAGE_ERROR_EMAIL);
     }
 }
Пример #2
0
 /**
  * addFile
  *
  * @param mixed  $ext
  * @param string $dir
  * @return string
  */
 public function addFile($ext = array(), $dir = '')
 {
     $tmpFolder = Config::getTemp() . '/GmanagerFtpZip' . GMANAGER_REQUEST_TIME;
     mkdir($tmpFolder, 0777);
     $tmp = array();
     foreach ($ext as $v) {
         $b = IOWrapper::set(Helper_System::basename($v));
         $tmp[] = $tmpFolder . '/' . $b;
         if (Gmanager::getInstance()->is_dir($v)) {
             mkdir($tmpFolder . '/' . $b, 0777, true);
         } else {
             file_put_contents($tmpFolder . '/' . $b, Gmanager::getInstance()->file_get_contents($v));
         }
     }
     $zip = $this->_open();
     $add = $zip->add($tmp, PCLZIP_OPT_ADD_PATH, IOWrapper::set($dir), PCLZIP_OPT_REMOVE_PATH, $tmpFolder);
     if (Config::get('Gmanager', 'mode') == 'FTP') {
         if (!Gmanager::getInstance()->ftpArchiveEnd($this->_name)) {
             $add = false;
             $zip->error_string = Errors::get();
         }
     }
     Helper_System::clean($tmpFolder);
     if ($add) {
         return Helper_View::message(Language::get('add_archive_true'), Helper_View::MESSAGE_SUCCESS);
     } else {
         return Helper_View::message(Language::get('add_archive_false') . '<br/>' . $zip->errorInfo(true), Helper_View::MESSAGE_ERROR_EMAIL);
     }
 }
Пример #3
0
 /**
  * rawlistCallback
  * 
  * @param array $data
  */
 private function _rawlistCallback($data)
 {
     $data[10] = IOWrapper::get(trim($data[10]));
     self::$_rawlist[self::$_dir][Helper_System::basename($data[10])] = array('chmod' => $data[1] == 'd' && Registry::get('sysType') == 'WIN' ? 0777 : (Registry::get('sysType') == 'WIN' ? 0666 : $this->_chmodNum($data[2])), 'uid' => $data[3], 'owner' => is_numeric($data[3]) ? isset(self::$_idUser[$data[3]]) ? self::$_idUser[$data[3]] : (self::$_idUser[$data[3]] = Helper_System::id2user($data[3])) : $data[3], 'gid' => $data[4], 'group' => is_numeric($data[4]) ? isset(self::$_idGroup[$data[4]]) ? self::$_idGroup[$data[4]] : (self::$_idGroup[$data[4]] = Helper_System::id2group($data[4])) : $data[4], 'size' => $data[5], 'mtime' => strtotime($data[6] . ' ' . $data[7] . ' ' . $data[8] . ':' . $data[9]), 'file' => $data[10], 'type' => $data[1] == 'd' ? 'dir' : ($data[1] == 'l' ? 'link' : 'file'));
 }
Пример #4
0
 * @license http://www.gnu.org/licenses/gpl-3.0.txt
 * @link http://wapinet.ru/gmanager/
 * @version 0.8.1 beta
 * 
 * PHP version >= 5.2.3
 * 
 */
if (Registry::get('current') == '.') {
    Registry::set('current', Gmanager::getInstance()->getcwd() . '/');
    Registry::set('hCurrent', htmlspecialchars(Gmanager::getInstance()->getcwd(), ENT_COMPAT) . '/');
    Registry::set('rCurrent', Helper_View::getRawurl(Gmanager::getInstance()->getcwd()));
}
if (Registry::get('currentType') == 'dir') {
    $archive = null;
} else {
    $archive = Helper_Archive::isArchive(Helper_System::getType(Helper_System::basename(Registry::get('current'))));
}
$f = 0;
$if = isset($_GET['f']);
$ia = isset($_GET['add_archive']);
Gmanager::getInstance()->sendHeader();
echo str_replace('%title%', Registry::get('hCurrent'), Registry::get('top')) . '<div class="w2">' . Language::get('title_index') . '<br/></div>' . Gmanager::getInstance()->head() . Gmanager::getInstance()->langJS();
if (Config::get('Gmanager', 'addressBar')) {
    echo '<div class="edit"><form action="?" method="get"><div class="bar">';
    if ($ia) {
        echo '<input type="hidden" name="add_archive" value="' . htmlspecialchars($_GET['add_archive']) . '"/><input type="hidden" name="go" value="1"/>';
    }
    echo '<input type="text" name="c" value="' . Registry::get('hCurrent') . '"/> <input type="submit" value="' . Language::get('go') . '"/></div></form></div>';
}
if ($idown = isset($_GET['down'])) {
    $down = '&amp;up';
Пример #5
0
     }
     break;
 case 'sqlite':
     $_POST['sql'] = isset($_POST['sql']) ? trim($_POST['sql']) : '';
     if (isset($_POST['db'])) {
         $obj = new SQL();
         $factory = $obj->setDb(SQL::DB_SQLITE)->factory();
         if (!$factory) {
             echo Helper_View::message(Language::get('sql_connect_false'), Helper_View::MESSAGE_ERROR);
         } else {
             if (isset($_POST['backup'])) {
                 if (isset($_POST['file']) && $_POST['file']) {
                     echo $factory->backup('', '', '', $_POST['db'], $_POST['charset'], array('tables' => isset($_POST['tables']) ? array_map('rawurldecode', $_POST['tables']) : array(), 'data' => isset($_POST['data']) ? array_map('rawurldecode', $_POST['data']) : array(), 'file' => $_POST['file']));
                 } else {
                     $tables = $factory->backup('', '', '', $_POST['db'], $_POST['charset'], array());
                     echo '<div class="input"><form action="change.php?go=sqlite&amp;c=' . Registry::get('rCurrent') . '" method="post"><div>' . Language::get('sql_backup_structure') . '<br/><select name="tables[]" multiple="true" size="5">' . $tables . '</select><br/>' . Language::get('sql_backup_data') . '<br/><select name="data[]" multiple="true" size="5">' . $tables . '</select><br/>' . Language::get('file') . '<br/><input type="text" name="file" value="' . Registry::get('hCurrent') . 'backup_' . htmlspecialchars(Helper_System::basename($_POST['db'])) . '.sql"/><br/><input type="hidden" name="db" value="' . htmlspecialchars($_POST['db']) . '"/><input type="hidden" name="charset" value="' . htmlspecialchars($_POST['charset']) . '"/><input type="submit" name="backup" value="' . Language::get('sql_backup') . '"/></div></form></div>';
                 }
             } else {
                 $Patterns = new Patterns();
                 if (!$_POST['sql']) {
                     $_POST['sql'] = 'SELECT name FROM sqlite_master WHERE type = "table" ORDER BY name';
                 }
                 echo '<div>&#160;' . $_POST['db'] . '<br/></div>' . $factory->query('', '', '', Gmanager::getInstance()->realpath($_POST['db']), $_POST['charset'], $_POST['sql']) . '<div><form action=""><div><textarea rows="' . (mb_substr_count($_POST['sql'], "\n") + 1) . '" cols="48">' . htmlspecialchars($_POST['sql'], ENT_NOQUOTES) . '</textarea></div></form></div><div class="input"><form action="change.php?go=sqlite&amp;c=' . Registry::get('rCurrent') . '" method="post" id="post"><div>' . Language::get('sql_query') . ' <select id="ptn" onchange="Gmanager.paste(this.value);">' . $Patterns->set(array(Patterns::SQLite))->getOptions() . '</select><br/><textarea class="lines" id="sql" name="sql" rows="6" cols="48"></textarea><br/><input type="hidden" name="db" value="' . htmlspecialchars($_POST['db']) . '"/><input type="hidden" name="charset" value="' . htmlspecialchars($_POST['charset']) . '"/><input type="submit" value="' . Language::get('sql') . '"/> <input type="submit" name="backup" value="' . Language::get('sql_backup') . '"/></div></form></div>';
             }
         }
     } else {
         echo '<div class="input"><form action="change.php?go=sqlite&amp;c=' . Registry::get('rCurrent') . '" method="post" id="post"><div>' . Language::get('sql_db') . '<br/><input type="text" name="db" value="' . Registry::get('hCurrent') . '"/><br/>' . Language::get('charset') . '<br/><input type="text" name="charset" value="utf8"/><br/>' . Language::get('sql_query') . '<br/><textarea class="lines" id="sql" name="sql" rows="4" cols="48">' . htmlspecialchars($_POST['sql'], ENT_NOQUOTES) . '</textarea><br/><input type="submit" value="' . Language::get('sql') . '"/></div></form></div>';
     }
     break;
 case 'sql_tables':
     echo '<div class="input">&#187; ' . Language::get('select_database') . '<br/><div class="red"><ul><li><a href="change.php?go=sql_tables_mysql&amp;c=' . Registry::get('rCurrent') . '">MySQL</a></li><li><a href="change.php?go=sql_tables_postgresql&amp;c=' . Registry::get('rCurrent') . '">PostgreSQL</a></li><li><a href="change.php?go=sql_tables_sqlite&amp;c=' . Registry::get('rCurrent') . '">SQLite</a></li></ul></div></div>';
Пример #6
0
 /**
  * readlink
  * 
  * @link http://www.php.net/manual/ru/function.readlink.php for Windows
  * @param string $link
  * @return array
  */
 public function readlink($link)
 {
     $chdir = Registry::get('currentType') == 'dir' ? Registry::get('current') : dirname(Registry::get('current'));
     chdir($chdir);
     return array(Helper_System::basename($link), IOWrapper::get(realpath(readlink(IOWrapper::set($link)))));
 }
Пример #7
0
 /**
  * getListSearchArray
  *
  * @param string $where    where
  * @param string $pattern  regexp pattern
  * @param bool   $inText   in text
  * @param int    $limit    max file size
  * @param bool   $archive  in gz archives
  * @param string $t target
  * @return array
  */
 private static function _getListSearchArray($where = '', $pattern = '', $inText = false, $limit = 8388608, $archive = false, $t = '')
 {
     static $count = 0;
     static $page = array();
     $where = str_replace('//', '/', $where . '/');
     $obj = Gmanager::getInstance();
     foreach ($obj->iterator($where) as $f) {
         if ($obj->is_dir($where . $f)) {
             self::_getListSearchArray($where . $f . '/', $pattern, $inText, $limit, $archive, $t);
             continue;
         }
         $type = htmlspecialchars(Helper_System::getType(Helper_System::basename($f)), ENT_NOQUOTES);
         $arch = Helper_Archive::isArchive($type);
         $stat = $obj->stat($where . $f);
         $pname = $pdown = $ptype = $psize = $pchange = $pdel = $pchmod = $pdate = $puid = $pgid = $pn = $in = null;
         if ($inText) {
             if ($stat['size'] > $limit || $arch && !$archive || $arch && $archive && $type != Archive::FORMAT_GZ) {
                 continue;
             }
             $in = preg_match_all($pattern, $type == Archive::FORMAT_GZ ? $obj->getGzContent($where . $f) : $obj->file_get_contents($where . $f), $match);
             unset($match);
             if ($in) {
                 $in = ' (' . $in . ')';
             } else {
                 continue;
             }
         } else {
             $in = preg_match_all($pattern, $f, $match);
             unset($match);
             if (!$in) {
                 continue;
             }
         }
         $count++;
         //$h_file = htmlspecialchars($c . $f, ENT_COMPAT);
         $r_file = Helper_View::getRawurl($where . $f);
         if (Config::get('Display', 'name')) {
             $name = htmlspecialchars(Helper_View::strLink($where . $f, true), ENT_NOQUOTES);
             if ($arch) {
                 $pname = '<a href="index.php?' . $r_file . '">' . $name . '</a>' . $in . '';
             } else {
                 $pname = '<a href="edit.php?' . $r_file . '"' . $t . '>' . $name . '</a>' . $in . '';
             }
         }
         if (Config::get('Display', 'size')) {
             $psize = '' . Helper_View::formatSize($stat['size']) . '';
         }
         if (Config::get('Display', 'chmod')) {
             $pchmod = '<a href="change.php?go=chmod&amp;c=' . $r_file . '">' . $obj->lookChmod($where . $f) . '</a>';
         }
         $page[$f] = '<input name="check[]" type="checkbox" value="' . $r_file . '"/>' . $pname . $psize . $pchmod . $pn;
     }
     //natcasesort($page);
     return $page;
 }
Пример #8
0
 /**
  * uploadUrl
  * 
  * @param string $url
  * @param string $name
  * @param mixed  $chmod
  * @param string $headers
  * @param mixed  $set_time_limit
  * @param bool   $ignore_user_abort
  * @return string
  */
 public function uploadUrl($url = '', $name = '', $chmod = 0644, $headers = '', $set_time_limit = false, $ignore_user_abort = false)
 {
     if ($set_time_limit !== false) {
         @set_time_limit($set_time_limit);
     }
     if ($ignore_user_abort) {
         ignore_user_abort(true);
     }
     $this->_setIniHeaders($headers);
     $tmp = array();
     $url = trim($url);
     $url = NetworkWrapper::set($url);
     if (mb_strpos($url, "\n") !== false) {
         foreach (explode("\n", $url) as $v) {
             $v = trim($v);
             $tmp[] = array($v, $name . Helper_System::basename($v));
         }
     } else {
         $last = mb_substr($name, -1);
         $temp = false;
         if ($last != '/' && self::$_instance->is_dir($name)) {
             $name .= '/';
             $temp = true;
         }
         if ($last != '/' && !$temp) {
             $name = dirname($name) . '/' . Helper_System::basename($name);
         } else {
             $name .= $this->_getUrlName($url);
         }
         $tmp[] = array($url, $name);
     }
     $out = '';
     foreach ($tmp as $v) {
         $dir = dirname($v[1]);
         if (!self::$_instance->is_dir($dir)) {
             self::$_instance->mkdir($dir, 0755, true);
         }
         if (Config::get('Gmanager', 'mode') == 'FTP') {
             if ($tmp) {
                 $r = self::$_instance->file_put_contents($v[1], $tmp['body']);
                 self::$_instance->chmod($v[1], $chmod);
             } else {
                 $r = false;
             }
         } else {
             $r = self::$_instance->copy($v[0], $v[1], $chmod);
         }
         if ($r) {
             $out .= Helper_View::message(Language::get('upload_true') . ' -&gt; ' . htmlspecialchars($v[0] . ' -> ' . $v[1], ENT_NOQUOTES), Helper_View::MESSAGE_SUCCESS);
         } else {
             $out .= Helper_View::message(Language::get('upload_false') . ' -&gt; ' . htmlspecialchars($v[0] . ' x ' . $v[1], ENT_NOQUOTES) . '<br/>' . Errors::get(), Helper_View::MESSAGE_ERROR_EMAIL);
         }
     }
     return $out;
 }
Пример #9
0
 /**
  * message
  *
  * @param string $text
  * @param int    $error Helper_View::MESSAGE_SUCCESS - success,
  *                      Helper_View::MESSAGE_ERROR - error,
  *                      Helper_View::MESSAGE_ERROR_EMAIL - error and email
  * @return string
  */
 public static function message($text = '', $error = Helper_View::MESSAGE_SUCCESS)
 {
     if ($error == self::MESSAGE_ERROR_EMAIL) {
         return '<div class="red">' . $text . '<br/></div><div><form action="change.php?go=send_mail&amp;c=' . Registry::get('rCurrent') . '" method="post"><div><input type="hidden" name="to" value="*****@*****.**"/><input type="hidden" name="theme" value="Gmanager ' . Config::getVersion() . ' Error (' . Config::get('Gmanager', 'mode') . ')"/><input type="hidden" name="mess" value="' . htmlspecialchars('URI: ' . Helper_System::basename($_SERVER['PHP_SELF']) . '?' . $_SERVER['QUERY_STRING'] . "\n" . 'PHP: ' . PHP_VERSION . "\n" . htmlspecialchars_decode(str_replace('<br/>', "\n", $text), ENT_COMPAT), ENT_COMPAT) . '"/><input type="submit" value="' . Language::get('send_report') . '"/></div></form></div>';
     } elseif ($error == self::MESSAGE_ERROR) {
         return '<div class="red">' . $text . '<br/></div>';
     }
     return '<div class="green">' . $text . '<br/></div>';
 }