javAPRSFilter

Introdução

Hoje, a rede APRS-IS há um intenso tráfego e requer uma alta banda larga, em particular os servidores APRS-IS.
Para acomodar estes vários servidores e vocês usuários que conectam e que estão interessados em um tráfego de seu particular interesse, há a necessidade do uso dos filtros de tráfego.
Existem vários tipos de filtros, alguns bem específicos como por exemplo os meteorológicos. Tudo isso para facilitar a vida dos usuários e mantenedores dos servidores.
Cada um de vocês poderá escolher o tráfego que mais lhe interessar e existem grande flexibilidade em se construir um tráfego bem em particular.

Como funciona?

Pete Loveall AE5PL escreveu o APRS-IS javAPRSSrvr, software servidor em java ao qual é usado por um grande número de servidores.
Pete foi muito amável liberando espaços no código fonte, possibilitando outros programadores de escrever alguns adendos inseridos ao servidor. Um exemplo é o javAPRSFilter ( tambem em java). Estas duas aplicações juntas promovem os filtros.
O status dos servidores APRS-IS podem ser encontrados em http://www.aprs2.net/

Você define o filtro seguindo este examplo:

1 - Conecte ao T2BRAZIL na porta 14580 "brazil.aprs2.net:14580". Se você usa o uiview, ao conectar será perguntado "Log on when connected?" clique em SIM.
2 - Envie uma mensagem APRS ao servidor solicitando o filtro desejado.

Comandos dos Filtros.

Existem 14 diferentes tipos de filtros que podem ser usados em qualquer combinação.
Cada filtro trabalha independente e é aditivo e não supresivo ao tráfego. Isto significa que se o filtro encontra uma coincidência dentro dos parâmetros que foi estabelecido, ele deixará passar para você a soma de um determinado tráfego.
Os comandos do filtro enviados em forma de mensagens APRS, começam com a palavra "filter" (sem as aspas), e cada comando de filtro esta delimitado por um espaço simples. Uma mensagem que contenha somente "filter?" (sem aspas), responderá a definição atual do filtro.

#1 Filtro Range

O Filtro Range deverá passar todas as estações e objetos dentro de uma distância, tomada desde um ponto estabelecido. Também mensagens a estações dentro do range do filtro e posições enviadas incluso se estão fora do range.
Pode-se utilizar 3 filtros de range ao mesmo tempo, para extender as áreas quando existem dificuldades para encontrar uma área bem delimitada.

Sintaxe: r/lat/lon/dist [r/lat1/lon2/dist2 [[r/lat2/lon2/dist2]]

onde:
r= Comando de Range

lat = Latitude em graus (sem decimais). Negativo para o sul

lon= Longitude em graus (sem decimais) negativo para o Oeste

dist= Distância em Kilômetros desde lat./lon.

Exemplos: r/55/-4/600 (Isto deixará passar todo o tráfego do Reino Unido)

r/37/-81/1500 (Isto deixará passar todo o tráfego da costa leste do USA)

#2 Filtro de Prefixos

O filtro de Prefixo deixará passar o tráfego baseado nas iniciais dos indicativos do emissor com uma estrutura específica.

Sintaxe:
p/p1/p2/p3...
Onde: p= Comando de Prefixo

p#= A estrutura (inicial) de Prefixo

Exemplos: p/P Isto deixará passar todo o tráfego de estações que começam com a letra P

p/PU/PY Isto deixará passar estações que começam com PU e PY

p/PY1EU Isto deixará passar todo o tráfego do PY1EU e qualquer SSID


#3 Filtro Budlist

O Filtro Budlist deixará passar o tráfego baseado nas iniciais exatas dos indicativos do emissor com uma estrutura específica, também o SSID e partes dessas iniciais.

Sintaxe: b/indicativo1/p1*/indicativo3/p2*...
Onde: b = Comando Budlist
Indicativo# = A estrutura do Indicativo
p#= A estrutura (inicial) do Indicativo

Exemplos: b/PY1EU (Isto deixará passar todo o tráfego do PY1EU sen nenhum SSID)

b/PY1EU-1/PU1WAX* (Isto deixará passar únicamente o tráfego do PY1EU-1 e todo o tráfego do PU1WAX incluindo todos os seus SSID)

b/PY* (Isto deixará passar todo ol tráfego de estações que começam com PY do mesmo modo que faz o Filtro de Prefixo)

b/PU1WPN/PU* (Isto passará todo o tráfego de PU1WPN e todas as estações que começam com PU)

#4 Filtro de Tipo

O Filtro de Tipo deixará passar o tráfego dependendo do tipo de packet. Em um só comando podem ser definidos mais de um tipo.

Sintaxe: t/tipo
Onde: t= Comando de Tipo

tipo = É um o mais das seguintes letras:
p = Pacotes de posição
o = Objetos
i = Ítems
m = Mensagem
n = Boletins e objetos de áreas meteorológicas NWS
w = Estações meteorológicas
t = Telemetría
q = Query
s = Status
u = Definidos pelos usuarios

Exemplos: t/p Isto deixará passar todo o tráfego contendo uma posição
t/w Isto deixará passar todo o tráfego de estaçõess meteorológicas

Aqueles objetos meteorológicos sem dados de posição passarão logo da segunda vez que for escutado pelo servidor.

t/mos Isto deixará passar todos as mensagens, objetos e mensagens de status

Lembre-se que mensagens APRS enviado ao servidor deve começarr com a palavra "filter" (sem aspas) e a continuação dos comandos.

Os filtros mencionados podem ser combinados como foi explicado anteriormente e cada filtro trabalhará porém de maneira independente dos outros, por exemplo:

filter r/63/16/1000 r/55/-4/600 p/CT/EA/EB b/PU1WAX t/o

|__________||_________| |_________||_______||__|

1º Range 2º Range Prefixos Budlist

O filtro anterior deixará passar todo o tráfego dentro de um range determinado, 1º Filtro de Range e um segundo range, 2º Filtro de Range. As demais estações
que começam com CT, EA e EB (Filtro de Prefixos) somando todo que é enviado desde PU1WPN, sem nenhum SSID, Filtro Budlist e todos os objetos escutados,Filtro de Tipos.


#5 Filtro de Símbolos

O filtro de Símbolos deixará passar o tráfego baseados no símbolos do pacote.

Sintaxes: s/pri/alt/over

Onde: s = Comando de Símbolos

pri = Símbolos da tabela primaria

alt = Símbolos da tabela alternativa

over = Caracteres de "overlay", lembre-se que estes são os casos sensitivos

Exemplos: s/-> Isto passará todos os símbolos das casas e automóveis da tabela primaria
s//# Isto passará todos as digipeaters sem um Overlay
s//#/T Isto passará todos los digipeaters com um overlay que contenham um "T" maiúscula, por exemplo uma Digi Wide.


#6 Filtro de Digipeaters


O Filtro de Digipeater passará todos os pacotes que tenham sido sido retransmitidos por uma particular estação. Você pode
definir mais de un digipeater e isto pode ser usado em combinações.

Lembre-se que um packet pode ter muitas vezes ir em diferentes rotas para chegar ao APRS-IS e pode ser retransmitido
por outras diferentes estações e talvez isto podem ser excluidos por otros filtros e/ou aplicações como duplicados.

Sintaxis: d/digi1/digi2...

Onde: s = Comando de Digipeater
digi# = Indicativo da digipeater, você pode utilizar o SSID.

Exemplos: d/PY2TK-15 Isto passará todos os packets retransmitidos por PY2TK-15
d/PY2TK-15/MORUMBI Isto passará todos os packets retransmitidos por PY2TK-15 e MORUMBI


#7 Filtro de Área


O filtro de área funciona igual ao Filtro de Range porém se diferencia por ser circular. É definido como uma caixa de coordenadas.
As coordenadas devem ser lidas na seguinte ordem: Acima -> Esquerda e abaixo -> Direita. Você pode definir 9 Filtros de Área ao mesmo tempo.

Lembre-se que lat/lon são em graus inteiros sem decimais e que sul e oeste são negativos.

Sintaxis: a/latN/lonW/latS/lonE

Onde: a = Comando de Áreas
latN = Borda de Latitude Norte (-90° a 90° )
lonW = Borda de Longitude Oeste (-180° a 180°)
latS = Borda de Latitude Sul (-90° a 90 °)
lonE = Borda de Longitude Leste (-180° a 180°)

Exemplo: a/50/-130/20/-70 Isto passará todo o tráfego gerado desde o território dos USA

#8 Filtro q Construct


O filtro q Construct baseará todos os filtros q construct (protocolos) usados no APRS-IS.

Maiores informações a cerca do filtro q Contruct veja aqui: http://www.aprs-is.net/q.htm

Sintaxe: q/con/ana

Onde: q = Comando q Construct
con = Lista dos q Construct que passarão, lembre-se que estes parâmetros são os casos sensitivos
ana = Análises baseado no q contruct
I = Envío de posições que passão através dos IGates identificados com qAr o qAR

Ejemplos: q/C Isto passará todo o tráfego com qAC
q/rR Isto passará todo o tráfego com qAr o qAR
q//i Isto passará todo o tráfego de posição dos IGates identificados em outros packets por qAr o qAR

#9 Filtro de Objetos


O mesmo como o Filtro Budlist mas atua no nome do objeto em vez de enviar com o indicativo.

Sintaxe: o/nome1/n2*/nome3/n3*

Onde: o = Comando de Objetos

n = Nome ou parte do nome de um objeto


Eexemplos: o/SUMARE (Deixará passar todos os objetos que contenham a palavra SUMARE)

o/SUMARE/PUB* (Deixará passar todos os objetos que contenham a palavra sumare e aqueles que comecem com PUB.

Para maires informações ver filtro Budlist.


#10 Meu range Filtro

O filtro meu Range passará todas as estações e objetos em menos de uma distância da sua própria estação local.
Utilizará a localização enviada do indicativo que você utilizou para se logar a um servidor. Isto é útil se você tem
uma estação móvel com conexão a internet. Então, sempre deixará passar as estações locais sem se importar de onde
onde você está.

Nota: Isto não trabalhará até que haja uma posição válida que tenha sido enviada desde o mesmo indicativo e SSID que
que você utilizou para se logar no servidor.

Sintaxe: m/dist
Onde: m = Comando de Meu Range
dist= Distância em Kilometros da origem lat/lon.

Exemplo: m/500 Isto passará todo o tráfego em 500Km ao redor de minha localização.


#11 Filtro Range de Amigos - Friend Range Filter

O Filtro Range de Amigos trabalha igual ao filtro "Meu range Filtro", exceto que você define qual indicativo-ssid deverá
ser usado. 9 filtros de amigos podem ser definidos.
Isto é uma mudança do filtro, então isto é o último indicativo-ssid de posição conhecida.

Sintaxe: f/indicativo/dist

Onde: f = Comando Range de Amigos
Indicativo = Indicativo utilizado como centro do range
dist = Distância em Kilômetros com respeito a lat/lon do indicativo - SSID

Exemplo: f/PY2PE/500 Isto passará todo o tráfego em 500 Km ao redor de PY2PE da última posição recebida de PY2PE.


#12 Porta de Entrada Filtro

Este filtro passará pacotes que combina o indicativo-ssid que segue imediatamente após o filtro q-construct.
Este filtro suporta indicativos acompanhados do asteristico.

Sintaxe: e/indicativo/indicativo/indicativo*...

#13 Filtro de Unproto

Este filtro passará pacotes as quais combinam o Unproto ( ou destino do tráfego) no packet.
Este filtro suporta indicativos acompanhados do asteristico.

Sintaxe: u/text/text/te*...

#14 Filtro de Exclusão

Todos os filtros anteriores também suportam exclusão. Sendo inserido anteposto aos filtros anteriores o resultado
será o oposto. Qualquer pacote que estiver no filtro de exclusão não passará. O filtro de exclusão será processado
primeiro, então se existe um combinação para uma exclusão, então o pacote não passará, mesmo com algum outro filtro
definido.

Amostra:
-a/50/-130/20/-70 -b/CW* Esta área do filtro diz que passa todo o
tráfego US. O filtro -b diz para excluir
qualquer estação que iniciar com CW.
-a/50/-130/20/-70 -s/>j Esta área do filtro diz que passa todo o
o tráfego US.O filtro -s diz para excluir
qualquer estação com ícone carro ou Jeep.


Comentário Final:

Todos os servidores que utilizam o javAPRSSrvr são mostrados em http://www.aprs2.net
Todos esses servidores dispõe da porta 14580 para os filtros definidos pelos usuários,
e estamos disponíveis com o brazil.aprs2.net:14580, bastando você incluir no seu Uiview
em setup -> aprsserver setup.

Este tutorial do javAPRSFilter é de autoria do Roger Bille SM5NRK e adaptado para o
português por: Eudoxio J.Mondego PY1EU

Os servidores Java utilizam o sistema da Sun Microsystem
O javAPRSSrvr pertence ao Peter Loveall AE5PL bem como o
javAPRSSFilter ao Roger Bille SM5NRK e o www.aprs2.net
seu autor é o Phill Pacier AD6NH.

Dúvidas ou possíveis sugestões de correções envie-nos um email para aprs@aprsbrasil.com