Merge branch 'master' into staging.
[jackhill/guix/guix.git] / gnu / packages / networking.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2014, 2017, 2018, 2021 Ludovic Courtès <ludo@gnu.org>
3 ;;; Copyright © 2015, 2016, 2017, 2018, 2020 Ricardo Wurmus <rekado@elephly.net>
4 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
5 ;;; Copyright © 2015, 2016, 2017, 2021 Stefan Reichör <stefan@xsteve.at>
6 ;;; Copyright © 2016 Raimon Grau <raimonster@gmail.com>
7 ;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <me@tobias.gr>
8 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
9 ;;; Copyright © 2016-2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
10 ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
11 ;;; Copyright © 2016, 2017 Nikita <nikita@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, 2020, 2021 Leo Famulari <leo@famulari.name>
17 ;;; Copyright © 2017-2022 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, 2019 Tonton <tonton@riseup.net>
24 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
25 ;;; Copyright © 2018 Theodoros Foradis <theodoros@foradis.org>
26 ;;; Copyright © 2018, 2020-2022 Marius Bakke <marius@gnu.org>
27 ;;; Copyright © 2018, 2020, 2021, 2022 Oleg Pykhalov <go.wigust@gmail.com>
28 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
29 ;;; Copyright © 2019, 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
30 ;;; Copyright © 2019 Vasile Dumitrascu <va511e@yahoo.com>
31 ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
32 ;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si>
33 ;;; Copyright © 2019, 2020, 2021 Brice Waegeneire <brice@waegenei.re>
34 ;;; Copyright © 2019, 2020 Alex Griffin <a@ajgrf.com>
35 ;;; Copyright © 2019, 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
36 ;;; Copyright © 2019 Daniel Schaefer <git@danielschaefer.me>
37 ;;; Copyright © 2019 Diego N. Barbato <dnbarbato@posteo.de>
38 ;;; Copyright © 2020, 2021 Vincent Legoll <vincent.legoll@gmail.com>
39 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
40 ;;; Copyright © 2020 Jesse Dowell <jessedowell@gmail.com>
41 ;;; Copyright © 2020 Hamzeh Nasajpour <h.nasajpour@pantherx.org>
42 ;;; Copyright © 2020, 2022 Michael Rohleder <mike@rohleder.de>
43 ;;; Copyright © 2021 Hartmut Goebel <h.goebel@crazy-compilers.com>
44 ;;; Copyright © 2021 Justin Veilleux <terramorpha@cock.li>
45 ;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
46 ;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
47 ;;; Copyright © 2021 Milkey Mouse <milkeymouse@meme.institute>
48 ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
49 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
50 ;;; Copyright © 2022 Simon South <simon@simonsouth.net>
51 ;;; Copyright © 2022 Pierre Langlois <pierre.langlois@gmx.com>
52 ;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
53 ;;; Copyright © 2022 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
54 ;;;
55 ;;; This file is part of GNU Guix.
56 ;;;
57 ;;; GNU Guix is free software; you can redistribute it and/or modify it
58 ;;; under the terms of the GNU General Public License as published by
59 ;;; the Free Software Foundation; either version 3 of the License, or (at
60 ;;; your option) any later version.
61 ;;;
62 ;;; GNU Guix is distributed in the hope that it will be useful, but
63 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
64 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
65 ;;; GNU General Public License for more details.
66 ;;;
67 ;;; You should have received a copy of the GNU General Public License
68 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
69
70 (define-module (gnu packages networking)
71 #:use-module ((guix licenses) #:prefix license:)
72 #:use-module (guix packages)
73 #:use-module (guix download)
74 #:use-module (guix gexp)
75 #:use-module (guix git-download)
76 #:use-module (guix build-system cmake)
77 #:use-module (guix build-system glib-or-gtk)
78 #:use-module (guix build-system gnu)
79 #:use-module (guix build-system go)
80 #:use-module (guix build-system meson)
81 #:use-module (guix build-system perl)
82 #:use-module (guix build-system python)
83 #:use-module (guix build-system trivial)
84 #:use-module (guix utils)
85 #:use-module (gnu packages)
86 #:use-module (gnu packages admin)
87 #:use-module (gnu packages adns)
88 #:use-module (gnu packages algebra)
89 #:use-module (gnu packages audio)
90 #:use-module (gnu packages autogen)
91 #:use-module (gnu packages autotools)
92 #:use-module (gnu packages assembly)
93 #:use-module (gnu packages base)
94 #:use-module (gnu packages bash)
95 #:use-module (gnu packages bison)
96 #:use-module (gnu packages boost)
97 #:use-module (gnu packages check)
98 #:use-module (gnu packages code)
99 #:use-module (gnu packages compression)
100 #:use-module (gnu packages cpp)
101 #:use-module (gnu packages crypto)
102 #:use-module (gnu packages curl)
103 #:use-module (gnu packages cyrus-sasl)
104 #:use-module (gnu packages dejagnu)
105 #:use-module (gnu packages docbook)
106 #:use-module (gnu packages documentation)
107 #:use-module (gnu packages flex)
108 #:use-module (gnu packages freedesktop)
109 #:use-module (gnu packages gettext)
110 #:use-module (gnu packages glib)
111 #:use-module (gnu packages gnome)
112 #:use-module (gnu packages gnupg)
113 #:use-module (gnu packages golang)
114 #:use-module (gnu packages graphviz)
115 #:use-module (gnu packages gstreamer)
116 #:use-module (gnu packages gtk)
117 #:use-module (gnu packages image)
118 #:use-module (gnu packages libevent)
119 #:use-module (gnu packages libidn)
120 #:use-module (gnu packages libusb)
121 #:use-module (gnu packages linux)
122 #:use-module (gnu packages lua)
123 #:use-module (gnu packages kerberos)
124 #:use-module (gnu packages mpi)
125 #:use-module (gnu packages ncurses)
126 #:use-module (gnu packages nettle)
127 #:use-module (gnu packages openldap)
128 #:use-module (gnu packages onc-rpc)
129 #:use-module (gnu packages password-utils)
130 #:use-module (gnu packages pcre)
131 #:use-module (gnu packages perl)
132 #:use-module (gnu packages perl-check)
133 #:use-module (gnu packages pkg-config)
134 #:use-module (gnu packages polkit)
135 #:use-module (gnu packages pretty-print)
136 #:use-module (gnu packages protobuf)
137 #:use-module (gnu packages pulseaudio)
138 #:use-module (gnu packages python)
139 #:use-module (gnu packages python-check)
140 #:use-module (gnu packages python-crypto)
141 #:use-module (gnu packages python-web)
142 #:use-module (gnu packages python-xyz)
143 #:use-module (gnu packages qt)
144 #:use-module (gnu packages readline)
145 #:use-module (gnu packages ruby)
146 #:use-module (gnu packages samba)
147 #:use-module (gnu packages serialization)
148 #:use-module (gnu packages shells)
149 #:use-module (gnu packages sphinx)
150 #:use-module (gnu packages sqlite)
151 #:use-module (gnu packages ssh)
152 #:use-module (gnu packages tcl)
153 #:use-module (gnu packages textutils)
154 #:use-module (gnu packages tls)
155 #:use-module (gnu packages valgrind)
156 #:use-module (gnu packages web)
157 #:use-module (gnu packages wxwidgets)
158 #:use-module (gnu packages xml)
159 #:use-module (ice-9 match))
160
161 (define-public usrsctp
162 (package
163 (name "usrsctp")
164 (version "0.9.5.0")
165 (source
166 (origin
167 (method git-fetch)
168 (uri
169 (git-reference
170 (url "https://github.com/sctplab/usrsctp")
171 (commit version)))
172 (file-name (git-file-name name version))
173 (sha256
174 (base32 "10ndzkip8blgkw572n3dicl6mgjaa7kygwn3vls80liq92vf1sa9"))))
175 (build-system gnu-build-system)
176 (native-inputs
177 (list autoconf
178 automake
179 libtool
180 pkg-config
181 python-wrapper
182 which))
183 (home-page "https://github.com/sctplab/usrsctp/")
184 (synopsis "SCTP user-land implementation")
185 (description "UsrSCTP is a portable SCTP userland stack. SCTP is a message
186 oriented, reliable transport protocol with direct support for multihoming that
187 runs on top of IP or UDP, and supports both v4 and v6 versions.")
188 (license license:bsd-3)))
189
190 (define-public arp-scan
191 (package
192 (name "arp-scan")
193 (version "1.9.7")
194 (source
195 (origin
196 (method git-fetch)
197 (uri
198 (git-reference
199 (url "https://github.com/royhills/arp-scan/")
200 (commit version)))
201 (file-name (git-file-name name version))
202 (sha256
203 (base32 "1mf7a4f9vzvnkiavc87aqyciswggsb4fpy7j05jxnvjyyxv3l7gp"))))
204 (build-system gnu-build-system)
205 (inputs
206 (list libpcap))
207 (native-inputs
208 (list autoconf automake libtool pkg-config))
209 (propagated-inputs
210 (list perl-libwww))
211 (home-page "https://github.com/royhills/arp-scan")
212 (synopsis "Discover and fingerprint IP hosts on the local network using ARP")
213 (description "Arp-scan is a tool that uses ARP to discover and fingerprint
214 IP hosts on the local network.")
215 (license license:gpl3+)))
216
217 (define-public axel
218 (package
219 (name "axel")
220 (version "2.17.11")
221 (source
222 (origin
223 (method url-fetch)
224 (uri (string-append "https://github.com/axel-download-accelerator/axel/"
225 "releases/download/v" version "/"
226 "axel-" version ".tar.xz"))
227 (sha256
228 (base32 "1yfcsi0zv07bvhj8klgna3y1ycc4jhaija1b3rzzv0i4d4c2q2sq"))))
229 (build-system gnu-build-system)
230 (native-inputs
231 (list gettext-minimal pkg-config))
232 (inputs
233 (list libressl))
234 (home-page "https://github.com/axel-download-accelerator/axel")
235 (synopsis "Light command line download accelerator")
236 (description
237 "Axel tries to accelerate the download process by using multiple
238 connections per file, and can also balance the load between different
239 servers. It tries to be as light as possible, so it might be useful
240 on byte-critical systems. It supports HTTP, HTTPS, FTP and FTPS
241 protocols.")
242 (license license:gpl2+)))
243
244 (define-public lcrq
245 (package
246 (name "lcrq")
247 (version "0.0.1")
248 (source (origin
249 (method git-fetch)
250 (uri (git-reference
251 (url "https://codeberg.org/librecast/lcrq")
252 (commit (string-append "v" version))))
253 (file-name (git-file-name name version))
254 (sha256
255 (base32
256 "0jf7x3zcdbz5b99qz7liw4i90hn9s457zr82n0r8g9qsi81a1d8c"))))
257 (build-system gnu-build-system)
258 (arguments
259 `(#:parallel-tests? #f
260 #:make-flags (let ((target ,(%current-target-system)))
261 (list ,(string-append "CC="
262 (cc-for-target))
263 (string-append "PREFIX="
264 (assoc-ref %outputs "out"))))
265 #:test-target "test"))
266 (home-page "https://librecast.net/lcrq.html")
267 (synopsis "librecast RaptorQ library")
268 (description
269 "C library implementation of RaptorQ Forward Error Correction for
270 Librecast. RFC6330 (IETF) describes the RaptorQ proposed standard, which LCRQ
271 more-or-less follows. The primary focus has been on building a fast, simple
272 and dependency-free FEC implementation for use with Librecast, and not on
273 strict standards compliance. The code does, however, fairly closely follow
274 the RFC.")
275 (license (list license:gpl2 license:gpl3))))
276
277 (define-public lcsync
278 (package
279 (name "lcsync")
280 (version "0.0.1")
281 (source (origin
282 (method git-fetch)
283 (uri (git-reference
284 (url "https://codeberg.org/librecast/lcsync")
285 (commit (string-append "v" version))))
286 (file-name (git-file-name name version))
287 (sha256
288 (base32
289 "0s038b4xg9nlzhrganzjyfvc6n6cgd6kilnpik4axp62j2n5q11q"))))
290 (build-system gnu-build-system)
291 (arguments
292 `(#:parallel-tests? #f
293 #:make-flags (let ((target ,(%current-target-system)))
294 (list ,(string-append "CC="
295 (cc-for-target))
296 ;; avoid running setcap in the install process
297 "SETCAP_PROGRAM=true"
298 (string-append "prefix="
299 (assoc-ref %outputs "out"))))
300 #:test-target "test"
301 #:phases (modify-phases %standard-phases
302 (delete 'configure) ;no configure script
303 (add-before 'check 'remove-network-tests
304 (lambda _
305 ;; these tests require networking
306 (delete-file "./test/0000-0027.c")
307 (delete-file "./test/0000-0049.c")
308 (delete-file "./test/0000-0074.c")))
309 (add-after 'unpack 'remove-immintrin.h
310 (lambda* (#:key inputs #:allow-other-keys)
311 (substitute* "Makefile"
312 (("CFLAGS :=")
313 (string-append "CFLAGS := -I" (search-input-directory
314 inputs "include/simde"))))
315 (substitute* (find-files "src")
316 ((".*immintrin\\.h.*")
317 (string-append "#include <simde-features.h>\n"
318 "#include <x86/ssse3.h>\n"))
319 (("__m128i") "simde__m128i"))))
320 (add-before 'build 'add-library-paths
321 (lambda* (#:key inputs #:allow-other-keys)
322 (let* ((librecast (assoc-ref inputs "librecast")))
323 (substitute* (list "./src/Makefile" "./test/Makefile")
324 (("-llibrecast")
325 (string-append "-L" librecast "/lib -llibrecast")))))))))
326 (inputs (list librecast libsodium))
327 (native-inputs (list simde))
328 (home-page "https://librecast.net/lcsync.html")
329 (synopsis "librecast file and data syncing tool")
330 (description
331 "lcsync is a tool to sync files over IPv6 multicast or the
332 local filesystem. It splits the file into blocks, hashes them, and compares
333 them in order to efficiently transfer a minimal amount of data.")
334 (license (list license:gpl2 license:gpl3))))
335
336 ;; This package does not have a release yet.
337 ;; But this is required to provide a feature in PipeWire.
338 (define-public libcamera
339 (package
340 (name "libcamera")
341 (version "0.0.0-1")
342 (source
343 (origin
344 (method git-fetch)
345 (uri
346 (git-reference
347 (url "git://linuxtv.org/libcamera.git")
348 (commit "10be87fa7c3bfb097b21ca3d469c67e40c333f7e")))
349 (file-name
350 (git-file-name name version))
351 (sha256
352 (base32 "0qgirhlalmk9f9v6piwz50dr2asb64rvbb9zb1vix7y9zh7m11by"))))
353 (build-system meson-build-system)
354 (outputs '("out" "doc"))
355 (arguments
356 `(#:glib-or-gtk? #t ; To wrap binaries and/or compile schemas
357 #:configure-flags
358 (list
359 "-Dv4l2=true"
360 ;; XXX: Requires bundled pybind11.
361 "-Dpycamera=disabled")
362 #:phases
363 (modify-phases %standard-phases
364 (add-after 'unpack 'disable-failing-tests
365 (lambda _
366 (substitute* "test/meson.build"
367 (("\\['list-cameras', 'list-cameras.cpp'\\],")
368 "")
369 ;; TODO: Why do the gstreamer tests fail.
370 (("^subdir\\('gstreamer'\\)")
371 ""))))
372 (add-after 'install 'move-doc
373 (lambda* (#:key outputs #:allow-other-keys)
374 (let* ((out (assoc-ref outputs "out"))
375 (doc (assoc-ref outputs "doc")))
376 (mkdir-p (string-append doc "/share"))
377 (rename-file
378 (string-append out "/share/doc")
379 (string-append doc "/share/doc"))))))))
380 (native-inputs
381 (list graphviz ;for 'dot'
382 doxygen
383 pkg-config
384 python-wrapper
385 python-sphinx
386 python-pyyaml))
387 (inputs
388 (list boost
389 eudev
390 glib
391 gst-plugins-base
392 gnutls
393 libtiff
394 libyaml
395 openssl
396 python-jinja2
397 python-ply
398 qtbase-5))
399 (synopsis "Camera stack and framework")
400 (description "LibCamera is a complex camera support library for GNU+Linux,
401 Android, and ChromeOS.")
402 (home-page "https://libcamera.org/")
403 (license license:lgpl2.1+)))
404
405 (define-public libnice
406 ;; The latest release is old and randomly fails tests with GStreamer 1.18.5,
407 ;; such as: "test-bind: ../libnice-0.1.18/stun/tests/test-bind.c:234:
408 ;; bad_responses: Assertion `len >= 20' failed"
409 (let ((revision "0")
410 (commit "47a96334448838c43d7e72f4ef51b317befbfae1"))
411 (package
412 (name "libnice")
413 (version (git-version "0.1.18" revision commit))
414 (source
415 (origin
416 (method git-fetch)
417 (uri (git-reference
418 (url "https://gitlab.freedesktop.org/libnice/libnice")
419 (commit commit)))
420 (file-name (git-file-name name version))
421 (sha256
422 (base32
423 "19ypjazslmsb9vqs2wyyzvi72h5jbn16dbng7pxh485djdrmgcg4"))))
424 (build-system meson-build-system)
425 (outputs '("out" "doc"))
426 (arguments
427 `(#:glib-or-gtk? #t ; To wrap binaries and/or compile schemas
428 #:configure-flags
429 (list
430 "-Dgtk_doc=enabled")
431 #:phases
432 (modify-phases %standard-phases
433 (add-after 'unpack 'disable-failing-tests
434 (lambda _
435 (substitute* "tests/meson.build"
436 ;; ‘test-set-port-range.c:66:main: assertion failed:
437 ;; (nice_agent_gather_candidates (agent, stream1))’
438 (("'test-set-port-range'" all)
439 (string-append "# " all))
440 ;; The following test is disabled as it fails in a
441 ;; nondeterministic fashion (see:
442 ;; https://gitlab.freedesktop.org/libnice/libnice/-/issues/151).
443 (("'test-bsd'" all)
444 (string-append "# " all)))
445 (substitute* "stun/tests/meson.build"
446 ;; test-bind.c:234: bad_responses: Assertion `len >= 20'
447 ;; failed (see:
448 ;; https://gitlab.freedesktop.org/libnice/libnice/-/issues/150).
449 (("'bind', ")
450 ""))))
451 (add-after 'install 'move-docs
452 (lambda* (#:key outputs #:allow-other-keys)
453 (let* ((out (assoc-ref outputs "out"))
454 (doc (assoc-ref outputs "doc")))
455 (mkdir-p (string-append doc "/share"))
456 (rename-file
457 (string-append out "/share/gtk-doc")
458 (string-append doc "/share/gtk-doc"))))))))
459 (native-inputs
460 `(("glib:bin" ,glib "bin")
461 ("gobject-introspection" ,gobject-introspection)
462 ("graphviz" ,graphviz)
463 ("gtk-doc" ,gtk-doc/stable)
464 ("pkg-config" ,pkg-config)))
465 (inputs
466 (list gstreamer gst-plugins-base libnsl))
467 (propagated-inputs
468 (list glib glib-networking gnutls))
469 (synopsis "GLib ICE implementation")
470 (description "LibNice is a library that implements the Interactive
471 Connectivity Establishment (ICE) standard (RFC 5245 & RFC 8445). It provides a
472 GLib-based library, libnice, as well as GStreamer elements to use it.")
473 (home-page "https://libnice.freedesktop.org/")
474 (license
475 ;; This project is dual-licensed.
476 (list
477 license:lgpl2.1+
478 license:mpl1.1)))))
479
480 (define-public librecast
481 (package
482 (name "librecast")
483 (version "0.5.1")
484 (source (origin
485 (method git-fetch)
486 (uri (git-reference
487 (url "https://codeberg.org/librecast/librecast")
488 (commit (string-append "v" version))))
489 (file-name (git-file-name name version))
490 (sha256
491 (base32
492 "1zzdxawzsj0lxyxm8c2wdqx3b633f8ybvlg6szs4v0y42xg4a829"))))
493 (build-system gnu-build-system)
494 (arguments
495 `(#:parallel-tests? #f
496 #:make-flags (let ((target ,(%current-target-system)))
497 (list ,(string-append "CC="
498 (cc-for-target))
499 (string-append "PREFIX="
500 (assoc-ref %outputs "out"))))
501 #:test-target "test"
502 #:phases (modify-phases %standard-phases
503 (add-before 'check 'remove-network-tests
504 (lambda _
505 ;; these tests require networking
506 (delete-file "./test/0000-0010.c")
507 (delete-file "./test/0000-0012.c")
508 (delete-file "./test/0000-0013.c")
509 (delete-file "./test/0000-0014.c")
510 (delete-file "./test/0000-0015.c")
511 (delete-file "./test/0000-0016.c")
512 (delete-file "./test/0000-0018.c")
513 (delete-file "./test/0000-0019.c")
514 (delete-file "./test/0000-0021.c")
515 (delete-file "./test/0000-0028.c")
516 (delete-file "./test/0000-0036.c")
517 (delete-file "./test/0000-0037.c")
518 (delete-file "./test/0000-0038.c")
519 (delete-file "./test/0000-0039.c")
520 (delete-file "./test/0000-0040.c"))))))
521 (inputs (list libsodium lcrq))
522 (synopsis "librecast IPv6 multicast library")
523 (description "Librecast is a C library which supports IPv6 multicast
524 networking.")
525 (home-page "https://librecast.net/librecast.html")
526 (license (list license:gpl2 license:gpl3))))
527
528 (define-public rtmpdump
529 ;; There are no tags in the repository, and the project is unlikely to
530 ;; make new releases. Take a recent commit for multiple security fixes
531 ;; as well as GnuTLS compatibility.
532 (let ((commit "c5f04a58fc2aeea6296ca7c44ee4734c18401aa3")
533 (revision "0")
534 (version "2.4")) ;as mentioned in README and man pages
535 (package
536 (name "rtmpdump")
537 (version (git-version version revision commit))
538 (source
539 (origin
540 (method git-fetch)
541 (uri (git-reference
542 (url "https://git.ffmpeg.org/rtmpdump")
543 (commit commit)))
544 (file-name (git-file-name name version))
545 (sha256
546 (base32 "07ias612jgmxpam9h418kvlag32da914jsnjsfyafklpnh8gdzjb"))))
547 (build-system gnu-build-system)
548 (arguments
549 `(#:tests? #f ; no tests
550 #:make-flags
551 (list
552 ;; The ‘validate-runpath’ phase fails to find librtmp.so.0.
553 (string-append "LDFLAGS=-Wl,-rpath="
554 (assoc-ref %outputs "out") "/lib")
555 (string-append "prefix=" (assoc-ref %outputs "out")))
556 #:phases
557 (modify-phases %standard-phases
558 (add-after 'unpack 'omit-static-library
559 (lambda _
560 (substitute* "librtmp/Makefile"
561 (("cp librtmp\\.a .*") ; don't install it
562 "")
563 (("librtmp\\.a ") ; don't build it
564 ""))
565 #t))
566 (add-after 'unpack 'prefer-gnutls
567 (lambda _
568 (substitute* '("Makefile" "librtmp/Makefile")
569 (("CRYPTO=OPENSSL")
570 "#CRYPTO=OPENSSL")
571 (("#CRYPTO=GNUTLS")
572 "CRYPTO=GNUTLS"))))
573 (delete 'configure))))
574 (inputs
575 (list gnutls zlib))
576 (synopsis "Tools and library for handling RTMP streams")
577 (description "RTMPdump is a toolkit for RTMP streams. All forms of RTMP are
578 supported, including rtmp://, rtmpt://, rtmpe://, rtmpte://, and rtmps://.")
579 (home-page "https://rtmpdump.mplayerhq.hu/")
580 (license
581 (list
582 ;; Library.
583 license:lgpl2.1+
584 ;; Others.
585 license:gpl2+)))))
586
587 (define-public slurm-monitor
588 (package
589 (name "slurm-monitor")
590 (version "0.4.3")
591 (source
592 (origin
593 (method git-fetch)
594 (uri
595 (git-reference
596 (url "https://github.com/mattthias/slurm")
597 (commit (string-append "upstream/" version))))
598 (file-name (git-file-name name version))
599 (sha256
600 (base32 "1n6pgrcs8gwrcq5fch1q3yk3jipjwrf21s9a13fbjrl903g5zzv9"))))
601 (build-system cmake-build-system)
602 (arguments `(#:tests? #f)) ;no tests
603 (inputs (list ncurses))
604 (synopsis "Network load monitor")
605 (description
606 "Slurm is a network load monitor. It shows real-time traffic statistics
607 from any network device in any of three ASCII graph formats.")
608 (home-page "https://github.com/mattthias/slurm")
609 (license license:gpl2)))
610
611 (define-public srt
612 (package
613 (name "srt")
614 (version "1.4.4")
615 (source
616 (origin
617 (method git-fetch)
618 (uri
619 (git-reference
620 (url "https://github.com/Haivision/srt")
621 (commit (string-append "v" version))))
622 (file-name (git-file-name name version))
623 (sha256
624 (base32 "1zr1l9zkai7rpw9cn5j9h4zrv08hgpfmwscwyscf2j4cgwf0rxrr"))))
625 (build-system cmake-build-system)
626 (arguments
627 `(#:configure-flags
628 (list
629 (string-append "-DCMAKE_INSTALL_BINDIR="
630 (assoc-ref %outputs "out") "/bin")
631 "-DCMAKE_INSTALL_INCLUDEDIR=include"
632 "-DENABLE_STATIC=OFF"
633 "-DENABLE_UNITTESTS=ON")))
634 (native-inputs
635 (list googletest pkg-config tcl))
636 (propagated-inputs
637 (list openssl))
638 (synopsis "Secure Reliable Transport")
639 (description "SRT is a transport technology that optimizes streaming
640 performance across unpredictable networks, such as the Internet.")
641 (home-page "https://www.srtalliance.org/")
642 (license license:mpl2.0)))
643
644 (define-public lksctp-tools
645 (package
646 (name "lksctp-tools")
647 (version "1.0.19")
648 (source
649 (origin
650 (method git-fetch)
651 (uri
652 (git-reference
653 (url "https://github.com/sctp/lksctp-tools")
654 (commit (string-append "v" version))))
655 (file-name (git-file-name name version))
656 (sha256
657 (base32 "1jfq58j365mlgssavyw5wcal42n0xjkr40vmj9b8w265wgs28j20"))))
658 (build-system gnu-build-system)
659 (native-inputs
660 (list autoconf automake libtool pkg-config))
661 (synopsis
662 "@acronym{SCTP, Stream Control Transmission Protocol} helpers for Linux")
663 (description
664 "The lksctp-tools project provides a user-space library for @acronym{SCTP,
665 the Stream Control Transmission Protocol} (@file{libsctp}) and C language header
666 files (@file{netinet/sctp.h}) for accessing SCTP-specific @acronym{APIs,
667 application programming interfaces} not provided by the standard sockets.
668 It also includes some SCTP-related helper utilities.")
669 (home-page "http://lksctp.sourceforge.net/")
670 (license
671 (list
672 ;; Library.
673 license:lgpl2.1+
674 ;; Others.
675 license:gpl2+))))
676
677 (define-public python-pysctp
678 (package
679 (name "python-pysctp")
680 (version "0.6.1")
681 (source
682 (origin
683 (method url-fetch)
684 (uri (pypi-uri "pysctp" version))
685 (sha256
686 (base32 "14h2qlmfi24bizhvvqkfqfa78pzm3911ibrzy9k94i97xy1978dy"))))
687 (build-system python-build-system)
688 (inputs
689 (list lksctp-tools))
690 (arguments
691 `(#:tests? #f ;; tests require network
692 #:phases
693 (modify-phases %standard-phases
694 (add-after 'unpack 'patch-setup.py
695 (lambda _
696 (substitute* "setup.py"
697 (("include_dirs\\s*=.*")
698 (string-append "include_dirs = ['.'] + '"
699 (getenv "C_INCLUDE_PATH") "'.split(':'),"))
700 (("library_dirs\\s*=.*")
701 (string-append "library_dirs = '"
702 (getenv "LIBRARY_PATH") "'.split(':'),"))))))))
703 (home-page "https://github.com/p1sec/pysctp")
704 (synopsis "Python module for the SCTP protocol stack and library")
705 (description "@code{pysctp} implements the SCTP socket API. You need a
706 SCTP-aware kernel (most are).")
707 (license license:lgpl2.1+)))
708
709 (define-public kismet
710 (package
711 (name "kismet")
712 (version "2022-02")
713 (source (origin
714 (method git-fetch)
715 (uri (git-reference
716 (url "https://www.kismetwireless.net/git/kismet.git")
717 (commit (string-append "kismet-" version "-R1"))))
718 (file-name (git-file-name name version))
719 (patches (search-patches "kismet-unbundle-boost.patch"))
720 (modules '((guix build utils)))
721 (snippet '(begin
722 ;; Drop bundled libraries.
723 (delete-file-recursively "boost")))
724 (sha256
725 (base32
726 "01q86hrgpai433sc65dlnqy91qd26w5dwyp37adszqxfb6d2an1r"))))
727 (build-system gnu-build-system)
728 (arguments
729 (list #:tests? #f ;no test suite
730 #:phases
731 #~(modify-phases %standard-phases
732 (add-after 'unpack 'fix-install
733 (lambda* _
734 (substitute* "Makefile.in"
735 (("-o \\$\\(INSTUSR\\) -g \\$\\(SUIDGROUP\\)") "")
736 (("-o \\$\\(INSTUSR\\) -g \\$\\(INSTGRP\\)") "")))))))
737 (home-page "https://www.kismetwireless.net/")
738 (native-inputs (list perl pkg-config python python-2))
739 (inputs (list boost
740 libusb
741 libpcap
742 libwebsockets
743 openssl
744 protobuf
745 protobuf-c
746 sqlite
747 zlib))
748 (synopsis "Wireless network and device detector")
749 (description
750 "This package provides a wireless network and device detector, sniffer,
751 wardriving tool, and WIDS (wireless intrusion detection) framework. Kismet
752 works with Wi-Fi interfaces, Bluetooth interfaces, some SDR
753 (software defined radio) hardware like the RTLSDR, and other specialized
754 capture hardware")
755 (license license:gpl2+)))
756
757 (define-public knockd
758 (package
759 (name "knockd")
760 (version "0.8")
761 (source (origin
762 (method url-fetch)
763 (uri (string-append "https://www.zeroflux.org/proj/knock/files/knock-"
764 version ".tar.gz"))
765 (sha256
766 (base32
767 "1iv9h7a9l81ilbld3pi0dmzkizjss1755x1x3v5jxsi4asb8r3b9"))))
768 (build-system gnu-build-system)
769 (arguments
770 `(#:configure-flags
771 (list (string-append "--docdir=" (assoc-ref %outputs "out")
772 "/share/doc/" ,name "-" ,version))))
773 (inputs
774 (list libpcap))
775 (home-page "https://www.zeroflux.org/projects/knock")
776 (synopsis "Small port-knock daemon")
777 (description "@command{knockd} is a port-knock daemon. It listens to all traffic on
778 an ethernet or PPP interface, looking for special \"knock\" sequences of @dfn{port-hits}
779 (UDP/TCP packets sent to a server port). This port need not be open, since knockd listens
780 at the link-layer level.")
781 (license license:gpl2+)))
782
783 (define-public nng
784 (package
785 (name "nng")
786 (version "1.3.2")
787 (source
788 (origin
789 (method git-fetch)
790 (uri (git-reference
791 (url "https://github.com/nanomsg/nng")
792 (commit (string-append "v" version))))
793 (file-name (git-file-name name version))
794 (sha256
795 (base32 "0a4jg8alh2h0rw6fb4dqpvk4hgl2a7h76mq7g34fy89qh9sgg1a4"))))
796 (build-system cmake-build-system)
797 (arguments
798 `(#:configure-flags
799 (list "-DNNG_ENABLE_COVERAGE=ON"
800 "-DNNG_ENABLE_TLS=ON"
801 "-DBUILD_SHARED_LIBS=ON")
802 #:phases
803 (modify-phases %standard-phases
804 (add-after 'unpack 'disable-failing-tests
805 (lambda _
806 ;; These tests require network access.
807 (substitute* "tests/CMakeLists.txt"
808 (("add_nng_test1\\(httpclient 60 NNG_SUPP_HTTP\\)") "")
809 (("add_nng_test1\\(resolv 10 NNG_STATIC_LIB\\)") "")
810 (("add_nng_test\\(tls 60\\)") ""))
811 #t)))))
812 (native-inputs
813 `(("ksh" ,oksh)))
814 (inputs
815 `(("mbedtls" ,mbedtls-apache)))
816 (synopsis "Lightweight messaging library")
817 (description "NNG project is a rewrite of the scalability protocols library
818 known as libnanomsg, and adds significant new capabilities, while retaining
819 compatibility with the original. It is a lightweight, broker-less library,
820 offering a simple API to solve common recurring messaging problems, such as
821 publish/subscribe, RPC-style request/reply, or service discovery.")
822 (home-page "https://nng.nanomsg.org/")
823 (license license:expat)))
824
825 (define-public nanomsg
826 (package
827 (name "nanomsg")
828 (version "1.1.5")
829 (source
830 (origin
831 (method git-fetch)
832 (uri
833 (git-reference
834 (url "https://github.com/nanomsg/nanomsg")
835 (commit version)))
836 (file-name (git-file-name name version))
837 (sha256
838 (base32 "01ddfzjlkf2dgijrmm3j3j8irccsnbgfvjcnwslsfaxnrmrq5s64"))))
839 (build-system cmake-build-system)
840 (outputs '("out" "doc"))
841 (arguments
842 `(#:configure-flags
843 (list
844 "-DNN_ENABLE_COVERAGE=ON")
845 #:phases
846 (modify-phases %standard-phases
847 (add-after 'install 'move-docs
848 (lambda* (#:key outputs #:allow-other-keys)
849 (let* ((out (assoc-ref outputs "out"))
850 (doc (assoc-ref outputs "doc")))
851 (mkdir-p (string-append doc "/share/doc"))
852 (rename-file
853 (string-append out "/share/doc/nanomsg")
854 (string-append doc "/share/doc/nanomsg"))
855 #t))))))
856 (native-inputs
857 `(("asciidoctor" ,ruby-asciidoctor)
858 ("pkg-config" ,pkg-config)))
859 (synopsis "Scalable socket library")
860 (description "Nanomsg is a socket library that provides several common
861 communication patterns. It aims to make the networking layer fast, scalable,
862 and easy to use. Implemented in C, it works on a wide range of operating
863 systems with no further dependencies.")
864 (home-page "https://nanomsg.org/")
865 (license (license:non-copyleft "file:///COPYING"))))
866
867 (define-public blueman
868 (package
869 (name "blueman")
870 (version "2.3.2")
871 (source
872 (origin
873 (method url-fetch)
874 (uri (string-append "https://github.com/blueman-project/blueman/releases"
875 "/download/" version "/blueman-" version ".tar.xz"))
876 (sha256
877 (base32 "1bjh0cx9j2akygiqyxm7g0q74jyx9hpgf186gv3m31vks5zpvkw4"))))
878 (build-system glib-or-gtk-build-system)
879 (arguments
880 `(#:configure-flags (list "--enable-polkit"
881 "--without-systemdsystemunitdir" ; Not required
882 "--without-systemduserunitdir") ; Not required
883 #:phases
884 (modify-phases %standard-phases
885 ;; Python references are not being patched in patch-phase of build,
886 ;; despite using python-wrapper as input. So we patch them manually.
887 (add-after 'unpack 'patch-python-references
888 (lambda* (#:key inputs #:allow-other-keys)
889 (with-directory-excursion "apps"
890 (substitute* '("blueman-adapters.in" "blueman-applet.in"
891 "blueman-manager.in" "blueman-mechanism.in"
892 "blueman-rfcomm-watcher.in" "blueman-sendto.in"
893 "blueman-services.in" "blueman-tray.in")
894 (("@PYTHON@")
895 (search-input-file inputs
896 (string-append
897 "/bin/python"
898 ,(version-major+minor
899 (package-version python)))))))))
900 ;; Fix loading of external programs.
901 (add-after 'unpack 'patch-external-programs
902 (lambda* (#:key inputs #:allow-other-keys)
903 (substitute* '("blueman/main/NetConf.py"
904 "blueman/main/PPPConnection.py")
905 (("/usr/sbin/bluetoothd")
906 (search-input-directory inputs
907 "/libexec/bluetooth/bluetoothd"))
908 (("/sbin/iptables")
909 (search-input-file inputs "/sbin/iptables"))
910 (("/usr/sbin/pppd")
911 (search-input-file inputs "/sbin/pppd")))))
912 ;; Fix loading of pulseaudio libraries.
913 (add-after 'unpack 'patch-pulseaudio-libraries
914 (lambda* (#:key inputs #:allow-other-keys)
915 (let* ((pulseaudio (assoc-ref inputs "pulseaudio"))
916 (pulse (string-append pulseaudio "/lib/libpulse.so.0"))
917 (pulse-glib (string-append pulseaudio
918 "/lib/libpulse-mainloop-glib.so.0")))
919 (with-directory-excursion "blueman/main"
920 (substitute* "PulseAudioUtils.py"
921 (("libpulse.so.0") pulse)
922 (("libpulse-mainloop-glib.so.0") pulse-glib))))))
923 ;; Fix running of blueman programs.
924 (add-after 'glib-or-gtk-wrap 'wrap-blueman-progs
925 (lambda* (#:key outputs #:allow-other-keys)
926 (let* ((out (assoc-ref outputs "out"))
927 (bin (string-append out "/bin/blueman-"))
928 (libexec (string-append out "/libexec/blueman-"))
929 (lib (string-append out "/lib/python"
930 ,(version-major+minor
931 (package-version python))
932 "/site-packages")))
933 (for-each
934 (lambda (program)
935 (wrap-program program
936 `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH") ,lib))
937 `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))
938 (append
939 (map (lambda (prog) (string-append bin prog))
940 '("adapters" "applet" "manager"
941 "sendto" "services" "tray"))
942 (map (lambda (prog) (string-append libexec prog))
943 '("mechanism" "rfcomm-watcher"))))))))))
944 (native-inputs
945 (list python-cython
946 `(,glib "bin")
947 gobject-introspection
948 `(,gtk+ "bin")
949 intltool
950 pkg-config))
951 (inputs
952 (list bluez
953 dbus
954 librsvg
955 glib
956 gtk+
957 iproute
958 iptables
959 net-tools
960 pango
961 polkit
962 ppp
963 pulseaudio
964 python-pycairo
965 python-pygobject
966 python-wrapper
967 libappindicator
968 network-manager))
969 (synopsis "GTK+ Bluetooth manager")
970 (description "Blueman is a Bluetooth management utility using the Bluez
971 D-Bus backend. It is designed to be easy to use for most common Bluetooth
972 tasks.")
973 (home-page "https://github.com/blueman-project/blueman")
974 (license license:gpl3+)))
975
976 ;; The gnu.org ‘home’ for this GNU project is a directory listing with 1.6.0 as
977 ;; the latest version. The author's git repository, mentioned in the 1.6.0
978 ;; README and otherwise legit-looking, contains a proper 1.7.0 release tarball
979 ;; with many OUI updates. Use it, even though it's also several years old now.
980 (define-public macchanger
981 (package
982 (name "macchanger")
983 (version "1.7.0")
984 (source
985 (origin
986 (method url-fetch)
987 (uri (string-append "https://github.com/alobbs/macchanger/"
988 "releases/download/" version "/"
989 name "-" version ".tar.gz"))
990 (sha256
991 (base32 "1gs5m0jxyprdp00w2qkbnaqm3ilkjz0q1gqdg4nzdm8g4xy73qns"))))
992 (build-system gnu-build-system)
993 (home-page "https://www.gnu.org/software/macchanger/")
994 (synopsis "Viewing and manipulating MAC addresses of network interfaces")
995 (description "GNU MAC Changer is a utility for viewing and changing MAC
996 addresses of networking devices. New addresses may be set explicitly or
997 randomly. They can include MAC addresses of the same or other hardware vendors
998 or, more generally, MAC addresses of the same category of hardware.")
999 (license license:gpl2+)))
1000
1001 (define-public miredo
1002 (package
1003 (name "miredo")
1004 (version "1.2.6")
1005 (source (origin
1006 (method url-fetch)
1007 (uri (string-append "http://www.remlab.net/files/miredo/miredo-"
1008 version ".tar.xz"))
1009 (sha256
1010 (base32
1011 "0j9ilig570snbmj48230hf7ms8kvcwi2wblycqrmhh85lksd49ps"))))
1012 (build-system gnu-build-system)
1013 (arguments
1014 '(#:configure-flags
1015 (list "--localstatedir=/var")
1016 #:phases
1017 (modify-phases %standard-phases
1018 (add-after 'unpack 'do-not-create-/run
1019 (lambda _
1020 (substitute* (find-files "src" "Makefile.*")
1021 (("^.+install_sh.+/run.+$")
1022 "\ttrue"))
1023 #t))
1024 (add-after 'unpack 'patch-iproute2
1025 (lambda* (#:key inputs #:allow-other-keys)
1026 (let* ((iproute (assoc-ref inputs "iproute"))
1027 (ip (string-append iproute "/sbin/ip")))
1028 (substitute* "misc/client-hook.iproute"
1029 (("/sbin/ip") ip))
1030 #t)))
1031 ;; The checkconf test in src/ requires network access.
1032 (add-before
1033 'check 'disable-checkconf-test
1034 (lambda _
1035 (substitute* "src/Makefile"
1036 (("^TESTS = .*") "TESTS = \n"))
1037 #t)))))
1038 (inputs
1039 `(("iproute" ,iproute)))
1040 (home-page "https://www.remlab.net/miredo/")
1041 (synopsis "Teredo IPv6 tunneling software")
1042 (description
1043 "Miredo is an implementation (client, relay, server) of the Teredo
1044 specification, which provides IPv6 Internet connectivity to IPv6 enabled hosts
1045 residing in IPv4-only networks, even when they are behind a NAT device.")
1046 (license license:gpl2+)))
1047
1048 (define-public ndisc6
1049 (package
1050 (name "ndisc6")
1051 (version "1.0.6")
1052 (source (origin
1053 (method url-fetch)
1054 (uri (string-append "https://www.remlab.net/files/ndisc6/ndisc6-"
1055 version ".tar.bz2"))
1056 (sha256
1057 (base32
1058 "1yrw8maj1646d498ax8xi0jmzk80idrc5x0913x5rwg1kc7224x7"))))
1059 (build-system gnu-build-system)
1060 (home-page "https://www.remlab.net/ndisc6/")
1061 (synopsis "IPv6 diagnostic tools")
1062 (description
1063 "NDisc6 is a collection of tools for IPv6 networking diagnostics.
1064 It includes the following programs:
1065
1066 @itemize
1067 @item @command{ndisc6}: ICMPv6 Neighbor Discovery tool.
1068 @item @command{rdisc6}: ICMPv6 Router Discovery tool.
1069 @item @command{tcptraceroute6}: IPv6 traceroute over TCP.
1070 @item @command{traceroute6}: IPv6 traceroute over UDP.
1071 @item @command{rdnssd}: Recursive DNS Servers discovery daemon.
1072 @end itemize")
1073 ;; The user can choose version 2 or 3 of the GPL, not later versions.
1074 (license (list license:gpl2 license:gpl3))))
1075
1076 (define-public parprouted
1077 (package
1078 (name "parprouted")
1079 (version "0.7")
1080 (source (origin
1081 (method url-fetch)
1082 (uri (string-append "https://www.hazard.maks.net/parprouted/"
1083 "parprouted-" version ".tar.gz"))
1084 (sha256
1085 (base32
1086 "1z6yg28i0pv20jivyy82pxb38hsryj95inhj27bs6ja1bp4l6dnn"))))
1087 (build-system gnu-build-system)
1088 (arguments
1089 `(#:tests? #f ;no tests
1090 #:phases (modify-phases %standard-phases
1091 (add-after 'unpack 'insert-absolute-iproute-reference
1092 (lambda* (#:key inputs #:allow-other-keys)
1093 (let* ((iproute (assoc-ref inputs "iproute"))
1094 (ip (string-append iproute "/sbin/ip")))
1095 (substitute* "parprouted.c"
1096 (("/sbin/ip") ip))
1097 #t)))
1098 (replace 'configure
1099 (lambda* (#:key outputs #:allow-other-keys)
1100 (let* ((out (assoc-ref outputs "out"))
1101 (sbin (string-append out "/sbin"))
1102 (man8 (string-append out "/share/man/man8")))
1103 ;; No configure script; hijack the phase to make
1104 ;; the necessary arrangements.
1105 (setenv "CC" ,(cc-for-target))
1106 (for-each mkdir-p (list sbin man8))
1107 (substitute* "Makefile"
1108 (("/usr/local/sbin") sbin)
1109 (("/usr/local/man/man8") man8))
1110 #t))))))
1111 (inputs
1112 `(("iproute" ,iproute)))
1113 (home-page "https://www.hazard.maks.net/parprouted/")
1114 (synopsis "Proxy ARP requests to other interfaces")
1115 (description
1116 "@command{parprouted} is a daemon for transparent IP (Layer@tie{}3)
1117 proxy ARP bridging. Unlike standard bridging, proxy ARP bridging can bridge
1118 Ethernet networks behind wireless nodes. Normal layer@tie{}2 bridging does
1119 not work between wireless nodes because wireless does not know about MAC
1120 addresses used in the wired Ethernet networks. This daemon can also be
1121 useful for making transparent firewalls.")
1122 (license license:gpl2)))
1123
1124 (define-public pproxy
1125 (package
1126 (name "pproxy")
1127 (version "2.7.8")
1128 (source (origin
1129 (method url-fetch)
1130 (uri (pypi-uri "pproxy" version))
1131 (sha256
1132 (base32
1133 "1j4nv72i77i2j5nl9ymzpk4m98qih3naihfrqjghrc9b7g0krdzs"))))
1134 (build-system python-build-system)
1135 (arguments
1136 (list #:phases
1137 #~(modify-phases %standard-phases
1138 (replace 'check
1139 (lambda* (#:key tests? #:allow-other-keys)
1140 (when tests?
1141 (with-directory-excursion "tests"
1142 (for-each (lambda (file)
1143 (invoke "python" file))
1144 ;; XXX: The api_ tests require network access
1145 ;; so we only run the cipher tests for now.
1146 (find-files "." "^cipher_.*\\.py$")))))))))
1147 (inputs
1148 (list python-asyncssh
1149 python-daemon
1150 python-pycryptodome
1151 python-uvloop))
1152 (home-page "https://github.com/qwj/python-proxy")
1153 (synopsis "Multi-protocol network proxy")
1154 (description
1155 "@command{pproxy} is an asynchronuous proxy server implemented with
1156 Python 3 @code{asyncio}. Among the supported protocols are HTTP, SOCKS
1157 and SSH, and it can use both TCP and UDP as transport mechanisms.")
1158 (license license:expat)))
1159
1160 (define-public socat
1161 (package
1162 (name "socat")
1163 (version "1.7.4.1")
1164 (source (origin
1165 (method url-fetch)
1166 (uri (string-append
1167 "http://www.dest-unreach.org/socat/download/socat-"
1168 version ".tar.bz2"))
1169 (sha256
1170 (base32
1171 "1sbmqqvni3ss9wyay6ik5v81kxffkra80mh4ypgj74g82iba5b1z"))))
1172 (build-system gnu-build-system)
1173 (arguments '(#:tests? #f)) ; no test suite
1174 (inputs (list openssl))
1175 (home-page "http://www.dest-unreach.org/socat/")
1176 (synopsis
1177 "Open bidirectional communication channels from the command line")
1178 (description
1179 "socat is a relay for bidirectional data transfer between two independent
1180 data channels---files, pipes, devices, sockets, etc. It can create
1181 \"listening\" sockets, named pipes, and pseudo terminals.
1182
1183 socat can be used, for instance, as TCP port forwarder, as a shell interface
1184 to UNIX sockets, IPv6 relay, for redirecting TCP oriented programs to a serial
1185 line, to logically connect serial lines on different computers, or to
1186 establish a relatively secure environment (su and chroot) for running client
1187 or server shell scripts with network connections.")
1188 (license license:gpl2)))
1189
1190 (define-public mbuffer
1191 (package
1192 (name "mbuffer")
1193 (version "20220418")
1194 (source (origin
1195 (method url-fetch)
1196 (uri (string-append
1197 "http://www.maier-komor.de/software/mbuffer/mbuffer-"
1198 version ".tgz"))
1199 (sha256
1200 (base32
1201 "1iq0lcl350r7qja7yyv911aay26d0dd8n0h33mfl84gzypwh2n3f"))))
1202 (build-system gnu-build-system)
1203 (native-inputs
1204 (list which))
1205 (inputs (list openssl))
1206 (home-page "http://www.maier-komor.de/mbuffer.html")
1207 (synopsis
1208 "Swiss army knife for data stream buffering (network aware)")
1209 (description
1210 "mbuffer is a tool for buffering data streams with a large set of features:
1211
1212 @itemize
1213 @item direct support for TCP based network targets (IPv4 and IPv6)
1214 @item ability to send to multiple targets in parallel (distribution mode)
1215 @item support for multiple volumes
1216 @item I/O rate limitation
1217 @item high/low watermark based restart criteria
1218 @item configurable buffer size
1219 @item on the fly MD5 hash calculation
1220 @item highly efficient, multi-threaded implementation
1221 @end itemize")
1222 (license license:gpl3+)))
1223
1224 (define-public tcp-wrappers
1225 (package
1226 (name "tcp-wrappers")
1227 (version "7.6")
1228 (source (origin
1229 (method url-fetch)
1230 (uri (string-append
1231 "ftp://ftp.porcupine.org/pub/security/tcp_wrappers_"
1232 version ".tar.gz"))
1233 (sha256
1234 (base32
1235 "0p9ilj4v96q32klavx0phw9va21fjp8vpk11nbh6v2ppxnnxfhwm"))
1236 (modules '((guix build utils)))
1237 (snippet
1238 ;; 'sys_errlist' & co. are gone in glibc 2.33; work around it.
1239 '(substitute* "percent_m.c"
1240 (("sys_errlist\\[errno\\]")
1241 "strerror (errno)")
1242 (("errno < sys_nerr")
1243 "(1)")
1244 (("errno >= sys_nerr")
1245 "(0)")))))
1246 (build-system gnu-build-system)
1247 (arguments
1248 `(#:phases
1249 (modify-phases %standard-phases
1250 (delete 'configure) ; there is no configure script
1251 (delete 'check) ; there are no tests
1252 (replace 'build
1253 (lambda _
1254 (chmod "." #o755)
1255 ;; Upstream doesn't generate a shared library. So we have to do it.
1256 (setenv "CC" "gcc -fno-builtin -fPIC")
1257 (substitute* "Makefile"
1258 (("^(all[^\n]*)" line) (string-append line " libwrap.so\n
1259 libwrap.so: $(LIB_OBJ)\n
1260 \tgcc -shared $^ -o $@\n")))
1261 ;; Deal with some gcc breakage.
1262 (substitute* "percent_m.c"
1263 (("extern char .sys_errlist.*;") ""))
1264 (substitute* "scaffold.c"
1265 (("extern char .malloc.*;") ""))
1266 ;; This, believe it or not, is the recommended way to build!
1267 (invoke "make" "REAL_DAEMON_DIR=/etc" "linux")))
1268 ;; There is no make install stage, so we have to do it ourselves.
1269 (replace 'install
1270 (lambda _
1271 (let ((out (assoc-ref %outputs "out"))
1272 (man-pages `("hosts_access.3"
1273 "hosts_access.5"
1274 "hosts_options.5"
1275 "tcpd.8"
1276 "tcpdchk.8"
1277 "tcpdmatch.8"))
1278 (libs `("libwrap.a"
1279 "libwrap.so"))
1280 (headers `("tcpd.h"))
1281 (bins `("safe_finger"
1282 "tcpd"
1283 "tcpdchk"
1284 "tcpdmatch"
1285 "try-from")))
1286 (for-each
1287 (lambda (x)
1288 (install-file x (string-append out "/include")))
1289 headers)
1290 (for-each
1291 (lambda (x)
1292 (install-file x (string-append out "/share/man/man"
1293 (string-take-right x 1))))
1294 man-pages)
1295 (for-each
1296 (lambda (x)
1297 (install-file x (string-append out "/lib/")))
1298 libs)
1299 (for-each
1300 (lambda (x)
1301 (install-file x (string-append out "/bin/")))
1302 bins))
1303 #t)))))
1304 (home-page "http://www.porcupine.org")
1305 (synopsis "Monitor and filter incoming requests for network services")
1306 (description "With this package you can monitor and filter incoming requests for
1307 network services. It includes a library which may be used by daemons to
1308 transparently check connection attempts against an access control list.")
1309 (license (license:non-copyleft "file://DISCLAIMER"
1310 "See the file DISCLAIMER in the distribution."))))
1311
1312 (define-public zeromq
1313 (package
1314 (name "zeromq")
1315 (version "4.3.4")
1316 (source
1317 (origin
1318 (method url-fetch)
1319 (uri (string-append "https://github.com/zeromq/libzmq/releases"
1320 "/download/v" version "/zeromq-" version ".tar.gz"))
1321 (sha256
1322 (base32 "1rf3jmi36ms8jh2g5cvi253h43l6xdfq0r7mvp95va7mi4d014y5"))))
1323 (build-system gnu-build-system)
1324 (arguments '(#:configure-flags '("--disable-static"
1325 "--enable-drafts")))
1326 (home-page "https://zeromq.org")
1327 (synopsis "Library for message-based applications")
1328 (description
1329 "The 0MQ lightweight messaging kernel is a library which extends the
1330 standard socket interfaces with features traditionally provided by specialized
1331 messaging middle-ware products. 0MQ sockets provide an abstraction of
1332 asynchronous message queues, multiple messaging patterns, message
1333 filtering (subscriptions), seamless access to multiple transport protocols and
1334 more.")
1335 (license license:lgpl3+)))
1336
1337 (define-public czmq
1338 (package
1339 (name "czmq")
1340 (version "4.2.1")
1341 (source (origin
1342 (method url-fetch)
1343 (uri (string-append
1344 "https://github.com/zeromq/" name
1345 "/releases/download/v" version
1346 "/" name "-" version ".tar.gz"))
1347 (sha256
1348 (base32
1349 "0fdclvd7fcwixp0k57ccv7d159v3slasyhvndxfn8n1a9hh0lwjx"))))
1350 (build-system gnu-build-system)
1351 (arguments
1352 '(#:configure-flags '("--enable-drafts")))
1353 (inputs
1354 (list zeromq))
1355 (home-page "https://zeromq.org")
1356 (synopsis "High-level C bindings for ØMQ")
1357 (description
1358 "czmq provides bindings for the ØMQ core API that hides the differences
1359 between different versions of ØMQ.")
1360 (license license:mpl2.0)))
1361
1362 (define-public cppzmq
1363 (package
1364 (name "cppzmq")
1365 (version "4.8.1")
1366 (source (origin
1367 (method git-fetch)
1368 (uri (git-reference
1369 (url "https://github.com/zeromq/cppzmq")
1370 (commit (string-append "v" version))))
1371 (sha256
1372 (base32
1373 "0zzq20wzk5grshxfqhqgqqfwb38w3k83r821isvyaxghsglpwks3"))
1374 (file-name (git-file-name name version))))
1375 (build-system cmake-build-system)
1376 (arguments
1377 `(#:tests? ,(not (%current-target-system)))) ; run unless cross-compiling
1378 (native-inputs
1379 (list pkg-config))
1380 (inputs
1381 (list catch2 zeromq))
1382 (home-page "https://zeromq.org")
1383 (synopsis "C++ bindings for the ØMQ messaging library")
1384 (description
1385 "This package provides header-only C++ bindings for ØMQ. The header
1386 files contain direct mappings of the abstractions provided by the ØMQ C API.")
1387 (license license:expat)))
1388
1389 (define-public libnatpmp
1390 (package
1391 (name "libnatpmp")
1392 (version "20150609")
1393 (source (origin
1394 (method url-fetch)
1395 (uri (string-append
1396 "http://miniupnp.free.fr/files/"
1397 name "-" version ".tar.gz"))
1398 (sha256
1399 (base32
1400 "1c1n8n7mp0amsd6vkz32n8zj3vnsckv308bb7na0dg0r8969rap1"))))
1401 (build-system gnu-build-system)
1402 (arguments
1403 `(#:phases
1404 (modify-phases %standard-phases
1405 (delete 'configure)
1406 (delete 'check)) ; no tests
1407 #:make-flags
1408 (let* ((target ,(%current-target-system))
1409 (gcc (if target
1410 (string-append target "-gcc")
1411 "gcc")))
1412 (list
1413 (string-append "CC=" gcc)
1414 (string-append "INSTALLPREFIX=" (assoc-ref %outputs "out"))
1415 (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")))))
1416 (home-page "http://miniupnp.free.fr/libnatpmp.html")
1417 (synopsis "C library implementing NAT-PMP")
1418 (description
1419 "@code{libnatpmp} is a portable and asynchronous implementation of
1420 the Network Address Translation - Port Mapping Protocol (NAT-PMP)
1421 written in the C programming language.")
1422 (license license:bsd-3)))
1423
1424 (define-public librdkafka
1425 (package
1426 (name "librdkafka")
1427 (version "1.4.2")
1428 (source (origin
1429 (method git-fetch)
1430 (uri (git-reference
1431 (url "https://github.com/edenhill/librdkafka")
1432 (commit (string-append "v" version))))
1433 (file-name (git-file-name name version))
1434 (sha256
1435 (base32
1436 "05mgrdzacn9kdpr68r5j0cvsvl54s52glnsc1ww9rcxx6p7hq1ly"))))
1437 (build-system gnu-build-system)
1438 (arguments
1439 '(#:phases
1440 (modify-phases %standard-phases
1441 (replace 'configure
1442 ;; its custom configure script doesn't understand 'CONFIG_SHELL'.
1443 (lambda* (#:key outputs #:allow-other-keys)
1444 (let ((out (assoc-ref outputs "out")))
1445 ;; librdkafka++.so lacks RUNPATH for librdkafka.so
1446 (setenv "LDFLAGS"
1447 (string-append "-Wl,-rpath=" out "/lib"))
1448 (invoke "./configure"
1449 (string-append "--prefix=" out))))))))
1450 (native-inputs
1451 `(("python" ,python-wrapper)))
1452 (propagated-inputs
1453 (list zlib)) ; in the Libs.private field of rdkafka.pc
1454 (home-page "https://github.com/edenhill/librdkafka")
1455 (synopsis "Apache Kafka C/C++ client library")
1456 (description
1457 "librdkafka is a C library implementation of the Apache Kafka protocol,
1458 containing both Producer and Consumer support.")
1459 (license license:bsd-2)))
1460
1461 (define-public libndp
1462 (package
1463 (name "libndp")
1464 (version "1.8")
1465 (source (origin
1466 (method url-fetch)
1467 (uri (string-append "https://libndp.org/files/"
1468 "libndp-" version ".tar.gz"))
1469 (sha256
1470 (base32
1471 "0ay0n0d85254zdmv8znmn399gfiqpk6ga0jwdwa7ylpbw9pbdzw8"))))
1472 (build-system gnu-build-system)
1473 (home-page "https://libndp.org/")
1474 (synopsis "Library for Neighbor Discovery Protocol")
1475 (description
1476 "libndp contains a library which provides a wrapper for IPv6 Neighbor
1477 Discovery Protocol. It also provides a tool named ndptool for sending and
1478 receiving NDP messages.")
1479 (license license:lgpl2.1+)))
1480
1481 (define-public ethtool
1482 (package
1483 (name "ethtool")
1484 (version "5.15")
1485 (source (origin
1486 (method url-fetch)
1487 (uri (string-append "mirror://kernel.org/software/network/"
1488 "ethtool/ethtool-" version ".tar.xz"))
1489 (sha256
1490 (base32
1491 "0v8i592vwjypf111w0lfvaxdwhzybp6w600g28m9rm490c8xcvv8"))))
1492 (build-system gnu-build-system)
1493 (native-inputs
1494 (list pkg-config))
1495 (inputs
1496 (list libmnl))
1497 (home-page "https://www.kernel.org/pub/software/network/ethtool/")
1498 (synopsis "Display or change Ethernet device settings")
1499 (description
1500 "ethtool can be used to query and change settings such as speed,
1501 auto-negotiation and checksum offload on many network devices, especially
1502 Ethernet devices.")
1503 (license license:gpl2)))
1504
1505 (define-public ifstatus
1506 (package
1507 (name "ifstatus")
1508 (version "1.1.0")
1509 (source (origin
1510 (method url-fetch)
1511 (uri (string-append "mirror://sourceforge/ifstatus/ifstatus/"
1512 "ifstatus%20v" version "/ifstatus-v"
1513 version ".tar.gz"))
1514 (sha256
1515 (base32
1516 "045cbsq9ps32j24v8y5hpyqxnqn9mpaf3mgvirlhgpqyb9jsia0c"))
1517 (modules '((guix build utils)))
1518 (snippet
1519 '(begin
1520 (substitute* "Main.h"
1521 (("#include <stdio.h>")
1522 "#include <stdio.h>\n#include <stdlib.h>"))
1523 #t))))
1524 (build-system gnu-build-system)
1525 (arguments
1526 '(#:tests? #f ; no "check" target
1527 #:phases
1528 (modify-phases %standard-phases
1529 (delete 'configure) ; no configure script
1530 (replace 'install
1531 (lambda* (#:key outputs #:allow-other-keys)
1532 (let* ((out (assoc-ref outputs "out"))
1533 (bin (string-append out "/bin")))
1534 (mkdir-p bin)
1535 (copy-file "ifstatus"
1536 (string-append bin "/ifstatus")))
1537 #t)))))
1538 (inputs (list ncurses))
1539 (home-page "http://ifstatus.sourceforge.net/graphic/index.html")
1540 (synopsis "Text based network interface status monitor")
1541 (description
1542 "IFStatus is a simple, easy-to-use program for displaying commonly
1543 needed/wanted real-time traffic statistics of multiple network
1544 interfaces, with a simple and efficient view on the command line. It is
1545 intended as a substitute for the PPPStatus and EthStatus projects.")
1546 (license license:gpl2+)))
1547
1548 (define-public iputils
1549 (package
1550 (name "iputils")
1551 (version "20190709")
1552 (home-page "https://github.com/iputils/iputils")
1553 (source (origin
1554 (method git-fetch)
1555 (uri (git-reference (url home-page)
1556 (commit (string-append "s" version))))
1557 (file-name (git-file-name name version))
1558 (patches (search-patches "iputils-libcap-compat.patch"))
1559 (sha256
1560 (base32
1561 "04bp4af15adp79ipxmiakfp0ij6hx5qam266flzbr94pr8z8l693"))))
1562 (build-system meson-build-system)
1563 (arguments
1564 `(#:configure-flags '("-DBUILD_RARPD=true")
1565 #:phases
1566 (modify-phases %standard-phases
1567 (add-after 'unpack 'fix-docbook-url
1568 (lambda* (#:key inputs #:allow-other-keys)
1569 (let* ((docbook-xsl (assoc-ref inputs "docbook-xsl"))
1570 (uri (string-append docbook-xsl "/xml/xsl/docbook-xsl-"
1571 ,(package-version docbook-xsl))))
1572 (for-each
1573 (lambda (file)
1574 (substitute* file
1575 (("http://docbook\\.sourceforge\\.net/release/xsl-ns/current")
1576 uri)))
1577 (cons "doc/meson.build"
1578 (find-files "doc" "\\.xsl$")))
1579 #t))))))
1580 (native-inputs
1581 `(("gettext" ,gettext-minimal)
1582 ("pkg-config" ,pkg-config)
1583 ("docbook-xsl" ,docbook-xsl)
1584 ("docbook-xml" ,docbook-xml-5)
1585 ("libxml2" ,libxml2) ;for XML_CATALOG_FILES
1586 ("xsltproc" ,libxslt)))
1587 (inputs
1588 (list libcap libidn2 openssl))
1589 (synopsis "Collection of network utilities")
1590 (description
1591 "This package contains a variety of tools for dealing with network
1592 configuration, troubleshooting, or servers. Utilities included are:
1593
1594 @itemize @bullet
1595 @item @command{arping}: Ping hosts using the @dfn{Address Resolution Protocol}.
1596 @item @command{clockdiff}: Compute time difference between network hosts
1597 using ICMP TSTAMP messages.
1598 @item @command{ninfod}: Daemon that responds to IPv6 Node Information Queries.
1599 @item @command{ping}: Use ICMP ECHO messages to measure round-trip delays
1600 and packet loss across network paths.
1601 @item @command{rarpd}: Answer RARP requests from clients.
1602 @item @command{rdisc}: Populate network routing tables with information from
1603 the ICMP router discovery protocol.
1604 @item @command{tftpd}: Trivial file transfer protocol server.
1605 @item @command{tracepath}: Trace network path to an IPv4 or IPv6 address and
1606 discover MTU along the way.
1607 @end itemize")
1608 ;; The various utilities are covered by different licenses, see LICENSE
1609 ;; for details.
1610 (license (list license:gpl2+ ;arping, rarpd, tracepath
1611 license:bsd-3 ;clockdiff, ninfod, ping, tftpd
1612 (license:non-copyleft
1613 "https://spdx.org/licenses/Rdisc.html"
1614 "Sun Microsystems license, see rdisc.c for details")))))
1615
1616 (define-public nload
1617 (package
1618 (name "nload")
1619 (version "0.7.4")
1620 (source (origin
1621 (method url-fetch)
1622 (uri (string-append "mirror://sourceforge/nload/nload/" version
1623 "/nload-" version ".tar.gz"))
1624 (sha256
1625 (base32
1626 "1rb9skch2kgqzigf19x8bzk211jdfjfdkrcvaqyj89jy2pkm3h61"))))
1627 (build-system gnu-build-system)
1628 (inputs (list ncurses))
1629 (home-page "http://www.roland-riegel.de/nload/")
1630 (synopsis "Realtime console network usage monitor")
1631 (description
1632 "Nload is a console application which monitors network traffic and
1633 bandwidth usage in real time. It visualizes the in- and outgoing traffic using
1634 two graphs, and provides additional info like total amount of transferred data
1635 and min/max network usage.")
1636 (license license:gpl2+)))
1637
1638 (define-public iodine
1639 (package
1640 (name "iodine")
1641 (version "0.7.0")
1642 (source (origin
1643 (method url-fetch)
1644 (uri (string-append "http://code.kryo.se/" name "/"
1645 name "-" version ".tar.gz"))
1646 (sha256
1647 (base32
1648 "0gh17kcxxi37k65zm4gqsvbk3aw7yphcs3c02pn1c4s2y6n40axd"))))
1649 (build-system gnu-build-system)
1650 (arguments
1651 `(#:phases
1652 (modify-phases %standard-phases
1653 (delete 'configure)
1654 (add-before 'build 'fix-ifconfig-path
1655 ;; This package works only with the net-tools version of ifconfig.
1656 (lambda* (#:key inputs #:allow-other-keys)
1657 (substitute* "src/tun.c"
1658 (("PATH=[^ ]* ")
1659 (string-append (assoc-ref inputs "net-tools") "/bin/")))
1660 #t))
1661 (add-before 'check 'delete-failing-tests
1662 ;; Avoid https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=802105.
1663 (lambda _
1664 (substitute* "tests/common.c"
1665 (("tcase_add_test\\(tc, \
1666 test_parse_format_ipv(4(|_listen_all|_mapped_ipv6)|6)\\);")
1667 ""))
1668 #t)))
1669 #:make-flags (list ,(string-append "CC=" (cc-for-target))
1670 (string-append "prefix=" (assoc-ref %outputs "out")))
1671 #:test-target "test"))
1672 (inputs (list net-tools zlib))
1673 (native-inputs (list check pkg-config))
1674 (home-page "https://code.kryo.se/iodine/")
1675 (synopsis "Tunnel IPv4 data through a DNS server")
1676 (description "Iodine tunnels IPv4 data through a DNS server. This
1677 can be useful in different situations where internet access is firewalled, but
1678 DNS queries are allowed. The bandwidth is asymmetrical, with limited upstream
1679 and up to 1 Mbit/s downstream.")
1680 ;; src/md5.[ch] is released under the zlib license
1681 (license (list license:isc license:zlib))))
1682
1683 (define-public whois
1684 (package
1685 (name "whois")
1686 (version "5.5.11")
1687 (source
1688 (origin
1689 (method git-fetch)
1690 (uri (git-reference
1691 (url "https://github.com/rfc1036/whois")
1692 (commit (string-append "v" version))))
1693 (file-name (git-file-name name version))
1694 (sha256
1695 (base32 "0wys0aixzq6mzvg7p6jb0d5rkkg23pjcgcsx86p7hjidxdvnbwzr"))))
1696 (build-system gnu-build-system)
1697 (arguments
1698 `(#:tests? #f ; no test suite
1699 #:make-flags (list (string-append "CC=" ,(cc-for-target))
1700 (string-append "PKG_CONFIG=" ,(pkg-config-for-target))
1701 (string-append "prefix=" (assoc-ref %outputs "out")))
1702 #:phases
1703 (modify-phases %standard-phases
1704 (delete 'configure) ; no configure script
1705 (add-before 'build 'setenv
1706 (lambda _
1707 (setenv "HAVE_ICONV" "1")
1708 #t)))))
1709 (inputs
1710 (list libidn2))
1711 (native-inputs
1712 `(("gettext" ,gettext-minimal)
1713 ("perl" ,perl)
1714 ("pkg-config" ,pkg-config)))
1715 (synopsis "Intelligent client for the WHOIS directory service")
1716 (description
1717 "whois searches for an object in a @dfn{WHOIS} (RFC 3912) database.
1718 It is commonly used to look up the registered users or assignees of an Internet
1719 resource, such as a domain name, an IP address block, or an autonomous system.
1720 It can automatically select the appropriate server for most queries.
1721
1722 For historical reasons, this package also includes @command{mkpasswd}, which
1723 encrypts passwords using @code{crypt(3)} and is unrelated to the Expect command
1724 of the same name.")
1725 (home-page "https://github.com/rfc1036/whois")
1726 (license license:gpl2+)))
1727
1728 (define-public wireshark
1729 (package
1730 (name "wireshark")
1731 (version "3.6.7")
1732 (source
1733 (origin
1734 (method url-fetch)
1735 (uri (string-append "https://www.wireshark.org/download/src/wireshark-"
1736 version ".tar.xz"))
1737 (sha256
1738 (base32 "1idpxnh8vrvan3g0ymaa24bd4iyxi19xrr76sdrrpxx2r8shmqfc"))))
1739 (build-system cmake-build-system)
1740 (arguments
1741 `(#:phases
1742 (modify-phases %standard-phases
1743 (add-after 'unpack 'remove-failing-test
1744 ;; Skip test suite failing with "Program reassemble_test is not
1745 ;; available" and alike errors. Also skip test suite failing with
1746 ;; "AssertionError: Program extcap/sdjournal is not available"
1747 ;; error.'
1748 (lambda _
1749 (substitute* "CMakeLists.txt"
1750 (("suite_unittests" all) (string-append "# " all))
1751 (("suite_extcaps" all) (string-append "# " all))))))
1752 ;; Build process chokes during `validate-runpath' phase.
1753 ;;
1754 ;; Errors are like the following:
1755 ;; "/gnu/store/...wireshark-3.0.0/lib/wireshark/plugins/3.0/epan/ethercat.so:
1756 ;; error: depends on 'libwireshark.so.12', which cannot be found in
1757 ;; RUNPATH". That is, "/gnu/store/...wireshark-3.0.0./lib" doesn't
1758 ;; belong to RUNPATH.
1759 ;;
1760 ;; That’s not a problem in practice because "ethercat.so" is a plugin,
1761 ;; so it’s dlopen’d by a process that already provides "libwireshark".
1762 ;; For now, we disable this phase.
1763 #:validate-runpath? #f))
1764 (inputs
1765 (list c-ares
1766 glib
1767 gnutls
1768 brotli
1769 libcap
1770 libgcrypt
1771 libnl
1772 libpcap
1773 libssh
1774 libxml2
1775 lz4
1776 lua-5.2 ;Lua 5.3 unsupported
1777 mit-krb5
1778 `(,nghttp2 "lib")
1779 minizip
1780 qtbase-5
1781 qtmultimedia-5
1782 qtsvg-5
1783 sbc
1784 snappy
1785 zlib
1786 `(,zstd "lib")))
1787 (native-inputs
1788 (list bison
1789 doxygen
1790 flex
1791 gettext-minimal
1792 perl
1793 pkg-config
1794 python-wrapper
1795 qttools-5))
1796 (synopsis "Network traffic analyzer")
1797 (description "Wireshark is a network protocol analyzer, or @dfn{packet
1798 sniffer}, that lets you capture and interactively browse the contents of
1799 network frames.")
1800 (home-page "https://www.wireshark.org/")
1801 (license license:gpl2+)))
1802
1803 (define-public fping
1804 (package
1805 (name "fping")
1806 (version "5.1")
1807 (source
1808 (origin
1809 (method url-fetch)
1810 (uri (string-append "https://fping.org/dist/fping-"
1811 version ".tar.gz"))
1812 (sha256
1813 (base32 "1zh9fkyn0bixgn77v9z6ayv446nqwx960hmly9m68xix0s62dr8y"))))
1814 (build-system gnu-build-system)
1815 (arguments '(#:configure-flags '("--enable-ipv6")))
1816 (home-page "https://fping.org/")
1817 (synopsis "Send ICMP ECHO_REQUEST packets to network hosts")
1818 (description
1819 "fping is a ping-like program which uses @acronym{ICMP, Internet Control
1820 Message Protocol} echo requests to determine if a target host is responding.
1821
1822 @command{fping} differs from @command{ping} in that you can specify any number
1823 of targets on the command line, or specify a file containing the lists of
1824 targets to ping. Instead of sending to one target until it times out or
1825 replies, fping will send out a ping packet and move on to the next target in a
1826 round-robin fashion.")
1827 (license license:expat)))
1828
1829 (define-public gandi.cli
1830 (package
1831 (name "gandi.cli")
1832 (version "1.6")
1833 (source
1834 (origin
1835 (method url-fetch)
1836 (uri (pypi-uri name version))
1837 (sha256
1838 (base32 "1h36jahbp7273wn3yd747kbiwjc0bm3sja67bcxdsd54ln0vyndg"))))
1839 (build-system python-build-system)
1840 (arguments
1841 `(#:phases
1842 (modify-phases %standard-phases
1843 (add-after 'unpack 'embed-store-file-names
1844 (lambda _
1845 (substitute* (list "gandi/cli/modules/cert.py"
1846 "gandi/cli/tests/commands/test_certificate.py")
1847 (("openssl") (which "openssl")))
1848 #t))
1849 (add-after 'install 'install-documentation
1850 ;; The included man page may be outdated but we install it anyway,
1851 ;; since it's mentioned in 'gandi --help' and better than nothing.
1852 (lambda* (#:key outputs #:allow-other-keys)
1853 (let* ((out (assoc-ref outputs "out"))
1854 (man1 (string-append out "/share/man/man1")))
1855 (mkdir-p man1)
1856 (with-output-to-file (string-append man1 "/gandi.1")
1857 (lambda _
1858 (invoke "rst2man.py" "gandicli.man.rst")))
1859 #t))))))
1860 (native-inputs
1861 (list python-docutils ; for rst2man.py
1862 python-pytest python-pytest-cov python-tox))
1863 (propagated-inputs
1864 (list openssh)) ; used by gandi/cli/modules/iass.py
1865 (inputs
1866 (list openssl python-click-7 python-ipy python-pyyaml python-requests))
1867 (home-page "https://cli.gandi.net")
1868 (synopsis "Command-line interface to the Gandi.net Web API")
1869 (description
1870 "This package provides a command-line client (@command{gandi}) to buy,
1871 manage, and delete Internet resources from Gandi.net such as domain names,
1872 virtual machines, and certificates.")
1873 (license license:gpl3+)))
1874
1875 (define-public go-netns
1876 (let ((commit "13995c7128ccc8e51e9a6bd2b551020a27180abd")
1877 (revision "1"))
1878 (package
1879 (name "go-netns")
1880 (version (git-version "0.0.0" revision commit))
1881 (source (origin
1882 (method git-fetch)
1883 (uri (git-reference
1884 (url "https://github.com/vishvananda/netns")
1885 (commit commit)))
1886 (file-name (git-file-name name version))
1887 (sha256
1888 (base32
1889 "1zk6w8158qi4niva5rijchbv9ixgmijsgqshh54wdaav4xrhjshn"))))
1890 (build-system go-build-system)
1891 (arguments
1892 `(#:import-path "github.com/vishvananda/netns"
1893 #:tests? #f)) ;tests require root privileges
1894 (home-page "https://github.com/vishvananda/netns")
1895 (synopsis "Simple network namespace handling for Go")
1896 (description "The netns package provides a simple interface for
1897 handling network namespaces in Go.")
1898 (license license:asl2.0))))
1899
1900 (define-public go-sctp
1901 ;; docker-libnetwork-cmd-proxy requires this exact commit.
1902 ;; This commit is mentioned in docker-libnetwork-cmd-proxy's vendor.conf.
1903 (let ((commit "f2269e66cdee387bd321445d5d300893449805be")
1904 (revision "3"))
1905 (package
1906 (name "go-sctp")
1907 (version (git-version "0.0.0" revision commit))
1908 (source (origin
1909 (method git-fetch)
1910 (uri (git-reference
1911 (url "https://github.com/ishidawataru/sctp")
1912 (commit commit)))
1913 (file-name (git-file-name name version))
1914 (sha256
1915 (base32
1916 "04463rnn9y9psp11ac5di6wrwxlhymw5h9hfhhhnxqwla90ikp0g"))))
1917 (build-system go-build-system)
1918 (arguments
1919 `(#:tests? #f ; Test suite is flakey.
1920 #:import-path "github.com/ishidawataru/sctp"))
1921 (home-page "https://github.com/ishidawataru/sctp")
1922 (synopsis "SCTP library for the Go programming language")
1923 (description "This library provides methods for using the stream control
1924 transmission protocol (SCTP) in a Go application.")
1925 (license license:asl2.0))))
1926
1927 (define-public httping
1928 (package
1929 (name "httping")
1930 (version "2.5")
1931 (source
1932 (origin
1933 (method url-fetch)
1934 (uri (string-append "https://www.vanheusden.com/httping/httping-"
1935 version ".tgz"))
1936 (sha256
1937 (base32
1938 "1y7sbgkhgadmd93x1zafqc4yp26ssiv16ni5bbi9vmvvdl55m29y"))))
1939 (build-system gnu-build-system)
1940 (native-inputs
1941 `(("gettext" ,gettext-minimal)))
1942 (inputs
1943 (list fftw ncurses openssl))
1944 (arguments
1945 `(#:make-flags (list ,(string-append "CC=" (cc-for-target))
1946 (string-append "DESTDIR=" (assoc-ref %outputs "out"))
1947 "PREFIX=")
1948 #:tests? #f)) ; no tests
1949 (home-page "https://www.vanheusden.com/httping/")
1950 (synopsis "Web server latency and throughput monitor")
1951 (description
1952 "httping measures how long it takes to connect to a web server, send an
1953 HTTP(S) request, and receive the reply headers. It is somewhat similar to
1954 @command{ping}, but can be used even in cases where ICMP traffic is blocked
1955 by firewalls or when you want to monitor the response time of the actual web
1956 application stack itself.")
1957 (license license:gpl2))) ; with permission to link with OpenSSL
1958
1959 (define-public httpstat
1960 (package
1961 (name "httpstat")
1962 (version "1.3.1")
1963 (source
1964 (origin
1965 (method git-fetch)
1966 (uri (git-reference
1967 (url "https://github.com/reorx/httpstat")
1968 (commit version)))
1969 (file-name (git-file-name name version))
1970 (sha256
1971 (base32 "0cw8299a080m42slsimz31xs0gjnh833gpbj2dsr4hkcinrn4iyd"))))
1972 (build-system python-build-system)
1973 (inputs (list curl))
1974 (arguments
1975 '(#:phases
1976 (modify-phases %standard-phases
1977 (add-before 'build 'fix-curl-path
1978 (lambda* (#:key inputs #:allow-other-keys)
1979 (substitute* "httpstat.py"
1980 (("ENV_CURL_BIN.get\\('curl'\\)")
1981 (string-append "ENV_CURL_BIN.get('"
1982 (assoc-ref inputs "curl")
1983 "/bin/curl')"))
1984 ;; "curl -w time_*" units seems to have
1985 ;; changed from seconds to nanoseconds.
1986 (("d\\[k\\] \\* 1000") "d[k] / 1000"))
1987 #t)))))
1988 (home-page "https://github.com/reorx/httpstat")
1989 (synopsis "Visualize curl statistics")
1990 (description
1991 "@command{httpstat} is a tool to visualize statistics from the
1992 @command{curl} HTTP client. It acts as a wrapper for @command{curl} and
1993 prints timing information for each step of the HTTP request (DNS lookup,
1994 TCP connection, TLS handshake and so on) in the terminal.")
1995 (license license:expat)))
1996
1997 (define-public squid
1998 (package
1999 (name "squid")
2000 (version "4.17")
2001 (source
2002 (origin
2003 (method url-fetch)
2004 (uri (string-append "http://www.squid-cache.org/Versions/v4/squid-"
2005 version ".tar.xz"))
2006 (sha256
2007 (base32 "060lwghn6q982bay11ia38c86kd8w6mjgy68n58v31kwik08m4nb"))))
2008 (build-system gnu-build-system)
2009 (arguments
2010 '(#:configure-flags
2011 ;; disable -march=native in build for reproducibility; see
2012 ;; https://wiki.squid-cache.org/KnowledgeBase/IllegalInstructionError
2013 (list "--disable-arch-native")
2014 #:phases
2015 (modify-phases %standard-phases
2016 (add-before 'build 'fix-true-path
2017 (lambda* (#:key inputs #:allow-other-keys)
2018 (substitute* "test-suite/testheaders.sh"
2019 (("/bin/true")
2020 (search-input-file inputs "/bin/true"))))))))
2021 (inputs
2022 (list perl
2023 openldap
2024 linux-pam
2025 libcap
2026 cyrus-sasl
2027 expat
2028 libxml2
2029 openssl))
2030 (native-inputs
2031 (list cppunit pkg-config))
2032 (synopsis "Web caching proxy")
2033 (description "Squid is a caching proxy for the Web supporting HTTP, HTTPS,
2034 FTP, and more. It reduces bandwidth and improves response times by caching and
2035 reusing frequently-requested web pages.")
2036 (home-page "http://www.squid-cache.org/")
2037 (license license:gpl2+)))
2038
2039 (define-public bwm-ng
2040 (package
2041 (name "bwm-ng")
2042 (version "0.6.3")
2043 (source
2044 (origin
2045 (method git-fetch)
2046 (uri (git-reference
2047 (url "https://github.com/vgropp/bwm-ng")
2048 (commit (string-append "v" version))))
2049 (file-name (git-file-name name version))
2050 (sha256
2051 (base32 "1gpp2l3w479h1w5skjra5xy0gxd24kvmk6i4psbkafnv2399la4k"))))
2052 (build-system gnu-build-system)
2053 (arguments
2054 `(#:phases
2055 (modify-phases %standard-phases
2056 (add-after 'unpack 'disable-premature-./configure
2057 (lambda _
2058 (substitute* "autogen.sh"
2059 (("\\$srcdir/configure")
2060 "true"))
2061 #t)))))
2062 (native-inputs
2063 (list autoconf automake))
2064 (inputs
2065 (list ncurses))
2066 (synopsis "Console based live network and disk I/O bandwidth monitor")
2067 (description "Bandwidth Monitor NG is a small and simple console based
2068 live network and disk I/O bandwidth monitor.")
2069 (home-page "https://www.gropp.org/?id=projects&sub=bwm-ng")
2070 (license license:gpl2)))
2071
2072 (define-public aircrack-ng
2073 (package
2074 (name "aircrack-ng")
2075 (version "1.7")
2076 (source
2077 (origin
2078 (method url-fetch)
2079 (uri (string-append "https://download.aircrack-ng.org/aircrack-ng-"
2080 version ".tar.gz"))
2081 (sha256
2082 (base32 "1hsq1gwmafka4bahs6rc8p98yi542h9a502h64bjlygpr3ih99q5"))))
2083 (build-system gnu-build-system)
2084 (native-inputs
2085 (list autoconf automake libtool pkg-config which
2086 ;; For tests.
2087 expect))
2088 (inputs
2089 (list `(,hwloc "lib") ; speed boost on SMP machines
2090 libgcrypt
2091 libnl
2092 libpcap
2093 ethtool
2094 pcre
2095 sqlite
2096 zlib))
2097 (arguments
2098 `(#:configure-flags
2099 (list "CFLAGS=-fcommon"
2100 "--with-experimental=yes" ; build wesside-ng, etc.
2101 "--with-gcrypt") ; openssl's the default
2102 #:phases (modify-phases %standard-phases
2103 (add-before 'bootstrap 'patch-evalrev
2104 (lambda _
2105 ;; Called by ./autogen.sh below, before the default
2106 ;; ‘patch-shebangs’ phase has had a chance to run.
2107 (substitute* "evalrev"
2108 (("/bin/sh")
2109 (which "sh")))))
2110 (add-after 'build 'absolutize-tools
2111 (lambda* (#:key inputs #:allow-other-keys)
2112 (let ((ethtool (search-input-file inputs
2113 "/sbin/ethtool")))
2114 (substitute* "scripts/airmon-ng"
2115 (("ethtool ")
2116 (string-append ethtool " ")))))))))
2117 (home-page "https://www.aircrack-ng.org")
2118 (synopsis "Assess WiFi network security")
2119 (description
2120 "Aircrack-ng is a complete suite of tools to assess WiFi network
2121 security. It focuses on different areas of WiFi security: monitoring,
2122 attacking, testing, and cracking. All tools are command-line driven, which
2123 allows for heavy scripting.")
2124 (license (list license:gpl2+ license:bsd-3))))
2125
2126 (define-public pixiewps
2127 (package
2128 (name "pixiewps")
2129 (version "1.4.2")
2130 (source (origin
2131 (method url-fetch)
2132 (uri (string-append
2133 "https://github.com/wiire-a/pixiewps/releases/"
2134 "download/v" version "/" name "-" version ".tar.xz"))
2135 (sha256
2136 (base32
2137 "07nym6bqml0k9v29vnj003nrgnwrywgjvnljb7cdpsvnwilhbp64"))))
2138 (build-system gnu-build-system)
2139 (arguments
2140 `(#:make-flags
2141 (list ,(string-append "CC=" (cc-for-target))
2142 (string-append "PREFIX=" (assoc-ref %outputs "out")))
2143 #:phases
2144 (modify-phases %standard-phases
2145 (delete 'configure)) ; no configure script
2146 #:tests? #f)) ; there are no tests
2147 (home-page "https://github.com/wiire-a/pixiewps/")
2148 (synopsis "Offline brute-force tool for Wi-Fi Protected Setup")
2149 (description "Pixiewps implements the pixie-dust attack to brute
2150 force the Wi-Fi Protected Setup (WPS) PIN by exploiting the low or
2151 non-existing entropy of some access points.")
2152 (license license:gpl3+)))
2153
2154 (define-public reaver
2155 (package
2156 (name "reaver")
2157 (version "1.6.6")
2158 (source (origin
2159 (method url-fetch)
2160 (uri (string-append
2161 "https://github.com/t6x/reaver-wps-fork-t6x/releases/"
2162 "download/v" version "/reaver-" version ".tar.xz"))
2163 (sha256
2164 (base32
2165 "00k7mc81ifv0wma7k4v18mj498badbw5yls6c28qin3d1gda0ag3"))))
2166 (build-system gnu-build-system)
2167 (arguments
2168 `(#:configure-flags
2169 ;; Save session files to current directory instead of /var.
2170 (list "--enable-savetocurrent"
2171 "--localstatedir=/tmp/dummy") ; prevent creating /var during install
2172 #:phases
2173 (modify-phases %standard-phases
2174 (add-before 'configure 'change-directory
2175 (lambda _
2176 (chdir "src")
2177 #t))
2178 (add-after 'install 'install-doc
2179 (lambda* (#:key outputs #:allow-other-keys)
2180 (chdir "../docs")
2181 (let* ((out (assoc-ref outputs "out"))
2182 (doc (string-append out "/share/doc/" ,name "-" ,version))
2183 (man1 (string-append out "/share/man/man1")))
2184 (for-each (lambda (file) (install-file file doc))
2185 (find-files "." "README.*"))
2186 (install-file "reaver.1" man1)
2187 #t))))
2188 #:tests? #f)) ; there are no tests
2189 (inputs
2190 (list libpcap))
2191 (propagated-inputs
2192 (list aircrack-ng pixiewps))
2193 (home-page "https://github.com/t6x/reaver-wps-fork-t6x/")
2194 (synopsis "Attack tool for Wi-Fi Protected Setup")
2195 (description "Reaver performs a brute force attack against an access
2196 point's Wi-Fi Protected Setup (WPS) PIN. Once the PIN is found, the WPA
2197 passphrase can be recovered and the AP's wireless settings can be
2198 reconfigured.")
2199 (license license:gpl2+)))
2200
2201 (define-public perl-danga-socket
2202 (package
2203 (name "perl-danga-socket")
2204 (version "1.62")
2205 (source
2206 (origin
2207 (method url-fetch)
2208 (uri (string-append "mirror://cpan/authors/id/N/NM/NML/"
2209 "Danga-Socket-" version ".tar.gz"))
2210 (sha256
2211 (base32 "0x4bvirmf0kphks19jwgva00zz73zx344218dfaiv8gigrw3yg4m"))))
2212 (build-system perl-build-system)
2213 (native-inputs
2214 (list perl-test-tcp))
2215 (propagated-inputs
2216 (list perl-sys-syscall))
2217 (home-page "https://metacpan.org/release/Danga-Socket")
2218 (synopsis "Event loop and event-driven async socket base class")
2219 (description
2220 "Danga::Socket is an abstract base class for objects backed by a socket
2221 which provides the basic framework for event-driven asynchronous IO, designed
2222 to be fast. Danga::Socket is both a base class for objects, and an event
2223 loop.")
2224 (license license:perl-license)))
2225
2226 (define-public perl-data-validate-ip
2227 (package
2228 (name "perl-data-validate-ip")
2229 (version "0.30")
2230 (source
2231 (origin
2232 (method url-fetch)
2233 (uri (string-append
2234 "mirror://cpan/authors/id/D/DR/DROLSKY/Data-Validate-IP-"
2235 version ".tar.gz"))
2236 (sha256
2237 (base32 "074adrlvkiahj1fdc9nvb95dpfyjzm2jzhi90m8xaw4bw5ipcbzy"))))
2238 (build-system perl-build-system)
2239 (native-inputs
2240 (list perl-test-requires))
2241 (propagated-inputs
2242 (list perl-netaddr-ip))
2243 (home-page "https://metacpan.org/release/Data-Validate-IP")
2244 (synopsis "IPv4 and IPv6 validation methods")
2245 (description
2246 "This module provides several IP address validation subroutines that both
2247 validate and untaint their input. This includes both basic validation
2248 (@code{is_ipv4()} and @code{is_ipv6()}) and special cases like checking whether
2249 an address belongs to a specific network or whether an address is public or
2250 private (reserved).")
2251 (license license:perl-license)))
2252
2253 (define-public perl-net-dns
2254 (package
2255 (name "perl-net-dns")
2256 (version "1.31")
2257 (source
2258 (origin
2259 (method url-fetch)
2260 (uri
2261 (list
2262 (string-append "https://www.net-dns.org/download/Net-DNS-"
2263 version ".tar.gz")
2264 (string-append "mirror://cpan/authors/id/N/NL/NLNETLABS/Net-DNS-"
2265 version ".tar.gz")))
2266 (sha256
2267 (base32 "05f6rzvvmm6xd0p100k5y9kczdzqgala09ra8bccc18n6y74l0h0"))))
2268 (build-system perl-build-system)
2269 (inputs
2270 (list perl-digest-hmac))
2271 (home-page "https://www.net-dns.org/")
2272 (synopsis
2273 "Perl Interface to the Domain Name System")
2274 (description "Net::DNS is the Perl Interface to the Domain Name System.")
2275 (license license:x11)))
2276
2277 (define-public perl-socket6
2278 (package
2279 (name "perl-socket6")
2280 (version "0.29")
2281 (source
2282 (origin
2283 (method url-fetch)
2284 (uri (string-append
2285 "mirror://cpan/authors/id/U/UM/UMEMOTO/Socket6-"
2286 version
2287 ".tar.gz"))
2288 (sha256
2289 (base32
2290 "054izici8klfxs8hr5rljib28plijpsfymy99xbzdp047bx1b2a6"))))
2291 (build-system perl-build-system)
2292 (arguments
2293 `(#:phases
2294 (modify-phases %standard-phases
2295 (replace 'configure
2296 (lambda* (#:key outputs #:allow-other-keys)
2297 (let* ((out (assoc-ref outputs "out"))
2298 (args `("Makefile.PL"
2299 ,(string-append "PREFIX=" out)
2300 "INSTALLDIRS=site")))
2301 (setenv "CONFIG_SHELL" (which "sh"))
2302 (apply invoke "perl" args)))))))
2303 (home-page "https://metacpan.org/release/Socket6")
2304 (synopsis
2305 "IPv6 related part of the C socket.h defines and structure manipulators for Perl")
2306 (description "Socket6 binds the IPv6 related part of the C socket header
2307 definitions and structure manipulators for Perl.")
2308 (license license:bsd-3)))
2309
2310 (define-public perl-net-dns-resolver-programmable
2311 (package
2312 (name "perl-net-dns-resolver-programmable")
2313 (version "0.003")
2314 (source
2315 (origin
2316 (method url-fetch)
2317 (uri (string-append
2318 "mirror://cpan/authors/id/J/JM/JMEHNLE/net-dns-resolver-programmable/"
2319 "Net-DNS-Resolver-Programmable-v" version ".tar.gz"))
2320 (sha256
2321 (base32
2322 "1v3nl2kaj4fs55n1617n53q8sa3mir06898vpy1rq98zjih24h4d"))
2323 (patches
2324 (search-patches "perl-net-dns-resolver-programmable-fix.patch"))))
2325 (build-system perl-build-system)
2326 (native-inputs
2327 (list perl-module-build))
2328 (inputs (list perl-net-dns))
2329 (home-page
2330 "https://metacpan.org/release/Net-DNS-Resolver-Programmable")
2331 (synopsis
2332 "Programmable DNS resolver class for offline emulation of DNS")
2333 (description "Net::DNS::Resolver::Programmable is a programmable DNS resolver for
2334 offline emulation of DNS.")
2335 (license license:perl-license)))
2336
2337 (define-public perl-net-dns-resolver-mock
2338 (package
2339 (name "perl-net-dns-resolver-mock")
2340 (version "1.20171219")
2341 (source (origin
2342 (method url-fetch)
2343 (uri (string-append
2344 "mirror://cpan/authors/id/M/MB/MBRADSHAW/"
2345 "Net-DNS-Resolver-Mock-" version ".tar.gz"))
2346 (sha256
2347 (base32
2348 "0m3rxpkv1b9121srvbqkrgzg4m8mnydiydqv34in1i1ixwrl6jn9"))))
2349 (build-system perl-build-system)
2350 (inputs
2351 (list perl-net-dns))
2352 (home-page "https://metacpan.org/release/Net-DNS-Resolver-Mock")
2353 (synopsis "Mock DNS Resolver object for testing")
2354 (description
2355 "Net::DNS::Resolver::Mock is a subclass of Net::DNS::Resolver, but returns
2356 static data from any provided DNS zone file instead of querying the network.
2357 It is intended primarily for use in testing.")
2358 (license license:perl-license)))
2359
2360 (define-public perl-netaddr-ip
2361 (package
2362 (name "perl-netaddr-ip")
2363 (version "4.079")
2364 (source
2365 (origin
2366 (method url-fetch)
2367 (uri (string-append
2368 "mirror://cpan/authors/id/M/MI/MIKER/NetAddr-IP-"
2369 version
2370 ".tar.gz"))
2371 (sha256
2372 (base32
2373 "1rx0dinrz9fk9qcg4rwqq5n1dm3xv2arymixpclcv2q2nzgq4npc"))))
2374 (build-system perl-build-system)
2375 (arguments
2376 `(#:phases
2377 (modify-phases %standard-phases
2378 (replace 'configure
2379 (lambda* (#:key outputs #:allow-other-keys)
2380 (let* ((out (assoc-ref outputs "out"))
2381 (args `("Makefile.PL"
2382 ,(string-append "PREFIX=" out)
2383 "INSTALLDIRS=site")))
2384 (setenv "CONFIG_SHELL" (which "sh"))
2385 (apply invoke "perl" args)))))))
2386 (home-page
2387 "https://metacpan.org/release/NetAddr-IP")
2388 (synopsis
2389 "Manages IPv4 and IPv6 addresses and subnets")
2390 (description "NetAddr::IP manages IPv4 and IPv6 addresses and subsets.")
2391 (license license:perl-license)))
2392
2393 (define-public perl-net-patricia
2394 (package
2395 (name "perl-net-patricia")
2396 (version "1.22")
2397 (source
2398 (origin
2399 (method url-fetch)
2400 (uri (string-append
2401 "mirror://cpan/authors/id/G/GR/GRUBER/Net-Patricia-"
2402 version
2403 ".tar.gz"))
2404 (sha256
2405 (base32
2406 "0ln5f57vc8388kyh9vhx2infrdzfhbpgyby74h1qsnhwds95m0vh"))))
2407 (build-system perl-build-system)
2408 (arguments
2409 '(#:phases
2410 (modify-phases %standard-phases
2411 (add-after 'unpack 'dont-link-with-nsl ; Borrowed from Debian.
2412 (lambda _
2413 (substitute* "Makefile.PL"
2414 (("-lnsl") ""))
2415 #t)))))
2416 (inputs
2417 (list perl-net-cidr-lite perl-socket6))
2418 (home-page
2419 "https://metacpan.org/release/Net-Patricia")
2420 (synopsis
2421 "Patricia Trie Perl module for fast IP address lookups")
2422 (description
2423 "Net::Patricia does IP address lookups quickly in Perl.")
2424 ;; The bindings are licensed under GPL2 or later.
2425 ;; libpatricia is licensed under 2-clause BSD.
2426 (license (list license:gpl2+ license:bsd-2))))
2427
2428 (define-public perl-net-cidr-lite
2429 (package
2430 (name "perl-net-cidr-lite")
2431 (version "0.22")
2432 (source
2433 (origin
2434 (method url-fetch)
2435 (uri (string-append
2436 "mirror://cpan/authors/id/S/ST/STIGTSP/Net-CIDR-Lite-"
2437 version
2438 ".tar.gz"))
2439 (sha256
2440 (base32 "05w57db2lx4djb4vixzdr6qgrzyzkk047nl812g7nq8s6k5xh5s3"))))
2441 (build-system perl-build-system)
2442 (home-page "https://metacpan.org/release/Net-CIDR-Lite")
2443 (synopsis "Perl extension for merging IPv4 or IPv6 CIDR addresses")
2444 (description "Net::CIDR::Lite merges IPv4 or IPv6 CIDR addresses.")
2445 (license license:gpl1+)))
2446
2447 (define-public perl-io-socket-inet6
2448 (package
2449 (name "perl-io-socket-inet6")
2450 (version "2.72")
2451 (source
2452 (origin
2453 (method url-fetch)
2454 (uri (string-append
2455 "mirror://cpan/authors/id/S/SH/SHLOMIF/IO-Socket-INET6-"
2456 version
2457 ".tar.gz"))
2458 (sha256
2459 (base32
2460 "1fqypz6qa5rw2d5y2zq7f49frwra0aln13nhq5gi514j2zx21q45"))))
2461 (build-system perl-build-system)
2462 (native-inputs
2463 (list perl-module-build perl-test-pod perl-test-pod-coverage))
2464 (propagated-inputs (list perl-socket6))
2465 (arguments `(;; Need network socket API
2466 #:tests? #f))
2467 (home-page
2468 "https://metacpan.org/release/IO-Socket-INET6")
2469 (synopsis
2470 "Perl object interface for AF_INET/AF_INET6 domain sockets")
2471 (description "IO::Socket::INET6 is an interface for AF_INET/AF_INET6 domain
2472 sockets in Perl.")
2473 (license license:perl-license)))
2474
2475 (define-public libproxy
2476 (package
2477 (name "libproxy")
2478 (version "0.4.17")
2479 (source (origin
2480 (method url-fetch)
2481 (uri (string-append "https://github.com/libproxy/libproxy/"
2482 "releases/download/" version "/libproxy-"
2483 version ".tar.xz"))
2484 (sha256
2485 (base32
2486 "01cbgz6lc3v59sldqk96l1281kp2qxnsa2qwlf2ikvjlyr1gi2dw"))))
2487 (build-system cmake-build-system)
2488 (native-inputs
2489 (list pkg-config))
2490 (inputs
2491 (list dbus zlib))
2492 (arguments
2493 `(#:phases
2494 (modify-phases %standard-phases
2495 (replace 'check
2496 (lambda* (#:key tests? #:allow-other-keys)
2497 (when tests?
2498 (invoke "ctest" "-E" "url-test")))))))
2499 (synopsis "Library providing automatic proxy configuration management")
2500 (description "Libproxy handles the details of HTTP/HTTPS proxy
2501 configuration for applications across all scenarios. Applications using
2502 libproxy only have to specify which proxy to use.")
2503 (home-page "https://libproxy.github.io/libproxy")
2504 (license license:lgpl2.1+)))
2505
2506 (define-public proxychains-ng
2507 (package
2508 (name "proxychains-ng")
2509 (version "4.16")
2510 (source
2511 (origin
2512 (method url-fetch)
2513 (uri (string-append "http://ftp.barfooze.de/pub/sabotage/tarballs/"
2514 "proxychains-ng-" version ".tar.xz"))
2515 (sha256
2516 (base32 "04k80jbv1wcr7ccsa0qyly33syw275kvkvzyihwwqmsqk4yria9p"))))
2517 (build-system gnu-build-system)
2518 (arguments
2519 `(#:tests? #f ; there are no tests
2520 #:phases
2521 (modify-phases %standard-phases
2522 (add-after 'unpack 'fix-configure-script
2523 (lambda _
2524 ;; The configure script is very intolerant to unknown arguments,
2525 ;; such as "CONFIG_SHELL".
2526 (substitute* "configure"
2527 (("\\*\\) break ;;" line)
2528 (string-append "[A-Z]*) shift ;;\n"
2529 line)))))
2530 (add-before 'configure 'set-up-environment
2531 (lambda _
2532 (setenv "CC" ,(cc-for-target)))))))
2533 (synopsis "Redirect any TCP connection through a proxy or proxy chain")
2534 (description "Proxychains-ng is a preloader which hooks calls to sockets
2535 in dynamically linked programs and redirects them through one or more SOCKS or
2536 HTTP proxies.")
2537 (home-page "https://github.com/rofl0r/proxychains-ng")
2538 (license license:gpl2+)))
2539
2540 (define-public enet
2541 (package
2542 (name "enet")
2543 (version "1.3.17")
2544 (source
2545 (origin
2546 (method url-fetch)
2547 (uri (string-append "http://enet.bespin.org/download/"
2548 "enet-" version ".tar.gz"))
2549 (sha256
2550 (base32 "1p6f9mby86af6cs7pv6h48032ip9g32c05cb7d9mimam8lchz3x3"))))
2551 (build-system gnu-build-system)
2552 (native-inputs
2553 (list pkg-config))
2554 (synopsis "Network communication layer on top of UDP")
2555 (description
2556 "ENet's purpose is to provide a relatively thin, simple and robust network
2557 communication layer on top of UDP. The primary feature it provides is optional
2558 reliable, in-order delivery of packets. ENet omits certain higher level
2559 networking features such as authentication, server discovery, encryption, or
2560 other similar tasks that are particularly application specific so that the
2561 library remains flexible, portable, and easily embeddable.")
2562 (home-page "http://enet.bespin.org")
2563 (license license:expat)))
2564
2565 (define-public sslh
2566 (package
2567 (name "sslh")
2568 (version "1.21c")
2569 (source
2570 (origin
2571 (method git-fetch)
2572 (uri (git-reference
2573 (url "https://github.com/yrutschle/sslh")
2574 (commit (string-append "v" version))))
2575 (file-name (git-file-name name version))
2576 (sha256
2577 (base32 "19h32dn0076p3s7dn35qi5yp2xvnxw9sqphppmn72vyb8caxvw1z"))))
2578 (build-system gnu-build-system)
2579 (native-inputs
2580 (list ;; Test dependencies.
2581 lcov
2582 perl
2583 perl-conf-libconfig
2584 perl-io-socket-inet6
2585 perl-socket6
2586 psmisc)) ; for ‘killall’
2587 (inputs
2588 (list libcap libconfig pcre tcp-wrappers))
2589 (arguments
2590 `(#:phases
2591 (modify-phases %standard-phases
2592 (delete 'configure) ; no configure script
2593 (add-before 'check 'fix-tests
2594 (lambda _
2595 (substitute* "./t"
2596 (("\"/tmp") "$ENV{\"TMPDIR\"} . \"")
2597 ;; The Guix build environment lacks ‘ip6-localhost’.
2598 (("ip6-localhost") "localhost"))
2599 #t))
2600 ;; Many of these files are mentioned in the man page. Install them.
2601 (add-after 'install 'install-documentation
2602 (lambda* (#:key outputs #:allow-other-keys)
2603 (let* ((out (assoc-ref outputs "out"))
2604 (doc (string-append out "/share/doc/sslh")))
2605 (install-file "README.md" doc)
2606 (for-each
2607 (lambda (file)
2608 (install-file file (string-append doc "/examples")))
2609 (append (find-files "." "\\.cfg")
2610 (find-files "scripts"))))
2611 #t)))
2612 #:make-flags (list ,(string-append "CC=" (cc-for-target))
2613 "USELIBCAP=1"
2614 "USELIBWRAP=1"
2615 (string-append "PREFIX=" (assoc-ref %outputs "out")))
2616 #:test-target "test"))
2617 (home-page "https://www.rutschle.net/tech/sslh/README.html")
2618 (synopsis "Applicative network protocol demultiplexer")
2619 (description
2620 "sslh is a network protocol demultiplexer. It acts like a switchboard,
2621 accepting connections from clients on one port and forwarding them to different
2622 servers based on the contents of the first received data packet. Detection of
2623 common protocols like HTTP(S), SSL, SSH, OpenVPN, tinc, and XMPP is already
2624 implemented, but any other protocol that matches a regular expression can be
2625 added. sslh's name comes from its original application of serving both SSH and
2626 HTTPS on port 443, allowing SSH connections from inside corporate firewalls
2627 that block port 22.")
2628 (license (list license:bsd-2 ; tls.[ch]
2629 license:gpl2+)))) ; everything else
2630
2631 (define-public iperf
2632 (package
2633 (name "iperf")
2634 (version "3.11")
2635 (source
2636 (origin
2637 (method git-fetch)
2638 (uri (git-reference
2639 (url "https://github.com/esnet/iperf")
2640 (commit version)))
2641 (file-name (git-file-name name version))
2642 (sha256
2643 (base32 "064sb8f9jxi5ii43swd73c0mm50lvk51v7awhgbj6p129c1a4nn5"))))
2644 (build-system gnu-build-system)
2645 (arguments
2646 `(#:configure-flags
2647 (list "--disable-static")))
2648 (synopsis "TCP, UDP and SCTP bandwidth measurement tool")
2649 (description
2650 "iPerf is a tool to measure achievable bandwidth on IP networks. It
2651 supports tuning of various parameters related to timing, buffers and
2652 protocols (TCP, UDP, SCTP with IPv4 and IPv6). For each test it reports
2653 the bandwidth, loss, and other parameters.")
2654 (home-page "https://software.es.net/iperf/")
2655 (license (list license:bsd-3 ; Main distribution.
2656 license:ncsa ; src/{units,iperf_locale,tcp_window_size}.c
2657 license:expat ; src/{cjson,net}.[ch]
2658 license:public-domain)))) ; src/portable_endian.h
2659
2660 (define-public nethogs
2661 (package
2662 (name "nethogs")
2663 (version "0.8.7")
2664 (source
2665 (origin
2666 (method git-fetch)
2667 (uri (git-reference
2668 (url "https://github.com/raboof/nethogs")
2669 (commit (string-append "v" version))))
2670 (hash
2671 (content-hash
2672 (base32 "10shdwvfj90lp2fxz9260342a1c2n1jbw058qy5pyq5kh3xwr9b8")
2673 sha256))
2674 (file-name (git-file-name name version))))
2675 (build-system gnu-build-system)
2676 (inputs
2677 (list libpcap ncurses))
2678 (arguments
2679 `(#:make-flags `(,,(string-append "CC=" (cc-for-target))
2680 ,(string-append "PREFIX=" %output)
2681 ,(string-append "VERSION=" ,version))
2682 #:phases
2683 (modify-phases %standard-phases
2684 (delete 'configure)))) ; no ./configure script.
2685 (home-page "https://github.com/raboof/nethogs")
2686 (synopsis "Per-process bandwidth monitor")
2687 (description "NetHogs is a small 'net top' tool for Linux. Instead of
2688 breaking the traffic down per protocol or per subnet, like most tools do, it
2689 groups bandwidth by process.
2690
2691 NetHogs does not rely on a special kernel module to be loaded. If there's
2692 suddenly a lot of network traffic, you can fire up NetHogs and immediately see
2693 which PID is causing this. This makes it easy to identify programs that have
2694 gone wild and are suddenly taking up your bandwidth.")
2695 (license license:gpl2+)))
2696
2697 (define-public nzbget
2698 (package
2699 (name "nzbget")
2700 (version "21.1")
2701 (source
2702 (origin
2703 (method url-fetch)
2704 (uri (string-append "https://github.com/nzbget/nzbget/releases"
2705 "/download/v" version
2706 "/nzbget-" version "-src.tar.gz"))
2707 (sha256
2708 (base32 "09900x1k0yf4yi2cc0k093advvadyhrkm8rnd8nszhhdp2zc33sf"))))
2709 (arguments
2710 `(#:configure-flags
2711 (list
2712 (string-append "--with-libcurses-includes="
2713 (assoc-ref %build-inputs "ncurses") "/include")
2714 (string-append "--with-libcurses-libraries="
2715 (assoc-ref %build-inputs "ncurses") "/lib")
2716 (string-append "--with-tlslib=GnuTLS"))))
2717 (build-system gnu-build-system)
2718 (inputs (list gnutls libxml2 ncurses zlib))
2719 (native-inputs (list pkg-config))
2720 (home-page "https://github.com/nzbget/nzbget")
2721 (synopsis "Usenet binary file downloader")
2722 (description
2723 "NZBGet is a binary newsgrabber, which downloads files from Usenet based
2724 on information given in @code{nzb} files. NZBGet can be used in standalone
2725 and in server/client modes. In standalone mode, you pass NZBGet @command{nzb}
2726 files as command-line parameters and it downloads them and exits. NZBGet also
2727 contains a Web interface. Its server can be controlled through remote
2728 procedure calls (RPCs).")
2729 (license license:gpl2+)))
2730
2731 (define-public openvswitch
2732 (package
2733 (name "openvswitch")
2734 (version "3.0.0")
2735 (source (origin
2736 (method url-fetch)
2737 (uri (string-append
2738 "https://www.openvswitch.org/releases/openvswitch-"
2739 version ".tar.gz"))
2740 (sha256
2741 (base32
2742 "17hr7x9iahhmskp70pv59v4bsn86r2jmbaw37vs03jsz3k1a57gs"))))
2743 (build-system gnu-build-system)
2744 (arguments
2745 '(#:configure-flags
2746 '("--enable-shared"
2747 "--disable-static" ; XXX still installs libopenvswitchavx512.a
2748 "--localstatedir=/var"
2749 "--with-dbdir=/var/lib/openvswitch")
2750 ;; Tests fail in different ways, on different x86_64-linux hardware:
2751 ;; 25. bfd.at:268: 25. bfd - bfd decay (bfd.at:268): FAILED (bfd.at:397)
2752 ;; 1040. dpif-netdev - meters (dpif-netdev.at:269): FAILED (dpif-netdev.at:376)
2753 #:tests? #f
2754 #:phases
2755 (modify-phases %standard-phases
2756 (add-after 'unpack 'use-absolute-/bin/sh
2757 (lambda* (#:key inputs #:allow-other-keys)
2758 (let ((/bin/sh (search-input-file inputs "bin/sh")))
2759 (substitute* "ovsdb/ovsdb-server.c"
2760 (("/bin/sh") /bin/sh)))))
2761 (add-before 'check 'adjust-tests
2762 (lambda* (#:key inputs #:allow-other-keys)
2763 (let ((/bin/sh (search-input-file inputs "bin/sh")))
2764 (with-fluids ((%default-port-encoding "ISO-8859-1"))
2765 (substitute* (find-files "tests" ".*(run|testsuite)$")
2766 (("#! /bin/sh")
2767 (string-append "#! " /bin/sh))
2768
2769 ;; grep 3.8 emits a warning for 'egrep' which breaks
2770 ;; expected output; adjust accordingly.
2771 (("egrep")
2772 "grep -E")
2773
2774 ;; The tests use 'kill -0' to check whether a test has
2775 ;; completed, but it does not work in the build container
2776 ;; because zombies are not reaped automatically (PID 1 is
2777 ;; the builder script). Change to something that handles
2778 ;; undead processes.
2779 (("kill -0")
2780 "kill-0")))
2781 (mkdir "/tmp/bin")
2782 (call-with-output-file "/tmp/bin/kill-0"
2783 (lambda (port)
2784 (format port "#!~a
2785 ps --no-header -p $1 -o state= | grep -qv '^Z$'"
2786 /bin/sh)))
2787 (chmod "/tmp/bin/kill-0" #o755)
2788 (setenv "PATH"
2789 (string-append "/tmp/bin:" (getenv "PATH"))))))
2790 (replace 'install
2791 (lambda _
2792 (invoke "make"
2793 ;; Don't try to create directories under /var.
2794 "RUNDIR=/tmp"
2795 "PKIDIR=/tmp"
2796 "LOGDIR=/tmp"
2797 "DBDIR=/tmp"
2798 "install"))))))
2799 (native-inputs
2800 (list perl
2801 pkg-config
2802 python-wrapper
2803
2804 ;; For testing.
2805 bash ;for 'compgen'
2806 procps
2807 util-linux))
2808 (inputs
2809 (list bash-minimal libcap-ng openssl))
2810 (synopsis "Virtual network switch")
2811 (home-page "https://www.openvswitch.org/")
2812 (description
2813 "Open vSwitch is a multilayer virtual switch. It is designed to enable
2814 massive network automation through programmatic extension, while still
2815 supporting standard management interfaces and protocols (e.g. NetFlow, sFlow,
2816 IPFIX, RSPAN, CLI, LACP, 802.1ag).")
2817 (properties
2818 '((release-monitoring-url . "https://www.openvswitch.org/download/")))
2819 (license ; see debian/copyright for detail
2820 (list license:lgpl2.1 ; xenserver and utilities/bugtool
2821 license:gpl2 ; datapath
2822 license:bsd-2 license:bsd-3
2823 license:asl2.0)))) ; all other
2824
2825 (define-public python-ipy
2826 (package
2827 (name "python-ipy")
2828 (version "1.00")
2829 (source (origin
2830 (method url-fetch)
2831 (uri (pypi-uri "IPy" version))
2832 (sha256
2833 (base32
2834 "08d6kcacj67mvh0b6y765ipccy6gi4w2ndd4v1l3im2qm1cgcarg"))))
2835 (build-system python-build-system)
2836 (home-page "https://github.com/autocracy/python-ipy/")
2837 (synopsis "Python class and tools for handling IP addresses and networks")
2838 (description "The @code{IP} class allows a comfortable parsing and
2839 handling for most notations in use for IPv4 and IPv6 addresses and
2840 networks.")
2841 (license license:bsd-3)))
2842
2843 (define-public speedtest-cli
2844 (package
2845 (name "speedtest-cli")
2846 (version "2.1.3")
2847 (source
2848 (origin
2849 (method git-fetch)
2850 (uri (git-reference
2851 (url "https://github.com/sivel/speedtest-cli")
2852 (commit (string-append "v" version))))
2853 (file-name (git-file-name name version))
2854 (sha256
2855 (base32 "10fazl4kwf41mk7pnwpfms16n0ii0kg9pf8r3mz9xwnl9y04mv9x"))))
2856 (build-system python-build-system)
2857 (home-page "https://github.com/sivel/speedtest-cli")
2858 (synopsis "Internet bandwidth tester")
2859 (description
2860 "Command line interface for testing internet bandwidth using
2861 speedtest.net.")
2862 (license license:asl2.0)))
2863
2864 (define-public tftp-hpa
2865 (package
2866 (name "tftp-hpa")
2867 (version "5.2")
2868 (source (origin
2869 (method url-fetch)
2870 (uri (string-append "mirror://kernel.org/software/"
2871 "network/tftp/tftp-hpa/tftp-hpa-" version
2872 ".tar.xz"))
2873 (sha256
2874 (base32
2875 "12vidchglhyc20znq5wdsbhi9mqg90jnl7qr9qs8hbvaz4fkdvmg"))))
2876 (build-system gnu-build-system)
2877 (arguments
2878 (list #:tests? #f ; no test target
2879 #:configure-flags
2880 #~(list "CFLAGS=-fcommon"))) ; XXX fix 5.2 build with GCC 10
2881 (synopsis "HPA's tftp client")
2882 (description
2883 "This is a tftp client derived from OpenBSD tftp with some extra options
2884 added and bugs fixed. The source includes readline support but it is not
2885 enabled due to license conflicts between the BSD advertising clause and the GPL.")
2886 (home-page "https://git.kernel.org/cgit/network/tftp/tftp-hpa.git/about/")
2887 ;; Some source files are distributed under a 3-clause BSD license, and
2888 ;; others under a 4-clause BSD license. Refer to the files in the source
2889 ;; distribution for clarification.
2890 (license (list license:bsd-3 license:bsd-4))))
2891
2892 (define-public spiped
2893 (package
2894 (name "spiped")
2895 (version "1.6.1")
2896 (source (origin
2897 (method url-fetch)
2898 (uri (string-append "https://www.tarsnap.com/spiped/spiped-"
2899 version ".tgz"))
2900 (sha256
2901 (base32
2902 "04rpnc53whfky7pp2m9h35gwzwn6788pnl6c1qd576mpknbqjw4d"))))
2903 (build-system gnu-build-system)
2904 (arguments
2905 `(#:test-target "test"
2906 #:make-flags (let* ((out (assoc-ref %outputs "out"))
2907 (bindir (string-append out "/bin"))
2908 (man1dir (string-append out "/share/man/man1")))
2909 (list ,(string-append "CC=" (cc-for-target)) ; It tries to invoke `c99`.
2910 (string-append "BINDIR=" bindir)
2911 (string-append "MAN1DIR=" man1dir)))
2912 #:phases
2913 (modify-phases %standard-phases
2914 (add-after 'unpack 'patch-command-invocations
2915 (lambda _
2916 (substitute* '("Makefile"
2917 "libcperciva/cpusupport/Build/cpusupport.sh"
2918 "libcperciva/POSIX/posix-cflags.sh"
2919 "libcperciva/POSIX/posix-l.sh")
2920 (("command -p") ""))
2921 #t))
2922 (delete 'configure) ; No ./configure script.
2923 (add-after 'install 'install-more-docs
2924 (lambda* (#:key outputs #:allow-other-keys)
2925 (let* ((out (assoc-ref %outputs "out"))
2926 (misc (string-append out "/share/doc/spiped")))
2927 (install-file "DESIGN.md" misc)
2928 #t))))))
2929 (native-inputs
2930 (list procps)) ; `ps` is used by the test suite.
2931 (inputs
2932 (list openssl))
2933 (home-page "https://www.tarsnap.com/spiped.html")
2934 (synopsis "Create secure pipes between sockets")
2935 (description "Spiped (pronounced \"ess-pipe-dee\") is a utility for creating
2936 symmetrically encrypted and authenticated pipes between socket addresses, so
2937 that one may connect to one address (e.g., a UNIX socket on localhost) and
2938 transparently have a connection established to another address (e.g., a UNIX
2939 socket on a different system). This is similar to 'ssh -L' functionality, but
2940 does not use SSH and requires a pre-shared symmetric key.")
2941 (license license:bsd-2)))
2942
2943 (define-public quagga
2944 (package
2945 (name "quagga")
2946 (version "1.2.4")
2947 (source (origin
2948 (method url-fetch)
2949 ;; Use archived sources; see <http://issues.guix.gnu.org/47123>.
2950 (uri (string-append "https://fossies.org/linux/misc/"
2951 "quagga-" version ".tar.gz"))
2952 (sha256
2953 (base32
2954 "1lsksqxij5f1llqn86pkygrf5672kvrqn1kvxghi169hqf1c0r73"))
2955 (patches
2956 (search-patches "quagga-reproducible-build.patch"))))
2957 (build-system gnu-build-system)
2958 (native-inputs (list pkg-config perl dejagnu))
2959 (inputs (list readline c-ares))
2960 (synopsis "Routing Software Suite")
2961 (description "Quagga is a routing software suite, providing implementations
2962 of OSPFv2, OSPFv3, RIP v1 and v2, RIPng and BGP-4 for Unix platforms.
2963
2964 The Quagga architecture consists of a core daemon, @command{zebra}, which
2965 acts as an abstraction layer to the underlying Unix kernel and presents the
2966 Zserv API over a Unix or TCP stream to Quagga clients. It is these Zserv
2967 clients which typically implement a routing protocol and communicate routing
2968 updates to the zebra daemon.")
2969 (home-page "https://www.nongnu.org/quagga/")
2970 (license license:gpl2+)))
2971
2972 (define-public thc-ipv6
2973 (let ((revision "0")
2974 (commit "4bb72573e0950ce6f8ca2800a10748477020029e"))
2975 (package
2976 (name "thc-ipv6")
2977 (version (git-version "3.4" revision commit))
2978 (source (origin
2979 (method git-fetch)
2980 (uri (git-reference
2981 (url "https://github.com/vanhauser-thc/thc-ipv6")
2982 (commit commit)))
2983 (file-name (git-file-name name version))
2984 (sha256
2985 (base32
2986 "1x5i6vbsddqc2yks7r1a2fw2fk16qxvd6hpzh1lykjfpkal8fdir"))))
2987 (build-system gnu-build-system)
2988 (arguments
2989 `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
2990 #:tests? #f ; No test suite.
2991 #:phases
2992 (modify-phases %standard-phases
2993 (add-after 'unpack 'use-source-date-epoch-in-manpages
2994 ;; For reproducible builds
2995 (lambda _
2996 (substitute* "Makefile"
2997 (("date --iso-8601")
2998 "date --iso-8601 --utc --date=@$(SOURCE_DATE_EPOCH)"))))
2999 (delete 'configure) ; No ./configure script.
3000 (add-before 'build 'patch-paths
3001 (lambda _
3002 (substitute* "Makefile"
3003 (("/bin/echo") "echo"))
3004 #t))
3005 (add-after 'install 'install-more-docs
3006 (lambda* (#:key outputs #:allow-other-keys)
3007 (let* ((out (assoc-ref outputs "out"))
3008 (doc (string-append out "/share/thc-ipv6/doc")))
3009 (install-file "README" doc)
3010 (install-file "HOWTO-INJECT" doc)
3011 #t))))))
3012 ;; TODO Add libnetfilter-queue once packaged.
3013 (inputs
3014 (list libpcap openssl perl))
3015 (home-page "https://github.com/vanhauser-thc/thc-ipv6")
3016 (synopsis "IPv6 security research toolkit")
3017 (description "The THC IPv6 Toolkit provides command-line tools and a library
3018 for researching IPv6 implementations and deployments. It requires Linux 2.6 or
3019 newer and only works on Ethernet network interfaces.")
3020 ;; AGPL 3 with exception for linking with OpenSSL. See the 'LICENSE' file in
3021 ;; the source distribution for more information.
3022 (license license:agpl3))))
3023
3024 (define-public bmon
3025 (package
3026 (name "bmon")
3027 (version "4.0")
3028 (source
3029 (origin
3030 (method url-fetch)
3031 (uri (string-append "https://github.com/tgraf/bmon/releases/download/v"
3032 version "/bmon-" version ".tar.gz"))
3033 (sha256
3034 (base32
3035 "0ylzriv4pwh76344abzl1w219x188gshbycbna35gsyfp09c7z82"))))
3036 (build-system gnu-build-system)
3037 (inputs
3038 (list libconfuse libnl ncurses))
3039 (native-inputs
3040 (list pkg-config))
3041 (synopsis "Bandwidth monitor")
3042 (description "bmon is a monitoring and debugging tool to capture
3043 networking-related statistics and prepare them visually in a human-friendly
3044 way. It features various output methods including an interactive curses user
3045 interface and a programmable text output for scripting.")
3046 (home-page "https://github.com/tgraf/bmon")
3047 ;; README.md mentions both the 2-clause BSD and expat licenses, but all
3048 ;; the source files only have expat license headers. Upstream has been
3049 ;; contacted for clarification: https://github.com/tgraf/bmon/issues/59
3050 ;; Update the license field when upstream responds.
3051 (license (list license:bsd-2
3052 license:expat))))
3053
3054 (define-public libnet
3055 (package
3056 (name "libnet")
3057 (version "1.2")
3058 (source
3059 (origin
3060 (method url-fetch)
3061 (uri (string-append "https://github.com/libnet/libnet/releases/download"
3062 "/v" version "/libnet-" version ".tar.gz"))
3063 (sha256
3064 (base32
3065 "19ys9vxk6fg70yzzdxsphfr0rwzgxxhr9b3ykhpg7rfray0qd96a"))))
3066 (build-system gnu-build-system)
3067 (arguments
3068 `(#:phases
3069 (modify-phases %standard-phases
3070 (add-after 'unpack 'fix-manpage-date
3071 (lambda _
3072 ;; Replace current date with specific date to build reproducibly
3073 (substitute* "doc/fixmanpages.in"
3074 (("pod2man -d .* -n") "pod2man -d \"1970-01-01\" -n"))))
3075 (add-before 'build 'build-doc
3076 (lambda* (#:key make-flags #:allow-other-keys)
3077 (apply invoke "make" "-C" "doc" "doc"
3078 make-flags))))))
3079 (native-inputs
3080 (list ;; To build the documentation, Doxygen and Perl is required.
3081 doxygen perl))
3082 (home-page "https://github.com/libnet/libnet")
3083 (synopsis "Framework for low-level network packet construction")
3084 (description
3085 "Libnet provides a fairly portable framework for network packet
3086 construction and injection. It features portable packet creation interfaces
3087 at the IP layer and link layer, as well as a host of supplementary
3088 functionality. Using libnet, quick and simple packet assembly applications
3089 can be whipped up with little effort.")
3090 (license license:bsd-2)))
3091
3092 (define-public mtr
3093 (package
3094 (name "mtr")
3095 (version "0.95")
3096 (source
3097 (origin
3098 (method url-fetch)
3099 (uri (string-append "ftp://ftp.bitwizard.nl/mtr/"
3100 "mtr-" version ".tar.gz"))
3101 (sha256
3102 (base32 "0haanralbvd12pvkyihgkmx9ld74dnzm1s7mzparfandl416ibff"))))
3103 (build-system gnu-build-system)
3104 (native-inputs (list pkg-config))
3105 (inputs
3106 (list jansson libcap ncurses))
3107 (arguments
3108 `(#:tests? #f)) ; tests require network access
3109 (home-page "https://www.bitwizard.nl/mtr/")
3110 (synopsis "Network diagnostic tool")
3111 (description
3112 "@acronym{mtr, My TraceRoute} combines the functionality of the
3113 @command{traceroute} and @command{ping} programs in a single network diagnostic
3114 tool. @command{mtr} can use several network protocols to detect intermediate
3115 routers (or @dfn{hops}) between the local host and a user-specified destination.
3116 It then continually measures the response time and packet loss at each hop, and
3117 displays the results in real time.")
3118 (license license:gpl2+)))
3119
3120 (define-public amule
3121 (package
3122 (name "amule")
3123 (version "2.3.3")
3124 (source (origin
3125 (method git-fetch)
3126 (uri (git-reference
3127 (url "https://github.com/amule-project/amule")
3128 (commit version)))
3129 (file-name (git-file-name name version))
3130 (sha256
3131 (base32
3132 "1nm4vxgmisn1b6l3drmz0q04x067j2i8lw5rnf0acaapwlp8qwvi"))))
3133 (build-system gnu-build-system)
3134 (arguments
3135 `(#:phases
3136 (modify-phases %standard-phases
3137 (delete 'bootstrap) ; bootstrap phase runs too early.
3138 (add-after 'patch-source-shebangs 'autogen
3139 (lambda _
3140 (invoke "sh" "autogen.sh")
3141 #t)))
3142 #:configure-flags
3143 '("--disable-rpath"
3144 "--enable-wxcas"
3145 "--enable-cas"
3146 "--enable-alc"
3147 "--enable-alcc"
3148 "--enable-xas"
3149 "--enable-amulecmd"
3150 "--enable-geoip"
3151 "--enable-ccache"
3152 "--enable-nls"
3153 "--enable-optimize"
3154 "--enable-amule-gui"
3155 "--enable-amule-daemon"
3156 "--enable-webserver"
3157 "--with-denoise-level=0")))
3158 (native-inputs
3159 (list autoconf automake gettext-minimal perl))
3160 (inputs
3161 (list zlib crypto++ libpng wxwidgets-gtk2))
3162 (home-page "https://amule.org/")
3163 (synopsis "Peer-to-peer client for the eD2K and Kademlia networks")
3164 (description
3165 "aMule is an eMule-like client for the eD2k and Kademlia peer-to-peer
3166 file sharing networks. It includes a graphical user interface (GUI), a daemon
3167 allowing you to run a client with no graphical interface, and a Web GUI for
3168 remote access. The @command{amulecmd} command allows you to control aMule
3169 remotely.")
3170 (license license:gpl2+)))
3171
3172 (define-public zyre
3173 (package
3174 (name "zyre")
3175 (version "2.0.1")
3176 (source (origin
3177 (method url-fetch)
3178 (uri
3179 (string-append "https://github.com/zeromq/zyre/releases/download/v"
3180 version "/" name "-" version ".tar.gz"))
3181 (sha256
3182 (base32
3183 "13596507ma1474cjqzxym5jlvcshvw7sjhw80rdz788gyz6kz90b"))))
3184 (build-system gnu-build-system)
3185 (inputs (list zeromq czmq libsodium))
3186 (synopsis "Framework for proximity-based peer-to-peer applications")
3187 (description "Zyre provides reliable group messaging over local area
3188 networks using zeromq. It has these key characteristics:
3189
3190 @itemize
3191 @item Zyre needs no administration or configuration.
3192 @item Peers may join and leave the network at any time.
3193 @item Peers talk to each other without any central brokers or servers.
3194 @item Peers can talk directly to each other.
3195 @item Peers can join groups, and then talk to groups.
3196 @item Zyre is reliable, and loses no messages even when the network is heavily loaded.
3197 @item Zyre is fast and has low latency, requiring no consensus protocols.
3198 @item Zyre is designed for WiFi networks, yet also works well on Ethernet networks.
3199 @end itemize")
3200 (home-page "https://github.com/zeromq/zyre")
3201 (license license:mpl2.0)))
3202
3203 (define-public libsocketcan
3204 (package
3205 (name "libsocketcan")
3206 (version "0.0.12")
3207 (source (origin
3208 (method git-fetch)
3209 (uri (git-reference
3210 (url "https://git.pengutronix.de/cgit/tools/libsocketcan")
3211 (commit (string-append "v" version))))
3212 (file-name (git-file-name name version))
3213 (sha256
3214 (base32
3215 "0nrav2yqxgb7jwnhrwirnxs9ycqqh90sqgv5a8lns837jf385jvq"))))
3216 (build-system gnu-build-system)
3217 (arguments
3218 (list #:phases
3219 #~(modify-phases %standard-phases
3220 ;; Upstream already puts (more) files in share/doc/libsocketcan.
3221 (delete 'install-license-files))))
3222 (native-inputs
3223 (list autoconf automake libtool))
3224 (home-page "https://git.pengutronix.de/cgit/tools/libsocketcan")
3225 (synopsis "SocketCAN user-space library")
3226 (description "This library allows controlling basic functions in SocketCAN
3227 from user-space. It requires a kernel built with SocketCAN support.")
3228 (license license:lgpl2.1+)))
3229
3230 (define-public can-utils
3231 (package
3232 (name "can-utils")
3233 (version "2020.02.04")
3234 (source (origin
3235 (method git-fetch)
3236 (uri (git-reference
3237 (url "https://github.com/linux-can/can-utils")
3238 (commit (string-append "v" version))))
3239 (file-name (git-file-name name version))
3240 (sha256
3241 (base32
3242 "1a3j1mmnb7pvgc8r7zzp6sdp7903in2hna6bmpraxln7cwlzn4l6"))))
3243 (build-system gnu-build-system)
3244 (arguments
3245 `(#:tests? #f ; No tests exist.
3246 #:make-flags (list ,(string-append "CC=" (cc-for-target))
3247 (string-append "PREFIX="
3248 (assoc-ref %outputs "out")))
3249 #:phases
3250 (modify-phases %standard-phases
3251 (delete 'bootstrap)
3252 (delete 'configure))))
3253 (home-page "https://github.com/linux-can/can-utils")
3254 (synopsis "CAN utilities")
3255 (description "This package provides CAN utilities in the following areas:
3256
3257 @itemize
3258 @item Basic tools to display, record, generate and replay CAN traffic
3259 @item CAN access via IP sockets
3260 @item CAN in-kernel gateway configuration
3261 @item CAN bus measurement and testing
3262 @item ISO-TP (ISO15765-2:2016 - this means messages with a body larger than
3263 eight bytes) tools
3264 @item Log file converters
3265 @item Serial Line Discipline configuration for slcan driver
3266 @end itemize")
3267 ;; Either BSD-3 or GPL-2 can be used.
3268 (license (list license:bsd-3 license:gpl2))))
3269
3270 (define-public asio
3271 (package
3272 (name "asio")
3273 (version "1.22.2")
3274 (source
3275 (origin
3276 (method url-fetch)
3277 (uri (string-append "mirror://sourceforge/asio/asio/"
3278 version " (Stable)/asio-" version ".tar.bz2"))
3279 (sha256
3280 (base32 "0v5w9j4a02j2rkc7mrdj3ms0kfpqbgq2ipkixlz2l0p8xs0vfsvp"))))
3281 (build-system gnu-build-system)
3282 (inputs
3283 (list boost openssl))
3284 (arguments
3285 `(#:configure-flags
3286 (list
3287 (string-append "--with-boost=" (assoc-ref %build-inputs "boost"))
3288 (string-append "--with-openssl=" (assoc-ref %build-inputs "openssl")))))
3289 (home-page "https://think-async.com/Asio")
3290 (synopsis "C++ library for ASynchronous network I/O")
3291 (description "Asio is a cross-platform C++ library for network and
3292 low-level I/O programming that provides developers with a consistent
3293 asynchronous model using a modern C++ approach.")
3294 (license license:boost1.0)))
3295
3296 (define-public shadowsocks
3297 (package
3298 (name "shadowsocks")
3299 (version "2.9.1")
3300 (source
3301 (origin
3302 (method git-fetch)
3303 (uri (git-reference
3304 (url "https://github.com/shadowsocks/shadowsocks")
3305 (commit version)))
3306 (sha256
3307 (base32 "02mp5905nz02d7amb4zc77rcrkxmvy8mf5rci7mvy58g24lvbw25"))
3308 (file-name (git-file-name name version))))
3309 (inputs
3310 (list openssl))
3311 (arguments
3312 '(#:phases
3313 (modify-phases %standard-phases
3314 (add-after 'unpack 'patch-crypto-paths
3315 (lambda* (#:key inputs #:allow-other-keys)
3316 (substitute* "shadowsocks/shell.py"
3317 (("config\\.get\\('libopenssl', None\\)")
3318 (format #f "config.get('libopenssl', ~s)"
3319 (string-append
3320 (assoc-ref inputs "openssl")
3321 "/lib/libssl.so")))))))))
3322 (build-system python-build-system)
3323 (home-page "https://github.com/shadowsocks/shadowsocks")
3324 (synopsis "Fast tunnel proxy that helps you bypass firewalls")
3325 (description
3326 "This package is a fast tunnel proxy that helps you bypass firewalls.
3327
3328 Features:
3329 @itemize
3330 @item TCP & UDP support
3331 @item User management API
3332 @item TCP Fast Open
3333 @item Workers and graceful restart
3334 @item Destination IP blacklist
3335 @end itemize")
3336 (license license:asl2.0)))
3337
3338 (define-public net-snmp
3339 (package
3340 (name "net-snmp")
3341 (version "5.9.3")
3342 (source (origin
3343 (method url-fetch)
3344 (uri (string-append "mirror://sourceforge/net-snmp/net-snmp/"
3345 version "/net-snmp-" version ".tar.gz"))
3346 (sha256
3347 (base32
3348 "02pgl89s8qll5zhdp61rbn6vpl084gx55bjb1cqg3wqvgsdz55r0"))
3349 (modules '((guix build utils)))
3350 (snippet
3351 '(begin
3352 ;; Drop bundled libraries.
3353 (delete-file-recursively "snmplib/openssl")))))
3354 (build-system gnu-build-system)
3355 (arguments
3356 `(#:test-target "test"
3357 ;; XXX: With parallel build enabled, Perl modules may not get linked with
3358 ;; libnetsnmp. See e.g. <https://bugzilla.novell.com/show_bug.cgi?id=819497>.
3359 #:parallel-build? #f
3360 #:configure-flags
3361 (list (string-append "LDFLAGS=-Wl,-rpath="
3362 (assoc-ref %outputs "out")
3363 "/lib")
3364 "--disable-static"
3365 "--with-logfile=/var/log/snmpd.log"
3366 (string-append "--with-openssl="
3367 (assoc-ref %build-inputs "openssl")))
3368 #:phases
3369 (modify-phases %standard-phases
3370 (add-after 'unpack 'patch-tests
3371 (lambda* (#:key inputs #:allow-other-keys)
3372 (substitute* "testing/fulltests/support/simple_TESTCONF.sh"
3373 (("NETSTAT=\"\"")
3374 (string-append "NETSTAT=\"" (which "netstat") "\"")))
3375 (substitute* '("testing/fulltests/default/T065agentextend_simple"
3376 "testing/fulltests/default/T115agentxperl_simple")
3377 (("/usr/bin/env") (which "env")))
3378 (substitute* "testing/fulltests/default/T065agentextend_sh_simple"
3379 (("/bin/sh") (which "sh")))
3380 ;; These tests require network access.
3381 (for-each delete-file
3382 '("testing/fulltests/default/T070com2sec_simple"
3383 "testing/fulltests/default/T071com2sec6_simple"))))
3384 (add-after 'unpack 'patch-Makefile.PL
3385 (lambda* (#:key outputs #:allow-other-keys)
3386 (substitute* "Makefile.in"
3387 (("Makefile.PL -NET")
3388 (string-append "Makefile.PL PREFIX="
3389 (assoc-ref outputs "out")
3390 " INSTALLDIRS=site" " NO_PERLLOCAL=1"
3391 " -NET"))))))))
3392 (inputs
3393 (list libnl ncurses ; for the ‘apps’
3394 openssl perl))
3395 (native-inputs
3396 (list pkg-config
3397 ;; For tests only.
3398 net-tools coreutils grep))
3399 (home-page "http://www.net-snmp.org/")
3400 (synopsis "Simple Network Management Protocol library and tools")
3401 (description "The @dfn{Simple Network Management Protocol} (SNMP) is a
3402 widely used protocol for monitoring the health and welfare of network
3403 equipment (e.g. routers), computer equipment and even devices like UPSs.
3404 Net-SNMP is a suite of applications used to implement SNMP v1, SNMP v2c and
3405 SNMP v3 using both IPv4 and IPv6.")
3406 ;; This only affects OpenBSD
3407 ;; https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-8100
3408 (properties `((lint-hidden-cve . ("CVE-2015-8100"))))
3409 (license (list license:bsd-3
3410 (license:non-copyleft
3411 "http://www.net-snmp.org/about/license.html"
3412 "CMU/UCD copyright notice")))))
3413
3414 (define-public ubridge
3415 (package
3416 (name "ubridge")
3417 (version "0.9.18")
3418 (source
3419 (origin
3420 (method git-fetch)
3421 (uri (git-reference
3422 (url "https://github.com/GNS3/ubridge")
3423 (commit (string-append "v" version))))
3424 (file-name (git-file-name name version))
3425 (sha256
3426 (base32 "0jg66jhhpv4c9340fsdp64hf9h253i8r81fknxa0gq241ripp3jn"))))
3427 (build-system gnu-build-system)
3428 (arguments
3429 `(#:tests? #f ; no tests
3430 #:make-flags
3431 (list ,(string-append "CC=" (cc-for-target)))
3432 #:phases
3433 (modify-phases %standard-phases
3434 (delete 'configure) ; no configure script
3435 (add-before 'install 'set-bindir
3436 (lambda* (#:key inputs outputs #:allow-other-keys)
3437 (let ((bin (string-append (assoc-ref outputs "out")
3438 "/bin")))
3439 (mkdir-p bin)
3440 (substitute* "Makefile"
3441 (("\\$\\(BINDIR\\)") bin)
3442 (("\tsetcap cap_net.*$") "")))
3443 #t)))))
3444 (inputs
3445 (list libpcap))
3446 (home-page "https://github.com/GNS3/ubridge/")
3447 (synopsis "Bridge for UDP tunnels, Ethernet, TAP and VMnet interfaces")
3448 (description "uBridge is a simple program to create user-land bridges
3449 between various technologies. Currently, bridging between UDP tunnels,
3450 Ethernet and TAP interfaces is supported. Packet capture is also supported.")
3451 (license license:gpl3+)))
3452
3453 (define-public hcxtools
3454 (package
3455 (name "hcxtools")
3456 (version "6.2.7")
3457 (source
3458 (origin
3459 (method git-fetch)
3460 (uri (git-reference
3461 (url "https://github.com/ZerBea/hcxtools")
3462 (commit version)))
3463 (sha256
3464 (base32 "0460dxbc04w60l3g06rk007yyb6qprgyii59y2zdki0vy7q63m8b"))
3465 (file-name (git-file-name name version))))
3466 (build-system gnu-build-system)
3467 (native-inputs (list pkg-config))
3468 (inputs (list curl libpcap openssl zlib))
3469 (arguments
3470 (list #:make-flags
3471 #~(list (string-append "CC="
3472 #$(cc-for-target)) "LDFLAGS+=-lcrypto"
3473 "LDFLAGS+=-lcurl" "LDFLAGS+=-lz"
3474 (string-append "PREFIX="
3475 #$output))
3476 #:tests? #f ;no test suite
3477 #:phases
3478 #~(modify-phases %standard-phases
3479 (delete 'configure))))
3480 (home-page "https://github.com/ZerBea/hcxtools")
3481 (synopsis "Capture wlan traffic to hashcat and John the Ripper")
3482 (description
3483 "This package contains a small set of tools to capture and convert
3484 packets from wireless devices for use with hashcat or John the Ripper.")
3485 (license license:expat)))
3486
3487 (define-public hcxdumptool
3488 (package
3489 (name "hcxdumptool")
3490 (version "6.0.6")
3491 (source
3492 (origin
3493 (method git-fetch)
3494 (uri (git-reference
3495 (url "https://github.com/ZerBea/hcxdumptool")
3496 (commit version)))
3497 (sha256
3498 (base32 "1b4d543y64ib92w9gcmiyjn5hz2vyjqmxk3f3yr1zk04fhw16gmf"))
3499 (file-name (git-file-name name version))))
3500 (build-system gnu-build-system)
3501 (arguments
3502 `(#:make-flags
3503 (list ,(string-append "CC=" (cc-for-target))
3504 (string-append "INSTALLDIR=" (assoc-ref %outputs "out") "/bin"))
3505 #:tests? #f ; no test suite
3506 #:phases
3507 (modify-phases %standard-phases
3508 (delete 'configure))))
3509 (inputs
3510 (list openssl))
3511 (home-page "https://github.com/ZerBea/hcxdumptool")
3512 (synopsis "Small tool to capture packets from wlan devices")
3513 (description
3514 "Small tool to capture packets from WLAN devices. After capturing,
3515 upload the \"uncleaned\" cap to @url{https://wpa-sec.stanev.org/?submit} to
3516 see if the access point or the client is vulnerable to a dictionary attack.
3517 Convert the cap file to hccapx format and/or to WPA-PMKID-PBKDF2
3518 hashline (16800) with @command{hcxpcaptool} from the @code{hcxtools} package
3519 and check if the WLAN key or the master key was transmitted unencrypted.")
3520 (license license:expat)))
3521
3522 (define-public dante
3523 (package
3524 (name "dante")
3525 (version "1.4.3")
3526 (source
3527 (origin
3528 (method url-fetch)
3529 (uri (string-append "https://www.inet.no/dante/files/dante-"
3530 version ".tar.gz"))
3531 (sha256
3532 (base32 "0pbahkj43rx7rmv2x40mf5p3g3x9d6i2sz7pzglarf54w5ghd2j1"))))
3533 (build-system gnu-build-system)
3534 (arguments
3535 ;; XXX: The dynamic socks library doesn't work with 'libc.so' (GNU ld
3536 ;; script). When preloading is enabled, 'sockd' failed with:
3537 ;; … Failed to open library "libc.so": …: invalid ELF header
3538 '(#:configure-flags '("--disable-preload")))
3539 (home-page "https://www.inet.no/dante/")
3540 (synopsis "SOCKS server and client")
3541 (description "Dante is a SOCKS client and server implementation. It can
3542 be installed on a machine with access to an external TCP/IP network and will
3543 allow all other machines, without direct access to that network, to be relayed
3544 through the machine the Dante server is running on. The external network will
3545 never see any machines other than the one Dante is running on.")
3546 (license (license:non-copyleft "file://LICENSE"))))
3547
3548 (define-public restbed
3549 (package
3550 (name "restbed")
3551 (version "4.8")
3552 (source
3553 (origin
3554 (method git-fetch)
3555 (uri (git-reference
3556 (url "https://github.com/Corvusoft/restbed/")
3557 (commit version)))
3558 (file-name (git-file-name name version))
3559 (sha256
3560 (base32 "15j09x36i6zj6innl0w1mfzlc56qmjwrs82my8dsagqa2ikd08ya"))))
3561 (build-system cmake-build-system)
3562 (inputs
3563 (list asio catch-framework openssl))
3564 (arguments
3565 `(#:configure-flags
3566 '("-DBUILD_SSL=NO")
3567 #:phases
3568 (modify-phases %standard-phases
3569 (add-after 'unpack 'apply-patches-and-fix-paths
3570 (lambda* (#:key inputs #:allow-other-keys)
3571 (let ((asio (assoc-ref inputs "asio"))
3572 (catch (assoc-ref inputs "catch"))
3573 (openssl (assoc-ref inputs "openssl")))
3574 (substitute* "cmake/Findasio.cmake"
3575 (("(find_path\\( asio_INCLUDE asio\\.hpp HINTS ).*$" all begin)
3576 (string-append begin " \"" asio "/include\" )")))
3577 (substitute* "cmake/Findcatch.cmake"
3578 (("(find_path\\( catch_INCLUDE catch\\.hpp HINTS ).*$" all begin)
3579 (string-append begin " \"" catch "/include\" )")))
3580 (substitute* "cmake/Findopenssl.cmake"
3581 (("(find_library\\( ssl_LIBRARY ssl ssleay32 HINTS ).*$" all begin)
3582 (string-append begin " \"" openssl "/lib\" )"))
3583 (("(find_library\\( crypto_LIBRARY crypto libeay32 HINTS ).*$" all begin)
3584 (string-append begin " \"" openssl "/lib\" )"))
3585 (("(find_path\\( ssl_INCLUDE openssl/ssl\\.h HINTS ).*$" all begin)
3586 (string-append begin " \"" openssl "/include\" )")))))))))
3587 (synopsis "Asynchronous RESTful functionality to C++11 applications")
3588 (description "Restbed is a comprehensive and consistent programming
3589 model for building applications that require seamless and secure
3590 communication over HTTP.")
3591 (home-page "https://github.com/Corvusoft/restbed")
3592 (license license:agpl3+)))
3593
3594 (define-public restinio
3595 (package
3596 (name "restinio")
3597 (version "0.6.15")
3598 (source (origin
3599 (method git-fetch)
3600 (uri (git-reference
3601 (url "https://github.com/Stiffstream/restinio")
3602 (commit (string-append "v." version))))
3603 (file-name (git-file-name name version))
3604 (sha256
3605 (base32
3606 "1f8d5nfm8jqhspzsslwb1b7j4glipz31i9vszrcnkx3clc39nj2n"))))
3607 (build-system cmake-build-system)
3608 (inputs ; TODO: Need to force-keep references on some inputs, e.g. boost.
3609 (list zlib
3610 catch2
3611 openssl
3612 boost
3613 pcre
3614 pcre2
3615 sobjectizer))
3616 (propagated-inputs
3617 (list asio fmt http-parser))
3618 (arguments
3619 `(#:configure-flags '("-DRESTINIO_INSTALL=on")
3620 #:tests? #f ; TODO: The tests are called from the root CMakelist, need RESTINIO_TEST=on.
3621 #:phases
3622 (modify-phases %standard-phases
3623 (add-after 'unpack 'change-directory
3624 (lambda _
3625 (chdir "dev/restinio"))))))
3626 (home-page "https://stiffstream.com/en/products/restinio.html")
3627 (synopsis "C++14 library that gives you an embedded HTTP/Websocket server")
3628 (description "RESTinio is a header-only C++14 library that gives you an embedded
3629 HTTP/Websocket server. It is based on standalone version of ASIO
3630 and targeted primarily for asynchronous processing of HTTP-requests.")
3631 (license license:bsd-3)))
3632
3633 (define-public opendht
3634 (package
3635 (name "opendht")
3636 (version "2.4.10")
3637 (source (origin
3638 (method git-fetch)
3639 (uri (git-reference
3640 (url "https://github.com/savoirfairelinux/opendht")
3641 (commit (string-append "v" version))))
3642 (file-name (git-file-name name version))
3643 (sha256
3644 (base32
3645 "1kcc9vmi4swvahq2gikflgba9xfmix80dr9wa3v6xcj1ba2fjd6s"))))
3646 (outputs '("out" "tools" "debug"))
3647 (build-system gnu-build-system)
3648 (arguments
3649 (list
3650 #:imported-modules `((guix build python-build-system) ;for site-packages
3651 ,@%gnu-build-system-modules)
3652 #:modules '(((guix build python-build-system) #:prefix python:)
3653 (guix build gnu-build-system)
3654 (guix build utils))
3655 #:configure-flags
3656 #~(list "--enable-tests"
3657 "--enable-proxy-server"
3658 "--enable-push-notifications"
3659 "--enable-proxy-server-identity"
3660 "--enable-proxy-client")
3661 #:phases
3662 #~(modify-phases %standard-phases
3663 (add-after 'unpack 'disable-problematic-tests
3664 (lambda _
3665 ;; The dhtrunnertester test suite includes 'testListen', which
3666 ;; is sensitive to the performance/load of the machine it runs
3667 ;; on, introducing nondeterminism (see:
3668 ;; https://github.com/savoirfairelinux/opendht/issues/626).
3669 (substitute* "tests/Makefile.am"
3670 (("\\bdhtrunnertester\\.(h|cpp)\\b")
3671 ""))))
3672 (add-after 'unpack 'fix-python-installation-prefix
3673 ;; Specify the installation prefix for the compiled Python module
3674 ;; that would otherwise attempt to installs itself to Python's own
3675 ;; site-packages directory.
3676 (lambda _
3677 (substitute* "python/Makefile.am"
3678 (("--root=\\$\\(DESTDIR)/")
3679 (string-append "--root=/ --single-version-externally-managed "
3680 "--prefix=" #$output)))))
3681 (add-after 'unpack 'specify-runpath-for-python-module
3682 (lambda _
3683 (substitute* "python/setup.py.in"
3684 (("extra_link_args=\\[(.*)\\]" _ args)
3685 (string-append "extra_link_args=[" args
3686 ", '-Wl,-rpath=" #$output "/lib']")))))
3687 (replace 'check
3688 (lambda* (#:key tests? #:allow-other-keys)
3689 (when tests?
3690 (invoke "tests/opendht_unit_tests"))))
3691 (add-after 'install 'move-and-wrap-tools
3692 (lambda* (#:key inputs outputs #:allow-other-keys)
3693 (let* ((tools (assoc-ref outputs "tools"))
3694 (dhtcluster (string-append tools "/bin/dhtcluster"))
3695 (site-packages (python:site-packages inputs outputs)))
3696 (mkdir tools)
3697 (rename-file (string-append #$output "/bin")
3698 (string-append tools "/bin"))
3699 ;; TODO: Contribute a patch to python/Makefile.am to
3700 ;; automate this.
3701 (copy-file "python/tools/dhtcluster.py" dhtcluster)
3702 (chmod dhtcluster #o555)
3703 (wrap-program dhtcluster
3704 `("GUIX_PYTHONPATH" prefix (,site-packages)))))))))
3705 (inputs (list bash-minimal fmt readline))
3706 (propagated-inputs
3707 (list msgpack ;included in several installed headers
3708 restinio ;included in opendht/http.h
3709 ;; The following are listed in the 'Requires.private' field of
3710 ;; opendht.pc:
3711 argon2
3712 gnutls
3713 jsoncpp
3714 nettle
3715 openssl)) ;required for the DHT proxy
3716 (native-inputs
3717 (list autoconf
3718 automake
3719 pkg-config
3720 python
3721 python-cython
3722 libtool
3723 cppunit))
3724 (home-page "https://github.com/savoirfairelinux/opendht/")
3725 (synopsis "Lightweight Distributed Hash Table (DHT) library")
3726 (description "OpenDHT provides an easy to use distributed in-memory data
3727 store. Every node in the network can read and write values to the store.
3728 Values are distributed over the network, with redundancy. It includes the
3729 following features:
3730 @itemize
3731 @item Lightweight and scalable, designed for large networks and small devices;
3732 @item High resilience to network disruption;
3733 @item Public key cryptography layer providing optional data signature and
3734 encryption (using GnuTLS);
3735 @item IPv4 and IPv6 support;
3736 @item Clean and powerful C++14 map API;
3737 @item Bindings for C, Rust & Python 3;
3738 @item REST API with an optional HTTP client and server with push notification
3739 support.
3740 @end itemize
3741 The following tools are also included:
3742 @table @command
3743 @item dhtnode
3744 A command line tool to run a DHT node and perform operations supported by the
3745 library (get, put, etc.) with text values.
3746 @item dhtchat
3747 A very simple IM client working over the DHT.
3748 @end table")
3749 (license license:gpl3+)))
3750
3751 (define-public frrouting
3752 (package
3753 (name "frrouting")
3754 (version "7.5.1")
3755 (source (origin
3756 (method url-fetch)
3757 (uri (string-append "https://github.com/FRRouting/frr/releases/"
3758 "download/frr-" version "/frr-" version
3759 ".tar.xz"))
3760 (sha256
3761 (base32
3762 "1r7gh5h27ii7d1d0z0x48wx7hs8vvympv3gqvy3cwzg05q5vk9xs"))))
3763 (build-system gnu-build-system)
3764 (inputs
3765 (list c-ares json-c libcap libyang readline))
3766 (native-inputs
3767 (list perl pkg-config python-wrapper python-pytest))
3768 (home-page "https://frrouting.org/")
3769 (synopsis "IP routing protocol suite")
3770 (description "FRRouting (FRR) is an IP routing protocol suite which includes
3771 protocol daemons for BGP, IS-IS, LDP, OSPF, PIM, and RIP.")
3772 (license license:gpl2+)))
3773
3774 (define-public bird
3775 (package
3776 (name "bird")
3777 (version "2.0.10")
3778 (source (origin
3779 (method url-fetch)
3780 (uri (string-append "ftp://bird.network.cz/pub/bird/bird-"
3781 version ".tar.gz"))
3782 (sha256
3783 (base32
3784 "0npx3zgbjnhm4905zmj2qkz3d13s8hakassq6sbzm1ywv3fl3lvy"))))
3785 (inputs
3786 (list libssh readline))
3787 (native-inputs
3788 (list bison flex))
3789 (arguments
3790 `(#:configure-flags '("--localstatedir=/var" "--enable-ipv6")
3791 #:phases
3792 (modify-phases %standard-phases
3793 (add-before 'configure 'dont-create-sysconfdir
3794 (lambda* (#:key outputs #:allow-other-keys)
3795 (substitute* "Makefile.in"
3796 ((" \\$\\(DESTDIR)/\\$\\(runstatedir)") "")))))))
3797 (build-system gnu-build-system)
3798 (home-page "http://bird.network.cz")
3799 (synopsis "Internet Routing Daemon")
3800 (description "BIRD is an Internet routing daemon with full support for all
3801 the major routing protocols. It allows redistribution between protocols with a
3802 powerful route filtering syntax and an easy-to-use configuration interface.")
3803 (license license:gpl2+)))
3804
3805 (define-public iwd
3806 (package
3807 (name "iwd")
3808 (version "1.24")
3809 (source (origin
3810 (method git-fetch)
3811 (uri (git-reference
3812 (url "https://git.kernel.org/pub/scm/network/wireless/iwd.git")
3813 (commit version)))
3814 (file-name (git-file-name name version))
3815 (sha256
3816 (base32
3817 "1sdi7008j5jhlg2rqpczh1pzb8zay6mc9dpnjjsmdnsmrcr3v7wi"))))
3818 (build-system gnu-build-system)
3819 (inputs
3820 (list dbus ell (package-source ell) readline))
3821 (native-inputs
3822 (list autoconf
3823 automake
3824 libtool
3825 pkg-config
3826 python
3827 python-docutils
3828 openssl))
3829 (arguments
3830 `(#:configure-flags
3831 ,#~(list "--disable-systemd-service"
3832 "--enable-external-ell"
3833 "--enable-hwsim"
3834 "--enable-tools"
3835 "--enable-wired"
3836 "--localstatedir=/var"
3837 (string-append "--with-dbus-datadir=" #$output "/share/")
3838 (string-append "--with-dbus-busdir="
3839 #$output "/share/dbus-1/system-services"))
3840 #:phases
3841 (modify-phases %standard-phases
3842 (add-after 'unpack 'copy-ell-header-files
3843 ;; Copy into the source tree two of ell's private header files that
3844 ;; it shares with iwd, as is required to build with the
3845 ;; "--enable-external-ell" configure option.
3846 ;; See the definition of "ell_shared" in iwd's Makefile.am.
3847 (lambda* (#:key inputs #:allow-other-keys)
3848 (let ((ell-header-dir (search-input-directory inputs "/ell"))
3849 (target-dir "ell"))
3850 (mkdir target-dir)
3851 (for-each
3852 (lambda (file-name)
3853 (copy-file (string-append ell-header-dir "/" file-name)
3854 (string-append target-dir "/" file-name)))
3855 '("asn1-private.h" "useful.h")))))
3856 (add-after 'configure 'patch-Makefile
3857 (lambda _
3858 (substitute* "Makefile"
3859 ;; Don't try to 'mkdir /var'.
3860 (("\\$\\(MKDIR_P\\) -m 700") "true")))))))
3861 (home-page "https://git.kernel.org/pub/scm/network/wireless/iwd.git/")
3862 (synopsis "Internet Wireless Daemon")
3863 (description "iwd is a wireless daemon for Linux that aims to replace WPA
3864 Supplicant. It optimizes resource utilization by not depending on any external
3865 libraries and instead utilizing features provided by the Linux kernel to the
3866 maximum extent possible.")
3867 (license license:lgpl2.1+)))
3868
3869 (define-public libyang
3870 (package
3871 (name "libyang")
3872 (version "1.0.215")
3873 (source (origin
3874 (method git-fetch)
3875 (uri (git-reference
3876 (url "https://github.com/CESNET/libyang")
3877 (commit (string-append "v" version))))
3878 (file-name (git-file-name name version))
3879 (sha256
3880 (base32
3881 "0mrs2ppmq77z8sbqgm2w0rl9bfgybd6bcxanakfww4chih6cy0dw"))))
3882 (build-system cmake-build-system)
3883 (arguments
3884 `(#:configure-flags
3885 (list "-DENABLE_BUILD_TESTS=ON" "-DENABLE_LYD_PRIV=ON")))
3886 (propagated-inputs (list pcre))
3887 (native-inputs (list cmocka pkg-config))
3888 (home-page "https://github.com/CESNET/libyang")
3889 (synopsis "YANG data modelling language library")
3890 (description "libyang is a YANG data modelling language parser and toolkit
3891 written (and providing API) in C. Current implementation covers YANG 1.0 (RFC
3892 6020) as well as YANG 1.1 (RFC 7950).")
3893 (license license:bsd-3)))
3894
3895 (define-public batctl
3896 (package
3897 (name "batctl")
3898 (version "2021.4")
3899 (source
3900 (origin
3901 (method url-fetch)
3902 (uri (string-append "https://downloads.open-mesh.org/batman/releases/batman-adv-"
3903 version "/batctl-" version ".tar.gz"))
3904 (sha256
3905 (base32 "1ryqz90av2p5pgmmpi1afmycd18zhpwz1i4f7r0s359jis86xndn"))))
3906 (inputs
3907 (list libnl))
3908 (native-inputs
3909 (list pkg-config))
3910 (build-system gnu-build-system)
3911 (arguments
3912 `(#:tests? #f
3913 ;; Batctl only has a makefile. Thus we disable tests and
3914 ;; configuration, passing in a few make-flags.
3915 #:phases (modify-phases %standard-phases (delete 'configure))
3916 #:make-flags
3917 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
3918 (string-append "PKG_CONFIG="
3919 (search-input-file %build-inputs
3920 "/bin/pkg-config"))
3921 ,(string-append "CC=" (cc-for-target)))))
3922 (home-page "https://www.open-mesh.org/projects/batman-adv/wiki/Wiki")
3923 (synopsis "Management tool for the mesh networking BATMAN protocol")
3924 (description "This package provides a control tool for the
3925 B.A.T.M.A.N. mesh networking routing protocol provided by the Linux kernel
3926 module @code{batman-adv}, for Layer 2.")
3927 (license license:gpl2+)))
3928
3929 (define-public pagekite
3930 (package
3931 (name "pagekite")
3932 (version "1.5.2.200725")
3933 (source
3934 (origin
3935 (method git-fetch)
3936 (uri (git-reference
3937 (url "https://github.com/pagekite/PyPagekite")
3938 (commit (string-append "v" version))))
3939 (file-name (git-file-name name version))
3940 (sha256
3941 (base32 "0lig1i42bn9isw848vnml5qhcaa04x1dr2hb075bm0a3439kv3rr"))))
3942 (build-system python-build-system)
3943 (arguments
3944 `(#:phases
3945 (modify-phases %standard-phases
3946 (add-after 'install 'install-man-page
3947 (lambda* (#:key inputs outputs #:allow-other-keys)
3948 (let* ((out (assoc-ref outputs "out"))
3949 (man (string-append out "/share/man")))
3950 (invoke "make" "doc/pagekite.1")
3951 (install-file "doc/pagekite.1" (string-append man "/man1"))))))))
3952 (inputs
3953 (list python-six python-socksipychain))
3954 (home-page "https://pagekite.net/")
3955 (synopsis "Make localhost servers publicly visible")
3956 (description
3957 "PageKite implements a tunneled reverse proxy which makes it easy to make
3958 a service (such as an HTTP or SSH server) on localhost visible to the wider
3959 Internet, even behind NAT or restrictive firewalls. A managed front-end relay
3960 service is available at @url{https://pagekite.net/}, or you can run your own.")
3961 (license license:agpl3+)))
3962
3963 (define-public ipcalc
3964 (package
3965 (name "ipcalc")
3966 (version "0.51")
3967 (source
3968 (origin
3969 (method git-fetch)
3970 (uri (git-reference
3971 ;; This is the IPv6-capable continuation of the unmaintained
3972 ;; <https://jodies.de/ipcalc-archive/>.
3973 (url "https://github.com/kjokjo/ipcalc")
3974 (commit version)))
3975 (file-name (git-file-name name version))
3976 (sha256
3977 (base32 "0cnygb69vjmp3by75jcd2z4y3ybp1s7x4nl3d32xa49h8lkhdbfv"))))
3978 (inputs `(("perl" ,perl)))
3979 (build-system trivial-build-system) ;no Makefile.PL
3980 (arguments
3981 `(#:modules ((guix build utils))
3982 #:builder
3983 (begin
3984 (use-modules (guix build utils))
3985 (use-modules (srfi srfi-1))
3986 (let* ((source (assoc-ref %build-inputs "source"))
3987 (perl (string-append (assoc-ref %build-inputs "perl")
3988 "/bin"))
3989 (out (assoc-ref %outputs "out"))
3990 (bin (string-append out "/bin"))
3991 (doc (string-append out "/share/doc/ipcalc")))
3992 (copy-recursively source "source")
3993 (chdir "source")
3994
3995 (install-file "ipcalc" bin)
3996 (patch-shebang (string-append bin "/ipcalc") (list perl))))))
3997 (synopsis "Simple IP network calculator")
3998 (description "ipcalc takes an IP address and netmask and calculates the
3999 resulting broadcast, network, Cisco wildcard mask, and host range. By giving
4000 a second netmask, you can design subnets and supernets. It is also intended
4001 to be a teaching tool and presents the subnetting results as
4002 easy-to-understand binary values.")
4003 (home-page "https://github.com/kjokjo/ipcalc")
4004 (license license:gpl2+)))
4005
4006 (define-public tunctl
4007 (package
4008 (name "tunctl")
4009 (version "1.5")
4010 (source
4011 (origin
4012 (method url-fetch)
4013 (uri (string-append "mirror://sourceforge/tunctl/tunctl/" version "/"
4014 "tunctl-" version ".tar.gz"))
4015 (sha256
4016 (base32 "1zsgn7w6l2zh2q0j6qaw8wsx981qcr536qlz1lgb3b5zqr66qama"))))
4017 (build-system gnu-build-system)
4018 (arguments
4019 `(#:phases
4020 (modify-phases %standard-phases
4021 (delete 'bootstrap) ;there is no configure.ac file
4022 (delete 'configure) ;there is no configure script
4023 (delete 'check) ;there are no tests
4024 (replace 'build
4025 (lambda _
4026 (setenv "CC" "gcc")
4027 (invoke "make" "tunctl")))
4028 ;; TODO: Requires docbook2x to generate man page from SGML.
4029 (replace 'install
4030 (lambda* (#:key outputs #:allow-other-keys)
4031 (let* ((out (assoc-ref outputs "out"))
4032 (bin (string-append out "/bin")))
4033 (install-file "tunctl" bin))
4034 #t)))))
4035 (home-page "http://tunctl.sourceforge.net")
4036 (synopsis "Utility to set up and maintain TUN/TAP network interfaces")
4037 (description "Tunctl is used to set up and maintain persistent TUN/TAP
4038 network interfaces, enabling user applications to simulate network traffic.
4039 Such interfaces are useful for VPN software, virtualization, emulation,
4040 simulation, and a number of other applications.")
4041 (license license:gpl2)))
4042
4043 (define-public wol
4044 (package
4045 (name "wol")
4046 (version "0.7.1")
4047 (source
4048 (origin
4049 (method url-fetch)
4050 (uri (string-append "mirror://sourceforge/wake-on-lan/wol/"
4051 version "/wol-" version ".tar.gz"))
4052 (sha256
4053 (base32 "08i6l5lr14mh4n3qbmx6kyx7vjqvzdnh3j9yfvgjppqik2dnq270"))))
4054 (build-system gnu-build-system)
4055 (home-page "https://sourceforge.net/projects/wake-on-lan/")
4056 (synopsis "Implements Wake On LAN functionality in a small program")
4057 (description "Tool to send a magic packet to wake another host on the
4058 network. This must be enabled on the target host, usually in the BIOS.")
4059 (license license:gpl2)))
4060
4061 (define-public traceroute
4062 (package
4063 (name "traceroute")
4064 (version "2.1.0")
4065 (source
4066 (origin
4067 (method url-fetch)
4068 (uri (string-append "mirror://sourceforge/traceroute/traceroute/"
4069 "traceroute-" version "/traceroute-"
4070 version ".tar.gz"))
4071 (sha256
4072 (base32 "1dh32vcfawkl1p9g4ral1p0camds4paqr8db1kaqxwyk6hmd4s9n"))))
4073 (build-system gnu-build-system)
4074 (arguments
4075 `(#:tests? #f ;no test suite
4076 #:make-flags
4077 (list (string-append "LIBRARY_PATH="
4078 (assoc-ref %build-inputs "libc") "/lib")
4079 (string-append "CFLAGS=-I"
4080 (assoc-ref %build-inputs "kernel-headers")
4081 "/include")
4082 "LDFLAGS=-lm -L../libsupp"
4083 (string-append "prefix=" (assoc-ref %outputs "out")))
4084 #:phases
4085 (modify-phases %standard-phases
4086 (add-after 'unpack 'patch-make
4087 (lambda _
4088 (substitute* "default.rules"
4089 ((" \\$\\(LIBDEPS\\)") "$(filter-out -l%,$(LIBDEPS))"))))
4090 (delete 'bootstrap) ;no configure.ac file
4091 (delete 'configure)))) ;no configure script
4092 (home-page "http://traceroute.sourceforge.net/")
4093 (synopsis "Tracks the route taken by packets over an IP network")
4094 (description "This package provides a modern, but Linux-specific
4095 implementation of the @command{traceroute} command that can be used to follow
4096 the route taken by packets on an IP network on their way to a given host. It
4097 utilizes the IP protocol's time to live (TTL) field and attempts to elicit an
4098 ICMP TIME_EXCEEDED response from each gateway along the path to the host.
4099 Compared to other implementations, this @command{traceroute} command allows
4100 some traces for unprivileged users.")
4101 (license (list license:gpl2+
4102 license:lgpl2.1+)))) ;for the libsupp subdirectory
4103
4104 (define-public vde2
4105 (let ((commit "8c65ebc464b2f986d5f1f4e6ae829ef4480c9d5a")
4106 (revision "0"))
4107 (package
4108 (name "vde2")
4109 (version (git-version "2.3.2" revision commit))
4110 (source
4111 (origin
4112 (method git-fetch)
4113 (uri (git-reference
4114 (url "https://github.com/virtualsquare/vde-2")
4115 (commit commit)))
4116 (file-name (git-file-name name version))
4117 (sha256
4118 (base32 "0l5xf71sv9zm5zw0wg8xgip58c0wh8zck2bazyc2a8gb67gc3s8y"))))
4119 (build-system gnu-build-system)
4120 (arguments
4121 `(#:parallel-build? #f)) ; Build fails if #t.
4122 (native-inputs
4123 (list autoconf automake libtool))
4124 (inputs
4125 (list python libpcap wolfssl))
4126 (home-page "https://github.com/virtualsquare/vde-2")
4127 (synopsis "Virtual Distributed Ethernet")
4128 (description "VDE is a set of programs to provide virtual software-defined
4129 Ethernet network interface controllers across multiple virtual or
4130 physical, local or remote devices. The VDE architecture provides
4131 virtual counterparts to hardware components such as switches and
4132 cables.")
4133 (license (list license:gpl2
4134 license:lgpl2.1 ; libvdeplug
4135 (license:non-copyleft ; slirpvde
4136 "file://COPYING.slirpvde"
4137 "See COPYING.slirpvde in the distribution."))))))
4138
4139 (define-public haproxy
4140 (package
4141 (name "haproxy")
4142 (version "2.1.7")
4143 (source (origin
4144 (method url-fetch)
4145 (uri (string-append "https://www.haproxy.org/download/"
4146 (version-major+minor version)
4147 "/src/haproxy-" version ".tar.gz"))
4148 (sha256
4149 (base32
4150 "0fd3c1znid5a9w3gcf77b85hm2a2558w9s02c4b7xzkmivqnqbir"))))
4151 (build-system gnu-build-system)
4152 (arguments
4153 `(#:make-flags
4154 (let* ((out (assoc-ref %outputs "out")))
4155 (list (string-append "PREFIX=" out)
4156 (string-append "DOCDIR=" out "/share/" ,name)
4157 "TARGET=linux-glibc"
4158 "USE_LUA=1"
4159 "USE_OPENSSL=1"
4160 "USE_ZLIB=1"
4161 "USE_PCRE_2=1"))
4162 #:tests? #f ; there are only regression tests, using varnishtest
4163 #:phases
4164 (modify-phases %standard-phases
4165 (delete 'configure))))
4166 (inputs
4167 (list lua openssl pcre2 zlib))
4168 (home-page "https://www.haproxy.org/")
4169 (synopsis "Reliable, high performance TCP/HTTP load balancer")
4170 (description "HAProxy offers @acronym{HA, high availability}, load
4171 balancing, and proxying for TCP and HTTP-based applications. It is particularly
4172 suited to Web sites crawling under very high loads while needing persistence or
4173 Layer 7 processing. Supporting tens of thousands of connections is clearly
4174 realistic with today's hardware.")
4175 (license (list license:gpl2+
4176 license:lgpl2.1
4177 license:lgpl2.1+))))
4178
4179 (define-public lldpd
4180 (package
4181 (name "lldpd")
4182 (version "1.0.14")
4183 (source
4184 (origin
4185 (method url-fetch)
4186 (uri (string-append "https://media.luffy.cx/files/lldpd/lldpd-"
4187 version ".tar.gz"))
4188 (sha256
4189 (base32 "1s0j5p0mjh1pda1aq5wm4hd41fh1m864jgbs82y5sshi9whijj57"))
4190 (modules '((guix build utils)))
4191 (snippet
4192 '(begin
4193 ;; Drop bundled library.
4194 (delete-file-recursively "libevent")))))
4195 (arguments
4196 (list #:configure-flags
4197 #~(list
4198 "--with-privsep-user=nobody"
4199 "--with-privsep-group=nogroup"
4200 "--localstatedir=/var"
4201 "--enable-pie"
4202 "--disable-static"
4203 "--without-embedded-libevent"
4204 (string-append "--with-systemdsystemunitdir="
4205 #$output "/lib/systemd/system"))))
4206 (build-system gnu-build-system)
4207 (inputs
4208 (list libevent libxml2 openssl readline))
4209 (native-inputs
4210 (list pkg-config))
4211 (home-page "https://vincentbernat.github.io/lldpd/")
4212 (synopsis "Locate neighbors of your network equipment")
4213 (description
4214 "The @dfn{Link Layer Discovery Protocol} (LLDP) is an industry standard
4215 protocol designed to supplant proprietary Link-Layer protocols such as EDP or
4216 CDP. The goal of LLDP is to provide an inter-vendor compatible mechanism to
4217 deliver Link-Layer notifications to adjacent network devices. @code{lldpd} is
4218 an implementation of LLDP. It also supports some proprietary protocols.")
4219 (license license:isc)))
4220
4221 (define-public hashcash
4222 (package
4223 (name "hashcash")
4224 (version "1.22")
4225 (source
4226 (origin
4227 (method url-fetch)
4228 (uri (string-append "http://www.hashcash.org/source/hashcash-"
4229 version ".tgz"))
4230 (sha256
4231 (base32
4232 "15kqaimwb2y8wvzpn73021bvay9mz1gqqfc40gk4hj6f84nz34h1"))))
4233 (build-system gnu-build-system)
4234 (arguments
4235 `(#:make-flags (list (string-append "CC=" ,(cc-for-target)))
4236 #:phases
4237 (modify-phases %standard-phases
4238 (delete 'configure)
4239 ;; No tests available.
4240 (delete 'check)
4241 (replace 'install
4242 (lambda* (#:key outputs #:allow-other-keys)
4243 (let* ((outdir (assoc-ref outputs "out"))
4244 (bindir (string-append outdir "/bin"))
4245 (mandir (string-append outdir "/share/man/man1"))
4246 (docdir (string-append outdir "/share/doc/hashcash-" ,version)))
4247 ;; Install manually, as we don't need the `sha1' binary
4248 (install-file "hashcash" bindir)
4249 (install-file "hashcash.1" mandir)
4250 (install-file "README" docdir)
4251 (install-file "LICENSE" docdir)
4252 (install-file "CHANGELOG" docdir)
4253 #t))))))
4254 (home-page "https://www.hashcash.org/")
4255 (synopsis "Denial-of-service countermeasure")
4256 (description "Hashcash is a proof-of-work algorithm, which has been used
4257 as a denial-of-service countermeasure technique in a number of systems.
4258
4259 A hashcash stamp constitutes a proof-of-work which takes a parametrizable
4260 amount of work to compute for the sender. The recipient can verify received
4261 hashcash stamps efficiently.
4262
4263 This package contains a command-line tool for computing and verifying hashcash
4264 stamps.")
4265 (license license:public-domain)))
4266
4267 (define-public nbd
4268 (package
4269 (name "nbd")
4270 (version "3.24")
4271 (source
4272 (origin
4273 (method url-fetch)
4274 (uri (string-append "mirror://sourceforge/nbd/nbd/" version
4275 "/nbd-" version ".tar.xz"))
4276 (sha256
4277 (base32 "036ib2d5722sx9nn7jydqfpl5ici5if2z7g8xrskzcx74dniaxv8"))))
4278 (build-system gnu-build-system)
4279 (inputs
4280 (list glib))
4281 (native-inputs
4282 (list bison pkg-config which))
4283 (home-page "https://nbd.sourceforge.io/")
4284 (synopsis "NBD client and server")
4285 (description "This package provides the NBD (Network Block Devices)
4286 client and server. It allows you to use remote block devices over a TCP/IP
4287 network.")
4288 (license license:gpl2)))
4289
4290 (define-public yggdrasil
4291 (package
4292 (name "yggdrasil")
4293 (version "0.4.3")
4294 (source
4295 (origin
4296 (method git-fetch)
4297 (uri
4298 (git-reference
4299 (url "https://github.com/yggdrasil-network/yggdrasil-go")
4300 (commit (string-append "v" version))
4301 (recursive? #t)))
4302 (file-name (git-file-name name version))
4303 (sha256
4304 (base32 "0jp6998a45xi8pbi8p84chvpm1mhhcvcxm1avi1c1gjjp4jqm3vl"))
4305 (patches (search-patches "yggdrasil-extra-config.patch"))))
4306 (build-system go-build-system)
4307 (arguments
4308 '(#:import-path "github.com/yggdrasil-network/yggdrasil-go"
4309 ;; TODO: figure out how tests are run
4310 #:tests? #f
4311 #:install-source? #f
4312 #:phases
4313 (modify-phases %standard-phases
4314 (replace 'build
4315 (lambda* (#:key import-path build-flags #:allow-other-keys)
4316 (for-each
4317 (lambda (directory)
4318 ((assoc-ref %standard-phases 'build)
4319 #:build-flags build-flags
4320 #:import-path directory))
4321 (list "github.com/yggdrasil-network/yggdrasil-go/cmd/yggdrasil"
4322 "github.com/yggdrasil-network/yggdrasil-go/cmd/yggdrasilctl"
4323 "github.com/yggdrasil-network/yggdrasil-go/cmd/genkeys"))
4324 #t)))))
4325 ;; https://github.com/kardianos/minwinsvc is windows only
4326 (propagated-inputs
4327 (list ;;("go-golang-zx2c4-com-wireguard-windows"
4328 ;; ,go-golang-zx2c4-com-wireguard-windows)
4329 go-golang-zx2c4-com-wireguard
4330 go-golang-org-x-text
4331 go-golang-org-x-sys
4332 go-golang-org-x-net
4333 go-golang-org-x-crypto
4334 go-netns
4335 go-netlink
4336 go-github-com-mitchellh-mapstructure
4337 go-github-com-mattn-go-runewidth
4338 go-github-com-mattn-go-isatty
4339 go-github-com-kardianos-minwinsvc
4340 go-github-com-hjson-hjson-go
4341 go-github-com-hashicorp-go-syslog
4342 go-github-com-gologme-log
4343 go-github-com-fatih-color
4344 go-github-com-cheggaaa-pb-v3
4345 go-github-com-vividcortex-ewma
4346 go-github-com-arceliar-phony
4347 go-github-com-arceliar-ironwood))
4348 (home-page "https://yggdrasil-network.github.io/blog.html")
4349 (synopsis
4350 "Experiment in scalable routing as an encrypted IPv6 overlay network")
4351 (description
4352 "Yggdrasil is an early-stage implementation of a fully end-to-end encrypted
4353 IPv6 network. It is lightweight, self-arranging, supported on multiple
4354 platforms and allows pretty much any IPv6-capable application to communicate
4355 securely with other Yggdrasil nodes. Yggdrasil does not require you to have
4356 IPv6 Internet connectivity - it also works over IPv4.")
4357 (license
4358 ;; As a special exception to the GNU Lesser General Public License
4359 ;; version 3 ("LGPL3"), the copyright holders of this Library give you
4360 ;; permission to convey to a third party a Combined Work that links
4361 ;; statically or dynamically to this Library without providing any Minimal
4362 ;; Corresponding Source or Minimal Application Code as set out in 4d or
4363 ;; providing the installation information set out in section 4e, provided
4364 ;; that you comply with the other provisions of LGPL3 and provided that you
4365 ;; meet, for the Application the terms and conditions of the license(s)
4366 ;; which apply to the Application. Except as stated in this special
4367 ;; exception, the provisions of LGPL3 will continue to comply in full to
4368 ;; this Library. If you modify this Library, you may apply this exception
4369 ;; to your version of this Library, but you are not obliged to do so. If
4370 ;; you do not wish to do so, delete this exception statement from your
4371 ;; version. This exception does not (and cannot) modify any license terms
4372 ;; which apply to the Application, with which you must still comply
4373 license:lgpl3)))
4374
4375 (define-public netdiscover
4376 (package
4377 (name "netdiscover")
4378 (version "0.7")
4379 (source
4380 (origin
4381 (method git-fetch)
4382 (uri (git-reference
4383 (url "https://github.com/netdiscover-scanner/netdiscover")
4384 (commit version)))
4385 (sha256
4386 (base32 "0g8w8rlg16dsibxi4dnyn7v7r8wwi5ypd51c4w59j0ps2id0w8yj"))
4387 (file-name (string-append "netdiscover-" version))))
4388 (arguments
4389 `(#:tests? #f)) ;; no tests
4390 (build-system gnu-build-system)
4391 (inputs
4392 (list libnet libpcap))
4393 (native-inputs
4394 (list autoconf automake))
4395 (synopsis "Network address discovery tool")
4396 (description "Netdiscover is a network address discovery tool developed
4397 mainly for wireless networks without a @acronym{DHCP} server. It also works
4398 on hub/switched networks. It is based on @acronym{ARP} packets, it will send
4399 @acronym{ARP} requests and sniff for replies.")
4400 (home-page "https://github.com/netdiscover-scanner/netdiscover")
4401 (license license:gpl3+)))
4402
4403 (define-public putty
4404 (package
4405 (name "putty")
4406 (version "0.77")
4407 (source
4408 (origin
4409 (method url-fetch)
4410 (uri (list (string-append "https://the.earth.li/~sgtatham/putty/"
4411 version "/putty-" version ".tar.gz")
4412 (string-append "http://www.putty.be/" version
4413 "/putty-" version ".tar.gz")))
4414 (sha256
4415 (base32 "1rgabc447a5aa9h16krpg3x78vh5jf4l6hkbqzr4bz9qabs7d6j1"))))
4416 (build-system cmake-build-system)
4417 (arguments
4418 `(#:phases
4419 (modify-phases %standard-phases
4420 (replace 'check
4421 ;; As ‘documented’ in ./Buildscr and the 0.76 Makefile.in.
4422 (lambda* (#:key tests? #:allow-other-keys)
4423 (when tests?
4424 (setenv "PUTTY_TESTCRYPT" "./testcrypt")
4425 (invoke (string-append "../putty-" ,version
4426 "/test/cryptsuite.py"))))))))
4427 (inputs
4428 (list gtk+))
4429 (native-inputs
4430 (list perl
4431 pkg-config
4432
4433 ;; For tests.
4434 python))
4435 (synopsis "Graphical @acronym{SSH, Secure SHell} and telnet client")
4436 (description "PuTTY is a graphical text terminal client. It supports
4437 @acronym{SSH, Secure SHell}, telnet, and raw socket connections with good
4438 terminal emulation. It can authenticate with public keys and Kerberos
4439 single-sign-on. It also includes command-line @acronym{SFTP, Secure File
4440 Transfer Protocol} and older @acronym{SCP, Secure Copy Protocol}
4441 implementations.")
4442 (home-page "https://www.chiark.greenend.org.uk/~sgtatham/putty/")
4443 (license license:expat)))