FtpSpider

From JaWiki (Jabber/XMPP wiki)
Jump to: navigation, search
FtpSpider
Информация
Сайт: запись в блоге
Язык: Python
Библиотека: xmpppy
Лицензия: GPL
Характеристики
Мультиязычность: да
Расширяемость: да
Discovery: нет
Ad-hoc команды: нет

Бот является ответвлением (форком) Нейтрона. Основное предназначение — следить за деревом файлов на определенном FTP-сервере и сообщать пользователями о тех изменениях, которые их интересуют.

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

Алгоритм

Бот работает по следующему алгоритму: периодически производится сканирование FTP-сервера — создается снимок дерева файлов. Далее определяется разница по сравнению с предыдущим снимком. Из этой разницы для каждого пользователя отдельно выбираются интересующие его изменения и полученный отчет отправляется на его JID.

Сам бот состоит из двух частей:

  • Первая часть является постоянно запущенным ботом, созданным на основе бота neutron. Он принимает команды, общается с пользователями, сохраняет настройки и рассылает отчеты.
  • Вторая часть — многопоточный FTP-сканер. Он создает снимок, высчитывает разницу и статистику и полученные данные отправляет боту.


Команды

Работа со списками

  • list — просмотреть списки. (Include — то, что интересно. Exclude — то что надо пропустить)
  • add — добавить полный URL или его часть в список Include
  • exclude — добавить полный URL или его часть в список Exclude
  • del — удалить адрес. Можно указать сам URL или его номер из !list
  • clear (all, include, exclude) — очистить все или какой-то из фильтров отдельно.

Личные предпочтения

  • show — в каком виде высылать url:
    • unquoted — неэкранированный
    • quoted — экранированный (по-умолчанию)
    • full — полный (по-умолчанию)
    • path — только путь без сервера
  • mode — в каком виде вы предпочитаете получать информацию:
    • message — простое сообщение
    • chat — в чате (по-умолчанию)
    • headline — как новость (должен поддерживать клиент)
  • filter — тип информации:
    • add — то, что добавленно (по-умолчанию)
    • del — то, что удалено
    • all — и то и другое

Работа со статистикой

  • stats — показать статистику, собранную во время последнего обхода, и режим вашей подписки на неё
  • stats <param> — изменить режим подписки:
    • full — получать полную статистику, как её показывает !stats без параметров
    • brief — получать сокращенный вариант
    • none — не получать статистику (по-умолчанию)

Помощь

  • commands — список команд
  • help — справка с примерами

Остальное

  • quote — экранировать переданный адрес (один!)
  • unquote — разэкранировать переданные адреса (сколько угодно)
  • test — выслать пример сообщения и статистики для проверки настроек команд !mode, !filter, !show, !stats
  • unregister — удалить себя из базы и больше ничего не получать

FtpSpider и FtpInfo

Бот по сути является «серверной» реализацией известной программы FtpInfo, точнее не её полностью, а той части, которая показывает изменения на FTP. Принцип работы тот же самый, но данная серверная реализация имеет следующие плюсы и минусы по сравнению с клиентской:

Плюсы:

  • Не надо ждать пока дерево просканируется. Вообще не надо об этом заботится: как только данные появятся, вам придет письмо.
  • Меньше нагрузки на сервер (один сканер, а не много).

Минусы:

  • Меньше контроля и опций.
  • Нельзя запустить сканирование вручную когда хочется.

Кроме того, я не учитываю, что у программы FtpInfo есть другие возможности, которых пока нет у бота: поиск в просканированных файлах и т.п.

Смотри также

Ссылки