Resurrecting AppleTalk
Computer networks were revolutionary in the 1980s, but they’re required today.
Old Macs could do file sharing among themselves very easily back in the day, over LocalTalk, but today ethernet is ubiquitous and everything is on the internet. So, it got me thinking, is there a way to route AppleTalk over the internet?
abridge
After much digging, I came upon Rob Braun’s abridge project. It was perfect, it did exactly what I wanted. I had some trouble compiling it, so I made a few tweaks to get it to build on a Raspberry Pi and put it on github.
appletalk-bridge
Things were good, but I was still concerned by the limitations of abridge. I wanted encryption and authentication to protect my networks. So I embarked on a quest to add these features to abridge. Then, I started trying to build a server using OpenSSL for the transport security. Then, I took a step back.
It occurred to me, use something that already exists and is meant for distributing packets (aka messages) to clients that supports authentication and security. A RabbitMQ fanout topology is exactly what I need to relay packets between distinct AppleTalk networks.
So, I built a new AppleTalk bridge that uses any RabbitMQ server as a backend, over SSL or not. All props to to Ron’s original work, because all the pcap
code is borrowed from him.
It is not blazing fast over the internet, but it is certainly usable.
BasiliskII Emulator
What else would you want, besides bridging disparate AppleTalk networks together? In the BasiliskII emulator, setting up the sheep_net
driver to allow the emulated Macintosh system to access the outside is a pain (kernel modules = ick). So why not just add a new network driver that directly reads and writes to the network via the RabbitMQ AMQP interface used in the appletalk-bridge?
So, I forked the original BasiliskII repository on github and to my own fork that adds just that.
In the $HOME/.basilisk_ii_prefs
file, change your ether
driver to an AMQP URL, i.e.
ether amqp://guest:guest@localhost:5671/?appleshare
or with SSL:
ether amqps://guest:guest@localhost:5671/?appleshare
where the ?appleshare
defines that it should use the appleshare
exchange.
Hints to compile BasiliskII with the AMQP driver
- On a Mac, run
brew install sdl gtk+ rabbitmq-c
- On ubuntu, run
sudo apt install -y librabbitmq-dev
Check the Compilation Guide for general information on how to compile BasiliskII, but the gist of the guide is:
cd macemu/BasiliskII/src/Unix/
make clean
NO_CONFIGURE=1 ./autogen.sh
./configure --enable-sdl-video --enable-sdl-audio --disable-vosf --disable-jit-compiler --with-x --with-gtk
make -j 32