// HACKER NEWS — CYBERSECURITY
TailTalk: A modern async user space AppleTalk stack with Rust and Tokio
TailTalk is designed as a "toolkit" for building fully userspace AppleTalk implementations on Linux, Mac OS and Windows
systems via EtherTalk or LocalTalk networks. It is built from scratch with zero dependencies on Netatalk or any kernel
drivers - All it needs is a raw socket and/or TashTalk compatible device (for LocalTalk) and patience for grumpy old computers.
It provides a complete AppleTalk stack, with multiple copies of it able to run on the same machine
at the same time.
I started this project to be able to copy files to/from my old Macs, print to LaserWriters, ImageWriters and networked StyleWriters, and be able
to write modern async software to communicate with them. Currently TailTalk only works in a routerless setup - work is in progress
to make it gracefully join router present networks but it is not yet in the mainline code.
Each part of the stack is meant to be as "zero config" as possible, just like running on a Mac of the era. Just plug it in,
launch and things should just work without any fuss.
This project is very much a work in progress prototype, so expect bugs and missing features.
This is the current user facing program for use with TashTalk USB. It includes an AFP server which should work with just about
every Mac that shipped with a LocalTalk port. It also can import Stuff-It archives and floppy disk images and load them in to
the share path preserving the resource forks and make them available to remote clients.
It additionally supports sharing LocalTalk capable LaserWriters, ImageWriters and StyleWriters to modern networks as AirPrint / IPP printers,
and sharing modern printers to classic Macs. The latest release can be found here:
https://github.com/FeralFirmware/TailTalk/releases/latest
Packet parsers and fully async APIs for almost all the major AppleTalk protocols.
It additionally supports running with TashTalk for LocalTalk Macs.
The AARP/DDP underlay can run either in-process (the default) or in a shared
daemon, tailtalkd, which owns the interfaces and serves DDP sockets,
addressing, and routing rules to multiple clients over a protobuf protocol on
a Unix or UDP socket — usable from TailTalk (TalkStack::builder().daemon_unix(..))
or plain C clients. See docs/daemon-protocol.md.