PAT is een multi-platform Winlink client, open source en voorzien van een aantal features die het interresant maakt om koppelingen naar andere systemen te vergemakkelijken.
Voor Windows, Linux en Mac kunnen gevonden worden op de Github https://github.com/la5nta/pat/releases
Google Groups voor support van gebruikers: https://groups.google.com/g/pat-users
Op de Wiki vind je de volledige info: https://github.com/la5nta/pat/wiki
Pat bezit zowel een Command Line interface als een GUI interface.
Hierdoor wordt het mogelijk om scripting te gebruiken voor het automatisch uitvoeren van taken.
Doordat PAT de mails als files bewaard in een toegankelijke folder structuur "The mailbox Directory" kan PAT dienst doen als een front-end voor andere protocollen zoals DsyncFS (DMR) of Syncthing, een file sync systeem tussen verschillende computers (zoals rsync). De uitleg van één van de makers maakt veel duidelijk.
De 'Adding trasport' bibs die voorzien zijn, kunnen je op weg helpen om een eigen protocol te implementeren.
Het gebruik van gzip, ter vervanging van LZHUF_1 compressie, is een optie die er nu inzit.
De code is grotendeels in Google GO geschreven en kan je gebruiken om een eigen versie te implementeren.
We bekijken hier de installatie op Windows.
Na de download pak je de zipfile uit in een eigen folder.
Hierin zit slechts één file: pat.exe
Voor de configuratie ga je als volgt te werk:
Open een powershell op de plaats waar pat.exe staat
Geef het commando:
.\pat.exe configure
er wordt nu een tekst file geopend 'config.json' waarin de configuratie zit.
Hierin pas je minstens je callsign, password (winlink) en Locator aan.
Meer info van mogelijkheden kan je vinden op Pat Go cfg
Bewaar de file.
Voorlopig gaan we geen modems configureren maar enkel gebruik maken van de telnet-internet connectie om het geheel te testen.
Volgende Video geeft een korte info over het gebruik van PAT(in linux): Pat Winlink from the Command Line
Je kan een uitgebreide hulp krijgen met het commande:
.\pat.exe help
Het maken van een nieuw bericht doe je met:
.\pat.exe compose
Er worden je een paar vragen gesteld
From[callsign]. druk hier op enter (vb ON4AWM)
To: [callsigns] in Winlink(vbON4ABS, on4awm@myuba.be)
CC:[callsigns] in Winlink(vbON4ABS, on4awm@myuba.be)
Enter to compose: Nu opent er een tekst editor.
Bewaar de file als hij klaar is
Attachment: Hier kan je een attachment definiëren.
Je krijgt nu de meldin: Message posted en een uitdruk van je bericht.
From [ON4AWM]:
To: on4abs
Cc: on4awm@myuba.be
Subject: Test van PAT op Windows
Press ENTER to start composing the message body.
Attachment [empty when done]:
MID: 2U2UM2VBWJ7Z
Date: 2021-02-27 21:45:00 +0100 CET
From: ON4AWM
To: ON4ABS
Cc: SMTP:on4awm@myuba.be
Subject: Test van PAT op Windows
Dit is een tes, zonder attachment van Path op Windows.
Ik hoop dat het werkt.
Attachments:
Message posted
Je ziet ook dat er voor de email adressen een extra woord, SMTP is gekomen.
Hiermee wordt duidelijk gemaakt dat dit geen winlink adres is en het verstuurd moet worden via internet (CMS).
De "mailbox folder" is terug te vinden onder
c:\users\<username>\.wl2k\mailbox\<CALL>\out
Voor het versturen van de mail moet je een verbinding maken met een RMS (of CMS).
Vermits er standaard in de config een telnet verbinding staat gedefinieerd voor de CMS op internet, kan je deze gebruiken.
Geef het commando:
.\pat.exe connect telnet
Het bericht wordt verstuurd en verhuisd van de OUT naar de SEND folder..
c:\users\<username>\.wl2k\mailbox\<CALL>\sent
Je kan ook ipv een telnet, een radio connectie maken in een aantal modi.
De config hiervan kan verschillend zijn.
Om te weten in welke mode welke RMS actief is kan je een lijst opvragen met het volgende commando:
.\pat.exe rmslist
Een verbinding in een bepaalde radio mode naar een bepaald station (P2P) geef je als volgt op:
.\pat.exe connect ardop:///LA5NTA
Om ook bereikbaar te zijn moet je een aantal modi op luisterstand zetten waardoor er met je station P2P verbindingen kunnen gemaakt worden.
Om als voorbeeld bereikbaar te zijn in 3 modi voor P2P verbindingen zet je het volgende commando in je config.json file:
"listen": ["ardop","ax25","telnet"],
De telnet P2P luistert op poort 8774, zoals in de config staat.
Om de interactie met Winlink mogelijk te maken, nodig om nadien DsyncFS te kunnen gebruiken als modem, zijn er meerdere wegen:
Rechtstreeks telnet via de CMS servers, iets wat op een RMS kan gebruikt worden, maar voor de gebruikers zonder internet niet mogelijk is.
Telnet via de Telnet P2P in Winlink Express, de weg die gebruikt wordt voor verbindingen via LAN/MESH
Telnet Post Office verbindingen, gebruikt voor het lezen van berichten via LAN/MESH
De standaard setting van PAT voor een telnet verbinding verwijst naar een winlink cms server.
"connect_aliases": {
"telnet": "telnet://{mycall}:CMSTelnet@cms.winlink.org:8772/wl2k"
},
Deze standaard setting gebruik de geconfigureerde mycall als id voor een verbinding met de CMS.
Het paswoord dat gebruikt wordt is CMSTelnet en de server waarnaar de verbinding loopt is cms.winlink.org op de poort 8772 met het wl2k communicatie principe.
Deze verbinding loopt op een lokale pc tussen PAT en Winlink express.
Hiervoor wordt de winlink sessie Telnet P2P gebruikt, die ook gebruikt kan worden om via LAN of MESH verbinding te maken.
Standaard wordt deze luistemode geconfigureerd voor alle mogelijk IP poorten en zonder paswoord over poort 8774.
Wil je echter een paswoord gebruiken voor de verbinding dan dien je dit hier in te vullen.
Ga hiervoor via settings om de aanpassingen te doen.
IP and port for incoming connections:
Default
Port 8774
Allow connections for all callsigns and ip addresses
Tevens definieren we een station waarnaar we van hieruit een verbinding willen maken.
In ons geval zal dat de PAT connectie zijn.
Kies voor Add station
Vul een naam in: PAT
Geef geen paswoord
IP address: 127.0.0.1
Port: 8778
Pas de standaard verbinding voor Telnet in PAT aan naar de lokale PC/Poort en settings zoals weergegeven.
Geef ook je <paswoord >op wat je hebt ingesteld (indien het niet leeg is) om een verbinding met deze winlink express toe te laten.
"connect_aliases": {
"telnet": "telnet://ON4AWM:<password>@127.0.0.1:8774/wl2k"
},
Gebruik je geen paswoord, dan zal de lijn er als volgt uitzien.
"connect_aliases": {
"telnet": "telnet://ON4AWM:@127.0.0.1:8774/wl2k"
},
Om ook de listen mode te configureren dien je volgende settings aan te passen:
In de lijst wordt weergegeven op welke protocollen er geluisterd moet worden.
We kiezen hier voor het Telnet protocol.
"listen": ["telnet"],
Om het telnet luister protocol verder te configureren moet je wat verder in de settings kijken.
We kiezen voor een TCP poort 8778, zodat deze verschilt van de poorten die gebruikt worden door Winlink en gebruiken geen paswoord.
"telnet": {
"listen_addr": "localhost:8778",
"password": ""
},
Pat zal pas luisteren op deze poort(en) als het opgestart is.
Het opstarten van PAT in interactieve mode via de command line doe je via het commadno:
.\pat.exe interactive
Hierdoor zal je zien dat PAT opstart met een prompt [telnet]> en aangeeft te luisteren op telnet
Om deze interactieve mode te stoppen gebruik je het commando Quit.
Wanneer je een interactieve sessie met user interface wil starenten, maak je gebruik van PAT http.
Het opstarten van PAT http doe je met het volgende commando
.\pat.exe http
Hierdoor zullen alle modems in listen mode starten en wordt er een http server opgestart op de poort:
localhost: 8080.
Via een webbrowser kan je nu naar de interface: http://127.0.0.1:8080 en zo gebuik maken van PAT om berichten te maken en te ontvangen.
In deze mode zit, identiek de optie, om berichten P2P te maken.
Deze P2P optie voor berichten is nodig om een uitwisseling tussen twee client stations mogelijk te maken, via de telnet P2P optie, zoniet worden de berichten niet aan elkaar uitgewisseld.
Deze werking is anders als de verbinding met een CMS wordt gemaakt.
Dan worden alle berichten die geen p2p flag hebben doorgestuurd.
Het aanduiden ervan gebeurt door een header in de WL2K-Go module (X-P2ponly=true) die afgevraagd wordt wordt in de module WL2K-GO/mailbox/Syncdir op lijn 158: https://github.com/la5nta/wl2k-go/blob/master/mailbox/syncdir.go
Ik kan echter geen command line commando terug vinden om deze flag te setten.
RMS relay is een programma van Winlink dat je toe laat om lokaal een Post Office op te zetten.
Standaard wordt RMS Relay gekoppeld in het Winlink gebeuren en zorgt het voor het doorsturen en collecteren van alle berichten.
Om dit toe te laten moet je station geregistreerd zijn als een RMS Gateway.
Als je echter RMS relay enkel en alleen wil gebruiken om op een local LAN een TCP post office te maken, dan is er enkel een geldig gebruikers Winlink account nodig.
We gebruiken RMS relay als brug tussen verschillende Radio stations, waarbij manueel de berichten worden overgezet.
Hier een omschrijving van de toepassingsmogelijkheden. als Post-Office Only in Emcomm
Je kan RMS Relay downloaden van de winlink site sysop download area
Pak RMS Relay uit en installeer het als Administrator.
Bij de eerste opstart wordt je gevraagd hoe je RMS relay wil draaien.
Kies hier voor:
Operate as stand-alone network "post office" storing messages locally
Laat de optie "Check Callsign-password" uit want anders is er internet nodig.
Klik Next
Geef je callsign, paswoord en locator in.
Kies het IP adres van je PC, zodat ook andere toestellen op de LAN kunnen gebruik maken van dit post-office.
In het voorbeeld is dit 10.99.25.125.
Zet de firewall zowel private als public open voor deze toepassing en druk op Allow Access.
Vermits de software als een stand-alone stukje draait, kan je je eigen Winlink Express gebruiken om van op dezelfde of een andere PC ermee verbinding te maken.
Open een Telnet Post Office
Kies "Add server
Geef als server naam de naam op van het station waarop de RMS relay Post Office draait, in dit voorbeeld is dit ON4AWM.
Geef het IP adres op dat je gebruikt hebt om het Post Office te configureren. Vb: 10.99.25.125
Voorlopig stel je geen Polling time op, iets wat handig is als je verder wil automatiseren, doordat dit in de achtergrond draait vanuit Winlink Express.
Druk Save.
Je kan meerdere Post office servers configureren, waarna deze te selecteren zijn uit de lijst als Network Server.
In ons voorbeeld staat er maar één gedefinieerd nl ON4AWM.
Druk Start om een poll naar de postoffice uit te voeren.
Je zal zien dat er een verbinding wordt gemaakt voor
In Pat kan je dezelfde settings gebruiken om deze client te laten verbinden met de postoffice.
Start de configuratie van Pat.
.\pat.exe config
Pas de volgende lijn aan conform het voorbeeld.
Het is niet nodig om een paswoord te voorzien, vermits er geen controle is ingesteld.
Je kan daarom het default paswoord laten staan of weglaten.
"connect_aliases": {
"telnet": "telnet://{mycall}:CMSTelnet@10.99.25.125:8772/wl2k"
},
Om de verbinding te testen geef je het commando voor de opstart van een telnet sessie:
.\pat.exe connect telnet
Maak je in Winlink Express een bericht aan voor een PAT client, (ON4AWM voor ON5CLM) als een Winlink Message (niet P2P), dan zal je zien dat bij de synchronisatie met de Post Office, het Outbox bericht naar de postoffice wordt verstuurd en bij Winlink als Sent Items terecht komt.
Maak de PAT client (ON5CLM) nu opnieuw een verbinding met de Post Office, dan zal het bericht gelezen worden en in PAT terecht komen.
Omgekeerd:
Wanneer men via de Pat Command een nieuw bericht aanmaakt voor een gebuiker, dus geen P2P bericht, en een telnet verbinding opzet, zal dit bericht in de RMS Post Office bewaard worden en bij de volgende verbinding van die klant uitgelezen worden.
Je ziet in ons voorbeeld dat een bericht van ON5CLM(PAT) naar ON4AWM(Winlink Express), is toegekomen op on4awm.
ON4AWM
Type: Private
X-P2ponly: true
Stuk van de code WL2K-GO bib, gebruikt in PAT
https://github.com/la5nta/wl2k-go/blob/master/mailbox/syncdir.go
Stuk van de code van PAT
Implementatie opmerking ontwikkelaar:
Door gebruik te maken van de RMS Post Office functie kan RMS Relay als een Local Post-Office geïnstalleerd worden, zonder een RMS Gateway licentie.
De user interface is Winlink Express, waarbij standaard de local RMS Relay Post-office gebruikt wordt om berichten voor DsyncFS van/naar te versturen.
Het blijft nog steeds mogelijk om via andere wegen in Winlink berichten te versturen of forwarden.
De PAT universal Winlink Client, kan eveneens een telnet contact maken met de RMS Relay Local Post Office en berichten ophalen voor zijn user.
De configuratie vereist een mycall user, zijnde de call-sign die ook gebruikt wordt in Winlink, alsook een paswoord.
Echter voor deze verbinding moet dit niet het echte Winlink Paswoord zijn en is ieder "niet-leeg" paswoord voldoende.
Voor iedere user op DsyncFS zal er dus een verbinding dienen gemaakt te worden, telkens met een andere mycall user, maar eventueel wel met een generiek paswoord.
Na de verbinding komen de toegekomen berichten in de folder .wl2k\mailbox\CALL\in.
Berichten die dienen geleverd te worden moeten in .\wl2k\mailbox\CALL\out staan.
Beichten die ooit verzonden zijn vind je in .\wl2k\mailbox\CALL\sent staan.
Berichten dragen een unieke nummer en kunnen nooit dubbel geleverd worden.
Een brug tussen DsyncFS en een andere winlink mode (of het internet) dient steeds "manueel" te gebeuren door een forward te doen van het bericht.
Dit houd in dat als een DsyncFS user een bericht naar een niet-DsyncFS gebruiker wil sturen, steeds het gateway station als doelstation opgeeft.
Voorbeeld:
ON4AWM heeft zowel DsyncFS als Winlink access en fungeert als Netleader in het DsyncFS netwerk
ON5CLM (DsyncFS) gebruiker heeft een bericht voor ON4AAA(non-dsyncFS gebruiker) en zal dit dus sturen naar ON4AWM met de vermelding "Bericht voor ON4AAA via ON4AWM".
Zo weet iedereen welke terugweg dient gevolgd te worden bij het versturen van een reply.
Dit wordt opgezet als een Local Post Office en de optie voor de controle van Winlink user paswoorden wordt uitgezet.
Het IP adres kan Localhost zijn (single PC) of het IP van de PC, indien je een installatie zou opzetten waarbij meerdere PC's gebruikt worden op een LAN.
De call sign is deze van het lokaal station: vb ON4AWM
De RMS Relay moet manueel geïnstalleerd worden.
Dit kan niet vanuit DWS..
Hier worden eventueel 2 RMS relays geconfigureerd (Met verschillende IP poorten), waarbij één als Local Post office (voor DsyncFS) en een ander voor alle andere modi (trimode, Packet, Telnet Winlink ect).
Je kan ook gebruik maken van de Local user optie op de RMS Gateway Relay (vb ON4BAF), zodat de DsyncFS gebruikers (en/of packet en telnet gebruikers) nooit geforward worden naar Winlink.
Deze lijst dient echter "manueel" opgesteld te worden voor de DsyncFS werking.
De telnet Post Office server wordt geconfigureerd verwijzend naar de RMS Local Post Office, zijnde :
Call met IP adres 127.0.0.1 en poort 8772.
Als Polling stel je iedere minuut in.
Vink de optie aan: Send all messages in Outbox
Vermits de polling in de achtergrond gebeurt moet de gebruiker binnen winlink niets doen en zal hij standaard nieuwe (reguliere berichten) zien in de Inbox en nieuwe berichten als een standaard winlink bericht kunnen versturen (deze komen dan in de Outbox) terecht.
Dit station zal voor RMS relay één of meer configuraties kunnen bezitten in de Telnet Post Office server setup.
Hierbij moet je gebruik maken van de Local User optie, zoniet worden de DsyncFS user berichten gewoon doorgestuurd naar Winlink CMS (via de RMS) en niet lokaal bewaard om opgehaald te worden door de DsyncFS Post-Office software.
Hier wordt voor beide de optie "Send all messages in Outbox" afgezet en dient de operator zelf de betreffende PO server te kiezen wanneer er een bericht in zijn outbox zit dat een bepaalde richting uit moet.
Een configuratie van een lijst van Local Users in de RMS Local Relay Post Office (DsyncFS) kan er voor zorgen dat berichten tussen DsyncFS gebruikers onderling, nooit toevallig verder worden gestuurd, maar is niet echt noodzakelijk.
Zonder deze lijst kan een user langs meerdere wegen benaderd worden en is de weg die gekozen wordt vrij te kiezen door de operator van het forward station.
Dit principe gebruikt code van PAT om de RMS Relay te contacteren en de berichten voor een bepaalde gebruiker te lezen of er berichten voor door te sturen.
De berichten zijn steeds "user gebonden", dit houd in dat er voor iedere user op DsyncFS een nieuwe verbinding dient gemaakt te worden met zijn respectievelijke USER (Callsign) en paswoord (generiek paswoord mag, wordt niet gechecked).
De berichten worden als een B2F file in sub-folders gezet onder de mailbox folder \call\..
Berichten die gestuurd worden aan meerdere gebruikers vanuit PAT, komen slechts één maal voor in de Out box van de zender in PAT.
Berichten die vanuit Winlink Express verstuurd worden naar meerdere gebruikers in PAT, vereisen telkens een verbinding van de betreffende gebruiker met de PO en zullen nadien terug te vinden zijn in de In folders van al die gebruikers.
Echter het zal steeds om dezelfde file gaan.
Wanneer we berichten trachten aan te bieden die reeds voorheen verstuurd zijn of zelfs als bron van de betreffende RMS relay komen, worden deze genegeerd.
Hierdoor wordt het mogelijk om alle berichten samen te brengen in één user \out folder en aan te bieden aan de RMS Local Relay Post Office via één verbinding (vb de call van de master, daar die waarschijnlijk het langste online zal zijn)
Voor het inlezen in Pat van berichten afkomstig van de RMS PO, dient echter iedere user apart connectie te maken met de RMS PO.
De lijst van DsyncFS gebruikers kan automatisch opgesteld worden door van alle DsyncFS systemen de "active station" info te gebruiken en als lijst mee te sturen in de berichten folder.
Berichten die zo gelezen worden komen bij de betreffende gebruiker in de \in folder.
Alle berichten, samen met de lijst van stations op DsyncFS kunnen in één folder gebracht worden en gesynchroniseerd worden met alle DsyncFS stations, deze folder bevindt zich in de Workdir van ieder station en zal door de DsyncFS PO samen gebracht worden in één folder. (.\out folder van de master )
De DsyncFS Post office software werkt de volgende stappen af:
Sanity check van DsyncFS zodat van een stabiele toestand vertrokken wordt.
De lijst van DsyncFS stations wordt geupdate indien er nieuwe DsyncFS stations worden gehoord en in de berichtenfolder gezet.
De lifetime van de stations zal waarschijnlijk langer moeten zijn dan een aantal minuten.
Hij plaatst alle bestanden van de Berichtenfolder in de .\wl2k\<MASTER>\out folder.
Deze < MASTER> folder kan een reguliere call-sign zijn van de Master op DsyncFS of een fictieve call sign (vb D4SYNFS, moet een cijfer bevatten)
Hij start een telnet verbinding met de RMS Local relay PO op.
Hierdoor krijgt de RMS alle berichten binnen, ook deze die niet voor het locale station bedoeld zijn.
Deze kan je opvragen in RMS relay/View Messages waiting...
Het locale station kan zijn berichten lezen via Winlink express (auto poll met Telnet PO in Winlink Express), zoals voorheen omschreven.
Tevens maakt de software opnieuw een verbinding met de RMS PO, voor iedere gebruiker op DsyncFS, zodat berichten verstuurd door het lokale station voor DsyncFS stations worden gelezen.
Na het lezen van de berichten van alle DsyncFS gebruikers, worden de files in alle .\in folders gekopieerd naar de Berichtenfolder
Als laatste wordt een "Transmit work dir changes" opgestart, om DsyncFS zijn werk te laten doen.
Retrigger timer gestart (iedere minuut) om te kijken of er nieuwe berichten zijn voor DsyncFS gebruikers.
Het lezen van de berichten uit de RMS PO en het versturen ernaar dienen niet op hetzelfde tijdstip te gebeuren.
Berichten lezen kan tijdsgestuurd met een polling gebeuren, zodat deze klaar kunnen staan in DsyncFS om verstuurd te worden als de sanety check in orde is.
Het afleveren van berichten aan RMS PO kan enkel indien er een stabiele toestand is op DsyncFS en wordt dus ook best getriggerd op een opkomende flank van Sanety check.