Zdalne ograniczanie transferu eMule
Opis
Od jakiegoś czasu na jednym z moich komputerów z Windows zacząłem używać eMule.
Wszystko byłoby fajnie gdyby nie to, że eMule potrafi tak się rozpędzić z pobieraniem
plików, że blokuje prawie całe łącze. Powoduje to, że na innych komputerach w sieci
nawet proste przeglądanie stron WWW trwa "wieki".
Postanowiłem więc zrobić coś by ograniczyć transfer dla eMule ale tylko wtedy gdy inni
użytkownicy korzystają z sieci. Na pierwszy rzut oka myślałem, że jedynym rozwiązaniem będzie
skonfigurowanie QoS na routerze. Ale po chwili wpadłam na inny pomysł. Co by było gdyby dało
się zdalnie ograniczyć transfer eMule na życzenie, używając jakiegoś prostego interfejsu WWW
lub poprzez kliknięcie na ikonę na pulpicie jednego z komputerów w sieci?
Po po chwili przeglądania opcji eMule odkryłem, że posiada on serwer WWW. Dzięki któremu
możemy zdalnie zmieniać wszelkie ustawienia eMule oraz co najciekawsze ograniczać transfer.
By to jednak zrobić trzeba otworzyć przeglądarkę, wpisać adres komputera na którym działa
eMule wraz z portem, zalogować się, wejść w opcje, wpisać do ilu ograniczyć transfer i
potwierdzić zmiany. Pomyślałem że jest to trochę za bardzo skomplikowane. Na pewno
istnieje inny sposób!
I miałam racje :)!
Co będziesz potrzebował
- Serwer WWW z PHP (np. Apache + PHP),
- eMule :),
- Zainstalowanego demona crond (standardowo jest w każdej dystrybucji Linuksa).
Rozwiązanie
Na samym początku chciałbym ostrzec, że rozwiązanie to nie sprawdzi się raczej w sieci z
większą liczbą użytkowników. Każdy będzie mógł ograniczyć Ci prędkość pobierania, chyba że
zmodyfikujesz moje skrypty tak by przeprowadzane było uwierzytelnianie zanim zmienione
zostaną jakiekolwiek ustawienia. W mojej sieci nie miało to znaczenia ponieważ prócz
mnie do sieci ma dostęp tylko jedna osoba.
Zaczniemy od przygotowania katalogu z którego będziemy udostępniać pliki ze
skryptami na serwerze WWW. W moim przypadku serwer WWW postawiony jest oczywiście
na Slackware + Apache + PHP.
Tworzymy katalog:
#mkdir /var/www/emule
#chown root.nobody /var/www/emule
#chmod 770 /var/www/emule
Następnie kopiujemy i rozpakujemy tam przygotowane przeze mnie skrypty PHP, które możesz pobrać tutaj.
W pakiecie znajdują się następujące skrypty:
- change_transfer.php - skrypt dokonujący ograniczenia transferu,
- config.inc.php - parametry konfiguracyjne,
- index.php - strona wyświetlana dla użytkownika,
- main_bg.gif - tło strony WWW,
- unlimit.php - skrypt usuwający ograniczenia transferu,
- cron/cron.hourly - katalog z plikiem, który należy skopiować do /etc/cron.hourly.
Każdy z plików ma wiele komentarzy wiec nie powinno być problemu z ich zrozumieniem. Po skopiowaniu plików w odpowiednie miejsca edytujemy plik config.ini.php zgodnie z ustawieniami naszej sieci. Teraz wystarczy włączyć serwer WWW w eMule i ustawić hasło administratora tak by odpowiadało temu wpisanemu do pliku config.ini.php.
Testujemy skrypty wchodząc na stronę naszego serwera WWW, w moim przypadku był to adres http://192.168.10.1/emule.
UWAGA: Strona będzie podawać aktualny transfer eMule tylko gdy język ustawiony jest jako Polish.
Dla ułatwienia można umieścić skrót do tego adresu na pulpicie użytkownika.
A poniżej zdjecie jak to wygląda:
To tyle mam nadzieje, że komuś się to przyda.