You've already forked joomla_test
first commit
This commit is contained in:
1113
administrator/components/com_k2/lib/elfinder/elFinder.class.php
Normal file
1113
administrator/components/com_k2/lib/elfinder/elFinder.class.php
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,143 @@
|
||||
<?php
|
||||
/**
|
||||
* @version $Id: elFinderConnector.class.php 1812 2013-01-14 18:45:06Z lefteris.kavadas $
|
||||
* @package K2
|
||||
* @author JoomlaWorks http://www.joomlaworks.net
|
||||
* @copyright Copyright (c) 2006 - 2013 JoomlaWorks Ltd. All rights reserved.
|
||||
* @license GNU/GPL license: http://www.gnu.org/copyleft/gpl.html
|
||||
*/
|
||||
|
||||
// no direct access
|
||||
defined('_JEXEC') or die;
|
||||
|
||||
/**
|
||||
* Default elFinder connector
|
||||
*
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
class elFinderConnector {
|
||||
/**
|
||||
* elFinder instance
|
||||
*
|
||||
* @var elFinder
|
||||
**/
|
||||
protected $elFinder;
|
||||
|
||||
/**
|
||||
* Options
|
||||
*
|
||||
* @var aray
|
||||
**/
|
||||
protected $options = array();
|
||||
|
||||
/**
|
||||
* undocumented class variable
|
||||
*
|
||||
* @var string
|
||||
**/
|
||||
protected $header = 'Content-Type: application/json';
|
||||
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @return void
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
public function __construct($elFinder, $debug=false) {
|
||||
|
||||
$this->elFinder = $elFinder;
|
||||
if ($debug) {
|
||||
$this->header = 'Content-Type: text/html; charset=utf-8';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute elFinder command and output result
|
||||
*
|
||||
* @return void
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
public function run() {
|
||||
$isPost = $_SERVER["REQUEST_METHOD"] == 'POST';
|
||||
$src = $_SERVER["REQUEST_METHOD"] == 'POST' ? $_POST : $_GET;
|
||||
$cmd = isset($src['cmd']) ? $src['cmd'] : '';
|
||||
$args = array();
|
||||
|
||||
if (!function_exists('json_encode')) {
|
||||
$error = $this->elFinder->error(elFinder::ERROR_CONF, elFinder::ERROR_CONF_NO_JSON);
|
||||
$this->output(array('error' => '{"error":["'.implode('","', $error).'"]}', 'raw' => true));
|
||||
}
|
||||
|
||||
if (!$this->elFinder->loaded()) {
|
||||
$this->output(array('error' => $this->elFinder->error(elFinder::ERROR_CONF, elFinder::ERROR_CONF_NO_VOL), 'debug' => $this->elFinder->mountErrors));
|
||||
}
|
||||
|
||||
// telepat_mode: on
|
||||
if (!$cmd && $isPost) {
|
||||
$this->output(array('error' => $this->elFinder->error(elFinder::ERROR_UPLOAD, elFinder::ERROR_UPLOAD_TOTAL_SIZE), 'header' => 'Content-Type: text/html'));
|
||||
}
|
||||
// telepat_mode: off
|
||||
|
||||
if (!$this->elFinder->commandExists($cmd)) {
|
||||
$this->output(array('error' => $this->elFinder->error(elFinder::ERROR_UNKNOWN_CMD)));
|
||||
}
|
||||
|
||||
// collect required arguments to exec command
|
||||
foreach ($this->elFinder->commandArgsList($cmd) as $name => $req) {
|
||||
$arg = $name == 'FILES'
|
||||
? $_FILES
|
||||
: (isset($src[$name]) ? $src[$name] : '');
|
||||
|
||||
if (!is_array($arg)) {
|
||||
$arg = trim($arg);
|
||||
}
|
||||
if ($req && (!isset($arg) || $arg === '')) {
|
||||
$this->output(array('error' => $this->elFinder->error(elFinder::ERROR_INV_PARAMS, $cmd)));
|
||||
}
|
||||
$args[$name] = $arg;
|
||||
}
|
||||
|
||||
$args['debug'] = isset($src['debug']) ? !!$src['debug'] : false;
|
||||
|
||||
$this->output($this->elFinder->exec($cmd, $args));
|
||||
}
|
||||
|
||||
/**
|
||||
* Output json
|
||||
*
|
||||
* @param array data to output
|
||||
* @return void
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function output(array $data) {
|
||||
$header = isset($data['header']) ? $data['header'] : $this->header;
|
||||
unset($data['header']);
|
||||
if ($header) {
|
||||
if (is_array($header)) {
|
||||
foreach ($header as $h) {
|
||||
header($h);
|
||||
}
|
||||
} else {
|
||||
header($header);
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($data['pointer'])) {
|
||||
rewind($data['pointer']);
|
||||
fpassthru($data['pointer']);
|
||||
if (!empty($data['volume'])) {
|
||||
$data['volume']->close($data['pointer'], $data['info']['hash']);
|
||||
}
|
||||
exit();
|
||||
} else {
|
||||
if (!empty($data['raw']) && !empty($data['error'])) {
|
||||
exit($data['error']);
|
||||
} else {
|
||||
exit(json_encode($data));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}// END class
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,845 @@
|
||||
<?php
|
||||
/**
|
||||
* @version $Id: elFinderVolumeLocalFileSystem.class.php 1989 2013-07-04 13:52:28Z lefteris.kavadas $
|
||||
* @package K2
|
||||
* @author JoomlaWorks http://www.joomlaworks.net
|
||||
* @copyright Copyright (c) 2006 - 2013 JoomlaWorks Ltd. All rights reserved.
|
||||
* @license GNU/GPL license: http://www.gnu.org/copyleft/gpl.html
|
||||
*/
|
||||
|
||||
// no direct access
|
||||
defined('_JEXEC') or die;
|
||||
|
||||
/**
|
||||
* elFinder driver for local filesystem.
|
||||
*
|
||||
* @author Dmitry (dio) Levashov
|
||||
* @author Troex Nevelin
|
||||
**/
|
||||
class elFinderVolumeLocalFileSystem extends elFinderVolumeDriver {
|
||||
|
||||
/**
|
||||
* Driver id
|
||||
* Must be started from letter and contains [a-z0-9]
|
||||
* Used as part of volume id
|
||||
*
|
||||
* @var string
|
||||
**/
|
||||
protected $driverId = 'l';
|
||||
|
||||
/**
|
||||
* Required to count total archive files size
|
||||
*
|
||||
* @var int
|
||||
**/
|
||||
protected $archiveSize = 0;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* Extend options with required fields
|
||||
*
|
||||
* @return void
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
public function __construct() {
|
||||
$this->options['alias'] = ''; // alias to replace root dir name
|
||||
$this->options['dirMode'] = 0755; // new dirs mode
|
||||
$this->options['fileMode'] = 0644; // new files mode
|
||||
$this->options['quarantine'] = '.quarantine'; // quarantine folder name - required to check archive (must be hidden)
|
||||
$this->options['maxArcFilesSize'] = 0; // max allowed archive files size (0 - no limit)
|
||||
}
|
||||
|
||||
/*********************************************************************/
|
||||
/* INIT AND CONFIGURE */
|
||||
/*********************************************************************/
|
||||
|
||||
/**
|
||||
* Configure after successfull mount.
|
||||
*
|
||||
* @return void
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function configure() {
|
||||
$this->aroot = realpath($this->root);
|
||||
$root = $this->stat($this->root);
|
||||
|
||||
if ($this->options['quarantine']) {
|
||||
$this->attributes[] = array(
|
||||
'pattern' => '~^'.preg_quote(DIRECTORY_SEPARATOR.$this->options['quarantine']).'$~',
|
||||
'read' => false,
|
||||
'write' => false,
|
||||
'locked' => true,
|
||||
'hidden' => true
|
||||
);
|
||||
}
|
||||
|
||||
// chek thumbnails path
|
||||
if ($this->options['tmbPath']) {
|
||||
$this->options['tmbPath'] = strpos($this->options['tmbPath'], DIRECTORY_SEPARATOR) === false
|
||||
// tmb path set as dirname under root dir
|
||||
? $this->root.DIRECTORY_SEPARATOR.$this->options['tmbPath']
|
||||
// tmb path as full path
|
||||
: $this->_normpath($this->options['tmbPath']);
|
||||
}
|
||||
|
||||
parent::configure();
|
||||
|
||||
// if no thumbnails url - try detect it
|
||||
if ($root['read'] && !$this->tmbURL && $this->URL) {
|
||||
if (strpos($this->tmbPath, $this->root) === 0) {
|
||||
$this->tmbURL = $this->URL.str_replace(DIRECTORY_SEPARATOR, '/', substr($this->tmbPath, strlen($this->root)+1));
|
||||
if (preg_match("|[^/?&=]$|", $this->tmbURL)) {
|
||||
$this->tmbURL .= '/';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// check quarantine dir
|
||||
if (!empty($this->options['quarantine'])) {
|
||||
$this->quarantine = $this->root.DIRECTORY_SEPARATOR.$this->options['quarantine'];
|
||||
if ((!is_dir($this->quarantine) && !$this->_mkdir($this->root, $this->options['quarantine'])) || !is_writable($this->quarantine)) {
|
||||
$this->archivers['extract'] = array();
|
||||
$this->disabled[] = 'extract';
|
||||
}
|
||||
} else {
|
||||
$this->archivers['extract'] = array();
|
||||
$this->disabled[] = 'extract';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*********************************************************************/
|
||||
/* FS API */
|
||||
/*********************************************************************/
|
||||
|
||||
/*********************** paths/urls *************************/
|
||||
|
||||
/**
|
||||
* Return parent directory path
|
||||
*
|
||||
* @param string $path file path
|
||||
* @return string
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function _dirname($path) {
|
||||
return dirname($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return file name
|
||||
*
|
||||
* @param string $path file path
|
||||
* @return string
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function _basename($path) {
|
||||
return basename($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Join dir name and file name and retur full path
|
||||
*
|
||||
* @param string $dir
|
||||
* @param string $name
|
||||
* @return string
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function _joinPath($dir, $name) {
|
||||
return $dir.DIRECTORY_SEPARATOR.$name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return normalized path, this works the same as os.path.normpath() in Python
|
||||
*
|
||||
* @param string $path path
|
||||
* @return string
|
||||
* @author Troex Nevelin
|
||||
**/
|
||||
protected function _normpath($path) {
|
||||
if (empty($path)) {
|
||||
return '.';
|
||||
}
|
||||
|
||||
if (strpos($path, '/') === 0) {
|
||||
$initial_slashes = true;
|
||||
} else {
|
||||
$initial_slashes = false;
|
||||
}
|
||||
|
||||
if (($initial_slashes)
|
||||
&& (strpos($path, '//') === 0)
|
||||
&& (strpos($path, '///') === false)) {
|
||||
$initial_slashes = 2;
|
||||
}
|
||||
|
||||
$initial_slashes = (int) $initial_slashes;
|
||||
|
||||
$comps = explode('/', $path);
|
||||
$new_comps = array();
|
||||
foreach ($comps as $comp) {
|
||||
if (in_array($comp, array('', '.'))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (($comp != '..')
|
||||
|| (!$initial_slashes && !$new_comps)
|
||||
|| ($new_comps && (end($new_comps) == '..'))) {
|
||||
array_push($new_comps, $comp);
|
||||
} elseif ($new_comps) {
|
||||
array_pop($new_comps);
|
||||
}
|
||||
}
|
||||
$comps = $new_comps;
|
||||
$path = implode('/', $comps);
|
||||
if ($initial_slashes) {
|
||||
$path = str_repeat('/', $initial_slashes) . $path;
|
||||
}
|
||||
|
||||
return $path ? $path : '.';
|
||||
}
|
||||
|
||||
/**
|
||||
* Return file path related to root dir
|
||||
*
|
||||
* @param string $path file path
|
||||
* @return string
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function _relpath($path) {
|
||||
return $path == $this->root ? '' : substr($path, strlen($this->root)+1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert path related to root dir into real path
|
||||
*
|
||||
* @param string $path file path
|
||||
* @return string
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function _abspath($path) {
|
||||
return $path == DIRECTORY_SEPARATOR ? $this->root : $this->root.DIRECTORY_SEPARATOR.$path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return fake path started from root dir
|
||||
*
|
||||
* @param string $path file path
|
||||
* @return string
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function _path($path) {
|
||||
return $this->rootName.($path == $this->root ? '' : $this->separator.$this->_relpath($path));
|
||||
}
|
||||
|
||||
/**
|
||||
* Return true if $path is children of $parent
|
||||
*
|
||||
* @param string $path path to check
|
||||
* @param string $parent parent path
|
||||
* @return bool
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function _inpath($path, $parent) {
|
||||
return $path == $parent || strpos($path, $parent.DIRECTORY_SEPARATOR) === 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************** file stat ********************/
|
||||
|
||||
/**
|
||||
* Return stat for given path.
|
||||
* Stat contains following fields:
|
||||
* - (int) size file size in b. required
|
||||
* - (int) ts file modification time in unix time. required
|
||||
* - (string) mime mimetype. required for folders, others - optionally
|
||||
* - (bool) read read permissions. required
|
||||
* - (bool) write write permissions. required
|
||||
* - (bool) locked is object locked. optionally
|
||||
* - (bool) hidden is object hidden. optionally
|
||||
* - (string) alias for symlinks - link target path relative to root path. optionally
|
||||
* - (string) target for symlinks - link target path. optionally
|
||||
*
|
||||
* If file does not exists - returns empty array or false.
|
||||
*
|
||||
* @param string $path file path
|
||||
* @return array|false
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function _stat($path) {
|
||||
$stat = array();
|
||||
|
||||
if (!file_exists($path)) {
|
||||
return $stat;
|
||||
}
|
||||
|
||||
if ($path != $this->root && is_link($path)) {
|
||||
if (($target = $this->readlink($path)) == false
|
||||
|| $target == $path) {
|
||||
$stat['mime'] = 'symlink-broken';
|
||||
$stat['read'] = false;
|
||||
$stat['write'] = false;
|
||||
$stat['size'] = 0;
|
||||
return $stat;
|
||||
}
|
||||
$stat['alias'] = $this->_path($target);
|
||||
$stat['target'] = $target;
|
||||
$path = $target;
|
||||
$lstat = lstat($path);
|
||||
$size = $lstat['size'];
|
||||
} else {
|
||||
$size = @filesize($path);
|
||||
}
|
||||
|
||||
$dir = is_dir($path);
|
||||
|
||||
$stat['mime'] = $dir ? 'directory' : $this->mimetype($path);
|
||||
$stat['ts'] = filemtime($path);
|
||||
$stat['read'] = is_readable($path);
|
||||
$stat['write'] = is_writable($path);
|
||||
if ($stat['read']) {
|
||||
$stat['size'] = $dir ? 0 : $size;
|
||||
}
|
||||
|
||||
return $stat;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return true if path is dir and has at least one childs directory
|
||||
*
|
||||
* @param string $path dir path
|
||||
* @return bool
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function _subdirs($path) {
|
||||
|
||||
if (($dir = dir($path))) {
|
||||
$dir = dir($path);
|
||||
while (($entry = $dir->read()) !== false) {
|
||||
$p = $dir->path.DIRECTORY_SEPARATOR.$entry;
|
||||
if ($entry != '.' && $entry != '..' && is_dir($p) && !$this->attr($p, 'hidden')) {
|
||||
$dir->close();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
$dir->close();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return object width and height
|
||||
* Ususaly used for images, but can be realize for video etc...
|
||||
*
|
||||
* @param string $path file path
|
||||
* @param string $mime file mime type
|
||||
* @return string
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function _dimensions($path, $mime) {
|
||||
clearstatcache();
|
||||
return strpos($mime, 'image') === 0 && ($s = @getimagesize($path)) !== false
|
||||
? $s[0].'x'.$s[1]
|
||||
: false;
|
||||
}
|
||||
/******************** file/dir content *********************/
|
||||
|
||||
/**
|
||||
* Return symlink target file
|
||||
*
|
||||
* @param string $path link path
|
||||
* @return string
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function readlink($path) {
|
||||
if (!($target = @readlink($path))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (substr($target, 0, 1) != DIRECTORY_SEPARATOR) {
|
||||
$target = dirname($path).DIRECTORY_SEPARATOR.$target;
|
||||
}
|
||||
|
||||
$atarget = realpath($target);
|
||||
|
||||
if (!$atarget) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$root = $this->root;
|
||||
$aroot = $this->aroot;
|
||||
|
||||
if ($this->_inpath($atarget, $this->aroot)) {
|
||||
return $this->_normpath($this->root.DIRECTORY_SEPARATOR.substr($atarget, strlen($this->aroot)+1));
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return files list in directory.
|
||||
*
|
||||
* @param string $path dir path
|
||||
* @return array
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function _scandir($path) {
|
||||
$files = array();
|
||||
|
||||
foreach (scandir($path) as $name) {
|
||||
if ($name != '.' && $name != '..') {
|
||||
$files[] = $path.DIRECTORY_SEPARATOR.$name;
|
||||
}
|
||||
}
|
||||
return $files;
|
||||
}
|
||||
|
||||
/**
|
||||
* Open file and return file pointer
|
||||
*
|
||||
* @param string $path file path
|
||||
* @param bool $write open file for writing
|
||||
* @return resource|false
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function _fopen($path, $mode='rb') {
|
||||
return @fopen($path, 'r');
|
||||
}
|
||||
|
||||
/**
|
||||
* Close opened file
|
||||
*
|
||||
* @param resource $fp file pointer
|
||||
* @return bool
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function _fclose($fp, $path='') {
|
||||
return @fclose($fp);
|
||||
}
|
||||
|
||||
/******************** file/dir manipulations *************************/
|
||||
|
||||
/**
|
||||
* Create dir and return created dir path or false on failed
|
||||
*
|
||||
* @param string $path parent dir path
|
||||
* @param string $name new directory name
|
||||
* @return string|bool
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function _mkdir($path, $name) {
|
||||
$path = $path.DIRECTORY_SEPARATOR.$name;
|
||||
|
||||
if (@mkdir($path)) {
|
||||
@chmod($path, $this->options['dirMode']);
|
||||
return $path;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create file and return it's path or false on failed
|
||||
*
|
||||
* @param string $path parent dir path
|
||||
* @param string $name new file name
|
||||
* @return string|bool
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function _mkfile($path, $name) {
|
||||
$path = $path.DIRECTORY_SEPARATOR.$name;
|
||||
|
||||
if (($fp = @fopen($path, 'w'))) {
|
||||
@fclose($fp);
|
||||
@chmod($path, $this->options['fileMode']);
|
||||
return $path;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create symlink
|
||||
*
|
||||
* @param string $source file to link to
|
||||
* @param string $targetDir folder to create link in
|
||||
* @param string $name symlink name
|
||||
* @return bool
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function _symlink($source, $targetDir, $name) {
|
||||
return @symlink($source, $targetDir.DIRECTORY_SEPARATOR.$name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy file into another file
|
||||
*
|
||||
* @param string $source source file path
|
||||
* @param string $targetDir target directory path
|
||||
* @param string $name new file name
|
||||
* @return bool
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function _copy($source, $targetDir, $name) {
|
||||
return copy($source, $targetDir.DIRECTORY_SEPARATOR.$name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Move file into another parent dir.
|
||||
* Return new file path or false.
|
||||
*
|
||||
* @param string $source source file path
|
||||
* @param string $target target dir path
|
||||
* @param string $name file name
|
||||
* @return string|bool
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function _move($source, $targetDir, $name) {
|
||||
$target = $targetDir.DIRECTORY_SEPARATOR.$name;
|
||||
return @rename($source, $target) ? $target : false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove file
|
||||
*
|
||||
* @param string $path file path
|
||||
* @return bool
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function _unlink($path) {
|
||||
return @unlink($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove dir
|
||||
*
|
||||
* @param string $path dir path
|
||||
* @return bool
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function _rmdir($path) {
|
||||
return @rmdir($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new file and write into it from file pointer.
|
||||
* Return new file path or false on error.
|
||||
*
|
||||
* @param resource $fp file pointer
|
||||
* @param string $dir target dir path
|
||||
* @param string $name file name
|
||||
* @return bool|string
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function _save($fp, $dir, $name, $mime, $w, $h) {
|
||||
$path = $dir.DIRECTORY_SEPARATOR.$name;
|
||||
|
||||
if (!($target = @fopen($path, 'wb'))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
while (!feof($fp)) {
|
||||
fwrite($target, fread($fp, 8192));
|
||||
}
|
||||
fclose($target);
|
||||
@chmod($path, $this->options['fileMode']);
|
||||
clearstatcache();
|
||||
return $path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get file contents
|
||||
*
|
||||
* @param string $path file path
|
||||
* @return string|false
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function _getContents($path) {
|
||||
return file_get_contents($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a string to a file
|
||||
*
|
||||
* @param string $path file path
|
||||
* @param string $content new file content
|
||||
* @return bool
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function _filePutContents($path, $content) {
|
||||
if (@file_put_contents($path, $content, LOCK_EX) !== false) {
|
||||
clearstatcache();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Detect available archivers
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
protected function _checkArchivers() {
|
||||
if (!function_exists('exec')) {
|
||||
$this->options['archivers'] = $this->options['archive'] = array();
|
||||
return;
|
||||
}
|
||||
$arcs = array(
|
||||
'create' => array(),
|
||||
'extract' => array()
|
||||
);
|
||||
|
||||
//exec('tar --version', $o, $ctar);
|
||||
$this->procExec('tar --version', $o, $ctar);
|
||||
|
||||
if ($ctar == 0) {
|
||||
$arcs['create']['application/x-tar'] = array('cmd' => 'tar', 'argc' => '-cf', 'ext' => 'tar');
|
||||
$arcs['extract']['application/x-tar'] = array('cmd' => 'tar', 'argc' => '-xf', 'ext' => 'tar');
|
||||
//$test = exec('gzip --version', $o, $c);
|
||||
unset($o);
|
||||
$test = $this->procExec('gzip --version', $o, $c);
|
||||
|
||||
if ($c == 0) {
|
||||
$arcs['create']['application/x-gzip'] = array('cmd' => 'tar', 'argc' => '-czf', 'ext' => 'tgz');
|
||||
$arcs['extract']['application/x-gzip'] = array('cmd' => 'tar', 'argc' => '-xzf', 'ext' => 'tgz');
|
||||
}
|
||||
unset($o);
|
||||
//$test = exec('bzip2 --version', $o, $c);
|
||||
$test = $this->procExec('bzip2 --version', $o, $c);
|
||||
if ($c == 0) {
|
||||
$arcs['create']['application/x-bzip2'] = array('cmd' => 'tar', 'argc' => '-cjf', 'ext' => 'tbz');
|
||||
$arcs['extract']['application/x-bzip2'] = array('cmd' => 'tar', 'argc' => '-xjf', 'ext' => 'tbz');
|
||||
}
|
||||
}
|
||||
unset($o);
|
||||
//exec('zip --version', $o, $c);
|
||||
$this->procExec('zip -v', $o, $c);
|
||||
if ($c == 0) {
|
||||
$arcs['create']['application/zip'] = array('cmd' => 'zip', 'argc' => '-r9', 'ext' => 'zip');
|
||||
}
|
||||
unset($o);
|
||||
$this->procExec('unzip --help', $o, $c);
|
||||
if ($c == 0) {
|
||||
$arcs['extract']['application/zip'] = array('cmd' => 'unzip', 'argc' => '', 'ext' => 'zip');
|
||||
}
|
||||
unset($o);
|
||||
//exec('rar --version', $o, $c);
|
||||
$this->procExec('rar --version', $o, $c);
|
||||
if ($c == 0 || $c == 7) {
|
||||
$arcs['create']['application/x-rar'] = array('cmd' => 'rar', 'argc' => 'a -inul', 'ext' => 'rar');
|
||||
$arcs['extract']['application/x-rar'] = array('cmd' => 'rar', 'argc' => 'x -y', 'ext' => 'rar');
|
||||
} else {
|
||||
unset($o);
|
||||
//$test = exec('unrar', $o, $c);
|
||||
$test = $this->procExec('unrar', $o, $c);
|
||||
if ($c==0 || $c == 7) {
|
||||
$arcs['extract']['application/x-rar'] = array('cmd' => 'unrar', 'argc' => 'x -y', 'ext' => 'rar');
|
||||
}
|
||||
}
|
||||
unset($o);
|
||||
//exec('7za --help', $o, $c);
|
||||
$this->procExec('7za --help', $o, $c);
|
||||
if ($c == 0) {
|
||||
$arcs['create']['application/x-7z-compressed'] = array('cmd' => '7za', 'argc' => 'a', 'ext' => '7z');
|
||||
$arcs['extract']['application/x-7z-compressed'] = array('cmd' => '7za', 'argc' => 'e -y', 'ext' => '7z');
|
||||
|
||||
if (empty($arcs['create']['application/x-gzip'])) {
|
||||
$arcs['create']['application/x-gzip'] = array('cmd' => '7za', 'argc' => 'a -tgzip', 'ext' => 'tar.gz');
|
||||
}
|
||||
if (empty($arcs['extract']['application/x-gzip'])) {
|
||||
$arcs['extract']['application/x-gzip'] = array('cmd' => '7za', 'argc' => 'e -tgzip -y', 'ext' => 'tar.gz');
|
||||
}
|
||||
if (empty($arcs['create']['application/x-bzip2'])) {
|
||||
$arcs['create']['application/x-bzip2'] = array('cmd' => '7za', 'argc' => 'a -tbzip2', 'ext' => 'tar.bz');
|
||||
}
|
||||
if (empty($arcs['extract']['application/x-bzip2'])) {
|
||||
$arcs['extract']['application/x-bzip2'] = array('cmd' => '7za', 'argc' => 'a -tbzip2 -y', 'ext' => 'tar.bz');
|
||||
}
|
||||
if (empty($arcs['create']['application/zip'])) {
|
||||
$arcs['create']['application/zip'] = array('cmd' => '7za', 'argc' => 'a -tzip -l', 'ext' => 'zip');
|
||||
}
|
||||
if (empty($arcs['extract']['application/zip'])) {
|
||||
$arcs['extract']['application/zip'] = array('cmd' => '7za', 'argc' => 'e -tzip -y', 'ext' => 'zip');
|
||||
}
|
||||
if (empty($arcs['create']['application/x-tar'])) {
|
||||
$arcs['create']['application/x-tar'] = array('cmd' => '7za', 'argc' => 'a -ttar -l', 'ext' => 'tar');
|
||||
}
|
||||
if (empty($arcs['extract']['application/x-tar'])) {
|
||||
$arcs['extract']['application/x-tar'] = array('cmd' => '7za', 'argc' => 'e -ttar -y', 'ext' => 'tar');
|
||||
}
|
||||
}
|
||||
|
||||
$this->archivers = $arcs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Unpack archive
|
||||
*
|
||||
* @param string $path archive path
|
||||
* @param array $arc archiver command and arguments (same as in $this->archivers)
|
||||
* @return void
|
||||
* @author Dmitry (dio) Levashov
|
||||
* @author Alexey Sukhotin
|
||||
**/
|
||||
protected function _unpack($path, $arc) {
|
||||
$cwd = getcwd();
|
||||
$dir = $this->_dirname($path);
|
||||
chdir($dir);
|
||||
$cmd = $arc['cmd'].' '.$arc['argc'].' '.escapeshellarg($this->_basename($path));
|
||||
$this->procExec($cmd, $o, $c);
|
||||
chdir($cwd);
|
||||
}
|
||||
|
||||
/**
|
||||
* Recursive symlinks search
|
||||
*
|
||||
* @param string $path file/dir path
|
||||
* @return bool
|
||||
* @author Dmitry (dio) Levashov
|
||||
**/
|
||||
protected function _findSymlinks($path) {
|
||||
if (is_link($path)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (is_dir($path)) {
|
||||
foreach (scandir($path) as $name) {
|
||||
if ($name != '.' && $name != '..') {
|
||||
$p = $path.DIRECTORY_SEPARATOR.$name;
|
||||
if (is_link($p)) {
|
||||
return true;
|
||||
}
|
||||
if (is_dir($p) && $this->_findSymlinks($p)) {
|
||||
return true;
|
||||
} elseif (is_file($p)) {
|
||||
$this->archiveSize += filesize($p);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$this->archiveSize += filesize($path);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract files from archive
|
||||
*
|
||||
* @param string $path archive path
|
||||
* @param array $arc archiver command and arguments (same as in $this->archivers)
|
||||
* @return true
|
||||
* @author Dmitry (dio) Levashov,
|
||||
* @author Alexey Sukhotin
|
||||
**/
|
||||
protected function _extract($path, $arc) {
|
||||
|
||||
if ($this->quarantine) {
|
||||
$dir = $this->quarantine.DIRECTORY_SEPARATOR.str_replace(' ', '_', microtime()).basename($path);
|
||||
$archive = $dir.DIRECTORY_SEPARATOR.basename($path);
|
||||
|
||||
if (!@mkdir($dir)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
chmod($dir, 0755);
|
||||
|
||||
// copy in quarantine
|
||||
if (!copy($path, $archive)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// extract in quarantine
|
||||
$this->_unpack($archive, $arc);
|
||||
@unlink($archive);
|
||||
|
||||
// get files list
|
||||
$ls = array();
|
||||
foreach (scandir($dir) as $i => $name) {
|
||||
if ($name != '.' && $name != '..') {
|
||||
$ls[] = $name;
|
||||
}
|
||||
}
|
||||
|
||||
// no files - extract error ?
|
||||
if (empty($ls)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->archiveSize = 0;
|
||||
|
||||
// find symlinks
|
||||
$symlinks = $this->_findSymlinks($dir);
|
||||
// remove arc copy
|
||||
$this->remove($dir);
|
||||
|
||||
if ($symlinks) {
|
||||
return $this->setError(elFinder::ERROR_ARC_SYMLINKS);
|
||||
}
|
||||
|
||||
// check max files size
|
||||
if ($this->options['maxArcFilesSize'] > 0 && $this->options['maxArcFilesSize'] < $this->archiveSize) {
|
||||
return $this->setError(elFinder::ERROR_ARC_MAXSIZE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// archive contains one item - extract in archive dir
|
||||
if (count($ls) == 1) {
|
||||
$this->_unpack($path, $arc);
|
||||
$result = dirname($path).DIRECTORY_SEPARATOR.$ls[0];
|
||||
|
||||
|
||||
} else {
|
||||
// for several files - create new directory
|
||||
// create unique name for directory
|
||||
$name = basename($path);
|
||||
if (preg_match('/\.((tar\.(gz|bz|bz2|z|lzo))|cpio\.gz|ps\.gz|xcf\.(gz|bz2)|[a-z0-9]{1,4})$/i', $name, $m)) {
|
||||
$name = substr($name, 0, strlen($name)-strlen($m[0]));
|
||||
}
|
||||
$test = dirname($path).DIRECTORY_SEPARATOR.$name;
|
||||
if (file_exists($test) || is_link($test)) {
|
||||
$name = $this->uniqueName(dirname($path), $name, '-', false);
|
||||
}
|
||||
|
||||
$result = dirname($path).DIRECTORY_SEPARATOR.$name;
|
||||
$archive = $result.DIRECTORY_SEPARATOR.basename($path);
|
||||
|
||||
if (!$this->_mkdir(dirname($path), $name) || !copy($path, $archive)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->_unpack($archive, $arc);
|
||||
@unlink($archive);
|
||||
}
|
||||
|
||||
return file_exists($result) ? $result : false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create archive and return its path
|
||||
*
|
||||
* @param string $dir target dir
|
||||
* @param array $files files names list
|
||||
* @param string $name archive name
|
||||
* @param array $arc archiver options
|
||||
* @return string|bool
|
||||
* @author Dmitry (dio) Levashov,
|
||||
* @author Alexey Sukhotin
|
||||
**/
|
||||
protected function _archive($dir, $files, $name, $arc) {
|
||||
$cwd = getcwd();
|
||||
chdir($dir);
|
||||
|
||||
$files = array_map('escapeshellarg', $files);
|
||||
|
||||
$cmd = $arc['cmd'].' '.$arc['argc'].' '.escapeshellarg($name).' '.implode(' ', $files);
|
||||
$this->procExec($cmd, $o, $c);
|
||||
chdir($cwd);
|
||||
|
||||
$path = $dir.DIRECTORY_SEPARATOR.$name;
|
||||
return file_exists($path) ? $path : false;
|
||||
}
|
||||
|
||||
} // END class
|
512
administrator/components/com_k2/lib/elfinder/mime.types
Normal file
512
administrator/components/com_k2/lib/elfinder/mime.types
Normal file
@ -0,0 +1,512 @@
|
||||
# This file controls what Internet media types are sent to the client for
|
||||
# given file extension(s). Sending the correct media type to the client
|
||||
# is important so they know how to handle the content of the file.
|
||||
# For more information about Internet media types, please read
|
||||
# RFC 2045, 2046, 2047, 2048, and 2077. The Internet media type
|
||||
# registry is at <ftp://ftp.iana.org/assignments/media-types/>.
|
||||
|
||||
# MIME type Extension
|
||||
application/andrew-inset ez
|
||||
application/chemtool cht
|
||||
application/dicom dcm
|
||||
application/docbook+xml docbook
|
||||
application/ecmascript ecma
|
||||
application/flash-video flv
|
||||
application/illustrator ai
|
||||
application/javascript js
|
||||
application/mac-binhex40
|
||||
application/mathematica nb
|
||||
application/msword doc
|
||||
application/octet-stream bin
|
||||
application/oda oda
|
||||
application/ogg ogg
|
||||
application/pdf pdf
|
||||
application/pgp pgp
|
||||
application/pgp-encrypted
|
||||
application/pgp-encrypted pgp gpg
|
||||
application/pgp-keys
|
||||
application/pgp-keys skr pkr
|
||||
application/pgp-signature
|
||||
application/pgp-signature sig
|
||||
application/pkcs7-mime
|
||||
application/pkcs7-signature p7s
|
||||
application/postscript ps
|
||||
application/rtf rtf
|
||||
application/sdp sdp
|
||||
application/smil smil smi sml
|
||||
application/stuffit sit
|
||||
application/vnd.corel-draw cdr
|
||||
application/vnd.hp-hpgl hpgl
|
||||
application/vnd.hp-pcl pcl
|
||||
application/vnd.lotus-1-2-3 123 wk1 wk3 wk4 wks
|
||||
application/vnd.mozilla.xul+xml xul
|
||||
application/vnd.ms-excel xls xlc xll xlm xlw xla xlt xld
|
||||
application/vnd.ms-powerpoint ppz ppt pps pot
|
||||
application/vnd.oasis.opendocument.chart odc
|
||||
application/vnd.oasis.opendocument.database odb
|
||||
application/vnd.oasis.opendocument.formula odf
|
||||
application/vnd.oasis.opendocument.graphics odg
|
||||
application/vnd.oasis.opendocument.graphics-template otg
|
||||
application/vnd.oasis.opendocument.image odi
|
||||
application/vnd.oasis.opendocument.presentation odp
|
||||
application/vnd.oasis.opendocument.presentation-template otp
|
||||
application/vnd.oasis.opendocument.spreadsheet ods
|
||||
application/vnd.oasis.opendocument.spreadsheet-template ots
|
||||
application/vnd.oasis.opendocument.text odt
|
||||
application/vnd.oasis.opendocument.text-master odm
|
||||
application/vnd.oasis.opendocument.text-template ott
|
||||
application/vnd.oasis.opendocument.text-web oth
|
||||
application/vnd.palm pdb
|
||||
application/vnd.rn-realmedia
|
||||
application/vnd.rn-realmedia rm
|
||||
application/vnd.rn-realmedia-secure rms
|
||||
application/vnd.rn-realmedia-vbr rmvb
|
||||
application/vnd.stardivision.calc sdc
|
||||
application/vnd.stardivision.chart sds
|
||||
application/vnd.stardivision.draw sda
|
||||
application/vnd.stardivision.impress sdd sdp
|
||||
application/vnd.stardivision.mail smd
|
||||
application/vnd.stardivision.math smf
|
||||
application/vnd.stardivision.writer sdw vor sgl
|
||||
application/vnd.sun.xml.calc sxc
|
||||
application/vnd.sun.xml.calc.template stc
|
||||
application/vnd.sun.xml.draw sxd
|
||||
application/vnd.sun.xml.draw.template std
|
||||
application/vnd.sun.xml.impress sxi
|
||||
application/vnd.sun.xml.impress.template sti
|
||||
application/vnd.sun.xml.math sxm
|
||||
application/vnd.sun.xml.writer sxw
|
||||
application/vnd.sun.xml.writer.global sxg
|
||||
application/vnd.sun.xml.writer.template stw
|
||||
application/vnd.wordperfect wpd
|
||||
application/x-abiword abw abw.CRASHED abw.gz zabw
|
||||
application/x-amipro sam
|
||||
application/x-anjuta-project prj
|
||||
application/x-applix-spreadsheet as
|
||||
application/x-applix-word aw
|
||||
application/x-arc
|
||||
application/x-archive a
|
||||
application/x-arj arj
|
||||
application/x-asax asax
|
||||
application/x-ascx ascx
|
||||
application/x-ashx ashx
|
||||
application/x-asix asix
|
||||
application/x-asmx asmx
|
||||
application/x-asp asp
|
||||
application/x-awk
|
||||
application/x-axd axd
|
||||
application/x-bcpio bcpio
|
||||
application/x-bittorrent torrent
|
||||
application/x-blender blender blend BLEND
|
||||
application/x-bzip bz bz2
|
||||
application/x-bzip bz2 bz
|
||||
application/x-bzip-compressed-tar tar.bz tar.bz2
|
||||
application/x-bzip-compressed-tar tar.bz tar.bz2 tbz tbz2
|
||||
application/x-cd-image iso
|
||||
application/x-cgi cgi
|
||||
application/x-chess-pgn pgn
|
||||
application/x-chm chm
|
||||
application/x-class-file
|
||||
application/x-cmbx cmbx
|
||||
application/x-compress Z
|
||||
application/x-compressed-tar tar.gz tar.Z tgz taz
|
||||
application/x-compressed-tar tar.gz tgz
|
||||
application/x-config config
|
||||
application/x-core
|
||||
application/x-cpio cpio
|
||||
application/x-cpio-compressed cpio.gz
|
||||
application/x-csh csh
|
||||
application/x-cue cue
|
||||
application/x-dbase dbf
|
||||
application/x-dbm
|
||||
application/x-dc-rom dc
|
||||
application/x-deb deb
|
||||
application/x-designer ui
|
||||
application/x-desktop desktop kdelnk
|
||||
application/x-devhelp devhelp
|
||||
application/x-dia-diagram dia
|
||||
application/x-disco disco
|
||||
application/x-dvi dvi
|
||||
application/x-e-theme etheme
|
||||
application/x-egon egon
|
||||
application/x-executable exe
|
||||
application/x-font-afm afm
|
||||
application/x-font-bdf bdf
|
||||
application/x-font-dos
|
||||
application/x-font-framemaker
|
||||
application/x-font-libgrx
|
||||
application/x-font-linux-psf psf
|
||||
application/x-font-otf
|
||||
application/x-font-pcf pcf
|
||||
application/x-font-pcf pcf.gz
|
||||
application/x-font-speedo spd
|
||||
application/x-font-sunos-news
|
||||
application/x-font-tex
|
||||
application/x-font-tex-tfm
|
||||
application/x-font-ttf ttc TTC
|
||||
application/x-font-ttf ttf
|
||||
application/x-font-type1 pfa pfb gsf pcf.Z
|
||||
application/x-font-vfont
|
||||
application/x-frame
|
||||
application/x-frontline aop
|
||||
application/x-gameboy-rom gb
|
||||
application/x-gdbm
|
||||
application/x-gdesklets-display display
|
||||
application/x-genesis-rom gen md
|
||||
application/x-gettext-translation gmo
|
||||
application/x-glabels glabels
|
||||
application/x-glade glade
|
||||
application/x-gmc-link
|
||||
application/x-gnome-db-connection connection
|
||||
application/x-gnome-db-database database
|
||||
application/x-gnome-stones caves
|
||||
application/x-gnucash gnucash gnc xac
|
||||
application/x-gnumeric gnumeric
|
||||
application/x-graphite gra
|
||||
application/x-gtar gtar
|
||||
application/x-gtktalog
|
||||
application/x-gzip gz
|
||||
application/x-gzpostscript ps.gz
|
||||
application/x-hdf hdf
|
||||
application/x-ica ica
|
||||
application/x-ipod-firmware
|
||||
application/x-jamin jam
|
||||
application/x-jar jar
|
||||
application/x-java class
|
||||
application/x-java-archive jar ear war
|
||||
|
||||
application/x-jbuilder-project jpr jpx
|
||||
application/x-karbon karbon
|
||||
application/x-kchart chrt
|
||||
application/x-kformula kfo
|
||||
application/x-killustrator kil
|
||||
application/x-kivio flw
|
||||
application/x-kontour kon
|
||||
application/x-kpovmodeler kpm
|
||||
application/x-kpresenter kpr kpt
|
||||
application/x-krita kra
|
||||
application/x-kspread ksp
|
||||
application/x-kspread-crypt
|
||||
application/x-ksysv-package
|
||||
application/x-kugar kud
|
||||
application/x-kword kwd kwt
|
||||
application/x-kword-crypt
|
||||
application/x-lha lha lzh
|
||||
application/x-lha lzh
|
||||
application/x-lhz lhz
|
||||
application/x-linguist ts
|
||||
application/x-lyx lyx
|
||||
application/x-lzop lzo
|
||||
application/x-lzop-compressed-tar tar.lzo tzo
|
||||
application/x-macbinary
|
||||
application/x-machine-config
|
||||
application/x-magicpoint mgp
|
||||
application/x-master-page master
|
||||
application/x-matroska mkv
|
||||
application/x-mdp mdp
|
||||
application/x-mds mds
|
||||
application/x-mdsx mdsx
|
||||
application/x-mergeant mergeant
|
||||
application/x-mif mif
|
||||
application/x-mozilla-bookmarks
|
||||
application/x-mps mps
|
||||
application/x-ms-dos-executable exe
|
||||
application/x-mswinurl
|
||||
application/x-mswrite wri
|
||||
application/x-msx-rom msx
|
||||
application/x-n64-rom n64
|
||||
application/x-nautilus-link
|
||||
application/x-nes-rom nes
|
||||
application/x-netcdf cdf nc
|
||||
application/x-netscape-bookmarks
|
||||
application/x-object o
|
||||
application/x-ole-storage
|
||||
application/x-oleo oleo
|
||||
application/x-palm-database
|
||||
application/x-palm-database pdb prc
|
||||
application/x-par2 PAR2 par2
|
||||
application/x-pef-executable
|
||||
application/x-perl pl pm al perl
|
||||
application/x-php php php3 php4
|
||||
application/x-pkcs12 p12 pfx
|
||||
application/x-planner planner mrproject
|
||||
application/x-planperfect pln
|
||||
application/x-prjx prjx
|
||||
application/x-profile
|
||||
application/x-ptoptimizer-script pto
|
||||
application/x-pw pw
|
||||
application/x-python-bytecode pyc pyo
|
||||
application/x-quattro-pro wb1 wb2 wb3
|
||||
application/x-quattropro wb1 wb2 wb3
|
||||
application/x-qw qif
|
||||
application/x-rar rar
|
||||
application/x-rar-compressed rar
|
||||
application/x-rdp rdp
|
||||
application/x-reject rej
|
||||
application/x-remoting rem
|
||||
application/x-resources resources
|
||||
application/x-resourcesx resx
|
||||
application/x-rpm rpm
|
||||
application/x-ruby
|
||||
application/x-sc
|
||||
application/x-sc sc
|
||||
application/x-scribus sla sla.gz scd scd.gz
|
||||
application/x-shar shar
|
||||
application/x-shared-library-la la
|
||||
application/x-sharedlib so
|
||||
application/x-shellscript sh
|
||||
application/x-shockwave-flash swf
|
||||
application/x-siag siag
|
||||
application/x-slp
|
||||
application/x-smil kino
|
||||
application/x-smil smi smil
|
||||
application/x-sms-rom sms gg
|
||||
application/x-soap-remoting soap
|
||||
application/x-streamingmedia ssm
|
||||
application/x-stuffit
|
||||
application/x-stuffit bin sit
|
||||
application/x-sv4cpio sv4cpio
|
||||
application/x-sv4crc sv4crc
|
||||
application/x-tar tar
|
||||
application/x-tarz tar.Z
|
||||
application/x-tex-gf gf
|
||||
application/x-tex-pk k
|
||||
application/x-tgif obj
|
||||
application/x-theme theme
|
||||
application/x-toc toc
|
||||
application/x-toutdoux
|
||||
application/x-trash bak old sik
|
||||
application/x-troff tr roff t
|
||||
application/x-troff-man man
|
||||
application/x-troff-man-compressed
|
||||
application/x-tzo tar.lzo tzo
|
||||
application/x-ustar ustar
|
||||
application/x-wais-source src
|
||||
application/x-web-config
|
||||
application/x-wpg wpg
|
||||
application/x-wsdl wsdl
|
||||
application/x-x509-ca-cert der cer crt cert pem
|
||||
application/x-xbel xbel
|
||||
application/x-zerosize
|
||||
application/x-zoo zoo
|
||||
application/xhtml+xml xhtml
|
||||
application/zip zip
|
||||
audio/ac3 ac3
|
||||
audio/basic au snd
|
||||
audio/midi mid midi
|
||||
audio/mpeg mp3
|
||||
audio/prs.sid sid psid
|
||||
audio/vnd.rn-realaudio ra
|
||||
audio/x-aac aac
|
||||
audio/x-adpcm
|
||||
audio/x-aifc
|
||||
audio/x-aiff aif aiff
|
||||
audio/x-aiff aiff aif aifc
|
||||
audio/x-aiffc
|
||||
audio/x-flac flac
|
||||
audio/x-m4a m4a
|
||||
audio/x-mod mod ult uni XM m15 mtm 669
|
||||
audio/x-mp3-playlist
|
||||
audio/x-mpeg
|
||||
audio/x-mpegurl m3u
|
||||
audio/x-ms-asx
|
||||
audio/x-pn-realaudio ra ram rm
|
||||
audio/x-pn-realaudio ram rmm
|
||||
audio/x-riff
|
||||
audio/x-s3m s3m
|
||||
audio/x-scpls pls
|
||||
audio/x-scpls pls xpl
|
||||
audio/x-stm stm
|
||||
audio/x-voc voc
|
||||
audio/x-wav wav
|
||||
audio/x-xi xi
|
||||
audio/x-xm xm
|
||||
image/bmp bmp
|
||||
image/cgm cgm
|
||||
image/dpx
|
||||
image/fax-g3 g3
|
||||
image/g3fax
|
||||
image/gif gif
|
||||
image/ief ief
|
||||
image/jpeg jpeg jpg jpe
|
||||
image/jpeg2000 jp2
|
||||
image/png png
|
||||
image/rle rle
|
||||
image/svg+xml svg
|
||||
image/tiff tif tiff
|
||||
image/vnd.djvu djvu djv
|
||||
image/vnd.dwg dwg
|
||||
image/vnd.dxf dxf
|
||||
image/x-3ds 3ds
|
||||
image/x-applix-graphics ag
|
||||
image/x-cmu-raster ras
|
||||
image/x-compressed-xcf xcf.gz xcf.bz2
|
||||
image/x-dcraw bay BAY bmq BMQ cr2 CR2 crw CRW cs1 CS1 dc2 DC2 dcr DCR fff FFF k25 K25 kdc KDC mos MOS mrw MRW nef NEF orf ORF pef PEF raf RAF rdc RDC srf SRF x3f X3F
|
||||
image/x-dib
|
||||
image/x-eps eps epsi epsf
|
||||
image/x-fits fits
|
||||
image/x-fpx
|
||||
image/x-icb icb
|
||||
image/x-ico ico
|
||||
image/x-iff iff
|
||||
image/x-ilbm ilbm
|
||||
image/x-jng jng
|
||||
image/x-lwo lwo lwob
|
||||
image/x-lws lws
|
||||
image/x-msod msod
|
||||
image/x-niff
|
||||
image/x-pcx
|
||||
image/x-photo-cd pcd
|
||||
image/x-pict pict pict1 pict2
|
||||
image/x-portable-anymap pnm
|
||||
image/x-portable-bitmap pbm
|
||||
image/x-portable-graymap pgm
|
||||
image/x-portable-pixmap ppm
|
||||
image/x-psd psd
|
||||
image/x-rgb rgb
|
||||
image/x-sgi sgi
|
||||
image/x-sun-raster sun
|
||||
image/x-tga tga
|
||||
image/x-win-bitmap cur
|
||||
image/x-wmf wmf
|
||||
image/x-xbitmap xbm
|
||||
image/x-xcf xcf
|
||||
image/x-xfig fig
|
||||
image/x-xpixmap xpm
|
||||
image/x-xwindowdump xwd
|
||||
inode/blockdevice
|
||||
inode/chardevice
|
||||
inode/directory
|
||||
inode/fifo
|
||||
inode/mount-point
|
||||
inode/socket
|
||||
inode/symlink
|
||||
message/delivery-status
|
||||
message/disposition-notification
|
||||
message/external-body
|
||||
message/news
|
||||
message/partial
|
||||
message/rfc822
|
||||
message/x-gnu-rmail
|
||||
model/vrml wrl
|
||||
multipart/alternative
|
||||
multipart/appledouble
|
||||
multipart/digest
|
||||
multipart/encrypted
|
||||
multipart/mixed
|
||||
multipart/related
|
||||
multipart/report
|
||||
multipart/signed
|
||||
multipart/x-mixed-replace
|
||||
text/calendar vcs ics
|
||||
text/css css CSSL
|
||||
text/directory vcf vct gcrd
|
||||
text/enriched
|
||||
text/html html htm
|
||||
text/htmlh
|
||||
text/mathml mml
|
||||
text/plain txt asc
|
||||
text/rdf rdf
|
||||
text/rfc822-headers
|
||||
text/richtext rtx
|
||||
text/rss rss
|
||||
text/sgml sgml sgm
|
||||
text/spreadsheet sylk slk
|
||||
text/tab-separated-values tsv
|
||||
text/vnd.rn-realtext rt
|
||||
text/vnd.wap.wml wml
|
||||
text/x-adasrc adb ads
|
||||
text/x-authors
|
||||
text/x-bibtex bib
|
||||
text/x-boo boo
|
||||
text/x-c++hdr hh
|
||||
text/x-c++src cpp cxx cc C c++
|
||||
text/x-chdr h h++ hp
|
||||
text/x-comma-separated-values csv
|
||||
text/x-copying
|
||||
text/x-credits
|
||||
text/x-csrc c
|
||||
text/x-dcl dcl
|
||||
text/x-dsl dsl
|
||||
text/x-dsrc d
|
||||
text/x-dtd dtd
|
||||
text/x-emacs-lisp el
|
||||
text/x-fortran f
|
||||
text/x-gettext-translation po
|
||||
text/x-gettext-translation-template pot
|
||||
text/x-gtkrc
|
||||
text/x-haskell hs
|
||||
text/x-idl idl
|
||||
text/x-install
|
||||
text/x-java java
|
||||
text/x-js js
|
||||
text/x-ksysv-log
|
||||
text/x-literate-haskell lhs
|
||||
text/x-log log
|
||||
text/x-makefile
|
||||
text/x-moc moc
|
||||
text/x-msil il
|
||||
text/x-nemerle n
|
||||
text/x-objcsrc m
|
||||
text/x-pascal p pas
|
||||
text/x-patch diff patch
|
||||
text/x-python py
|
||||
text/x-readme
|
||||
text/x-rng rng
|
||||
text/x-scheme scm
|
||||
text/x-setext etx
|
||||
text/x-speech
|
||||
text/x-sql sql
|
||||
text/x-suse-ymp ymp
|
||||
text/x-suse-ymu ymu
|
||||
text/x-tcl tcl tk
|
||||
text/x-tex tex ltx sty cls
|
||||
text/x-texinfo texi texinfo
|
||||
text/x-texmacs tm ts
|
||||
text/x-troff-me me
|
||||
text/x-troff-mm mm
|
||||
text/x-troff-ms ms
|
||||
text/x-uil uil
|
||||
text/x-uri uri url
|
||||
text/x-vb vb
|
||||
text/x-xds xds
|
||||
text/x-xmi xmi
|
||||
text/x-xsl xsl
|
||||
text/x-xslfo fo xslfo
|
||||
text/x-xslt xslt xsl
|
||||
text/xmcd
|
||||
text/xml xml
|
||||
video/3gpp 3gp
|
||||
video/dv dv dif
|
||||
video/isivideo
|
||||
video/mpeg mpeg mpg mp2 mpe vob dat
|
||||
video/quicktime qt mov moov qtvr
|
||||
video/vivo
|
||||
video/vnd.rn-realvideo rv
|
||||
video/wavelet
|
||||
video/x-3gpp2 3g2
|
||||
video/x-anim anim[1-9j]
|
||||
video/x-avi
|
||||
video/x-flic fli flc
|
||||
video/x-mng mng
|
||||
video/x-ms-asf asf asx
|
||||
video/x-ms-wmv wmv
|
||||
video/x-msvideo avi
|
||||
video/x-nsv nsv NSV
|
||||
video/x-real-video
|
||||
video/x-sgi-movie movie
|
||||
application/x-java-jnlp-file jnlp
|
||||
application/vnd.openxmlformats-officedocument.wordprocessingml.document docx
|
||||
application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx
|
||||
application/vnd.ms-word.document.macroEnabled.12 docm
|
||||
application/vnd.ms-word.template.macroEnabled.12 dotm
|
||||
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx
|
||||
application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx
|
||||
application/vnd.ms-excel.sheet.macroEnabled.12 xlsm
|
||||
application/vnd.ms-excel.template.macroEnabled.12 xltm
|
||||
application/vnd.ms-excel.addin.macroEnabled.12 xlam
|
||||
application/vnd.ms-excel.sheet.binary.macroEnabled.12 xlsb
|
||||
application/vnd.openxmlformats-officedocument.presentationml.presentation pptx
|
||||
application/vnd.openxmlformats-officedocument.presentationml.template potx
|
||||
application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx
|
||||
application/vnd.ms-powerpoint.addin.macroEnabled.12 ppam
|
Reference in New Issue
Block a user