Pull to refresh

Домашний файлообменник на Perl

Reading time2 min
Views2K
История, собственно говоря, начинается не far far away, а совсем недавно.
У моих друзей на работе закрыт доступ на все, что только можно, особенно на половину сайтов и FTP. Этот нелицеприятный факт не позволяет быстро, удобно и эффективно обмениваться нам файлами, в результате чего все отправлялось по почте. А задача в данном случае предельно проста — «выложить» в общий доступ какие-нибудь программки, документы или фотки.
Дома имеется в наличии относительно старенький ноутбук HP NX6125 и канал 10 Мб/с, что, в принципе, достаточно быстро для того, чтобы сделать из этого бекап- и файл-сервер.
Процесс установки Debian и настройки всего описывать я не буду, так как хабралюди не раз писали по этому поводу отличные статьи. А расскажу лучше о том, как я решил непосредственно саму проблему загрузки файлов.
Как я уже говорил выше, проблема состоит в том, что у 2/3 нашего коллектива доступен только 80-й порт, т.е. HTTP. Соответственно, самый простой и православный способ загрузки через FTP отпадает по причинам его несовместимости с жизнью. Оставалось только воспользоваться уже готовым файловым менеджером, либо написать оный самостоятельно.
В результате просмотра десятка-другого проектов я решил все-таки написать что-то свое, поскольку в своем коде разбираться куда проще, а полностью свободных проектов как бы почти и не нашлось.

Перед написанием были поставлены следующие задачи:

— сделать все шустро и технологично, вовсю использовать Ajax/XML/Javascript и прочий вебдваноль;
— простота не в ущерб функциональности;
— кроссбразуерность и кроссплатформенность (да, чтобы это можно запустить на форточках, солярке и вообще).

Проект решил писать на Perl'е, так как он рулит и весьма бодро для этой задачи подходит. И вот что получилось в итоге:

image

Зверь был весьма не оригинально обозван Home File Sharing и зарелизен под GPL (исходники можно взять здесь).

Что он умеет:
— загружать файлы, в том числе и параллельно (можно открыть несколько окошек), отображаются прогресс-бары;
— копировать/удалять/перемещать/переименовывать файлы и папки;
— создавать папки.

Чего он будет уметь, когда у меня дойдут руки:
— Drag and Drop;
— архивы (распаковка ZIP на сервере, может, и упаковка).

Протестировано на платформе Debian (где это чудо сейчас и живет) и Windows XP (где оно просто тестировалось); замечательно работает из Firefox, Opera, Safari, IE7 (в шестерке не тестировал). Для работы требуется только Perl и веб-сервер, никакие базы данных не нужны.

Да, и конечно же, демку можно увидеть здесь, но делать с файлами в демке нельзя ничего. Так только, полазать, интерфейс посмотреть, кнопочки потыкать.
Tags:
Hubs:
Total votes 9: ↑8 and ↓1+7
Comments4

Articles