[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[gopher] Gophernicus Server 0.4 released (renamed from kgopherd)



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



_______________________________________________
Gopher-Project mailing list
Gopher-Project@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/gopher-project




Reply to: