diff mbox

[1/2] gnu: Add dnscrypt-wrapper.

Message ID 20161126153032.27807-1-mbakke@fastmail.com
State New
Headers show

Commit Message

Marius Bakke Nov. 26, 2016, 3:30 p.m. UTC
* gnu/packages/dns.scm (dnscrypt-wrapper): New variable.
---
 gnu/packages/dns.scm | 42 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

Comments

Kei Yamashita Nov. 27, 2016, 2:28 a.m. UTC | #1
Marius Bakke <mbakke@fastmail.com> writes:

> * gnu/packages/dns.scm (dnscrypt-wrapper): New variable.
> ---
>  gnu/packages/dns.scm | 42 ++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 42 insertions(+)
>
> diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
> index b49a0b7..0c8c547 100644
> --- a/gnu/packages/dns.scm
> +++ b/gnu/packages/dns.scm
> @@ -6,6 +6,7 @@
>  ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
>  ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
>  ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
> +;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
>  ;;;
>  ;;; This file is part of GNU Guix.
>  ;;;
> @@ -26,7 +27,9 @@
>    #:use-module (gnu packages autotools)
>    #:use-module (gnu packages base)
>    #:use-module (gnu packages databases)
> +  #:use-module (gnu packages crypto)
>    #:use-module (gnu packages groff)
> +  #:use-module (gnu packages libevent)
>    #:use-module (gnu packages linux)
>    #:use-module (gnu packages perl)
>    #:use-module (gnu packages pkg-config)
> @@ -134,6 +137,45 @@ high-volume and high-reliability applications. The name BIND stands for
>      (home-page "https://www.isc.org/downloads/bind")
>      (license (list license:isc))))
>  
> +(define-public dnscrypt-wrapper
> +  (package
> +    (name "dnscrypt-wrapper")
> +    (version "0.2.2")
> +    (source (origin
> +              (method url-fetch)
> +              (uri (string-append
> +                    "https://github.com/cofyc/dnscrypt-wrapper/releases"
> +                    "/download/v" version "/" name "-v" version ".tar.bz2"))
> +              (sha256
> +               (base32
> +                "1vhg4g0r687f51wcdn7z9w1hxapazx6vyh5rsr8wa48sljzd583g"))))
> +    (build-system gnu-build-system)
> +    (arguments
> +     `(#:make-flags '("CC=gcc")
> +       ;; TODO: Tests require ruby-cucumber and ruby-aruba.
> +       #:tests? #f
> +       #:phases
> +       (modify-phases %standard-phases
> +         (add-before 'configure 'create-configure
> +           (lambda _
> +             (zero? (system* "make" "configure")))))))
> +    (native-inputs
> +     `(("autoconf" ,autoconf)))
> +    (inputs
> +     `(("libevent" ,libevent)
> +       ("libsodium" ,libsodium)))
> +    (home-page "https://github.com/Cofyc/dnscrypt-wrapper")
> +    (synopsis "Server-side dnscrypt proxy")
> +    (description
> +     "Dnscrypt-wrapper can turn any DNS resolver into a @code{dnscrypt}
> +compliant name server.")
> +    (license (list license:isc
> +                   ;; Bundled argparse is MIT. TODO: package and unbundle.
> +                   license:expat
> +                   ;; dns-protocol.h and rfc1035.{c,h} is gpl2 or gpl3 (either).
> +                   license:gpl2
> +                   license:gpl3))))
> +
>  (define-public libasr
>    (package
>      (name "libasr")

I'm not sure how to test the functionality of the software, but the
patch itself LGTM.
Marius Bakke Nov. 27, 2016, 10:29 a.m. UTC | #2
Kei Kebreau <kei@openmailbox.org> writes:

> Marius Bakke <mbakke@fastmail.com> writes:
>
>> * gnu/packages/dns.scm (dnscrypt-wrapper): New variable.
>> ---
>>  gnu/packages/dns.scm | 42 ++++++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 42 insertions(+)
>>
>> diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
>> index b49a0b7..0c8c547 100644
>> --- a/gnu/packages/dns.scm
>> +++ b/gnu/packages/dns.scm
>> @@ -6,6 +6,7 @@
>>  ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
>>  ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
>>  ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
>> +;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
>>  ;;;
>>  ;;; This file is part of GNU Guix.
>>  ;;;
>> @@ -26,7 +27,9 @@
>>    #:use-module (gnu packages autotools)
>>    #:use-module (gnu packages base)
>>    #:use-module (gnu packages databases)
>> +  #:use-module (gnu packages crypto)
>>    #:use-module (gnu packages groff)
>> +  #:use-module (gnu packages libevent)
>>    #:use-module (gnu packages linux)
>>    #:use-module (gnu packages perl)
>>    #:use-module (gnu packages pkg-config)
>> @@ -134,6 +137,45 @@ high-volume and high-reliability applications. The name BIND stands for
>>      (home-page "https://www.isc.org/downloads/bind")
>>      (license (list license:isc))))
>>  
>> +(define-public dnscrypt-wrapper
>> +  (package
>> +    (name "dnscrypt-wrapper")
>> +    (version "0.2.2")
>> +    (source (origin
>> +              (method url-fetch)
>> +              (uri (string-append
>> +                    "https://github.com/cofyc/dnscrypt-wrapper/releases"
>> +                    "/download/v" version "/" name "-v" version ".tar.bz2"))
>> +              (sha256
>> +               (base32
>> +                "1vhg4g0r687f51wcdn7z9w1hxapazx6vyh5rsr8wa48sljzd583g"))))
>> +    (build-system gnu-build-system)
>> +    (arguments
>> +     `(#:make-flags '("CC=gcc")
>> +       ;; TODO: Tests require ruby-cucumber and ruby-aruba.
>> +       #:tests? #f
>> +       #:phases
>> +       (modify-phases %standard-phases
>> +         (add-before 'configure 'create-configure
>> +           (lambda _
>> +             (zero? (system* "make" "configure")))))))
>> +    (native-inputs
>> +     `(("autoconf" ,autoconf)))
>> +    (inputs
>> +     `(("libevent" ,libevent)
>> +       ("libsodium" ,libsodium)))
>> +    (home-page "https://github.com/Cofyc/dnscrypt-wrapper")
>> +    (synopsis "Server-side dnscrypt proxy")
>> +    (description
>> +     "Dnscrypt-wrapper can turn any DNS resolver into a @code{dnscrypt}
>> +compliant name server.")
>> +    (license (list license:isc
>> +                   ;; Bundled argparse is MIT. TODO: package and unbundle.
>> +                   license:expat
>> +                   ;; dns-protocol.h and rfc1035.{c,h} is gpl2 or gpl3 (either).
>> +                   license:gpl2
>> +                   license:gpl3))))
>> +
>>  (define-public libasr
>>    (package
>>      (name "libasr")
>
> I'm not sure how to test the functionality of the software, but the
> patch itself LGTM.

To test it, follow the steps in the README on a remote machine:

https://github.com/Cofyc/dnscrypt-wrapper#usage

..and set up dnscrypt-proxy on your local computer to talk to it. Then
add 'nameserver 127.0.0.1' to resolv.conf.

I'm currently using this to bypass a DNS filter, so I know it works ;-)
Kei Yamashita Nov. 27, 2016, 4:24 p.m. UTC | #3
Marius Bakke <mbakke@fastmail.com> writes:

> Kei Kebreau <kei@openmailbox.org> writes:
>
>> Marius Bakke <mbakke@fastmail.com> writes:
>>
>>> * gnu/packages/dns.scm (dnscrypt-wrapper): New variable.
>>> ---
>>>  gnu/packages/dns.scm | 42 ++++++++++++++++++++++++++++++++++++++++++
>>>  1 file changed, 42 insertions(+)
>>>
>>> diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
>>> index b49a0b7..0c8c547 100644
>>> --- a/gnu/packages/dns.scm
>>> +++ b/gnu/packages/dns.scm
>>> @@ -6,6 +6,7 @@
>>>  ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
>>>  ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
>>>  ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
>>> +;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
>>>  ;;;
>>>  ;;; This file is part of GNU Guix.
>>>  ;;;
>>> @@ -26,7 +27,9 @@
>>>    #:use-module (gnu packages autotools)
>>>    #:use-module (gnu packages base)
>>>    #:use-module (gnu packages databases)
>>> +  #:use-module (gnu packages crypto)
>>>    #:use-module (gnu packages groff)
>>> +  #:use-module (gnu packages libevent)
>>>    #:use-module (gnu packages linux)
>>>    #:use-module (gnu packages perl)
>>>    #:use-module (gnu packages pkg-config)
>>> @@ -134,6 +137,45 @@ high-volume and high-reliability applications. The name BIND stands for
>>>      (home-page "https://www.isc.org/downloads/bind")
>>>      (license (list license:isc))))
>>>  
>>> +(define-public dnscrypt-wrapper
>>> +  (package
>>> +    (name "dnscrypt-wrapper")
>>> +    (version "0.2.2")
>>> +    (source (origin
>>> +              (method url-fetch)
>>> +              (uri (string-append
>>> +                    "https://github.com/cofyc/dnscrypt-wrapper/releases"
>>> +                    "/download/v" version "/" name "-v" version ".tar.bz2"))
>>> +              (sha256
>>> +               (base32
>>> +                "1vhg4g0r687f51wcdn7z9w1hxapazx6vyh5rsr8wa48sljzd583g"))))
>>> +    (build-system gnu-build-system)
>>> +    (arguments
>>> +     `(#:make-flags '("CC=gcc")
>>> +       ;; TODO: Tests require ruby-cucumber and ruby-aruba.
>>> +       #:tests? #f
>>> +       #:phases
>>> +       (modify-phases %standard-phases
>>> +         (add-before 'configure 'create-configure
>>> +           (lambda _
>>> +             (zero? (system* "make" "configure")))))))
>>> +    (native-inputs
>>> +     `(("autoconf" ,autoconf)))
>>> +    (inputs
>>> +     `(("libevent" ,libevent)
>>> +       ("libsodium" ,libsodium)))
>>> +    (home-page "https://github.com/Cofyc/dnscrypt-wrapper")
>>> +    (synopsis "Server-side dnscrypt proxy")
>>> +    (description
>>> +     "Dnscrypt-wrapper can turn any DNS resolver into a @code{dnscrypt}
>>> +compliant name server.")
>>> +    (license (list license:isc
>>> +                   ;; Bundled argparse is MIT. TODO: package and unbundle.
>>> +                   license:expat
>>> +                   ;; dns-protocol.h and rfc1035.{c,h} is gpl2 or gpl3 (either).
>>> +                   license:gpl2
>>> +                   license:gpl3))))
>>> +
>>>  (define-public libasr
>>>    (package
>>>      (name "libasr")
>>
>> I'm not sure how to test the functionality of the software, but the
>> patch itself LGTM.
>
> To test it, follow the steps in the README on a remote machine:
>
> https://github.com/Cofyc/dnscrypt-wrapper#usage
>
> ..and set up dnscrypt-proxy on your local computer to talk to it. Then
> add 'nameserver 127.0.0.1' to resolv.conf.
>
> I'm currently using this to bypass a DNS filter, so I know it works ;-)

Thanks for the instructions. This works for me! :)
Marius Bakke Nov. 27, 2016, 8:29 p.m. UTC | #4
Kei Kebreau <kei@openmailbox.org> writes:

> Marius Bakke <mbakke@fastmail.com> writes:
>
>> Kei Kebreau <kei@openmailbox.org> writes:
>>
>>> Marius Bakke <mbakke@fastmail.com> writes:
>>>
>>>> * gnu/packages/dns.scm (dnscrypt-wrapper): New variable.
>>>> ---
>>>>  gnu/packages/dns.scm | 42 ++++++++++++++++++++++++++++++++++++++++++
>>>>  1 file changed, 42 insertions(+)
>>>>
>>>> diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
>>>> index b49a0b7..0c8c547 100644
>>>> --- a/gnu/packages/dns.scm
>>>> +++ b/gnu/packages/dns.scm
>>>> @@ -6,6 +6,7 @@
>>>>  ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
>>>>  ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
>>>>  ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
>>>> +;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
>>>>  ;;;
>>>>  ;;; This file is part of GNU Guix.
>>>>  ;;;
>>>> @@ -26,7 +27,9 @@
>>>>    #:use-module (gnu packages autotools)
>>>>    #:use-module (gnu packages base)
>>>>    #:use-module (gnu packages databases)
>>>> +  #:use-module (gnu packages crypto)
>>>>    #:use-module (gnu packages groff)
>>>> +  #:use-module (gnu packages libevent)
>>>>    #:use-module (gnu packages linux)
>>>>    #:use-module (gnu packages perl)
>>>>    #:use-module (gnu packages pkg-config)
>>>> @@ -134,6 +137,45 @@ high-volume and high-reliability applications. The name BIND stands for
>>>>      (home-page "https://www.isc.org/downloads/bind")
>>>>      (license (list license:isc))))
>>>>  
>>>> +(define-public dnscrypt-wrapper
>>>> +  (package
>>>> +    (name "dnscrypt-wrapper")
>>>> +    (version "0.2.2")
>>>> +    (source (origin
>>>> +              (method url-fetch)
>>>> +              (uri (string-append
>>>> +                    "https://github.com/cofyc/dnscrypt-wrapper/releases"
>>>> +                    "/download/v" version "/" name "-v" version ".tar.bz2"))
>>>> +              (sha256
>>>> +               (base32
>>>> +                "1vhg4g0r687f51wcdn7z9w1hxapazx6vyh5rsr8wa48sljzd583g"))))
>>>> +    (build-system gnu-build-system)
>>>> +    (arguments
>>>> +     `(#:make-flags '("CC=gcc")
>>>> +       ;; TODO: Tests require ruby-cucumber and ruby-aruba.
>>>> +       #:tests? #f
>>>> +       #:phases
>>>> +       (modify-phases %standard-phases
>>>> +         (add-before 'configure 'create-configure
>>>> +           (lambda _
>>>> +             (zero? (system* "make" "configure")))))))
>>>> +    (native-inputs
>>>> +     `(("autoconf" ,autoconf)))
>>>> +    (inputs
>>>> +     `(("libevent" ,libevent)
>>>> +       ("libsodium" ,libsodium)))
>>>> +    (home-page "https://github.com/Cofyc/dnscrypt-wrapper")
>>>> +    (synopsis "Server-side dnscrypt proxy")
>>>> +    (description
>>>> +     "Dnscrypt-wrapper can turn any DNS resolver into a @code{dnscrypt}
>>>> +compliant name server.")
>>>> +    (license (list license:isc
>>>> +                   ;; Bundled argparse is MIT. TODO: package and unbundle.
>>>> +                   license:expat
>>>> +                   ;; dns-protocol.h and rfc1035.{c,h} is gpl2 or gpl3 (either).
>>>> +                   license:gpl2
>>>> +                   license:gpl3))))
>>>> +
>>>>  (define-public libasr
>>>>    (package
>>>>      (name "libasr")
>>>
>>> I'm not sure how to test the functionality of the software, but the
>>> patch itself LGTM.
>>
>> To test it, follow the steps in the README on a remote machine:
>>
>> https://github.com/Cofyc/dnscrypt-wrapper#usage
>>
>> ..and set up dnscrypt-proxy on your local computer to talk to it. Then
>> add 'nameserver 127.0.0.1' to resolv.conf.
>>
>> I'm currently using this to bypass a DNS filter, so I know it works ;-)
>
> Thanks for the instructions. This works for me! :)

Cool, thanks for testing. I'll commit these in a few days, unless some
autotools guru steps in and figures out how to skip the unnecessary
"libltdl" build in dnscrypt-proxy :-)
Hartmut Goebel Nov. 27, 2016, 10:57 p.m. UTC | #5
Am 26.11.2016 um 16:30 schrieb Marius Bakke:
> +     "Dnscrypt-wrapper can turn any DNS resolver into a @code{dnscrypt}
> +compliant name server.")

I would appreciate if you could be a bit more verbose here. What it this
"dnscrypt" thing?
Marius Bakke Nov. 28, 2016, 12:42 a.m. UTC | #6
Hartmut Goebel <h.goebel@crazy-compilers.com> writes:

> Am 26.11.2016 um 16:30 schrieb Marius Bakke:
>> +     "Dnscrypt-wrapper can turn any DNS resolver into a @code{dnscrypt}
>> +compliant name server.")
>
> I would appreciate if you could be a bit more verbose here. What it this
> "dnscrypt" thing?

Thanks, you are right. I put all the effort into the dnscrypt-proxy
package. I've updated it to read:

"@command{dnscrypt-wrapper} is a tool to expose a name server over the
@code{dnscrypt} protocol.  It can be used as an endpoint for the
@command{dnscrypt-proxy} client to securely tunnel DNS requests between
the two."
ng0 Nov. 28, 2016, 1:17 a.m. UTC | #7
Marius Bakke <mbakke@fastmail.com> writes:

> Hartmut Goebel <h.goebel@crazy-compilers.com> writes:
>
>> Am 26.11.2016 um 16:30 schrieb Marius Bakke:
>>> +     "Dnscrypt-wrapper can turn any DNS resolver into a @code{dnscrypt}
>>> +compliant name server.")
>>
>> I would appreciate if you could be a bit more verbose here. What it this
>> "dnscrypt" thing?
>
> Thanks, you are right. I put all the effort into the dnscrypt-proxy
> package. I've updated it to read:
>
> "@command{dnscrypt-wrapper} is a tool to expose a name server over the
> @code{dnscrypt} protocol.  It can be used as an endpoint for the
> @command{dnscrypt-proxy} client to securely tunnel DNS requests between
> the two."

This (second description) is clear enough in my opinion.  Whoever
sets up (and runs) an dns server knows what dnscrypt is, and
whoever wants to connect to an dnscrypt enabled dns server /
batch of servers already got provided with the details to do so.
This description gives enough details and words to look them up
for people not familar with the topic.
Hartmut Goebel Nov. 28, 2016, 9:12 a.m. UTC | #8
Am 28.11.2016 um 02:17 schrieb ng0:
>> > "@command{dnscrypt-wrapper} is a tool to expose a name server over the
>> > @code{dnscrypt} protocol.  It can be used as an endpoint for the
>> > @command{dnscrypt-proxy} client to securely tunnel DNS requests between
>> > the two."
> This (second description) is clear enough in my opinion.  Whoever
+1 Thanks for the update
diff mbox

Patch

diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index b49a0b7..0c8c547 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -6,6 +6,7 @@ 
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
 ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -26,7 +27,9 @@ 
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
   #:use-module (gnu packages databases)
+  #:use-module (gnu packages crypto)
   #:use-module (gnu packages groff)
+  #:use-module (gnu packages libevent)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -134,6 +137,45 @@  high-volume and high-reliability applications. The name BIND stands for
     (home-page "https://www.isc.org/downloads/bind")
     (license (list license:isc))))
 
+(define-public dnscrypt-wrapper
+  (package
+    (name "dnscrypt-wrapper")
+    (version "0.2.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/cofyc/dnscrypt-wrapper/releases"
+                    "/download/v" version "/" name "-v" version ".tar.bz2"))
+              (sha256
+               (base32
+                "1vhg4g0r687f51wcdn7z9w1hxapazx6vyh5rsr8wa48sljzd583g"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags '("CC=gcc")
+       ;; TODO: Tests require ruby-cucumber and ruby-aruba.
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'create-configure
+           (lambda _
+             (zero? (system* "make" "configure")))))))
+    (native-inputs
+     `(("autoconf" ,autoconf)))
+    (inputs
+     `(("libevent" ,libevent)
+       ("libsodium" ,libsodium)))
+    (home-page "https://github.com/Cofyc/dnscrypt-wrapper")
+    (synopsis "Server-side dnscrypt proxy")
+    (description
+     "Dnscrypt-wrapper can turn any DNS resolver into a @code{dnscrypt}
+compliant name server.")
+    (license (list license:isc
+                   ;; Bundled argparse is MIT. TODO: package and unbundle.
+                   license:expat
+                   ;; dns-protocol.h and rfc1035.{c,h} is gpl2 or gpl3 (either).
+                   license:gpl2
+                   license:gpl3))))
+
 (define-public libasr
   (package
     (name "libasr")