After a suggestion by someone, I got it in my mind that a certain group could really do with a NNTP (Usenet) caching proxy. NNTP Proxies and Caches do already exist, but none of them support cache hierachies - that is, trying to resolve articles from peer caches before talking upstream.
The use case here is WACAN, a wireless network where each participant may want to offer their article cache for use by members on the network.
So after talking about it for a little while, I wrote one.
It’s pretty terrible code actually (suprise!) - I’ve hand written the parser and for now it supports the bare minimum set of the protocol to support SABnzbd. NZBGet won’t work, but could with some minor command support.
This ended up being useful to me for some of my other forever projects, so I’ve had a chance to look back at this recently and am considering revisiting it if I have time.
If that happens, I’ll be looking to rewrite the parser using Ragel and targeting either Go (even though it has the pretty useful net/textproto package) or C++.
The new implementation will be a lot simpler, backing usenet requests onto stateless HTTP requests - leaving the implementation as a fairly flexible and pluggable exercise.
I’ve done a bit of testing with this already, specifically trying to use the news
and nntp
schemes over HTTP - though library support for this (I’m looking at you net/http and libcurl is pretty average).
Watch this space, I guess.