Настройка Java-коннектора¶
Вся настройка хранится в объекте типа ElFinderConfig. Существует два типа конфигурации: общая и пользовательская. Обе конфигурации настраиваются с помощью объекта ElFinderConfig. При выполнении любой операции сервлет ищет в сессии пользователя аттрибут ElFinderServlet.CONFIG_SESSION_ATTRIBUTE и пытается преобразовать его в объект типа ElFinderConfig. Если объект был найден и преобразование удалось используется данный объект (пользовательская конфигурация), если нет - общая. Таким образом возможно конфигурировать менеджер в зависимости от привилегий пользователя который пытается произвести операцию.
Зависимости¶
Для корректной работы коннектора необходимо включить в classpath следующие библиотеки:Кроме того приложению потребуется доступ к классам и объектам J2EE.
Общая настройка¶
Есть два варианта произвести общую настройку менеджера:
- Поместив объект класса ElFinderConfig в аттрибуты ServletContext с именем ElFinderConfig.CONFIG_CONTEXT_ATTRIBUTE до того как будет инициализирован сервлет ElFinderServlet.
- Поместив кофигурационную информацию с определенными этикетками в файл 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);