aboutsummaryrefslogtreecommitdiff
path: root/modules/webapps/webstats
diff options
context:
space:
mode:
Diffstat (limited to 'modules/webapps/webstats')
-rw-r--r--modules/webapps/webstats/default.nix80
-rw-r--r--modules/webapps/webstats/goaccess.conf100
2 files changed, 0 insertions, 180 deletions
diff --git a/modules/webapps/webstats/default.nix b/modules/webapps/webstats/default.nix
deleted file mode 100644
index e873af2..0000000
--- a/modules/webapps/webstats/default.nix
+++ /dev/null
@@ -1,80 +0,0 @@
1{ lib, pkgs, config, ... }:
2let
3 name = "goaccess";
4 cfg = config.services.webstats;
5in {
6 options.services.webstats = {
7 dataDir = lib.mkOption {
8 type = lib.types.path;
9 default = "/var/lib/${name}";
10 description = ''
11 The directory where Goaccess stores its data.
12 '';
13 };
14 sites = lib.mkOption {
15 type = lib.types.listOf (lib.types.submodule {
16 options = {
17 conf = lib.mkOption {
18 type = lib.types.nullOr lib.types.path;
19 default = null;
20 description = ''
21 use custom goaccess configuration file instead of the
22 default one.
23 '';
24 };
25 name = lib.mkOption {
26 type = lib.types.str;
27 description = ''
28 Domain name. Corresponds to the Apache file name and the
29 folder name in which the state will be saved.
30 '';
31 };
32 };
33 });
34 default = [];
35 description = "Sites to generate stats";
36 };
37 };
38
39 config = lib.mkIf (builtins.length cfg.sites > 0) {
40 users.users.root.packages = [
41 pkgs.goaccess
42 ];
43
44 services.cron = {
45 enable = true;
46 systemCronJobs = let
47 stats = domain: conf: let
48 config = if builtins.isNull conf
49 then pkgs.runCommand "goaccess.conf" {
50 dbPath = "${cfg.dataDir}/${domain}";
51 } "substituteAll ${./goaccess.conf} $out"
52 else conf;
53 d = pkgs.writeScriptBin "stats-${domain}" ''
54 #!${pkgs.stdenv.shell}
55 set -e
56 shopt -s nullglob
57 TMPFILE=$(mktemp)
58 trap "rm -f $TMPFILE" EXIT
59
60 mkdir -p ${cfg.dataDir}/${domain}
61 for i in /var/log/httpd/access-${domain}*.gz; do
62 zcat "$i" >> $TMPFILE
63 done
64 cat /var/log/httpd/access-${domain}.log > $TMPFILE
65 ${pkgs.goaccess}/bin/goaccess $TMPFILE --no-progress -o ${cfg.dataDir}/${domain}/index.html -p ${config}
66 '';
67 in "${d}/bin/stats-${domain}";
68 allStats = sites: pkgs.writeScript "stats" ''
69 #!${pkgs.stdenv.shell}
70
71 mkdir -p ${cfg.dataDir}
72 ${builtins.concatStringsSep "\n" (map (v: stats v.name v.conf) sites)}
73 '';
74 in
75 [
76 "5 0 * * * root ${allStats cfg.sites}"
77 ];
78 };
79 };
80}
diff --git a/modules/webapps/webstats/goaccess.conf b/modules/webapps/webstats/goaccess.conf
deleted file mode 100644
index c6c244a..0000000
--- a/modules/webapps/webstats/goaccess.conf
+++ /dev/null
@@ -1,100 +0,0 @@
1time-format %H:%M:%S
2date-format %d/%b/%Y
3
4log-format VCOMBINED
5#= %v:%^ %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
6
7html-prefs {"theme":"bright","layout":"vertical"}
8
9# old
10exclude-ip 188.165.209.148
11exclude-ip 178.33.252.96
12exclude-ip 2001:41d0:2:9c94::1
13exclude-ip 2001:41d0:2:9c94::
14# eldiron
15exclude-ip 176.9.151.89
16exclude-ip 2a01:4f8:160:3445::
17# monitoring-1
18exclude-ip 95.216.164.150
19exclude-ip 2a01:4f9:c010:1c95::
20
21no-query-string true
22
23persist true
24restore true
25db-path @dbPath@
26
27ignore-panel REFERRERS
28ignore-panel KEYPHRASES
29
30static-file .css
31static-file .js
32static-file .jpg
33static-file .png
34static-file .gif
35static-file .ico
36static-file .jpeg
37static-file .pdf
38static-file .csv
39static-file .mpeg
40static-file .mpg
41static-file .swf
42static-file .woff
43static-file .woff2
44static-file .xls
45static-file .xlsx
46static-file .doc
47static-file .docx
48static-file .ppt
49static-file .pptx
50static-file .txt
51static-file .zip
52static-file .ogg
53static-file .mp3
54static-file .mp4
55static-file .exe
56static-file .iso
57static-file .gz
58static-file .rar
59static-file .svg
60static-file .bmp
61static-file .tar
62static-file .tgz
63static-file .tiff
64static-file .tif
65static-file .ttf
66static-file .flv
67#static-file .less
68#static-file .ac3
69#static-file .avi
70#static-file .bz2
71#static-file .class
72#static-file .cue
73#static-file .dae
74#static-file .dat
75#static-file .dts
76#static-file .ejs
77#static-file .eot
78#static-file .eps
79#static-file .img
80#static-file .jar
81#static-file .map
82#static-file .mid
83#static-file .midi
84#static-file .ogv
85#static-file .webm
86#static-file .mkv
87#static-file .odp
88#static-file .ods
89#static-file .odt
90#static-file .otf
91#static-file .pict
92#static-file .pls
93#static-file .ps
94#static-file .qt
95#static-file .rm
96#static-file .svgz
97#static-file .wav
98#static-file .webp
99
100