gemspace/cgi-example/README.md

28 lines
1.5 KiB
Markdown

# 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:
```bash
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.