la5nta / pat Goto Github PK
View Code? Open in Web Editor NEWA cross-platform Winlink client written in Go
Home Page: https://getpat.io
License: MIT License
A cross-platform Winlink client written in Go
Home Page: https://getpat.io
License: MIT License
Similar to ctrl+c in the command-line interface.
I have successfully built Pat for Android. It runs just fine, but we need some way of packaging it and controlling the daemon proc.
Syncthing does a great job bundling their Go appliaction and web UI for Android. I believe this is the place to start:
https://github.com/syncthing/syncthing-android
Fix this to avoid 'Re: Re: Re: Re: Re: foobar' message subjects.
@t-o-k sent me an email requesting/suggesting support for PGP signed messages.
PGP signing of the whole message (including attachments and maybe some headers) would be great, but I don't see how we could do this and still be compatible with regular email clients (messages sent to the internet via CMS and SMTP).
However, "PGP SIGNED MESSAGE" embedded in the message body will probably be compatible with common PGP aware email clients (verification needed), and it does not violate the winlink message format.
Signing and automatic/semi-automatic verification of a received PGP signed message would be a very nice feature for emcomm use of Pat.
Example:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256This is an example of a PGP signed message.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.14 (GNU/Linux)iF4EAREIAAYFAlK5pacACgkQuJVtv+58EFxiXgD/QGwQVCZMAlE7fL6V1Kbv4Ogq
Sa9VTEw+s9mWwiBInp4A/3guc2PvZb8iIdrCyWGwIMJIOQS8OuhWfjtN3CBhOSA1
=S+B+
-----END PGP SIGNATURE-----
A user community mailing list / forum should be provided for users to share experience and discuss usage of Pat.
Pactor support is currently missing.
It's currently blocked by missing transport package i wl2k-go (la5nta/wl2k-go#4).
Reported by AB4MW on the pat-users list:
Hello and thank you for this project. So tired of Windows/Wine hacks for WL2K.
I did my configuration and entered my call in lower case. Pat will not authenticate automatically.
(0.1.3 deb file)I had to change my call to UPPER case for it to work properly. That's odd because the password does not appear to be case sensitive!
Suggest that if upper case call sign is a requirement, to have the code automatically upper case the call sign, at least for authentication purposes.
73,
Mitch, ab4mw
This is a feature request from LA4TTA.
The interactive command-line interface provides some nice functionality that is not available through the Web UI. If it was possible to run the http server in background while in interactive mode, this would give the users more flexibility.
The gzip experiment in wl2k-go has been around for quite some time now, but I suspect it haven't been used much. Most people are not aware of it.
We may get some more feedback if we enable support for gzip compression by default. It's backwards compatible with LZHUF, so most users should be unaffected.
Pat's mailbox structure is designed to be easily synchronized between computers. Syncthing is a tool well suited for this.
Write a wiki article walking through the setup for syncing a Pat mailbox between multiple devices.
LA4TTA have reported issues with rigcontrol for ardop, no PTT control.
Currently Pat (and probably wl2k-go) treats callsigns case sensitive. This results in some unexpected behaviours.
Thanks LA4TTA!
Fix navigation so that users are able to switch between in/out/sent/archive without exiting the program.
When two Pat clients have a winmor P2P session, the client that does not send FQ will not receive it before the winmor connection ends.
According to the FBB protocol spesification a node should disconnect after sending the FQ:
If the other side has no message (after receiving an FF), it sends a line:
FQ
and disconnects.
My guess is that the WINMOR TNC does not flush it's buffer before sending the DISC frame, the resulting being that "FQ" never reaches the other node.
One way of fixing this may be to wait until the out buffer in transport/winmor is empty before sending the DISCONNECT command.
Hello, All. (esp. Martin @martinhpedersen )
I have everything working well (Pat and WINMOR) with one exception: controlling the PPT line via a simple RS-232/one-transister switch, without full CAT/CI-V rig control. I have Icom radios, but no CI-V control converter box.
I tried to set definitions with rigctld, but just managed to mess up things up and nothing in Pat would work at all. I'm back to a clean install and config file, and I can get everything working properly with VOX ptt, but that is where success ended (no connects, VOX circuit not nearly fast enough for WINMOR).
My question: how would I set up Pat's congif file to set the serial RTS line high, thus closing the PTT circuit via my simple little interface, but not using any form of remote (CAT/CI-V) rig control? In other words, to get it to function exactly as FlDigi or packet does? :^) I think such a set-up would benefit many hams, especially those on a budget.
Any ideas would be appreciated.
Best regards and 73,
Dave Hassler
K7CCC
A proper website for Pat is currently under construction.
The website will give a brief overview of the application's features and links to:
Would be nice to have an ARDOP wiki page similar to https://github.com/la5nta/pat/wiki/WINMOR-TNC.
From @martinhpedersen on May 22, 2015 18:10
On SIGHUP maybe?
Copied from original issue: la5nta/wl2k-go#2
The old build instructions is outdated, and can be greatly simplified as we don't support old Go versions anymore.
The document should mention that Go >= 1.5 is required.
There are some issues regarding breaking changes of gettimeofday
in macOS Sierra that may cause trouble for pre Go 1.7 compiled software. We should upgrade to Go 1.7 (scheduled to be released any day now) for our v0.2.0 release. See golang/go#16579 for more info.
In light of the macOS Sierra gatekeeper changes (issue #48) it would also be nice to have a signed release ready before macOS Sierra is released.
@kd8drx: Do you have access to a Mac with macOS Sierra beta installed? It would be nice to test wether or not v0.1.5 will run on it, and also start testing with Go 1.7 compiled binaries. I can provide you with pre-compiled binaries if necessary.
From @martinhpedersen on October 5, 2015 19:21
Need a way to edit config from web ui.
Copied from original issue: la5nta/wl2k-go#9
Feature request from LA4TTA.
Printing a message from the web UI results in very bad formatting and layout.
Maube it's possible to add a print stylesheet to the web UIs main page. Another approach can be to create a single message view page. A completely different approach could be to render and serve the message as PDF from the daemon.
Most physical TNCs require some pre-kissattach initializations.
As pointed out by @dranch, the share/bin/axup script contained some old references to the tmd710_tncsetup tool for this purpose. The references was removed, but it would be nice to have a method for custom initialization in axup.
Modifying the axup file after installation is not practical as it would be overwritten on the next Pat update.
A custom variable in /etc/default/ax25 which is eval'ed before kissattach seems like a decent solution, allowing users to bring/write their own initialization scripts.
Contributions from the community is very important if this project is going to survive over time. We need some guidelines that encourages any user to pitch in.
Some important topics:
Win 7 enterprice works ok but with a few windows specific bugz.
2016/03/09 10:37:49 Auto converting 'c14428aa-ee06-425e-bae7-9359825da005-medium.png'[image/png]...
2016/03/09 10:37:49 Error converting image: Invalid Parameter - -quality
-2016/03/09 10:38:27 Unable to move C:\Users\install/.wl2k/mailbox/LA3QMA/out/QIG
S6JK3CYTF to C:\Users\install/.wl2k/mailbox/LA3QMA/sent/QIGS6JK3CYTF: rename C:
Users\install/.wl2k/mailbox/LA3QMA/out/QIGS6JK3CYTF C:\Users\install/.wl2k/mailb
ox/LA3QMA/sent/QIGS6JK3CYTF: The process cannot access the file because it is be
ing used by another process.
The Mac OS Installer package tries to install pat to /usr/bin, which is protected by System Integrety Protection in Mac OS El Capitan and later versions - causing the installer to fail. An easy solution is to install the binary to /usr/local/bin, which is the "Apple Approved" directory for such software, and is in the default $PATH.
I'm happy to build and provide the installer - being a Mac admin, I have all the tools already. Even better, I can sign the package to prevent additional security warnings.
Thanks!
@martinhpedersen Well, the title says it all... Is this planned (shouldn't be that bad since the command structure ist quite similar to other TNCs)?
I don't have any experience using GO (though I'm not new to programming), so I'm not sure I can help much with the Implementation, but I should be able to get hold of some older PTCs and possibly a newer one in the not too distant future, all of which can be used for testing.
There's quite a bit of useful info on the SCS website, http://www.scs-ptc.com/en/Downloads.html
RMS Express and all other mainstream clients reports the user callsign, appname and version frequently to the winlink web API.
The feature/version_report branch implements this feature for Pat, but I guess there may be some privacy concerns about enabling this by default.
PROS:
CONS:
The feature will be optional, but enabled by default.
Feedback please :)
Mac ports is is generally considered deprecated by the community, and is not recommended due to how it installs packages and modifies the OS. The preferred tool by most macOS users is Homebrew (brew.sh), which is far easier to install and itself installs packages to /usr/local, thus preventing issues with SIP that generic *nix apps may run afoul of.
Package names are generally the same between the two. For example, to install hamlib the command would be brew install hamlib
.
I'm happy to edit those entries if given the privileges.
This bug does not effect the web UI's composer, only the command-line interface is affected.
Commit f995029 (in v0.1.4) changed the way the cli composer reads input from the user (to, cc, subject etc).
The new method introduced a bug that makes it impossible to input whitespaces in the subject field (amongst others).
The easy fix is to revert back to using a bufio.Reader.
It includes some bug fixes/enhancements, including:
The changes is not merged to master yet, but will be soon.
The current mailbox implementation uses only the MID as filename when storing messages (no filename extension).
This turned out to be a bad idea, because it's hard to distinguish proper messages from temp-files and other garbage from other applications (e.g. emacs' backup-files and syncthing artifacts).
By adding a file extension, most of these problems can be easily avoided by only attempting to open files with the expected extension.
This was accidentally removed by commit c91bc93.
From @martinhpedersen on October 14, 2015 10:10
Need a way to calculate distance between maidenhead locators for this.
Copied from original issue: la5nta/wl2k-go#14
Current image shrinking feature depends on imagemagick's convert. It would be nice to eliminate this external dependency by using a Go package instead.
https://github.com/la5nta/pat/blob/master/convert_image.go
On Windows, the current implementation is causing some problems (issue #9).
The ax25:///digi1/digi2/target url syntax is broken.
The fix la5nta/wl2k-go@dcc72ad is ready and we need to update the wl2k-go submodule.
Currently, users must use "ax25:///target via digi1 digi2".
For users to fully take advantage of the Winlink Hybrid Network, they would need a way to update their MPS (Message Pickup Station) lists.
Winlink Express updates the MPS list via the Winlink Web API directly over HTTP, or by posting a special INQUIRY message containing a sequence of these API requests.
These updates (requests) are guarded by a WebServiceAccessCode
which we need to obtain/generate in order for users to update their MPS list via Pat.
Example update message:
Message ID: U2YDOUIYDUA4 Date: 2016/03/27 14:52 From: LA4TTA To: INQUIRY Source: LA4TTA Subject: CMSWEBSVC /mps/delete?requester=LA4TTA&callsign=LA4TTA&WebServiceAccessCode=F630KKDH9L /mps/add?requester=LA4TTA&callsign=LA4TTA&mpsCallsign=LA3F&WebServiceAccessCode=F630KKDH9L /mps/add?requester=LA4TTA&callsign=LA4TTA&mpsCallsign=SM5RVH&WebServiceAccessCode=F630KKDH9L /mps/add?requester=LA4TTA&callsign=LA4TTA&mpsCallsign=HB9AW&WebServiceAccessCode=F630KKDH9L /mps/delete?requester=LE1OG&callsign=LE1OG&WebServiceAccessCode=F630KKDH9L /mps/add?requester=LE1OG&callsign=LE1OG&mpsCallsign=LA3F&WebServiceAccessCode=F630KKDH9L /mps/add?requester=LE1OG&callsign=LE1OG&mpsCallsign=SM5RVH&WebServiceAccessCode=F630KKDH9L /mps/add?requester=LE1OG&callsign=LE1OG&mpsCallsign=HB9AW&WebServiceAccessCode=F630KKDH9L
The original WebServiceAccessCode have been changed, in case it contains sensitive information. Thanks to LA4TTA for providing this example.
Until this is implemented users are advised to update their MPS list using Winlink Express.
I'm happy to build and provide the installer - being a Mac admin, I have all the tools already. Even better, I can sign the package to prevent additional security warnings.
Having the Mac OS package signed so users don't have to work around the security system in OS X would be nice!
As mentioned in #47, I've already semi-automated the .pkg packaging using using Packages. Have a look at osx/pat.pkgproj. I do not have much experience with .pkg-packages, don't even know if I picked the right tool for the job ;)
Could you describe how you would go about packaging Pat for Mac OS? Which tools would you use?
Regarding package signing, how could we ensure that other project members can step in and sign a release if you're not available for some reason? In other words, is it possible to have multiple people signing releases?
Thanks for your interest in contributing, this is much appreciated.
ARDOP_WIN changed it's host interface in v0.5. We need to migrate to the new interface.
Turns out CMS may encode the subject header as utf8 when receiving q-encoded words, and not the normal ISO-8859-1. Both encoding violates the FBB-protocol, but that's another story.
wl2k-go now handles this. Update the gitmodule and we're good to go :)
The post button in the composer modal is not working properly on most browsers.
Ref la5nta/wl2k-go#41:
Porting the code to Go would eliminate the need for cgo, thus making the wl2k-go framework even more portable. It will also allow us to further improve the code, getting rid of the intermediate temp files and other rough edges.
This will also enable us to cross compile Pat to a handful new platforms (dragonfly, freebsd, netbsd, openbsd, solaris, plan9). We could even cross compile the windows and darwin releases from a Linux host.
The port has already been written, but need further testing.
The image resize feature is only accessible from the web UI. The ability to resize image attachments has proven very convenient, so it's time to make this accessible from the command line interface too.
https://developers.google.com/web/updates/2016/04/geolocation-on-secure-contexts-only
This will affect users of Chrome connecting to Pat over network (non-localhost connections): They will not be able to use browser location for generating position reports.
The fix would be to support HTTPS and catch the PositionError object thrown when the geolocation API is called over HTTP.
The windows build of develop is failing after upgrade to the golang port of lzhuf (issue #50). Specifically go test ./vendor/github.com/la5nta/wl2k-go/lzhuf.
The wl2k-go build (same build env, same code) passes all tests, which is very strange.
--- FAIL: TestWriterTestdata (0.14s)
lzhuf_test.go:156: Running LPE5NXDVLVSQ.b2f...
lzhuf_test.go:156: Running Mark.Twain-Tom.Sawyer.txt...
lzhuf_test.go:179: Mark.Twain-Tom.Sawyer.txt: Byte idx 0 not matching. Skipping rest of compare.
lzhuf_test.go:156: Running e.txt...
lzhuf_test.go:179: e.txt: Byte idx 0 not matching. Skipping rest of compare.
lzhuf_test.go:156: Running gettysburg.txt...
lzhuf_test.go:179: gettysburg.txt: Byte idx 1 not matching. Skipping rest of compare.
lzhuf_test.go:156: Running pi.txt...
lzhuf_test.go:179: pi.txt: Byte idx 0 not matching. Skipping rest of compare.
FAIL
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.