gnu: igt-gpu-tools: Don't use NAME in source URI.
[jackhill/guix/guix.git] / gnu / packages / networking.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2014, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
3 ;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
4 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
5 ;;; Copyright © 2015, 2016, 2017 Stefan Reichör <stefan@xsteve.at>
6 ;;; Copyright © 2016 Raimon Grau <raimonster@gmail.com>
7 ;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
8 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
9 ;;; Copyright © 2016, 2017, 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
10 ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
11 ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
12 ;;; Copyright © 2016, 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
13 ;;; Copyright © 2016 Benz Schenk <benz.schenk@uzh.ch>
14 ;;; Copyright © 2016, 2017 Pjotr Prins <pjotr.guix@thebird.nl>
15 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
16 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
17 ;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
18 ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
19 ;;; Copyright © 2017 Gábor Boskovits <boskovits@gmail.com>
20 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
21 ;;; Copyright © 2018 Adam Van Ymeren <adam@vany.ca>
22 ;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
23 ;;; Copyright © 2018 Tonton <tonton@riseup.net>
24 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
25 ;;; Copyright © 2018 Theodoros Foradis <theodoros@foradis.org>
26 ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
27 ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
28 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
29 ;;;
30 ;;; This file is part of GNU Guix.
31 ;;;
32 ;;; GNU Guix is free software; you can redistribute it and/or modify it
33 ;;; under the terms of the GNU General Public License as published by
34 ;;; the Free Software Foundation; either version 3 of the License, or (at
35 ;;; your option) any later version.
36 ;;;
37 ;;; GNU Guix is distributed in the hope that it will be useful, but
38 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
39 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
40 ;;; GNU General Public License for more details.
41 ;;;
42 ;;; You should have received a copy of the GNU General Public License
43 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
44
45 (define-module (gnu packages networking)
46 #:use-module ((guix licenses) #:prefix license:)
47 #:use-module (guix packages)
48 #:use-module (guix download)
49 #:use-module (guix git-download)
50 #:use-module (guix build-system cmake)
51 #:use-module (guix build-system glib-or-gtk)
52 #:use-module (guix build-system gnu)
53 #:use-module (guix build-system perl)
54 #:use-module (guix build-system python)
55 #:use-module (gnu packages)
56 #:use-module (gnu packages admin)
57 #:use-module (gnu packages adns)
58 #:use-module (gnu packages algebra)
59 #:use-module (gnu packages audio)
60 #:use-module (gnu packages autotools)
61 #:use-module (gnu packages base)
62 #:use-module (gnu packages bison)
63 #:use-module (gnu packages boost)
64 #:use-module (gnu packages check)
65 #:use-module (gnu packages code)
66 #:use-module (gnu packages compression)
67 #:use-module (gnu packages crypto)
68 #:use-module (gnu packages curl)
69 #:use-module (gnu packages dejagnu)
70 #:use-module (gnu packages documentation)
71 #:use-module (gnu packages flex)
72 #:use-module (gnu packages gettext)
73 #:use-module (gnu packages glib)
74 #:use-module (gnu packages gnome)
75 #:use-module (gnu packages gnupg)
76 #:use-module (gnu packages gtk)
77 #:use-module (gnu packages image)
78 #:use-module (gnu packages libidn)
79 #:use-module (gnu packages linux)
80 #:use-module (gnu packages lua)
81 #:use-module (gnu packages multiprecision)
82 #:use-module (gnu packages kerberos)
83 #:use-module (gnu packages ncurses)
84 #:use-module (gnu packages nettle)
85 #:use-module (gnu packages password-utils)
86 #:use-module (gnu packages pcre)
87 #:use-module (gnu packages perl)
88 #:use-module (gnu packages perl-check)
89 #:use-module (gnu packages pkg-config)
90 #:use-module (gnu packages python)
91 #:use-module (gnu packages python-web)
92 #:use-module (gnu packages python-xyz)
93 #:use-module (gnu packages qt)
94 #:use-module (gnu packages readline)
95 #:use-module (gnu packages serialization)
96 #:use-module (gnu packages sqlite)
97 #:use-module (gnu packages ssh)
98 #:use-module (gnu packages textutils)
99 #:use-module (gnu packages tls)
100 #:use-module (gnu packages valgrind)
101 #:use-module (gnu packages wm)
102 #:use-module (gnu packages wxwidgets)
103 #:use-module (gnu packages xml)
104 #:use-module (ice-9 match))
105
106 ;; The gnu.org ‘home’ for this GNU project is a directory listing with 1.6.0 as
107 ;; the latest version. The author's git repository, mentioned in the 1.6.0
108 ;; README and otherwise legit-looking, contains a proper 1.7.0 release tarball
109 ;; with many OUI updates. Use it, even though it's also several years old now.
110 (define-public macchanger
111 (package
112 (name "macchanger")
113 (version "1.7.0")
114 (source
115 (origin
116 (method url-fetch)
117 (uri (string-append "https://github.com/alobbs/macchanger/"
118 "releases/download/" version "/"
119 name "-" version ".tar.gz"))
120 (sha256
121 (base32 "1gs5m0jxyprdp00w2qkbnaqm3ilkjz0q1gqdg4nzdm8g4xy73qns"))))
122 (build-system gnu-build-system)
123 (home-page "https://www.gnu.org/software/macchanger/")
124 (synopsis "Viewing and manipulating MAC addresses of network interfaces")
125 (description "GNU MAC Changer is a utility for viewing and changing MAC
126 addresses of networking devices. New addresses may be set explicitly or
127 randomly. They can include MAC addresses of the same or other hardware vendors
128 or, more generally, MAC addresses of the same category of hardware.")
129 (license license:gpl2+)))
130
131 (define-public miredo
132 (package
133 (name "miredo")
134 (version "1.2.6")
135 (source (origin
136 (method url-fetch)
137 (uri (string-append "http://www.remlab.net/files/miredo/miredo-"
138 version ".tar.xz"))
139 (sha256
140 (base32
141 "0j9ilig570snbmj48230hf7ms8kvcwi2wblycqrmhh85lksd49ps"))))
142 (build-system gnu-build-system)
143 (arguments
144 '(#:phases
145 (modify-phases %standard-phases
146 ;; The checkconf test in src/ requires network access.
147 (add-before
148 'check 'disable-checkconf-test
149 (lambda _
150 (substitute* "src/Makefile"
151 (("^TESTS = .*") "TESTS = \n"))
152 #t)))))
153 (home-page "http://www.remlab.net/miredo/")
154 (synopsis "Teredo IPv6 tunneling software")
155 (description
156 "Miredo is an implementation (client, relay, server) of the Teredo
157 specification, which provides IPv6 Internet connectivity to IPv6 enabled hosts
158 residing in IPv4-only networks, even when they are behind a NAT device.")
159 (license license:gpl2+)))
160
161 (define-public socat
162 (package
163 (name "socat")
164 (version "1.7.3.2")
165 (source (origin
166 (method url-fetch)
167 (uri (string-append
168 "http://www.dest-unreach.org/socat/download/socat-"
169 version ".tar.bz2"))
170 (sha256
171 (base32
172 "0lcj6zpra33xhgvhmz9l3cqz10v8ybafb8dd1yqkwf1rhy01ymp3"))))
173 (build-system gnu-build-system)
174 (arguments '(#:tests? #f)) ;no 'check' phase
175 (inputs `(("openssl" ,openssl)))
176 (home-page "http://www.dest-unreach.org/socat/")
177 (synopsis
178 "Open bidirectional communication channels from the command line")
179 (description
180 "socat is a relay for bidirectional data transfer between two independent
181 data channels---files, pipes, devices, sockets, etc. It can create
182 \"listening\" sockets, named pipes, and pseudo terminals.
183
184 socat can be used, for instance, as TCP port forwarder, as a shell interface
185 to UNIX sockets, IPv6 relay, for redirecting TCP oriented programs to a serial
186 line, to logically connect serial lines on different computers, or to
187 establish a relatively secure environment (su and chroot) for running client
188 or server shell scripts with network connections.")
189 (license license:gpl2)))
190
191 (define-public tcp-wrappers
192 (package
193 (name "tcp-wrappers")
194 (version "7.6")
195 (source (origin
196 (method url-fetch)
197 (uri (string-append
198 "ftp://ftp.porcupine.org/pub/security/tcp_wrappers_"
199 version ".tar.gz"))
200 (sha256
201 (base32
202 "0p9ilj4v96q32klavx0phw9va21fjp8vpk11nbh6v2ppxnnxfhwm"))))
203 (build-system gnu-build-system)
204 (arguments
205 `(#:phases
206 (modify-phases %standard-phases
207 (delete 'configure) ; there is no configure script
208 (delete 'check) ; there are no tests
209 (replace 'build
210 (lambda _
211 (chmod "." #o755)
212 ;; Upstream doesn't generate a shared library. So we have to do it.
213 (setenv "CC" "gcc -fno-builtin -fPIC")
214 (substitute* "Makefile"
215 (("^(all[^\n]*)" line) (string-append line " libwrap.so\n
216 libwrap.so: $(LIB_OBJ)\n
217 \tgcc -shared $^ -o $@\n")))
218 ;; Deal with some gcc breakage.
219 (substitute* "percent_m.c"
220 (("extern char .sys_errlist.*;") ""))
221 (substitute* "scaffold.c"
222 (("extern char .malloc.*;") ""))
223 ;; This, believe it or not, is the recommended way to build!
224 (invoke "make" "REAL_DAEMON_DIR=/etc" "linux")))
225 ;; There is no make install stage, so we have to do it ourselves.
226 (replace 'install
227 (lambda _
228 (let ((out (assoc-ref %outputs "out"))
229 (man-pages `("hosts_access.3"
230 "hosts_access.5"
231 "hosts_options.5"
232 "tcpd.8"
233 "tcpdchk.8"
234 "tcpdmatch.8"))
235 (libs `("libwrap.a"
236 "libwrap.so"))
237 (headers `("tcpd.h"))
238 (bins `("safe_finger"
239 "tcpd"
240 "tcpdchk"
241 "tcpdmatch"
242 "try-from")))
243 (for-each
244 (lambda (x)
245 (install-file x (string-append out "/include")))
246 headers)
247 (for-each
248 (lambda (x)
249 (install-file x (string-append out "/share/man/man"
250 (string-take-right x 1))))
251 man-pages)
252 (for-each
253 (lambda (x)
254 (install-file x (string-append out "/lib/")))
255 libs)
256 (for-each
257 (lambda (x)
258 (install-file x (string-append out "/bin/")))
259 bins))
260 #t)))))
261 (home-page "http://www.porcupine.org")
262 (synopsis "Monitor and filter incoming requests for network services")
263 (description "With this package you can monitor and filter incoming requests for
264 network services. It includes a library which may be used by daemons to
265 transparently check connection attempts against an access control list.")
266 (license (license:non-copyleft "file://DISCLAIMER"
267 "See the file DISCLAIMER in the distribution."))))
268
269
270 (define-public zeromq
271 (package
272 (name "zeromq")
273 (version "4.0.7")
274 (source (origin
275 (method url-fetch)
276 (uri (string-append "http://download.zeromq.org/zeromq-"
277 version ".tar.gz"))
278 (sha256
279 (base32
280 "00vvwhgcdr1lva2pavicvy92iad0hj8cf71n702hv6blw1kjj2z0"))))
281 (build-system gnu-build-system)
282 (home-page "http://zeromq.org")
283 (synopsis "Library for message-based applications")
284 (description
285 "The 0MQ lightweight messaging kernel is a library which extends the
286 standard socket interfaces with features traditionally provided by specialized
287 messaging middle-ware products. 0MQ sockets provide an abstraction of
288 asynchronous message queues, multiple messaging patterns, message
289 filtering (subscriptions), seamless access to multiple transport protocols and
290 more.")
291 (license license:lgpl3+)))
292
293 (define-public czmq
294 (package
295 (name "czmq")
296 (version "4.1.1")
297 (source (origin
298 (method url-fetch)
299 (uri (string-append
300 "https://github.com/zeromq/" name
301 "/releases/download/v" version
302 "/" name "-" version ".tar.gz"))
303 (sha256
304 (base32
305 "1h5hrcsc30fcwb032vy5gxkq4j4vv1y4dj460rfs1hhxi0cz83zh"))))
306 (build-system gnu-build-system)
307 (arguments
308 '(;; TODO Tests fail for some reason:
309 ;; * zauth: OK
310 ;; * zbeacon: OK (skipping test, no UDP broadcasting)
311 ;; E: (czmq_selftest) 18-02-24 16:25:52 No broadcast interface found, (ZSYS_INTERFACE=lo)
312 ;; make[2]: *** [Makefile:2245: check-local] Segmentation fault
313 ;; make[2]: Leaving directory '/tmp/guix-build-czmq-4.1.0.drv-0/czmq-4.1.0'
314 ;; make[1]: *** [Makefile:2032: check-am] Error 2
315 ;; make[1]: Leaving directory '/tmp/guix-build-czmq-4.1.0.drv-0/czmq-4.1.0'
316 ;; make: *** [Makefile:1588: check-recursive] Error 1
317 ;; phase `check' failed after 19.4 seconds
318 #:tests? #f
319 #:configure-flags '("--enable-drafts")))
320 (inputs
321 `(("zeromq" ,zeromq)))
322 (home-page "http://zeromq.org")
323 (synopsis "High-level C bindings for ØMQ")
324 (description
325 "czmq provides bindings for the ØMQ core API that hides the differences
326 between different versions of ØMQ.")
327 (license license:mpl2.0)))
328
329 (define-public cppzmq
330 (let ((revision "0")
331 (commit "d9f0f016c07046742738c65e1eb84722ae32d7d4"))
332 (package
333 (name "cppzmq")
334 (version (string-append "4.2.2-" revision "."
335 (string-take commit 7)))
336 (source (origin
337 (method git-fetch)
338 (uri (git-reference
339 (url "https://github.com/zeromq/cppzmq")
340 (commit commit)))
341 (sha256
342 (base32
343 "1gmqlm00y6xpa5m6d4ajq3ww63n2w7h4sy997wj81vcqmqx45b1f"))
344 (file-name (string-append name "-" version "-checkout"))))
345 (build-system cmake-build-system)
346 (arguments '(#:tests? #f)) ; No tests.
347 (native-inputs
348 `(("pkg-config" ,pkg-config)))
349 (inputs
350 `(("zeromq" ,zeromq)))
351 (home-page "http://zeromq.org")
352 (synopsis "C++ bindings for the ØMQ messaging library")
353 (description
354 "This package provides header-only C++ bindings for ØMQ. The header
355 files contain direct mappings of the abstractions provided by the ØMQ C API.")
356 (license license:expat))))
357
358 (define-public librdkafka
359 (package
360 (name "librdkafka")
361 (version "0.9.1")
362 (source (origin
363 (method url-fetch)
364 (uri (string-append
365 "https://github.com/edenhill/librdkafka/archive/"
366 version ".tar.gz"))
367 (file-name (string-append name "-" version ".tar.gz"))
368 (sha256
369 (base32
370 "10ldx7g7ymmg17snzx78vy4n8ma1rjx0agzi34g15j2fk867xmas"))))
371 (build-system gnu-build-system)
372 (arguments
373 '(#:phases
374 (modify-phases %standard-phases
375 (replace 'configure
376 ;; its custom configure script doesn't understand 'CONFIG_SHELL'.
377 (lambda* (#:key outputs #:allow-other-keys)
378 (let ((out (assoc-ref outputs "out")))
379 ;; librdkafka++.so lacks RUNPATH for librdkafka.so
380 (setenv "LDFLAGS"
381 (string-append "-Wl,-rpath=" out "/lib"))
382 (invoke "./configure"
383 (string-append "--prefix=" out))))))))
384 (native-inputs
385 `(("python" ,python-wrapper)))
386 (propagated-inputs
387 `(("zlib" ,zlib))) ; in the Libs.private field of rdkafka.pc
388 (home-page "https://github.com/edenhill/librdkafka")
389 (synopsis "Apache Kafka C/C++ client library")
390 (description
391 "librdkafka is a C library implementation of the Apache Kafka protocol,
392 containing both Producer and Consumer support.")
393 (license license:bsd-2)))
394
395 (define-public libndp
396 (package
397 (name "libndp")
398 (version "1.7")
399 (source (origin
400 (method url-fetch)
401 (uri (string-append "http://libndp.org/files/"
402 name "-" version ".tar.gz"))
403 (sha256
404 (base32
405 "1dlinhl39va00v55qygjc9ap77yqf7xvn4rwmvdr49xhzzxhlj1c"))))
406 (build-system gnu-build-system)
407 (home-page "http://libndp.org/")
408 (synopsis "Library for Neighbor Discovery Protocol")
409 (description
410 "libndp contains a library which provides a wrapper for IPv6 Neighbor
411 Discovery Protocol. It also provides a tool named ndptool for sending and
412 receiving NDP messages.")
413 (license license:lgpl2.1+)))
414
415 (define-public ethtool
416 (package
417 (name "ethtool")
418 (version "4.17")
419 (source (origin
420 (method url-fetch)
421 (uri (string-append "mirror://kernel.org/software/network/"
422 name "/" name "-" version ".tar.xz"))
423 (sha256
424 (base32
425 "11f5503mgcwjn1q4dvhjiqwnw3zmp2gbhirjvgfr71y72ys1wsy4"))))
426 (build-system gnu-build-system)
427 (home-page "https://www.kernel.org/pub/software/network/ethtool/")
428 (synopsis "Display or change Ethernet device settings")
429 (description
430 "ethtool can be used to query and change settings such as speed,
431 auto-negotiation and checksum offload on many network devices, especially
432 Ethernet devices.")
433 (license license:gpl2)))
434
435 (define-public ifstatus
436 (package
437 (name "ifstatus")
438 (version "1.1.0")
439 (source (origin
440 (method url-fetch)
441 (uri (string-append "mirror://sourceforge/ifstatus/ifstatus/"
442 "ifstatus%20v" version "/ifstatus-v"
443 version ".tar.gz"))
444 (sha256
445 (base32
446 "045cbsq9ps32j24v8y5hpyqxnqn9mpaf3mgvirlhgpqyb9jsia0c"))
447 (modules '((guix build utils)))
448 (snippet
449 '(begin
450 (substitute* "Main.h"
451 (("#include <stdio.h>")
452 "#include <stdio.h>\n#include <stdlib.h>"))
453 #t))))
454 (build-system gnu-build-system)
455 (arguments
456 '(#:tests? #f ; no "check" target
457 #:phases
458 (modify-phases %standard-phases
459 (delete 'configure) ; no configure script
460 (replace 'install
461 (lambda* (#:key outputs #:allow-other-keys)
462 (let* ((out (assoc-ref outputs "out"))
463 (bin (string-append out "/bin")))
464 (mkdir-p bin)
465 (copy-file "ifstatus"
466 (string-append bin "/ifstatus")))
467 #t)))))
468 (inputs `(("ncurses" ,ncurses)))
469 (home-page "http://ifstatus.sourceforge.net/graphic/index.html")
470 (synopsis "Text based network interface status monitor")
471 (description
472 "IFStatus is a simple, easy-to-use program for displaying commonly
473 needed/wanted real-time traffic statistics of multiple network
474 interfaces, with a simple and efficient view on the command line. It is
475 intended as a substitute for the PPPStatus and EthStatus projects.")
476 (license license:gpl2+)))
477
478 (define-public nload
479 (package
480 (name "nload")
481 (version "0.7.4")
482 (source (origin
483 (method url-fetch)
484 (uri (string-append "mirror://sourceforge/nload/nload/" version
485 "/nload-" version ".tar.gz"))
486 (sha256
487 (base32
488 "1rb9skch2kgqzigf19x8bzk211jdfjfdkrcvaqyj89jy2pkm3h61"))))
489 (build-system gnu-build-system)
490 (inputs `(("ncurses" ,ncurses)))
491 (home-page "http://www.roland-riegel.de/nload/")
492 (synopsis "Realtime console network usage monitor")
493 (description
494 "Nload is a console application which monitors network traffic and
495 bandwidth usage in real time. It visualizes the in- and outgoing traffic using
496 two graphs, and provides additional info like total amount of transferred data
497 and min/max network usage.")
498 (license license:gpl2+)))
499
500 (define-public iodine
501 (package
502 (name "iodine")
503 (version "0.7.0")
504 (source (origin
505 (method url-fetch)
506 (uri (string-append "http://code.kryo.se/" name "/"
507 name "-" version ".tar.gz"))
508 (sha256
509 (base32
510 "0gh17kcxxi37k65zm4gqsvbk3aw7yphcs3c02pn1c4s2y6n40axd"))))
511 (build-system gnu-build-system)
512 (arguments
513 '(#:phases
514 (modify-phases %standard-phases
515 (delete 'configure)
516 (add-before 'build 'fix-ifconfig-path
517 ;; This package works only with the net-tools version of ifconfig.
518 (lambda* (#:key inputs #:allow-other-keys)
519 (substitute* "src/tun.c"
520 (("PATH=[^ ]* ")
521 (string-append (assoc-ref inputs "net-tools") "/bin/")))
522 #t))
523 (add-before 'check 'delete-failing-tests
524 ;; Avoid https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=802105.
525 (lambda _
526 (substitute* "tests/common.c"
527 (("tcase_add_test\\(tc, \
528 test_parse_format_ipv(4(|_listen_all|_mapped_ipv6)|6)\\);")
529 ""))
530 #t)))
531 #:make-flags (list "CC=gcc"
532 (string-append "prefix=" (assoc-ref %outputs "out")))
533 #:test-target "test"))
534 (inputs `(("net-tools" ,net-tools)
535 ("zlib" ,zlib)))
536 (native-inputs `(("check" ,check)
537 ("pkg-config" ,pkg-config)))
538 (home-page "http://code.kryo.se/iodine/")
539 (synopsis "Tunnel IPv4 data through a DNS server")
540 (description "Iodine tunnels IPv4 data through a DNS server. This
541 can be useful in different situations where internet access is firewalled, but
542 DNS queries are allowed. The bandwidth is asymmetrical, with limited upstream
543 and up to 1 Mbit/s downstream.")
544 ;; src/md5.[ch] is released under the zlib license
545 (license (list license:isc license:zlib))))
546
547 (define-public whois
548 (package
549 (name "whois")
550 (version "5.4.1")
551 (source
552 (origin
553 (method url-fetch)
554 (uri (string-append "mirror://debian/pool/main/w/whois/"
555 name "_" version ".tar.xz"))
556 (sha256
557 (base32
558 "0l7chmlvsl22r5cfm6fpm999z2n3sjrnx3ha8f8kf42cn4gmkriy"))))
559 (build-system gnu-build-system)
560 (arguments
561 `(#:tests? #f ; no test suite
562 #:make-flags (list "CC=gcc"
563 (string-append "prefix=" (assoc-ref %outputs "out")))
564 #:phases
565 (modify-phases %standard-phases
566 (delete 'configure) ; no configure script
567 (add-before 'build 'setenv
568 (lambda _
569 (setenv "HAVE_ICONV" "1")
570 #t)))))
571 (inputs
572 `(("libidn2" ,libidn2)))
573 (native-inputs
574 `(("gettext" ,gettext-minimal)
575 ("perl" ,perl)
576 ("pkg-config" ,pkg-config)))
577 (synopsis "Intelligent client for the WHOIS directory service")
578 (description
579 "whois searches for an object in a @dfn{WHOIS} (RFC 3912) database.
580 It is commonly used to look up the registered users or assignees of an Internet
581 resource, such as a domain name, an IP address block, or an autonomous system.
582 It can automatically select the appropriate server for most queries.
583
584 For historical reasons, this package also includes @command{mkpasswd}, which
585 encrypts passwords using @code{crypt(3)} and is unrelated to the Expect command
586 of the same name.")
587 (home-page "https://github.com/rfc1036/whois")
588 (license license:gpl2+)))
589
590 (define-public wireshark
591 (package
592 (name "wireshark")
593 (version "2.6.6")
594 (source
595 (origin
596 (method url-fetch)
597 (uri (string-append "https://www.wireshark.org/download/src/wireshark-"
598 version ".tar.xz"))
599 (sha256
600 (base32
601 "0qz8a1ays63712pq1v7nnw7c57zlqkcifq7himfv5nsv0zm36ya8"))))
602 (build-system gnu-build-system)
603 (inputs `(("c-ares" ,c-ares)
604 ("glib" ,glib)
605 ("gnutls" ,gnutls)
606 ("libcap" ,libcap)
607 ("libgcrypt" ,libgcrypt)
608 ("libnl" ,libnl)
609 ("libpcap" ,libpcap)
610 ("libssh" ,libssh)
611 ("libxml2" ,libxml2)
612 ("lz4" ,lz4)
613 ("lua" ,lua-5.2) ;Lua 5.3 unsupported
614 ("krb5" ,mit-krb5)
615 ("portaudio" ,portaudio)
616 ("qtbase" ,qtbase)
617 ("qtmultimedia" ,qtmultimedia)
618 ("sbc" ,sbc)
619 ("snappy" ,snappy)
620 ("zlib" ,zlib)))
621 (native-inputs `(("perl" ,perl)
622 ("pkg-config" ,pkg-config)
623 ("python" ,python-wrapper)
624 ("qttools" ,qttools)))
625 (arguments
626 `(#:configure-flags
627 (list (string-append "--with-c-ares=" (assoc-ref %build-inputs "c-ares"))
628 (string-append "--with-krb5=" (assoc-ref %build-inputs "krb5"))
629 (string-append "--with-libcap=" (assoc-ref %build-inputs "libcap"))
630 (string-append "--with-libssh=" (assoc-ref %build-inputs "libssh"))
631 (string-append "--with-lua=" (assoc-ref %build-inputs "lua"))
632 (string-append "--with-lz4=" (assoc-ref %build-inputs "lz4"))
633 (string-append "--with-pcap=" (assoc-ref %build-inputs "libpcap"))
634 (string-append "--with-portaudio="
635 (assoc-ref %build-inputs "portaudio"))
636 (string-append "--with-sbc=" (assoc-ref %build-inputs "sbc"))
637 (string-append "--with-snappy=" (assoc-ref %build-inputs "snappy"))
638 (string-append "--with-zlib=" (assoc-ref %build-inputs "zlib")))
639 #:phases
640 (modify-phases %standard-phases
641 (add-after 'unpack 'patch-source
642 (lambda _
643 ;; Fix build against Qt 5.11.
644 (substitute* "ui/qt/packet_format_group_box.cpp"
645 (("#include <QStyle>") "#include <QStyle>
646 #include <QStyleOption>"))
647 (substitute* "ui/qt/time_shift_dialog.cpp"
648 (("#include <ui/time_shift.h>") "#include <ui/time_shift.h>
649 #include <QStyleOption>"))
650 (substitute* "ui/qt/wireless_frame.cpp"
651 (("#include <QProcess>") "#include <QProcess>
652 #include <QAbstractItemView>"))
653 #t)))))
654 (synopsis "Network traffic analyzer")
655 (description "Wireshark is a network protocol analyzer, or @dfn{packet
656 sniffer}, that lets you capture and interactively browse the contents of
657 network frames.")
658 (home-page "https://www.wireshark.org/")
659 (license license:gpl2+)))
660
661 (define-public fping
662 (package
663 (name "fping")
664 (version "4.1")
665 (source
666 (origin
667 (method url-fetch)
668 (uri (string-append "https://fping.org/dist/fping-"
669 version ".tar.gz"))
670 (sha256
671 (base32
672 "0wxbvm480vij8dy4v1pi8f0c7010rx6bidg3qhsvkdf2ijhy4cr7"))))
673 (build-system gnu-build-system)
674 (home-page "https://fping.org/")
675 (synopsis "Send ICMP ECHO_REQUEST packets to network hosts")
676 (description
677 "fping is a ping like program which uses the Internet Control Message
678 Protocol (ICMP) echo request to determine if a target host is responding.
679 fping differs from ping in that you can specify any number of targets on the
680 command line, or specify a file containing the lists of targets to ping.
681 Instead of sending to one target until it times out or replies, fping will
682 send out a ping packet and move on to the next target in a round-robin
683 fashion.")
684 (license license:expat)))
685
686 (define-public gandi.cli
687 (package
688 (name "gandi.cli")
689 (version "1.3")
690 (source
691 (origin
692 (method url-fetch)
693 (uri (pypi-uri name version))
694 (sha256
695 (base32 "0vfzkw1avybjkf6fwqpf5m4kjz4c0qkkmj62f3jd0zx00vh5ly1d"))))
696 (build-system python-build-system)
697 (arguments
698 `(#:phases
699 (modify-phases %standard-phases
700 (add-after 'unpack 'embed-store-file-names
701 (lambda _
702 (substitute* (list "gandi/cli/modules/cert.py"
703 "gandi/cli/tests/commands/test_certificate.py")
704 (("openssl") (which "openssl")))
705 #t))
706 (add-after 'install 'install-documentation
707 ;; The included man page may be outdated but we install it anyway,
708 ;; since it's mentioned in 'gandi --help' and better than nothing.
709 (lambda* (#:key outputs #:allow-other-keys)
710 (let* ((out (assoc-ref outputs "out"))
711 (man1 (string-append out "/share/man/man1")))
712 (mkdir-p man1)
713 (with-output-to-file (string-append man1 "/gandi.1")
714 (lambda _
715 (invoke "rst2man.py" "gandicli.man.rst")))
716 #t))))))
717 (native-inputs
718 `(("python-docutils" ,python-docutils) ; for rst2man.py
719 ("python-pytest-cov" ,python-pytest-cov)
720 ("python-tox" ,python-tox)))
721 (inputs
722 `(("openssl" ,openssl)
723 ("python-click" ,python-click)
724 ("python-ipy" ,python-ipy)
725 ("python-pyyaml" ,python-pyyaml)
726 ("python-requests" ,python-requests)))
727 (home-page "https://cli.gandi.net")
728 (synopsis "Command-line interface to the Gandi.net Web API")
729 (description
730 "This package provides a command-line client (@command{gandi}) to buy,
731 manage, and delete Internet resources from Gandi.net such as domain names,
732 virtual machines, and certificates.")
733 (license license:gpl3+)))
734
735 (define-public httping
736 (package
737 (name "httping")
738 (version "2.5")
739 (source
740 (origin
741 (method url-fetch)
742 (uri (string-append "https://www.vanheusden.com/httping/httping-"
743 version ".tgz"))
744 (sha256
745 (base32
746 "1y7sbgkhgadmd93x1zafqc4yp26ssiv16ni5bbi9vmvvdl55m29y"))))
747 (build-system gnu-build-system)
748 (native-inputs
749 `(("gettext" ,gettext-minimal)))
750 (inputs
751 `(("fftw" ,fftw)
752 ("ncurses" ,ncurses)
753 ("openssl" ,openssl)))
754 (arguments
755 `(#:make-flags (list "CC=gcc"
756 (string-append "DESTDIR=" (assoc-ref %outputs "out"))
757 "PREFIX=")
758 #:tests? #f)) ; no tests
759 (home-page "https://www.vanheusden.com/httping/")
760 (synopsis "Web server latency and throughput monitor")
761 (description
762 "httping measures how long it takes to connect to a web server, send an
763 HTTP(S) request, and receive the reply headers. It is somewhat similar to
764 @command{ping}, but can be used even in cases where ICMP traffic is blocked
765 by firewalls or when you want to monitor the response time of the actual web
766 application stack itself.")
767 (license license:gpl2))) ; with permission to link with OpenSSL
768
769 (define-public httpstat
770 (package
771 (name "httpstat")
772 (version "1.2.1")
773 (source
774 (origin
775 (method url-fetch)
776 (uri (pypi-uri "httpstat" version))
777 (sha256
778 (base32
779 "1chw2nk56vaq87aba012a270k9na06hfx1pfbsrc3jfvlc2kb9hb"))))
780 (build-system python-build-system)
781 (inputs `(("curl" ,curl)))
782 (arguments
783 '(#:phases
784 (modify-phases %standard-phases
785 (add-before 'build 'fix-curl-path
786 (lambda* (#:key inputs #:allow-other-keys)
787 (substitute* "httpstat.py"
788 (("ENV_CURL_BIN.get\\('curl'\\)")
789 (string-append "ENV_CURL_BIN.get('"
790 (assoc-ref inputs "curl")
791 "/bin/curl')")))
792 #t)))))
793 (home-page "https://github.com/reorx/httpstat")
794 (synopsis "Visualize curl statistics")
795 (description
796 "@command{httpstat} is a tool to visualize statistics from the
797 @command{curl} HTTP client. It acts as a wrapper for @command{curl} and
798 prints timing information for each step of the HTTP request (DNS lookup,
799 TCP connection, TLS handshake and so on) in the terminal.")
800 (license license:expat)))
801
802 (define-public bwm-ng
803 (package
804 (name "bwm-ng")
805 (version "0.6.1")
806 (source
807 (origin
808 (method url-fetch)
809 (uri (string-append "https://www.gropp.org/bwm-ng/bwm-ng-"
810 version ".tar.gz"))
811 (sha256
812 (base32
813 "1w0dwpjjm9pqi613i8glxrgca3rdyqyp3xydzagzr5ndc34z6z02"))))
814 (build-system gnu-build-system)
815 (inputs `(("ncurses" ,ncurses)))
816 (synopsis "Console based live network and disk I/O bandwidth monitor")
817 (description "Bandwidth Monitor NG is a small and simple console based
818 live network and disk I/O bandwidth monitor.")
819 (home-page "https://www.gropp.org/?id=projects&sub=bwm-ng")
820 (license license:gpl2)))
821
822 (define-public aircrack-ng
823 (package
824 (name "aircrack-ng")
825 (version "1.3")
826 (source
827 (origin
828 (method url-fetch)
829 (uri (string-append "https://download.aircrack-ng.org/aircrack-ng-"
830 version ".tar.gz"))
831 (sha256
832 (base32
833 "1jl30d0kibc82447fr3lgw75arik0l9729k94z76l7vl51y8mq4a"))))
834 (build-system gnu-build-system)
835 (native-inputs
836 `(("autoconf" ,autoconf)
837 ("automake" ,automake)
838 ("libtool" ,libtool)
839 ("pkg-config" ,pkg-config)
840 ("which" ,which)))
841 (inputs
842 `(("libgcrypt" ,libgcrypt)
843 ("libnl" ,libnl)
844 ("libpcap" ,libpcap)
845 ("ethtool" ,ethtool)
846 ("pcre" ,pcre)
847 ("sqlite" ,sqlite)
848 ("zlib" ,zlib)))
849 (arguments
850 `(#:configure-flags
851 (list "--with-experimental=yes" ; build wesside-ng, etc.
852 "--with-gcrypt") ; openssl's the default
853 #:phases (modify-phases %standard-phases
854 (add-before 'bootstrap 'patch-evalrev
855 (lambda _
856 ;; Called by ./autogen.sh below, before the default
857 ;; ‘patch-shebangs’ phase has had a chance to run.
858 (substitute* "evalrev"
859 (("/bin/sh")
860 (which "sh")))
861 #t))
862 (replace 'bootstrap
863 (lambda _
864 ;; Patch shebangs in generated files before running
865 ;; ./configure.
866 (setenv "NOCONFIGURE" "please")
867 (invoke "bash" "./autogen.sh")))
868 (add-after 'build 'absolutize-tools
869 (lambda* (#:key inputs #:allow-other-keys)
870 (let ((ethtool (string-append (assoc-ref inputs "ethtool")
871 "/sbin/ethtool")))
872 (substitute* "scripts/airmon-ng"
873 (("ethtool ")
874 (string-append ethtool " ")))
875 #t))))))
876 (home-page "https://www.aircrack-ng.org")
877 (synopsis "Assess WiFi network security")
878 (description
879 "Aircrack-ng is a complete suite of tools to assess WiFi network
880 security. It focuses on different areas of WiFi security: monitoring,
881 attacking, testing, and cracking. All tools are command-line driven, which
882 allows for heavy scripting.")
883 (license (list license:gpl2+ license:bsd-3))))
884
885 (define-public perl-data-validate-ip
886 (package
887 (name "perl-data-validate-ip")
888 (version "0.27")
889 (source
890 (origin
891 (method url-fetch)
892 (uri (string-append
893 "mirror://cpan/authors/id/D/DR/DROLSKY/Data-Validate-IP-"
894 version ".tar.gz"))
895 (sha256
896 (base32 "1mmppyzsh1w2z2h86kvzqxy56wxgs62a3kf8nvcnz76bblir5ap1"))))
897 (build-system perl-build-system)
898 (native-inputs
899 `(("perl-test-requires" ,perl-test-requires)))
900 (propagated-inputs
901 `(("perl-netaddr-ip" ,perl-netaddr-ip)))
902 (home-page "https://metacpan.org/release/Data-Validate-IP")
903 (synopsis "IPv4 and IPv6 validation methods")
904 (description
905 "This module provides several IP address validation subroutines that both
906 validate and untaint their input. This includes both basic validation
907 (@code{is_ipv4()} and @code{is_ipv6()}) and special cases like checking whether
908 an address belongs to a specific network or whether an address is public or
909 private (reserved).")
910 (license license:perl-license)))
911
912 (define-public perl-net-dns
913 (package
914 (name "perl-net-dns")
915 (version "1.18")
916 (source
917 (origin
918 (method url-fetch)
919 (uri
920 (list
921 (string-append "https://www.net-dns.org/download/Net-DNS-"
922 version ".tar.gz")
923 (string-append "mirror://cpan/authors/id/N/NL/NLNETLABS/Net-DNS-"
924 version ".tar.gz")))
925 (sha256
926 (base32
927 "1lx902cbvlfl63bqfdrnyavmfwbjvrfdnwgdc1dgs1wpzja19kjj"))))
928 (build-system perl-build-system)
929 (inputs
930 `(("perl-digest-hmac" ,perl-digest-hmac)))
931 (home-page "https://www.net-dns.org/")
932 (synopsis
933 "Perl Interface to the Domain Name System")
934 (description "Net::DNS is the Perl Interface to the Domain Name System.")
935 (license license:x11)))
936
937 (define-public perl-socket6
938 (package
939 (name "perl-socket6")
940 (version "0.29")
941 (source
942 (origin
943 (method url-fetch)
944 (uri (string-append
945 "mirror://cpan/authors/id/U/UM/UMEMOTO/Socket6-"
946 version
947 ".tar.gz"))
948 (sha256
949 (base32
950 "054izici8klfxs8hr5rljib28plijpsfymy99xbzdp047bx1b2a6"))))
951 (build-system perl-build-system)
952 (arguments
953 `(#:phases
954 (modify-phases %standard-phases
955 (replace 'configure
956 (lambda* (#:key outputs #:allow-other-keys)
957 (let* ((out (assoc-ref outputs "out"))
958 (args `("Makefile.PL"
959 ,(string-append "PREFIX=" out)
960 "INSTALLDIRS=site")))
961 (setenv "CONFIG_SHELL" (which "sh"))
962 (apply invoke "perl" args)))))))
963 (home-page "https://metacpan.org/release/Socket6")
964 (synopsis
965 "IPv6 related part of the C socket.h defines and structure manipulators for Perl")
966 (description "Socket6 binds the IPv6 related part of the C socket header
967 definitions and structure manipulators for Perl.")
968 (license license:bsd-3)))
969
970 (define-public perl-net-dns-resolver-programmable
971 (package
972 (name "perl-net-dns-resolver-programmable")
973 (version "v0.003")
974 (source
975 (origin
976 (method url-fetch)
977 (uri (string-append
978 "mirror://cpan/authors/id/J/JM/JMEHNLE/net-dns-resolver-programmable/"
979 "Net-DNS-Resolver-Programmable-" version ".tar.gz"))
980 (sha256
981 (base32
982 "1v3nl2kaj4fs55n1617n53q8sa3mir06898vpy1rq98zjih24h4d"))
983 (patches
984 (search-patches "perl-net-dns-resolver-programmable-fix.patch"))))
985 (build-system perl-build-system)
986 (native-inputs
987 `(("perl-module-build" ,perl-module-build)))
988 (inputs `(("perl-net-dns" ,perl-net-dns)))
989 (home-page
990 "https://metacpan.org/release/Net-DNS-Resolver-Programmable")
991 (synopsis
992 "Programmable DNS resolver class for offline emulation of DNS")
993 (description "Net::DNS::Resolver::Programmable is a programmable DNS resolver for
994 offline emulation of DNS.")
995 (license license:perl-license)))
996
997 (define-public perl-netaddr-ip
998 (package
999 (name "perl-netaddr-ip")
1000 (version "4.079")
1001 (source
1002 (origin
1003 (method url-fetch)
1004 (uri (string-append
1005 "mirror://cpan/authors/id/M/MI/MIKER/NetAddr-IP-"
1006 version
1007 ".tar.gz"))
1008 (sha256
1009 (base32
1010 "1rx0dinrz9fk9qcg4rwqq5n1dm3xv2arymixpclcv2q2nzgq4npc"))))
1011 (build-system perl-build-system)
1012 (arguments
1013 `(#:phases
1014 (modify-phases %standard-phases
1015 (replace 'configure
1016 (lambda* (#:key outputs #:allow-other-keys)
1017 (let* ((out (assoc-ref outputs "out"))
1018 (args `("Makefile.PL"
1019 ,(string-append "PREFIX=" out)
1020 "INSTALLDIRS=site")))
1021 (setenv "CONFIG_SHELL" (which "sh"))
1022 (apply invoke "perl" args)))))))
1023 (home-page
1024 "https://metacpan.org/release/NetAddr-IP")
1025 (synopsis
1026 "Manages IPv4 and IPv6 addresses and subnets")
1027 (description "NetAddr::IP manages IPv4 and IPv6 addresses and subsets.")
1028 (license license:perl-license)))
1029
1030 (define-public perl-net-patricia
1031 (package
1032 (name "perl-net-patricia")
1033 (version "1.22")
1034 (source
1035 (origin
1036 (method url-fetch)
1037 (uri (string-append
1038 "mirror://cpan/authors/id/G/GR/GRUBER/Net-Patricia-"
1039 version
1040 ".tar.gz"))
1041 (sha256
1042 (base32
1043 "0ln5f57vc8388kyh9vhx2infrdzfhbpgyby74h1qsnhwds95m0vh"))))
1044 (build-system perl-build-system)
1045 (inputs
1046 `(("perl-net-cidr-lite" ,perl-net-cidr-lite)
1047 ("perl-socket6" ,perl-socket6)))
1048 (home-page
1049 "https://metacpan.org/release/Net-Patricia")
1050 (synopsis
1051 "Patricia Trie Perl module for fast IP address lookups")
1052 (description
1053 "Net::Patricia does IP address lookups quickly in Perl.")
1054 ;; The bindings are licensed under GPL2 or later.
1055 ;; libpatricia is licensed under 2-clause BSD.
1056 (license (list license:gpl2+ license:bsd-2))))
1057
1058 (define-public perl-net-cidr-lite
1059 (package
1060 (name "perl-net-cidr-lite")
1061 (version "0.21")
1062 (source
1063 (origin
1064 (method url-fetch)
1065 (uri (string-append
1066 "mirror://cpan/authors/id/D/DO/DOUGW/Net-CIDR-Lite-"
1067 version
1068 ".tar.gz"))
1069 (sha256
1070 (base32
1071 "14shj73zbqmfjbp0qz1fs9j4p2dpvz5hfkm4qfdjbydflbl2b8fg"))))
1072 (build-system perl-build-system)
1073 (home-page
1074 "https://metacpan.org/release/Net-CIDR-Lite")
1075 (synopsis
1076 "Perl extension for merging IPv4 or IPv6 CIDR addresses")
1077 (description "Net::CIDR::Lite merges IPv4 or IPv6 CIDR addresses.")
1078 (license license:gpl1+)))
1079
1080 ;; TODO: Use the geolite-mirror-simple.pl script from the example
1081 ;; directory to stay current with the databases. How?
1082 (define-public perl-geo-ip
1083 (package
1084 (name "perl-geo-ip")
1085 (version "1.51")
1086 (source
1087 (origin
1088 (method url-fetch)
1089 (uri (string-append
1090 "mirror://cpan/authors/id/M/MA/MAXMIND/Geo-IP-"
1091 version
1092 ".tar.gz"))
1093 (sha256
1094 (base32
1095 "1fka8fr7fw6sh3xa9glhs1zjg3s2gfkhi7n7da1l2m2wblqj0c0n"))))
1096 (build-system perl-build-system)
1097 (home-page "https://metacpan.org/release/Geo-IP")
1098 (synopsis
1099 "Look up location and network information by IP Address in Perl")
1100 (description "The Perl module 'Geo::IP'. It looks up location and network
1101 information by IP Address.")
1102 (license license:perl-license)))
1103
1104 (define-public perl-io-socket-inet6
1105 (package
1106 (name "perl-io-socket-inet6")
1107 (version "2.72")
1108 (source
1109 (origin
1110 (method url-fetch)
1111 (uri (string-append
1112 "mirror://cpan/authors/id/S/SH/SHLOMIF/IO-Socket-INET6-"
1113 version
1114 ".tar.gz"))
1115 (sha256
1116 (base32
1117 "1fqypz6qa5rw2d5y2zq7f49frwra0aln13nhq5gi514j2zx21q45"))))
1118 (build-system perl-build-system)
1119 (native-inputs
1120 `(("perl-module-build" ,perl-module-build)
1121 ("perl-test-pod" ,perl-test-pod)
1122 ("perl-test-pod-coverage" ,perl-test-pod-coverage)))
1123 (inputs `(("perl-socket6" ,perl-socket6)))
1124 (arguments `(;; Need network socket API
1125 #:tests? #f))
1126 (home-page
1127 "https://metacpan.org/release/IO-Socket-INET6")
1128 (synopsis
1129 "Perl object interface for AF_INET/AF_INET6 domain sockets")
1130 (description "IO::Socket::INET6 is an interface for AF_INET/AF_INET6 domain
1131 sockets in Perl.")
1132 (license license:perl-license)))
1133
1134 (define-public libproxy
1135 (package
1136 (name "libproxy")
1137 (version "0.4.15")
1138 (source (origin
1139 (method url-fetch)
1140 (uri (string-append "https://github.com/libproxy/libproxy/"
1141 "releases/download/" version "/libproxy-"
1142 version ".tar.xz"))
1143 (sha256
1144 (base32
1145 "0kvdrazlzwia876w988cmlypp253gwy6idlh8mjk958c29jb8kb5"))))
1146 (build-system cmake-build-system)
1147 (native-inputs
1148 `(("pkg-config" ,pkg-config)))
1149 (inputs
1150 `(("dbus" ,dbus)
1151 ("zlib" ,zlib)
1152 ("network-manager" ,network-manager)))
1153 (arguments
1154 `(#:phases
1155 (modify-phases %standard-phases
1156 (replace 'check
1157 (lambda _
1158 (invoke "ctest" "-E" "url-test"))))))
1159 (synopsis "Library providing automatic proxy configuration management")
1160 (description "Libproxy handles the details of HTTP/HTTPS proxy
1161 configuration for applications across all scenarios. Applications using
1162 libproxy only have to specify which proxy to use.")
1163 (home-page "https://libproxy.github.io/libproxy")
1164 (license license:lgpl2.1+)))
1165
1166 (define-public proxychains-ng
1167 (package
1168 (name "proxychains-ng")
1169 (version "4.13")
1170 (source
1171 (origin
1172 (method url-fetch)
1173 (uri (string-append "http://ftp.barfooze.de/pub/sabotage/tarballs/"
1174 name "-" version ".tar.xz"))
1175 (sha256
1176 (base32
1177 "0418fv8hgf43rzrxxlybg49jz2h6w8inndhb6v1184k4cwzjnl3p"))))
1178 (build-system gnu-build-system)
1179 (arguments
1180 `(#:tests? #f ; there are no tests
1181 #:phases
1182 (modify-phases %standard-phases
1183 (add-after 'unpack 'fix-configure-script
1184 (lambda _
1185 ;; The configure script is very intolerant to unknown arguments,
1186 ;; such as "CONFIG_SHELL".
1187 (substitute* "configure"
1188 (("\\*\\) break ;;" line)
1189 (string-append "[A-Z]*) shift ;;\n"
1190 line)))
1191 #t))
1192 (add-before 'configure 'set-up-environment
1193 (lambda _
1194 (setenv "CC" "gcc")
1195 #t)))))
1196 (synopsis "Redirect any TCP connection through a proxy or proxy chain")
1197 (description "Proxychains-ng is a preloader which hooks calls to sockets
1198 in dynamically linked programs and redirects them through one or more SOCKS or
1199 HTTP proxies.")
1200 (home-page "https://github.com/rofl0r/proxychains-ng")
1201 (license license:gpl2+)))
1202
1203 (define-public enet
1204 (package
1205 (name "enet")
1206 (version "1.3.13")
1207 (source (origin
1208 (method url-fetch)
1209 (uri (string-append "http://enet.bespin.org/download/"
1210 name "-" version ".tar.gz"))
1211 (sha256
1212 (base32
1213 "0p53mnmjbm56wizwraznynx13fcibcxiqny110dp6a5a3w174q73"))))
1214 (build-system gnu-build-system)
1215 (native-inputs
1216 `(("pkg-config" ,pkg-config)))
1217 (synopsis
1218 "Network communication layer on top of UDP")
1219 (description
1220 "ENet's purpose is to provide a relatively thin, simple and robust network
1221 communication layer on top of UDP. The primary feature it provides is optional
1222 reliable, in-order delivery of packets. ENet omits certain higher level
1223 networking features such as authentication, server discovery, encryption, or
1224 other similar tasks that are particularly application specific so that the
1225 library remains flexible, portable, and easily embeddable.")
1226 (home-page "http://enet.bespin.org")
1227 (license license:expat)))
1228
1229 (define-public sslh
1230 (package
1231 (name "sslh")
1232 (version "1.19c")
1233 (source (origin
1234 (method url-fetch)
1235 (uri (string-append "https://github.com/yrutschle/sslh/archive/v"
1236 version ".tar.gz"))
1237 (file-name (string-append name "-" version ".tar.gz"))
1238 (sha256
1239 (base32
1240 "0pd8hifa9h0rm7vms3k6ic1k29xigrlv2idc5wgcafmb1v1243di"))))
1241 (build-system gnu-build-system)
1242 (native-inputs
1243 `(;; Test dependencies.
1244 ("lcov" ,lcov)
1245 ("perl" ,perl)
1246 ("perl-io-socket-inet6" ,perl-io-socket-inet6)
1247 ("perl-socket6" ,perl-socket6)
1248 ("psmisc" ,psmisc)
1249 ("valgrind" ,valgrind)))
1250 (inputs
1251 `(("libcap" ,libcap)
1252 ("libconfig" ,libconfig)
1253 ("pcre" ,pcre)
1254 ("tcp-wrappers" ,tcp-wrappers)))
1255 (arguments
1256 '(#:phases
1257 (modify-phases %standard-phases
1258 (delete 'configure) ; no configure script
1259 (add-before 'check 'fix-tests
1260 (lambda _
1261 (substitute* "./t"
1262 (("\"/tmp") "$ENV{\"TMPDIR\"} . \"")
1263 ;; The Guix build environment lacks ‘ip6-localhost’.
1264 (("ip6-localhost") "localhost"))
1265 #t))
1266 ;; Many of these files are mentioned in the man page. Install them.
1267 (add-after 'install 'install-documentation
1268 (lambda* (#:key outputs #:allow-other-keys)
1269 (let* ((out (assoc-ref outputs "out"))
1270 (doc (string-append out "/share/doc/sslh")))
1271 (install-file "README.md" doc)
1272 (for-each
1273 (lambda (file)
1274 (install-file file (string-append doc "/examples")))
1275 (append (find-files "." "\\.cfg")
1276 (find-files "scripts"))))
1277 #t)))
1278 #:make-flags (list "CC=gcc"
1279 "USELIBCAP=1"
1280 "USELIBWRAP=1"
1281 (string-append "PREFIX=" (assoc-ref %outputs "out")))
1282 #:test-target "test"))
1283 (home-page "https://www.rutschle.net/tech/sslh/README.html")
1284 (synopsis "Applicative network protocol demultiplexer")
1285 (description
1286 "sslh is a network protocol demultiplexer. It acts like a switchboard,
1287 accepting connections from clients on one port and forwarding them to different
1288 servers based on the contents of the first received data packet. Detection of
1289 common protocols like HTTP(S), SSL, SSH, OpenVPN, tinc, and XMPP is already
1290 implemented, but any other protocol that matches a regular expression can be
1291 added. sslh's name comes from its original application of serving both SSH and
1292 HTTPS on port 443, allowing SSH connections from inside corporate firewalls
1293 that block port 22.")
1294 (license (list license:bsd-2 ; tls.[ch]
1295 license:gpl2+)))) ; everything else
1296
1297 (define-public iperf
1298 (package
1299 (name "iperf")
1300 (version "3.1.7")
1301 (source (origin
1302 (method url-fetch)
1303 (uri (string-append "http://downloads.es.net/pub/iperf"
1304 "/iperf-" version ".tar.gz"))
1305 (sha256
1306 (base32
1307 "0kvk8d0a3dcxc8fisyprbn01y8akxj4sx8ld5dh508p9dx077vx4"))))
1308 (build-system gnu-build-system)
1309 (synopsis "TCP, UDP and SCTP bandwidth measurement tool")
1310 (description
1311 "iPerf is a tool to measure achievable bandwidth on IP networks. It
1312 supports tuning of various parameters related to timing, buffers and
1313 protocols (TCP, UDP, SCTP with IPv4 and IPv6). For each test it reports
1314 the bandwidth, loss, and other parameters.")
1315 (home-page "http://software.es.net/iperf/")
1316 (license (list license:bsd-3 ; Main distribution.
1317 license:ncsa ; src/{units,iperf_locale,tcp_window_size}.c
1318 license:expat ; src/{cjson,net}.[ch]
1319 license:public-domain)))) ; src/portable_endian.h
1320
1321 (define-public nethogs
1322 (package
1323 (name "nethogs")
1324 (version "0.8.5")
1325 (source (origin
1326 (method url-fetch)
1327 (uri (string-append "https://github.com/raboof/nethogs/archive/v"
1328 version ".tar.gz"))
1329 (sha256
1330 (base32
1331 "1k4x8r7s4dgcb6n2rjn28h2yyij92mwm69phncl3597cdxr954va"))
1332 (file-name (string-append name "-" version ".tar.gz"))))
1333 (build-system gnu-build-system)
1334 (inputs
1335 `(("libpcap" ,libpcap)
1336 ("ncurses" ,ncurses)))
1337 (arguments
1338 `(#:make-flags `("CC=gcc"
1339 ,(string-append "PREFIX=" %output))
1340 #:phases
1341 (modify-phases %standard-phases
1342 (delete 'configure)))) ; No ./configure script.
1343 (home-page "https://github.com/raboof/nethogs")
1344 (synopsis "Per-process bandwidth monitor")
1345 (description "NetHogs is a small 'net top' tool for Linux. Instead of
1346 breaking the traffic down per protocol or per subnet, like most tools do, it
1347 groups bandwidth by process.
1348
1349 NetHogs does not rely on a special kernel module to be loaded. If there's
1350 suddenly a lot of network traffic, you can fire up NetHogs and immediately see
1351 which PID is causing this. This makes it easy to identify programs that have
1352 gone wild and are suddenly taking up your bandwidth.")
1353 (license license:gpl2+)))
1354
1355 (define-public nzbget
1356 (package
1357 (name "nzbget")
1358 (version "20.0")
1359 (source
1360 (origin
1361 (method url-fetch)
1362 (uri (string-append "https://github.com/nzbget/nzbget/archive/v"
1363 version ".tar.gz"))
1364 (file-name (string-append name "-" version ".tar.gz"))
1365 (sha256
1366 (base32
1367 "0q93aqqyzccn5r9sny38499rmg846qdh9pi2v5kvf9m23v54yk60"))
1368 (modules '((guix build utils)))
1369 (snippet
1370 ;; Reported upstream as <https://github.com/nzbget/nzbget/pull/414>.
1371 '(begin
1372 (substitute* "daemon/connect/TlsSocket.cpp"
1373 (("gnutls_certificate-verification_status_print")
1374 "gnutls_certificate_verification_status_print"))
1375 #t))))
1376 (arguments
1377 `(#:configure-flags
1378 (list
1379 (string-append "--with-libcurses-includes="
1380 (assoc-ref %build-inputs "ncurses") "/include")
1381 (string-append "--with-libcurses-libraries="
1382 (assoc-ref %build-inputs "ncurses") "/lib")
1383 (string-append "--with-tlslib=GnuTLS"))))
1384 (build-system gnu-build-system)
1385 (inputs `(("gnutls" ,gnutls)
1386 ("libxml2" ,libxml2)
1387 ("ncurses" ,ncurses)
1388 ("zlib" ,zlib)))
1389 (native-inputs `(("pkg-config" ,pkg-config)))
1390 (home-page "https://github.com/nzbget/nzbget")
1391 (synopsis "Usenet binary file downloader")
1392 (description
1393 "NZBGet is a binary newsgrabber, which downloads files from Usenet based
1394 on information given in @code{nzb} files. NZBGet can be used in standalone
1395 and in server/client modes. In standalone mode, you pass NZBGet @command{nzb}
1396 files as command-line parameters and it downloads them and exits. NZBGet also
1397 contains a Web interface. Its server can be controlled through remote
1398 procedure calls (RPCs).")
1399 (license license:gpl2+)))
1400
1401 (define-public openvswitch
1402 (package
1403 (name "openvswitch")
1404 (version "2.8.1")
1405 (source (origin
1406 (method url-fetch)
1407 (uri (string-append
1408 "http://openvswitch.org/releases/openvswitch-"
1409 version ".tar.gz"))
1410 (sha256
1411 (base32
1412 "14rqqhfyv49irz8ag0qbv9jn8z0bn3qzxir3r074y16p4sg4674d"))))
1413 (build-system gnu-build-system)
1414 (arguments
1415 '(;; FIXME: many tests fail with:
1416 ;; […]
1417 ;; test -e $OVS_RUNDIR/ovs-vswitchd.pid
1418 ;; ovs-appctl -t ovs-vswitchd exit
1419 ;; hard failure
1420 #:tests? #f
1421 #:configure-flags
1422 '("--enable-shared"
1423 "--localstatedir=/var"
1424 "--with-dbdir=/var/lib/openvswitch")
1425 #:phases
1426 (modify-phases %standard-phases
1427 (replace 'install
1428 (lambda _
1429 (invoke "make"
1430 ;; Don't try to create directories under /var.
1431 "RUNDIR=/tmp"
1432 "PKIDIR=/tmp"
1433 "LOGDIR=/tmp"
1434 "DBDIR=/tmp"
1435 "install"))))))
1436 (native-inputs
1437 `(("perl" ,perl)
1438 ("pkg-config" ,pkg-config)
1439 ("python" ,python-2)
1440 ;; for testing
1441 ("util-linux" ,util-linux)))
1442 (propagated-inputs
1443 `(("python-six" ,python2-six)))
1444 (inputs
1445 `(("libcap-ng" ,libcap-ng)
1446 ("openssl" ,openssl)))
1447 (synopsis "Virtual network switch")
1448 (home-page "http://www.openvswitch.org/")
1449 (description
1450 "Open vSwitch is a multilayer virtual switch. It is designed to enable
1451 massive network automation through programmatic extension, while still
1452 supporting standard management interfaces and protocols (e.g. NetFlow, sFlow,
1453 IPFIX, RSPAN, CLI, LACP, 802.1ag).")
1454 (license ; see debian/copyright for detail
1455 (list license:lgpl2.1 ; xenserver and utilities/bugtool
1456 license:gpl2 ; datapath
1457 license:bsd-2 license:bsd-3
1458 license:asl2.0)))) ; all other
1459
1460 (define-public python-ipy
1461 (package
1462 (name "python-ipy")
1463 (version "0.83")
1464 (source (origin
1465 (method url-fetch)
1466 (uri (pypi-uri "IPy" version))
1467 (sha256
1468 (base32
1469 "1f6sdrxclifky4gvkf4gvyv5hx3fjh8vzspnfrqki6qm5d9mmnk1"))))
1470 (build-system python-build-system)
1471 (home-page "https://github.com/autocracy/python-ipy/")
1472 (synopsis "Python class and tools for handling IP addresses and networks")
1473 (description "The @code{IP} class allows a comfortable parsing and
1474 handling for most notations in use for IPv4 and IPv6 addresses and
1475 networks.")
1476 (license license:bsd-3)))
1477
1478 (define-public python2-ipy
1479 (package-with-python2 python-ipy))
1480
1481 (define-public speedtest-cli
1482 (package
1483 (name "speedtest-cli")
1484 (version "2.0.2")
1485 (source
1486 (origin
1487 (method git-fetch)
1488 (uri (git-reference
1489 (url "https://github.com/sivel/speedtest-cli")
1490 (commit (string-append "v" version))))
1491 (file-name (git-file-name name version))
1492 (sha256
1493 (base32
1494 "0vv2z37g2kgm2dzkfa4bhri92hs0d1acxi8z66gznsl5148q7sdi"))))
1495 (build-system python-build-system)
1496 (home-page "https://github.com/sivel/speedtest-cli")
1497 (synopsis "Internet bandwidth tester")
1498 (description
1499 "Command line interface for testing internet bandwidth using
1500 speedtest.net.")
1501 (license license:asl2.0)))
1502
1503 (define-public tftp-hpa
1504 (package
1505 (name "tftp-hpa")
1506 (version "5.2")
1507 (source (origin
1508 (method url-fetch)
1509 (uri (string-append "mirror://kernel.org/software/"
1510 "network/tftp/tftp-hpa/tftp-hpa-" version
1511 ".tar.xz"))
1512 (sha256
1513 (base32
1514 "12vidchglhyc20znq5wdsbhi9mqg90jnl7qr9qs8hbvaz4fkdvmg"))))
1515 (build-system gnu-build-system)
1516 (arguments `(#:tests? #f)) ; no test target
1517 (synopsis "HPA's tftp client")
1518 (description
1519 "This is a tftp client derived from OpenBSD tftp with some extra options
1520 added and bugs fixed. The source includes readline support but it is not
1521 enabled due to license conflicts between the BSD advertising clause and the GPL.")
1522 (home-page "http://git.kernel.org/cgit/network/tftp/tftp-hpa.git/about/")
1523 ;; Some source files are distributed under a 3-clause BSD license, and
1524 ;; others under a 4-clause BSD license. Refer to the files in the source
1525 ;; distribution for clarification.
1526 (license (list license:bsd-3 license:bsd-4))))
1527
1528 (define-public pidentd
1529 (package
1530 (name "pidentd")
1531 (version "3.0.19")
1532 (source
1533 (origin
1534 (method url-fetch)
1535 (uri (string-append "https://github.com/ptrrkssn/pidentd/archive/"
1536 "v" version ".tar.gz"))
1537 (file-name (string-append name "-" version ".tar.gz"))
1538 (sha256
1539 (base32
1540 "0y3kd1bkydqkpc1qdff24yswysamsqivvadjy0468qri5730izgc"))))
1541 (build-system gnu-build-system)
1542 (arguments
1543 `(#:tests? #f)) ; No tests are included
1544 (inputs
1545 `(("openssl" ,openssl))) ; For the DES library
1546 (home-page "https://www.lysator.liu.se/~pen/pidentd/")
1547 (synopsis "Small Ident Daemon")
1548 (description
1549 "@dfn{Pidentd} (Peter's Ident Daemon) is a identd, which implements a
1550 identification server. Pidentd looks up specific TCP/IP connections and
1551 returns the user name and other information about the connection.")
1552 (license license:public-domain)))
1553
1554 (define-public spiped
1555 (package
1556 (name "spiped")
1557 (version "1.6.0")
1558 (source (origin
1559 (method url-fetch)
1560 (uri (string-append "https://www.tarsnap.com/spiped/spiped-"
1561 version ".tgz"))
1562 (sha256
1563 (base32
1564 "1r51rdcl7nib1yv3yvgd5alwlkkwmr387brqavaklb0p2bwzixz6"))))
1565 (build-system gnu-build-system)
1566 (arguments
1567 '(#:test-target "test"
1568 #:make-flags (let* ((out (assoc-ref %outputs "out"))
1569 (bindir (string-append out "/bin"))
1570 (man1dir (string-append out "/share/man/man1")))
1571 (list "CC=gcc" ; It tries to invoke `c99`.
1572 (string-append "BINDIR=" bindir)
1573 (string-append "MAN1DIR=" man1dir)))
1574 #:phases
1575 (modify-phases %standard-phases
1576 (add-after 'unpack 'patch-command-invocations
1577 (lambda _
1578 (substitute* '("Makefile"
1579 "libcperciva/cpusupport/Build/cpusupport.sh"
1580 "libcperciva/POSIX/posix-cflags.sh"
1581 "libcperciva/POSIX/posix-l.sh")
1582 (("command -p") ""))
1583 #t))
1584 (delete 'configure) ; No ./configure script.
1585 (add-after 'install 'install-more-docs
1586 (lambda* (#:key outputs #:allow-other-keys)
1587 (let* ((out (assoc-ref %outputs "out"))
1588 (misc (string-append out "/share/doc/spiped")))
1589 (install-file "DESIGN.md" misc)
1590 #t))))))
1591 (native-inputs
1592 `(("procps" ,procps))) ; `ps` is used by the test suite.
1593 (inputs
1594 `(("openssl" ,openssl)))
1595 (home-page "https://www.tarsnap.com/spiped.html")
1596 (synopsis "Create secure pipes between sockets")
1597 (description "Spiped (pronounced \"ess-pipe-dee\") is a utility for creating
1598 symmetrically encrypted and authenticated pipes between socket addresses, so
1599 that one may connect to one address (e.g., a UNIX socket on localhost) and
1600 transparently have a connection established to another address (e.g., a UNIX
1601 socket on a different system). This is similar to 'ssh -L' functionality, but
1602 does not use SSH and requires a pre-shared symmetric key.")
1603 (license license:bsd-2)))
1604
1605 (define-public quagga
1606 (package
1607 (name "quagga")
1608 (version "1.2.4")
1609 (source (origin
1610 (method url-fetch)
1611 (uri (string-append "mirror://savannah/quagga/quagga-"
1612 version ".tar.gz"))
1613 (sha256
1614 (base32
1615 "1lsksqxij5f1llqn86pkygrf5672kvrqn1kvxghi169hqf1c0r73"))
1616 (patches
1617 (search-patches "quagga-reproducible-build.patch"))))
1618 (build-system gnu-build-system)
1619 (native-inputs `(("pkg-config" ,pkg-config)
1620 ("perl" ,perl)
1621 ("dejagnu" ,dejagnu)))
1622 (inputs `(("readline" ,readline)
1623 ("c-ares" ,c-ares)))
1624 (synopsis "Routing Software Suite")
1625 (description "Quagga is a routing software suite, providing implementations
1626 of OSPFv2, OSPFv3, RIP v1 and v2, RIPng and BGP-4 for Unix platforms.
1627
1628 The Quagga architecture consists of a core daemon, @command{zebra}, which
1629 acts as an abstraction layer to the underlying Unix kernel and presents the
1630 Zserv API over a Unix or TCP stream to Quagga clients. It is these Zserv
1631 clients which typically implement a routing protocol and communicate routing
1632 updates to the zebra daemon.")
1633 (home-page "https://www.nongnu.org/quagga/")
1634 (license license:gpl2+)))
1635
1636 (define-public thc-ipv6
1637 (let ((revision "0")
1638 (commit "4bb72573e0950ce6f8ca2800a10748477020029e"))
1639 (package
1640 (name "thc-ipv6")
1641 (version (git-version "3.4" revision commit))
1642 (source (origin
1643 (method git-fetch)
1644 (uri (git-reference
1645 (url "https://github.com/vanhauser-thc/thc-ipv6.git")
1646 (commit commit)))
1647 (file-name (git-file-name name version))
1648 (sha256
1649 (base32
1650 "1x5i6vbsddqc2yks7r1a2fw2fk16qxvd6hpzh1lykjfpkal8fdir"))))
1651 (build-system gnu-build-system)
1652 (arguments
1653 `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
1654 #:tests? #f ; No test suite.
1655 #:phases
1656 (modify-phases %standard-phases
1657 (delete 'configure) ; No ./configure script.
1658 (add-before 'build 'patch-paths
1659 (lambda _
1660 (substitute* "Makefile"
1661 (("/bin/echo") "echo"))
1662 #t))
1663 (add-after 'install 'install-more-docs
1664 (lambda* (#:key outputs #:allow-other-keys)
1665 (let* ((out (assoc-ref outputs "out"))
1666 (doc (string-append out "/share/thc-ipv6/doc")))
1667 (install-file "README" doc)
1668 (install-file "HOWTO-INJECT" doc)
1669 #t))))))
1670 ;; TODO Add libnetfilter-queue once packaged.
1671 (inputs
1672 `(("libpcap" ,libpcap)
1673 ("openssl" ,openssl)
1674 ("perl" ,perl)))
1675 (home-page "https://github.com/vanhauser-thc/thc-ipv6")
1676 (synopsis "IPv6 security research toolkit")
1677 (description "The THC IPv6 Toolkit provides command-line tools and a library
1678 for researching IPv6 implementations and deployments. It requires Linux 2.6 or
1679 newer and only works on Ethernet network interfaces.")
1680 ;; AGPL 3 with exception for linking with OpenSSL. See the 'LICENSE' file in
1681 ;; the source distribution for more information.
1682 (license license:agpl3))))
1683
1684 (define-public bmon
1685 (package
1686 (name "bmon")
1687 (version "4.0")
1688 (source
1689 (origin
1690 (method url-fetch)
1691 (uri (string-append "https://github.com/tgraf/bmon/releases/download/v"
1692 version "/bmon-" version ".tar.gz"))
1693 (sha256
1694 (base32
1695 "0ylzriv4pwh76344abzl1w219x188gshbycbna35gsyfp09c7z82"))))
1696 (build-system gnu-build-system)
1697 (inputs
1698 `(("libconfuse" ,libconfuse)
1699 ("libnl" ,libnl)
1700 ("ncurses" ,ncurses)))
1701 (native-inputs
1702 `(("pkg-config" ,pkg-config)))
1703 (synopsis "Bandwidth monitor")
1704 (description "bmon is a monitoring and debugging tool to capture
1705 networking-related statistics and prepare them visually in a human-friendly
1706 way. It features various output methods including an interactive curses user
1707 interface and a programmable text output for scripting.")
1708 (home-page "https://github.com/tgraf/bmon")
1709 ;; README.md mentions both the 2-clause BSD and expat licenses, but all
1710 ;; the source files only have expat license headers. Upstream has been
1711 ;; contacted for clarification: https://github.com/tgraf/bmon/issues/59
1712 ;; Update the license field when upstream responds.
1713 (license (list license:bsd-2
1714 license:expat))))
1715
1716 (define-public libnet
1717 (package
1718 (name "libnet")
1719 (version "1.2-rc3")
1720 (source
1721 (origin
1722 (method git-fetch)
1723 (uri (git-reference
1724 (url "https://github.com/sam-github/libnet")
1725 (commit (string-append "libnet-" version))))
1726 (file-name (git-file-name name version))
1727 (sha256
1728 (base32
1729 "0cy8w4g5rv963v4p6iq3333kxgdddx2lywp70xf62553a25xhhs4"))))
1730 (build-system gnu-build-system)
1731 (arguments
1732 `(#:phases
1733 (modify-phases %standard-phases
1734 (add-after 'unpack 'chdir
1735 (lambda _ (chdir "libnet") #t))
1736 (add-before 'build 'build-doc
1737 (lambda* (#:key make-flags #:allow-other-keys)
1738 (apply invoke "make" "-C" "doc" "doc"
1739 make-flags))))))
1740 (native-inputs
1741 `(("autoconf" ,autoconf)
1742 ("automake" ,automake)
1743 ("libtool" ,libtool)
1744 ("doxygen" ,doxygen)))
1745 (home-page "https://sourceforge.net/projects/libnet-dev/")
1746 (synopsis "Framework for low-level network packet construction")
1747 (description
1748 "Libnet provides a fairly portable framework for network packet
1749 construction and injection. It features portable packet creation interfaces
1750 at the IP layer and link layer, as well as a host of supplementary
1751 functionality. Using libnet, quick and simple packet assembly applications
1752 can be whipped up with little effort.")
1753 (license license:bsd-2)))
1754
1755 (define-public mtr
1756 (package
1757 (name "mtr")
1758 (version "0.92")
1759 (source
1760 (origin
1761 (method url-fetch)
1762 (uri (string-append "ftp://ftp.bitwizard.nl/" name "/"
1763 name "-" version ".tar.gz"))
1764 (sha256
1765 (base32 "10j3ds3p27jygys4x08kj8fi3zlsgiv72xsfazkah6plwawrv5zj"))))
1766 (build-system gnu-build-system)
1767 (inputs
1768 `(("libcap" ,libcap)
1769 ("ncurses" ,ncurses)))
1770 (native-inputs
1771 ;; The 0.92 release tarball still requires the ‘autoheader’ tool.
1772 `(("autoconf" ,autoconf)))
1773 (arguments
1774 `(#:tests? #f)) ; tests require network access
1775 (home-page "https://www.bitwizard.nl/mtr/")
1776 (synopsis "Network diagnostic tool")
1777 (description
1778 "@dfn{mtr} (My TraceRoute) combines the functionality of the
1779 @command{traceroute} and @command{ping} programs in a single network diagnostic
1780 tool. @command{mtr} can use several network protocols to detect intermediate
1781 routers (or @dfn{hops}) between the local host and a user-specified destination.
1782 It then continually measures the response time and packet loss at each hop, and
1783 displays the results in real time.")
1784 (license license:gpl2+)))
1785
1786 (define-public strongswan
1787 (package
1788 (name "strongswan")
1789 (version "5.6.3")
1790 (source
1791 (origin
1792 (method url-fetch)
1793 (uri (string-append "https://download.strongswan.org/strongswan-"
1794 version ".tar.bz2"))
1795 (sha256
1796 (base32 "095zg7h7qwsc456sqgwb1lhhk29ac3mk5z9gm6xja1pl061driy3"))))
1797 (build-system gnu-build-system)
1798 (arguments
1799 `(#:phases
1800 (modify-phases %standard-phases
1801 (add-before 'build 'patch-command-file-names
1802 (lambda* (#:key inputs #:allow-other-keys)
1803 (substitute* "src/libstrongswan/utils/process.c"
1804 (("/bin/sh")
1805 (string-append (assoc-ref inputs "bash") "/bin/sh")))
1806
1807 (substitute* "src/libstrongswan/tests/suites/test_process.c"
1808 (("/bin/sh") (which "sh"))
1809 (("/bin/echo") (which "echo"))
1810 (("cat") (which "cat")))
1811 #t))
1812 (add-before 'check 'set-up-test-environment
1813 (lambda* (#:key inputs #:allow-other-keys)
1814 (setenv "TZDIR" (string-append (assoc-ref inputs "tzdata")
1815 "/share/zoneinfo"))
1816 #t)))
1817 #:configure-flags
1818 (list
1819 ;; Disable bsd-4 licensed plugins
1820 "--disable-des"
1821 "--disable-blowfish")))
1822 (inputs
1823 `(("curl" ,curl)
1824 ("gmp" ,gmp)
1825 ("libgcrypt" ,libgcrypt)
1826 ("openssl" ,openssl)))
1827 (native-inputs
1828 `(("coreutils" ,coreutils)
1829 ("tzdata" ,tzdata-for-tests)))
1830 (synopsis "IKEv1/v2 keying daemon")
1831 (description "StrongSwan is an IPsec implementation originally based upon
1832 the FreeS/WAN project. It contains support for IKEv1, IKEv2, MOBIKE, IPv6,
1833 NAT-T and more.")
1834 (home-page "https://strongswan.org/")
1835 (license
1836 (list license:gpl2+
1837 ;; src/aikgen/*
1838 ;; src/libcharon/plugins/dnscert/*
1839 ;; src/libcharon/plugins/ext_auth/*
1840 ;; src/libcharon/plugins/vici/ruby/*
1841 ;; src/libcharon/plugins/xauth_pam/xauth_pam_listener.[ch]
1842 license:expat
1843 ;; src/inclue/sys/*
1844 license:bsd-3
1845 ;; src/libstrongswan/plugins/sha3/sha3_keccak.c
1846 license:public-domain
1847 ;; src/libstrongswan/plugins/pkcs11/pkcs11.h
1848 (license:non-copyleft
1849 "file://src/libstrongswan/plugins/pkcs11/pkcs11.h"
1850 "pkcs11 contains a unknown permissive license. View the specific
1851 file for more details.")
1852 ;; These files are not included in the
1853 ;; build, they are disabled through
1854 ;; options to ./configure
1855 ;;
1856 ;; src/libstrongswan/plugins/blowfish/bf_enc.c
1857 ;; src/libstrongswan/plugins/blowfish/bf_locl.h
1858 ;; src/libstrongswan/plugins/blowfish/bf_pi.h
1859 ;; src/libstrongswan/plugins/blowfish/bf_skey.c
1860 ;; src/libstrongswan/plugins/blowfish/blowfish_crypter.c
1861 ;; src/libstrongswan/plugins/des/des_crypter.c
1862 license:bsd-4))))
1863
1864 (define-public amule
1865 (package
1866 (name "amule")
1867 (version "2.3.2")
1868 (source (origin
1869 (method git-fetch)
1870 (uri (git-reference
1871 (url "https://github.com/amule-project/amule")
1872 (commit version)))
1873 (file-name (git-file-name name version))
1874 (sha256
1875 (base32
1876 "010wxm6g9f92x6fympj501zbnjka32rzbx0sk3a2y4zpih5d2nsn"))
1877 ;; Patch for adopting crypto++ >= 6.0.
1878 (patches (search-patches "amule-crypto-6.patch"))))
1879 (build-system gnu-build-system)
1880 (arguments
1881 `(#:phases
1882 (modify-phases %standard-phases
1883 (delete 'bootstrap) ; bootstrap phase runs too early.
1884 (add-after 'patch-source-shebangs 'autogen
1885 (lambda _
1886 (invoke "sh" "autogen.sh")
1887 #t)))
1888 #:configure-flags
1889 '("--disable-rpath"
1890 "--enable-wxcas"
1891 "--enable-cas"
1892 "--enable-alc"
1893 "--enable-alcc"
1894 "--enable-xas"
1895 "--enable-amulecmd"
1896 "--enable-geoip"
1897 "--enable-ccache"
1898 "--enable-nls"
1899 "--enable-optimize"
1900 "--enable-amule-gui"
1901 "--enable-amule-daemon"
1902 "--enable-webserver"
1903 "--with-denoise-level=0")))
1904 (native-inputs
1905 `(("autoconf" ,autoconf)
1906 ("automake" ,automake)
1907 ("gettext-minimal" ,gettext-minimal)
1908 ("perl" ,perl)))
1909 (inputs
1910 `(("zlib" ,zlib)
1911 ("crypto++" ,crypto++)
1912 ("libpng" ,libpng)
1913 ("wxwidgets-gtk2" ,wxwidgets-gtk2)))
1914 (home-page "http://amule.org/")
1915 (synopsis "Peer-to-peer client for the eD2K and Kademlia networks")
1916 (description
1917 "aMule is an eMule-like client for the eD2k and Kademlia peer-to-peer
1918 file sharing networks. It includes a graphical user interface (GUI), a daemon
1919 allowing you to run a client with no graphical interface, and a Web GUI for
1920 remote access. The @command{amulecmd} command allows you to control aMule
1921 remotely.")
1922 (license license:gpl2+)))
1923
1924 (define-public zyre
1925 (package
1926 (name "zyre")
1927 (version "2.0.0")
1928 (source (origin
1929 (method url-fetch)
1930 (uri
1931 (string-append "https://github.com/zeromq/zyre/releases/download/v"
1932 version "/" name "-" version ".tar.gz"))
1933 (sha256
1934 (base32
1935 "0qz2730bng1gs9xbqxhkw88qbsmszgmmrl2g9k6xrg6r3bqvsdc7"))))
1936 (build-system gnu-build-system)
1937 (inputs `(("zeromq" ,zeromq)
1938 ("czmq" ,czmq)
1939 ("libsodium" ,libsodium)))
1940 (synopsis "Framework for proximity-based peer-to-peer applications")
1941 (description "Zyre provides reliable group messaging over local area
1942 networks using zeromq. It has these key characteristics:
1943
1944 @itemize
1945 @item Zyre needs no administration or configuration.
1946 @item Peers may join and leave the network at any time.
1947 @item Peers talk to each other without any central brokers or servers.
1948 @item Peers can talk directly to each other.
1949 @item Peers can join groups, and then talk to groups.
1950 @item Zyre is reliable, and loses no messages even when the network is heavily loaded.
1951 @item Zyre is fast and has low latency, requiring no consensus protocols.
1952 @item Zyre is designed for WiFi networks, yet also works well on Ethernet networks.
1953 @end itemize")
1954 (home-page "https://github.com/zeromq/zyre")
1955 (license license:mpl2.0)))
1956
1957 (define-public can-utils
1958 (package
1959 (name "can-utils")
1960 (version "2018.02.0")
1961 (source (origin
1962 (method git-fetch)
1963 (uri (git-reference
1964 (url "https://github.com/linux-can/can-utils.git")
1965 (commit (string-append "v" version))))
1966 (file-name (git-file-name name version))
1967 (sha256
1968 (base32
1969 "0r0zkm67bdcmbfypjr7z041d4zp0xzb379dyl8cvhmflh12fd2jb"))))
1970 (build-system gnu-build-system)
1971 (arguments
1972 `(#:tests? #f ; No tests exist.
1973 #:make-flags (list "CC=gcc"
1974 (string-append "PREFIX="
1975 (assoc-ref %outputs "out")))
1976 #:phases
1977 (modify-phases %standard-phases
1978 (delete 'bootstrap)
1979 (delete 'configure))))
1980 (home-page "https://github.com/linux-can/can-utils")
1981 (synopsis "CAN utilities")
1982 (description "This package provides CAN utilities in the following areas:
1983
1984 @itemize
1985 @item Basic tools to display, record, generate and replay CAN traffic
1986 @item CAN access via IP sockets
1987 @item CAN in-kernel gateway configuration
1988 @item CAN bus measurement and testing
1989 @item ISO-TP (ISO15765-2:2016 - this means messages with a body larger than
1990 eight bytes) tools
1991 @item Log file converters
1992 @item Serial Line Discipline configuration for slcan driver
1993 @end itemize")
1994 ;; Either BSD-3 or GPL-2 can be used.
1995 (license (list license:bsd-3 license:gpl2))))
1996
1997 (define-public asio
1998 (package
1999 (name "asio")
2000 (version "1.12.1")
2001 (source
2002 (origin
2003 (method url-fetch)
2004 (uri (string-append "mirror://sourceforge/asio/asio/"
2005 version " (Stable)/" name "-" version ".tar.bz2"))
2006 (sha256
2007 (base32
2008 "0nln45662kg799ykvqx5m9z9qcsmadmgg6r5najryls7x16in2d9"))))
2009 (build-system gnu-build-system)
2010 (inputs
2011 `(("boost" ,boost)
2012 ("openssl" ,openssl)))
2013 (arguments
2014 `(#:configure-flags
2015 (list
2016 (string-append "--with-boost=" (assoc-ref %build-inputs "boost"))
2017 (string-append "--with-openssl=" (assoc-ref %build-inputs "openssl")))))
2018 (home-page "https://think-async.com/Asio")
2019 (synopsis "C++ library for ASynchronous network I/O")
2020 (description "Asio is a cross-platform C++ library for network and
2021 low-level I/O programming that provides developers with a consistent
2022 asynchronous model using a modern C++ approach.")
2023 (license license:boost1.0)))
2024
2025 (define-public shadowsocks
2026 ;; There are some security fixes after the last release.
2027 (let* ((commit "e332ec93e9c90f1cbee676b022bf2c5d5b7b1239")
2028 (revision "0")
2029 (version (git-version "2.8.2" revision commit)))
2030 (package
2031 (name "shadowsocks")
2032 (version version)
2033 (home-page "https://github.com/shadowsocks/shadowsocks")
2034 (source (origin
2035 (method git-fetch)
2036 (uri (git-reference
2037 (url home-page)
2038 (commit commit)))
2039 (sha256
2040 (base32
2041 "1idd9b4f2pnhcpk1bh030hqg5zq25gkwxd53xi3c0cj242w7sp2j"))
2042 (file-name (git-file-name name version))))
2043 (build-system python-build-system)
2044 (synopsis "Fast tunnel proxy that helps you bypass firewalls")
2045 (description
2046 "This package is a fast tunnel proxy that helps you bypass firewalls.
2047
2048 Features:
2049 @itemize
2050 @item TCP & UDP support
2051 @item User management API
2052 @item TCP Fast Open
2053 @item Workers and graceful restart
2054 @item Destination IP blacklist
2055 @end itemize")
2056 (license license:asl2.0))))
2057
2058 (define-public net-snmp
2059 (package
2060 (name "net-snmp")
2061 (version "5.8")
2062 (source (origin
2063 (method url-fetch)
2064 (uri (string-append "mirror://sourceforge/net-snmp/net-snmp/"
2065 version "/net-snmp-" version ".tar.gz"))
2066 (sha256
2067 (base32
2068 "1pvajzj9gmj56dmwix0ywmkmy2pglh6nny646hkm7ghfhh03bz5j"))
2069 (modules '((guix build utils)))
2070 (snippet
2071 '(begin
2072 ;; Drop bundled libraries.
2073 (delete-file-recursively "snmplib/openssl")
2074 #t))))
2075 (build-system gnu-build-system)
2076 (arguments
2077 `(#:test-target "test"
2078 ;; XXX: With parallel build enabled, Perl modules may not get linked with
2079 ;; libnetsnmp. See e.g. <https://bugzilla.novell.com/show_bug.cgi?id=819497>.
2080 #:parallel-build? #f
2081 #:configure-flags
2082 (list (string-append "LDFLAGS=-Wl,-rpath="
2083 (assoc-ref %outputs "out")
2084 "/lib")
2085 "--with-logfile=/var/log/snmpd.log"
2086 (string-append "--with-openssl="
2087 (assoc-ref %build-inputs "openssl")))
2088 #:phases
2089 (modify-phases %standard-phases
2090 (add-after 'unpack 'patch-tests
2091 (lambda* (#:key inputs #:allow-other-keys)
2092 (substitute* "testing/fulltests/support/simple_TESTCONF.sh"
2093 (("NETSTAT=\"\"")
2094 (string-append "NETSTAT=\"" (which "netstat") "\"")))
2095 (substitute* '("testing/fulltests/default/T065agentextend_simple"
2096 "testing/fulltests/default/T115agentxperl_simple")
2097 (("/usr/bin/env") (which "env")))
2098 (substitute* "testing/fulltests/default/T065agentextend_sh_simple"
2099 (("/bin/sh") (which "sh")))
2100 ;; These tests require network access.
2101 (for-each delete-file
2102 '("testing/fulltests/default/T070com2sec_simple"
2103 "testing/fulltests/default/T071com2sec6_simple"))
2104 #t))
2105 (add-after 'unpack 'patch-Makefile.PL
2106 (lambda* (#:key outputs #:allow-other-keys)
2107 (substitute* "Makefile.in"
2108 (("Makefile.PL -NET")
2109 (string-append "Makefile.PL PREFIX="
2110 (assoc-ref outputs "out")
2111 " INSTALLDIRS=site" " NO_PERLLOCAL=1"
2112 " -NET")))
2113 #t)))))
2114 (inputs
2115 `(("perl" ,perl)
2116 ("openssl" ,openssl)
2117 ("libnl" ,libnl)))
2118 ;; These inputs are only needed for tests.
2119 (native-inputs
2120 `(("net-tools" ,net-tools)
2121 ("coreutils" ,coreutils)
2122 ("grep" ,grep)))
2123 (home-page "http://www.net-snmp.org/")
2124 (synopsis "Simple Network Management Protocol library and tools")
2125 (description "The @dfn{Simple Network Management Protocol} (SNMP) is a
2126 widely used protocol for monitoring the health and welfare of network
2127 equipment (e.g. routers), computer equipment and even devices like UPSs.
2128 Net-SNMP is a suite of applications used to implement SNMP v1, SNMP v2c and
2129 SNMP v3 using both IPv4 and IPv6.")
2130 (license (list license:bsd-3
2131 (license:non-copyleft
2132 "http://www.net-snmp.org/about/license.html"
2133 "CMU/UCD copyright notice")))))
2134
2135 (define-public ubridge
2136 (package
2137 (name "ubridge")
2138 (version "0.9.14")
2139 (source (origin
2140 (method url-fetch)
2141 (uri (string-append "https://github.com/GNS3/ubridge/archive/v"
2142 version ".tar.gz"))
2143 (file-name (string-append name "-" version ".tar.gz"))
2144 (sha256
2145 (base32
2146 "1hivb8wqkk5047bdl2vbsbcvkmam1107hx1ahy4virq2bkqki1fj"))))
2147 (build-system gnu-build-system)
2148 (arguments
2149 `(#:tests? #f ;no tests
2150 #:make-flags '("CC=gcc")
2151 #:phases
2152 (modify-phases %standard-phases
2153 (delete 'configure)
2154 (add-before 'install 'set-bindir
2155 (lambda* (#:key inputs outputs #:allow-other-keys)
2156 (let ((bin (string-append (assoc-ref outputs "out")
2157 "/bin")))
2158 (mkdir-p bin)
2159 (substitute* "Makefile"
2160 (("\\$\\(BINDIR\\)") bin)
2161 (("\tsetcap cap_net.*$") "")))
2162 #t)))))
2163 (inputs
2164 `(("libpcap" ,libpcap)))
2165 (home-page "https://github.com/GNS3/ubridge/")
2166 (synopsis "Bridge for UDP tunnels, Ethernet, TAP and VMnet interfaces")
2167 (description "uBridge is a simple program to create user-land bridges
2168 between various technologies. Currently, bridging between UDP tunnels,
2169 Ethernet and TAP interfaces is supported. Packet capture is also supported.")
2170 (license license:gpl3+)))
2171
2172 (define-public hcxtools
2173 (let* ((commit "2ecfc9a06c2028c47522ea566ccd82b2c1f94647"))
2174 (package
2175 (name "hcxtools")
2176 (version (git-version "0.0.0" "1" commit))
2177 (home-page "https://github.com/ZerBea/hcxtools")
2178 (source (origin
2179 (method git-fetch)
2180 (uri (git-reference
2181 (url home-page)
2182 (commit commit)))
2183 (sha256
2184 (base32
2185 "1hzwrpmxjxl674if0pp5iq06mdi24k7ni7bh1h20isp4s40201n3"))
2186 (file-name (git-file-name name version))))
2187 (build-system gnu-build-system)
2188 (inputs
2189 `(("curl" ,curl)
2190 ("libpcap" ,libpcap)
2191 ("openssl" ,openssl)
2192 ("zlib" ,zlib)))
2193 (arguments
2194 `(#:make-flags (list "CC=gcc"
2195 (string-append "INSTALLDIR=" (assoc-ref %outputs "out") "/bin"))
2196 #:tests? #f ;no tests
2197 #:phases
2198 (modify-phases %standard-phases
2199 (delete 'configure)
2200 (add-after 'unpack 'set-environment
2201 (lambda* (#:key inputs #:allow-other-keys)
2202 (setenv "C_INCLUDE_PATH"
2203 (string-append (assoc-ref inputs "curl")
2204 "/include:"
2205 (assoc-ref inputs "libpcap")
2206 "/include:"
2207 (assoc-ref inputs "openssl")
2208 "/include:"
2209 (assoc-ref inputs "zlib")
2210 "/include:"
2211 (getenv "C_INCLUDE_PATH")))
2212 #t)))))
2213 (synopsis "Capture wlan traffic to hashcat and John the Ripper")
2214 (description
2215 "This package contains a small set of tools to capture and convert
2216 packets from wireless devices for use with hashcat or John the Ripper.")
2217 (license license:expat))))
2218
2219 (define-public hcxdumptool
2220 (let* ((commit "f4799b5da82c5b030a6d99b02d1c1b9dc838ad36"))
2221 (package
2222 (name "hcxdumptool")
2223 (version (git-version "0.0.0" "1" commit))
2224 (home-page "https://github.com/ZerBea/hcxdumptool")
2225 (source (origin
2226 (method git-fetch)
2227 (uri (git-reference
2228 (url home-page)
2229 (commit commit)))
2230 (sha256
2231 (base32
2232 "0qlsin0rws9sshn12faq4spmd0ffzssal36s71vhv6gkhhga7abl"))
2233 (file-name (git-file-name name version))))
2234 (build-system gnu-build-system)
2235 (arguments
2236 `(#:make-flags (list "CC=gcc"
2237 (string-append "INSTALLDIR=" (assoc-ref %outputs "out") "/bin"))
2238 #:tests? #f ;no tests
2239 #:phases
2240 (modify-phases %standard-phases
2241 (delete 'configure))))
2242 (synopsis "Small tool to capture packets from wlan devices")
2243 (description
2244 "Small tool to capture packets from WLAN devices. After capturing,
2245 upload the \"uncleaned\" cap to @url{https://wpa-sec.stanev.org/?submit} to
2246 see if the access point or the client is vulnerable to a dictionary attack.
2247 Convert the cap file to hccapx format and/or to WPA-PMKID-PBKDF2
2248 hashline (16800) with @command{hcxpcaptool} from the @code{hcxtools} package
2249 and check if the WLAN key or the master key was transmitted unencrypted.")
2250 (license license:expat))))
2251
2252 (define-public dante
2253 (package
2254 (name "dante")
2255 (version "1.4.2")
2256 (source
2257 (origin
2258 (method url-fetch)
2259 (uri (string-append "https://www.inet.no/dante/files/dante-"
2260 version ".tar.gz"))
2261 (sha256
2262 (base32
2263 "19rqzj167q73ag20zxpvswhkk0bj56r5maf83v5016sw7vrcz5sc"))))
2264 (build-system gnu-build-system)
2265 (arguments
2266 ;; XXX: The dynamic socks library doesn't work with 'libc.so' (GNU ld
2267 ;; script). When preloading is enabled, 'sockd' failed with:
2268 ;; … Failed to open library "libc.so": …: invalid ELF header
2269 '(#:configure-flags '("--disable-preload")))
2270 (home-page "https://www.inet.no/dante/")
2271 (synopsis "SOCKS server and client")
2272 (description "Dante is a SOCKS client and server implementation. It can
2273 be installed on a machine with access to an external TCP/IP network and will
2274 allow all other machines, without direct access to that network, to be relayed
2275 through the machine the Dante server is running on. The external network will
2276 never see any machines other than the one Dante is running on.")
2277 (license (license:non-copyleft "file://LICENSE"))))
2278
2279 (define-public restbed
2280 (let ((commit "6eb385fa9051203f28bf96cc1844bbb5a9a6481f"))
2281 (package
2282 (name "restbed")
2283 (version (git-version "4.6" "1" commit))
2284 (source
2285 (origin
2286 (method git-fetch)
2287 (uri (git-reference
2288 (url "https://github.com/Corvusoft/restbed/")
2289 (commit commit)))
2290 (file-name (string-append name "-" version ".tar.gz"))
2291 (sha256
2292 (base32 "0k60i5drklqqrb4khb25fzkgz9y0sncxf1sp6lh2bm1m0gh0661n"))))
2293 (build-system cmake-build-system)
2294 (inputs
2295 `(("asio" ,asio)
2296 ("catch" ,catch-framework)
2297 ("openssl" ,openssl)))
2298 (arguments
2299 `(#:tests? #f
2300 #:configure-flags
2301 '("-DBUILD_TESTS=NO"
2302 "-DBUILD_EXAMPLES=NO"
2303 "-DBUILD_SSL=NO"
2304 "-DBUILD_SHARED=NO")
2305 #:phases
2306 (modify-phases %standard-phases
2307 (add-after 'unpack 'apply-patches-and-fix-paths
2308 (lambda* (#:key inputs #:allow-other-keys)
2309 (let ((asio (assoc-ref inputs "asio"))
2310 (catch (assoc-ref inputs "catch"))
2311 (openssl (assoc-ref inputs "openssl")))
2312 (substitute* "cmake/Findasio.cmake"
2313 (("(find_path\\( asio_INCLUDE asio\\.hpp HINTS ).*$" all begin)
2314 (string-append begin " \"" asio "/include\" )")))
2315 (substitute* "cmake/Findcatch.cmake"
2316 (("(find_path\\( catch_INCLUDE catch\\.hpp HINTS ).*$" all begin)
2317 (string-append begin " \"" catch "/include\" )")))
2318 (substitute* "cmake/Findopenssl.cmake"
2319 (("(find_library\\( ssl_LIBRARY ssl ssleay32 HINTS ).*$" all begin)
2320 (string-append begin " \"" openssl "/lib\" )"))
2321 (("(find_library\\( crypto_LIBRARY crypto libeay32 HINTS ).*$" all begin)
2322 (string-append begin " \"" openssl "/lib\" )"))
2323 (("(find_path\\( ssl_INCLUDE openssl/ssl\\.h HINTS ).*$" all begin)
2324 (string-append begin " \"" openssl "/include\" )")))))))))
2325 (synopsis "Asynchronous RESTful functionality to C++11 applications")
2326 (description "Restbed is a comprehensive and consistent programming
2327 model for building applications that require seamless and secure
2328 communication over HTTP.")
2329 (home-page "https://github.com/Corvusoft/restbed")
2330 (license license:agpl3+))))
2331
2332 (define-public opendht
2333 (package
2334 (name "opendht")
2335 (version "1.8.1")
2336 (source (origin
2337 (method git-fetch)
2338 (uri (git-reference
2339 (url "https://github.com/savoirfairelinux/opendht.git")
2340 (commit version)))
2341 (file-name (git-file-name name version))
2342 (sha256
2343 (base32
2344 "0vninb5mak27wigajslyvr05vq7wbrwqhbr4wzl2nmqcb20wmlq2"))))
2345 (build-system gnu-build-system)
2346 (inputs
2347 `(("gnutls" ,gnutls)
2348 ("nettle" ,nettle)
2349 ("readline" ,readline)
2350 ("jsoncpp" ,jsoncpp)
2351 ("restbed" ,restbed)))
2352 (propagated-inputs
2353 `(("argon2" ,argon2) ; TODO: Needed for the pkg-config .pc file to work?
2354 ("msgpack" ,msgpack))) ;included in several installed headers
2355 (native-inputs
2356 `(("autoconf" ,autoconf)
2357 ("pkg-config" ,pkg-config)
2358 ("automake" ,automake)
2359 ("libtool" ,libtool)))
2360 (arguments
2361 `(#:configure-flags '("--disable-tools"
2362 "--disable-python"
2363 "--with-argon2")))
2364 (home-page "https://github.com/savoirfairelinux/opendht/")
2365 (synopsis "Distributed Hash Table (DHT) library")
2366 (description "OpenDHT is a Distributed Hash Table (DHT) library. It may
2367 be used to manage peer-to-peer network connections as needed for real time
2368 communication.")
2369 (license license:gpl3+)))