General description
The Auterytech website engine (atengine) is a collection of various Perl scripts that I use to run my personal website, auterytech.com. The scripts include the main site engine, a private journal engine, a blog-writing tool, a photo album, a simple color scheme selector, a simple CGI counter, and a buggy public calendar.
Copyright, license.
atengine is copyright 2002 Curtis Autery, and is licensed under the GNU General Public License.
Status
atengine is still in its infancy. Version 0.1c is the current build, and the calendar engine is not included with the release.
I plan on developing the engines into a nice suite of web tools with an HTML front-end for adding content. Developing isn't a full time job for me, so it will probably be a few months before I consider this project out of beta.
The main site engine - at.cgi
This is responsible for slapping a standard header and trailer onto a web page. The 'content pages' are text files that allow embedded HTML, and simple substitution such as turning # into a <p> tag, turning % into <div id=hed>...content...</div>, etc.
Sites built with atengine work best when all links are funneled through at.cgi?node=(node)&file=(content file).
The encrypted journal - journal.cgi, encode/decode.html
This uses a simple encryption method (adding ASCII values of a secret code to the ASCII values of journal content) that is all client-side JavaScript. Encrypted data can be posted to a user directory, and the secret code is never stored.
User manager - new_user.cgi, logon.cgi, newuser.txt
A very simple user manager/sign-up engine was originally written just for the encrypted journal. A registration link is emailed to the new user after signing up, and clicking the link invokes the creation of the user's directory.
For the registration email, I opted not to use sendmail/exim/etc., but to telnet to localhost on port 25 and initiate a manual SMTP session. In theory this should work with any SMTP server that allows unsecured logons from localhost, hence should work on non-Linux servers. I may reverse my thinking on this later, but using IO::Socket to do things directly with Perl is pretty nice.
Color selector - setcss.cgi
This is a simple cookie-driven engine that stores a default .css filename. Currently there are three color-scheme .css files included to choose from, and I am also working on making my custom color chooser cross-compatible with Netscape/Mozilla. This will work with the user manager to store a file on the server with the user's color preferences.
Photo album
This is a third-generation release of a 'photo journal' site I had implemented on some other web pages, going back to my members.aol.com days [yech!]. A single image is displayed in the main browser window, and two pop-up windows open, one for navigation, and one for comments.
This build is cross-browser compatible. It works with the current releases of Mozilla, Internet Explorer, and Konqueror, but not with Opera (a lot of the DOM code I use relies on '.innerHTML'). It detects whether pop-ups are enabled, and if they are not, the pop-up window content is included on the main page.
Image collections are stored in separate directories, and each image has a collection owner, a title, and an optional comment. A sample two-image album is included as of release 0.1c.
Calendar
Not yet functional. This will emulate a lot of the functionality available on calendar.yahoo.com. My main reason for developing this is to export .vcs (vCalendar) files from my PDA, and import them to my website.
Blogger - blogger.cgi
The blog writing tool is part the main engine, and is called from at.cgi. Any 'content file' can display a directory's worth of blogs by using one of the substitution commands, namely @. Not to be confused with a standard RSS blog or visitor chalkboard, my blogger is just for the purpose of easily adding comments to an existing page, and optionally archiving older comments.
After seeing the @ command, at.cgi calls blogger.cgi and passes a directory variable to it, and blogger.cgi parses and displays all the .blg files in that directory using the 'content file' rules from at.cgi.
blogger.cgi will get fleshed out later to allow posting by random surfers, or optionally, registered users.