Added setting to configure the default fallback.
All checks were successful
the build was successful
All checks were successful
the build was successful
This commit is contained in:
parent
f0406f7e3a
commit
4d0033652d
@ -1,6 +1,6 @@
|
||||
cmake_minimum_required (VERSION 3.2)
|
||||
project(libravatarserv
|
||||
VERSION 0.5.0
|
||||
VERSION 0.6.0
|
||||
LANGUAGES CXX
|
||||
)
|
||||
|
||||
|
10
README.md
10
README.md
@ -14,9 +14,11 @@ images tied to email or OpenID addresses.
|
||||
* Variable image size (`s` or `size`)
|
||||
* Default actions (`d` or `default`): 404, URL, mp/mm, identicon
|
||||
|
||||
The default behaviour for unknown users is to return a 404 error. If a default
|
||||
image is put in the avatar directory, that is returned instead. The default
|
||||
image can not be overriden by adding the parameter `d` or `default` to the URL.
|
||||
The default behaviour for unknown users is to return a 404 error. You can change
|
||||
that by setting the environment variable `LIBRAVATARSERV_DEFAULT_FALLBACK` to
|
||||
any value accepted by `d` or `default`. If a default image is put in the avatar
|
||||
directory, that is returned instead. The default image can not be overridden by
|
||||
adding the parameter `d` or `default` to the URL.
|
||||
|
||||
Clients are asked to cache results for up to 1 day to reduce load. This can
|
||||
apply to negative results as well.
|
||||
@ -50,7 +52,7 @@ HTTPS.
|
||||
|
||||
libravatarserv looks in each of `${XDG_DATA_DIRS}` for a directory named
|
||||
`libravatarserv`. You can force a different directory by setting the environment
|
||||
variable `${LIBRAVATARSERV_DIR}` (until 0.3.0 `${AVATAR_DIR}`).
|
||||
variable `LIBRAVATARSERV_DIR` (until 0.3.0 `AVATAR_DIR`).
|
||||
|
||||
The image files are named like your email address, no file extension. If you
|
||||
want to deliver a default image for unknown email addresses, name it `default`.
|
||||
|
@ -13,6 +13,7 @@ server {
|
||||
include /etc/nginx/fastcgi_params;
|
||||
fastcgi_pass unix:/var/run/cgi-fcgiwrap.socket-1;
|
||||
fastcgi_param SCRIPT_FILENAME /usr/bin/libravatarserv;
|
||||
fastcgi_param LIBRAVATARSERV_DEFAULT_FALLBACK 404;
|
||||
}
|
||||
}
|
||||
|
||||
@ -28,5 +29,6 @@ server {
|
||||
include /etc/nginx/fastcgi_params;
|
||||
fastcgi_pass unix:/var/run/cgi-fcgiwrap.socket-1;
|
||||
fastcgi_param SCRIPT_FILENAME /usr/bin/libravatarserv;
|
||||
fastcgi_param LIBRAVATARSERV_DEFAULT_FALLBACK 404;
|
||||
}
|
||||
}
|
||||
|
@ -24,10 +24,12 @@ using std::cout;
|
||||
using std::cerr;
|
||||
using std::endl;
|
||||
using global::avatar_dir;
|
||||
using global::settings;
|
||||
|
||||
// Global variables
|
||||
std::map<const string, const string> hash::table;
|
||||
fs::path global::avatar_dir = "";
|
||||
global::Settings global::settings;
|
||||
|
||||
|
||||
int main()
|
||||
@ -51,6 +53,7 @@ int main()
|
||||
return 3;
|
||||
}
|
||||
hash::fill_table();
|
||||
read_settings();
|
||||
|
||||
http::Request avatar = http::parse_request(request);
|
||||
|
||||
@ -62,6 +65,10 @@ int main()
|
||||
else
|
||||
{
|
||||
cerr << "Error " << std::to_string(image.error) << ": Could not open file.\n";
|
||||
if (avatar.fallback.empty())
|
||||
{
|
||||
avatar.fallback = settings.default_fallback;
|
||||
}
|
||||
if (avatar.fallback.substr(0, 4) == "http")
|
||||
{
|
||||
cout << "Status: 307 Temporary Redirect\n";
|
||||
@ -145,3 +152,12 @@ bool find_avatar_dir()
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void read_settings()
|
||||
{
|
||||
const char *env = std::getenv("LIBRAVATARSERV_DEFAULT_FALLBACK");
|
||||
if (env != nullptr)
|
||||
{
|
||||
global::settings.default_fallback = env;
|
||||
}
|
||||
}
|
||||
|
@ -37,10 +37,15 @@ using std::uint8_t;
|
||||
|
||||
int main();
|
||||
bool find_avatar_dir();
|
||||
void read_settings();
|
||||
|
||||
namespace global
|
||||
{
|
||||
extern fs::path avatar_dir;
|
||||
extern struct Settings
|
||||
{
|
||||
string default_fallback;
|
||||
} settings;
|
||||
}
|
||||
|
||||
namespace http // http.cpp
|
||||
@ -49,7 +54,7 @@ namespace http // http.cpp
|
||||
{
|
||||
const string digest;
|
||||
const uint16_t size;
|
||||
const string fallback;
|
||||
string fallback;
|
||||
};
|
||||
|
||||
const Request parse_request(const string &request);
|
||||
|
Loading…
x
Reference in New Issue
Block a user