Over a three day period spanning June 16, 17, and 18 of 2013 (UTC), someone attempted and probably suceeded in downloading the entirety of the Interactive Fiction Archive from gopher://gopher.feedle.net. This caused a massive spike in outbound network traffic that has probably cost some money. I’m not sure yet how much. We have the logs and are tracking down who did it.
Until now I thought gopher daemons didn’t need throttles. In the wake of this, I’m trying to understand pygopherd enough to add that functionality. If you’re savvy with Python and would be interested in contributing some code, I’d very much appreciate it.
If you did it, shame on you. That was completely inappropriate behavior.
I looked a bit at pygopherd. The request handler is in initialization.py and is named ‘GopherRequestHandler’.
All the logic calling this request handler comes from the python standard library “SocketServer”.
pygopherd only becomes active when the request handler is called, checks for the protocol
used and serves it.
Note that I can read/write Python but have no experience with real internet servers.
No idea how to do throttling properly. Would it be just limiting requests per hour?
You are using the default ForkingTCPServer?
Yes. It would be a good idea to leave it on (turn it off temporarily while fixing it if that is necessary); otherwise the link in my own gopher is broke. (Maybe some indexing service accessed it?)