summaryrefslogtreecommitdiffstats
path: root/hipis/services/goaccess.scm
diff options
context:
space:
mode:
Diffstat (limited to 'hipis/services/goaccess.scm')
-rw-r--r--hipis/services/goaccess.scm83
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.")))