Category: история

Category was added automatically. Read all entries about "история".

Морда

О BitTorrent, BitComet, Azureus, DHT и private flag. А так же о капусте и королях.

Сижу я значит, лечусь, докашливаю.
От безделья мучаюсь.

Решил посмотреть, что такое, этот самый BitTorrent.
Посмотрел. Прочитал спецификации. Неплохой способ массовой, распределённой передачи информации.
Есть сервер для быстрого поиска источников фрагментов. Есть распределённая сеть - DHT. Призвана снизить нагрузку на сервер и обеспечит функционирование сети в случае отказа/недоступности/перегрузки сервера.

Но оказалось страсти нешуточные кипят! Куча одержимых "синдромом администризЬма", т.е. маниакальным желанием "порулить" - т.е. поиграть в квоты и лимиты пытаются установить собственные правила. Запретить прямой обмен между клиентами, дабы высчитывать, кому, сколько МОЖНО БРАТЬ.


На самом деле, нет объективных причин блокировать децентрализованный обмен. Ибо те, кто распространяет собственные продукты через BitTorrent, заинтересованы в снижении нагрузки на сервер.

А пираты... Ну, как заметил мой единомышленник - "Вор у вора дубинку украл!"
Мне эти бытторенты нафиг не нужны, но "виртуалы", играющие в "повелителей" никогда не нравились. Автору BitComet-а - тоже, судя по всему.
Больные "повелители" пытаются блокировать BitComet.

Посему покажу простой пример, как чихать на "повелителей" с высокой колокольни. Ибо всех клиентов они "забанить" не смогут.

Берём исходные тексты Azureus.

И исправляем.
В файле
org\gudy\azureus2\pluginsimpl\local\torrent\torrentimpl.java
говорим, что децентрализованное резервирование нужно всегда, а privacy flag не установлен никогда.

На языке Java это звучит так:
 меняем  

    isDecentralisedBackupRequested()
    {
        return( TorrentUtils.isDHTBackupRequested( torrent ));
    }
    public boolean
    isPrivate()
    {
        return( TorrentUtils.getPrivate( torrent ));
    }
на
    isDecentralisedBackupRequested()
    {
        eturn( true );
    }
    public boolean
    isPrivate()
    {
        return( false );
    }
 

А так же, в случае если DHT нет в списке разрешенных для торрента протоколов, в
com\aelitis\azureus\plugins\tracker\dht\dhttrackerplugin.java
меняем
 if ( torrent.isDecentralisedBackupEnabled()){
    String[]    sources = download.getListAttribute( ta_peer_sources );
    boolean    ok = false;
    for (int i=0;i<sources.length;i++){
        if ( sources[i].equalsIgnoreCase( "DHT")){
            ok    = true;
            break;
            }
        }
на
 if ( torrent.isDecentralisedBackupEnabled()){
    String[]    sources = download.getListAttribute( ta_peer_sources );
    boolean    ok = true;
    for (int i=0; i < sources.length;i++){
        if ( sources[i].equalsIgnoreCase( "DHT")){
            ok    = true;
            break;
            }
        }
--------------------------------------
Для сборки нужен JDK, желательна IDE Eclipse и дополнительные библиотеки на Яве (найдёте гуглем)
apple-extensions.jar
commons-cli.jar
junit.jar
log4j.jar
swt.jar (из Windows-поставки SWT)
swt_osx.jar (переименованный файл из макинтошной поставки)

1. Создаём каталог build\libs, кладём туда все указанные jar-ы.
2. Открываем в Eclipse build.xml, правой кнопочкой нажимаем на "jar", выбираем "ant build ..."
3. Указываем параметр VM для сборки "-Xmx512m" (файлов много, могёт и не влезть в 128 по умолчанию)
4. Если всё корректно, то секунд через 30 в каталоге "distr" появляется "azureus2.jar"
Копируем его в каталог, где живёт Azureus (что-то вроде "C:\Program Files (x86)\Azureus")
5. Пользуемся.