summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2014-10-07 21:33:12 +0200
committerLudovic Courtès <ludo@gnu.org>2014-10-07 23:18:41 +0200
commitfa0c1d610444067001faaad204b25fa112fdc838 (patch)
treef4963ee4ea981e860d17ca8c11336fe4acc69594
parent568841d4910df8ce904959b843c0c3559f282450 (diff)
services: Add '%facebook-host-aliases'.
* gnu/services/networking.scm (%facebook-host-aliases): New variable. * doc/guix.texi (Networking Services): Document it.
-rw-r--r--doc/guix.texi29
-rw-r--r--gnu/services/networking.scm37
2 files changed, 65 insertions, 1 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index ac2aad643c..583bdbf621 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -3610,6 +3610,35 @@ root.
The other options should be self-descriptive.
@end deffn
+@defvr {Scheme Variable} %facebook-host-aliases
+This variable contains a string for use in @file{/etc/hosts}
+(@pxref{Host Names,,, libc, The GNU C Library Reference Manual}). Each
+line contains a entry that maps a known server name of the Facebook
+on-line service---e.g., @code{www.facebook.com}---to the local
+host---@code{127.0.0.1} or its IPv6 equivalent, @code{::1}.
+
+This variable is typically used in the @code{hosts-file} field of an
+@code{operating-system} declaration (@pxref{Using the Configuration
+System}):
+
+@example
+(use-modules (gnu) (guix))
+
+(operating-system
+ (host-name "mymachine")
+ ;; ...
+ (hosts-file
+ ;; Create a /etc/hosts file with aliases for "localhost"
+ ;; and "mymachine", as well as for Facebook servers.
+ (text-file "hosts"
+ (string-append (local-host-aliases host-name)
+ %facebook-host-aliases))))
+@end example
+
+This mechanism can prevent programs running locally, such as Web
+browsers, from accessing Facebook.
+@end defvr
+
@node X Window
@subsubsection X Window
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index 44e3c303de..8e682b9cfa 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -25,7 +25,8 @@
#:use-module (gnu packages messaging)
#:use-module (guix gexp)
#:use-module (guix monads)
- #:export (static-networking-service
+ #:export (%facebook-host-aliases
+ static-networking-service
dhcp-client-service
tor-service
bitlbee-service))
@@ -36,6 +37,40 @@
;;;
;;; Code:
+(define %facebook-host-aliases
+ ;; This is the list of known Facebook hosts to be added to /etc/hosts if you
+ ;; are to block it.
+ "\
+# Block Facebook IPv4.
+127.0.0.1 www.facebook.com
+127.0.0.1 facebook.com
+127.0.0.1 login.facebook.com
+127.0.0.1 www.login.facebook.com
+127.0.0.1 fbcdn.net
+127.0.0.1 www.fbcdn.net
+127.0.0.1 fbcdn.com
+127.0.0.1 www.fbcdn.com
+127.0.0.1 static.ak.fbcdn.net
+127.0.0.1 static.ak.connect.facebook.com
+127.0.0.1 connect.facebook.net
+127.0.0.1 www.connect.facebook.net
+127.0.0.1 apps.facebook.com
+
+# Block Facebook IPv6.
+fe80::1%lo0 facebook.com
+fe80::1%lo0 login.facebook.com
+fe80::1%lo0 www.login.facebook.com
+fe80::1%lo0 fbcdn.net
+fe80::1%lo0 www.fbcdn.net
+fe80::1%lo0 fbcdn.com
+fe80::1%lo0 www.fbcdn.com
+fe80::1%lo0 static.ak.fbcdn.net
+fe80::1%lo0 static.ak.connect.facebook.com
+fe80::1%lo0 connect.facebook.net
+fe80::1%lo0 www.connect.facebook.net
+fe80::1%lo0 apps.facebook.com\n")
+
+
(define* (static-networking-service interface ip
#:key
gateway