28 lines
1.5 KiB
Markdown
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.
|