aboutsummaryrefslogtreecommitdiff
path: root/virtual/eldiron.nix
diff options
context:
space:
mode:
authorIsmaël Bouya <ismael.bouya@normalesup.org>2019-01-06 12:43:51 +0100
committerIsmaël Bouya <ismael.bouya@normalesup.org>2019-01-06 12:43:51 +0100
commit6f0d92b429069069e6d914f25bb30a549526f9d8 (patch)
tree190b893e91a1414c81276498dcd571e79e89660f /virtual/eldiron.nix
parent6c672f344e2de6852cfa97ed789726bcd54cc83c (diff)
downloadNix-6f0d92b429069069e6d914f25bb30a549526f9d8.tar.gz
Nix-6f0d92b429069069e6d914f25bb30a549526f9d8.tar.zst
Nix-6f0d92b429069069e6d914f25bb30a549526f9d8.zip
Add statistics for aten website
Diffstat (limited to 'virtual/eldiron.nix')
-rw-r--r--virtual/eldiron.nix39
1 files changed, 38 insertions, 1 deletions
diff --git a/virtual/eldiron.nix b/virtual/eldiron.nix
index 68eddf6..c1a7761 100644
--- a/virtual/eldiron.nix
+++ b/virtual/eldiron.nix
@@ -42,6 +42,16 @@
42 cmakeFlags = old.cmakeFlags ++ [ "-DWITH_AUTHENTICATION_PAM=ON" ]; 42 cmakeFlags = old.cmakeFlags ++ [ "-DWITH_AUTHENTICATION_PAM=ON" ];
43 buildInputs = old.buildInputs ++ [ pkgs.pam ]; 43 buildInputs = old.buildInputs ++ [ pkgs.pam ];
44 }); 44 });
45 goaccess = oldpkgs.goaccess.overrideAttrs(old: rec {
46 name = "goaccess-${version}";
47 version = "1.3";
48 src = pkgs.fetchurl {
49 url = "https://tar.goaccess.io/${name}.tar.gz";
50 sha256 = "16vv3pj7pbraq173wlxa89jjsd279004j4kgzlrsk1dz4if5qxwc";
51 };
52 configureFlags = old.configureFlags ++ [ "--enable-tcb=btree" ];
53 buildInputs = old.buildInputs ++ [ pkgs.tokyocabinet pkgs.bzip2 ];
54 });
45 }; 55 };
46 56
47 networking = { 57 networking = {
@@ -85,6 +95,7 @@
85 in [ 95 in [
86 pkgs.telnet 96 pkgs.telnet
87 pkgs.vim 97 pkgs.vim
98 pkgs.goaccess
88 occ 99 occ
89 ]; 100 ];
90 101
@@ -247,6 +258,10 @@
247 fi 258 fi
248 ''; 259 '';
249 }; 260 };
261 goaccess = ''
262 mkdir -p /var/lib/goaccess
263 mkdir -p /var/lib/goaccess/aten.pro
264 '';
250 }; 265 };
251 266
252 environment.etc."ssh/ldap_authorized_keys" = let 267 environment.etc."ssh/ldap_authorized_keys" = let
@@ -313,6 +328,19 @@
313 AuthBasicProvider ldap 328 AuthBasicProvider ldap
314 </IfModule> 329 </IfModule>
315 </Macro> 330 </Macro>
331
332 <Macro Stats %{domain}>
333 Alias /awstats /var/lib/goaccess/%{domain}
334 <Directory /var/lib/goaccess/%{domain}>
335 DirectoryIndex index.html
336 AllowOverride None
337 Require all granted
338 </Directory>
339 <Location /awstats>
340 Use LDAPConnect
341 Require ldap-group cn=%{domain},ou=stats,cn=httpd,ou=services,dc=immae,dc=eu
342 </Location>
343 </Macro>
316 ''; 344 '';
317 }; 345 };
318 http2 = { 346 http2 = {
@@ -324,7 +352,7 @@
324 customLog = { 352 customLog = {
325 modules = []; 353 modules = [];
326 extraConfig = '' 354 extraConfig = ''
327 LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %p" combinedVhost 355 LogFormat "%v:%p %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedVhost
328 ''; 356 '';
329 }; 357 };
330 }; 358 };
@@ -525,5 +553,14 @@
525 #host all all all pam 553 #host all all all pam
526 ''; 554 '';
527 }; 555 };
556
557 services.cron = {
558 enable = true;
559 systemCronJobs = let
560 stats = domain: conf: "${pkgs.gnused}/bin/sed -n '/\\['$(LC_ALL=C ${pkgs.coreutils}/bin/date -d yesterday +'%d\\/%b\\/%Y')'/ p' /var/log/httpd/access_log-${domain} | ${pkgs.goaccess}/bin/goaccess -o /var/lib/goaccess/${domain}/index.html -p ${conf}";
561 in [
562 "5 0 * * * root ${stats "aten.pro" ./packages/aten_goaccess.conf}"
563 ];
564 };
528 }; 565 };
529} 566}