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