====== Tiny File Manager ======
[[..:aplicaciones_web|Aplicación web]] para la gestión de archivos programada en [[informatica:programacion:php|PHP]]. En un único fichero y compatible desde [[informatica:programacion:php|PHP]] 5.5.
* [[https://tinyfilemanager.github.io/|Web]]
* [[https://github.com/prasathmani/tinyfilemanager|Repositorio de código]]
* [[https://tinyfilemanager.github.io/demo/|Demo]]
{{ https://tinyfilemanager.github.io/img/bg-showcase-1.jpg |}}
===== Características =====
* Open source
* Ligero
* Sin dependencias
* Creación, edición, copia, renombrar y descargar ficheros de manera sencilla.
* Soporte de resaltado de sintaxis para la edición de código fuente.
* Subida múltiple de ficheros
* Gestión de cuentas de usuario. Cada usuario puede tener su propio directorio y permisos de accesos.
* Buscador por nombre, tipo, extensión...
* Creación de ficheros comprimidos.
* Extracción online de ficheros comprimidos
* Diseño adaptable (basado en [[informatica:diseno_web:css:bootstrap|Bootstrap]])
* Traducido a más de 32 idiomas
===== Instalación =====
==== Manual ====
Colocar el fichero ''tinyfilemanager.php'' en cualquier directorio que sirva el servidor web.
==== Docker ====
Ejemplo de fichero ''docker-compose.yml'' para emplear con [[informatica:sistemas_operativos:virtualizacion:docker:docker_compose|Docker Compose]]:
---
version: '3.3'
services:
tinyfilemanager:
image: 'tinyfilemanager/tinyfilemanager:master'
container_name: tinyfilemanager
ports:
- '80:80'
volumes:
- './data:/var/www/html/data'
restart: always
===== Adaptación para PHP 5.4 =====
Tiny File Manager hace uso de las siguientes funciones que no aparecieron hasta la versión 5.5 de PHP:
* [[https://www.php.net/manual/en/function.random-bytes.php|random_bytes]]
* [[https://www.php.net/manual/en/function.password-verify|password_verify]]
* [[https://www.php.net/manual/en/function.password-hash|password_hash]]
* [[https://www.php.net/manual/en/function.hash-equals|hash_equals]]
Para poder usarlo en una versión anterior:
* [[https://github.com/paragonie/random_compat|random_compat]]: compatibilidad PHP 5.x para las funciones ''random_bytes()'' y ''random_int()''
* [[https://github.com/ircmaxell/password_compat|password_compact]]: compatibilidad PHP 5.3.7 para las funciones ''password_*()''
Y la creación de la función ''hash_equals'':
if(!function_exists('hash_equals')) {
function hash_equals($str1, $str2) {
if(strlen($str1) != strlen($str2)) {
return false;
} else {
$res = $str1 ^ $str2;
$ret = 0;
for($i = strlen($res) - 1; $i >= 0; $i--) $ret |= ord($res[$i]);
return !$ret;
}
}
}
Estructura:
tinyfilemanager.php
lib/random.php
lib/password.php
lib/hash.php
===== Configuración =====
La configuración se hace desde el propio script o a través de un [[https://tinyfilemanager.github.io/config-sample.txt|fichero de configuración]] con las opciones más comunes.
==== Usuarios ====
Por defecto, vienen creados dos usuarios: **admin** y **user**. Las contraseñas son ''admin@123'' y ''12345'' respectivamente.
Para generar el hash de la contraseña, podemos usar una aplicación web desarrollada por la misma gente de Tiny File Manager: [[https://tinyfilemanager.github.io/docs/pwd.html|PHP5 PASSWORD HASH GENERATOR]].
En el script de Tiny File Manager añadiríamos el usuario y el hash:
$auth_users = array(
'pepito' => '$2y$10$Fg6Dz8oH9fPoZ2jJan5tZuv6Z4Kp7avtQ9bDfrdRntXtPeiMAZyGO'
);
Otra opción sería guardar la contraseña en claro:
$auth_users = array(
'pepito' => password_hash('12345', PASSWORD_DEFAULT)
);
==== Idioma ====
La descarga de Tiny File Manager incluye un fichero llamado ''translation.json'' (también accesible desde [[https://github.com/prasathmani/tinyfilemanager/blob/master/translation.json|aquí]]). Si situamos dicho fichero en el mismo directorio que Tiny File Manager, podremos seleccionar el idioma desde el propio Tiny File Manager.