Skip to content

tleguern/libravatar.cgi

Repository files navigation

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.