diff options
Diffstat (limited to 'hipis/services/goaccess.scm')
-rw-r--r-- | hipis/services/goaccess.scm | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/hipis/services/goaccess.scm b/hipis/services/goaccess.scm new file mode 100644 index 0000000..e71ca2b --- /dev/null +++ b/hipis/services/goaccess.scm | |||
@@ -0,0 +1,83 @@ | |||
1 | (define-module (hipis services goaccess) | ||
2 | #:use-module ((guix licenses) #:prefix license:) | ||
3 | #:use-module (guix packages) | ||
4 | #:use-module (guix profiles) | ||
5 | #:use-module (guix gexp) | ||
6 | #:use-module (guix records) | ||
7 | #:use-module (guix download) | ||
8 | |||
9 | #:use-module (gnu packages) | ||
10 | #:use-module (gnu packages web) | ||
11 | #:use-module (gnu services) | ||
12 | #:use-module (gnu services web) | ||
13 | #:use-module (gnu services guix) | ||
14 | #:use-module (gnu services mcron) | ||
15 | #:export (goaccess-service-type | ||
16 | goaccess-configuration | ||
17 | %goaccess-nginx-server-configuration)) | ||
18 | |||
19 | (define %goaccess-nginx-server-configuration | ||
20 | (nginx-server-configuration | ||
21 | (root "/var/www/raport/") | ||
22 | (listen '("80")) | ||
23 | (ssl-certificate #f) | ||
24 | (ssl-certificate-key #f))) | ||
25 | |||
26 | (define-record-type* <goaccess-configuration> | ||
27 | goaccess-configuration make-goaccess-configuration | ||
28 | goaccess-configuration-configuration? | ||
29 | (nginx-log-access goaccess-configuration-nginx-log-access | ||
30 | (default "/var/log/nginx/access.log")) | ||
31 | (goaccess-run-script-dir goaccess-configuration-goaccess-run-script | ||
32 | (default "/var/lib/goaccess/")) | ||
33 | (goaccess-run-script-name goaccess-configuration-goaccess-run-script-name | ||
34 | (default "generate-raport")) | ||
35 | (goaccess-additional-args goaccess-configuration-goaccess-additional-args | ||
36 | (default '())) | ||
37 | (goaccess-nginx-server-configuration goaccess-configuration-goaccess-nginx-server-configuration | ||
38 | (default %goaccess-nginx-configuration))) | ||
39 | |||
40 | (define (goaccess-run-script config) | ||
41 | (match-record config <goaccess-configuration> | ||
42 | (goaccess-additional-args goaccess-nginx-server-configuration goaccess-run-script-name) | ||
43 | (program-file goaccess-run-script-name | ||
44 | #~(begin | ||
45 | (use-modules (guix build utils)) | ||
46 | (system* (string-append #$goaccess "/bin/goaccess") | ||
47 | "/var/log/nginx/access.log" | ||
48 | "--log-format" "COMBINED" | ||
49 | "-o" #$(string-append (nginx-server-configuration-root | ||
50 | goaccess-nginx-server-configuration) | ||
51 | "index.html") | ||
52 | #$@goaccess-additional-args))))) | ||
53 | |||
54 | (define (goaccess-activation config) | ||
55 | (match-record config <goaccess-configuration> | ||
56 | (goaccess-run-script-dir goaccess-run-script-name goaccess-nginx-server-configuration) | ||
57 | #~(begin | ||
58 | (use-modules (guix build utils)) | ||
59 | |||
60 | (format #t "creating goaccess run script at '~a'~%" #$goaccess-run-script-dir) | ||
61 | (mkdir-p #$goaccess-run-script-dir) | ||
62 | (mkdir-p #$(nginx-server-configuration-root | ||
63 | goaccess-nginx-server-configuration)) | ||
64 | (copy-file #$(goaccess-run-script config) | ||
65 | #$(string-append goaccess-run-script-dir | ||
66 | goaccess-run-script-name))))) | ||
67 | |||
68 | (define goaccess-service-type | ||
69 | (service-type | ||
70 | (name 'goaccess) | ||
71 | (extensions | ||
72 | (list (service-extension activation-service-type | ||
73 | goaccess-activation) | ||
74 | (service-extension nginx-service-type | ||
75 | (lambda (config) | ||
76 | (list (goaccess-configuration-goaccess-nginx-server-configuration | ||
77 | config)))) | ||
78 | (service-extension mcron-service-type | ||
79 | (lambda (config) | ||
80 | (list #~(job '(next-hour '(0 12)) | ||
81 | #$(goaccess-run-script config))))))) | ||
82 | (description | ||
83 | "Create static raports for various types of web server using goaccess."))) | ||