]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - modules/webapps/webstats/default.nix
Upgrade goaccess and adjust parsing
[perso/Immae/Config/Nix.git] / modules / webapps / webstats / default.nix
index f4916bd011fc03ceb61e4b037a586937cb00e5cb..7a2774112f545a8f7b4f863c24b7f12dbee849f6 100644 (file)
@@ -1,4 +1,4 @@
-{ lib, pkgs, config, mylibs, ... }:
+{ lib, pkgs, config, ... }:
 let
   name = "goaccess";
   cfg = config.services.webstats;
@@ -23,7 +23,7 @@ in {
               '';
           };
           name = lib.mkOption {
-            type = lib.types.string;
+            type = lib.types.str;
             description  = ''
               Domain name. Corresponds to the Apache file name and the
               folder name in which the state will be saved.
@@ -37,6 +37,9 @@ in {
   };
 
   config = lib.mkIf (builtins.length cfg.sites > 0) {
+    services.duplyBackup.profiles.goaccess = {
+      rootDir = cfg.dataDir;
+    };
     users.users.root.packages = [
       pkgs.goaccess
     ];
@@ -54,20 +57,21 @@ in {
             #!${pkgs.stdenv.shell}
             set -e
             shopt -s nullglob
-            date_regex=$(LC_ALL=C date -d yesterday +'%d\/%b\/%Y')
             TMPFILE=$(mktemp)
             trap "rm -f $TMPFILE" EXIT
 
-            cat /var/log/httpd/access_log-${domain} | sed -n "/\\[$date_regex/ p" > $TMPFILE
-            for i in /var/log/httpd/access_log-${domain}*.gz; do
-              zcat "$i" | sed -n "/\\[$date_regex/ p" >> $TMPFILE
+            mkdir -p ${cfg.dataDir}/${domain}
+            for i in /var/log/httpd/access-${domain}*.gz; do
+              zcat "$i" >> $TMPFILE
             done
+            cat /var/log/httpd/access-${domain}.log > $TMPFILE
             ${pkgs.goaccess}/bin/goaccess $TMPFILE --no-progress -o ${cfg.dataDir}/${domain}/index.html -p ${config}
             '';
           in "${d}/bin/stats-${domain}";
         allStats = sites: pkgs.writeScript "stats" ''
           #!${pkgs.stdenv.shell}
 
+          mkdir -p ${cfg.dataDir}
           ${builtins.concatStringsSep "\n" (map (v: stats v.name v.conf) sites)}
           '';
       in
@@ -75,10 +79,5 @@ in {
           "5 0 * * * root ${allStats cfg.sites}"
         ];
     };
-
-    system.activationScripts.goaccess = ''
-      mkdir -p /var/lib/goaccess
-    '' +
-    builtins.concatStringsSep "\n" (map (v: "mkdir -p ${cfg.dataDir}/${v.name}") cfg.sites);
   };
 }