When it comes to Oxford University personal web space, the University Computing Services have some very hard-and-fast rules about CGI scripting. This includes a battened-down Perl interpreter environment, and the masking of several key functions and keywords. Filesystem manipulation is banned. And it goes on. So I wrote the following, which work within those constraints...


Having once been webmaster for a couple of university societies, I've been asked to set up and manage a forum-type system a couple of times. This invariably entailed linking out to some random forum host - it's clumsy, it costs money, and it reliquishes control of your content. On the other hand, ShojaForum works directly within University webspace - if you'd like a forum for your society's webpage, or just one of your own, try it out!

Read the included README.txt file to figure out what to do, although it should be ridiculously direct and simple to set up!

Licensed under a BSD-like license.


ShojaSite, a content management system

Written for a friend while at uni, ShojaSite is a simple CMS with a complete web-based administrative interface that's designed specifically to work on University webspace. You can download a zip archive with all you need to get started. There used to be a demo on my own University webspace, but it's long since expired - sorry!

Licensed under a BSD-style license.

Download zip file

XMLDBParser, a database module

This is really a Perl module of sorts, but since it's written for Safeperl it's meant to be copy-pasted into a Safeperl script. It provides a class, XMLDBParser, which should abstract away most of the issues with trying to maintain a database of any kind in a Safeperl environment.

Just give it a blank file, and it will use an XML-like format to store almost arbitrary data. It was developed as the database backend for ShojaSite, so should be fairly robust.

Licensed under the GNU Lesser General Public License.

Download / View Source - it's labeled with an additional .txt extension to allow it to render in a browser.

It took me bit of research to find the actual HTTP headers sent to set cookies, and rather than write and rewrite the routines several times I've encapsulated them in a simple class - a module in the same spirit as XMLDBParser above. The Cookie object can set cookies (allowing just name and value, or more parameters, to be set) and provide information on existing cookies.

Licensed under the GNU Lesser General Public License.

Download/ View Source - it's labeled with an additional .txt extension to allow it to render in a browser.