- Copyright 2023-24 by the Interactive Fiction Technology Foundation
- Distributed under the MIT license
- Created by Andrew Plotkin [email protected]
This is the web interface that allows administrators and volunteers to move files around the IF Archive and edit the Index
files that describe them.
The web service maintains a list of users (including administrators). This uses a traditional web login process with authentication cookies. However, accounts are not self-service; each account must be created by an admin with command-line access.
(We assume that admins have login accounts on the Archive server. Other volunteers do not; their only access is through the web service.)
The service is built on Python, server-side WSGI, and a whole lot of extremely Web-1.0 HTML forms. At present there is no Javascript at all.
We separate the work into roles as much as possible. A user can have any number of roles. The current roles are:
- "incoming": Move files from /incoming to /unprocessed.
- "filing": Move files from /unprocessed to other archive directories.
- "index": Edit
Index
files. - "rebuild": Run
build-indexes
to regenerate the Archive's public index pages. - "log": View the log of admin tool activity.
- "admin": Do everything.
It should not be possible to destroy or overwrite files from the web service. Mistakes should always be recoverable, although it might take an admin to untangle serious problems.
Thus, "deleting" a file moves it to the /trash directory, where it will live for at least 30 days. Similarly, whenever you edit an Index
file, the previous version is copied to /trash.
All activity is logged, and users can review the log (at least the recent part).
admin.wsgi
: A Python script that handles the main web interface. This lives in /var/ifarchive/wsgi-bin.tinyapp
: A general web-app framework for WSGI apps. Used byadmin.wsgi
. Lives in /var/ifarchive/wsgi-bin.adminlib
: App-specific support foradmin.wsgi
. Lives in /var/ifarchive/wsgi-bin.templates
: HTML templates for various admin pages. Lives in /var/ifarchive/lib/admintool.sample.config
: Config file. Lives in /var/ifarchive/lib/ifarch.config. Note that the version in this repository is an incomplete sample. The real ifarch.config has settings for other tools (upload, ifmap).css/admintool.css
: Stylesheet. Lives in /var/ifarchive/htdocs/misc.
The tool also makes use of the SQLite database in /var/ifarchive/lib/sql. This must be writable by both Apache and the admins.
python3 /var/ifarchive/wsgi-bin/admin.wsgi
This will display a list of command-line commands.
It is possible to test the admin interface on a local Apache server. See TESTING.md.