aprsd TCP port functions

## aprsd TCP port functions for versions 2.1.5 July 2002

All port numbers are defined in /home/aprsd2/aprsd.conf. If a port is not defined there it is inactive. The exceptions are the ipwatchport and httpport ports which are enabled unless defined to zero in aprsd.conf.

### Omni Port #14600 (or system operator defined)

- aprsd.conf key word: omniport
- Function: User may select any available data stream on this port.
- Bidirectional
- Echos: User requested data streams. Data streams may be selected either before logon with simple ascii strings or after logon with aprs messages. Click here for details.

### Main Port #10151 (or System operator defined)**

- aprsd.conf key word: mainport
- Function: User access via various aprs clients to all data streams.
- Bidirectional
- echos:
  - Internet user data
  - Data from other IGATES and hubs
  - TNC data
  - Internal system status messages
  - UDP data
- Sends 30 minute* history of all data streams when user connects

### Main Port-NH #10152 (or System operator defined)**

- aprsd.conf key word: mainport-nh
- Same as Main Port above but doesn't send 30 minute history when user connects.

### Local Port #14579 (or System operator defined)

- aprsd.conf key word: localport
- Function: User access via various aprs clients to local TNC data only.
- Bidirectional
- echos:
  - TNC data
  - UDP data
  - Internal system status messages
- Sends 30 minute history of TNC data only

### Raw TNC Port #14580 (or System operator defined)

- aprsd.conf key word: rawtncport
- Function: User access via various aprs clients to RAW local TNC data only.
- Bidirectional
- echos: TNC data
- No 30 minute history dump.

Note: This port doesn't reformat the TNC data or filter duplicates. Every packet the TNC hears is sent the the user unchanged.

### Link Port #1313 (or System operator defined)

- aprsd.conf key word: linkport
- Function: Other hubs such as APRServe connect here to get local TNC data and Internet user data. As of version 2.1.5 status messages (javamsg) are no longer echoed here.
- Bidirectional
- echos:
  - TNC data
  - Internet user data (from other ports)
  - UDP data
- Does NOT send 30 minute history
- Does NOT echo data from other IGATEs

### Messsage Port #1314 (or System operator defined)

- aprsd.conf key word: msgport
- Function: Other hubs such as APRServe or aprsd connect here to get 3rd party station to station messages. All station to station messages from all data sources and a corresponding position report are available on this port. All other packets are filtered out. This is useful for clients that need to conserve Internet link bandwidth but want access to the global station to station message stream for Internet to RF messaging.
- Bidirectional
- echos:
  - 3rd party staton to station messages from all sources.
- Does NOT send 30 minute history.

### UDP Port #1315 or defined by system operator

- aprsd.conf key word: udpport
- Function: Allows other programs such as Perl scripts to send short packets of data into the aprs stream or the TNC. Packets addressed to the TNC are directed to RF. All others go to the Internet. I use it to inject weather packets from a Perl script.
  The path data (up to and including the colon) are stripped off before the TNC gets it.
  eg:
  WA4DSY>TNC:This data goes to the TNC
  WA4DSY>APRS:This whole line goes to the Internet (no path stripping)
- Unidirectional (Input only)
- echos: nothing
- security: System operator defines IP addresses of trusted users. These will usually be a local host or subnet but could be any host.

### HTTP Port #14501 or defined by system operator [New in 2.1.2]

- aprsd.conf keyword: httpport
- Note: You don't need to add this to your aprsd.conf file unless you want to change it to a port other than 14501. To disable it, set it to zero.
- Function: Defines the port which suppiles server status information in HTML format. This port is accessed with any web browser by entering the URL: http://wa4dsy.net:14501/ (replace "wa4dsy.net" with the domain name of the aprsd server you want ) To refresh the data click the RELOAD button on your browser.

### IP Source monitor port #14502 or system operator defined.

- aprsd.conf keyword: ipwatchport
- Note: You don't need to add this to your aprsd.conf file unless you want to change it to a port other than 14502. To disable it, set it to zero.
- Function: Supplies all data streams without dup filtering with a special header prepended. The header contains the source IP address of the packet and the user login name, "IGATE" or "UDP". An example: !44.36.16.48:WA4DSY! Packets from other igates this server connected to will show the domain name instead of the IP address and the user will be "IGATE". Packets from the UDP port will have the IP address and the user field will be "UDP". Packets from the TNC will have "TNC" in the IP address field and "*" in the user field . Use telnet or nc optionally with grep to determine the source of packets.
  eg: telnet first.aprs.net 23 | grep '199.45.66.88'
  Will display only packets from IP address 199.45.66.88.

### Error Port 14503 [New in 2.1.5]

- aprsd.conf keyword: errorport
- Note: You don't need to add this to your aprsd.conf file unless you want to change it to a port other than 14503. To disable it, set it to zero.
- Function: Supplies the packets that were rejected for various reasons. Duplicates do not appear here. A special header is prepended to indicate the IP address and logon call.

### IGATE connection ports

These are client ports which connect to distant IGATEs, Servers or Hubs to harvest their data streams. Connections are reestablished when they drop. The system operator defines the domain names and optional user/pass logon. If the optional user/pass information is supplied the server will send out to the distant Servers the same data provided by port 1313 above. This is usefull for those who use a dialup connection without a static IP address. Up to 100 distant Servers can be defined. (this limit can be increased by editing an recompiling)

* The 30 minute time is now user definable.
** All ports are optional. They will not be activated unless a port number is defined in the aprsd.conf file.

### REFORMATTING

Mic-E packets may optionally be converted to standard APRS format before being sent to clients. Generally Mic-E conversion is undesirable. There is an option in the aprsd.conf file to control conversion.

Data from AEA TNCs is converted to TAPR format before being sent to clients.

### Station to station messages of the 3rd party kind:

This program will reformat and relay aprs station to station messages from the Internet to the TNC for RF transmission under the following conditions.

If it came from a logged on verified registered user.
and
The originator was not seen on the TNC RF data stream in the past 30 minutes.
and
The destination HAS been seen on the TNC RF data stream in the past 30 minutes and doesn't have "GATE*" in his path and has been repeated less than 3 times.

For each 3rd party messge delivered to RF the latest position report packet of the originating station will also be sent after reformating the path in 3rd party format. The program pulls the posit from the history list.

eg:
KE6DJZ>AP0917,KB6TLJ-5,RELAY,WIDE:=3415.99N/11844.34WyAPRS+SA
becomes:
}KE6DJZ>AP0917,TCPIP,WA4DSY*:=3415.99N/11844.34WyAPRS+SA
(assuming "MyCall" is WA4DSY )

During a series of messages the position packet will only be sent with a message every 10 minutes unless the station emits a new one.

This server will NOT igate a 3rd party reformatted message from RF to the Internet if the packet has been previously Igated from Internet to RF. A packet from any source that does not have TCPIP in the 3rd party path will be converted to normal format and handled in the usually way.

Users of unregisterd client programs can send their own station-to-station messages to other Internet users. These messages will not go out on the TNC RF channel and the path will be modified (TCPIP* is changed to TCPXX*) so other hubs will know not to send these messages out on their RF channels. Unregistered users cannot Igate packets other than their own. In other words, the ax25 source call in their packets must match their logon call.

eg; assume N0CLU is unregistered and attempts to send the following into the server.

N0CLU>APRS,TCPIP:>TESTING This will be converted to N0CLU>APRS,TCPXX*:>TESTING and gated to other users (but not to RF ever!)

However... W4ZZZ>APRS,TCPIP:>TESTING will be deleted and not sent anywhere.

Telnet users must provide a user name or call sign before any of their data can be relayed to the internet. They need to enter "user callsign pass -1" so the server will accept the data. The ax25 FROM call in packets they send must match the call sign they loggon with. If they provide a valid password full priviliges are granted since they used the keyboard to emulate a client program logon string. (Not that anyone would want to do this except for testing)

This server will also accept valid user/password combinations for the Linux system it is running on. These users must be in the aprs group. This group can be added by editing the /etc/group file. See the README for details. This program trusts other versions of itself and APRServe to flag the paths of data from unregistered Internet users with "TCPXX*". Station to station messages flagged this way will not be sent out on RF. The IGATE commands in the aprsd.conf file should specify a remote host port which is secure. For IGATES it must be a port which doesn't echo any Internet user data, only TNC data. Full function servers such as APRServe and this version (2.x.x) of aprsd will change TCPIP* to TCPXX* in the paths of unregistered users on all ports.

### Omni Port operation

The Omni Port provides user requested data streams. The streams are selected by filter commands. Currently the only filter available is the Port Filter. The syntax of the Port Filter command is "portfilter(arg1,arg2,arg3,.....)". The short form "pf(arg1,arg2,arg3,...)" may also be used. The command may be issued in raw ascii form prior to user logon or as a message addressed to "SERVER" after logon. Messages addressed to "SERVER" can be sent from any aprs client program capable of sending messages. The command may be issued any number of times. The commands and arguments are not case sensitive.
Examples.
Raw: pf(all,history)
In message: WA4DSY>APRS::SERVER :pf(all,history)

Port Filter arguments.

- ALL: All data streams
- FULL: Same as above
- LOCAL: Data from TNC, UDP port, internal system msgs, and server beacon
- LINK: Data from TNC, UDP port, users, and server beacon
- MSG: Messages and associated posits only
- HISTORY: History list dump

- TNC: Data from the TNC attached to the server
- USER: Data from connected users
- HUB: Data from Hub or Server connections
- SERVER: Same as above
- UDP: Data from aprsds UDP port
- RAW: Unfiltered TNC data
- DUP: Duplicate packets
- SYSTEM: System generated packets
- STATS: Non-ax25 formated server system status info
- REJECT: Data that the server has rejected
- HEADER: Same data as ipwatchport 14502 described above
- ECHO: Users own data is echoed back to him
- CLEAR: No data streams

- -HUB: remove data from Hubs/Servers
- -TNC: remove TNC data
- -USER: remove user data
- -SYSTEM: remove system messages
- -BEACON: remove system beacon packets

Arguments are scanned in the order they appear. For example, if you want everything including a history dump but don't want the system status messages:

pf(all,-system,history)

You may connect to the Omni Port with telnet and watch the servers operaton in real time.

telnet wa4dsy.net 14600
pf(stats)

If you require you own data echoed back to you simply add the "ECHO" argument to the list.

pf(all,-system,echo)

Note: Filter messages are only accepted from your logon callsign. If you want to freeze the filter configuration for the duration of the connecton issue the "LOCK" command. eg: lock(). No more commands will be accepted.

The Omniport will be easier to user if client software authors add automatic transmission of the stream requests at logon. They could be specified with simple checkboxes in a dialog window.