[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#60735] [PATCH 2/2] services: Add block-facebook-hosts-service-type.
From: |
Bruno Victal |
Subject: |
[bug#60735] [PATCH 2/2] services: Add block-facebook-hosts-service-type. |
Date: |
Wed, 11 Jan 2023 17:28:14 +0000 |
Deprecates %facebook-host-aliases in favour of using
etc-hosts-service-type service extensions.
* gnu/services/networking.scm
(block-facebook-hosts-service-type): New variable.
(%facebook-host-aliases): Deprecate variable.
* doc/guix.texi: Document it.
---
doc/guix.texi | 29 ++++--------------
gnu/services/networking.scm | 61 ++++++++++++++++++-------------------
2 files changed, 35 insertions(+), 55 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index a55634ba8c..703e0e6769 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -20952,34 +20952,17 @@ Networking Services
@end table
@end deftp
-@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
+@defvar block-facebook-hosts-service-type
+This service type adds a list of known Facebook hosts to the
+@file{/etc/hosts} file.
+(@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{operating-system Reference,
-@file{/etc/hosts}}):
-
-@lisp
-(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.
- (plain-file "hosts"
- (string-append (local-host-aliases host-name)
- %facebook-host-aliases))))
-@end lisp
-
This mechanism can prevent programs running locally, such as Web
browsers, from accessing Facebook.
-@end defvr
+@end defvar
The @code{(gnu services avahi)} provides the following definition.
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index 702404bc6c..9e5caed3c5 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -19,6 +19,7 @@
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2022 Andrew Tropin <andrew@trop.in>
+;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -79,7 +80,9 @@ (define-module (gnu services networking)
#:use-module (json)
#:re-export (static-networking-service
static-networking-service-type)
- #:export (%facebook-host-aliases
+ #:export (%facebook-host-aliases ;deprecated
+ block-facebook-hosts-service-type
+
dhcp-client-service-type
dhcp-client-configuration
dhcp-client-configuration?
@@ -234,39 +237,33 @@ (define-module (gnu services networking)
;;;
;;; Code:
-(define %facebook-host-aliases
+(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")
-
+ (let ((domains '("facebook.com" "www.facebook.com"
+ "login.facebook.com" "www.login.facebook.com"
+ "fbcdn.net" "www.fbcdn.net" "fbcdn.com" "www.fbcdn.com"
+ "static.ak.fbcdn.net" "static.ak.connect.facebook.com"
+ "connect.facebook.net" "www.connect.facebook.net"
+ "apps.facebook.com")))
+ (fold (lambda (x tail)
+ (cons* (string-join `("127.0.0.1" ,x) "\t")
+ (string-join `("::1" ,x) "\t")
+ tail))
+ '() domains)))
+
+(define-deprecated %facebook-host-aliases
+ block-facebook-hosts-service-type
+ (string-join facebook-host-aliases "\n" 'suffix))
+
+(define block-facebook-hosts-service-type
+ (service-type
+ (name 'block-facebook-hosts)
+ (extensions
+ (list (service-extension etc-hosts-service-type
+ (const facebook-host-aliases))))
+ (default-value #f)
+ (description "Add a list of known Facebook hosts to @file{/etc/hosts}")))
(define-record-type* <dhcp-client-configuration>
dhcp-client-configuration make-dhcp-client-configuration
--
2.38.1
[bug#60735] [PATCH v2 1/3] services: Add etc-hosts-service-type., Ludovic Courtès, 2023/01/23
[bug#60735] [PATCH v2 1/3] services: Add etc-hosts-service-type., Ludovic Courtès, 2023/01/23