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