Автор Тема: организация системы файлового сервера. как думаете?  (Прочитано 7686 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн borkey

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Здравствуйте. Есть у меня задачка - организовать perl сервис по обслуживанию файлового сервера с должной защитой... так вот, хочу попробовать следующую схему...

1. Положить все файлы на сервер в директорию с названием XXX.

2. Все имена файлов + размер описание и и.д. хранить в MySQL таблице.

3. Завести еще одну таблицу, где будут храниться временные ссылки на файлы. Т.е. пользователь кликая "download file" получает некоторый id, и может скачать файл при помощи, скажем, скрипта по этому id, например
get.pl?id=abracadabra.

4. Каждый час, к примеру, будет запускаться скрипт, который будет отслеживать временные ссылки, т.е. те, у которых срок действия истек - попросту удалять.

5. Каждые 2 дня, к примеру, менять имя директории с файлами.


вооот... хочется посоветоваться с профи, так как сам таковым не являюсь.... адекватный ли этот алгоритм? Может кто занимался подобными вещами, подскажите что-нить, может избегу тривиальных ошибок?

Спасибо.

Оффлайн xames

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 62
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
хм

а не проще ли выдавать скрпит через прикрепленный файл ?
так можно файлы хранить в директории которая не доступна через http но доступна скрипту. Выдаём файл по ID взятому из таблицы.

Оффлайн borkey

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
xames, что вы имеете в виду под "выдавать скрпит через прикрепленный файл" ?!

Оффлайн xames

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 62
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
use CGI::Carp qw(fatalsToBrowser);

use CGI;
$query = new CGI;
$fn=$query->param(\'file\');



$filepath="какой то путь до файла";

$bytes = -s "$filepath";
open(F,"$filepath");
binmode F;                    
print "Content-length: $bytes\\n";
print "Content-Disposition: attachment; filename=имя_файла\\n";
print "Content-type: application/octet-stream\\n\\n";
binmode STDOUT;            
print ;
close(F);

примерно так.

Оффлайн borkey

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
мм...это понятно, спасибо :) а как запретить доступ к директории через http? просто запаролить при помощи htaccess? или каким-нибудь более простым способом?

Оффлайн xames

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 62
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
а установи запрет на скачку, можно вообще на каталок выще чем http  разместить )))

Оффлайн cr4ck3r

  • Фанат Perl
  • Постоялец
  • ***
  • Сообщений: 146
  • +0/-0
  • 2
    • Просмотр профиля
    • http://perlmonks.org.ru
помимо этого не забудьтье про лимит скорости (для скачивания), поддержку докачки и т.п - короче вы хотите написать антилич...
это хорошее дело... если он будет бесплатным и качественно написанным.
Ворота в perl - perlmonks.org.ru

Оффлайн borkey

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
cr4ck3r Это будет не открытый ресурс..... на счет лимита скорости надо подумать, на сколько это необходимо, а вот возможность докачки уже реализована.... только не знаю, как определять событие что файл закачан полностью. Разумно считать по логам, но при закачке в несколько потоков не получается 100% точности.... вот думаю, как бы это сделать...

Оффлайн cr4ck3r

  • Фанат Perl
  • Постоялец
  • ***
  • Сообщений: 146
  • +0/-0
  • 2
    • Просмотр профиля
    • http://perlmonks.org.ru
у меня есть недописанный скрипт для скачки (он рабочий, но требует доработки)... если найду - скину сюда - там как раз насчет лимита скорости и т.п есть реализация.
Ворота в perl - perlmonks.org.ru

Оффлайн borkey

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
было бы интересно...

Оффлайн cr4ck3r

  • Фанат Perl
  • Постоялец
  • ***
  • Сообщений: 146
  • +0/-0
  • 2
    • Просмотр профиля
    • http://perlmonks.org.ru
антилич оказался довольно большой (несколько файлов), могу на мыло скинуть.
Ворота в perl - perlmonks.org.ru

Оффлайн borkey

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://

Оффлайн KiLLjoY aka SerZH

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 45
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
serzh@med-index.ru
если можно мне тоже скиньте было бы очень интересно изучить!

Оффлайн cr4ck3r

  • Фанат Perl
  • Постоялец
  • ***
  • Сообщений: 146
  • +0/-0
  • 2
    • Просмотр профиля
    • http://perlmonks.org.ru
сори был в отпуску к компу не подходил.
мыльники записал, сегодня вечером вышлю.
антилич писался не мной, а знакомым программером для моего проекта. работает с mysql (в ней хранит ссылки на файлы, кол-во закачек, ограничение на скорость скачки и т.п).
в архиве будут дамп бд (для примера) и несколько файлов.

add//
отправил...
« Последнее редактирование: 05 Июля 2006, 20:48:16 от cr4ck3r »
Ворота в perl - perlmonks.org.ru

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28