TNC Proxy dla Direwolf

Co raz częściej spotykam się z zastosowaniem soundmodemu Direwolf poprzez sieć lokalną zamiast na jednym komputerze. Również, co raz częściej spotykam direwolf zainstalowany na Raspberry PI do którego jest podpiętych jest więcej aplikacji niż jedna. Niestety w takich przypadkach aplikacje nie widzą pakietów wysłanych przez inne aplikacje. Ale jest na to metoda.

Na ten problem zwrócił mi uwagę Rysiek SQ9MDD. Postanowiłem napisać skrypt w Pythonie aby rozwiązać ten problem. Tak oto powstał tnc_proxy.py do ściągnięcia z mojego konta na github.com. Zasada działania skryptu jest prosta:

  • podłącz się do direwolf
  • zacznij akceptować połączenia klientów (programów)
  • wszystko co odbierzesz na jednym z istniejących połączeń prześlij do innych istniejących połączeń

Po ściągnięciu skryptu na komputer na którym jest uruchomiony direwolf na Linuksie należy wyedytować w pliku 4 wartości:

listen_address = "127.0.0.1" # listen IP, "" == listen all
listen_port = 8002 # listen port

destination_address = "127.0.0.1" # connect to IP
destination_port = 8001 # connect to port

Zmienne listen_address oraz listen_port odpowiadają za adres IP i port na którym skrypt słucha i przyjmuje polecenia. Zmienne destination_address oraz destination_port określają adres IP i port na które można się podłączyć do direwolf. Po wpisaniu poprawnych wartości należy dla skryptu dodać parametr wykonywalności poprzez polecenie:

chmod +x tnc_proxy.py

A następnie uruchomić skrypt za pomocą polecenia:

./tnc_proxy.py

Skrypt podłączy się do direwolf zgodnie z konfiguracją podaną w w/w zmiennych z przedrostkiem destination_ oraz zacznie nasłuchiwać na porcie oraz adresie IP podanej w zmiennych z przedrostkiem listen_. W programach które będą się łączyć do direwolf zmieniamy port na którym działa soundmodem na ten który podaliśmy w zmiennej listen_port. Teraz możemy podłączyć do skrypt programy takiej jak np.:

  • APRX
  • APRSIS32
  • EasyTerm
  • Xastir

i inne. W czasie pracy w w/w programach (lub innych podłączonych do skryptu) zauważymy, że jeżeli z programu X został wysłany pakiet danych to zostanie on wysłany w eter za pomocą direwolf jak i do innych programów podłączonych do tego skryptu.

Jeżeli chcemy aby skrypt był uruchamiany razem z systemem jako usługa należy zastosować odpowiedni skrypt w katalogu /etc/init.d/ co omówiłem w jednym z wpisów lub dopisać odpowiednią ścieżkę do pliku /etc/rc.local (sugeruję pierwszą opcję).