Система публикации файлов
Требуется разработать систему публикации файлов, которая позволяла бы:
1. Загружать бинарные файлы (архивы, изображения) с настраиваевым администратором глобальным ограничением размера.
2. Авторизировать загруженные файлы для публикации.
3. Ограничивать доступ с загружаемым файлам.
Система используется для взаимодействия с клиентами компании.
Более подробно о функционале.
1. Форма загрузки файлов.
Позволяет загрузить файл не превышающий глобально установленный лимит на размер.
Содержит тривиальную систему анти-робот: картинка с 6-ти значным числом и поле для ручного потверждения числа пользователем.
Позволяет указать пароль на скачивание файла.
Обязательно требует указать e-mail для получения уведомлений.
Есть возможность оставить комментарий к загружаемому файлу.
Также есть возможность установки периода хранения файла в днях (максимальное число дней хранения файла указывается глобально администратором).
2. Авторизация файла.
По отправке пользователем файла, администратор системы получает уведомление, в котором содержится ссылка на страницу авторизации файла, на которой администратор имеет возможность скачать авторизируемый файл для изучения, затем, собственно, авторизировать к публикации файл, либо отказать в публикации с комментарием по причине отказа.
В случае авторизации администратором файла, пользователь получает уведомление, в котором содержится ссылка на страницу для скачивания файла.
Если администратор отказал в авторизации, то пользователь получает уведомление, содержащее комментарий по причине отказа.
3. Скачивание файла.
При открытии страницы скачивания файла по уникальному URL (в части пути содержится строка идентификации, например результат работы SHA1, сгенерированная случайным образом), пользователь видит имя файла, комментарий к нему, дату окончания хранения файла.
При клике на файл, начинается его загрузка.
Если при загрузки был указан пароль, система предложит ввести его при клике на файл. После 10 неудачных попыток, файл блокируется и администратору системы высылается уведомление о данном событии.
Файл также автоматически блокируется по истечении срока хранения.
Подробно об интерфейсе.
1. Администраторский интерфейс.
Должен позволять просматривать в виде списка все файлы в системе на данный момент.
Файлы ожидающие авторизации, прошедшие авторизацию и заблокированные файлы показываются в разных списках.
В списке файлов ожидающих авторизацию администратору доступны действия: просмотр, авторизация, отказ авторизации, удаление (без уведомления ползователя).
В списке файлов прошедших авторизацию администратору доступны действия: просмотр, удаление (с уведомлением пользователя), удаление (без уведомления пользователя), блокировка файла (чтобы делать файл временно недоступным для скачивания).
В списке заблокированных файлов администратору доступны действия: просмотр, удаление (с уведомлением пользователя), удаление (без уведомления пользователя), разблокировка файла (с занесением файла в список авторизированных файлов доступных для скачивания).
Во всех списках есть поля: дата загрузки файла, количество скачиваний (в том числе администратором), срок хранения (дата окончания).
2. Пользовательский интерфейс.
Пользователю доступны только два вида страниц: загрузка и скачивание файлов.
Страница загрузки файлов представляет собой форму, которая доступна по постоянному адресу.
Страницы скачивания файлов в своем пути имеет уникальную последовательность, практически исключающую возможность перебора и случайного попадания на страницу скачивания.
Если файл заблокирован, то на странице скачивания файла показывается соответствующее сообщение.
Настраиваемые через конфигурационный файл параметры:
1. Лимит размера закачиваемых файлов
2. E-mail адрес администратора системы
3. Максимальное кол-во дней хранения файлов
Технические аспекты:
1. Язык разработки: PHP
2. Использование БД: MySQL
3. ОС сервера: FreeBSD
4. ПО сервера: Apache 2