mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-07-13 21:50:33 +03:00
Merge pull request #311039 from DavHau/pr_smokeping
nixos/smokeping: use nginx instead of thttpd
This commit is contained in:
commit
aff6a121a3
3 changed files with 44 additions and 37 deletions
|
@ -47,6 +47,13 @@ let
|
|||
in
|
||||
|
||||
{
|
||||
imports = [
|
||||
(mkRemovedOptionModule [ "services" "smokeping" "port" ] ''
|
||||
The smokeping web service is now served by nginx.
|
||||
In order to change the port, you need to change the nginx configuration under `services.nginx.virtualHosts.smokeping.listen.*.port`.
|
||||
'')
|
||||
];
|
||||
|
||||
options = {
|
||||
services.smokeping = {
|
||||
enable = mkEnableOption "smokeping service";
|
||||
|
@ -71,8 +78,8 @@ in
|
|||
};
|
||||
cgiUrl = mkOption {
|
||||
type = types.str;
|
||||
default = "http://${cfg.hostName}:${toString cfg.port}/smokeping.cgi";
|
||||
defaultText = literalExpression ''"http://''${hostName}:''${toString port}/smokeping.cgi"'';
|
||||
default = "http://${cfg.hostName}/smokeping.cgi";
|
||||
defaultText = literalExpression ''"http://''${hostName}/smokeping.cgi"'';
|
||||
example = "https://somewhere.example.com/smokeping.cgi";
|
||||
description = "URL to the smokeping cgi.";
|
||||
};
|
||||
|
@ -177,11 +184,6 @@ in
|
|||
which makes it bind to all interfaces.
|
||||
'';
|
||||
};
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 8081;
|
||||
description = "TCP port to use for the web server.";
|
||||
};
|
||||
presentationConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = ''
|
||||
|
@ -312,17 +314,8 @@ in
|
|||
description = "smokeping daemon user";
|
||||
home = smokepingHome;
|
||||
createHome = true;
|
||||
# When `cfg.webService` is enabled, `thttpd` makes SmokePing available
|
||||
# under `${cfg.host}:${cfg.port}/smokeping.fcgi` as per the `ln -s` below.
|
||||
# We also want that going to `${cfg.host}:${cfg.port}` without `smokeping.fcgi`
|
||||
# makes it easy for the user to find SmokePing.
|
||||
# However `thttpd` does not seem to support easy redirections from `/` to `smokeping.fcgi`
|
||||
# and only allows directory listings or `/` -> `index.html` resolution if the directory
|
||||
# has `chmod 755` (see https://acme.com/software/thttpd/thttpd_man.html#PERMISSIONS,
|
||||
# " directories should be 755 if you want to allow indexing").
|
||||
# Otherwise it shows `403 Forbidden` on `/`.
|
||||
# Thus, we need to make `smokepingHome` (which is given to `thttpd -d` below) `755`.
|
||||
homeMode = "755";
|
||||
# When `cfg.webService` is enabled, `nginx` requires read permissions on the home directory.
|
||||
homeMode = "711";
|
||||
};
|
||||
users.groups.${cfg.user} = { };
|
||||
systemd.services.smokeping = {
|
||||
|
@ -342,21 +335,25 @@ in
|
|||
${cfg.package}/bin/smokeping --static --config=${configPath}
|
||||
'';
|
||||
};
|
||||
systemd.services.thttpd = mkIf cfg.webService {
|
||||
requiredBy = [ "multi-user.target" ];
|
||||
requires = [ "smokeping.service" ];
|
||||
path = with pkgs; [ bash rrdtool smokeping thttpd ];
|
||||
serviceConfig = {
|
||||
Restart = "always";
|
||||
ExecStart = lib.concatStringsSep " " (lib.concatLists [
|
||||
[ "${pkgs.thttpd}/bin/thttpd" ]
|
||||
[ "-u ${cfg.user}" ]
|
||||
[ ''-c "**.fcgi"'' ]
|
||||
[ "-d ${smokepingHome}" ]
|
||||
(lib.optional (cfg.host != null) "-h ${cfg.host}")
|
||||
[ "-p ${builtins.toString cfg.port}" ]
|
||||
[ "-D -nos" ]
|
||||
]);
|
||||
|
||||
# use nginx to serve the smokeping web service
|
||||
services.fcgiwrap.enable = mkIf cfg.webService true;
|
||||
services.nginx = mkIf cfg.webService {
|
||||
enable = true;
|
||||
virtualHosts."smokeping" = {
|
||||
serverName = mkDefault cfg.host;
|
||||
locations."/" = {
|
||||
root = smokepingHome;
|
||||
index = "smokeping.fcgi";
|
||||
};
|
||||
locations."/smokeping.fcgi" = {
|
||||
extraConfig = ''
|
||||
include ${config.services.nginx.package}/conf/fastcgi_params;
|
||||
fastcgi_pass unix:${config.services.fcgiwrap.socketAddress};
|
||||
fastcgi_param SCRIPT_FILENAME ${smokepingHome}/smokeping.fcgi;
|
||||
fastcgi_param DOCUMENT_ROOT ${smokepingHome};
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue