Skip to content

baines/cgiquotes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This is a CGI program written in C to serve a quote database website.

Currently, it serves data from the QUOTES_ROOT directory in 4 formats: html, json, csv, and "raw" which is just specialized csv with easier parsing shown here:

raw      :: *(raw_line)
raw_line :: id "," epoch "," text "\n"
id       :: *(0-9)
epoch    :: *(0-9)
text     :: *(any char except '\n')

Edit quotes.h to change the location of QUOTES_ROOT, and add files there named #name. Make sure the name is html-safe and the dir has rw permissions.

It also now supports POST and DELETE to add/edit/delete quotes remotely. For this to work, you need to choose a random username + password, concat them with a colon, base64 it, and put it in QUOTES_AUTH env var. Then you can use the url 'https://USERNAME:PASSWORD@asdf.test/quotes/' for POST/DELETE operations.

POSTing data to /quotes/name will add that data as a new quote, and return the id + timestamp of this new quote, separated by a comma.

POSTing data of the form '[epoch]:[text]' to /quotes/name/id will edit the quote's epoch or text (or both). If you only want to change the text, remember to include that leading colon.

DELETEing the url /quotes/name/id will.. well, it'll delete the quote, what did you expect?

Example nginx configutation (using fcgiwrap):

location /quotes {
	root /var/www/quotes/;

	fastcgi_param SCRIPT_FILENAME /var/www/quotes/cgi-bin/quotes;
	fastcgi_param DOCUMENT_URI    $document_uri;
	fastcgi_param REQUEST_URI     $request_uri;
	fastcgi_param REQUEST_METHOD  $request_method;
	fastcgi_param CONTENT_LENGTH  $content_length;

	fastcgi_param QUOTES_AUTH     [base64'd user:pwd]

	fastcgi_pass unix:/var/run/fcgiwrap.socket;
}