From 7f33c1194d335e2f9148ffba279e5137bceed0a1 Mon Sep 17 00:00:00 2001 From: imcraftsman Date: Tue, 21 Oct 2025 09:24:22 +0800 Subject: [PATCH] add config.php and favicon.ico add config.php and favicon.ico --- config.php | 149 ++++++++++++++++++++++++++++++++++++++++++++++++++++ favicon.ico | Bin 0 -> 11851 bytes 2 files changed, 149 insertions(+) create mode 100644 config.php create mode 100644 favicon.ico diff --git a/config.php b/config.php new file mode 100644 index 0000000..c357102 --- /dev/null +++ b/config.php @@ -0,0 +1,149 @@ + 'Password', 'Username2' => 'Password2', ...) +// Generate secure password hash - https://tinyfilemanager.github.io/docs/pwd.html +$auth_users = array( + 'admin' => '$2y$10$jx9DL2I3x3nS6wmGTTete.wlPNtIddwlvySXYS2zjoPRGyhinbf1W', // admin@123 + 'user0' => '$2y$10$pk.6o4/CCS0kwaPp349hVeOKHPDSP871HQDzUuZbnG0On/3YbCh9C', // 12345 + 'user1' => '$2y$10$Bgj/8tbeamSe452sPXSK5eweR5rjIA/6cJPvCX85tvN2BED2VjO3m', // 12345 + 'user2' => '$2y$10$Ey26DNdAImdZ7MSvBUYNZ.Tym0BkZVm9RqnS/vzXn8VM5RejeWol.', // 12345 + 'user3' => '$2y$10$ZDTPfCO2nUWGhpkuTVCsKehbUuqq.xZJZ7RBFILRkgCWrgKGzgXM.', // user3 + 'user4' => '$2y$10$yDbhZeVYg9zMaZXDx7HTueVvmpMHNFp6Ru2GkSBWNJH0m03XVg0ES',// @ + 'user5' => '$2y$10$m2wUB5Kx3E6a/.BZ3VMUte5LzoLDJDpxNQ7qhffjtA9wLp28Qa3xa' //30116511 +); + +// Readonly users +// e.g. array('users', 'guest', ...) +$readonly_users = array( + 'guest' +); + +// Enable highlight.js (https://highlightjs.org/) on view's page +$use_highlightjs = true; + +// highlight.js style +// for dark theme use 'ir-black' +$highlightjs_style = 'vs'; + +// Enable ace.js (https://ace.c9.io/) on view's page +$edit_files = true; + +// Default timezone for date() and time() +// Doc - http://php.net/manual/en/timezones.php +$default_timezone = 'Etc/UTC'; // UTC + +// Root path for file manager +// use absolute path of directory i.e: '/var/www/folder' or $_SERVER['DOCUMENT_ROOT'].'/folder' +//$root_path = ''; // +$root_path = $_SERVER['DOCUMENT_ROOT'].'/nas';//'/'; // + +// Root url for links in file manager.Relative to $http_host. Variants: '', 'path/to/subfolder' +// Will not working if $root_path will be outside of server document root +$root_url = ''; + +// Server hostname. Can set manually if wrong +$http_host = $_SERVER['HTTP_HOST']; + +// user specific directories +// array('Username' => 'Directory path', 'Username2' => 'Directory path', ...) +$directories_users = +array( + 'admin' => '/', + 'user0' => '/mnt/mmcblk2p4', + 'user1' => '/mnt/mmcblk2p4/user1', + 'user2' => '/mnt/mmcblk2p4/user1/user2', + 'user3' => '/mnt/mmcblk2p4/user1/user3', + 'user4' => '/mnt/mmcblk2p4/user1/user4', + 'user5' => '/mnt/mmcblk2p4/user1/user5' +); // array(); + +// input encoding for iconv +$iconv_input_encoding = 'UTF-8'; + +// date() format for file modification date +// Doc - https://www.php.net/manual/en/datetime.format.php +$datetime_format = 'd.m.y H:i:s'; + +// Allowed file extensions for create and rename files +// e.g. 'txt,html,css,js' +$allowed_file_extensions = ''; + +// Allowed file extensions for upload files +// e.g. 'gif,png,jpg,html,txt' +$allowed_upload_extensions = ''; + +// Favicon path. This can be either a full url to an .PNG image, or a path based on the document root. +// full path, e.g http://example.com/favicon.png +// local path, e.g images/icons/favicon.png +$favicon_path = '/nas/favicon.ico'; + +// Files and folders to excluded from listing +// e.g. array('myfile.html', 'personal-folder', '*.php', ...) +$exclude_items = array(''); + +// Online office Docs Viewer +// Availabe rules are 'google', 'microsoft' or false +// google => View documents using Google Docs Viewer +// microsoft => View documents using Microsoft Web Apps Viewer +// false => disable online doc viewer +$online_viewer = 'google'; + +// Sticky Nav bar +// true => enable sticky header +// false => disable sticky header +$sticky_navbar = true; + +// Path display mode when viewing file information +// 'full' => show full path +// 'relative' => show path relative to root_path +// 'host' => show path on the host +$path_display_mode = 'full'; + +// max upload file size +$max_upload_size_bytes = 5000; + +// Possible rules are 'OFF', 'AND' or 'OR' +// OFF => Don't check connection IP, defaults to OFF +// AND => Connection must be on the whitelist, and not on the blacklist +// OR => Connection must be on the whitelist, or not on the blacklist +$ip_ruleset = 'OFF'; + +// Should users be notified of their block? +$ip_silent = true; + +// IP-addresses, both ipv4 and ipv6 +$ip_whitelist = array( + '127.0.0.1', // local ipv4 + '::1' // local ipv6 +); + +// IP-addresses, both ipv4 and ipv6 +$ip_blacklist = array( + '0.0.0.0', // non-routable meta ipv4 + '::' // non-routable meta ipv6 +); + +// **新增:是否信任反向代理的 IP 头 (例如 Cloudflare 或 Nginx)** +// false (默认/最安全):只使用 REMOTE_ADDR,防止 IP 伪造。 +// true (使用代理时):允许读取 HTTP_X_FORWARDED_FOR 等头,获取真实客户端 IP。 +$trust_proxy = false; + +?> \ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b38c98a6710762dc8e3600b803ea15ebc4ce31e7 GIT binary patch literal 11851 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 literal 0 HcmV?d00001