Консольный текстовый клиент для DirectConnect (DC), популярной пиринговой (P2P, peer-to-peer) файлообменной системы.
Для управления microdc2 использует командную строку:
Инсталляция в FlyRouter (временно !!!):
ipkg install -d usb libreadline libncurses libpthread libxml2 cd /tmp wget http://flyrouter.net/downloads/software/builder/microdc2_0.15.6-1_mipsel.ipk ipkg install -d usb ./microdc2_0.15.6-1_mipsel.ipk
Дополнительная информация:
Удалось-таки победить microdc2 на предмет понимания "Великого и Могучего" русского языка. Проковырялся несколько дней, перекомпилировал и т.д., а оказалось все, как всегда, чрезвычайно просто! Нужно всего лишь прописать в post-boot (ну или в скрипте, из которого запускается microdc2) ОДНУ строчку: export LANG="ru_RU.KOI8-R" ну или же export LANG="ru_RU.UTF-8" Тут уж кому как нравится. Просто при втором варианте вам в PuTTY в Window->Translation нужно будет выбрать/прописать вручную "UTF-8" без кавычек. Зато имена русских файлов на разделе ext3 будут читаться нормально. Т.е. microdc2 просто не мог определить какой язык используется в системе. Далее опишу как лично я немного упростил использование microdc2. 1) кладу файлы microdc2 и tthsum в папку /usr/bin . Ну это понятно. 2) поскольку microdc2 имеет смысл запускать только из-под sreen, то его нужно установить, если он не установлен: ipkg install screen 3) для удобной работы с microdc2 в окружении screen создаю два скрипта. Первый с именем dcs , он будет запускать microdc2 в screen с прицепленным конфигом (о нем чуть позже): #!/bin/sh screen -dmS microdc /usr/bin/microdc2 -c /etc/.microdc2/config Второй с именем dc будет "вытаскивать" консоль screen #!/bin/sh screen -x microdc ... и кладу оба скрипта опять же в /usr/bin . Ну и не забудьте сделать оба файла исполняемыми. Теперь для ручного запуска достаточно просто набрать в консоли dcs Для автоматического запуска просто нужно прописать в post-mount /usr/bin/dcs Чтобы вызвать окно с работающим microdc2, достаточно просто набрать dc в консоли. Чтобы скрыть окно не прерывая работы программы, нужно последовательно нажать Ctrl-A и Ctrl-D. 4) Очень важно. Создаем конфигурационный файл для microdc2 . создаем папку /etc/.microdc2 (с точкой в начале. Просто где-то в поисках проблемы с русским языком я вычитал, что для того, чтобы конфиг "цеплялся", он должен лежать именно в такой папке. Скорее всего это неверно, но менять мне уже лень :) ) В этой папке создаем файл config примерно вот такого содержания: set filesystem_charset UTF-8 set hub_charset cp1251 set log_charset koi8-r set auto_reconnect on set filelist_refresh_interval 600 set display connections download joinpart publicchat searchresults upload set log connections download joinpart publicchat searchresults upload share /tmp/harddisk/ftp_pub/Download set downloaddir /tmp/harddisk/downloads set listingdir /tmp/harddisk/microdc set nick MyNick set description "Me just BOT. Don't talk with me!" set email me@mydomen.ru set logfile /usr/var/log/microdc.log set slots 5 set speed LAN(T3) set active off set listenport 2477 connect 10.10.10.10 В принципе здесь все прозрачно и понятно, но все-таки попробуем разобраться. 1) filesystem_charset - кодовая страница файловой системы. Чрезвычайно важный параметр, если вы предполагаете скачивать и раздавать файлы (или папки) с русскими именами. Поскольку у меня шары расположеным на разделе ext3, то у меня выставлено значение UTF-8. Если у вас ext2 или FAT, то наверное нужно будет выставлять koi8-r или cp866 соответственно. Попробуйте разобраться сами. 2) hub_charset - кодовая страница, используемая на конкретном хабе. Вероятнее всего на русских хабах будет cp1251. Теоретически возможно и UTF-8, но это врядли. Тоже чрезвычайно важный параметр, поскольку отвечает не только за правильное отображение и ввод языка в чате, но и за запрос/отдачу файлов с русскими именами. 3) log_charset - кодовая страница лога. Если вы в post-boot прописали ru_RU.KOI8-R, то выставляем koi8-r, чтобы мы могли читать лог в mc, если же выбрали ru_RU.UTF-8, то соответственно выставляем UTF-8. 4) auto_reconnect - автоматическое переподсоединение к хабу в случае разрыва коннекта. Ну здесь вес понятно - либо on, либо off. Переподсоединение происходит с периодичностью 10 сек. 5) filelist_refresh_interval (в секундах) - периодичность, с которой программа будет проверять папку с шарами на предмет изменения содержимого и, если таковое произойдет, именять файл-лист и хешировать новые файлы 6) display - что именно будет отображаться на дисплее. Понятно из названий. Если предполагается использовать программу чисто в виде робота без использования всяких чатов и т.п., то можно удалить, напривер, joinpart и publicchat. Если хочется заняться отладкой программы, то можно добавить debug 7) log - что будет записываться в лог. Аналогично предыдущему пункту. 8) share (обратите внимание, что для задания этой переменной не используется команда set) - папка, где у вас лежат файлы для раздачи. 9) downloaddir - папка, куда программа будет скачивать файлы 10) nick - ну это понятно. Ваш ник на хабе. 11) description - описание. Можно и не задавать эту переменную. 12) email - все понятно и так. 13) logfile - путь к файлу лога. Советую прописать. 14) slots - количество слотов на отдачу. Советую не слишком усердствовать. Ну ежели только у кого 128 метров памяти.... Количество слотов на закачку не лимитировано и не устанавливается конфигом. 15) speed - скорость. Честно говоря сильно сомневаюсь, что данный параметр в этой программе на что-то влияет, но... Доступные варианты: "28.8Kbps", "33.6Kbps", "56Kbps", "Cable", "DSL", "ISDN", "LAN(T1)", "LAN(T3)", "Modem", "Satellite" - все, естественно, без кавычек. 16) active - видимо устанавливает режим соединения - "активный/пассивный", точно пока не разобрался. Ну это у кого проблемы с файрволом, серым адресом, провайдером и т.п. on или off (соответственно активный или пассивный). У меня сложилось ощущение, что в режиме off работает менее глючно. Разбирайтесь сами. 17) listenport - точно не уверен, но видимо порт, на котором будут ожидаться соединения в пассивном режиме. Может я не неправ. Пишете что-нть от балды, но желательно выше 2000, чтобы не попасть на зарезервированные под стандартные сервисы) 18) connect - соединяет с хабом с указанным адресом. 19) password - ваш пароль, если он требуется на данном конкретном хабе. Если не нужен, то и не прописываем. 20) listingdir - папка, где будут храниться файллисты. Вроде все. Обращаю ваше внимание, что любой из этих параметров можно менять "на лету", не перегружая программу. Просто вводите в консоли команды в том виде, в котором они прописаны в конфиге. Чтобы просто просмотреть установленные параметры, достаточно набрать в консоли set Чтобы узнать, какие комманды можно вводить, наберите в консоли help. Но вкратце принцип таков: who - выводит список пользователей на хабе browse User1 - запрашивает файл-лист у пользователя User1. Когда файл-лист скачается, то строка из "microdc2:(User1)>" поменяется на строку "microdc2:User1>" и уже можно пролистывать файлы и папки ls - показывает содержимое текущей папки cd dir1 - переход в папку dir1. Еще пример - cd dir1/dir2/dir3. Если путь содержит пробелы, то его нужно брать в кавычки. Например cd "dir 1/dir 2/dir 3" get - задание на скачивание папки или файла. Например - get dir1/dir2 или get dir1/dir2/file1.ext Есои путь/имя файла содержат пробелы, опять же берем в кавычки - get "dir 1/dir 2/my file.ext" Если просто набрать browse, то выйдите из режима "пролистывания" текущего пользователя. say Всем привет!!! - выдаст соответствующее сообщение в чате. transfers - покажет текущее состояние закачек. Ну и т.д., разбирайтесь сами. microdc2 не умеет делать поиск по TTH и скачивать один файл сегментами с разных источников. Не понимает magnetto-ссылки. Не умеет соединяться одновременно с разными хабами. Но последнее, впрочем можно решить запуском одновременно в нескольких screen-ах с разными конфигами. Имеются проблемы с докачкой в случае разрыва связи или ухода/прихода юзверя, с которого качается. Но я тут сейчас пытаюсь списаться с человеком, который, по его словам, уже сделал с десяток патчей для microdc2. Посмотрим, может и удастся сделать нечто юзабельное ;)