Under construction since 1999

A product of Gibson Mainframe Co. — Hack the planet.

The web application server for the new millennium. Rebuilt from scratch in C, 27 years late.

A loving, fully working tribute to the CFML application servers of 1999: the tags, the functions, the frameset Administrator, the Error Diagnostic Information pages, and the password "encryption" you could break with a pencil.

What is this?

KoldFusion is a web server and CFML engine in about 27,000 lines of dependency-free C. Point a browser at it and you get the whole 1999 experience: <CFQUERY> against a built-in database, session and client variables, <CFMAIL> spooling to real SMTP, scheduled tasks, Verity-style search, WDDX, CFX tags compiled from C, custom tags with ThisTag.GeneratedContent, CFFORM's generated JavaScript… and every page of the navy-and-sage Administrator.

It is not a modern CFML engine. It is the one you remember, bugs and all — variables are case-insensitive, comparisons print YES, nested IIf() still bites, and there are no user-defined functions (those arrived in the next version).


Quick Start

$ git clone https://github.com/HappyCatKitten/koldfusion.git $ cd koldfusion && make $ ./bin/kfserver KoldFusion Application Server Enterprise 4.5.1 SP2 Copyright (c) 1995-1999 Gibson Mainframe Co. All rights reserved. Listening on : http://127.0.0.1:8500/ Administrator : http://127.0.0.1:8500/CFIDE/administrator/index.cfm

Needs only a C compiler, make and pthreads. Administrator password: admin. Please keep it on 127.0.0.1 — the security is authentically 1999.


Screenshots New!

Every screenshot is the real server running in a modern browser. Click to enlarge.


The 1999 Web New!

Twelve web sites from the class of 1999, re-imagined as loving parodies and served by KoldFusion, each at its own address like an IIS virtual site (http://yowza.localhost:8500/). Over 2,300 static pages with search, shopping carts, proxy bidding, threaded comments and moderation all done the 1999 way: cookies and document.write(). Every name, story, product and graphic is invented. Start at http://localhost:8500/web1999/.

» Visit The 1999 Web live, right now, in your browser « New!


Everything in the Administrator works

server

  • Request limit, timeouts, the Restart at N unresponsive requests watchdog
  • Template & query caching, trusted cache
  • Basic Security: tag restrictions, unsecured tags directory
  • Advanced Security: user directories, contexts, rules, policies
  • Variables, Locking (full checking!), Mappings, Java, Version Info

datasources

  • ODBC, Native Drivers and OLE DB pages
  • "CF Settings >>": restrict SQL operations, login timeout
  • Verify Data Source & a table browser
  • All served by the built-in Flat-File Driver

extensions

  • CFX tags: real shared libraries, ProcessTagRequest()
  • Applets registry for <CFAPPLET>

logging

  • "Severity","ThreadID","Date","Time","Details"
  • Slow-page logging, syslog, mail logging
  • Log file viewer with download & delete

automated tasks

  • One-time, daily/weekly/monthly, every N minutes
  • RUN now, publish output to a static file

miscellaneous

  • Mail: verify, spool, undeliverable folder, respool
  • Debugging output appended to every page
  • Verity collections: create, index, optimize, purge

Hello, 1999

<!--- hello.cfm --->
<CFQUERY NAME="emps" DATASOURCE="cfsnippets">
  SELECT FirstName, Department
  FROM Employees ORDER BY Department
</CFQUERY>
<CFOUTPUT QUERY="emps" GROUP="Department">
  <H4>#Department#</H4>
  <CFOUTPUT>#FirstName# </CFOUTPUT>
</CFOUTPUT>
<CFOUTPUT>Is it 1999? #Year(Now()) IS 1999#</CFOUTPUT>

Accounting

Oscar Rosa Ida

Administration

Quentin Hank Nadia

Engineering

Wendy Samir Lena Jack…

Is it 1999? NO

Grouped output, nested CFOUTPUT and a comparison that prints NO, exactly like 1999.


Authentically insecure

Encrypt() is the original algorithm, re-implemented bit for bit and checked against the published test vector:

<CFOUTPUT>#Encrypt("text", "key")#</CFOUTPUT>   <!--- $38YC!P   --->

It is a three-register bit generator whose key schedule only ever reads characters 5 to 8 of your key. The Administrator stores its own password with it, under a fixed key, in a REGEDIT4-format registry file. As the README says: exactly as insecure as 1999 intended.


By the numbers

ThingCount
Lines of C (no build dependencies)~27,000
CFML tags / built-in functions~80 / 250+ (everything in the 4.5 reference)
Servers in one binary3 — web (HTTP/1.1 + SSL), LDAP directory, and a Java VM if you have one
Language Reference pages, each with a runnable example325
Vintage CFML scripts in the Demo Gallery (from Rosetta Code, GitHub…)60 (51 run as-is)
Example applications (intranet, HR app, parks browser, widgets)5
Retro 1999 web sites / static pages in them / GeoHoods homesteaders12 / ~2,350 / 251
Animated GIFs drawn from scratch for this projecttoo many
Java applets required0 — CFGRID, CFTREE and CFSLIDER render as HTML

You are visitor number since November 1999!

Sign my guestbook! (it's GitHub Issues. Sorry.)

KoldFusion WebRing: previous, random, next

Powered by KoldFusion <gibson> Best viewed with Navigator 4.x Best viewed with any browser

This page is best viewed at 800x600 in 256 colors. Last updated: Y2K + 26 years.

KOLDFUSION 4.5