Configuración del conector

PHP

Un ejemplo simple para la configuración y puesta en marcha del conector:

 1 <?php
 2 
 3 // incluimos el conector
 4 include_once dirname(__FILE__).DIRECTORY_SEPARATOR.'elFinder.class.php';
 5 
 6 $opts = array(
 7    'root'        => '/var/www/localhost/elfinder/files',
 8    'URL'         => 'http://localhost/elfinder/files',
 9    'lang'        => 'ru',
10    'debug'       => false,
11    'arc'         => '7za',
12    'fileURL'     => false,
13    'imgLib'      => 'mogrify',
14    'dotFiles'    => true,
15    'dirSize'     => true,
16    'uploadAllow' => array('image/png'),
17    'uploadDeny'  => array('image', 'text'),
18    'uploadOrder' => 'deny,allow',
19    'disabled'    => array('edit', 'rename'),
20    'tmbDir'      => '_tmb',
21    'defaults'    => array(
22       'read'        => true,
23       'write'       => true,
24       'rm'          => true
25    ),
26 );
27 
28 $fm = new elFinder($opts); 
29 $fm->run();
30 
31 ?>

Más información en source:src/connectors/php/connector.php

Opciones

Parámetros Tipo Descripción
root String Ruta hacia el directorio raíz. Requerido
URL String URL del directorio raíz. Requerido
rootAlias String Alias para el directorio raíz
disabled Array Lista de los comandos deshabilitados
dotFiles Boolean Mostrar ficheros que empiecen por punto. Por defecto: true
dirSize Boolean Calcular el tamaño que ocupan los directorios
fileMode Octal mode para los ficheros nuevos
dirMode Octal mode para los directorios nuevos
mimeDetect String Forma de detectar los tipos mime de los ficheros (posibles valores: finfo, php, linux (file -ib), bsd (file -Ib), internal (por la extensión))
uploadAllow Array Lista de los ficheros permitidos para la subida. Se puede poner el mimetype exacto image/jpeg o bien un grupo de tipos application
uploadDeny Array Lista de ficheros prohibidos para la subida
uploadOrder String Orden de aplicación de las reglas que prohiben la subida. allow,deny sólo aquello que está permitido, salvo lo prohibido (AND). deny,allow todo lo que no está prohibido o explicitamente permitido (OR)
imgLib String Librería para crear las vistas previas (sólo aplicable al conector php. Posibles valores: imagick, mogrify, gd). Si no se indica el conector intentará determinarlo automaticamente
tmbDir String Directorio para almacenar las vistas previas. Si no indica este parámetro las vistas previas no serán creadas
tmbCleanProb Integer Frecuencia de vaciado de la carpeta con vistas previas. Posibles valores - desde 0 hasta 200. 0 - no se vacía nunca, 200 - con cada petición de inicialización del gestor de ficheros
tmbAtOnce Integer Cuantas vistas previas se crean por petición en background. Por defecto: 5
tmbSize Integer Tamaño de vistas previas en px
fileURL Boolean Devolver la URL de los ficheros al cliente. Por defecto: true
dateFormat String Formato para la fecha de modificación del fichero. Por defecto: j M Y H:i
logger Object Objeto logger
defaults Array Permisos de acceso a los ficheros/carpetas por defecto. Valor por defecto: array( 'read' => true, 'write' => true, 'rm' => true )
perms Array Permisos de acceso a los ficheros/carpetas. Para más información ver página correspondiente
archiveMimes Array Lista de los tipos de archivos cuya creación está permitida. Si no se indica todos los tipos disponibles estarán permitidos
archivers Array Información sobre software para la compresión. Si no se indica el conector intentará buscar y utilizar todos los archivadores accesibles
debug Boolean Enviar las trazas debug al cliente

Subir ficheros

El permiso y la denegación para la subida de ficheros en el conector se realiza basándose en el tipo mime. La forma es idéntica a la "Access Control" :http://httpd.apache.org/docs/2.2/howto/access.html en el servidor web Apache.

Ejemplos:

1. Sólo aquellos tipos de ficheros que están permitidos, aparte de los que están prohibidos explicitamente. Los tipos que no están indicados en uploadAllow no serán subidos. Permitimos subir todos los ficheros de texto, aparte de rtf y permitimos subir los ficheros xml:

1 'uploadAllow'  => array('text', 'application/xml'),
2 'uploadDeny'   => array('text/rtf'),
3 'uploadOrder'  => 'allow,deny'

2. Ficheros que no están prohibidos, o bien permitidos explicitamente. Prohibimos subir las aplicaciones, excepto xml

1 'uploadAllow'  => array('application/xml'),
2 'uploadDeny'   => array('application'),
3 'uploadOrder'  => 'deny,allow'

3. También se puede usar la palabra clave all. Prohibir todo excepto las imágenes y flash:

1 'uploadAllow'  => array('image', 'application/x-shockwave-flash'),
2 'uploadDeny'   => array('all'),
3 'uploadOrder'  => 'deny,allow'

Permisos de acceso

El parámetro que indica la configuración de permisos de acceso por defecto es defaults

1 defaults => array(
2    'read'  => true,
3    'write' => true,
4    'rm'    => true
5 )

El parámetro perms que contiene un array indica las opciones de permisos de acceso a carpetas/ficheros discretos. La claves del array son expresiones regex para las rutas hacia los ficheros/carpetas, los valores son los arrays de permisos.

Ejemplos:

1. Prohibir eliminar jpeg/png/gif:

1 'perms' => array(
2   '/\.(jpg|gif|png)$/i' => array(
3     'read'  => true,
4     'write' => true,
5     'rm'    => false
6   )
7 )

2. Prohibir la escritura en ficheros de texto (tampoco se podrá cambiar el nombre):

1 'perms' => array(
2    '/\.(txt|html|php|py|pl|sh|xml)$/i' => array(
3       'read'  => true,
4       'write' => false,
5       'rm'    => true
6    )
7 )

3. Carpeta de usuario. Puede leer todo, pero eliminar y/o modificar sólo en su directorio:

 1 'defaults' => array(
 2    'read'  => true,
 3    'write' => false,
 4    'rm'    => false
 5 ),
 6 'perms' => array(
 7    '/^user_dir\/.*/' => array(
 8       'read'  => true,
 9       'write' => true,
10       'rm'    => true
11    )
12 )

Deshabilitar algunos comandos

La opción disabled permite deshabilitar prácticamente todos los comandos, excepto los básicos, necesarios para el funcionamiento normal del gestor.

Ejemplo:

Prohibimos cambiar el nombre de todos los ficheros y editar los que son de texto:

1 disabled => array('rename', 'edit')

Python

Opciones (python)

Parámetro Tipo Valor por defecto Descripción
root String '' Ruta al directorio raíz. Requerido
URL String '' URL del directorio raíz. Requerido
rootAlias String 'Home' Alias para el directorio raíz
fileURL Boolean True Devolver la URL del fichero al cliente
dotFiles Boolean False Mostrar ficheros que empiecen por punto
dirSize Boolean True Calcular el tamaño total de los directorios
fileMode Octal 0644 mode para los ficheros nuevos
dirMode Octal 0755 mode para los directorios nuevos
imgLib String 'auto' Librería para crear las miniaturas, False - deshabilitar
tmbDir String '.tmb' Directorio para las miniaturas
tmbAtOnce Integer 5 Cantidad de miniaturas que se crean en segundo plano por llamada
tmbSize Integer 48 Tamaño de miniaturas en pixels
uploadMaxSize Integer 256 Tamaño máximo de ficheros que se puedan subir
uploadAllow List [] Lista de ficheros permitidos para la subida. Se puede especificar un tipo mime exacto (image/jpeg) o bien un grupo de tipos (application)
uploadDeny List [] Lista de ficheros prohibidos para la subida
uploadOrder List ['deny', 'allow'] El orden en el que se aplican las reglas para la subida. ['allow','deny'] - sólo aquello que está permitido, aparte de lo que está prohibido (AND). ['deny', 'allow'] aquello que no está prohibido o bien lo que está permitido (OR)
defaults Dict { 'read': True, 'write': True, 'rm': True } Acceso por defecto a los ficheros/directorios
perms Dict {} Acceso a ficheros/directorios separados
archiveMimes Dict {} Lista de tipos de archivos permitidos para la creación. Si no está especificado se permitirá la creación de todos los tipos disponibles
archivers Dict {} Información sobre los archivadores. Si no se especifica el conector intentará buscar y utilizar todos los archivadores disponibles
disabled List [] Lista de comandos deshabilitados
debug Boolean False Enviar la información debug al cliente

Ejemplo (python)

La configuración del conector en python es idéntica a la configuración php, allí hay más ejemplos. Las diferencias están únicamente en el sintaxis del lenguaje y algunos tipos de datos que se usan en las opciones.

 1 #!/usr/bin/env python
 2 
 3 import elFinder
 4 
 5 elFinder.connector({
 6     'root': '/Users/troex/Sites/git/elfinder/files',
 7     'URL': 'http://localhost/~troex/git/elfinder/files',
 8     'debug': True,                   # enviar la información debug
 9     'dirSize': True,                 # calcular el tamaño de los directorios
10     'dotFiles': True,                # mostrar ficheros cuyo nombre empieza por punto
11     'perms': {
12         '^/upload/.*': {             # en este directorios se pueden subir los ficheros
13             'read': False,
14             'write': False,
15             'rm': False
16         },
17         'backup': {                  # prohibir modificar o eliminar los backups
18             'read': True,
19             'write': False,
20             'rm': False
21         },
22         '^/secure': {                # cerrar completamente el acceso
23             'read': False,
24             'write': False,
25             'rm': False
26         }
27     },
28     'uploadDeny': ['image', 'application'],      # prohibir subir las imágenes y programas
29     'uploadAllow': ['image/png', 'image/jpeg'],  # permitir subir jpg y png
30     'uploadOrder': ['deny', 'allow']
31 }).run()