gemspace/cgi-example/README.md

1.5 KiB

CGI Example Project

The goal of this project is to give a working example of a basic Gemini CGI application. User identities are driven by TLS Client Certificates. This project will serve as a reference for CGI authors and be explained in detail in an instructional video.

Features

  • (DONE) New TLS certificates automatically create a new user account
  • (DONE) Users can set data on their own account (a name field for example)
  • (DONE) Users can add additional certificates to the same account by using a special code

Files

  • index.gmi - a python script using the gmi extension. It is an executable file to enable CGI use. Your server must be configured for CGI for this to work. Depending on your server software you may need to house this project within a special cgi-bin directory.

Several sub-directories exist with their own index.gmi files to perform specific app actions.

  • db.py - handles database connection and queries
  • helpers.py - provides some Gemini header operations and environment variable fetching
  • create_schema.sql - holds the database schema for sqlite used in this app.

Create database with:

sqlite3 db/cgi-example.sqlite3 < create_schema.sql

Then give write permission to the both the database and the containing directory (db) to the user that your Gemini server runs as. It is important that the containing folder write permissions are in place or you will see 50 errors returned when trying to write to the database.