javAPRSFilter

netNatężenie ruchu na serwerach APRS zwiększa się z każdym miesiącem. Połączenie z serwerem wymagało coraz większego pasma na łączach internetowych. Pierwszym rozwiązaniem było stworzenie portów, na których dostępny był ruch z jednego regionu, czy też były to porty danych pogodowych, porty z wiadomościami itp. Jednak zdefiniowanie filtrów odbywało się w sposób z góry określony na serwerze, dalsze filtrowanie mogło odbywać się jedynie na komputerze użytkownika. Nowszym rozwiązaniem, wprowadzonym w maju 2003, jest zastosowanie javAPRSFilter autorstwa Rogera SM5NRK, który pozwala na indywidualne zdefiniowanie filtrów przez każdego z użytkowników. Dzięki temu łącze internetowe nie musi być tak mocno obciążone, a jednocześnie może być większa liczba korzystających z serwera. Odfiltrowanie odbywa się na serwerach APRS przed wysłaniem danych do naszego komputera, według naszej własnej konfiguracji. Program javAPRSFilter stosowany jest w sieci Tier2 na portach 14580.

Port 14580

Dla portów 14580 pracujących z javAPRSFilter jest czternaście kategorii filtrów. Spośród nich trzynaście dotyczy otwarcia kolejnego strumienia danych, a czternasty jest filtrem blokującym. Kolejne definicje (#1-13) wzajemnie się sumują, czyli ramka packetowa jest przekazana, kiedy spełnia choćby jedną kategorię. Natomiast filtr wykluczający #14 jest brany pod uwagę w pierwszej kolejności i powoduje zablokowanie danych, które w jakikolwiek sposób odpowiadają jego definicji. Aby otrzymywać jakiekolwiek dane na porcie 14580, trzeba uaktywnić choćby jeden filtr (#1-13). Według jego konfiguracji serwer będzie podawał nam dane. Po prostu, któryś z tych strumieni trzeba otworzyć. Inaczej, nic nie będzie do nas podawane, choć sami będziemy mogli podawać ramki na serwer.

Znaki wywoławcze muszą być wpisywane z uwzględnieniem małych i dużych liter.

Kategorie filtrów

javAPRSFilter - Copyright - Roger Bille SM5NRK Składnia Przykłady

#1 Filtr zasięgu (promienia) - r

Filtr zasięgu przepuszcza wszystkie stacje, ich pozycje, status, wiadomości itd. znajdujące się w podanym zasięgu (promieniu) od własnego położenia. Przepuszcza również wiadomości do stacji znajdujących się w granicach zasięgu i pozycje nadawcy, nawet jeśli on jest poza zasięgiem filtru. Jednocześnie może być użytych maksymalnie dziewięć filtrów zasięgu, aby objąć teren, który trudno opisać jednym okręgiem geometrycznym.  

lat/lon mogą zawierać jedną cyfrę po przecinku (może być użyta kropka lub przecinek)
r/lat/lon/dist [r/lat1/lon1/dist1 [r/lat2/lon2/dist2]]

Gdzie:
r = komenda zasięgu
lat = szerokość w stopniach. Ujemna dla Południa
lon = długość w stopniach. Ujemna dla Zachodu
dist = dystans w kilometrach od lat/lon
r/55/-4/600
Przepuszcza cały ruch Wielkiej Brytanii

r/37/-81/1500
Przepuszcza cały ruch zachodniej części USA

#2 Filtr prefiksu - p

Filtr prefiksu przepuszcza cały ruch na podstawie rdzenia, z jakim zaczyna się znak wywoławczy nadawcy.  

Rozszerzenia z gwiazdką nie mają w tym filtrze zastosowania.  
Filtr prefiksu obecnie (od wersji 1.4) funkcjonuje we filtrze #3 - b, ale dalej filtr #2 - p został zachowany dla kompatybilności z wcześniejszymi aplikacjami.
p/p1/p2/p3...    

Gdzie:  
p = komenda prefiksu
p# = Rdzeń prefiksu (rozpoczynający)
p/K
Przepuszcza cały ruch od stacji rozpoczynających się od K

p/SP/F
Przepuszcza cały ruch od stacji rozpoczynających się zarówno od SP, jak też F

p/SM5NRK
Przepuszcza cały ruch od stacji SM5NRK z jakimkolwiek SSID na końcu lub bez niego

#3 Filtr kolegów - b

Filtr kolegów przepuszcza cały ruch na podstawie dokładnego znaku stacji, z określonym SSID lub na podstawie początkowej części znaku.  

Dla rozszerzenia filtru o pozostałe elementy w znaku, należy zastosować gwiazdkę, np. SP3* dla wszystkich stacji zaczynających się od SP3.
Jeśli chcemy otrzymywać wszystko od stacji z krótkim znakiem, jak np. SP1A, a wpisanie SP1A* powoduje przepuszczenie wielu innych stacji z sufiksami dwu i trzyliterowymi, to należy wpisać b/SP1A/SP1A-*
b/call1/p1*/call2/p2*...

Gdzie:
b = komenda kolegów
call# = Znak wywoławczy
b/SM5NRK
Przepuszcza cały ruch od SM5NRK bez SSID

b/SM5NRK-5/SK5UM
Przepuszcza cały ruch od SM5NRK-5 i od SK5UM  

b/SP3*/SR*
Przepuszcza cały ruch od stacji zaczynających się od SP3 oraz SR

#4 Filtr rodzaju (typu) - t

Filtr rodzaju (typu) przepuszcza ruch w zależności od rodzaju zawartych informacji (wg identyfikatorów). Może być zdefiniowany więcej niż jeden rodzaj.
t/type t/type/call/dist

Gdzie:
t = komenda typu
type = jedna lub więcej następujących liter:

p = Position packets
o = Objects
i = Items
m = Message
n = NWS Weather
w = Weather
t = Telemetry
q = Query
s = Status
u = User-defined  

call = znak stacji lub obiektu
dist = odległość w km względem znaku, aby przepuszczać ramki danego rodzaju
t/p
Przepuszcza cały ruch zawierający pozycje  

t/w
Przepuszcza cały ruch zawierający pogodę. Dla obiektów pogodowych bez pozycji korespondujący z nimi beacon pozycji również będzie przesłany, jeśli później się pojawi.

t/mos
Przepuszcza wszystkie wiadomości (m), obiekty (o) i status (s)

t/p/SM5NRK/500
Przepuszcza wszystkie ramki z pozycją w odległości 500 km względem ostatniej znanej pozycji SM5NRK

#5 Filtr symboli - s

Filtr symboli przepuszcza ruch na podstawie symboli używanych przez stacje.
s/pri/alt/over

Gdzie:
s = komenda symbolu
pri = symbole w tabeli podstawowej (primary table)
alt = symbole w tabeli alternatywnej (alternate table)
over = wykładnik (overlay character) - rozróżnia małe i duże litery
s/->
Przepuszcza wszystkie symbole domu i samochodu (tabeli podstawowej)

s//#
Przepuszcza wszystkie digi z wykładnikiem lub bez niego

s//#/T
Przepuszcza wszystkie digi z wykładnikiem litery T

#6 Filtr digi - d

Filtr digi przepuszcza wszystkie ramki, które zostały powtórzone przez konkretny digi. Trzeba pamiętać, że ramki mogą przechodzić różnymi trasami, zanim dojdą do APRS-IS i mogą być przekazywane inną drogą niż zdefiniowana. Ramki są na wiele sposobów odfiltrowywane i usuwane jako duplikaty.

Można wpisać jeden lub więcej digi, jako każdy lub razem. Można również użyć gwiazdki * dla rozszerzenia początkowej części znaków.
d/digi1/digi2...

Gdzie:
d = komenda digi
digi# = znak digi
d/SM5NRK-2
Przepuszcza wszystkie ramki przekazane przez SM5NRK-2

d/SM5NRK-2/SK5UM
Przepuszcza wszystkie ramki przekazane przez SM5NRK-2 lub SK5UM  

d/SR*/SP2*/SP3*
Przepuszcza wszystkie ramki, do których został wstawiony znak przekazującego digi, zaczynający się od SR, SP2 lub SP3

#7 Filtr obszaru (area) - a

Filtr obszaru działa tak samo, jak filtr zasięgu, ale jest zdefiniowany jako prostokąt współrzędnych. Współrzędne można również określić jako współrzędne narożników prostokąta - lewego górnego i prawego dolnego. Współrzędne nie mogą zawierać części dziesiętnych. Południe i Zachód są ujemne. Można jednocześnie zdefiniować do dziewięciu filtrów obszaru.  

lat/lon mogą zawierać jedną cyfrę po przecinku (może być użyta kropka lub przecinek)
a/latN/lonW/latS/lonE

Gdzie:
a = komenda obszaru (area)
latN = granica szerokości od Północy (-90 do 90)
lonW = granica długości od Zachodu (-180 do 180)
latS = granica szerokości od Południa (-90 do 90)
lonE = granica długości od Wschodu (-180 do 180)
a/50/-130/20/-70
Przepuszcza cały ruch z USA  

a/54.9/14/52/24 a/52/14.7/50.6/16 a/52/16/50/24.2 a/50/18/49/23.2
Taka kombinacja przepuszcza ruch z obszaru prawie całej Polski

#8 Filtr konstrukcji q - q

Filtr konstrukcji q działa na podstawie konstrukcji q użytej na serwerze APRS. Aby dowiedzieć się więcej nt. q, zajrzyj na http://www.aprs-is.net/q.htm
q/con/ana

Gdzie:
q = komenda konstrukcji q
con = lista konstrukcji q do przepuszczenia (rozpoznaje duże i małe litery)
ana = analiza na podstawie konstrukcji q
i = Przepuszcza pozycje z bramek internetowych zidentyfikowanych jako qAr lub qAR.
q/C
Przepuszcza cały ruch z qAC

q/rR
Przepuszcza cały ruch z qAr lub qAR

q//i
Przepuszcza wszystkie pozycje od bramek zidentyfikowanych w innych ramkach przez qAr lub qAR

#9 Filtr obiektów - o

Filtr obiektów działa tak samo, jak filtr kolegów, ale opiera się na nazwach obiektów zamiast na znaku wywoławczym wysyłającego.
o/name1/n2*/name3/n3*...

Po więcej informacji zobacz na filtr kolegów #3.
 

#10 Filtr wg mojego zasięgu - m

Filtr wg mojego zasięgu przepuszcza stacje i obiekty znajdujące się w odległości określonej względem mojej pozycji. Punktem odniesienia jest położenie stacji o znaku, jakiego używasz łącząc się z serwerem. Jest to przydatne dla stacji mobilowych z łączem internetowym. Przesyłane będą stacje lokalne względem obecnego położenia.

Uwaga: Filtr nie będzie działał, jeśli nie została wysłana pozycja dla znaku i SSID, z którym zalogowalismy się na serwerze.
m/dist

Gdzie:
m = komenda mojego zasięgu
dist = odległość w kilometrach od lat/lon.
m/500
Przepuszcza cały ruch w zasięgu 500 km od mojej pozycji.

#11 Filtr wg zasięgu kolegi - f

Filtr wg zasięgu kolegi działa podobnie, jak filtr wg mojego zasięgu, z wyjątkiem tego, że można zdefiniować do dziewięciu znaków z SSID, w oparciu o których pozycje, zasięg będzie określany. Jest to ruchomy filtr, zatem opiera się on na ostatniej znanej pozycji stacji o podanym znaku-SSID.

Uwaga: Filtr nie będzie działał, jeśli nie została wysłana pozycja stacji o określonym znaku-SSID.
f/call/dist

Gdzie:
f = komenda zasięgu kolegi (friend range command)
call = znak wywoławczy, którego pozycja będzie punktem odniesienia dla zasięgu
dist = odległość w kilometrach od lat/lon.
f/SM5NRK/500
Przepuszcza cały ruch w zasięgu 500 km od ostatniej pozycji SM5NRK

#12 Filtr wejścia (Entry) - e

Filtr wejścia przepuszcza ramki, w których znajduje się konkretny znak-SSID następujący bezpośrednio po konstrukcji q.

Filtr pozwala na użycie rozszerzenia z pomocą gwiazdki *.
e/call/call/call*... e/SR3WXA
Przepuszcza wszystkie ramki, które weszły do APRS-IS przez IGate SR3WXA (należy pamiętać o usuwaniu duplikatów w APRS-IS; ramka wchodzi przez wiele IGate'ów i tylko jedna kopia jest zachowana)

e/SR3*
Przepuszcza wszystkie ramki, które weszły przez IGate'y o znakach zaczynających się od SR3

#13 Filtr adresu przeznaczenia (Unproto) - u

Filtr przepuszcza ramki, w których znajduje się konkretny adres przeznaczenia (Unproto).

Filtr pozwala na użycie rozszerzenia z pomocą gwiazdki *.
u/text/text/te*... u/APOTC1
Przepuszcza wszystkie ramki, które zostały wysłane przez Open Tracker + (patrz adres przeznaczenia z zakodowaną wersją programu)

u/APOT*
Przepuszcza wszystkie ramki wysłane przez Open Tracker, Tracker 2 itp.

#14 Filtr wykluczenia

Wszystkie powyższe filtry mogą zostać objęte wykluczeniami. Postawienie minusa przed danym filtrem spowoduje wykluczenie. Jakikolwiek raport odpowiadający wykluczeniu nie zostanie przepuszczony. Filtry wykluczenia będą brane pod uwagę w pierwszej kolejności, stąd jeżeli dany raport odpowiada w jakikolwiek sposób wykluczeniu nie będzie przepuszczany bez względu na inne definicje.
  a/50/-130/20/-70 -b/CW*
Filtr obszaru (a) określa, aby przepuścić cały ruch z US. Filtr -b określa, że należy wykluczyć każdą stację, która zaczyna się od CW.

a/50/-130/20/-70 -s/>j
Filtr obszaru (a) określa, aby przepuścić cały ruch z US. Filtr -s określa, że należy wykluczyć każdą stację, która występuje z symbolem samochodu lub jeepa.

Zdefiniowanie filtrów

W celu zdefiniowania filtrów należy:

Przykład:

To:     SERVER 		
Text:   filter r/40/-100/500 t/m s/>j 

Wysłanie do serwera wiadomości o treści filter?, zwróci do nas obecną definicję.
Wysłanie do serwera wiadomości o treści filter default, przyśle do nas domyślną definicję filtrów na danym porcie.


log-on textZdefiniowanie filtrów w programie UI-View

Program UI-View pozwala na automatyczne przekazywanie definicji filtrów przy każdorazowym połączeniu z serwerem. W tym celu należy, w ustawieniach 'APRS Server Setup', wpisać w oknie Extra log-on text odpowiedni tekst z komendami dla filtrów, który będzie wysyłany każdorazowo przez program UI-View do serwera po połączeniu się i zalogowaniu.

Przykładowy filtr przepuszcza stacje z prefiksami SP oraz SQ i wiadomości dla nich, a także stacje w promieniu 100 km od własnej pozycji.