Example #1
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'));
 }
Example #2
0
 /**
  * renameFile
  *
  * @param string $name
  * @param string $arch_name
  * @param bool   $del
  * @param bool   $overwrite
  * @return string
  */
 public function renameFile($name, $arch_name, $del = false, $overwrite = false)
 {
     $tmp = Config::getTemp() . '/GmanagerZip' . GMANAGER_REQUEST_TIME;
     $zip = $this->_open();
     $folder = '';
     $sysName = IOWrapper::set($name);
     foreach ($zip->extract(PCLZIP_OPT_PATH, $tmp) as $f) {
         if ($f['status'] != 'ok') {
             Helper_System::clean($tmp);
             if (Config::get('Gmanager', 'mode') == 'FTP') {
                 Gmanager::getInstance()->ftpArchiveEnd();
             }
             return Helper_View::message(Language::get('extract_false'), Helper_View::MESSAGE_ERROR);
             break;
         }
         if ($arch_name == $f['stored_filename']) {
             $folder = $f['folder'];
         }
     }
     if (file_exists($tmp . '/' . $sysName)) {
         if ($overwrite) {
             if ($folder) {
                 Helper_System::clean($tmp . '/' . $sysName);
             } else {
                 unlink($tmp . '/' . $sysName);
             }
         } else {
             Helper_System::clean($tmp);
             if (Config::get('Gmanager', 'mode') == 'FTP') {
                 Gmanager::getInstance()->ftpArchiveEnd();
             }
             return Helper_View::message(Language::get('overwrite_false'), Helper_View::MESSAGE_ERROR);
         }
     }
     if ($folder) {
         @mkdir($tmp . '/' . $sysName, 0755, true);
     } elseif (!is_dir($tmp . '/' . dirname($sysName))) {
         @mkdir($tmp . '/' . dirname($sysName), 0755, true);
     }
     if ($folder) {
         // переделать на ftp
         if ($del) {
             $result = Gmanager::getInstance()->moveFiles($tmp . '/' . $arch_name, $tmp . '/' . $name);
         } else {
             $result = Gmanager::getInstance()->copyFiles($tmp . '/' . $arch_name, $tmp . '/' . $name);
         }
     } else {
         if ($del) {
             $result = rename($tmp . '/' . $arch_name, $tmp . '/' . $sysName);
         } else {
             $result = copy($tmp . '/' . $arch_name, $tmp . '/' . $sysName);
         }
     }
     if (!$result) {
         Helper_System::clean($tmp);
         if (Config::get('Gmanager', 'mode') == 'FTP') {
             Gmanager::getInstance()->ftpArchiveEnd();
         }
         if ($folder) {
             if ($del) {
                 return Helper_View::message(str_replace('%title%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('move_files_false')), Helper_View::MESSAGE_ERROR);
             } else {
                 return Helper_View::message(str_replace('%title%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('copy_files_false')), Helper_View::MESSAGE_ERROR);
             }
         } else {
             if ($del) {
                 return Helper_View::message(str_replace('%file%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('move_file_false')), Helper_View::MESSAGE_ERROR);
             } else {
                 return Helper_View::message(str_replace('%file%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('copy_file_false')), Helper_View::MESSAGE_ERROR);
             }
         }
     }
     $result = $zip->create($tmp, PCLZIP_OPT_REMOVE_PATH, mb_substr($tmp, mb_strlen(dirname(dirname($tmp))))) != 0;
     Helper_System::clean($tmp);
     if (Config::get('Gmanager', 'mode') == 'FTP') {
         Gmanager::getInstance()->ftpArchiveEnd($this->_name);
     }
     if ($result) {
         if ($folder) {
             if ($del) {
                 return Helper_View::message(str_replace('%title%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('move_files_true')), Helper_View::MESSAGE_SUCCESS);
             } else {
                 return Helper_View::message(str_replace('%title%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('copy_files_true')), Helper_View::MESSAGE_SUCCESS);
             }
         } else {
             if ($del) {
                 return Helper_View::message(str_replace('%file%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('move_file_true')), Helper_View::MESSAGE_SUCCESS);
             } else {
                 return Helper_View::message(str_replace('%file%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('copy_file_true')), Helper_View::MESSAGE_SUCCESS);
             }
         }
     } else {
         if ($folder) {
             if ($del) {
                 return Helper_View::message(str_replace('%title%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('move_files_false')), Helper_View::MESSAGE_ERROR);
             } else {
                 return Helper_View::message(str_replace('%title%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('copy_files_false')), Helper_View::MESSAGE_ERROR);
             }
         } else {
             if ($del) {
                 return Helper_View::message(str_replace('%file%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('move_file_false')), Helper_View::MESSAGE_ERROR);
             } else {
                 return Helper_View::message(str_replace('%file%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('copy_file_false')), Helper_View::MESSAGE_ERROR);
             }
         }
     }
 }
Example #3
0
 /**
  * renameFile
  *
  * @param string $name
  * @param string $arch_name
  * @param bool   $del
  * @param bool   $overwrite
  * @return string
  */
 public function renameFile($name, $arch_name, $del = false, $overwrite = false)
 {
     $tmp = Config::getTemp() . '/GmanagerTar' . GMANAGER_REQUEST_TIME;
     $tgz = $this->_open();
     $sysName = IOWrapper::set($name);
     $folder = '';
     foreach ($tgz->listContent() as $f) {
         if ($arch_name == $f['filename']) {
             $folder = $f['typeflag'] == 5 ? 1 : 0;
             break;
         }
     }
     if (!$tgz->extract($tmp)) {
         Helper_System::clean($tmp);
         if (Config::get('Gmanager', 'mode') == 'FTP') {
             Gmanager::getInstance()->ftpArchiveEnd();
         }
         return Helper_View::message(Language::get('extract_false'), Helper_View::MESSAGE_ERROR);
     }
     if (file_exists($tmp . '/' . $sysName)) {
         if ($overwrite) {
             if ($folder) {
                 Helper_System::clean($tmp . '/' . $sysName);
             } else {
                 unlink($tmp . '/' . $sysName);
             }
         } else {
             Helper_System::clean($tmp);
             if (Config::get('Gmanager', 'mode') == 'FTP') {
                 Gmanager::getInstance()->ftpArchiveEnd();
             }
             return Helper_View::message(Language::get('overwrite_false'), Helper_View::MESSAGE_ERROR);
         }
     }
     if ($folder) {
         @mkdir($tmp . '/' . $sysName, 0755, true);
     } else {
         @mkdir($tmp . '/' . dirname($sysName), 0755, true);
     }
     if ($folder) {
         if ($del) {
             $result = Gmanager::getInstance()->moveFiles($tmp . '/' . $name, $tmp . '/' . $arch_name);
         } else {
             $result = Gmanager::getInstance()->copyFiles($tmp . '/' . $name, $tmp . '/' . $arch_name);
         }
     } else {
         if ($del) {
             $result = rename($tmp . '/' . $arch_name, $tmp . '/' . $sysName);
         } else {
             $result = copy($tmp . '/' . $arch_name, $tmp . '/' . $sysName);
         }
     }
     if (!$result) {
         Helper_System::clean($tmp);
         if (Config::get('Gmanager', 'mode') == 'FTP') {
             Gmanager::getInstance()->ftpArchiveEnd();
         }
         if ($folder) {
             if ($del) {
                 return Helper_View::message(str_replace('%title%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('move_files_false')), Helper_View::MESSAGE_ERROR);
             } else {
                 return Helper_View::message(str_replace('%title%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('copy_files_false')), Helper_View::MESSAGE_ERROR);
             }
         } else {
             if ($del) {
                 return Helper_View::message(str_replace('%file%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('move_file_false')), Helper_View::MESSAGE_ERROR);
             } else {
                 return Helper_View::message(str_replace('%file%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('copy_file_false')), Helper_View::MESSAGE_ERROR);
             }
         }
     }
     $result = $tgz->createModify($tmp, '.', $tmp);
     Helper_System::clean($tmp);
     if (Config::get('Gmanager', 'mode') == 'FTP') {
         Gmanager::getInstance()->ftpArchiveEnd($this->_name);
     }
     if ($result) {
         if ($folder) {
             if ($del) {
                 return Helper_View::message(str_replace('%title%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('move_files_true')), Helper_View::MESSAGE_SUCCESS);
             } else {
                 return Helper_View::message(str_replace('%title%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('copy_files_true')), Helper_View::MESSAGE_SUCCESS);
             }
         } else {
             if ($del) {
                 return Helper_View::message(str_replace('%file%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('move_file_true')), Helper_View::MESSAGE_SUCCESS);
             } else {
                 return Helper_View::message(str_replace('%file%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('copy_file_true')), Helper_View::MESSAGE_SUCCESS);
             }
         }
     } else {
         if ($folder) {
             if ($del) {
                 return Helper_View::message(str_replace('%title%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('move_files_false')), Helper_View::MESSAGE_ERROR);
             } else {
                 return Helper_View::message(str_replace('%title%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('copy_files_false')), Helper_View::MESSAGE_ERROR);
             }
         } else {
             if ($del) {
                 return Helper_View::message(str_replace('%file%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('move_file_false')), Helper_View::MESSAGE_ERROR);
             } else {
                 return Helper_View::message(str_replace('%file%', htmlspecialchars($arch_name, ENT_NOQUOTES), Language::get('copy_file_false')), Helper_View::MESSAGE_ERROR);
             }
         }
     }
 }
Example #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';
Example #5
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)))));
 }
Example #6
0
 /**
  * listArchive
  *
  * @todo refactoring to ListData
  * @param string $down
  * @return string
  */
 public function listArchive($down = '')
 {
     $rar = $this->_open();
     $list = $rar->getEntries();
     if (!$list) {
         if (Config::get('Gmanager', 'mode') == 'FTP') {
             Gmanager::getInstance()->ftpArchiveEnd();
         }
         return '<tr class="border"><td colspan="' . (array_sum(Config::getSection('Display')) + 1) . '">' . Helper_View::message(Language::get('archive_error'), Helper_View::MESSAGE_ERROR_EMAIL) . '</td></tr>';
     } else {
         $r_current = Helper_View::getRawurl($this->_name);
         $l = '';
         $i = 0;
         if ($down) {
             $list = array_reverse($list);
         }
         foreach ($list as $entry) {
             $r_name = Helper_View::getRawurl($entry->getName());
             if ($entry->isDirectory()) {
                 $type = 'DIR';
                 $name = htmlspecialchars($entry->getName(), ENT_NOQUOTES);
                 $size = ' ';
                 $down = ' ';
             } else {
                 $type = htmlspecialchars(Helper_System::getType($entry->getName()), ENT_NOQUOTES);
                 $name = '<a href="?c=' . $r_current . '&amp;f=' . $r_name . '">' . htmlspecialchars(Helper_View::strLink($entry->getName(), true), ENT_NOQUOTES) . '</a>';
                 $size = Helper_View::formatSize($entry->getUnpackedSize());
                 $down = '<a href="change.php?get=' . $r_current . '&amp;f=' . $r_name . '">' . Language::get('get') . '</a>';
             }
             $l .= '<tr class="border"><td class="check"><input name="check[]" type="checkbox" value="' . $r_name . '"/></td>';
             if (Config::get('Display', 'name')) {
                 $l .= '<td>' . $name . '</td>';
             }
             if (Config::get('Display', 'down')) {
                 $l .= '<td>' . $down . '</td>';
             }
             if (Config::get('Display', 'type')) {
                 $l .= '<td>' . $type . '</td>';
             }
             if (Config::get('Display', 'size')) {
                 $l .= '<td>' . $size . '</td>';
             }
             if (Config::get('Display', 'change')) {
                 $l .= '<td> </td>';
             }
             if (Config::get('Display', 'del')) {
                 $l .= '<td>' . Language::get('dl') . '</td>';
             }
             if (Config::get('Display', 'chmod')) {
                 $l .= '<td> </td>';
             }
             if (Config::get('Display', 'date')) {
                 $l .= '<td>' . strftime(Config::get('Gmanager', 'dateFormat'), strtotime($entry->getFileTime())) . '</td>';
             }
             if (Config::get('Display', 'uid')) {
                 $l .= '<td> </td>';
             }
             if (Config::get('Display', 'gid')) {
                 $l .= '<td> </td>';
             }
             if (Config::get('Display', 'n')) {
                 $l .= '<td>' . ++$i . '</td>';
             }
             $l .= '</tr>';
         }
         if (Config::get('Gmanager', 'mode') == 'FTP') {
             Gmanager::getInstance()->ftpArchiveEnd();
         }
         return $l;
     }
 }
Example #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;
 }
Example #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;
 }
Example #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>';
 }