Настройка Java-коннектора

Вся настройка хранится в объекте типа ElFinderConfig. Существует два типа конфигурации: общая и пользовательская. Обе конфигурации настраиваются с помощью объекта ElFinderConfig. При выполнении любой операции сервлет ищет в сессии пользователя аттрибут ElFinderServlet.CONFIG_SESSION_ATTRIBUTE и пытается преобразовать его в объект типа ElFinderConfig. Если объект был найден и преобразование удалось используется данный объект (пользовательская конфигурация), если нет - общая. Таким образом возможно конфигурировать менеджер в зависимости от привилегий пользователя который пытается произвести операцию.

Зависимости

Для корректной работы коннектора необходимо включить в classpath следующие библиотеки:

Кроме того приложению потребуется доступ к классам и объектам J2EE.

Общая настройка

Есть два варианта произвести общую настройку менеджера:

  1. Поместив объект класса ElFinderConfig в аттрибуты ServletContext с именем ElFinderConfig.CONFIG_CONTEXT_ATTRIBUTE до того как будет инициализирован сервлет ElFinderServlet.
  2. Поместив кофигурационную информацию с определенными этикетками в файл web.xml как параметры контекста.

Сначал сервлет попытается найти конфигурацию в объекте контекста, если конфигурация не будет найдена будут использавны параметры контекста

Опции

Параметр Тип Описание Контекст
Root String Путь к корневой директории. Обязательный параметр el-finder-root
URL String URL корневой директории. Обязательный параметр el-finder-url
RootAlias String Алиас для корневой директории el-finder-root-alias
Disabled String[] Список отключенных команд el-finder-disabled
DotFiles boolean Показывать файлы, начинающиеся с точки. По умолчанию: true el-finder-dot-files
DirSize Boolean Подсчитывать размер директорий el-finder-dir-size
FileMode String mode для новых файлов el-finder-file-mode
DirMode String mode для новых директорий el-finder-dir-mode
MimeDetect String Способ определения mime-типов файлов el-finder-mime-detect
UploadAllow String[] Список разрешенных типов файлов для загрузки. Можно задать точный mimetype (image/jpeg) или группу типов (application) el-finder-upload-allow
UploadDeny String[] Список запрещенных типов файлов для загрузки el-finder-upload-deny
UploadOrder String Порядок применения ограничивающих загрузку правил. allow,deny - только то, что разрешено, кроме того, что запрещено (AND). deny,allow то, что не запрещено или разрешено (OR) el-finder-upload-order
ImgLib String Библиотека для создания превьюшек (только php коннектор. Варианты: imagick, mogrify, gd). Если не указан, пытается определить доступную
TmbDir String Директорий для превьюшек. Если не заданна - превьюшки не будут создаваться el-finder-tmb-dir
TmbCleanProb int Частота очистки директории с превьюшками. Варианты - от 0 до 200. 0 - не очищать, 200 - при каждом запросе инициализации файлового менеджера
TmbAtOnce int Сколько миниатюрок создавать в одном фоновом запросе. По умолчанию: 5
TmbSize int Размер миниатюрок в пикселях
FileURL boolean Отдавать URL файлов клиенту. По умолчанию: true el-finder-file-url
DateFormat String Формат даты изменения файлов. По умолчанию: j M Y H:i el-finder-date-format
Defaults ElFinderPerms Права доступа к файлам/директориям по умолчанию. Значение по умолчанию: {"rm":true,"write":true,"read":true} el-finder-defaults
Perms ElFinderPerms[] Права доступа к файлам/директориям. Подробнее смотри соответствующий раздел документации el-finder-perms
ArchiveMimes String[] Список типов архивов, разрешенных для создания. Если не задан, будут разрешены все доступные типы el-finder-archive-mimes
Archivers String[] Информация об архиваторах. Если не задана, коннектор попытается найти и использовать все доступные архиваторы el-finder-archivers
Debug boolean Отсылать отладочную информацию клиенту el-finder-debug

Права доступа

Для определения прав доступа к ресурсам используется класс ElFinderDefaultACL, он же в свою очередь конфигурируется параметрами Default и Perms. У разработчиков есть возможность написать свой собственный менеджер прав доступа реализовав интерфейс ElFinderACL (см. раздел документации).

Для определения параметров Defaults и Perms с помощью параметров контекста используется JSON нотация.

Например:

 1   <context-param>
 2       <param-name>el-finder-defaults</param-name>
 3       <param-value>{"rm":true,"write":true,"read":true}</param-value>
 4   </context-param>
 5 
 6   <context-param>
 7       <param-name>el-finder-perms</param-name>
 8       <param-value>
 9           {
10               "^.*/jason$":{"rm":false,"write":false,"read":true}, <!-- разрешаем читать директорию jason -->
11               "^.*/jason\..*$":{"rm":false,"write":false,"read":false}, <!-- запрещаем читать файлы типа jason.* -->
12               "regex3":{"rm":true,"write":false,"read":false},
13               "regex4":{"rm":false,"write":false,"read":false}
14           }
15       </param-value>
16   </context-param>

Как видно из примера, менеджер доступа пробегает по коллекции Perms и при нахождении первого совпадения выдает результат (то есть при нахождении первого совпадения проверка прекращается). Стоит заметить следующее:

  • Конечная сортировка не обязательно будет такой как указано в конфигурации.
  • Очень рекомедуем использовать символы начала и конца строки в регулярных выражениях из-за особенностей работы метода String.matches(). Более подродную информацию о работе этого метода можно найти тут.
  • На предмет совпадения с регулярным выражением проверяется путь к файлу относительно корневой директории.

ElFinderACL

 1     public boolean canOpen(String file, ElFinderConfig config, Object user);
 2 
 3     public boolean canMkdir(String dir, ElFinderConfig config, Object user);
 4 
 5     public boolean canMkfile(String file, ElFinderConfig config, Object user);
 6 
 7     public boolean canRename(String src, String dst, ElFinderConfig config, Object user);
 8 
 9     public boolean canUpload(String file, ElFinderConfig config, Object user);
10 
11     public boolean canPaste(String src, String dst, ElFinderConfig config, Object user);
12 
13     public boolean canRm(String file, ElFinderConfig config, Object user);
14 
15     public boolean canDuplicate(String file, ElFinderConfig config, Object user);
16 
17     public boolean canRead(String file, ElFinderConfig config, Object user);
18 
19     public boolean canEdit(String file, ElFinderConfig config, Object user);
20 
21     public boolean canExtract(String file, ElFinderConfig config, Object user);
22 
23     public boolean canArchive(String file, ElFinderConfig config, Object user);