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ę).