Tracker jest specyficznym serwerem centralnym dla sieci BitTorrent - przechowuje on informacje o sciagajacych oraz informacje o torrentach. Tutaj postaram się opisać jak założyć swój tracker. Istnieje kilka rodzajów trackerów. Najwcześniejszymi są trackery wykorzystujące ten sam język programowania co BitTorrent, czyli Python. Później ulepszony Pythonowy tracker, czyli BNBT (i jego zmodyfikowana wersja CBTT) oraz najbardziej “uniwersalne” trackery, czyli trackery PHP. Opiszę je wszystkie - oprócz CBTT Smile 1. Tracker pythonowy Pierwszy tracker, jaki w ogóle się pojawił, jednak muszę przyznać, że go nie polecam - zawiera on bardzo mało opcji konfiguracyjnych i jest także deczko trudniejszy od innych w instalacji, toteż nie polecam go zakładać. Do jego uruchomienia potrzebny jest Python Smile - wersję 2.3.4, najnowszą w trakcie pisania tego artykułu możemy pobrać w dwóch odmianach - Windowsowego instalatora oraz zrodel (tgz) 1a. Instalacja trackera pythonowego na Linuxie Jeśli na Linuxie nie mamy jeszcze zainstalowanego Pythona - to chyba oczywiste, że trzeba go zainstalować. Następnie ściągamy źródła jakiegoś pythonowego klienta, na przykład BitTornado, rozpakowywujemy i lokalizujemy plik bttrack.py , a następnie wydajemy polecenie : Kod: ./bttrack.py --port 6969 --dfile dstate Parametr “port” wyraża port, na którym będzie działał tracker, natomiast parametr “dfile” określa nazwę pliku, w którym będą zapisywane informacje o torrentach. No i to wszystko Smile Tracker powinien już działać na zdefiniowanym przez nas porcie. Po bardziej szczegółową informację o konfiguracji zapraszam niżej 1b. Instalacja trackera pythonowego na Windowsie Zdecydowanie tego nie polecam, jednak jeśli chcesz spróbować - kto ci będzie bronił? Smile Najpierw trzeba oczywiście pobrać Pythona - linki do niego podawałem wcześniej. Jeśli masz już Pythona zainstalowanego, czas pobrać źródła jakiegoś pythonowego klienta, np. BitTornado - rozpakowywujemy je gdzieś na dysk i teraz zaczyna się zabawa. Przejdź do katalogu z Pythonem i wydaj polecenie : Kod: python (twoja-sciezka-do-zrodel-BitTornado)\bttrack.py --port 6969 --dfile dstate Podane argumenty wystarczą aby tracker wystartował na porcie 6969. Jeśli interesuje ciebie szersza konfiguracja - zapraszam niżej. 1c. Konfiguracja trackera Pythonowego Dopisz obok tego --port i --dstate Wink TODO 2. BNBT BNBT jest świetnym zamiennikiem dla trackera Pythonowego - jest szybszy i oferuje wiele więcej dodatkowych funkcji. Jako że BNBT obsługuje kompresję gzip, jego instalacja nawet na Neostradzie może całkiem wypalić - i to nawet na Windowsie Smile BNBT ma to do siebie, że nie ma jeszcze jego stabilnej wersji - dostępne wersje to tylko bety, więc taki z tego wniosek że zawsze warto mieć najnowszą wersję. W trakcie pisania tego artykułu najnowszą wersją była BNBT Beta 8.0 Release 2 - możecie ją sobie ściągnąć tutaj - starszych wersji nie polecam ze względu na dużo dziur w bezpieczeństwie. 2a. Instalacja BNBT w Windowsie Jest bardzo prosta. Ściągnij plik, rozpakuj go i odpal BNBT.exe - i już. Tracker działa. Jeśli interesuje Ciebie zaawansowana konfiguracja - patrz niżej. 2b. Instalacja BNBT w BeOSach Wink Jest deczko trudniejsza niż ta w Windozie. Upewnij się, że masz zainstalowany program i bibliotekę zlib. Bez niej się nie obejdzie. Jak masz - rozpakuj plik zip ściągnięty ze strony BNBT i przejdź do katalogu “src” i tam powpisuj : Kod: make bnbt ./bnbt Tracker zacznie pracować. 2c. Konfiguracja BNBT Podczas pierwszego uruchomienia trackera jest tworzony plik bnbt.cfg i jest on kluczem do konfiguracji BNBT. Znający język angielski nie powinni mieć problemu z tym plikiem, gdyż jest on łatwy do zrozumienia, jednak podaję tutaj wszystkie możliwe parametry konfiguracyjne : Aha, możliwość się włącza wpisując 1, wyłącza 0 - to chyba logiczne Wink allowed_dir (brak domyślnego): katalog w którym będą składowane torrenty announce_interval (domyślnie 1800): ilość sekund które każdy klient powinien odczekać przed anonsowaniem się bind (brak domyślnego): adres IP na którym BNBT będzie działał - jeśli masz dynamiczne IP lub chcesz aby BNBT działał na wszystkich dostępnych z twojego komputera adresów, zostaw to pole puste bnbt_access_log_dir (brak domyślnego): katalog, gdzie BNBT umieszcza raporty z dostępu do niego bnbt_allow_comments (domyślnie 0): włączenie lub wyłączenie możliwości pisania komentarzy bnbt_allow_info_link (domyślnie 0): włączenie lub wyłączenie podawania linków informacyjnych do każdego torrenta bnbt_allow_scrape (domyślnie 1): włączenie lub wyłączenie możliwości “scrape” - czyli podawania informacji seeds/peers w postaci zrozumiałej dla np. TorrentSpy bnbt_allow_search (domyślnie 1): włączenie lub wyłączenie możliwości przeszukiwania torrentów na stronie głównej bnbt_allow_sort (domyślnie 1): włączenie lub wyłączenie możliwości sortowania torrentów na stronie głównej bnbt_allow_torrent_downloads (domyślnie 1): zezwala na ściąganie plików torrent z trackera bnbt_archive_dir (brak domyślnego): katalog archiwalny dla wyrzuconych torrentów bnbt_charset (domyślnie “iso-8859-1”): standard kodowania znaków używany przez BNBT (wpisz tutaj iso-8859-2) bnbt_comment_length (domyślnie 800): maksymalna długość komentarzy bnbt_comments_file (brak domyślnego): plik w którym będą składowane komentarze bnbt_compression_level (domyślnie 6): stopień kompresji, który będzie używał BNBT - wpisz 0 aby całkowicie wyłączyć kompresję, 1 aby włączyć najszybszą i najgorzą, 9 to najwolniejsza i najlepsza bnbt_count_unique_peers (domyślnie 1): włączenie lub wyłączenie liczenia unikatowych peers bnbt_debug (domyślnie 0): jeśli to włączysz, BNBT będzie informował o jego stanie w konsoli bnbt_delete_invalid (domyślnie 0): włączenie lub wyłączenie usuwania uszkodzonych/niepoprawnych torrentów bnbt_delete_own_torrents (domyślnie 1): włączenie lub wyłączenie możliwości kasowania własnych torrentów bnbt_dump_xml_file (brak domyślnego): plik, do którego BNBT ma eksportować dane w formacie XML bnbt_dump_xml_interval (domyślnie 600): ilość sekund, które BNBT ma odczekać pomiędzy każdym eksportem danych do XML bnbt_error_log_dir (brak domyślnego): katalog, w którym BNBT przechowuje raporty raportujące błędy bnbt_external_torrent_dir (brak domyślnego): katalog online, który jest mirrorem katalogu, w którym są przechowywane torrenty bnbt_file_dir (brak domyślnego): folder, do którego można się dostać poprzez wpisanie “/files”. Na przykład, jeśli (advanced users note that mime types are hardcoded - this is a local path). bnbt_file_expires (domyślnie 180): ilość minut po których dane w cache’u przeglądarki unieważniają się (tyczy się to plików pobieranych z /files) bnbt_flush_interval (domyślnie 100): ilość wiadomości raportowych które są zapisywane w pamięci zanim są zapisywane na dysk bnbt_force_announce_on_download (domyślnie 0): włączenie lub wyłączenie wymuszania adresu “announce” przy każdym ściąganym torrencie bnbt_force_announce_url (brak domyślnego): wymuszany adres “announce” bnbt_guest_access (domyślnie 67): zobacz punkt 2d. Użytkownicy BNBT bnbt_max_conns (domyślnie 64): maksymalna ilość jednoczesnych połączeń, które BNBT może otworzyć do innych użytkowników - domyślna ilość 64 powinna wystarczyć na trackery z ok. 2500 peers bnbt_max_peers_display (domyślnie 500): maksymalna ilość peersow wyświetlana na stronie głównej bnbt_max_recv_size (domyślnie 524288): tego nie wiem Very Happy ale jak jest ustawiona domyslna wartosc to tracker funkcjonuje dobrze - co oznacza ze nie trzeba tego zmieniac
bnbt_max_torrents (domyślnie 0): maksymalna ilość torrentów które mogą być przechowywane na trackerze bnbt_member_access (domyślnie 79): zobacz punkt 2d. Użytkownicy BNBT bnbt_name_length (domyślnie 32): maksymalna długość nazwy użytkownika bnbt_parse_on_upload (domyślnie 1): włączenie lub wyłączenie sprawdzania torrentów przy ich uploadzie bnbt_per_page (domyślnie 20): ilość torrentów wyświetlana na stronie głównej bnbt_realm (domyślnie “BNBT”): nie wiem co to jest, ale jak się logujesz to to sie wyswietla Wink jak masz juz utworzonych uzytkownikow to nie zmieniaj tego, inaczej nie beda sie oni mogli zalogowac bnbt_refresh_static_interval (domyślnie 10): ilość minut co które BNBT odświeża nagłówek i stopkę bnbt_robots_txt (brak domyślnego): plik robots.txt ktory jest przesylany kiedy następuje żądanie o plik /robots.txt bnbt_show_added (domyślnie 1): włączenie lub wyłączenie wyświetlania daty i czasu kiedy torrent został wrzucony bnbt_show_average_dl_rate (domyślnie 0): włączenie lub wyłączenie wyświetlania średniej prędkości ściągania bnbt_show_average_left (domyślnie 0): włączenie lub wyłączenie wyświetlania średniej ilości danych do ściągnięcia bnbt_show_average_ul_rate (domyślnie 0): włączenie lub wyłączenie wyświetlania średniej prędkości wysyłania bnbt_show_completed (domyślnie 0): włączenie lub wyłączenie wyświetlania ile razy torrent został ściągnięty bnbt_show_file_comment (domyślnie 1): pokazuje komentarz do torrenta (zawarty w torrencie) na stronie stats do torrenta bnbt_show_file_contents (domyślnie 0): pokazuje to, co zawiera torrent na stronie stats do torrenta bnbt_show_gen_time (domyślnie 1): pokazuj czas generowania strony bnbt_show_info_hash (domyślnie 0): włączenie lub wyłączenie pokazywania sum kontrolnych torrenta na stronie głównej bnbt_show_left_as_progress (domyślnie 1): pokazuj “pozostałe” zamiast “ściągnięte” bnbt_show_max_left (domyślnie 0): włączenie lub wyłączenie pokazywania maksymalnej pozostałej ilości do ściągnięcia bnbt_show_min_left (domyślnie 0): włączenie lub wyłączenie pokazywania minimalnej pozostałej ilości do ściągnięcia bnbt_show_num_files (domyślnie 1): włączenie lub wyłączenie pokazywania ilości torrentów (w torrencie) na stronie głównej bnbt_show_share_ratios (domyślnie 1): włączenie lub wyłączenie pokazywania “Share ratio” na stronie stats. bnbt_show_size (domyślnie 1): włączenie lub wyłączenie pokazywania rozmiaru torrenta na stronie głównej. bnbt_show_stats (domyślnie 1): włączenie lub wyłączenie strony stats bnbt_show_transferred (domyślnie 0): włączenie lub wyłączenie ilości przetransferowanych danych dla każdego torrenta bnbt_show_uploader (domyślnie 0): włączenie lub wyłączenie pokazywania użytkownika, który wysłał tego torrenta na tracker bnbt_static_footer (brak domyślnego): plik HTML z zawartością stopki bnbt_static_header (brak domyślnego): plik HTML z zawartością nagłówka bnbt_style_sheet (brak domyślnego): plik arkuszu stylów (to jest URL) bnbt_tag_file (domyślnie “tags.bnbt”): plik, w ktorym sa przechowywane tzw. tagi, uploaderzy itp. bnbt_upload_dir (brak domyślnego): katalog, w którym powinny znajdować się wrzucane na tracker torrenty (często jest taki sam jak allowed_dir) bnbt_users_file (domyślnie “users.bnbt”): plik który przechowuje nazwy użytkowników, hasła, rangi itp. bnbt_users_per_page (domyślnie 50): ilość użytkowników która jest wyświetlana na stronie users dfile = (domyślnie “dstate.bnbt”): plik który przechowuje informacje o torrentach i ściągających downloader_timeout_interval (domyślnie 2700): ilość sekund po której peer zostaje wywalony z trackera image_bar_fill (brak domyślnego): nie wiem Confused image_bar_trans (brak domyślnego): nie wiem Confused keep_dead (domyślnie 0): włączenie lub wyłączenie wyświetlania torrentów z 0 seeds i 0 peers max_give (domyślnie 200): maksymalna ilość peersow którą zwraca tracker przy anonsowaniu się min_request_interval (domyślnie 18000): ilość sekund które klient powinien czekać pomiędzy użyciem “scrape” mysql_database (domyślnie “bnbt”): baza danych, której BNBT będzie używał przy uzyskiwaniu dostępu do serwera MySQL mysql_host (brak domyślnego): serwer MySQL, którego BNBT będzie używał - puste oznacza “localhost” mysql_override_dstate (domyślnie 0): nie wiem Confused mysql_password (brak domyślnego): hasło, którego BNBT będzie używał do połączenia się z bazą danych MySQL mysql_port (domyślnie 0): port, którego BNBT będzie używał do połączenia się z bazą danych (0 oznacza 3306) mysql_refresh_allowed_interval (domyślnie 0): nie wiem Confused mysql_refresh_stats_interval (domyślnie 600): ilość sekund, które przeczeka BNBT zanim zaktualizuję tabelkę TORRENTS w bazie danych MySQL mysql_user (brak domyślnego): nazwa użytkownika, której będzie używał BNBT do połączenia się z bazą danych MySQL parse_allowed_interval (domyślnie 0): ilość minut co ile BNBT będzie sprawdzał allowed_dir port (domyślnie 6969): port, na którym będzie działał tracker response_size (domyślnie 50): domyślna ilość peersów uwzględniana przy anonsowaniu się save_dfile_interval (domyślnie 300): ilość sekund co ile zostanie zapisany nowy dfile show_names (domyślnie 1): włączenie lub wyłączenie pokazywania nazw torrentów na stronie głównej socket_timeout (domyślnie 15): ilość sekund którą BNBT odczeka pomiędzy zamykaniem połączeń sieciowych 2d. Użytkownicy BNBT Po pierwsze - zaraz po uruchomieniu trackera wejdź na http://adresiptrackera:porttrackera/users.html i utwórz dla siebie konto z wszystkimi uprawnieniami - inaczej uprawnienia admina będzie miał każdy, który wejdzie na tracker. Przeglądając konfigurację, natkniemy się na bnbt_user_access i bnbt_member_access - jest to poziom uprawnień dla zwykłego użytkownika (user) i członka (member). Aby to zdefiniować, potrzebne są nam pewne dane : 1 - może oglądać 2 - może ściągać 4 - może komentować 8 - może wrzucać 16 - jest moderatorem 32 - jest adminem 64 - może założyć konto (signup) Dodając powyższe liczby dodajemy uprawnienia, np. jeśli zwykły użytkownik może założyć sobie konto, może oglądać i ściągać torrenty, dodajemy do siebie liczby 64 (konto), 1 (oglądanie) i 2 (ściąganie) - co daje nam wynik 67 - taką też liczbę wpisujemy obok bnbt_user_access Natomiast jeśli chcemy aby zarejestrowany członek mógł oglądać, ściągać, komentować i wrzucać torrenty - dodajemy liczby 1 (oglądanie), 2 (ściąganie), 4 (komentowanie), 8 (wrzucanie) - co daje nam wynik 15 - taką też liczbę wpisujemy obok bnbt_member_access 3. Trackery PHP TODO by XAVeRY