Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bundle new AFP client #1875

Open
rdmark opened this issue Jan 12, 2025 · 3 comments
Open

Bundle new AFP client #1875

rdmark opened this issue Jan 12, 2025 · 3 comments

Comments

@rdmark
Copy link
Member

rdmark commented Jan 12, 2025

This is to discuss a replacement for the venerable asip-status Perl script. This script is ancient (written in the 90s), monolithic and has an ambiguous license grant (flagged as such by Debian, for instance.)

Why is it important to bundle an AFP client with netatalk? It is in fact invaluable for running quick sanity checks on running AFP servers, and test other AFP operations when you don't have a Mac handy.

A few options are available to us:

  1. Roll a new client from scratch
  2. Roll a new client using @demonfoo 's afp-perl library
  3. Fork and bundle a subset of @alexthepuffin 's afpfs-ng C client
  4. Anything else?

High level requirements:

  1. Cross-platform (can run on all OSes that we support)
  2. Parse the response from an AFP over TCP request (e.g. DSIGetStatus) and print the server status
  3. stretch goal: Support for AFP over DDP
  4. stretch goal: UAM auth to list available volumes
  5. stretch goal: Fully-fledged CLI client with AFP file transfer support
@rdmark
Copy link
Member Author

rdmark commented Jan 12, 2025

afp-perl pros and cons

Pros

  • Actively maintained
  • Written in Perl, which is a language already used broadly in netatalk
  • Ships with a sample AFP client that works well
  • UAM auth support
  • Companion atalk-perl library that can do DDP

Cons

  • Not packaged and distributed downstream
  • Not under an open source license
  • Large number of Perl library dependencies

F.e.: On Debian 13 I had to install these packages for the baseline requirements of afpclient.pl

liblog-log4perl-perl
libmodern-perl-perl
libparams-validate-perl
libclass-insideout-perl
libterm-readpassword-perl
libcrypt-cbc-perl
libcrypt-des-perl
libgssapi-perl

@rdmark
Copy link
Member Author

rdmark commented Jan 12, 2025

afpfs-ng pros and cons

Pros

  • Written in C, the language of netatalk; could fit right into our build system
  • Comes with asip-status drop-in replacement app afpgetstatus
  • Comes with fully-fledged AFP CLI client afpcmd
  • UAM auth support
  • Highly portable; few dependencies
  • Licensed under GPL v2, same as netatalk

Cons

  • Not actively maintained
  • Spotty IPv6 support
  • Need to evaluate resilience in today's security context

Note: I have made my own fork of afpfs-ng that works passably well.

@rdmark
Copy link
Member Author

rdmark commented Jan 12, 2025

For the record, both afp-perl and afpfs-ng has support for fuse file system mounting of AFP volumes, but I haven't been able to get either to actually work in my environment.

@rdmark rdmark added this to the release-4.2 milestone Jan 24, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant