[gopher] Gophernicus Server 0.4 released (renamed from kgopherd)
Kim Holviala
kim at holviala.com
Mon Mar 29 12:23:03 UTC 2010
Everyone's dead already? Was I really gone for that long? Oh well, I'll
just talk to myself then :-).
First of all, kgopherd is now known as Gophernicus Server. Yes, I plan
to do a client too once I'm done with the server...
After a long hiatus I finally got back to coding and finished some of
the things I set out to do with my gopher server. Since you all seemed
*cough cough* a bit cautious about my gopher++ additions I decided to do
as much as I could without any changes to the protocol. Turns out most
of the thigs i wanted to accomplish were doable with a little hacking
and cheating....
My first problem with the protocol was that the server didn't know the
filetype what the client was requesting. That's pretty much solved
without any changes to the protocol. Related to that was the problem
where the client had no idea what kind of data the server was sending -
that's also pretty much solved as the server now sends back whatever the
client expects.
The next problem I had was with charsets. That's solved, kind of, but
not properly yet. Bascially I scrapped iconv() and made my own charset
conversion function which is input autoconfiguring and can output
US-ASCII/Latin-1 and UTF-8. The current version only outputs US-ASCII
which is compatible with all clients - problem solved but it could be
better (how does the server know when to output UTF-8?).
I also wanted virtual hosting which is pretty much impossible without
any changes to the protocol. Or so I though... with enough creative
hacking that was _also_ solved fairly reliably. So yes, I have support
for virtual hosting with plain gopher0 - compatible with all clients.
After virtual hosting and the session support that it required I was
also able to include referrer support (yes, with gopher0 and zero
support from clients) and throttling for clients who exceed predefined
hit/kb limits.
I also added support for the (semi-)standard machine-parsable
/server-status request which makes it possible to integrate Gophernicus
with many monitoring tools - I myself use Munin which now can graph
gopher requests & volume.
The BSD-licensed code can be downloaded form:
gopher://gophernicus.org/1/software/gophernicus/server/
Munin integration example:
gopher://holviala.com/1/statistics/
gopher://holviala.com/0/server-status
Request type snooping examples via autotyping error pages:
gopher://holviala.com/1/foo/bar/
gopher://holviala.com/0/foo/bar.txt
gopher://holviala.com/I/foo/bar.png
Charset examples:
gopher://holviala.com/1/~kimmy/code/gophernicus/testsuite/
Referrer example:
gopher://holviala.com/1/~kimmy/code/gophernicus/testsuite/cgi-bin/
Then open "dump.sh" and search for REFERER.
Virtual hosting examples:
See above. Both of the domains listed above run form the same server &
IP address. Try browing around on both gophernicus.org and holviala.com
and you'll see that it works fairly nicely. Changing from one
virtualhost to another is usually automatic and works without any hacks,
but depending on what you do you might need to use the magical
vhost-changing selectors which are listed on the bottom of both domains
root menus (the list is automatic with just a "%" in the gophermap).
Documentation is currently lacking a bit.... :-/
- Kim
More information about the Gopher-Project
mailing list