X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/018114baa75c1986a1a971f5e48e6b722c7741ba..ffe714b5f441ca22d69ecef34bdbb8e61bf758c4:/gnu/packages/dns.scm diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm index 86569b5493..8bb34111d2 100644 --- a/gnu/packages/dns.scm +++ b/gnu/packages/dns.scm @@ -4,9 +4,9 @@ ;;; Copyright © 2016 Ricardo Wurmus ;;; Copyright © 2016, 2017 Efraim Flashner ;;; Copyright © 2016 John Darrington -;;; Copyright © 2016 ng0 +;;; Copyright © 2016 Nikita ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice -;;; Copyright © 2016 Marius Bakke +;;; Copyright © 2016, 2020 Marius Bakke ;;; Copyright © 2017 Vasile Dumitrascu ;;; Copyright © 2017 Gregor Giesen ;;; Copyright © 2018 Oleg Pykhalov @@ -15,6 +15,8 @@ ;;; Copyright © 2019 Rutger Helling ;;; Copyright © 2020 Pierre Langlois ;;; Copyright © 2020 Arun Isaac +;;; Copyright © 2020 Leo Famulari +;;; Copyright © 2020 Brice Waegeneire ;;; ;;; This file is part of GNU Guix. ;;; @@ -36,6 +38,7 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages base) #:use-module (gnu packages bash) + #:use-module (gnu packages certs) #:use-module (gnu packages check) #:use-module (gnu packages databases) #:use-module (gnu packages documentation) @@ -43,10 +46,12 @@ #:use-module (gnu packages crypto) #:use-module (gnu packages datastructures) #:use-module (gnu packages flex) + #:use-module (gnu packages freedesktop) #:use-module (gnu packages gcc) #:use-module (gnu packages glib) #:use-module (gnu packages groff) #:use-module (gnu packages groff) + #:use-module (gnu packages gtk) #:use-module (gnu packages libedit) #:use-module (gnu packages libevent) #:use-module (gnu packages libidn) @@ -60,6 +65,7 @@ #:use-module (gnu packages protobuf) #:use-module (gnu packages python) #:use-module (gnu packages python-xyz) + #:use-module (gnu packages shells) #:use-module (gnu packages sphinx) #:use-module (gnu packages swig) #:use-module (gnu packages tls) @@ -71,14 +77,203 @@ #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix utils) + #:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system gnu) #:use-module (guix build-system meson) #:use-module (guix build-system trivial)) +(define-public ldns + (package + (name "ldns") + (version "1.7.1") + (source + (origin + (method url-fetch) + (uri + (string-append "https://www.nlnetlabs.nl/downloads/" + name "/" name "-" version ".tar.gz")) + (sha256 + (base32 "0ac242n7996fswq1a3nlh1bbbhrsdwsq4mx7xq8ffq6aplb4rj4a")) + (patches + (search-patches + ;; To create make-flag vairables, + ;; for splitting installation of drill and examples. + "ldns-drill-examples.patch")))) + (build-system gnu-build-system) + (outputs '("out" "drill" "examples" "pyldns")) + (arguments + `( ;; Tests require Tpkg. + ;; https://tpkg.github.io/ + #:tests? #f + #:configure-flags + (list + "--disable-static" + "--enable-gost-anyway" + "--enable-rrtype-ninfo" + "--enable-rrtype-rkey" + "--enable-rrtype-ta" + "--enable-rrtype-avc" + "--enable-rrtype-doa" + "--enable-rrtype-amtrelay" + "--with-drill" + "--with-examples" + "--with-pyldns" + ;; Perl module DNS::LDNS not available. + ;; https://github.com/erikoest/DNS-LDNS.git + ;; "--with-p5-dns-ldns" + (string-append "--with-ssl=" + (assoc-ref %build-inputs "openssl")) + (string-append "--with-ca-path=" + (assoc-ref %build-inputs "nss-certs") + "/etc/ssl/certs")) + #:make-flags + (list + (string-append "drillbindir=" + (assoc-ref %outputs "drill") + "/bin") + (string-append "drillmandir=" + (assoc-ref %outputs "drill") + "/share/man") + (string-append "examplesbindir=" + (assoc-ref %outputs "examples") + "/bin") + (string-append "examplesmandir=" + (assoc-ref %outputs "examples") + "/share/man") + (string-append "python_site=" + (assoc-ref %outputs "pyldns") + "/lib/python" + ,(version-major+minor + (package-version python)) + "/site-packages")))) + (native-inputs + `(("doxygen" ,doxygen) + ("ksh" ,oksh) + ("perl" ,perl) + ("perl-devel-checklib" ,perl-devel-checklib) + ("pkg-config" ,pkg-config) + ("python" ,python-wrapper) + ("swig" ,swig))) + (inputs + `(("libpcap" ,libpcap) + ("nss-certs" ,nss-certs) + ("openssl" ,openssl))) + (synopsis "DNS library that facilitates DNS tool programming") + (description "LDNS aims to simplify DNS programming, it supports recent +RFCs like the DNSSEC documents, and allows developers to easily create +software conforming to current RFCs, and experimental software for current +Internet Drafts. A secondary benefit of using ldns is speed; ldns is written in +C it should be a lot faster than Perl.") + (home-page "https://nlnetlabs.nl/projects/ldns/about/") + (license license:bsd-3))) + +(define-public dnssec-trigger + (package + (name "dnssec-trigger") + (version "0.17") + (source + (origin + (method url-fetch) + (uri + (string-append "https://www.nlnetlabs.nl/downloads/" + name "/" name "-" version ".tar.gz")) + (sha256 + (base32 "10928q406x9r66a090xl5kznzgyxpja88w4srwcv454hd351j9f0")))) + (build-system glib-or-gtk-build-system) + (outputs '("out" "gui" "nm")) + (arguments + `(#:test-target "test" + #:configure-flags + (list + (string-append "--with-ssl=" + (assoc-ref %build-inputs "openssl")) + "--with-hooks=networkmanager" + (string-append "--with-networkmanager-dispatch=" + (assoc-ref %outputs "nm") + "/etc/NetworkManager/dispatcher.d") + (string-append "--with-xdg-autostart=" + (assoc-ref %outputs "gui") + "/etc/xdg/autostart") + (string-append "--with-uidir=" + (assoc-ref %outputs "gui") + "/share/dnssec-trigger") + (string-append "--with-python=" + (assoc-ref %build-inputs "python") + "/bin/python") + (string-append "--with-unbound-control=" + (assoc-ref %build-inputs "unbound") + "/sbin/unbound-control") + "--with-forward-zones-support") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-configure + (lambda _ + (substitute* "configure" + (("appindicator-0.1") + "appindicator3-0.1")) + #t)) + (add-before 'configure 'patch-makefile + (lambda _ + (substitute* "Makefile.in" + (("/usr") + "$(prefix)") + (("/etc") + "$(prefix)/etc") + ((".*gtk-update-icon-cache.*") + "")) + #t)) + (add-after 'install 'remove-systemd + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out"))) + (delete-file-recursively + (string-append out "/lib/systemd")) + #t))) + (add-after 'remove-systemd 'move-gui + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (gui (assoc-ref outputs "gui"))) + (mkdir-p (string-append gui "/bin")) + (mkdir-p (string-append gui "/share")) + (rename-file + (string-append out "/bin") + (string-append gui "/bin")) + (rename-file + (string-append out "/share/icons") + (string-append gui "/share/icons")) + #t))) + (add-after 'move-gui 'move-nm + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (nm (assoc-ref outputs "nm"))) + (mkdir-p (string-append nm "/libexec")) + (rename-file + (string-append out "/libexec") + (string-append nm "/libexec")) + #t)))))) + (native-inputs + `(("cmocka" ,cmocka) + ("pkg-config" ,pkg-config) + ("python" ,python-wrapper))) + (inputs + `(("gtk+-2" ,gtk+-2) + ("ldns" ,ldns) + ("libappindicator" ,libappindicator) + ("openssl" ,openssl) + ("unbound" ,unbound))) + (synopsis "DNSSEC protection for the DNS traffic") + (description "DNSSEC-Trigger enables your computer to use DNSSEC protection +for the DNS traffic. It relies on the Unbound DNS resolver running locally on +your system, which performs DNSSEC validation. It reconfigures Unbound in such +a way that it will signal it to to use the DHCP obtained forwarders if possible, +fallback to doing its own AUTH queries if that fails, and if that fails it will +prompt the user with the option to go with insecure DNS only.") + (home-page "https://www.nlnetlabs.nl/projects/dnssec-trigger/about/") + (license license:bsd-3))) + (define-public dnsmasq (package (name "dnsmasq") - (version "2.81") + (version "2.82") (source (origin (method url-fetch) (uri (string-append @@ -86,7 +281,7 @@ version ".tar.xz")) (sha256 (base32 - "1yzq6anwgr5rlnwydpszb51cyhp2vjq29b24ck19flbwac1sk73l")))) + "0cn1xd1s6xs78jmrmwjnh9m6w3q38pk6dyqy2phvasqiyd33cll4")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -117,7 +312,8 @@ and BOOTP/TFTP for network booting of diskless machines.") (define-public isc-bind (package (name "bind") - (version "9.16.2") + ;; When updating, check whether isc-dhcp's bundled copy should be as well. + (version "9.16.6") (source (origin (method url-fetch) (uri (string-append @@ -125,7 +321,7 @@ and BOOTP/TFTP for network booting of diskless machines.") "/bind-" version ".tar.xz")) (sha256 (base32 - "0gwr4p14zy5jqq050n762rfc33km51qwipcwy6bsvk55ziybgrfr")))) + "1jvi6ms51vyrhpflx05xlb7gblyd59zsyj28b8s3pl3xnkrv0rxm")))) (build-system gnu-build-system) (outputs `("out" "utils")) (inputs @@ -175,14 +371,28 @@ and BOOTP/TFTP for network booting of diskless machines.") (with-directory-excursion "fuzz" (invoke "make" "check")) #t))))) - (synopsis "An implementation of the Domain Name System") + (synopsis "Domain Name System (DNS) implementation") (description "BIND is an implementation of the @dfn{Domain Name System} (DNS) protocols for the Internet. It is a reference implementation of those protocols, but it is also production-grade software, suitable for use in -high-volume and high-reliability applications. The name BIND stands for -\"Berkeley Internet Name Domain\", because the software originated in the early -1980s at the University of California at Berkeley.") - (home-page "https://www.isc.org/downloads/bind") +high-volume and high-reliability applications. The name BIND stands for +\"Berkeley Internet Name Domain\", because the software originated in the +early 1980s at the University of California at Berkeley. The @code{utils} +output of this package contains the following DNS name servers related command +line utilities: +@table @code +@item delv +DNS lookup and validation utility +@item dig +DNS lookup utility +@item host +DNS lookup utility +@item nslookup +Internet name servers interactive query utility +@item nsupdate +Dynamic DNS update utility +@end table") + (home-page "https://www.isc.org/bind/") (license (list license:mpl2.0)))) (define-public dnscrypt-proxy @@ -319,14 +529,14 @@ asynchronous fashion.") (define-public nsd (package (name "nsd") - (version "4.2.4") + (version "4.3.2") (source (origin (method url-fetch) (uri (string-append "https://www.nlnetlabs.nl/downloads/nsd/nsd-" version ".tar.gz")) (sha256 - (base32 "0z7j3vwqqj0hh8n5irb2yqwzl45k4sn2wczbq1b1lqv5cxv6vgcy")))) + (base32 "0ac3mbn5z4nc18782m9aswdpi2m9f4665vidw0ciyigdh0pywp2v")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -389,14 +599,14 @@ to result in system-wide compromise.") (define-public unbound (package (name "unbound") - (version "1.10.0") + (version "1.10.1") (source (origin (method url-fetch) (uri (string-append "https://www.unbound.net/downloads/unbound-" version ".tar.gz")) (sha256 - (base32 "0mg9divpysr42sp0m693a70693dp8025v6c9dv1yabr4g1jlhbqm")))) + (base32 "0dnmh9jjh2v274f0hl31bgv40pl77mmfgky8bkqr5kvi3b17fdmp")))) (build-system gnu-build-system) (outputs '("out" "python")) (native-inputs @@ -593,14 +803,14 @@ Extensions} (DNSSEC).") (define-public knot (package (name "knot") - (version "2.9.3") + (version "2.9.6") (source (origin (method url-fetch) (uri (string-append "https://secure.nic.cz/files/knot-dns/" "knot-" version ".tar.xz")) (sha256 - (base32 "0zm0642hkb16sqkqpa84f89f3s0bw44m837r1nia8m89swvz3bgj")) + (base32 "1rxjjisr6rz1wa4279ghvj5zzhgyjhncmb9dkzqm8nw2qs1jhx5z")) (modules '((guix build utils))) (snippet '(begin @@ -721,8 +931,9 @@ synthesis, and on-the-fly re-configuration.") ("libuv" ,libuv) ("lmdb" ,lmdb) ("luajit" ,luajit) - ;; TODO: Add optional lua modules: basexx, cqueues and psl. + ;; TODO: Add optional lua modules: basexx and psl. ("lua-bitop" ,lua5.1-bitop) + ("lua-cqueues" ,lua5.1-cqueues) ("lua-filesystem" ,lua5.1-filesystem) ("lua-sec" ,lua5.1-sec) ("lua-socket" ,lua5.1-socket))) @@ -745,7 +956,7 @@ LuaJIT, both a resolver library and a daemon.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/ddclient/ddclient.git") + (url "https://github.com/ddclient/ddclient") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -878,22 +1089,16 @@ System (HNS) peer-to-peer network.") (define-public libmicrodns (package (name "libmicrodns") - (version "0.0.10") + (version "0.1.2") (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/videolabs/libmicrodns") - (commit version))) - (file-name (git-file-name name version)) + (method url-fetch) + (uri (string-append "https://github.com/videolabs/libmicrodns/" + "releases/download/" version "/microdns-" + version ".tar.xz")) (sha256 (base32 - "1xvl9k49ng35wbsqmnjnyqvkyjf8dcq2ywsq3jp3wh0rgmxhq2fh")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config) - ("autoconf" ,autoconf) - ("automake" ,automake) - ("libtool" ,libtool))) + "0p4va18zxgmzcdwhlbg2mmjwswlbgqy4ay5vaxrw7cxmhsflnv36")))) + (build-system meson-build-system) (home-page "https://github.com/videolabs/libmicrodns") (synopsis "Minimal mDNS resolver library") (description "@code{libmicrodns} provides a minimal implementation of a @@ -918,7 +1123,7 @@ local networks.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/publicsuffix/list.git") + (url "https://github.com/publicsuffix/list") (commit commit))) (file-name (git-file-name name version)) (sha256 @@ -955,7 +1160,7 @@ known public suffixes.") (define-public maradns (package (name "maradns") - (version "3.5.0004") + (version "3.5.0007") (source (origin (method url-fetch) @@ -963,18 +1168,13 @@ known public suffixes.") (version-major+minor version) "/" version "/maradns-" version ".tar.xz")) (sha256 - (base32 - "1zv0i6m4m05ay5zlhwq1h88hgjq2d81cjanpnb3gyhr0xhmjwk6a")))) + (base32 "0bc19xylg4whww9qaj5i4izwxcrh0c0ja7l1pfcn2la02hlvg1a6")))) (build-system gnu-build-system) (arguments - `(#:tests? #f ; need to be root to run tests + `(#:tests? #f ; need to be root to run tests #:make-flags (list - (string-append "CC=" - (if ,(%current-target-system) - (string-append (assoc-ref %build-inputs "cross-gcc") - "/bin/" ,(%current-target-system) "-gcc") - "gcc")) + ,(string-append "CC=" (cc-for-target)) (string-append "PREFIX=" %output) (string-append "RPM_BUILD_ROOT=" %output)) #:phases @@ -1006,3 +1206,34 @@ known public suffixes.") consists of a UDP-only authoritative DNS server for hosting domains, and a UDP and TCP-capable recursive DNS server for finding domains on the internet.") (license license:bsd-2))) + +(define-public openresolv + (package + (name "openresolv") + (version "3.10.0") + (source (origin + (method url-fetch) + (uri (string-append "https://roy.marples.name/downloads/openresolv/" + "openresolv-" version ".tar.xz")) + (sha256 + (base32 + "01ms6c087la4hk0f0w6n2vpsb7dg4kklah2rqyhz88p0vr9bqy20")) + (patches + (search-patches "openresolv-restartcmd-guix.patch")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; No test suite + #:configure-flags + (list (string-append "--sysconfdir=/etc")) + #:make-flags + (list (string-append "SYSCONFDIR=/" (assoc-ref %outputs "out") "/etc")))) + (home-page "https://roy.marples.name/projects/openresolv/") + (synopsis "Resolvconf POSIX compliant implementation, a middleman for resolv.conf") + (description "openresolv is an implementation of @command{resolvconf}, the +middleman between the network configuration services and +@file{/etc/resolv.conf}. @command{resolvconf} itself is just a script that +stores, removes and lists a full @file{resolv.conf} generated for the +interface. It then calls all the helper scripts it knows about so it can +configure the real @file{/etc/resolv.conf} and optionally any local +nameservers other than libc.") + (license license:bsd-2)))