Asmo Slackware Page

8th September 2010

.::MENU::.

Wstęp
Mapa serwisu
Instalacja
Serwery
Artykuły
Tips&Tricks
Programowanie
ASP changelog
FORUM
FAQ
Linki
Ksiega gosci
O mnie

GG:
1710841


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.

©Asmo , last modified: April 20 2008 23:28:41.