~tleguern/libravatar.cgi

Libravatar server implementation in C
Switch a test to failure and add comment
Build and install pnginfo during the tests

clone

read-only
https://git.sr.ht/~tleguern/libravatar.cgi
read/write
git@git.sr.ht:~tleguern/libravatar.cgi

You can also use your local clone with git send-email.

#Libravatar.cgi

Small Libravatar implementation in C.

Warning: This software is not compatible with rust zealots.

#Contents

  1. Synopsis
  2. Install
  3. Tests
  4. Contributing
  5. License

#Synopsis

libravatar.cgi is an open source CGI written in C implementing the Libravatar protocol. Its goal is to be minimal, secure and BCHS.

This implementation only serves existing avatars in the PNG format located in /var/www/htdocs/avatars and does not provide any way to upload a file. This should be the responsability of a separate system.

To request an avatar the following steps should be done :

  • Create a hash of a lowercased email address using md5 or sha256 ;
  • Call the CGI with a HTTP request on the path /avatar/$hash.

A few options are accepted as GET parameters :

  • size: control the size of the image, must be between 1 and 512 with a default value of 80 ;
  • default: 404, mm and blank are supported ;
  • rating: only kept for compatibility with Gravatar this option does nothing ;
  • forcedefault: y or n.

The current version is only tested on OpenBSD but builds without errors on FreeBSD and Alpine.

#Install

#Requires

  • C compiler ;
  • kcgi ;
  • libpng.
#For testing
  • curl ;
  • sharness ;
  • pnginfo (optional).

#Build

Configure your http server of choice to receive this CGI. An example and minimalistic configuration file is provided in the config/ folder for OpenBSD httpd(8).

# mkdir /var/www/htdocs/avatars/
# cp config/default.png /var/www/htdocs/avatars/
$ ./configure
$ make
# make install

#Tests

Regression tests are provided in the regress/ folder. They test this implementation and two others: the old Libravatar from Francois Marier and ivatar from Oliver Falk.

#Contributing

Either send send GitHub pull requests or send patches on SourceHut.

#License

All sources use the ISC license excepts oil_libpng.{c,h}, and oil_resample.{c,h} which use the MIT license. These files are sourced from the liboil project.

Do not follow this link