Wurf

From Nasqueron Agora

The wurf (Web Upload and Receive Files) utility allows spawning a server to allow to download a file and then automatically exits. It's planned to be deployed on Nasqueron servers by the end of 2024.

The wurf utility is a fork of woof (Web Offer One File) by Simon Budig. As woof has been released under the GPLv2+ license, the wurf utility is also released under the GPLv2+ license, and not under a BSD license. We thank Simon for their work on that utility.

Installation

As a PyPI package:

   $ pip install wurf

On FreeBSD 14:

   $ pkg add https://packages.nasqueron.org/freebsd/FreeBSD%3A14%3Aamd64/wurf-1.0.0.pkg

Manually:

   $ sudo wget -O /usr/local/bin/wurf https://raw.githubusercontent.com/nasqueron/wurf/refs/heads/main/src/wurf.py
   $ sudo chmod +x /usr/local/bin/wurf

If you still want to use woof as command name for transition you can alias it in your shell (alias woof=wurf) or provide a system-wide symlink:

   $ sudo ln -s $(which wurf) /usr/local/bin/woof

Notes on the fork

The name wurf has a more wolfish feel than dog-like. It was picked first, before picking Web Upload and Receive Files as a backronym.

The goals of the fork are to actively maintain a Python 3.x-compatible version:

  • replace the soft-deprecated getopt module with argparse
  • accept pull requests replacing the deprecated CGI module ✅
  • publish a man page ✅

We also aim to modernize web distribution by supporting TLS:

  • allow to write a configuration file with to document an existing proxy (nginx, haproxy, ...) to a specific wurf port, and expose the URL when that port is available
  • enable certificate support to serve fiels directly without a proxy

We would also like to restore the utility in package distributions:

  • The FreeBSD port I maintained was removed in 2020 due to incompatibility with Python 3 and the project's decision not to distribute packages for unsupported Python versions.
  • The Debian package was Python 2.7-only and was removed after Jessie (see T1644).

This situation has left Nasqueron in a tough spot, as we rely on this utility on our servers but have struggled to keep it maintained.

Hence, the fork for our own servers infrastructure.

FAQ

Can I use wurf outside of Nasqueron servers?

While the primary goal of the wurf preparation was to deploy it on Nasqueron servers, we would be delighted if others find it useful as well. We welcome contributions and feedback from anyone who sees potential in the tool and would like to use it.

Is wurf open-source?

Yes, wurf is open-source and released under the GPLv2+ license, the same as the original woof utility. This ensures that wurf remains freely available for modification and redistribution under the same terms.

Why isn't wurf licensed under BSD?

Because wurf is a direct fork of woof, which is licensed under GPLv2+, it must adhere to the same licensing conditions. This means it cannot be released under the BSD license.

Can I contribute to wurf?

Absolutely! We welcome contributions from anyone who finds the tool useful and would like to improve or extend its functionality. Feel free to submit pull requests, especially those that help modernize and maintain the codebase.

Project tasks: https://devcentral.nasqueron.org/tag/wurf/

How to report an issue?

You can report issue on DevCentral, attach it to the wurf project.

Why not keep the name woof?

We chose to rename the fork to wurf to reflect its new direction and functionality. wurf stands for "Web Upload and Receive File," emphasizing the enhanced features and modernization efforts we would like to make, particularly for Python 3.x compatibility and TLS support. The name change also helps signal that this is an actively maintained project, distinct from the original woof. While we respect the origins of woof, wurf represents a fresh, forward-looking approach for our needs and contributions.