GNU bug report logs - #30003
[PATCH 2/2] gnu: services: Add darkstat service.

Previous Next

Package: guix-patches;

Reported by: 宋文武 <iyzsong <at> member.fsf.org>

Date: Sat, 6 Jan 2018 08:46:02 UTC

Severity: normal

Tags: patch

Done: iyzsong <at> member.fsf.org (宋文武)

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 30003 in the body.
You can then email your comments to 30003 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#30003; Package guix-patches. (Sat, 06 Jan 2018 08:46:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to 宋文武 <iyzsong <at> member.fsf.org>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Sat, 06 Jan 2018 08:46:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: 宋文武 <iyzsong <at> member.fsf.org>
To: guix-patches <at> gnu.org
Cc: 宋文武 <iyzsong <at> member.fsf.org>
Subject: [PATCH 2/2] gnu: services: Add darkstat service.
Date: Sat,  6 Jan 2018 16:45:23 +0800
* gnu/services/monitoring.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
* doc/guix.texi (Monitoring Services): Document it.
---
 doc/guix.texi               | 42 +++++++++++++++++++++
 gnu/local.mk                |  1 +
 gnu/services/monitoring.scm | 91 +++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 134 insertions(+)
 create mode 100644 gnu/services/monitoring.scm

diff --git a/doc/guix.texi b/doc/guix.texi
index 1d1f30f00..f9dec3082 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -14697,6 +14697,48 @@ the 2nd element of the pair is the password.
 @end deftp
 
 
+@subsubheading Darkstat Service
+@cindex darkstat
+@command{darkstat} is a packet sniffer that captures network traffic,
+calculates statistics about usage, and serves reports over HTTP.
+
+@defvar {Scheme Variable} darkstat-service-type
+This is the service type for the
+@uref{https://unix4lyfe.org/darkstat/, darkstat}
+service,  its value must be a @code{darkstat-configuration} record as in
+this example:
+
+@example
+(service darkstat-service-type
+  (darkstat-configuration
+    (interface "eth0")))
+@end example
+@end defvar
+
+@deftp {Data Type} darkstat-configuration
+Data type representing the configuration of @command{darkstat}.
+
+@table @asis
+@item @code{package} (default: @code{darstat})
+The darkstat package to use.
+
+@item @code{interface}
+Capture traffic on the specified network interface.
+
+@item @code{port} (default: @code{"667"})
+Bind the web interface to the specified port.
+
+@item @code{bindaddr} (default: @code{"127.0.0.1"})
+Bind the web interface to the specified address.
+
+@item @code{base} (default: @code{"/"})
+Specify the path of the base URL.  This can be useful if
+@command{darkstat} is accessed via a reverse proxy.
+
+@end table
+@end deftp
+
+
 @node Kerberos Services
 @subsubsection Kerberos Services
 @cindex Kerberos
diff --git a/gnu/local.mk b/gnu/local.mk
index 679c119a5..62fcd2cd4 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -460,6 +460,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/services/mail.scm				\
   %D%/services/mcron.scm			\
   %D%/services/messaging.scm			\
+  %D%/services/monitoring.scm			\
   %D%/services/networking.scm			\
   %D%/services/nfs.scm			\
   %D%/services/shepherd.scm			\
diff --git a/gnu/services/monitoring.scm b/gnu/services/monitoring.scm
new file mode 100644
index 000000000..438d66596
--- /dev/null
+++ b/gnu/services/monitoring.scm
@@ -0,0 +1,91 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2018 Sou Bunnbu <iyzsong <at> member.fsf.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu services monitoring)
+  #:use-module (gnu services)
+  #:use-module (gnu services shepherd)
+  #:use-module (gnu packages admin)
+  #:use-module (gnu packages monitoring)
+  #:use-module (gnu system shadow)
+  #:use-module (guix gexp)
+  #:use-module (guix records)
+  #:use-module (ice-9 match)
+  #:export (darkstat-configuration
+            darkstat-service-type))
+
+
+;;;
+;;; darkstat
+;;;
+
+(define-record-type* <darkstat-configuration>
+  darkstat-configuration make-darkstat-configuration darkstat-configuration?
+  (package   darkstat-configuration-package
+             (default darkstat))
+  (interface darkstat-configuration-interface)
+  (port      darkstat-configuration-port
+             (default "667"))
+  (bindaddr  darkstat-configuration-bindaddr
+             (default "127.0.0.1"))
+  (base      darkstat-configuration-base
+             (default "/")))
+
+(define %darkstat-accounts
+  (list (user-account
+         (name "darkstat")
+         (group "darkstat")
+         (system? #t)
+         (comment "darkstat daemon user")
+         (home-directory "/var/lib/darkstat")
+         (shell (file-append shadow "/sbin/nologin")))
+        (user-group
+         (name "darkstat")
+         (system? #t))))
+
+(define darkstat-shepherd-service
+  (match-lambda
+    (($ <darkstat-configuration>
+        package interface port bindaddr base)
+     (shepherd-service
+      (documentation "Network statistics gatherer.")
+      (provision '(darkstat))
+      (requirement '(networking))
+      (start #~(make-forkexec-constructor
+                (list #$(file-append package "/sbin/darkstat")
+                      "-i" #$interface
+                      "-p" #$port
+                      "-b" #$bindaddr
+                      "--base" #$base
+                      "--syslog" "--no-daemon"
+                      "--chroot" "/var/lib/darkstat"
+                      "--user" "darkstat"
+                      "--import" "darkstat.db"
+                      "--export" "darkstat.db")))
+      (stop #~(make-kill-destructor))))))
+
+(define darkstat-service-type
+  (service-type
+   (name 'darkstat)
+   (description
+    "Run @command{darkstat} to serve network traffic statictics reports over
+HTTP.")
+   (extensions
+    (list (service-extension account-service-type
+                             (const %darkstat-accounts))
+          (service-extension shepherd-root-service-type
+                             (compose list darkstat-shepherd-service))))))
-- 
2.13.3





Information forwarded to guix-patches <at> gnu.org:
bug#30003; Package guix-patches. (Sun, 07 Jan 2018 13:22:02 GMT) Full text and rfc822 format available.

Message #8 received at 30003 <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: 宋文武 <iyzsong <at> member.fsf.org>
Cc: 30003 <at> debbugs.gnu.org
Subject: Re: [bug#30003] [PATCH 2/2] gnu: services: Add darkstat service.
Date: Sun, 07 Jan 2018 14:21:22 +0100
Hello,

宋文武 <iyzsong <at> member.fsf.org> skribis:

> * gnu/services/monitoring.scm: New file.
> * gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
> * doc/guix.texi (Monitoring Services): Document it.

Nice!

I only have minor suggestions:

> +@subsubheading Darkstat Service
> +@cindex darkstat
> +@command{darkstat} is a packet sniffer that captures network traffic,

I think you can remove @command since you’re referring to the software,
not to the command.

> +@example
> +(service darkstat-service-type
> +  (darkstat-configuration
> +    (interface "eth0")))

This should be aligned to the right.  Also perhaps s/eth0/eno1/ to match
common names.

> +@item @code{package} (default: @code{darstat})
                                          ^
Typo.

> +@item @code{bindaddr} (default: @code{"127.0.0.1"})

I’d prefer “address” or “listen-address” or “bind-address” (likewise in
the code.)

Otherwise LGTM, thank you!

Ludo’.




Reply sent to iyzsong <at> member.fsf.org (宋文武):
You have taken responsibility. (Mon, 08 Jan 2018 13:00:03 GMT) Full text and rfc822 format available.

Notification sent to 宋文武 <iyzsong <at> member.fsf.org>:
bug acknowledged by developer. (Mon, 08 Jan 2018 13:00:03 GMT) Full text and rfc822 format available.

Message #13 received at 30003-done <at> debbugs.gnu.org (full text, mbox):

From: iyzsong <at> member.fsf.org (宋文武)
To: ludo <at> gnu.org (Ludovic Courtès)
Cc: 30003-done <at> debbugs.gnu.org
Subject: Re: [bug#30003] [PATCH 2/2] gnu: services: Add darkstat service.
Date: Mon, 08 Jan 2018 20:59:26 +0800
ludo <at> gnu.org (Ludovic Courtès) writes:

> Hello,
>
> 宋文武 <iyzsong <at> member.fsf.org> skribis:
>
>> * gnu/services/monitoring.scm: New file.
>> * gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
>> * doc/guix.texi (Monitoring Services): Document it.
>
> Nice!
>
> I only have minor suggestions:
>
>> +@subsubheading Darkstat Service
>> +@cindex darkstat
>> +@command{darkstat} is a packet sniffer that captures network traffic,
>
> I think you can remove @command since you’re referring to the software,
> not to the command.
>
>> +@example
>> +(service darkstat-service-type
>> +  (darkstat-configuration
>> +    (interface "eth0")))
>
> This should be aligned to the right.  Also perhaps s/eth0/eno1/ to match
> common names.
>
>> +@item @code{package} (default: @code{darstat})
>                                           ^
> Typo.
>
>> +@item @code{bindaddr} (default: @code{"127.0.0.1"})
>
> I’d prefer “address” or “listen-address” or “bind-address” (likewise in
> the code.)
>
> Otherwise LGTM, thank you!

Done, thanks for the review!




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Tue, 06 Feb 2018 12:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 7 years and 216 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.