projects/guix·blob java-team · refs

5695 lines · 221.9 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014, 2017, 2018, 2021 Ludovic Courtès <[email protected]>
3;;; Copyright © 2015, 2016, 2017, 2018, 2020, 2024, 2025 Ricardo Wurmus <[email protected]>
4;;; Copyright © 2015 Mark H Weaver <[email protected]>
5;;; Copyright © 2015, 2016, 2017, 2021 Stefan Reichör <[email protected]>
6;;; Copyright © 2016 Raimon Grau <[email protected]>
7;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <[email protected]>
8;;; Copyright © 2016 John Darrington <[email protected]>
9;;; Copyright © 2016-2023 Nicolas Goaziou <[email protected]>
10;;; Copyright © 2016 Eric Bavier <[email protected]>
11;;; Copyright © 2016, 2017 Nikita <[email protected]>
12;;; Copyright © 2016, 2017, 2018 Arun Isaac <[email protected]>
13;;; Copyright © 2016 Benz Schenk <[email protected]>
14;;; Copyright © 2016, 2017 Pjotr Prins <[email protected]>
15;;; Copyright © 2017 Mathieu Othacehe <[email protected]>
16;;; Copyright © 2017, 2020, 2021 Leo Famulari <[email protected]>
17;;; Copyright © 2017-2024 Efraim Flashner <[email protected]>
18;;; Copyright © 2017, 2018, 2019 Rutger Helling <[email protected]>
19;;; Copyright © 2017, 2019 Gábor Boskovits <[email protected]>
20;;; Copyright © 2017 Thomas Danckaert <[email protected]>
21;;; Copyright © 2018 Adam Van Ymeren <[email protected]>
22;;; Copyright © 2018 Fis Trivial <[email protected]>
23;;; Copyright © 2018, 2019 Tonton <[email protected]>
24;;; Copyright © 2018 Clément Lassieur <[email protected]>
25;;; Copyright © 2018 Theodoros Foradis <[email protected]>
26;;; Copyright © 2018, 2020-2022 Marius Bakke <[email protected]>
27;;; Copyright © 2018, 2020, 2021, 2022 Oleg Pykhalov <[email protected]>
28;;; Copyright © 2018 Pierre Neidhardt <[email protected]>
29;;; Copyright © 2019-2026 Maxim Cournoyer <[email protected]>
30;;; Copyright © 2019 Vasile Dumitrascu <[email protected]>
31;;; Copyright © 2019 Julien Lepiller <[email protected]>
32;;; Copyright © 2019 Timotej Lazar <[email protected]>
33;;; Copyright © 2019, 2021 Brice Waegeneire <[email protected]>
34;;; Copyright © 2019, 2020 Alex Griffin <[email protected]>
35;;; Copyright © 2019, 2020 Jan Wielkiewicz <[email protected]>
36;;; Copyright © 2019 Daniel Schaefer <[email protected]>
37;;; Copyright © 2019 Diego N. Barbato <[email protected]>
38;;; Copyright © 2020, 2021 Vincent Legoll <[email protected]>
39;;; Copyright © 2020 Jakub Kądziołka <[email protected]>
40;;; Copyright © 2020 Jesse Dowell <[email protected]>
41;;; Copyright © 2020 Hamzeh Nasajpour <[email protected]>
42;;; Copyright © 2020, 2022 Michael Rohleder <[email protected]>
43;;; Copyright © 2021 Fakhri Sajadi <[email protected]>
44;;; Copyright © 2021 Hartmut Goebel <[email protected]>
45;;; Copyright © 2021 Justin Veilleux <[email protected]>
46;;; Copyright © 2021 Vinicius Monego <[email protected]>
47;;; Copyright © 2021 Felix Gruber <[email protected]>
48;;; Copyright © 2021 Milkey Mouse <[email protected]>
49;;; Copyright © 2021 Guillaume Le Vaillant <[email protected]>
50;;; Copyright © 2021 Maxime Devos <[email protected]>
51;;; Copyright © 2022 Simon South <[email protected]>
52;;; Copyright © 2022 Pavel Shlyak <[email protected]>
53;;; Copyright © 2022 Pierre Langlois <[email protected]>
54;;; Copyright © 2022 Petr Hodina <[email protected]>
55;;; Copyright © 2022 Manolis Fragkiskos Ragkousis <[email protected]>
56;;; Copyright © 2022 Reza Alizadeh Majd <[email protected]>
57;;; Copyright © 2022 Nicolas Graves <[email protected]>
58;;; Copyright © 2023 Andreas Enge <[email protected]>
59;;; Copyright © 2023 Sharlatan Hellseher <[email protected]>
60;;; Copyright © 2023 Bruno Victal <[email protected]>
61;;; Copyright © 2023 Yovan Naumovski <[email protected]>
62;;; Copyright © 2023, 2024 Zheng Junjie <[email protected]>
63;;; Copyright © 2023, 2024, 2025, 2026 Artyom V. Poptsov <[email protected]>
64;;; Copyright © 2024 Tomas Volf <[email protected]>
65;;; Copyright © 2022 Dominic Martinez <[email protected]>
66;;; Copyright © 2024 Alexey Abramov <[email protected]>
67;;; Copyright © 2024 James Smith <[email protected]>
68;;; Copyright © 2025 Sughosha <[email protected]>
69;;; Copyright © 2025 B. Wilson <[email protected]>
70;;; Copyright © 2024 Janneke Nieuwenhuizen <[email protected]>
71;;; Copyright © 2024, 2025 Janneke Nieuwenhuizen <[email protected]>
72;;; Copyright © 2025, 2026 Ashish SHUKLA <[email protected]>
73;;; Copyright © 2025 Jared Klingenberger <[email protected]>
74;;; Copyright © 2026 Carlos Durán Domínguez <[email protected]>
75;;; Copyright © 2026 bdunahu <[email protected]>
76;;; Copyright © 2026 Douglas Deslauriers <[email protected]>
77;;;
78;;; This file is part of GNU Guix.
79;;;
80;;; GNU Guix is free software; you can redistribute it and/or modify it
81;;; under the terms of the GNU General Public License as published by
82;;; the Free Software Foundation; either version 3 of the License, or (at
83;;; your option) any later version.
84;;;
85;;; GNU Guix is distributed in the hope that it will be useful, but
86;;; WITHOUT ANY WARRANTY; without even the implied warranty of
87;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
88;;; GNU General Public License for more details.
89;;;
90;;; You should have received a copy of the GNU General Public License
91;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
92
93(define-module (gnu packages networking)
94 #:use-module (gnu packages admin)
95 #:use-module (gnu packages aidc)
96 #:use-module (gnu packages algebra)
97 #:use-module (gnu packages assembly)
98 #:use-module (gnu packages audio)
99 #:use-module (gnu packages autogen)
100 #:use-module (gnu packages autotools)
101 #:use-module (gnu packages base)
102 #:use-module (gnu packages bash)
103 #:use-module (gnu packages bison)
104 #:use-module (gnu packages boost)
105 #:use-module (gnu packages c)
106 #:use-module (gnu packages check)
107 #:use-module (gnu packages cmake)
108 #:use-module (gnu packages code)
109 #:use-module (gnu packages compression)
110 #:use-module (gnu packages cpp)
111 #:use-module (gnu packages crypto)
112 #:use-module (gnu packages curl)
113 #:use-module (gnu packages cyrus-sasl)
114 #:use-module (gnu packages dejagnu)
115 #:use-module (gnu packages dns)
116 #:use-module (gnu packages dns)
117 #:use-module (gnu packages docbook)
118 #:use-module (gnu packages documentation)
119 #:use-module (gnu packages elf)
120 #:use-module (gnu packages compiler-tools)
121 #:use-module (gnu packages freedesktop)
122 #:use-module (gnu packages gawk)
123 #:use-module (gnu packages gcc)
124 #:use-module (gnu packages gd)
125 #:use-module (gnu packages gettext)
126 #:use-module (gnu packages glib)
127 #:use-module (gnu packages gnome)
128 #:use-module (gnu packages gnupg)
129 #:use-module (gnu packages golang)
130 #:use-module (gnu packages golang-build)
131 #:use-module (gnu packages golang-check)
132 #:use-module (gnu packages golang-crypto)
133 #:use-module (gnu packages golang-web)
134 #:use-module (gnu packages golang-xyz)
135 #:use-module (gnu packages graphviz)
136 #:use-module (gnu packages gstreamer)
137 #:use-module (gnu packages gtk)
138 #:use-module (gnu packages image)
139 #:use-module (gnu packages kde-frameworks)
140 #:use-module (gnu packages kerberos)
141 #:use-module (gnu packages libbsd)
142 #:use-module (gnu packages libevent)
143 #:use-module (gnu packages libidn)
144 #:use-module (gnu packages libusb)
145 #:use-module (gnu packages linux)
146 #:use-module (gnu packages logging)
147 #:use-module (gnu packages lua)
148 #:use-module (gnu packages lxqt)
149 #:use-module (gnu packages man)
150 #:use-module (gnu packages mpi)
151 #:use-module (gnu packages ncurses)
152 #:use-module (gnu packages nettle)
153 #:use-module (gnu packages onc-rpc)
154 #:use-module (gnu packages openldap)
155 #:use-module (gnu packages messaging)
156 #:use-module (gnu packages password-utils)
157 #:use-module (gnu packages pcre)
158 #:use-module (gnu packages perl)
159 #:use-module (gnu packages perl-check)
160 #:use-module (gnu packages pkg-config)
161 #:use-module (gnu packages polkit)
162 #:use-module (gnu packages pretty-print)
163 #:use-module (gnu packages prometheus)
164 #:use-module (gnu packages protobuf)
165 #:use-module (gnu packages pulseaudio)
166 #:use-module (gnu packages python)
167 #:use-module (gnu packages python-build)
168 #:use-module (gnu packages python-check)
169 #:use-module (gnu packages python-crypto)
170 #:use-module (gnu packages python-web)
171 #:use-module (gnu packages python-xyz)
172 #:use-module (gnu packages qt)
173 #:use-module (gnu packages readline)
174 #:use-module (gnu packages rpc)
175 #:use-module (gnu packages samba)
176 #:use-module (gnu packages serialization)
177 #:use-module (gnu packages shells)
178 #:use-module (gnu packages sphinx)
179 #:use-module (gnu packages sqlite)
180 #:use-module (gnu packages ssh)
181 #:use-module (gnu packages tcl)
182 #:use-module (gnu packages telephony)
183 #:use-module (gnu packages textutils)
184 #:use-module (gnu packages tls)
185 #:use-module (gnu packages upnp)
186 #:use-module (gnu packages valgrind)
187 #:use-module (gnu packages web)
188 #:use-module (gnu packages wxwidgets)
189 #:use-module (gnu packages xiph)
190 #:use-module (gnu packages xml)
191 #:use-module (gnu packages)
192 #:use-module (guix build-system cmake)
193 #:use-module (guix build-system copy)
194 #:use-module (guix build-system glib-or-gtk)
195 #:use-module (guix build-system gnu)
196 #:use-module (guix build-system go)
197 #:use-module (guix build-system meson)
198 #:use-module (guix build-system perl)
199 #:use-module (guix build-system pyproject)
200 #:use-module (guix build-system pyproject)
201 #:use-module (guix build-system qt)
202 #:use-module (guix build-system trivial)
203 #:use-module (guix deprecation)
204 #:use-module (guix download)
205 #:use-module (guix gexp)
206 #:use-module (guix git-download)
207 #:use-module ((guix licenses) #:prefix license:)
208 #:use-module (guix packages)
209 #:use-module (guix utils)
210 #:use-module (ice-9 match))
211
212(define-public usrsctp
213 (package
214 (name "usrsctp")
215 (version "0.9.5.0")
216 (source
217 (origin
218 (method git-fetch)
219 (uri
220 (git-reference
221 (url "https://github.com/sctplab/usrsctp")
222 (commit version)))
223 (file-name (git-file-name name version))
224 (sha256
225 (base32 "10ndzkip8blgkw572n3dicl6mgjaa7kygwn3vls80liq92vf1sa9"))))
226 (build-system gnu-build-system)
227 (native-inputs
228 (list autoconf
229 automake
230 libtool
231 pkg-config
232 python-wrapper
233 which))
234 (home-page "https://github.com/sctplab/usrsctp/")
235 (synopsis "SCTP user-land implementation")
236 (description "UsrSCTP is a portable SCTP userland stack. SCTP is a message
237oriented, reliable transport protocol with direct support for multihoming that
238runs on top of IP or UDP, and supports both v4 and v6 versions.")
239 (license license:bsd-3)))
240
241(define-public arp-scan
242 (package
243 (name "arp-scan")
244 (version "1.10.0")
245 (source
246 (origin
247 (method git-fetch)
248 (uri
249 (git-reference
250 (url "https://github.com/royhills/arp-scan/")
251 (commit version)))
252 (file-name (git-file-name name version))
253 (sha256
254 (base32 "1d603by2v7gj6bdxn1d23l425q115dk5qfk3ywbj6wbsjysqhbq5"))))
255 (build-system gnu-build-system)
256 (inputs
257 (list libpcap))
258 (native-inputs
259 (list autoconf automake libtool pkg-config))
260 (propagated-inputs
261 (list perl-libwww))
262 (home-page "https://github.com/royhills/arp-scan")
263 (synopsis "Discover and fingerprint IP hosts on the local network using ARP")
264 (description "Arp-scan is a tool that uses ARP to discover and fingerprint
265IP hosts on the local network.")
266 (license license:gpl3+)))
267
268(define-public axel
269 (package
270 (name "axel")
271 (version "2.17.14")
272 (source
273 (origin
274 (method url-fetch)
275 (uri (string-append "https://github.com/axel-download-accelerator/axel/"
276 "releases/download/v" version "/"
277 "axel-" version ".tar.xz"))
278 (sha256
279 (base32 "14rn8k0lb77awd9qx40kicz0767jfsavz6rmhb66zgvqqk4fg3lk"))))
280 (build-system gnu-build-system)
281 (native-inputs
282 (list gettext-minimal pkg-config))
283 (inputs
284 (list libressl))
285 (home-page "https://github.com/axel-download-accelerator/axel")
286 (synopsis "Light command line download accelerator")
287 (description
288 "Axel tries to accelerate the download process by using multiple
289connections per file, and can also balance the load between different
290servers. It tries to be as light as possible, so it might be useful
291on byte-critical systems. It supports HTTP, HTTPS, FTP and FTPS
292protocols.")
293 (license license:gpl2+)))
294
295(define-public geteduroam-cli
296 (package
297 (name "geteduroam-cli")
298 (version "0.14")
299 (source
300 (origin
301 (method git-fetch)
302 (uri (git-reference
303 (url "https://github.com/geteduroam/linux-app")
304 (commit version)))
305 (file-name (git-file-name name version))
306 (sha256
307 (base32 "0d55h22n855zn3cnl6a6k6qh03x91bsrvasyk5baxqcsr5mrpz36"))))
308 (build-system go-build-system)
309 (arguments
310 (list
311 #:install-source? #f
312 #:unpack-path "github.com/geteduroam/linux-app"
313 #:import-path "github.com/geteduroam/linux-app/cmd/geteduroam-cli"
314 ;; XXX: Run only portion of tests.
315 #:test-subdirs #~(list "../../internal/...")))
316 (native-inputs
317 (list go-codeberg-org-jwijenbergh-eduoauth-go-v2
318 go-github-com-godbus-dbus-v5
319 go-github-com-youmark-pkcs8
320 go-golang-org-x-exp
321 go-golang-org-x-sys
322 go-golang-org-x-term
323 go-golang-org-x-text
324 go-software-sslmate-com-src-go-pkcs12))
325 (home-page "https://www.eduroam.app")
326 (synopsis "Set up NetworkManager connection for eduroam access points")
327 (description
328 "Eduroam provides roaming network access across all participating
329research and education networks. Geteduroam-cli is the command line interface
330version of geteduroam, which sets up a connection in NetworkManager, allowing
331you to connect to eduroam access points.")
332 (license license:bsd-3)))
333
334(define-public lcagent
335 (package
336 (name "lcagent")
337 (version "0.1.0")
338 (source
339 (origin
340 (method git-fetch)
341 (uri (git-reference
342 (url "https://codeberg.org/librecast/lcagent")
343 (commit version)))
344 (file-name (git-file-name name version))
345 (sha256
346 (base32 "120a850dbwy3kq6iw2s9sdffvrxj3a85zjiaw2ldgy4mkr1xbg9a"))))
347 (build-system gnu-build-system)
348 (arguments
349 (list
350 #:parallel-tests? #f
351 #:phases
352 #~(modify-phases %standard-phases
353 (add-after 'unpack 'set-bin-sh
354 (lambda _
355 (substitute* "src/agent.c"
356 (("/bin/sh")
357 (which "sh"))))))
358 #:make-flags
359 #~(list (string-append "CC="
360 #$(cc-for-target))
361 (string-append "PREFIX="
362 #$output))
363 #:test-target "test"))
364 (inputs (list lcrq
365 libsodium
366 librecast))
367 (native-inputs (list bison
368 flex))
369 (synopsis "Librecast multicast agent")
370 (description
371 "lcagent can send and receive data over multicast and to pipe
372data between programs on one computer and as many receivers as the multicast
373network can support simultaneously.")
374 (home-page "https://librecast.net/lcagent.html")
375 (license (list license:gpl2 license:gpl3))))
376
377(define-public lcrq
378 (package
379 (name "lcrq")
380 (version "0.4.1")
381 (source (origin
382 (method git-fetch)
383 (uri (git-reference
384 (url "https://codeberg.org/librecast/lcrq")
385 (commit (string-append "v" version))))
386 (file-name (git-file-name name version))
387 (sha256
388 (base32
389 "1jh57gi20yldm1xp7idqj9hfdbdnlj0x66ajydv2cn090b12pffn"))))
390 (build-system gnu-build-system)
391 (arguments
392 (list
393 #:parallel-tests? #f
394 ;; Use recommended optimizations from lcrq README.md
395 #:configure-flags
396 #~(list (string-append "CFLAGS=-Wall -Wextra -pedantic -O3 -flto "
397 "-funroll-loops -ffast-math -DNDEBUG"))
398 #:make-flags
399 #~(list (string-append "CC=" #$(cc-for-target))
400 (string-append "PREFIX=" #$output))
401 #:phases
402 #~(modify-phases %standard-phases
403 ;; Leave some speed comparisons in the build log
404 (add-after 'check 'speedtest
405 (lambda _
406 (invoke "make" "-C" "test" "speedtest"
407 (string-append "CC=" #$(cc-for-target))))))
408 #:test-target "test"))
409 (home-page "https://librecast.net/lcrq.html")
410 (synopsis "Librecast RaptorQ library")
411 (description
412 "C library implementation of RaptorQ Forward Error Correction for
413Librecast. RFC6330 (IETF) describes the RaptorQ proposed standard, which LCRQ
414more-or-less follows. The primary focus has been on building a fast, simple
415and dependency-free FEC implementation for use with Librecast, and not on
416strict standards compliance. The code does, however, fairly closely follow
417the RFC.")
418 (license (list license:gpl2 license:gpl3))))
419
420(define-public netperf
421 (let ((version "2.7.0")
422 (revision "2")
423 (commit "afc51ff9764741da4ed6702651fba9d9c23f8557"))
424 (package
425 (name "netperf")
426 (version (git-version version revision commit))
427 (source
428 (origin
429 (method git-fetch)
430 (uri (git-reference
431 (url "https://github.com/HewlettPackard/netperf")
432 (commit commit)))
433 (file-name (git-file-name name version))
434 (sha256
435 (base32
436 "1s7f1w0q9y15z8lhprh7irc1p9qgam140lvwncqk4gk74yvmcrcf"))))
437 (build-system gnu-build-system)
438 (arguments
439 `(#:configure-flags
440 ;; Without -fcommon the build fails on newer gcc.
441 ;; See: https://gcc.gnu.org/gcc-10/porting_to.html
442 (list "CFLAGS=-fcommon -D_GNU_SOURCE"
443 ;; --enable-demo is needed for flent (not yet packaged).
444 "--enable-demo")))
445 (native-inputs
446 (list autoconf
447 automake))
448 (home-page "https://hewlettpackard.github.io/netperf/")
449 (synopsis "Benchmarking tool to measure network performance")
450 (description
451 "Netperf is a benchmark that can be used to measure the performance of
452many different types of networking. It provides tests for both unidirectional
453throughput, and end-to-end latency. The environments currently measurable
454by netperf include: TCP and UDP via BSD Sockets for both IPv4 and IPv6, DLPI,
455Unix Domain Sockets, SCTP for both IPv4 and IPv6.")
456 (license license:expat))))
457
458(define-public lcsync
459 (package
460 (name "lcsync")
461 (version "0.3.2")
462 (source
463 (origin
464 (method git-fetch)
465 (uri (git-reference
466 (url "https://codeberg.org/librecast/lcsync")
467 (commit (string-append "v" version))))
468 (file-name (git-file-name name version))
469 (sha256
470 (base32 "1wn36rj1il9rv8a76673yv7yk334z9dqq6g2bvbcscbrya4wqaia"))))
471 (build-system gnu-build-system)
472 (arguments
473 (list
474 #:parallel-tests? #f
475 #:configure-flags #~(list (string-append "--prefix=" #$output))
476 #:make-flags #~(list (string-append "CC=" #$(cc-for-target)))
477 #:test-target "test"))
478 (inputs (list lcrq librecast libsodium libbsd))
479 (home-page "https://librecast.net/lcsync.html")
480 (synopsis "Librecast file and data syncing tool")
481 (description
482 "lcsync is a tool to sync files over IPv6 multicast or the
483local filesystem. It splits the file into blocks, hashes them, and compares
484them in order to efficiently transfer a minimal amount of data.")
485 (license (list license:gpl2 license:gpl3))))
486
487(define-public libpisp
488 (package
489 (name "libpisp")
490 (version "1.3.0")
491 (source
492 (origin
493 (method git-fetch)
494 (uri (git-reference
495 (url "https://github.com/raspberrypi/libpisp")
496 (commit (string-append "v" version))))
497 (file-name (git-file-name name version))
498 (sha256
499 (base32 "1mm3f4fjj87kl1h1xjfjjfr1vz5avqja3hxly2mp264w9zmra33j"))))
500 (build-system meson-build-system)
501 (arguments
502 (list #:configure-flags #~(list "-Dlogging=disabled")
503 #:phases
504 #~(modify-phases %standard-phases
505 (add-after 'install 'fix-pkg-config
506 ;; Remove nlohmann_json from Requires.private since the
507 ;; nlohmann-json package doesn't provide a pkg-config file.
508 ;; This is safe because nlohmann-json is header-only.
509 (lambda _
510 (substitute* (string-append #$output
511 "/lib/pkgconfig/libpisp.pc")
512 (("Requires.private:.*") "")))))))
513 (inputs (list nlohmann-json))
514 (native-inputs (list pkg-config))
515 (home-page "https://github.com/raspberrypi/libpisp")
516 (synopsis "Helper library for Raspberry Pi ISP configuration")
517 (description
518 "libpisp is a helper library to generate run-time configuration for the
519Raspberry Pi ISP (PiSP), consisting of the Frontend and Backend hardware
520components.")
521 (license license:bsd-2)))
522
523(define-deprecated/public-alias libcamera-minimal (@ (gnu packages photo)
524 libcamera-minimal))
525
526(define-deprecated/public-alias libcamera (@ (gnu packages photo) libcamera))
527
528(define-public libdnet
529 (package
530 (name "libdnet")
531 (version "1.18.2")
532 (source
533 (origin
534 (method git-fetch)
535 (uri (git-reference
536 (url "https://github.com/ofalk/libdnet")
537 (commit (string-append "libdnet-" version))))
538 (file-name (git-file-name name version))
539 (sha256
540 (base32 "0pbr0lrqp57zdbqxs52myi3ri07jp7nl84v6n1nzc6q11f94iwrh"))))
541 (build-system gnu-build-system)
542 (arguments
543 (list
544 #:phases
545 #~(modify-phases %standard-phases
546 (add-before 'bootstrap 'clean-repo
547 (lambda _
548 ;; Clean out GPL files and let bootstrap phase run.
549 (delete-file-recursively "./config")
550 (delete-file "./configure")))
551 (add-before 'check 'set-up-environment
552 (lambda _
553 ;; Discard results of tests for Minix and BSD systems.
554 (setenv "XFAIL_TESTS" "check_ip check_fw"))))))
555 (native-inputs
556 (list autoconf-2.71
557 automake
558 check
559 libtool
560 pkg-config
561 python-wrapper))
562 (home-page "https://github.com/ofalk/libdnet")
563 (synopsis "Low-level networking interface library")
564 (description
565 "@code{libdnet} provides a simplified, portable interface to several
566low-level networking routines, including network address manipulation,kernel
567arp(4) cache and route(4) table lookup and manipulation, network firewalling,
568network interface lookup and manipulation, IP tunnelling, and raw IP packet
569and Ethernet frame transmission.")
570 (license license:bsd-3)))
571
572(define-public libnice
573 (package
574 (name "libnice")
575 (version "0.1.23")
576 (source
577 (origin
578 (method git-fetch)
579 (uri (git-reference
580 (url "https://gitlab.freedesktop.org/libnice/libnice")
581 (commit version)))
582 (file-name (git-file-name name version))
583 (sha256
584 (base32
585 "0zqnqhcm1rx5axbzd448yi6j4bq4kykiqb4wihs2p8h1k49nkyjh"))))
586 (build-system meson-build-system)
587 (outputs '("out" "doc"))
588 (arguments
589 (list
590 #:glib-or-gtk? #t ; To wrap binaries and/or compile schemas
591 #:configure-flags
592 #~(list"-Dgtk_doc=enabled")
593 #:phases
594 #~(modify-phases %standard-phases
595 (add-after 'unpack 'disable-failing-tests
596 (lambda _
597 (substitute* "tests/meson.build"
598 ;; This test is flaky (see:
599 ;; <https://gitlab.freedesktop.org/libnice/libnice/-/work_items/210>).
600 ((".*'test-send-recv',.*") "")
601 ;; ‘test-set-port-range.c:66:main: assertion failed:
602 ;; (nice_agent_gather_candidates (agent, stream1))’
603 (("'test-set-port-range'" all)
604 (string-append "# " all))
605 ;; The following test is disabled as it fails in a
606 ;; nondeterministic fashion (see:
607 ;; <https://gitlab.freedesktop.org/libnice/libnice/-/issues/151>).
608 (("'test-bsd'" all)
609 (string-append "# " all))
610 ;; This test uses getaddrinfo, which cannot resolve in the
611 ;; build environment.
612 ((".*'test-slow-resolving',.*") ""))
613 (substitute* "stun/tests/meson.build"
614 ;; test-bind.c:234: bad_responses: Assertion `len >= 20'
615 ;; failed (see:
616 ;; <https://gitlab.freedesktop.org/libnice/libnice/-/issues/150>).
617 (("'bind', ")
618 ""))))
619 (add-after 'install 'move-docs
620 (lambda _
621 (mkdir-p (string-append #$output:doc "/share"))
622 (rename-file
623 (string-append #$output "/share/gtk-doc")
624 (string-append #$output:doc "/share/gtk-doc")))))))
625 (native-inputs
626 (list `(,glib "bin")
627 gobject-introspection
628 graphviz
629 gtk-doc/stable
630 pkg-config))
631 (inputs
632 (list gstreamer
633 gst-plugins-base))
634 (propagated-inputs
635 (list glib
636 glib-networking
637 gnutls))
638 (synopsis "GLib ICE implementation")
639 (description "LibNice is a library that implements the Interactive
640Connectivity Establishment (ICE) standard (RFC 5245 & RFC 8445). It provides a
641GLib-based library, libnice, as well as GStreamer elements to use it.")
642 (home-page "https://libnice.freedesktop.org/")
643 (license
644 ;; This project is dual-licensed.
645 (list
646 license:lgpl2.1+
647 license:mpl1.1))))
648
649(define-public libplum
650 (package
651 (name "libplum")
652 (version "0.6.0")
653 (source
654 (origin
655 (method git-fetch)
656 (uri (git-reference
657 (url "https://github.com/paullouisageneau/libplum")
658 (commit (string-append "v" version))))
659 (file-name (git-file-name name version))
660 (sha256
661 (base32 "156088n8x4qh6wsz5jb2mhsxv1sxn5i4f2axiqqs3agb29h5sp2q"))))
662 (build-system cmake-build-system)
663 (arguments
664 (list
665 #:phases
666 #~(modify-phases %standard-phases
667 (replace 'check
668 ;; No tests, use the example as a test.
669 (lambda* (#:key tests? #:allow-other-keys)
670 ;; Binds ports and simulates network magic.
671 (when tests? (invoke "../build/example")))))))
672 (home-page "https://github.com/paullouisageneau/libplum")
673 (synopsis "Multi-protocol Port Mapping client library")
674 (description "libplum (Port Lightweight and Universal Mapping) is a
675high-level library which allows forwarding ports on Network Address
676Translators (NAT). Under the hood, it implements multiple protocols and
677automatically detects which one to use:
678@itemize
679@item Port Control Protocol (PCP)
680@item NAT Port Mapping Protocol (NAT-PMP)
681@item UPnP Internet Gateway Device Protocol (UPnP-IGD)
682@end itemize")
683 (license license:mpl2.0)))
684
685(define-public librecast
686 (package
687 (name "librecast")
688 (version "0.11.2")
689 (source
690 (origin
691 (method git-fetch)
692 (uri (git-reference
693 (url "https://codeberg.org/librecast/librecast")
694 (commit (string-append "v" version))))
695 (file-name (git-file-name name version))
696 (sha256
697 (base32 "06185zz2glfzqvnz579byvfhrzqw1j0fhxkwrcnzfvp8fiaacnql"))))
698 (build-system gnu-build-system)
699 (arguments
700 (list
701 #:parallel-tests? #f
702 #:make-flags
703 #~(list (string-append "CC=" #$(cc-for-target))
704 (string-append "PREFIX=" #$output))
705 #:test-target "test"))
706 (inputs (list libsodium lcrq libbsd))
707 (synopsis "IPv6 multicast library")
708 (description "Librecast is a C library which supports IPv6 multicast
709networking.")
710 (home-page "https://librecast.net/librecast.html")
711 (license (list license:gpl2 license:gpl3))))
712
713(define-public rtmpdump
714 ;; There are no tags in the repository, and the project is unlikely to
715 ;; make new releases. Take a recent commit for multiple security fixes
716 ;; as well as GnuTLS compatibility.
717 (let ((commit "c5f04a58fc2aeea6296ca7c44ee4734c18401aa3")
718 (revision "0")
719 (version "2.4")) ;as mentioned in README and man pages
720 (package
721 (name "rtmpdump")
722 (version (git-version version revision commit))
723 (source
724 (origin
725 (method git-fetch)
726 (uri (git-reference
727 (url "https://git.ffmpeg.org/rtmpdump")
728 (commit commit)))
729 (file-name (git-file-name name version))
730 (sha256
731 (base32 "07ias612jgmxpam9h418kvlag32da914jsnjsfyafklpnh8gdzjb"))))
732 (build-system gnu-build-system)
733 (arguments
734 `(#:tests? #f ; no tests
735 #:make-flags
736 (list
737 ;; The ‘validate-runpath’ phase fails to find librtmp.so.0.
738 (string-append "LDFLAGS=-Wl,-rpath="
739 (assoc-ref %outputs "out") "/lib")
740 (string-append "prefix=" (assoc-ref %outputs "out")))
741 #:phases
742 (modify-phases %standard-phases
743 (add-after 'unpack 'omit-static-library
744 (lambda _
745 (substitute* "librtmp/Makefile"
746 (("cp librtmp\\.a .*") ; don't install it
747 "")
748 (("librtmp\\.a ") ; don't build it
749 ""))
750 #t))
751 (add-after 'unpack 'prefer-gnutls
752 (lambda _
753 (substitute* '("Makefile" "librtmp/Makefile")
754 (("CRYPTO=OPENSSL")
755 "#CRYPTO=OPENSSL")
756 (("#CRYPTO=GNUTLS")
757 "CRYPTO=GNUTLS"))))
758 (delete 'configure))))
759 (inputs
760 (list gnutls zlib))
761 (synopsis "Tools and library for handling RTMP streams")
762 (description "RTMPdump is a toolkit for RTMP streams. All forms of RTMP are
763supported, including rtmp://, rtmpt://, rtmpe://, rtmpte://, and rtmps://.")
764 (home-page "https://rtmpdump.mplayerhq.hu/")
765 (license
766 (list
767 ;; Library.
768 license:lgpl2.1+
769 ;; Others.
770 license:gpl2+)))))
771
772(define-public slurm-monitor
773 (package
774 (name "slurm-monitor")
775 (version "0.4.4")
776 (source
777 (origin
778 (method git-fetch)
779 (uri
780 (git-reference
781 (url "https://github.com/mattthias/slurm")
782 (commit (string-append "upstream/" version))))
783 (file-name (git-file-name name version))
784 (sha256
785 (base32 "07q8895bxsajkwip8dgrrwr1m8a10xnl4p0g6wqcrd2wf4hx5gn3"))))
786 (build-system meson-build-system)
787 (arguments `(#:tests? #f)) ;no tests
788 (native-inputs (list pkg-config))
789 (inputs (list ncurses))
790 (synopsis "Network load monitor")
791 (description
792 "Slurm is a network load monitor. It shows real-time traffic statistics
793from any network device in any of three ASCII graph formats.")
794 (home-page "https://github.com/mattthias/slurm")
795 (license license:gpl2)))
796
797(define-public srt
798 (package
799 (name "srt")
800 (version "1.4.4")
801 (source
802 (origin
803 (method git-fetch)
804 (uri
805 (git-reference
806 (url "https://github.com/Haivision/srt")
807 (commit (string-append "v" version))))
808 (file-name (git-file-name name version))
809 (sha256
810 (base32 "1zr1l9zkai7rpw9cn5j9h4zrv08hgpfmwscwyscf2j4cgwf0rxrr"))))
811 (build-system cmake-build-system)
812 (arguments
813 `(#:parallel-tests? #f
814 #:configure-flags
815 (list
816 (string-append "-DCMAKE_INSTALL_BINDIR="
817 (assoc-ref %outputs "out") "/bin")
818 "-DCMAKE_INSTALL_INCLUDEDIR=include"
819 "-DENABLE_STATIC=OFF"
820 "-DENABLE_UNITTESTS=ON")))
821 (native-inputs
822 (list googletest pkg-config tcl))
823 (propagated-inputs
824 (list openssl))
825 (synopsis "Secure Reliable Transport")
826 (description "SRT is a transport technology that optimizes streaming
827performance across unpredictable networks, such as the Internet.")
828 (home-page "https://www.srtalliance.org/")
829 (license license:mpl2.0)))
830
831(define-public lksctp-tools
832 (package
833 (name "lksctp-tools")
834 (version "1.0.19")
835 (source
836 (origin
837 (method git-fetch)
838 (uri
839 (git-reference
840 (url "https://github.com/sctp/lksctp-tools")
841 (commit (string-append "v" version))))
842 (file-name (git-file-name name version))
843 (sha256
844 (base32 "1jfq58j365mlgssavyw5wcal42n0xjkr40vmj9b8w265wgs28j20"))))
845 (build-system gnu-build-system)
846 (native-inputs
847 (list autoconf automake libtool pkg-config))
848 (synopsis
849 "@acronym{SCTP, Stream Control Transmission Protocol} helpers for Linux")
850 (description
851 "The lksctp-tools project provides a user-space library for @acronym{SCTP,
852the Stream Control Transmission Protocol} (@file{libsctp}) and C language header
853files (@file{netinet/sctp.h}) for accessing SCTP-specific @acronym{APIs,
854application programming interfaces} not provided by the standard sockets.
855It also includes some SCTP-related helper utilities.")
856 (home-page "https://lksctp.sourceforge.net/")
857 (license
858 (list
859 ;; Library.
860 license:lgpl2.1+
861 ;; Others.
862 license:gpl2+))))
863
864(define-public python-pysctp
865 (package
866 (name "python-pysctp")
867 (version "0.7.2")
868 (source
869 (origin
870 (method git-fetch)
871 (uri (git-reference
872 (url "https://github.com/p1sec/pysctp")
873 (commit (string-append "v" version))))
874 (file-name (git-file-name name version))
875 (sha256
876 (base32 "03nw6szak7xdcndyg0m62l4lmkv2bl8ixl7pa0ximwlk4v26wc2w"))))
877 (build-system pyproject-build-system)
878 (arguments
879 (list
880 #:tests? #f ;tests require network
881 #:test-backend #~'unittest
882 #:phases
883 #~(modify-phases %standard-phases
884 (add-after 'unpack 'patch-setup.py
885 (lambda _
886 (substitute* "setup.py"
887 (("include_dirs\\s*=.*")
888 (string-append "include_dirs = ['.'] + '"
889 (getenv "C_INCLUDE_PATH") "'.split(':'),"))
890 (("library_dirs\\s*=.*")
891 (string-append "library_dirs = '"
892 (getenv "LIBRARY_PATH") "'.split(':'),"))))))))
893 (native-inputs (list python-setuptools))
894 (inputs (list lksctp-tools))
895 (home-page "https://github.com/p1sec/pysctp")
896 (synopsis "Python module for the SCTP protocol stack and library")
897 (description "@code{pysctp} implements the SCTP socket API. You need a
898SCTP-aware kernel (most are).")
899 (license license:lgpl2.1+)))
900
901(define-public kismet
902 (package
903 (name "kismet")
904 (version "2025.09.R1")
905 (source (origin
906 (method git-fetch)
907 (uri (git-reference
908 (url "https://www.kismetwireless.net/git/kismet.git")
909 (commit (string-join (cons* "kismet"
910 (string-split version #\.))
911 "-"))))
912 (file-name (git-file-name name version))
913 (patches (search-patches "kismet-unbundle-boost.patch"))
914 (modules '((guix build utils)))
915 (snippet '(begin
916 ;; Drop bundled libraries.
917 (delete-file-recursively "boost")))
918 (sha256
919 (base32
920 "0kjxzlcfb01fhny94x27d48bsx2db3nhdmmcs5g5hgxrhq21w23g"))))
921 (build-system gnu-build-system)
922 (arguments
923 (list #:tests? #f ;no test suite
924 #:configure-flags #~(list "--disable-librtlsdr")
925 #:phases
926 #~(modify-phases %standard-phases
927 (add-after 'unpack 'fix-install
928 (lambda* _
929 (substitute* "Makefile.in"
930 (("-o \\$\\(INSTUSR\\) -g \\$\\(SUIDGROUP\\)") "")
931 (("-o \\$\\(INSTUSR\\) -g \\$\\(INSTGRP\\)") "")))))))
932 (home-page "https://www.kismetwireless.net/")
933 (native-inputs (list perl pkg-config python))
934 (inputs (list boost
935 libusb
936 libpcap
937 libwebsockets
938 (list lm-sensors "lib")
939 mosquitto
940 openssl
941 protobuf
942 protobuf-c
943 sqlite
944 zlib))
945 (synopsis "Wireless network and device detector")
946 (description
947 "This package provides a wireless network and device detector, sniffer,
948wardriving tool, and WIDS (wireless intrusion detection) framework. Kismet
949works with Wi-Fi interfaces, Bluetooth interfaces, some SDR
950(software defined radio) hardware like the RTLSDR, and other specialized
951capture hardware")
952 (license license:gpl2+)))
953
954(define-public knockd
955 (package
956 (name "knockd")
957 (version "0.8")
958 (source (origin
959 (method url-fetch)
960 (uri (string-append "https://www.zeroflux.org/proj/knock/files/knock-"
961 version ".tar.gz"))
962 (sha256
963 (base32
964 "1iv9h7a9l81ilbld3pi0dmzkizjss1755x1x3v5jxsi4asb8r3b9"))))
965 (build-system gnu-build-system)
966 (arguments
967 `(#:configure-flags
968 (list (string-append "--docdir=" (assoc-ref %outputs "out")
969 "/share/doc/" ,name "-" ,version))))
970 (inputs
971 (list libpcap))
972 (home-page "https://www.zeroflux.org/projects/knock")
973 (synopsis "Small port-knock daemon")
974 (description "@command{knockd} is a port-knock daemon. It listens to all traffic on
975an ethernet or PPP interface, looking for special \"knock\" sequences of @dfn{port-hits}
976(UDP/TCP packets sent to a server port). This port need not be open, since knockd listens
977at the link-layer level.")
978 (license license:gpl2+)))
979
980(define-public nng
981 (package
982 (name "nng")
983 (version "1.5.2")
984 (source
985 (origin
986 (method git-fetch)
987 (uri (git-reference
988 (url "https://github.com/nanomsg/nng")
989 (commit (string-append "v" version))))
990 (file-name (git-file-name name version))
991 (sha256
992 (base32 "1sap0iny3z9lhmaiassv8jc399md1307y32xxx3mrr74jcpcrf59"))))
993 (build-system cmake-build-system)
994 (arguments
995 `(#:configure-flags
996 (list "-DNNG_ENABLE_COVERAGE=ON"
997 "-DNNG_ENABLE_TLS=ON"
998 "-DBUILD_SHARED_LIBS=ON")
999 #:phases
1000 (modify-phases %standard-phases
1001 (add-after 'unpack 'disable-failing-tests
1002 (lambda _
1003 ;; These tests require network access.
1004 (substitute* "tests/CMakeLists.txt"
1005 (("add_nng_test1\\(httpclient 60 NNG_SUPP_HTTP\\)") "")
1006 (("add_nng_test\\(tls 60\\)") ""))
1007 (substitute* "src/platform/CMakeLists.txt"
1008 (("nng_test\\(platform_test\\)") "")
1009 (("nng_test\\(resolver_test\\)") ""))
1010 (substitute* "src/sp/transport/tcp/CMakeLists.txt"
1011 (("nng_test\\(tcp_test\\)") ""))
1012 (substitute* "src/sp/transport/ws/CMakeLists.txt"
1013 (("nng_test_if\\(WS_ON ws_test\\)") ""))
1014 (substitute* "src/supplemental/websocket/CMakeLists.txt"
1015 (("nng_test\\(wssfile_test\\)") "")))))))
1016 (native-inputs (list oksh))
1017 (inputs (list mbedtls-lts))
1018 (synopsis "Lightweight messaging library")
1019 (description "NNG project is a rewrite of the scalability protocols library
1020known as libnanomsg, and adds significant new capabilities, while retaining
1021compatibility with the original. It is a lightweight, broker-less library,
1022offering a simple API to solve common recurring messaging problems, such as
1023publish/subscribe, RPC-style request/reply, or service discovery.")
1024 (home-page "https://nng.nanomsg.org/")
1025 (license license:expat)))
1026
1027(define-public nng-1.11
1028 (package
1029 (inherit nng)
1030 (name "nng")
1031 (version "1.11")
1032 (source
1033 (origin
1034 (method git-fetch)
1035 (uri (git-reference
1036 (url "https://github.com/nanomsg/nng")
1037 (commit (string-append "v" version))))
1038 (file-name (git-file-name name version))
1039 (sha256
1040 (base32 "1l4rxwnc9knndwmy7xg53adyrm17ld7c5gxwm7vgfmgfy0my4zy8"))))
1041 (arguments
1042 (list
1043 ;; At least on aarch64-linux, running tests in parallel leads to ports
1044 ;; being unavailable in later tests, which then fail.
1045 #:parallel-tests? #false
1046 #:configure-flags
1047 '(list "-DNNG_ENABLE_COVERAGE=ON"
1048 "-DNNG_ENABLE_TLS=ON"
1049 "-DBUILD_SHARED_LIBS=ON")
1050 #:phases
1051 '(modify-phases %standard-phases
1052 (add-after 'unpack 'disable-failing-tests
1053 (lambda _
1054 ;; These tests require network access.
1055 (substitute* "tests/CMakeLists.txt"
1056 (("add_nng_test1\\(httpclient 60 NNG_SUPP_HTTP\\)") "")
1057 (("add_nng_test\\(tls 60\\)") ""))
1058 (substitute* "src/platform/CMakeLists.txt"
1059 ;; This test only seems to fail on aarch64-linux
1060 (("nng_test\\(platform_test\\)") "")
1061 (("nng_test\\(resolver_test\\)") ""))
1062 (substitute* "src/sp/transport/tcp/CMakeLists.txt"
1063 (("nng_test\\(tcp_test\\)") ""))
1064 (substitute* "src/sp/transport/ws/CMakeLists.txt"
1065 (("nng_test_if\\(WS_ON ws_test\\)") ""))
1066 (substitute* "src/supplemental/websocket/CMakeLists.txt"
1067 (("nng_test\\(wssfile_test\\)") ""))
1068 ;; expected Address invalid (15), got Try again (8)
1069 (substitute* "src/sp/transport/tls/CMakeLists.txt"
1070 (("nng_test_if\\(NNG_ENABLE_TLS tls_tran_test\\)") "")))))))))
1071
1072(define-public nanomsg
1073 (package
1074 (name "nanomsg")
1075 (version "1.2.5")
1076 (source
1077 (origin
1078 (method git-fetch)
1079 (uri
1080 (git-reference
1081 (url "https://github.com/nanomsg/nanomsg")
1082 (commit version)))
1083 (file-name (git-file-name name version))
1084 (sha256
1085 (base32 "1x1n8zr7d0h4bjqy5z0698vas4l52160v35gma8xx81xq425cyhs"))))
1086 (build-system cmake-build-system)
1087 (arguments
1088 `(#:configure-flags
1089 (list "-DNN_ENABLE_COVERAGE=ON")))
1090 (synopsis "Scalable socket library")
1091 (description "Nanomsg is a socket library that provides several common
1092communication patterns. It aims to make the networking layer fast, scalable,
1093and easy to use. Implemented in C, it works on a wide range of operating
1094systems with no further dependencies.")
1095 (home-page "https://nanomsg.org/")
1096 (license (license:non-copyleft "file:///COPYING"))))
1097
1098(define-public blueman
1099 (package
1100 (name "blueman")
1101 (version "2.4.6")
1102 (source
1103 (origin
1104 (method url-fetch)
1105 (uri (string-append "https://github.com/blueman-project/blueman/releases"
1106 "/download/" version "/blueman-" version ".tar.xz"))
1107 (sha256
1108 (base32 "0rp5z3xzrgwbh496dyca6xjz3iqh9xnick879il0cnc5z4vsf4n7"))))
1109 (build-system glib-or-gtk-build-system)
1110 (arguments
1111 (list
1112 #:configure-flags '(list "--enable-polkit"
1113 "--without-systemdsystemunitdir" ; Not required
1114 "--without-systemduserunitdir") ; Not required
1115 #:phases
1116 #~(modify-phases %standard-phases
1117 ;; Python references are not being patched in patch-phase of build,
1118 ;; despite using python-wrapper as input. So we patch them manually.
1119 (add-after 'unpack 'patch-python-references
1120 (lambda* (#:key inputs #:allow-other-keys)
1121 (with-directory-excursion "apps"
1122 (substitute* '("blueman-adapters.in" "blueman-applet.in"
1123 "blueman-manager.in" "blueman-mechanism.in"
1124 "blueman-rfcomm-watcher.in" "blueman-sendto.in"
1125 "blueman-services.in" "blueman-tray.in")
1126 (("@PYTHON@")
1127 (search-input-file inputs
1128 (string-append
1129 "/bin/python"
1130 #$(version-major+minor
1131 (package-version (this-package-input "python-wrapper"))))))))))
1132 ;; Fix loading of external programs.
1133 (add-after 'unpack 'patch-external-programs
1134 (lambda* (#:key inputs #:allow-other-keys)
1135 (substitute* '("blueman/main/NetConf.py"
1136 "blueman/main/PPPConnection.py")
1137 (("/usr/sbin/bluetoothd")
1138 (search-input-directory inputs
1139 "/libexec/bluetooth/bluetoothd"))
1140 (("/sbin/iptables")
1141 (search-input-file inputs "/sbin/iptables"))
1142 (("/usr/sbin/pppd")
1143 (search-input-file inputs "/sbin/pppd")))))
1144 ;; Fix loading of pulseaudio libraries.
1145 (add-after 'unpack 'patch-pulseaudio-libraries
1146 (lambda* (#:key inputs #:allow-other-keys)
1147 (let* ((pulseaudio #$(this-package-input "pulseaudio"))
1148 (pulse (string-append pulseaudio "/lib/libpulse.so.0"))
1149 (pulse-glib (string-append pulseaudio
1150 "/lib/libpulse-mainloop-glib.so.0")))
1151 (with-directory-excursion "blueman/main"
1152 (substitute* "PulseAudioUtils.py"
1153 (("libpulse.so.0") pulse)
1154 (("libpulse-mainloop-glib.so.0") pulse-glib))))))
1155 ;; Fix running of blueman programs.
1156 (add-after 'glib-or-gtk-wrap 'wrap-blueman-progs
1157 (lambda* (#:key outputs #:allow-other-keys)
1158 (let* ((bin (string-append #$output "/bin/blueman-"))
1159 (libexec (string-append #$output "/libexec/blueman-"))
1160 (lib (string-append #$output "/lib/python"
1161 #$(version-major+minor
1162 (package-version (this-package-input "python-wrapper")))
1163 "/site-packages")))
1164 (for-each
1165 (lambda (program)
1166 (wrap-program program
1167 `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH") ,lib))
1168 `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))
1169 (append
1170 (map (lambda (prog) (string-append bin prog))
1171 '("adapters" "applet" "manager"
1172 "sendto" "services" "tray"))
1173 (map (lambda (prog) (string-append libexec prog))
1174 '("mechanism" "rfcomm-watcher"))))))))))
1175 (native-inputs
1176 (list python-cython
1177 `(,glib "bin")
1178 gobject-introspection
1179 `(,gtk+ "bin")
1180 intltool
1181 pkg-config))
1182 (inputs
1183 (list bash-minimal
1184 bluez
1185 dbus
1186 (librsvg-for-system)
1187 glib
1188 gtk+
1189 iproute
1190 iptables
1191 net-tools
1192 pango
1193 polkit
1194 ppp
1195 pulseaudio
1196 python-pycairo
1197 python-pygobject
1198 python-wrapper
1199 libappindicator
1200 network-manager))
1201 (synopsis "GTK+ Bluetooth manager")
1202 (description "Blueman is a Bluetooth management utility using the Bluez
1203D-Bus backend. It is designed to be easy to use for most common Bluetooth
1204tasks.")
1205 (home-page "https://github.com/blueman-project/blueman")
1206 (license license:gpl3+)))
1207
1208(define-public nm-tray
1209 (package
1210 (name "nm-tray")
1211 (version "0.5.1")
1212 (home-page "https://github.com/palinek/nm-tray")
1213 (source (origin
1214 (method git-fetch)
1215 (uri (git-reference
1216 (url home-page)
1217 (commit version)))
1218 (sha256
1219 (base32
1220 "1myg7sxiszllh5agg6pi5y9zagl83v8cb6l0s5f873xrv9pi3iyr"))
1221 (file-name (git-file-name name version))))
1222 (build-system qt-build-system)
1223 (arguments
1224 (list #:qtbase qtbase
1225 #:tests? #f)) ;There are no tests upstream
1226 (inputs (list networkmanager-qt))
1227 (native-inputs (list qttools pkg-config))
1228 (synopsis
1229 "NetworkManager front-end with information icon residing in system tray")
1230 (description
1231 "nm-tray is a network connection management tool (NetworkManager
1232front-end) with an information icon residing in the system tray. Unlike
1233nm-applet, which is part of GNOME, this application is desktop-unaware.")
1234 (license license:gpl2+)))
1235
1236;; The gnu.org ‘home’ for this GNU project is a directory listing with 1.6.0 as
1237;; the latest version. The author's git repository, mentioned in the 1.6.0
1238;; README and otherwise legit-looking, contains a proper 1.7.0 release tarball
1239;; with many OUI updates. Use it, even though it's also several years old now.
1240(define-public macchanger
1241 (package
1242 (name "macchanger")
1243 (version "1.7.0")
1244 (source
1245 (origin
1246 (method url-fetch)
1247 (uri (string-append "https://github.com/alobbs/macchanger/"
1248 "releases/download/" version "/"
1249 name "-" version ".tar.gz"))
1250 (sha256
1251 (base32 "1gs5m0jxyprdp00w2qkbnaqm3ilkjz0q1gqdg4nzdm8g4xy73qns"))))
1252 (build-system gnu-build-system)
1253 (home-page "https://www.gnu.org/software/macchanger/")
1254 (synopsis "Viewing and manipulating MAC addresses of network interfaces")
1255 (description "GNU MAC Changer is a utility for viewing and changing MAC
1256addresses of networking devices. New addresses may be set explicitly or
1257randomly. They can include MAC addresses of the same or other hardware vendors
1258or, more generally, MAC addresses of the same category of hardware.")
1259 (license license:gpl2+)))
1260
1261(define-public miredo
1262 (package
1263 (name "miredo")
1264 (version "1.2.6")
1265 (source (origin
1266 (method url-fetch)
1267 (uri (string-append "http://www.remlab.net/files/miredo/miredo-"
1268 version ".tar.xz"))
1269 (sha256
1270 (base32
1271 "0j9ilig570snbmj48230hf7ms8kvcwi2wblycqrmhh85lksd49ps"))))
1272 (build-system gnu-build-system)
1273 (arguments
1274 '(#:configure-flags
1275 (list "--localstatedir=/var")
1276 #:phases
1277 (modify-phases %standard-phases
1278 (add-after 'unpack 'do-not-create-/run
1279 (lambda _
1280 (substitute* (find-files "src" "Makefile.*")
1281 (("^.+install_sh.+/run.+$")
1282 "\ttrue"))
1283 #t))
1284 (add-after 'unpack 'patch-iproute2
1285 (lambda* (#:key inputs #:allow-other-keys)
1286 (let* ((iproute (assoc-ref inputs "iproute"))
1287 (ip (string-append iproute "/sbin/ip")))
1288 (substitute* "misc/client-hook.iproute"
1289 (("/sbin/ip") ip))
1290 #t)))
1291 ;; The checkconf test in src/ requires network access.
1292 (add-before
1293 'check 'disable-checkconf-test
1294 (lambda _
1295 (substitute* "src/Makefile"
1296 (("^TESTS = .*") "TESTS = \n"))
1297 #t)))))
1298 (inputs
1299 `(("iproute" ,iproute)))
1300 (home-page "https://www.remlab.net/miredo/")
1301 (synopsis "Teredo IPv6 tunneling software")
1302 (description
1303 "Miredo is an implementation (client, relay, server) of the Teredo
1304specification, which provides IPv6 Internet connectivity to IPv6 enabled hosts
1305residing in IPv4-only networks, even when they are behind a NAT device.")
1306 (license license:gpl2+)))
1307
1308(define-public ndisc6
1309 (package
1310 (name "ndisc6")
1311 (version "1.0.8")
1312 (source (origin
1313 (method url-fetch)
1314 (uri (string-append "https://www.remlab.net/files/ndisc6/ndisc6-"
1315 version ".tar.bz2"))
1316 (sha256
1317 (base32
1318 "0kqbxagjys3qr83f699fbv657dyq8j576fcxl2jhlxvj27fb4bqz"))))
1319 (build-system gnu-build-system)
1320 (home-page "https://www.remlab.net/ndisc6/")
1321 (synopsis "IPv6 diagnostic tools")
1322 (description
1323 "NDisc6 is a collection of tools for IPv6 networking diagnostics.
1324It includes the following programs:
1325
1326@itemize
1327@item @command{ndisc6}: ICMPv6 Neighbor Discovery tool.
1328@item @command{rdisc6}: ICMPv6 Router Discovery tool.
1329@item @command{tcptraceroute6}: IPv6 traceroute over TCP.
1330@item @command{traceroute6}: IPv6 traceroute over UDP.
1331@item @command{rdnssd}: Recursive DNS Servers discovery daemon.
1332@end itemize")
1333 ;; The user can choose version 2 or 3 of the GPL, not later versions.
1334 (license (list license:gpl2 license:gpl3))))
1335
1336(define-public parprouted
1337 (package
1338 (name "parprouted")
1339 (version "0.7")
1340 (source (origin
1341 (method url-fetch)
1342 (uri (string-append "https://www.hazard.maks.net/parprouted/"
1343 "parprouted-" version ".tar.gz"))
1344 (sha256
1345 (base32
1346 "1z6yg28i0pv20jivyy82pxb38hsryj95inhj27bs6ja1bp4l6dnn"))))
1347 (build-system gnu-build-system)
1348 (arguments
1349 `(#:tests? #f ;no tests
1350 #:phases (modify-phases %standard-phases
1351 (add-after 'unpack 'insert-absolute-iproute-reference
1352 (lambda* (#:key inputs #:allow-other-keys)
1353 (let* ((iproute (assoc-ref inputs "iproute"))
1354 (ip (string-append iproute "/sbin/ip")))
1355 (substitute* "parprouted.c"
1356 (("/sbin/ip") ip))
1357 #t)))
1358 (replace 'configure
1359 (lambda* (#:key outputs #:allow-other-keys)
1360 (let* ((out (assoc-ref outputs "out"))
1361 (sbin (string-append out "/sbin"))
1362 (man8 (string-append out "/share/man/man8")))
1363 ;; No configure script; hijack the phase to make
1364 ;; the necessary arrangements.
1365 (setenv "CC" ,(cc-for-target))
1366 (for-each mkdir-p (list sbin man8))
1367 (substitute* "Makefile"
1368 (("/usr/local/sbin") sbin)
1369 (("/usr/local/man/man8") man8))
1370 #t))))))
1371 (inputs
1372 `(("iproute" ,iproute)))
1373 (home-page "https://www.hazard.maks.net/parprouted/")
1374 (synopsis "Proxy ARP requests to other interfaces")
1375 (description
1376 "@command{parprouted} is a daemon for transparent IP (Layer@tie{}3)
1377proxy ARP bridging. Unlike standard bridging, proxy ARP bridging can bridge
1378Ethernet networks behind wireless nodes. Normal layer@tie{}2 bridging does
1379not work between wireless nodes because wireless does not know about MAC
1380addresses used in the wired Ethernet networks. This daemon can also be
1381useful for making transparent firewalls.")
1382 (license license:gpl2)))
1383
1384(define-public pproxy
1385 (package
1386 (name "pproxy")
1387 (version "2.7.9")
1388 (source
1389 (origin
1390 (method git-fetch)
1391 (uri (git-reference (url "https://github.com/qwj/python-proxy")
1392 (commit version)))
1393 (file-name (git-file-name name version))
1394 (sha256 (base32 "0crr6b9v5fvy2js1fqjngj3axr962p1yayrxsnf3fpzdc99mnv0d"))))
1395 (build-system pyproject-build-system)
1396 (arguments
1397 (list
1398 #:phases
1399 #~(modify-phases %standard-phases
1400 (replace 'check
1401 (lambda* (#:key tests? #:allow-other-keys)
1402 (when tests?
1403 (with-directory-excursion "tests"
1404 (for-each (lambda (file)
1405 (invoke "python" file))
1406 ;; XXX: The api_ tests require network access
1407 ;; so we only run the cipher tests for now.
1408 (find-files "." "^cipher_.*\\.py$")))))))))
1409 (native-inputs (list python-setuptools))
1410 (inputs
1411 (list python-asyncssh
1412 python-daemon
1413 python-pycryptodome
1414 python-uvloop))
1415 (home-page "https://github.com/qwj/python-proxy")
1416 (synopsis "Multi-protocol network proxy")
1417 (description
1418 "@command{pproxy} is an asynchronuous proxy server implemented with
1419Python 3 @code{asyncio}. Among the supported protocols are HTTP, SOCKS
1420and SSH, and it can use both TCP and UDP as transport mechanisms.")
1421 (license license:expat)))
1422
1423(define-public socat
1424 (package
1425 (name "socat")
1426 (version "1.7.4.4")
1427 (source (origin
1428 (method url-fetch)
1429 (uri (string-append
1430 "http://www.dest-unreach.org/socat/download/socat-"
1431 version ".tar.bz2"))
1432 (sha256
1433 (base32
1434 "1b40ccdvxq5kaghsbwg4q3dq5aw4acw1bpqvs3v3ljp5y392pm7v"))))
1435 (build-system gnu-build-system)
1436 (arguments '(#:tests? #f)) ; no test suite
1437 (inputs (list openssl readline))
1438 (home-page "http://www.dest-unreach.org/socat/")
1439 (synopsis
1440 "Open bidirectional communication channels from the command line")
1441 (description
1442 "socat is a relay for bidirectional data transfer between two independent
1443data channels---files, pipes, devices, sockets, etc. It can create
1444\"listening\" sockets, named pipes, and pseudo terminals.
1445
1446socat can be used, for instance, as TCP port forwarder, as a shell interface
1447to UNIX sockets, IPv6 relay, for redirecting TCP oriented programs to a serial
1448line, to logically connect serial lines on different computers, or to
1449establish a relatively secure environment (su and chroot) for running client
1450or server shell scripts with network connections.")
1451 (license license:gpl2)))
1452
1453(define-public mbuffer
1454 (package
1455 (name "mbuffer")
1456 (version "20260511")
1457 (source (origin
1458 (method url-fetch)
1459 (uri (string-append
1460 "https://www.maier-komor.de/software/mbuffer/mbuffer-"
1461 version ".tgz"))
1462 (sha256
1463 (base32
1464 "10spxhiw3z0q9q4h5dms6k4igwfh18li729nzc47m3s075pv7fhk"))))
1465 (build-system gnu-build-system)
1466 (native-inputs
1467 (list which))
1468 (inputs (list openssl))
1469 (home-page "https://www.maier-komor.de/mbuffer.html")
1470 (synopsis
1471 "Swiss army knife for data stream buffering (network aware)")
1472 (description
1473 "mbuffer is a tool for buffering data streams with a large set of features:
1474
1475@itemize
1476@item direct support for TCP based network targets (IPv4 and IPv6)
1477@item ability to send to multiple targets in parallel (distribution mode)
1478@item support for multiple volumes
1479@item I/O rate limitation
1480@item high/low watermark based restart criteria
1481@item configurable buffer size
1482@item on the fly MD5 hash calculation
1483@item highly efficient, multi-threaded implementation
1484@end itemize")
1485 (license license:gpl3+)))
1486
1487(define-public tcp-wrappers
1488 (package
1489 (name "tcp-wrappers")
1490 (version "7.6")
1491 (source (origin
1492 (method url-fetch)
1493 (uri (string-append
1494 "ftp://ftp.porcupine.org/pub/security/tcp_wrappers_"
1495 version ".tar.gz"))
1496 (sha256
1497 (base32
1498 "0p9ilj4v96q32klavx0phw9va21fjp8vpk11nbh6v2ppxnnxfhwm"))
1499 (modules '((guix build utils)))
1500 (snippet
1501 ;; 'sys_errlist' & co. are gone in glibc 2.33; work around it.
1502 '(substitute* "percent_m.c"
1503 (("sys_errlist\\[errno\\]")
1504 "strerror (errno)")
1505 (("errno < sys_nerr")
1506 "(1)")
1507 (("errno >= sys_nerr")
1508 "(0)")))))
1509 (build-system gnu-build-system)
1510 (arguments
1511 `(#:phases
1512 (modify-phases %standard-phases
1513 (delete 'configure) ; there is no configure script
1514 (delete 'check) ; there are no tests
1515 (replace 'build
1516 (lambda _
1517 (chmod "." #o755)
1518 ;; Upstream doesn't generate a shared library. So we have to do it.
1519 (setenv "CC" (string-join '("gcc"
1520 "-fno-builtin"
1521 "-fPIC"
1522 "-Wno-implicit-function-declaration"
1523 "-Wno-implicit-int"
1524 "-Wno-return-mismatch")
1525 " "))
1526 (substitute* "Makefile"
1527 (("^(all[^\n]*)" line) (string-append line " libwrap.so\n
1528libwrap.so: $(LIB_OBJ)\n
1529\tgcc -shared $^ -o $@\n")))
1530 ;; Deal with some gcc breakage.
1531 (substitute* "percent_m.c"
1532 (("extern char .sys_errlist.*;") ""))
1533 (substitute* "scaffold.c"
1534 (("extern char .malloc.*;") ""))
1535 ;; This, believe it or not, is the recommended way to build!
1536 (invoke "make" "REAL_DAEMON_DIR=/etc" "linux")))
1537 ;; There is no make install stage, so we have to do it ourselves.
1538 (replace 'install
1539 (lambda _
1540 (let ((out (assoc-ref %outputs "out"))
1541 (man-pages `("hosts_access.3"
1542 "hosts_access.5"
1543 "hosts_options.5"
1544 "tcpd.8"
1545 "tcpdchk.8"
1546 "tcpdmatch.8"))
1547 (libs `("libwrap.a"
1548 "libwrap.so"))
1549 (headers `("tcpd.h"))
1550 (bins `("safe_finger"
1551 "tcpd"
1552 "tcpdchk"
1553 "tcpdmatch"
1554 "try-from")))
1555 (for-each
1556 (lambda (x)
1557 (install-file x (string-append out "/include")))
1558 headers)
1559 (for-each
1560 (lambda (x)
1561 (install-file x (string-append out "/share/man/man"
1562 (string-take-right x 1))))
1563 man-pages)
1564 (for-each
1565 (lambda (x)
1566 (install-file x (string-append out "/lib/")))
1567 libs)
1568 (for-each
1569 (lambda (x)
1570 (install-file x (string-append out "/bin/")))
1571 bins))
1572 #t)))))
1573 (home-page "http://www.porcupine.org")
1574 (synopsis "Monitor and filter incoming requests for network services")
1575 (description "With this package you can monitor and filter incoming requests for
1576network services. It includes a library which may be used by daemons to
1577transparently check connection attempts against an access control list.")
1578 (license (license:non-copyleft "file://DISCLAIMER"
1579 "See the file DISCLAIMER in the distribution."))))
1580
1581(define-public zeromq
1582 (package
1583 (name "zeromq")
1584 (version "4.3.5")
1585 (source
1586 (origin
1587 (method url-fetch)
1588 (uri (string-append "https://github.com/zeromq/libzmq/releases"
1589 "/download/v" version "/zeromq-" version ".tar.gz"))
1590 (sha256
1591 (base32 "0hxbpw9sk9g5ilxfnq3iki6nxjh3igk348z73y358ygi21cyylv6"))))
1592 (build-system gnu-build-system)
1593 (arguments
1594 (list
1595 #:configure-flags #~(list "--disable-static"
1596 "--enable-drafts")
1597 #:phases
1598 #~(modify-phases %standard-phases
1599 (add-after 'unpack 'disable-problematic-tests
1600 (lambda _
1601 ;; Avoid the 'reconnect_stop_on_refused' test, which fails
1602 ;; non-deterministically (see:
1603 ;; https://github.com/zeromq/libzmq/issues/4793).
1604 (substitute* "Makefile.in"
1605 (("@ENABLE_DRAFTS_TRUE@\ttests/test_reconnect_options.*")
1606 "")))))))
1607 (home-page "https://zeromq.org")
1608 (synopsis "Library for message-based applications")
1609 (description
1610 "The 0MQ lightweight messaging kernel is a library which extends the
1611standard socket interfaces with features traditionally provided by specialized
1612messaging middle-ware products. 0MQ sockets provide an abstraction of
1613asynchronous message queues, multiple messaging patterns, message
1614filtering (subscriptions), seamless access to multiple transport protocols and
1615more.")
1616 (license license:lgpl3+)))
1617
1618(define-public czmq
1619 (package
1620 (name "czmq")
1621 (version "4.2.1")
1622 (source (origin
1623 (method url-fetch)
1624 (uri (string-append
1625 "https://github.com/zeromq/" name
1626 "/releases/download/v" version
1627 "/" name "-" version ".tar.gz"))
1628 (sha256
1629 (base32
1630 "0fdclvd7fcwixp0k57ccv7d159v3slasyhvndxfn8n1a9hh0lwjx"))))
1631 (build-system gnu-build-system)
1632 (arguments
1633 '(#:configure-flags '("--enable-drafts")))
1634 (inputs
1635 (list zeromq))
1636 (home-page "https://zeromq.org")
1637 (synopsis "High-level C bindings for ØMQ")
1638 (description
1639 "czmq provides bindings for the ØMQ core API that hides the differences
1640between different versions of ØMQ.")
1641 (license license:mpl2.0)))
1642
1643(define-public cppzmq
1644 (package
1645 (name "cppzmq")
1646 (version "4.10.0")
1647 (source (origin
1648 (method git-fetch)
1649 (uri (git-reference
1650 (url "https://github.com/zeromq/cppzmq")
1651 (commit (string-append "v" version))))
1652 (sha256
1653 (base32
1654 "1074316b2n2sbvamnnm8c0p9s0xw2m0g84i9pac02vqbaxbmldqx"))
1655 (file-name (git-file-name name version))))
1656 (build-system cmake-build-system)
1657 (arguments
1658 `(#:tests? ,(not (%current-target-system)))) ; run unless cross-compiling
1659 (native-inputs
1660 (list pkg-config))
1661 (inputs
1662 (list catch2-2 zeromq))
1663 (home-page "https://zeromq.org")
1664 (synopsis "C++ bindings for the ØMQ messaging library")
1665 (description
1666 "This package provides header-only C++ bindings for ØMQ. The header
1667files contain direct mappings of the abstractions provided by the ØMQ C API.")
1668 (license license:expat)))
1669
1670(define-public libcoap
1671 (package
1672 (name "libcoap")
1673 (version "4.3.5b")
1674 (source (origin
1675 (method git-fetch)
1676 (uri (git-reference
1677 (url "https://github.com/obgm/libcoap")
1678 (commit (string-append "v" version))))
1679 (file-name (git-file-name name version))
1680 (sha256
1681 (base32
1682 "0z9ihlcqwqcpfmmp6s8lfhqpfni0czgck3sp62akvapq238v8n71"))))
1683 (outputs (list "out" "doc"))
1684 (build-system gnu-build-system)
1685 (arguments
1686 (list
1687 #:configure-flags
1688 #~(list "--enable-tests"
1689 "--with-openssl")
1690 #:phases
1691 #~(modify-phases %standard-phases
1692 (replace 'check
1693 (lambda* (#:key tests? #:allow-other-keys)
1694 (when tests?
1695 (invoke "./tests/testdriver")))))))
1696 (native-inputs (list asciidoc
1697 autoconf
1698 automake
1699 doxygen
1700 libtool
1701 pkg-config
1702 which))
1703 (inputs (list cunit openssl))
1704 (home-page "https://libcoap.net/")
1705 (synopsis "Implementation of the CoAP application protocol")
1706 (description
1707 "This package provides a C implementation of a lightweight
1708application-protocol for devices that are constrained their resources such as
1709computing power, RF range, memory, bandwidth, or network packet sizes. This
1710protocol, @acronym{CoAP, Constrained Application Protocol}, is standardized by
1711the IETF as @url{https://www.rfc-editor.org/rfc/rfc7252, RFC 7252}.")
1712 (license license:bsd-2)))
1713
1714(define-public libnatpmp
1715 ;; Install the latest commit as it provides a pkg-config (.pc) file.
1716 (let ((base-version "20250404") ;date of last commit
1717 (commit "134fc89e2781e154e40042641f4d8bcbe42579f1")
1718 (revision "0"))
1719 (package
1720 (name "libnatpmp")
1721 (version (git-version base-version revision commit))
1722 (source (origin
1723 (method git-fetch)
1724 (uri (git-reference
1725 (url "https://github.com/miniupnp/libnatpmp")
1726 (commit commit)))
1727 (file-name (git-file-name name version))
1728 (sha256
1729 (base32
1730 "1cs975a7q1v1mml8yd9x15w0pscq3192d15fpa6mgy1kgh7lzpqd"))))
1731 (build-system cmake-build-system)
1732 (arguments
1733 (list
1734 #:tests? #f ;no test suite
1735 #:configure-flags #~(list "-DBUILD_SHARED_LIBS=ON")
1736 #:phases
1737 #~(modify-phases %standard-phases
1738 (add-after 'unpack 'patch-build-system
1739 ;; Have CMake install the natpmp_declspec.h missing header file
1740 ;; that is referenced by natpmp.h (see:
1741 ;; https://github.com/miniupnp/libnatpmp/issues/41).
1742 (lambda _
1743 (substitute* "CMakeLists.txt"
1744 (("install\\(FILES natpmp.h")
1745 "install(FILES natpmp.h natpmp_declspec.h"))))
1746 (add-after 'unpack 'fix-version
1747 (lambda _
1748 (with-output-to-file "VERSION"
1749 (lambda ()
1750 (display #$base-version))))))))
1751 (native-inputs (list which))
1752 (home-page "https://miniupnp.tuxfamily.org/libnatpmp.html")
1753 (synopsis "C library implementing NAT-PMP")
1754 (description
1755 "@code{libnatpmp} is a portable and asynchronous implementation of
1756the Network Address Translation - Port Mapping Protocol (NAT-PMP)
1757written in the C programming language.")
1758 (license license:bsd-3))))
1759
1760(define-public librdkafka
1761 (package
1762 (name "librdkafka")
1763 (version "1.6.1")
1764 (source (origin
1765 (method git-fetch)
1766 (uri (git-reference
1767 (url "https://github.com/edenhill/librdkafka")
1768 (commit (string-append "v" version))))
1769 (file-name (git-file-name name version))
1770 (sha256
1771 (base32
1772 "0i9p85icn53vw4h9m2ryl02bljzsy4zshwn8n2x8i2cb1g3p70qj"))))
1773 (build-system gnu-build-system)
1774 (arguments
1775 '(#:phases
1776 (modify-phases %standard-phases
1777 (replace 'configure
1778 ;; its custom configure script doesn't understand 'CONFIG_SHELL'.
1779 (lambda* (#:key outputs #:allow-other-keys)
1780 (let ((out (assoc-ref outputs "out")))
1781 ;; librdkafka++.so lacks RUNPATH for librdkafka.so
1782 (setenv "LDFLAGS"
1783 (string-append "-Wl,-rpath=" out "/lib"))
1784 (invoke "./configure"
1785 (string-append "--prefix=" out))))))))
1786 (native-inputs
1787 `(("python" ,python-wrapper)))
1788 (propagated-inputs
1789 (list zlib)) ; in the Libs.private field of rdkafka.pc
1790 (home-page "https://github.com/edenhill/librdkafka")
1791 (synopsis "Apache Kafka C/C++ client library")
1792 (description
1793 "librdkafka is a C library implementation of the Apache Kafka protocol,
1794containing both Producer and Consumer support.")
1795 (license license:bsd-2)))
1796
1797(define-public libndp
1798 (package
1799 (name "libndp")
1800 (version "1.8")
1801 (source (origin
1802 (method url-fetch)
1803 (uri (string-append "https://libndp.org/files/"
1804 "libndp-" version ".tar.gz"))
1805 (sha256
1806 (base32
1807 "0ay0n0d85254zdmv8znmn399gfiqpk6ga0jwdwa7ylpbw9pbdzw8"))))
1808 (build-system gnu-build-system)
1809 (native-inputs
1810 (if (%current-target-system)
1811 (list pkg-config
1812 libtool
1813 gettext-minimal
1814 autoconf automake)
1815 '()))
1816 (arguments
1817 (if (%current-target-system)
1818 (list #:phases
1819 #~(modify-phases %standard-phases
1820 ;; AC_FUNC_MALLOC and AC_FUNC_REALLOC usually unneeded
1821 ;; see https://lists.gnu.org/archive/html/autoconf/2003-02/msg00017.html
1822 (add-after 'unpack 'fix-rpl_malloc
1823 (lambda _
1824 (substitute* "configure.ac"
1825 (("AC_FUNC_MALLOC") ""))
1826 ;; let bootstrap phase run.
1827 (delete-file "./configure")))))
1828 '()))
1829 (home-page "https://libndp.org/")
1830 (synopsis "Library for Neighbor Discovery Protocol")
1831 (description
1832 "libndp contains a library which provides a wrapper for IPv6 Neighbor
1833Discovery Protocol. It also provides a tool named ndptool for sending and
1834receiving NDP messages.")
1835 (license license:lgpl2.1+)))
1836
1837(define-public ethtool
1838 (package
1839 (name "ethtool")
1840 (version "6.2")
1841 (source (origin
1842 (method url-fetch)
1843 (uri (string-append "mirror://kernel.org/software/network/"
1844 "ethtool/ethtool-" version ".tar.xz"))
1845 (sha256
1846 (base32
1847 "1qbhwp8d4nh0cnxd3hg0kr8lm5ikbkl07gvjpzv76kad0qa03pw6"))))
1848 (build-system gnu-build-system)
1849 (native-inputs
1850 (list pkg-config))
1851 (inputs
1852 (list libmnl))
1853 (home-page "https://www.kernel.org/pub/software/network/ethtool/")
1854 (synopsis "Display or change Ethernet device settings")
1855 (description
1856 "ethtool can be used to query and change settings such as speed,
1857auto-negotiation and checksum offload on many network devices, especially
1858Ethernet devices.")
1859 (license license:gpl2)))
1860
1861(define-public ifstatus
1862 (package
1863 (name "ifstatus")
1864 (version "2.0.0")
1865 (source (origin
1866 (method url-fetch)
1867 (uri (string-append "mirror://sourceforge/ifstatus/ifstatus/"
1868 "ifstatus-v" version ".tar.gz"))
1869 (sha256
1870 (base32
1871 "0n622f2m3x901hcmad4ns52r2x75csy4nqraagzb8h9fn0j62jkv"))))
1872 (build-system gnu-build-system)
1873 (arguments
1874 '(#:tests? #f ; no "check" target
1875 #:phases
1876 (modify-phases %standard-phases
1877 (delete 'configure) ; no configure script
1878 (replace 'install
1879 (lambda* (#:key outputs #:allow-other-keys)
1880 (let* ((out (assoc-ref outputs "out"))
1881 (bin (string-append out "/bin")))
1882 (mkdir-p bin)
1883 (copy-file "ifstatus"
1884 (string-append bin "/ifstatus")))
1885 #t)))))
1886 (inputs (list ncurses))
1887 (home-page "https://ifstatus.sourceforge.net/graphic/index.html")
1888 (synopsis "Text based network interface status monitor")
1889 (description
1890 "IFStatus is a simple, easy-to-use program for displaying commonly
1891needed/wanted real-time traffic statistics of multiple network
1892interfaces, with a simple and efficient view on the command line. It is
1893intended as a substitute for the PPPStatus and EthStatus projects.")
1894 (license license:gpl2+)))
1895
1896(define-public iputils
1897 (package
1898 (name "iputils")
1899 (version "20250605")
1900 (home-page "https://github.com/iputils/iputils")
1901 (source (origin
1902 (method git-fetch)
1903 (uri (git-reference (url home-page) (commit version)))
1904 (file-name (git-file-name name version))
1905 (sha256
1906 (base32
1907 "0ypian23hb5rk0d8f9z1qbdy3l5g1g8h18c8pc5l1lixh4y0v600"))))
1908 (build-system meson-build-system)
1909 (arguments
1910 (list
1911 #:phases
1912 #~(modify-phases %standard-phases
1913 (add-after 'unpack 'disable-ping-test
1914 (lambda _
1915 ;; Disable ping test, as it requires root or raw socket capabilities.
1916 (substitute* "test/meson.build"
1917 (("if build_ping == true")
1918 "if false")))))))
1919 (native-inputs
1920 (list docbook-xsl docbook-xml-5.0.1
1921 gettext-minimal libxslt pkg-config))
1922 (inputs
1923 (list libcap libidn2 openssl))
1924 (synopsis "Collection of network utilities")
1925 (description
1926 "This package contains a variety of tools for dealing with network
1927configuration, troubleshooting, or servers. Utilities included are:
1928@table @command
1929@item arping
1930Ping hosts using @acronym{ARP, Address Resolution Protocol}.
1931@item clockdiff
1932Compute time difference between network hosts using ICMP TSTAMP messages.
1933@item ninfod
1934Daemon that responds to IPv6 Node Information Queries.
1935@item ping
1936Use ICMP ECHO messages to measure round-trip delays and packet loss across
1937network paths.
1938@item rarpd
1939Answer RARP requests from clients.
1940@item rdisc
1941Populate network routing tables with information from the ICMP router
1942discovery protocol.
1943@item tftpd
1944Trivial file transfer protocol server.
1945@item tracepath
1946Trace network path to an IPv4 or IPv6 address and discover MTU along the way.
1947@end table")
1948 ;; The various utilities are covered by different licenses, see LICENSE
1949 ;; for details.
1950 (license (list license:gpl2+ ;arping, tracepath
1951 license:bsd-3 ;clockdiff, ping
1952 (license:non-copyleft
1953 "https://spdx.org/licenses/Rdisc.html"
1954 "Sun Microsystems license, see rdisc.c for details")))))
1955
1956(define-public nload
1957 (package
1958 (name "nload")
1959 (version "0.7.4")
1960 (source (origin
1961 (method url-fetch)
1962 (uri (string-append "mirror://sourceforge/nload/nload/" version
1963 "/nload-" version ".tar.gz"))
1964 (sha256
1965 (base32
1966 "1rb9skch2kgqzigf19x8bzk211jdfjfdkrcvaqyj89jy2pkm3h61"))))
1967 (build-system gnu-build-system)
1968 (inputs (list ncurses))
1969 (home-page "http://www.roland-riegel.de/nload/")
1970 (synopsis "Realtime console network usage monitor")
1971 (description
1972 "Nload is a console application which monitors network traffic and
1973bandwidth usage in real time. It visualizes the in- and outgoing traffic using
1974two graphs, and provides additional info like total amount of transferred data
1975and min/max network usage.")
1976 (license license:gpl2+)))
1977
1978(define-public iodine
1979 (package
1980 (name "iodine")
1981 (version "0.8.0")
1982 (source
1983 (origin
1984 (method url-fetch)
1985 (uri (string-append "https://code.kryo.se/iodine/"
1986 "iodine-" version ".tar.gz"))
1987 (sha256
1988 (base32 "1ihlwxr5xi82gskcdl06qil9q67bcc80p18wm079gxqphv7r4vjl"))))
1989 (build-system gnu-build-system)
1990 (arguments
1991 `(#:phases
1992 (modify-phases %standard-phases
1993 (delete 'configure) ; no configure script
1994 (add-before 'build 'fix-ifconfig-path
1995 ;; This package works only with the net-tools version of ifconfig.
1996 (lambda* (#:key inputs #:allow-other-keys)
1997 (substitute* "src/tun.c"
1998 (("PATH=[^ ]* ")
1999 (string-append (assoc-ref inputs "net-tools") "/bin/")))))
2000 (add-before 'check 'delete-failing-tests
2001 ;; Avoid https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=802105.
2002 (lambda _
2003 (substitute* "tests/common.c"
2004 (("tcase_add_test\\(tc, \
2005test_parse_format_ipv(4(|_listen_all|_mapped_ipv6)|6)\\);")
2006 "")))))
2007 #:make-flags (list ,(string-append "CC=" (cc-for-target))
2008 (string-append "prefix=" (assoc-ref %outputs "out")))
2009 #:test-target "test"))
2010 (inputs (list net-tools zlib))
2011 (native-inputs (list check pkg-config))
2012 (home-page "https://code.kryo.se/iodine/")
2013 (synopsis "Tunnel IPv4 data through a DNS server")
2014 (description "Iodine tunnels IPv4 data through a DNS server. This
2015can be useful in different situations where internet access is firewalled, but
2016DNS queries are allowed. The bandwidth is asymmetrical, with limited upstream
2017and up to 1 Mbit/s downstream.")
2018 ;; src/md5.[ch] is released under the zlib license
2019 (license (list license:isc license:zlib))))
2020
2021(define-public whois
2022 (package
2023 (name "whois")
2024 (version "5.6.6")
2025 (source
2026 (origin
2027 (method git-fetch)
2028 (uri (git-reference
2029 (url "https://github.com/rfc1036/whois")
2030 (commit (string-append "v" version))))
2031 (file-name (git-file-name name version))
2032 (sha256
2033 (base32 "05549a8r7qr6rv26i7kwg4h6ciwa4cc8dsd5zhfprjrjk909ga24"))))
2034 (build-system gnu-build-system)
2035 (arguments
2036 (list
2037 #:tests? #f ; no test suite
2038 #:make-flags
2039 #~(list (string-append "CC=" #$(cc-for-target))
2040 (string-append "PKG_CONFIG=" #$(pkg-config-for-target))
2041 (string-append "prefix=" #$output)
2042 "BASHCOMPDIR=$(prefix)/share/bash-completion/completions")
2043 #:phases
2044 #~(modify-phases %standard-phases
2045 (delete 'configure) ; no configure script
2046 (add-before 'build 'setenv
2047 (lambda _
2048 (setenv "HAVE_ICONV" "1"))))))
2049 (inputs
2050 (list libidn2 libxcrypt))
2051 (native-inputs
2052 (list gettext-minimal
2053 perl
2054 pkg-config))
2055 (synopsis "Intelligent client for the WHOIS directory service")
2056 (description
2057 "whois searches for an object in a @dfn{WHOIS} (RFC 3912) database.
2058It is commonly used to look up the registered users or assignees of an Internet
2059resource, such as a domain name, an IP address block, or an autonomous system.
2060It can automatically select the appropriate server for most queries.
2061
2062For historical reasons, this package also includes @command{mkpasswd}, which
2063encrypts passwords using @code{crypt(3)} and is unrelated to the Expect command
2064of the same name.")
2065 (home-page "https://github.com/rfc1036/whois")
2066 (license license:gpl2+)))
2067
2068(define-public wireshark
2069 (package
2070 (name "wireshark")
2071 (version "4.6.6")
2072 (source
2073 (origin
2074 (method git-fetch)
2075 (uri (git-reference
2076 (url "https://gitlab.com/wireshark/wireshark.git")
2077 (commit (string-append "v" version))))
2078 (file-name (git-file-name name version))
2079 (sha256
2080 (base32 "1gq5gall0wxpnrivk8qv0hdigcv1jfqi4qqw8ncrdag94smb7jz2"))))
2081 (build-system qt-build-system)
2082 (arguments
2083 (list
2084 ;; This causes the plugins to register runpaths for the wireshark
2085 ;; libraries, which would otherwise cause the validate-runpath phase to
2086 ;; fail.
2087 #:qtbase qtbase
2088 #:configure-flags
2089 #~(list (string-append "-DVCSVERSION_OVERRIDE=" #$version)
2090 (string-append "-DCMAKE_MODULE_LINKER_FLAGS=-Wl,-rpath=" #$output "/lib"))
2091 #:phases
2092 #~(modify-phases %standard-phases
2093 (replace 'check
2094 (lambda* (#:key parallel-tests? tests? #:allow-other-keys)
2095 (when tests?
2096 (invoke "ctest" "-VV"
2097 "-j" (if parallel-tests?
2098 (number->string (parallel-job-count))
2099 "1"))))))))
2100 (inputs
2101 (list c-ares
2102 glib
2103 gnutls
2104 brotli
2105 libcap
2106 libgcrypt
2107 libnl
2108 libpcap
2109 libssh
2110 libxml2
2111 lz4
2112 lua-5.4
2113 mit-krb5
2114 `(,nghttp2 "lib")
2115 minizip
2116 pcre2
2117 qt5compat
2118 qtbase
2119 qtmultimedia
2120 qtsvg
2121 qtwayland
2122 sbc
2123 snappy
2124 speexdsp
2125 zlib
2126 `(,zstd "lib")))
2127 (native-inputs
2128 (list bison
2129 doxygen
2130 flex
2131 gettext-minimal
2132 perl
2133 pkg-config
2134 python-wrapper
2135 qttools))
2136 (synopsis "Network traffic analyzer")
2137 (description "Wireshark is a network protocol analyzer, or @dfn{packet
2138sniffer}, that lets you capture and interactively browse the contents of
2139network frames.")
2140 (home-page "https://www.wireshark.org")
2141 (license license:gpl2+)))
2142
2143(define-public fping
2144 (package
2145 (name "fping")
2146 (version "5.3")
2147 (source
2148 (origin
2149 (method url-fetch)
2150 (uri (string-append "https://fping.org/dist/fping-"
2151 version ".tar.gz"))
2152 (sha256
2153 (base32 "03hxj1acsqbzx5ajcz2c06ki5zaxvg1vz661vwx2w27a38ad0yym"))))
2154 (build-system gnu-build-system)
2155 (arguments '(#:configure-flags '("--enable-ipv6")))
2156 (home-page "https://fping.org/")
2157 (synopsis "Send ICMP ECHO_REQUEST packets to network hosts")
2158 (description
2159 "fping is a ping-like program which uses @acronym{ICMP, Internet Control
2160Message Protocol} echo requests to determine if a target host is responding.
2161
2162@command{fping} differs from @command{ping} in that you can specify any number
2163of targets on the command line, or specify a file containing the lists of
2164targets to ping. Instead of sending to one target until it times out or
2165replies, fping will send out a ping packet and move on to the next target in a
2166round-robin fashion.")
2167 (license license:expat)))
2168
2169(define-public go-sctp
2170 ;; docker-libnetwork-cmd-proxy requires this exact commit.
2171 ;; This commit is mentioned in docker-libnetwork-cmd-proxy's vendor.conf.
2172 (let ((commit "f2269e66cdee387bd321445d5d300893449805be")
2173 (revision "3"))
2174 (package
2175 (name "go-sctp")
2176 (version (git-version "0.0.0" revision commit))
2177 (source (origin
2178 (method git-fetch)
2179 (uri (git-reference
2180 (url "https://github.com/ishidawataru/sctp")
2181 (commit commit)))
2182 (file-name (git-file-name name version))
2183 (sha256
2184 (base32
2185 "04463rnn9y9psp11ac5di6wrwxlhymw5h9hfhhhnxqwla90ikp0g"))))
2186 (build-system go-build-system)
2187 (arguments
2188 `(#:tests? #f ; Test suite is flakey.
2189 #:import-path "github.com/ishidawataru/sctp"))
2190 (home-page "https://github.com/ishidawataru/sctp")
2191 (synopsis "SCTP library for the Go programming language")
2192 (description "This library provides methods for using the stream control
2193transmission protocol (SCTP) in a Go application.")
2194 (license license:asl2.0))))
2195
2196(define-public httping
2197 (package
2198 (name "httping")
2199 (version "4.4.0")
2200 (source
2201 (origin
2202 (method git-fetch)
2203 (uri (git-reference
2204 (url "https://github.com/folkertvanheusden/HTTPing")
2205 (commit (string-append "v" version))))
2206 (file-name (git-file-name name version))
2207 (sha256
2208 (base32 "0jnxwwqcy52m7nm36h82ql3bgbzsima80ks8pqy952h4gkqbxy5a"))))
2209 (build-system cmake-build-system)
2210 (arguments
2211 (list
2212 #:configure-flags
2213 #~(list "-DUSE_SSL=ON" "-DUSE_TUI=ON" "-DUSE_FFTW3=ON"
2214 "-DUSE_GETTEXT=ON")
2215 #:tests? #f)) ;no test suite
2216 (native-inputs (list gettext-minimal pkg-config))
2217 (inputs (list fftw ncurses openssl))
2218 (home-page "https://www.vanheusden.com/httping/")
2219 (synopsis "Web server latency and throughput monitor")
2220 (description
2221 "httping measures how long it takes to connect to a web server, send an
2222HTTP(S) request, and receive the reply headers. It is somewhat similar to
2223@command{ping}, but can be used even in cases where ICMP traffic is blocked
2224by firewalls or when you want to monitor the response time of the actual web
2225application stack itself.")
2226 (license license:agpl3))) ; with permission to link with OpenSSL
2227
2228(define-public httpstat
2229 (package
2230 (name "httpstat")
2231 (version "1.3.2")
2232 (source
2233 (origin
2234 (method git-fetch)
2235 (uri (git-reference
2236 (url "https://github.com/reorx/httpstat")
2237 (commit version)))
2238 (file-name (git-file-name name version))
2239 (sha256
2240 (base32 "1z0m00wzbd1y9knypvw425h4qjqyp4x162j7crpgmfic1wpwbqbl"))))
2241 (build-system pyproject-build-system)
2242 (arguments
2243 (list
2244 #:tests? #f ; Tests require network access.
2245 #:phases
2246 #~(modify-phases %standard-phases
2247 (add-before 'build 'fix-curl-path
2248 (lambda* (#:key inputs #:allow-other-keys)
2249 (substitute* "httpstat.py"
2250 (("ENV_CURL_BIN.get\\('curl'\\)")
2251 (format #f "ENV_CURL_BIN.get(~s)"
2252 (search-input-file inputs "/bin/curl")))
2253 ;; "curl -w time_*" units seems to have
2254 ;; changed from seconds to nanoseconds.
2255 (("d\\[k\\] \\* 1000")
2256 "d[k] / 1000")) #t))
2257 (replace 'check
2258 (lambda* (#:key tests? #:allow-other-keys)
2259 (when tests?
2260 (invoke "bash" "httpstat_test.sh")))))))
2261 (native-inputs (list python-setuptools))
2262 (inputs (list curl))
2263 (home-page "https://github.com/reorx/httpstat")
2264 (synopsis "Visualize curl statistics")
2265 (description
2266 "@command{httpstat} is a tool to visualize statistics from the
2267@command{curl} HTTP client. It acts as a wrapper for @command{curl} and
2268prints timing information for each step of the HTTP request (DNS lookup,
2269TCP connection, TLS handshake and so on) in the terminal.")
2270 (license license:expat)))
2271
2272(define-public squid
2273 (package
2274 (name "squid")
2275 (version "6.12")
2276 (source
2277 (origin
2278 (method url-fetch)
2279 (uri (string-append "http://www.squid-cache.org/Versions/v6/squid-"
2280 version ".tar.xz"))
2281 (sha256
2282 (base32 "0l6bng9irigrcy5q9lalynwpc3czk9lx9994dwk179834sxkmpzk"))))
2283 (build-system gnu-build-system)
2284 (arguments
2285 '(#:configure-flags
2286 ;; disable -march=native in build for reproducibility; see
2287 ;; https://wiki.squid-cache.org/KnowledgeBase/IllegalInstructionError
2288 (list "--disable-arch-native" "--with-openssl")
2289 #:phases
2290 (modify-phases %standard-phases
2291 (add-before 'build 'fix-true-path
2292 (lambda* (#:key inputs #:allow-other-keys)
2293 (substitute* "test-suite/testheaders.sh"
2294 (("/bin/true")
2295 (search-input-file inputs "/bin/true"))))))))
2296 (inputs
2297 (list perl
2298 openldap
2299 linux-pam
2300 libcap
2301 libxcrypt
2302 cyrus-sasl
2303 expat
2304 libxml2
2305 openssl))
2306 (native-inputs
2307 (list cppunit pkg-config))
2308 (synopsis "Web caching proxy")
2309 (description "Squid is a caching proxy for the Web supporting HTTP, HTTPS,
2310FTP, and more. It reduces bandwidth and improves response times by caching and
2311reusing frequently-requested web pages.")
2312 (home-page "http://www.squid-cache.org/")
2313 (license license:gpl2+)))
2314
2315(define-public bwm-ng
2316 (package
2317 (name "bwm-ng")
2318 (version "0.6.3")
2319 (source
2320 (origin
2321 (method git-fetch)
2322 (uri (git-reference
2323 (url "https://github.com/vgropp/bwm-ng")
2324 (commit (string-append "v" version))))
2325 (file-name (git-file-name name version))
2326 (sha256
2327 (base32 "1gpp2l3w479h1w5skjra5xy0gxd24kvmk6i4psbkafnv2399la4k"))))
2328 (build-system gnu-build-system)
2329 (arguments
2330 (list #:phases
2331 #~(modify-phases %standard-phases
2332 (add-after 'unpack 'disable-premature-./configure
2333 (lambda _
2334 (substitute* "autogen.sh"
2335 (("\\$srcdir/configure")
2336 "true")))))))
2337 (native-inputs
2338 (list autoconf automake))
2339 (inputs
2340 (list libstatgrab ncurses))
2341 (synopsis "Console based live network and disk I/O bandwidth monitor")
2342 (description "Bandwidth Monitor NG is a small and simple console based
2343live network and disk I/O bandwidth monitor.")
2344 (home-page "https://www.gropp.org/?id=projects&sub=bwm-ng")
2345 (properties '((lint-hidden-cpe-vendors . ("bwm-ng_project"))))
2346 (license license:gpl2)))
2347
2348(define-public aircrack-ng
2349 (package
2350 (name "aircrack-ng")
2351 (version "1.7")
2352 (source
2353 (origin
2354 (method url-fetch)
2355 (uri (string-append "https://download.aircrack-ng.org/aircrack-ng-"
2356 version ".tar.gz"))
2357 (sha256
2358 (base32 "1hsq1gwmafka4bahs6rc8p98yi542h9a502h64bjlygpr3ih99q5"))))
2359 (build-system gnu-build-system)
2360 (native-inputs
2361 (list autoconf automake libtool pkg-config which
2362 ;; For tests.
2363 expect))
2364 (inputs
2365 (list `(,hwloc "lib") ; speed boost on SMP machines
2366 libgcrypt
2367 libnl
2368 libpcap
2369 ethtool
2370 pcre
2371 sqlite
2372 zlib))
2373 (arguments
2374 `(#:configure-flags
2375 (list "CFLAGS=-fcommon"
2376 "--with-experimental=yes" ; build wesside-ng, etc.
2377 "--with-gcrypt") ; openssl's the default
2378 #:phases (modify-phases %standard-phases
2379 (add-before 'bootstrap 'patch-evalrev
2380 (lambda _
2381 ;; Called by ./autogen.sh below, before the default
2382 ;; ‘patch-shebangs’ phase has had a chance to run.
2383 (substitute* "evalrev"
2384 (("/bin/sh")
2385 (which "sh")))))
2386 (add-after 'build 'absolutize-tools
2387 (lambda* (#:key inputs #:allow-other-keys)
2388 (let ((ethtool (search-input-file inputs
2389 "/sbin/ethtool")))
2390 (substitute* "scripts/airmon-ng"
2391 (("ethtool ")
2392 (string-append ethtool " ")))))))))
2393 (home-page "https://www.aircrack-ng.org")
2394 (synopsis "Assess WiFi network security")
2395 (description
2396 "Aircrack-ng is a complete suite of tools to assess WiFi network
2397security. It focuses on different areas of WiFi security: monitoring,
2398attacking, testing, and cracking. All tools are command-line driven, which
2399allows for heavy scripting.")
2400 (license (list license:gpl2+ license:bsd-3))))
2401
2402(define-public pixiewps
2403 (package
2404 (name "pixiewps")
2405 (version "1.4.2")
2406 (source (origin
2407 (method url-fetch)
2408 (uri (string-append
2409 "https://github.com/wiire-a/pixiewps/releases/"
2410 "download/v" version "/" name "-" version ".tar.xz"))
2411 (sha256
2412 (base32
2413 "07nym6bqml0k9v29vnj003nrgnwrywgjvnljb7cdpsvnwilhbp64"))))
2414 (build-system gnu-build-system)
2415 (arguments
2416 `(#:make-flags
2417 (list ,(string-append "CC=" (cc-for-target))
2418 (string-append "PREFIX=" (assoc-ref %outputs "out")))
2419 #:phases
2420 (modify-phases %standard-phases
2421 (delete 'configure)) ; no configure script
2422 #:tests? #f)) ; there are no tests
2423 (home-page "https://github.com/wiire-a/pixiewps/")
2424 (synopsis "Offline brute-force tool for Wi-Fi Protected Setup")
2425 (description "Pixiewps implements the pixie-dust attack to brute
2426force the Wi-Fi Protected Setup (WPS) PIN by exploiting the low or
2427non-existing entropy of some access points.")
2428 (license license:gpl3+)))
2429
2430(define-public reaver
2431 (package
2432 (name "reaver")
2433 (version "1.6.6")
2434 (source (origin
2435 (method url-fetch)
2436 (uri (string-append
2437 "https://github.com/t6x/reaver-wps-fork-t6x/releases/"
2438 "download/v" version "/reaver-" version ".tar.xz"))
2439 (sha256
2440 (base32
2441 "00k7mc81ifv0wma7k4v18mj498badbw5yls6c28qin3d1gda0ag3"))))
2442 (build-system gnu-build-system)
2443 (arguments
2444 `(#:configure-flags
2445 ;; Save session files to current directory instead of /var.
2446 (list "--enable-savetocurrent"
2447 "--localstatedir=/tmp/dummy") ; prevent creating /var during install
2448 #:phases
2449 (modify-phases %standard-phases
2450 (add-before 'configure 'change-directory
2451 (lambda _
2452 (chdir "src")
2453 #t))
2454 (add-after 'install 'install-doc
2455 (lambda* (#:key outputs #:allow-other-keys)
2456 (chdir "../docs")
2457 (let* ((out (assoc-ref outputs "out"))
2458 (doc (string-append out "/share/doc/" ,name "-" ,version))
2459 (man1 (string-append out "/share/man/man1")))
2460 (for-each (lambda (file) (install-file file doc))
2461 (find-files "." "README.*"))
2462 (install-file "reaver.1" man1)
2463 #t))))
2464 #:tests? #f)) ; there are no tests
2465 (inputs
2466 (list libpcap))
2467 (propagated-inputs
2468 (list aircrack-ng pixiewps))
2469 (home-page "https://github.com/t6x/reaver-wps-fork-t6x/")
2470 (synopsis "Attack tool for Wi-Fi Protected Setup")
2471 (description "Reaver performs a brute force attack against an access
2472point's Wi-Fi Protected Setup (WPS) PIN. Once the PIN is found, the WPA
2473passphrase can be recovered and the AP's wireless settings can be
2474reconfigured.")
2475 (license license:gpl2+)))
2476
2477(define-public perl-danga-socket
2478 (package
2479 (name "perl-danga-socket")
2480 (version "1.62")
2481 (source
2482 (origin
2483 (method url-fetch)
2484 (uri (string-append "mirror://cpan/authors/id/N/NM/NML/"
2485 "Danga-Socket-" version ".tar.gz"))
2486 (sha256
2487 (base32 "0x4bvirmf0kphks19jwgva00zz73zx344218dfaiv8gigrw3yg4m"))))
2488 (build-system perl-build-system)
2489 (native-inputs
2490 (list perl-test-tcp))
2491 (propagated-inputs
2492 (list perl-sys-syscall))
2493 (home-page "https://metacpan.org/release/Danga-Socket")
2494 (synopsis "Event loop and event-driven async socket base class")
2495 (description
2496 "Danga::Socket is an abstract base class for objects backed by a socket
2497which provides the basic framework for event-driven asynchronous IO, designed
2498to be fast. Danga::Socket is both a base class for objects, and an event
2499loop.")
2500 (license license:perl-license)))
2501
2502(define-public perl-data-validate-ip
2503 (package
2504 (name "perl-data-validate-ip")
2505 (version "0.31")
2506 (source
2507 (origin
2508 (method url-fetch)
2509 (uri (string-append
2510 "mirror://cpan/authors/id/D/DR/DROLSKY/Data-Validate-IP-"
2511 version ".tar.gz"))
2512 (sha256
2513 (base32 "1h9g30c46gb1wnansmkaqw10i3piz8l1za2d3h7d9jprns3gyjkk"))))
2514 (build-system perl-build-system)
2515 (native-inputs
2516 (list perl-test-requires))
2517 (propagated-inputs
2518 (list perl-netaddr-ip))
2519 (home-page "https://metacpan.org/release/Data-Validate-IP")
2520 (synopsis "IPv4 and IPv6 validation methods")
2521 (description
2522 "This module provides several IP address validation subroutines that both
2523validate and untaint their input. This includes both basic validation
2524(@code{is_ipv4()} and @code{is_ipv6()}) and special cases like checking whether
2525an address belongs to a specific network or whether an address is public or
2526private (reserved).")
2527 (license license:perl-license)))
2528
2529(define-public perl-net-dns
2530 (package
2531 (name "perl-net-dns")
2532 (version "1.50")
2533 (source
2534 (origin
2535 (method url-fetch)
2536 (uri
2537 (list
2538 (string-append "https://www.net-dns.org/download/Net-DNS-"
2539 version ".tar.gz")
2540 (string-append "mirror://cpan/authors/id/N/NL/NLNETLABS/Net-DNS-"
2541 version ".tar.gz")))
2542 (sha256
2543 (base32
2544 "14x95g8bqicvlc6fljrw5mhba1czdw5jdx6r2qmsmrcnkl5m0q66"))))
2545 (build-system perl-build-system)
2546 (inputs
2547 (list perl-digest-hmac))
2548 (home-page "https://www.net-dns.org/")
2549 (synopsis
2550 "Perl Interface to the Domain Name System")
2551 (description "Net::DNS is the Perl Interface to the Domain Name System.")
2552 (license license:x11)))
2553
2554(define-public perl-net-bonjour
2555 (package
2556 (name "perl-net-bonjour")
2557 (version "0.96")
2558 (source (origin
2559 (method url-fetch)
2560 (uri (string-append
2561 "mirror://cpan/authors/id/C/CH/CHLIGE/Net-Bonjour-"
2562 version ".tar.gz"))
2563 (sha256
2564 (base32
2565 "15qzkfk0isn6c4js3ih95k3dylq6scijp863s0485c00n8x1z2n3"))))
2566 (build-system perl-build-system)
2567 (propagated-inputs (list perl-net-dns))
2568 (home-page "https://metacpan.org/release/Net-Bonjour")
2569 (synopsis "Module for DNS service discovery (Apple's Bonjour)")
2570 (description "Net::Bonjour is a set of modules that allow one to
2571discover local services via multicast DNS (mDNS) or enterprise services
2572via traditional DNS. This method of service discovery has been branded
2573as Bonjour by Apple Computer.")
2574 (license license:perl-license)))
2575
2576(define-public perl-socket6
2577 (package
2578 (name "perl-socket6")
2579 (version "0.29")
2580 (source
2581 (origin
2582 (method url-fetch)
2583 (uri (string-append
2584 "mirror://cpan/authors/id/U/UM/UMEMOTO/Socket6-"
2585 version
2586 ".tar.gz"))
2587 (sha256
2588 (base32
2589 "054izici8klfxs8hr5rljib28plijpsfymy99xbzdp047bx1b2a6"))))
2590 (build-system perl-build-system)
2591 (arguments
2592 `(#:phases
2593 (modify-phases %standard-phases
2594 (replace 'configure
2595 (lambda* (#:key outputs #:allow-other-keys)
2596 (let* ((out (assoc-ref outputs "out"))
2597 (args `("Makefile.PL"
2598 ,(string-append "PREFIX=" out)
2599 "INSTALLDIRS=site")))
2600 (setenv "CONFIG_SHELL" (which "sh"))
2601 (apply invoke "perl" args)))))))
2602 (home-page "https://metacpan.org/release/Socket6")
2603 (synopsis
2604 "IPv6 related part of the C socket.h defines and structure manipulators for Perl")
2605 (description "Socket6 binds the IPv6 related part of the C socket header
2606definitions and structure manipulators for Perl.")
2607 (license license:bsd-3)))
2608
2609(define-public perl-net-dns-resolver-programmable
2610 (package
2611 (name "perl-net-dns-resolver-programmable")
2612 (version "0.003")
2613 (source
2614 (origin
2615 (method url-fetch)
2616 (uri (string-append
2617 "mirror://cpan/authors/id/J/JM/JMEHNLE/net-dns-resolver-programmable/"
2618 "Net-DNS-Resolver-Programmable-v" version ".tar.gz"))
2619 (sha256
2620 (base32
2621 "1v3nl2kaj4fs55n1617n53q8sa3mir06898vpy1rq98zjih24h4d"))
2622 (patches
2623 (search-patches "perl-net-dns-resolver-programmable-fix.patch"))))
2624 (build-system perl-build-system)
2625 (native-inputs
2626 (list perl-module-build))
2627 (inputs (list perl-net-dns))
2628 (home-page
2629 "https://metacpan.org/release/Net-DNS-Resolver-Programmable")
2630 (synopsis
2631 "Programmable DNS resolver class for offline emulation of DNS")
2632 (description "Net::DNS::Resolver::Programmable is a programmable DNS resolver for
2633offline emulation of DNS.")
2634 (license license:perl-license)))
2635
2636(define-public perl-net-dns-resolver-mock
2637 (package
2638 (name "perl-net-dns-resolver-mock")
2639 (version "1.20171219")
2640 (source (origin
2641 (method url-fetch)
2642 (uri (string-append
2643 "mirror://cpan/authors/id/M/MB/MBRADSHAW/"
2644 "Net-DNS-Resolver-Mock-" version ".tar.gz"))
2645 (sha256
2646 (base32
2647 "0m3rxpkv1b9121srvbqkrgzg4m8mnydiydqv34in1i1ixwrl6jn9"))))
2648 (build-system perl-build-system)
2649 (inputs
2650 (list perl-net-dns))
2651 (home-page "https://metacpan.org/release/Net-DNS-Resolver-Mock")
2652 (synopsis "Mock DNS Resolver object for testing")
2653 (description
2654 "Net::DNS::Resolver::Mock is a subclass of Net::DNS::Resolver, but returns
2655static data from any provided DNS zone file instead of querying the network.
2656It is intended primarily for use in testing.")
2657 (license license:perl-license)))
2658
2659(define-public perl-netaddr-ip
2660 (package
2661 (name "perl-netaddr-ip")
2662 (version "4.079")
2663 (source
2664 (origin
2665 (method url-fetch)
2666 (uri (string-append
2667 "mirror://cpan/authors/id/M/MI/MIKER/NetAddr-IP-"
2668 version
2669 ".tar.gz"))
2670 (sha256
2671 (base32
2672 "1rx0dinrz9fk9qcg4rwqq5n1dm3xv2arymixpclcv2q2nzgq4npc"))))
2673 (build-system perl-build-system)
2674 (arguments
2675 `(#:phases
2676 (modify-phases %standard-phases
2677 (replace 'configure
2678 (lambda* (#:key outputs #:allow-other-keys)
2679 (let* ((out (assoc-ref outputs "out"))
2680 (args `("Makefile.PL"
2681 ,(string-append "PREFIX=" out)
2682 "INSTALLDIRS=site")))
2683 (setenv "CONFIG_SHELL" (which "sh"))
2684 (apply invoke "perl" args)))))))
2685 (home-page
2686 "https://metacpan.org/release/NetAddr-IP")
2687 (synopsis
2688 "Manages IPv4 and IPv6 addresses and subnets")
2689 (description "NetAddr::IP manages IPv4 and IPv6 addresses and subsets.")
2690 (license license:perl-license)))
2691
2692(define-public perl-net-patricia
2693 (package
2694 (name "perl-net-patricia")
2695 (version "1.22")
2696 (source
2697 (origin
2698 (method url-fetch)
2699 (uri (string-append
2700 "mirror://cpan/authors/id/G/GR/GRUBER/Net-Patricia-"
2701 version
2702 ".tar.gz"))
2703 (sha256
2704 (base32
2705 "0ln5f57vc8388kyh9vhx2infrdzfhbpgyby74h1qsnhwds95m0vh"))))
2706 (build-system perl-build-system)
2707 (arguments
2708 '(#:phases
2709 (modify-phases %standard-phases
2710 (add-after 'unpack 'dont-link-with-nsl ; Borrowed from Debian.
2711 (lambda _
2712 (substitute* "Makefile.PL"
2713 (("-lnsl") ""))
2714 #t)))))
2715 (inputs
2716 (list perl-net-cidr-lite perl-socket6))
2717 (home-page
2718 "https://metacpan.org/release/Net-Patricia")
2719 (synopsis
2720 "Patricia Trie Perl module for fast IP address lookups")
2721 (description
2722 "Net::Patricia does IP address lookups quickly in Perl.")
2723 ;; The bindings are licensed under GPL2 or later.
2724 ;; libpatricia is licensed under 2-clause BSD.
2725 (license (list license:gpl2+ license:bsd-2))))
2726
2727(define-public perl-net-cidr-lite
2728 (package
2729 (name "perl-net-cidr-lite")
2730 (version "0.22")
2731 (source
2732 (origin
2733 (method url-fetch)
2734 (uri (string-append
2735 "mirror://cpan/authors/id/S/ST/STIGTSP/Net-CIDR-Lite-"
2736 version
2737 ".tar.gz"))
2738 (sha256
2739 (base32 "05w57db2lx4djb4vixzdr6qgrzyzkk047nl812g7nq8s6k5xh5s3"))))
2740 (build-system perl-build-system)
2741 (home-page "https://metacpan.org/release/Net-CIDR-Lite")
2742 (synopsis "Perl extension for merging IPv4 or IPv6 CIDR addresses")
2743 (description "Net::CIDR::Lite merges IPv4 or IPv6 CIDR addresses.")
2744 (license license:gpl1+)))
2745
2746(define-public perl-io-socket-inet6
2747 (package
2748 (name "perl-io-socket-inet6")
2749 (version "2.72")
2750 (source
2751 (origin
2752 (method url-fetch)
2753 (uri (string-append
2754 "mirror://cpan/authors/id/S/SH/SHLOMIF/IO-Socket-INET6-"
2755 version
2756 ".tar.gz"))
2757 (sha256
2758 (base32
2759 "1fqypz6qa5rw2d5y2zq7f49frwra0aln13nhq5gi514j2zx21q45"))))
2760 (build-system perl-build-system)
2761 (native-inputs
2762 (list perl-module-build perl-test-pod perl-test-pod-coverage))
2763 (propagated-inputs (list perl-socket6))
2764 (arguments `(;; Need network socket API
2765 #:tests? #f))
2766 (home-page
2767 "https://metacpan.org/release/IO-Socket-INET6")
2768 (synopsis
2769 "Perl object interface for AF_INET/AF_INET6 domain sockets")
2770 (description "IO::Socket::INET6 is an interface for AF_INET/AF_INET6 domain
2771sockets in Perl.")
2772 (license license:perl-license)))
2773
2774(define-public libproxy
2775 (package
2776 (name "libproxy")
2777 (version "0.4.17")
2778 (source (origin
2779 (method url-fetch)
2780 (uri (string-append "https://github.com/libproxy/libproxy/"
2781 "releases/download/" version "/libproxy-"
2782 version ".tar.xz"))
2783 (sha256
2784 (base32
2785 "01cbgz6lc3v59sldqk96l1281kp2qxnsa2qwlf2ikvjlyr1gi2dw"))))
2786 (build-system cmake-build-system)
2787 (native-inputs
2788 (list pkg-config))
2789 (inputs
2790 (list dbus zlib))
2791 (arguments
2792 '(#:phases
2793 (modify-phases %standard-phases
2794 (replace 'check
2795 (lambda* (#:key tests? #:allow-other-keys)
2796 (when tests?
2797 (invoke "ctest" "-E" "url-test")))))))
2798 (synopsis "Library providing automatic proxy configuration management")
2799 (description "Libproxy handles the details of HTTP/HTTPS proxy
2800configuration for applications across all scenarios. Applications using
2801libproxy only have to specify which proxy to use.")
2802 (home-page "https://libproxy.github.io/libproxy")
2803 (license license:lgpl2.1+)))
2804
2805(define-public proxychains-ng
2806 (package
2807 (name "proxychains-ng")
2808 (version "4.17")
2809 (source
2810 (origin
2811 (method url-fetch)
2812 (uri (string-append "http://ftp.barfooze.de/pub/sabotage/tarballs/"
2813 "proxychains-ng-" version ".tar.xz"))
2814 (sha256
2815 (base32 "1y8640zn6p3gzyfn4c07dld3v8yyy3hcc9q62yj2rpxk9kvcgp9n"))))
2816 (build-system gnu-build-system)
2817 (arguments
2818 `(#:tests? #f ; there are no tests
2819 #:phases
2820 (modify-phases %standard-phases
2821 (add-after 'unpack 'fix-configure-script
2822 (lambda _
2823 ;; The configure script is very intolerant to unknown arguments,
2824 ;; such as "CONFIG_SHELL".
2825 (substitute* "configure"
2826 (("\\*\\) break ;;" line)
2827 (string-append "[A-Z]*) shift ;;\n"
2828 line)))))
2829 (add-before 'configure 'set-up-environment
2830 (lambda _
2831 (setenv "CC" ,(cc-for-target)))))))
2832 (synopsis "Redirect any TCP connection through a proxy or proxy chain")
2833 (description "Proxychains-ng is a preloader which hooks calls to sockets
2834in dynamically linked programs and redirects them through one or more SOCKS or
2835HTTP proxies.")
2836 (home-page "https://github.com/rofl0r/proxychains-ng")
2837 (license license:gpl2+)))
2838
2839(define-public enet
2840 (package
2841 (name "enet")
2842 (version "1.3.18")
2843 (source
2844 (origin
2845 (method git-fetch)
2846 (uri (git-reference
2847 (url "https://github.com/lsalzman/enet")
2848 (commit (string-append "v" version))))
2849 (file-name (git-file-name name version))
2850 (sha256
2851 (base32
2852 "0yavjrmvn34b67z8kkzp68s2wwd1nrriwkl2jc5pvwhgf51aar6c"))))
2853 (build-system gnu-build-system)
2854 (native-inputs (list autoconf automake libtool pkg-config))
2855 (synopsis "Network communication layer on top of UDP")
2856 (description
2857 "ENet's purpose is to provide a relatively thin, simple and robust network
2858communication layer on top of UDP. The primary feature it provides is optional
2859reliable, in-order delivery of packets. ENet omits certain higher level
2860networking features such as authentication, server discovery, encryption, or
2861other similar tasks that are particularly application specific so that the
2862library remains flexible, portable, and easily embeddable.")
2863 (home-page "http://enet.bespin.org")
2864 (license license:expat)))
2865
2866(define-public enet-moonlight
2867 (let ((commit "4cde9cc3dcc5c30775a80da1de87f39f98672a31")
2868 (revision "1"))
2869 (package
2870 (inherit enet)
2871 (name "enet")
2872 (version (git-version "1.3.17" revision commit))
2873 (source (origin
2874 (method git-fetch)
2875 (uri (git-reference
2876 (url "https://github.com/cgutman/enet")
2877 (commit commit)))
2878 (file-name (git-file-name name version))
2879 (sha256
2880 (base32
2881 "07sr32jy989ja23fwg8bvrq2slgm7bhfw6v3xq7yczbw86c1dndv"))))
2882 (build-system cmake-build-system)
2883 (arguments
2884 (list #:tests? #f ;no test suite
2885 #:phases #~(modify-phases %standard-phases
2886 (add-after 'unpack 'build-share-lib
2887 (lambda* _
2888 ;; -DBUILD_SHARED_LIBS=ON not working
2889 (substitute* "CMakeLists.txt"
2890 (("STATIC")
2891 "SHARED"))))
2892 (replace 'install
2893 (lambda* (#:key outputs source #:allow-other-keys)
2894 (let* ((include (string-append #$output
2895 "/include"))
2896 (lib (string-append #$output "/lib")))
2897 (mkdir-p include)
2898 (mkdir-p lib)
2899 (copy-recursively (string-append source
2900 "/include")
2901 include)
2902 (install-file "libenet.so" lib)))))))
2903 (native-inputs (list pkg-config)))))
2904
2905(define-public sslh
2906 (package
2907 (name "sslh")
2908 (version "2.1.2")
2909 (source
2910 (origin
2911 (method git-fetch)
2912 (uri (git-reference
2913 (url "https://github.com/yrutschle/sslh")
2914 (commit (string-append "v" version))))
2915 (file-name (git-file-name name version))
2916 (sha256
2917 (base32 "0v4wmwcjqlpiagq2q30v7459ffvxb7i6kvjq1av6ajdd5iib2vpq"))))
2918 (build-system gnu-build-system)
2919 (native-inputs
2920 (list ;; Test dependencies.
2921 lcov
2922 pcre2
2923 perl
2924 perl-conf-libconfig
2925 perl-io-socket-inet6
2926 perl-socket6
2927 psmisc)) ; for ‘killall’
2928 (inputs
2929 (list libev libconfig pcre))
2930 (arguments
2931 (list #:phases
2932 #~(modify-phases %standard-phases
2933 (add-before 'check 'fix-tests
2934 (lambda _
2935 (substitute* "t"
2936 ;; XXX: Disable a failing test.
2937 (("my \\$DROP_CNX = 1;")
2938 "my $DROP_CNX = 0;")
2939 ;; XXX: "sslh-select" seems to not support this option for some
2940 ;; reason. According to "sslhconf.cfg" this option just overrides the
2941 ;; verbosity configuration so it seems that we can safely drop it.
2942 (("-v 4")
2943 ""))
2944 (substitute* "test.cfg"
2945 ;; The Guix build environment lacks ‘ip4-localhost’.
2946 (("ip4-localhost") "localhost"))))
2947 ;; Many of these files are mentioned in the man page. Install them.
2948 (add-after 'install 'install-documentation
2949 (lambda _
2950 (let* ((doc (string-append #$output "/share/doc/sslh")))
2951 (install-file "README.md" doc)
2952 (for-each
2953 (lambda (file)
2954 (install-file file (string-append doc "/examples")))
2955 (append (find-files "." "\\.cfg")
2956 (find-files "scripts")))))))
2957 #:make-flags #~(list (string-append "CC=" #$(cc-for-target))
2958 "USELIBCONFIG=1"
2959 (string-append "PREFIX=" #$output))
2960 #:test-target "test"))
2961 (home-page "https://www.rutschle.net/tech/sslh/README.html")
2962 (synopsis "Applicative network protocol demultiplexer")
2963 (description
2964 "sslh is a network protocol demultiplexer. It acts like a switchboard,
2965accepting connections from clients on one port and forwarding them to different
2966servers based on the contents of the first received data packet. Detection of
2967common protocols like HTTP(S), SSL, SSH, OpenVPN, tinc, and XMPP is already
2968implemented, but any other protocol that matches a regular expression can be
2969added. sslh's name comes from its original application of serving both SSH and
2970HTTPS on port 443, allowing SSH connections from inside corporate firewalls
2971that block port 22.")
2972 (license (list license:bsd-2 ; tls.[ch]
2973 license:gpl2+)))) ; everything else
2974
2975(define-public iperf
2976 (package
2977 (name "iperf")
2978 (version "3.21")
2979 (source
2980 (origin
2981 (method git-fetch)
2982 (uri (git-reference
2983 (url "https://github.com/esnet/iperf")
2984 (commit version)))
2985 (file-name (git-file-name name version))
2986 (sha256
2987 (base32 "1r4873czw1hyq2g0z1dfxpbsdxcf6i2iizyvqaz24z8dshr2kdmi"))))
2988 (build-system gnu-build-system)
2989 (arguments
2990 `(#:configure-flags
2991 (list "--disable-static")))
2992 (synopsis "TCP, UDP and SCTP bandwidth measurement tool")
2993 (description
2994 "iPerf is a tool to measure achievable bandwidth on IP networks. It
2995supports tuning of various parameters related to timing, buffers and
2996protocols (TCP, UDP, SCTP with IPv4 and IPv6). For each test it reports
2997the bandwidth, loss, and other parameters.")
2998 (home-page "https://software.es.net/iperf/")
2999 (license (list license:bsd-3 ; Main distribution.
3000 license:ncsa ; src/{units,iperf_locale,tcp_window_size}.c
3001 license:expat ; src/{cjson,net}.[ch]
3002 license:public-domain)))) ; src/portable_endian.h
3003
3004(define-public nethogs
3005 (package
3006 (name "nethogs")
3007 (version "0.9.0")
3008 (source
3009 (origin
3010 (method git-fetch)
3011 (uri (git-reference
3012 (url "https://github.com/raboof/nethogs")
3013 (commit (string-append "v" version))))
3014 (hash
3015 (content-hash
3016 (base32 "02w726f413fsa375b5l2i46r7j7n74imnvbdha3ycz3wh85fqdm2")
3017 sha256))
3018 (file-name (git-file-name name version))))
3019 (build-system gnu-build-system)
3020 (inputs
3021 (list libpcap ncurses))
3022 (arguments
3023 (list #:make-flags #~(list (string-append "CC=" #$(cc-for-target))
3024 (string-append "CXX=" #$(cxx-for-target))
3025 (string-append "PREFIX=" #$output)
3026 (string-append "VERSION=" #$version))
3027 #:phases
3028 #~(modify-phases %standard-phases
3029 (delete 'configure)))) ; no ./configure script.
3030 (home-page "https://github.com/raboof/nethogs")
3031 (synopsis "Per-process bandwidth monitor")
3032 (description "NetHogs is a small 'net top' tool for Linux. Instead of
3033breaking the traffic down per protocol or per subnet, like most tools do, it
3034groups bandwidth by process.
3035
3036NetHogs does not rely on a special kernel module to be loaded. If there's
3037suddenly a lot of network traffic, you can fire up NetHogs and immediately see
3038which PID is causing this. This makes it easy to identify programs that have
3039gone wild and are suddenly taking up your bandwidth.")
3040 (license license:gpl2+)))
3041
3042(define-public nzbget
3043 (package
3044 (name "nzbget")
3045 (version "24.3")
3046 (source
3047 (origin
3048 (method git-fetch)
3049 (uri (git-reference
3050 (url "https://github.com/nzbgetcom/nzbget")
3051 (commit (string-append "v" version))))
3052 (file-name (git-file-name name version))
3053 (sha256
3054 (base32 "13hakpkxqvqfjhk679l088209f54j7mqi3ifi820lyz6b1nvvj0r"))))
3055 (build-system cmake-build-system)
3056 (arguments
3057 (append (list #:configure-flags '(list "-DENABLE_TESTS=1"))
3058 (if (string=? "aarch64-linux" (%current-system))
3059 (list #:phases
3060 #~(modify-phases %standard-phases
3061 (add-after 'unpack 'skip-failing-tests
3062 (lambda _
3063 (substitute* "tests/system/CMakeLists.txt"
3064 (("(.*)SystemInfo.cpp" all)
3065 (string-append "#" all)))))))
3066 '())))
3067 (inputs (list boost gnutls libxml2 ncurses openssl zlib))
3068 (native-inputs (list which))
3069 (home-page "https://github.com/nzbget/nzbget")
3070 (synopsis "Usenet binary file downloader")
3071 (description
3072 "NZBGet is a binary newsgrabber, which downloads files from Usenet based
3073on information given in @code{nzb} files. NZBGet can be used in standalone
3074and in server/client modes. In standalone mode, you pass NZBGet @command{nzb}
3075files as command-line parameters and it downloads them and exits. NZBGet also
3076contains a Web interface. Its server can be controlled through remote
3077procedure calls (RPCs).")
3078 (license license:gpl2+)))
3079
3080(define-public opensnitch-daemon
3081 (package
3082 (name "opensnitch-daemon")
3083 (version "1.8.0")
3084 (source
3085 (origin
3086 (method git-fetch)
3087 (uri (git-reference
3088 (url "https://github.com/evilsocket/opensnitch")
3089 (commit (string-append "v" version))))
3090 (file-name (git-file-name name version))
3091 (sha256
3092 (base32 "1bvpv4n3a4q8pg3wj9cv7fyqs7l2d1cw96g5j7lmpsq267c62gh7"))))
3093 (build-system go-build-system)
3094 (arguments
3095 (list
3096 #:install-source? #f
3097 #:import-path "github.com/evilsocket/opensnitch/daemon"
3098 #:unpack-path "github.com/evilsocket/opensnitch"
3099 #:test-flags
3100 #~(list "-vet=off" ;; [email protected] forces vet, but tests are not ready yet.
3101 ;; client_test.go:58: error copying default config file: exit
3102 ;; status 1
3103 "-skip" "TestClientDefaultConfig")
3104 #:test-subdirs
3105 ;; Some tests require root access, run only portion of them.
3106 #~(list "conman"
3107 "firewall/config"
3108 "netlink"
3109 "procmon"
3110 "rule"
3111 "tasks"
3112 "tasks/nodemonitor"
3113 "tasks/pidmonitor")
3114 #:phases
3115 #~(modify-phases %standard-phases
3116 (add-before 'build 'fix-default-config-path
3117 (lambda* (#:key import-path #:allow-other-keys)
3118 (with-directory-excursion (string-append "src/" import-path)
3119 (substitute* (find-files "." "\\.go$")
3120 (("/etc/opensnitchd")
3121 (string-append #$output "/etc/opensnitchd"))))))
3122 (add-before 'build 'build-ui-proto
3123 (lambda* (#:key unpack-path #:allow-other-keys)
3124 (with-directory-excursion (string-append "src/" unpack-path
3125 "/proto")
3126 (invoke "make" "../daemon/ui/protocol/ui.pb.go"))))
3127 (add-before 'check 'pre-check
3128 (lambda _
3129 (setenv "PRIVILEGED_TESTS" "0")
3130 (setenv "NETLINK_TESTS" "0")))
3131 (add-after 'install 'rename-binary
3132 (lambda _
3133 (with-directory-excursion (string-append #$output)
3134 (mkdir "sbin")
3135 (rename-file "bin/daemon" "sbin/opensnitchd")
3136 (delete-file-recursively "bin"))))
3137 (add-after 'install 'install-default-config
3138 (lambda* (#:key import-path #:allow-other-keys)
3139 (let ((dest (string-append #$output "/etc/opensnitchd")))
3140 (mkdir-p dest)
3141 (with-directory-excursion (string-append "src/" import-path)
3142 (for-each (lambda (name)
3143 (install-file name dest))
3144 '("data/default-config.json"
3145 "data/network_aliases.json"
3146 "data/system-fw.json")))))))))
3147 (native-inputs
3148 (list go-github-com-fsnotify-fsnotify
3149 go-github-com-cilium-ebpf
3150 go-github-com-google-gopacket
3151 go-github-com-google-nftables
3152 go-github-com-varlink-go-varlink
3153 go-github-com-vishvananda-netlink
3154 go-golang-org-x-net
3155 go-golang-org-x-sys
3156 go-google-golang-org-grpc
3157 go-google-golang-org-protobuf
3158 protobuf protoc-gen-go pkg-config
3159 protoc-gen-go-grpc))
3160 (inputs
3161 (list libnetfilter-queue
3162 libnfnetlink
3163 libvarlink))
3164 (home-page "https://github.com/evilsocket/opensnitch")
3165 (synopsis "Interactive application firewall daemon")
3166 (description
3167 "This package provides a daemon that snitches on programs making outbound
3168connections. OpenSnitch is an application-level firewall that gives you
3169granular control over outbound network connections on your system. It
3170monitors application activity and prompts you to allow or deny connections on
3171a per-application basis whenever a new outbound connection is attempted.")
3172 (license license:gpl3+)))
3173
3174(define-public opensnitch-ui
3175 (package
3176 (inherit opensnitch-daemon)
3177 (name "opensnitch-ui")
3178 (build-system pyproject-build-system)
3179 (arguments
3180 (list
3181 #:tests? #f ; TODO: Fix virustotal test (upstream)
3182 #:modules '((guix build pyproject-build-system)
3183 (guix build qt-utils)
3184 (guix build utils))
3185 #:imported-modules `(,@%pyproject-build-system-modules
3186 (guix build qt-utils))
3187 #:phases
3188 #~(modify-phases %standard-phases
3189 (add-after 'unpack 'chdir
3190 (lambda _
3191 (chdir "ui")
3192 (substitute* "setup.py"
3193 (("/usr")
3194 #$output))))
3195 (add-after 'install 'install-rc
3196 (lambda* (#:key inputs outputs #:allow-other-keys)
3197 ;; Debian does the following after install
3198 (with-directory-excursion "i18n"
3199 (invoke "make"))
3200 (invoke (string-append (assoc-ref inputs "qtbase")
3201 "/lib/qt6/libexec/rcc")
3202 "-g" "python"
3203 "-o" "opensnitch/resources_rc.py"
3204 "opensnitch/res/resources.qrc")
3205 ;; resources_rc.py is not installed automatically.
3206 (install-file "opensnitch/resources_rc.py"
3207 (string-append (site-packages inputs outputs) "/opensnitch"))))
3208 (add-after 'install-rc 'wrap-qt
3209 (lambda* (#:key inputs #:allow-other-keys)
3210 (wrap-qt-program "opensnitch-ui" ; doesn't do it? why not?
3211 #:output #$output
3212 #:inputs inputs
3213 #:qt-major-version "6"))))))
3214 (native-inputs
3215 (list python-setuptools
3216 python-wheel
3217 qttools))
3218 (inputs
3219 (list python-grpcio-tools
3220 python-notify2
3221 python-pyasn1
3222 python-pyinotify
3223 python-pyqt-6
3224 python-protobuf
3225 python-requests
3226 python-slugify
3227 qtbase
3228 qtsvg
3229 qtwayland))
3230 (synopsis "UI for @code{opensnitch}")))
3231
3232(define-public openvswitch
3233 (package
3234 (name "openvswitch")
3235 (version "3.4.0")
3236 (source (origin
3237 (method url-fetch)
3238 (uri (string-append
3239 "https://www.openvswitch.org/releases/openvswitch-"
3240 version ".tar.gz"))
3241 (sha256
3242 (base32
3243 "10g84h6lis6fafyjhvmdrs8r539xcar04cc3rsk448gs6848hsqr"))))
3244 (build-system gnu-build-system)
3245 (arguments
3246 '(#:configure-flags
3247 '("--enable-shared"
3248 "--disable-static" ; XXX still installs libopenvswitchavx512.a
3249 "--localstatedir=/var"
3250 "--with-dbdir=/var/lib/openvswitch")
3251 ;; Tests fail in different ways, on different x86_64-linux hardware:
3252 ;; 25. bfd.at:268: 25. bfd - bfd decay (bfd.at:268): FAILED (bfd.at:397)
3253 ;; 1040. dpif-netdev - meters (dpif-netdev.at:269): FAILED (dpif-netdev.at:376)
3254 #:tests? #f
3255 #:phases
3256 (modify-phases %standard-phases
3257 (add-after 'unpack 'use-absolute-/bin/sh
3258 (lambda* (#:key inputs #:allow-other-keys)
3259 (let ((/bin/sh (search-input-file inputs "bin/sh")))
3260 (substitute* "ovsdb/ovsdb-server.c"
3261 (("/bin/sh") /bin/sh)))))
3262 (add-before 'check 'adjust-tests
3263 (lambda* (#:key inputs #:allow-other-keys)
3264 (let ((/bin/sh (search-input-file inputs "bin/sh")))
3265 (with-fluids ((%default-port-encoding "ISO-8859-1"))
3266 (substitute* (find-files "tests" ".*(run|testsuite)$")
3267 (("#! /bin/sh")
3268 (string-append "#! " /bin/sh))
3269
3270 ;; grep 3.8 emits a warning for 'egrep' which breaks
3271 ;; expected output; adjust accordingly.
3272 (("egrep")
3273 "grep -E")
3274
3275 ;; The tests use 'kill -0' to check whether a test has
3276 ;; completed, but it does not work in the build container
3277 ;; because zombies are not reaped automatically (PID 1 is
3278 ;; the builder script). Change to something that handles
3279 ;; undead processes.
3280 (("kill -0")
3281 "kill-0")))
3282 (mkdir "/tmp/bin")
3283 (call-with-output-file "/tmp/bin/kill-0"
3284 (lambda (port)
3285 (format port "#!~a
3286ps --no-header -p $1 -o state= | grep -qv '^Z$'"
3287 /bin/sh)))
3288 (chmod "/tmp/bin/kill-0" #o755)
3289 (setenv "PATH"
3290 (string-append "/tmp/bin:" (getenv "PATH"))))))
3291 (replace 'install
3292 (lambda _
3293 (invoke "make"
3294 ;; Don't try to create directories under /var.
3295 "RUNDIR=/tmp"
3296 "PKIDIR=/tmp"
3297 "LOGDIR=/tmp"
3298 "DBDIR=/tmp"
3299 "install"))))))
3300 (native-inputs
3301 (list perl
3302 pkg-config
3303 python-wrapper
3304
3305 ;; For testing.
3306 bash ;for 'compgen'
3307 procps
3308 util-linux))
3309 (inputs
3310 (list bash-minimal libcap-ng openssl))
3311 (synopsis "Virtual network switch")
3312 (home-page "https://www.openvswitch.org/")
3313 (description
3314 "Open vSwitch is a multilayer virtual switch. It is designed to enable
3315massive network automation through programmatic extension, while still
3316supporting standard management interfaces and protocols (e.g. NetFlow, sFlow,
3317IPFIX, RSPAN, CLI, LACP, 802.1ag).")
3318 (properties
3319 '((release-monitoring-url . "https://www.openvswitch.org/download/")
3320 ;; This CVE is fixed since 3.2.0.
3321 (lint-hidden-cve . ("CVE-2023-5366"))))
3322 (license ; see debian/copyright for detail
3323 (list license:lgpl2.1 ; xenserver and utilities/bugtool
3324 license:gpl2 ; datapath
3325 license:bsd-2 license:bsd-3
3326 license:asl2.0)))) ; all other
3327
3328(define-public python-ipy
3329 (package
3330 (name "python-ipy")
3331 (version "1.01")
3332 (source
3333 (origin
3334 (method git-fetch)
3335 (uri (git-reference
3336 (url "https://github.com/autocracy/python-ipy/")
3337 (commit (string-append "IPy-" version))))
3338 (file-name (git-file-name name version))
3339 (sha256
3340 (base32 "106rirmirlpb5ppznn3fd8189a8z02zf99jvk6j4hcq05ajclfc6"))))
3341 (build-system pyproject-build-system)
3342 (native-inputs (list python-pytest python-setuptools))
3343 (home-page "https://github.com/autocracy/python-ipy/")
3344 (synopsis "Python class and tools for handling IP addresses and networks")
3345 (description
3346 "The @code{IP} class allows a comfortable parsing and handling for most
3347notations in use for IPv4 and IPv6 addresses and networks.")
3348 (license license:bsd-3)))
3349
3350(define-public speedtest-cli
3351 (package
3352 (name "speedtest-cli")
3353 (version "2.1.3")
3354 (source
3355 (origin
3356 (method git-fetch)
3357 (uri (git-reference
3358 (url "https://github.com/sivel/speedtest-cli")
3359 (commit (string-append "v" version))))
3360 (file-name (git-file-name name version))
3361 (sha256
3362 (base32 "10fazl4kwf41mk7pnwpfms16n0ii0kg9pf8r3mz9xwnl9y04mv9x"))))
3363 (build-system pyproject-build-system)
3364 (arguments
3365 (list #:tests? #f)) ;no tests
3366 (native-inputs
3367 (list python-setuptools))
3368 (home-page "https://github.com/sivel/speedtest-cli")
3369 (synopsis "Internet bandwidth tester")
3370 (description
3371 "Command line interface for testing internet bandwidth using
3372speedtest.net.")
3373 (license license:asl2.0)))
3374
3375(define-public librespeed-cli
3376 (package
3377 (name "librespeed-cli")
3378 (version "1.0.14")
3379 (source
3380 (origin
3381 (method git-fetch)
3382 (uri (git-reference
3383 (url "https://github.com/librespeed/speedtest-cli")
3384 (commit (string-append "v" version))))
3385 (file-name (git-file-name name version))
3386 (sha256
3387 (base32 "1ar0pgazjc0xj1a1v5s2xr2rq7xmzhm7m9qx7mz3n7l563c4ahg5"))))
3388 (build-system go-build-system)
3389 (arguments
3390 (list
3391 #:install-source? #f
3392 #:import-path "github.com/librespeed/speedtest-cli"
3393 #:build-flags
3394 #~(list (format #f "-ldflags=-X ~s -X ~s"
3395 (string-append "github.com/librespeed/speedtest-cli"
3396 "/defs.ProgName=librespeed-cli")
3397 (string-append "github.com/librespeed/speedtest-cli"
3398 "/defs.ProgVersion="
3399 #$version)))
3400 #:phases
3401 #~(modify-phases %standard-phases
3402 ;; Avoid naming conflict with speedtest-cli package
3403 (add-after 'install 'rename-executable
3404 (lambda _
3405 (with-directory-excursion (string-append #$output "/bin")
3406 (rename-file "speedtest-cli" "librespeed-cli")))))))
3407 (native-inputs
3408 (list go-github-com-briandowns-spinner
3409 go-github-com-go-ping-ping
3410 go-github-com-gocarina-gocsv
3411 go-github-com-prometheus-community-pro-bing
3412 go-github-com-sirupsen-logrus
3413 go-github-com-urfave-cli-v2
3414 go-golang-org-x-sys))
3415 (home-page "https://github.com/librespeed/speedtest-cli")
3416 (synopsis "Command-line internet speed test tool")
3417 (description
3418 "Command-line interface for LibreSpeed internet bandwidth testing.
3419It functions as a command-line alternative to @url{https://librespeed.org/}.
3420It features ping, jitter, download, and upload testing, as well as the ability
3421to test using multiple servers in a single run.")
3422 (license license:lgpl3)))
3423
3424(define-public atftp
3425 (package
3426 (name "atftp")
3427 (version "0.8.1")
3428 (source (origin
3429 (method git-fetch)
3430 (uri (git-reference
3431 (url "https://git.code.sf.net/p/atftp/code")
3432 (commit (string-append "v" version))))
3433 (sha256
3434 (base32
3435 "1pj0270r87iv84vrlrrbp66vkzdmaa4ramhx34b151hclkiv3c8j"))
3436 (file-name (git-file-name name version))))
3437 (build-system gnu-build-system)
3438 (arguments
3439 (list #:phases #~(modify-phases %standard-phases
3440 (add-after 'unpack 'autoreconf
3441 (lambda _
3442 (invoke "autoreconf" "-vif"))))))
3443 (native-inputs (list autoconf automake perl pkg-config))
3444 (inputs (list pcre2 procps readline tcp-wrappers))
3445 (home-page "https://sourceforge.net/projects/atftp/")
3446 (synopsis "Advanced TFTP server and client")
3447 (description
3448 "This package provides a multi-threaded TFTP server that implements all
3449options, including all extensions, as specified in RFC 1350, RFC 2090, RFC
34502347, RFC 2348, RFC 2349 and RFC7440. Atftpd also supports a multicast
3451protocol known as mtftp, which was defined in the PXE specification.
3452
3453The server is socket activated by default but supports being started from
3454@command{inetd} as well as in daemon mode.")
3455 (license license:gpl2+)))
3456
3457(define-public spiped
3458 (package
3459 (name "spiped")
3460 (version "1.6.2")
3461 (source (origin
3462 (method url-fetch)
3463 (uri (string-append "https://www.tarsnap.com/spiped/spiped-"
3464 version ".tgz"))
3465 (sha256
3466 (base32
3467 "0rs5403bp48wyy2x0f3hk0f75ds1qn03sgyli2c7y7fi29ynim05"))))
3468 (build-system gnu-build-system)
3469 (arguments
3470 (list
3471 #:test-target "test"
3472 #:make-flags
3473 #~(list (string-append "CC=" #$(cc-for-target))
3474 (string-append "BINDIR=" #$output "/bin")
3475 (string-append "MAN1DIR=" #$output "/share/man/man1"))
3476 #:phases
3477 #~(modify-phases %standard-phases
3478 (add-after 'unpack 'patch-command-invocations
3479 (lambda _
3480 (substitute* '("Makefile"
3481 "libcperciva/cpusupport/Build/cpusupport.sh"
3482 "libcperciva/POSIX/posix-cflags.sh"
3483 "libcperciva/POSIX/posix-l.sh")
3484 (("command -p") ""))))
3485 (delete 'configure) ; no ./configure script
3486 (add-after 'install 'install-more-docs
3487 (lambda _
3488 (install-file "DESIGN.md"
3489 (string-append #$output "/share/doc/spiped")))))))
3490 (native-inputs
3491 (list procps)) ; `ps` is used by the test suite
3492 (inputs
3493 (list openssl))
3494 (home-page "https://www.tarsnap.com/spiped.html")
3495 (synopsis "Create secure pipes between sockets")
3496 (description "Spiped (pronounced \"ess-pipe-dee\") is a utility for creating
3497symmetrically encrypted and authenticated pipes between socket addresses, so
3498that one may connect to one address (e.g., a UNIX socket on localhost) and
3499transparently have a connection established to another address (e.g., a UNIX
3500socket on a different system). This is similar to 'ssh -L' functionality, but
3501does not use SSH and requires a pre-shared symmetric key.")
3502 (license license:bsd-2)))
3503
3504(define-public quagga
3505 (package
3506 (name "quagga")
3507 (version "1.2.4")
3508 (source (origin
3509 (method url-fetch)
3510 ;; Use archived sources; see <http://issues.guix.gnu.org/47123>.
3511 (uri (string-append "https://fossies.org/linux/misc/"
3512 "quagga-" version ".tar.gz"))
3513 (sha256
3514 (base32
3515 "1lsksqxij5f1llqn86pkygrf5672kvrqn1kvxghi169hqf1c0r73"))
3516 (patches
3517 (search-patches "quagga-reproducible-build.patch"))
3518 (snippet
3519 #~(begin (delete-file "lib/memtypes.h")
3520 (delete-file "lib/route_types.h")
3521 (delete-file "lib/version.h")
3522 (delete-file "vtysh/extract.pl")))))
3523 (build-system gnu-build-system)
3524 (native-inputs (list gawk gcc-7 pkg-config perl dejagnu))
3525 (inputs (list c-ares libxcrypt readline))
3526 (synopsis "Routing Software Suite")
3527 (description "Quagga is a routing software suite, providing implementations
3528of OSPFv2, OSPFv3, RIP v1 and v2, RIPng and BGP-4 for Unix platforms.
3529
3530The Quagga architecture consists of a core daemon, @command{zebra}, which
3531acts as an abstraction layer to the underlying Unix kernel and presents the
3532Zserv API over a Unix or TCP stream to Quagga clients. It is these Zserv
3533clients which typically implement a routing protocol and communicate routing
3534updates to the zebra daemon.")
3535 (home-page "https://www.nongnu.org/quagga/")
3536 ;; This CVE concerns systemd services files that we currently don't use.
3537 ;; If we were to use them, a fixing patch can be found here:
3538 ;; https://build.opensuse.org/request/show/1035188
3539 (properties '((lint-hidden-cve . ("CVE-2021-44038"))))
3540 (license license:gpl2+)))
3541
3542(define-public bgpq3
3543 (package
3544 (name "bgpq3")
3545 (version "0.1.38")
3546 (source
3547 (origin
3548 (method git-fetch)
3549 (uri (git-reference
3550 (url "https://github.com/snar/bgpq3")
3551 (commit (string-append "v" version))))
3552 (file-name (git-file-name name version))
3553 (sha256
3554 (base32 "11zm2z2cxazzr1x6mwmjc167cclkgaah7b1k8pfpfm555bpli9mf"))))
3555 (build-system gnu-build-system)
3556 (arguments
3557 '(#:tests? #f)) ; no test suite
3558 (native-inputs (list python-markdown))
3559 (home-page "http://snar.spb.ru/prog/bgpq3/")
3560 (synopsis
3561 "Generate BGP filters from the @acronym{IRR, Internet Routing Registry}")
3562 (description
3563 "This program helps automate the creation and maintenance of @acronym{BGP,
3564Border Gateway Protocol} routing filters used for peering through Internet
3565exchanges.
3566
3567It generates prefix lists, (extended) access lists, policy-statement terms, and
3568AS paths from data in the @acronym{IRR, Internet Routing Registry}, including
3569the @acronym{RADB, Routing Assets Database} operated by the Merit Network at the
3570University of Michigan.
3571
3572The filters can be aggregated and exported in the most common formats.")
3573 (license (list license:bsd-3 ; strlcpy.c, sys_queue.h
3574 license:bsd-2)))) ; everything else, but missing headers
3575
3576(define-public thc-ipv6
3577 (package
3578 (name "thc-ipv6")
3579 (version "3.8")
3580 (source
3581 (origin
3582 (method git-fetch)
3583 (uri (git-reference
3584 (url "https://github.com/vanhauser-thc/thc-ipv6")
3585 (commit (string-append "v" version))))
3586 (file-name (git-file-name name version))
3587 (sha256
3588 (base32 "07kwika1zdq62s5p5z94xznm77dxjxdg8k0hrg7wygz50151nzmx"))
3589 (modules '((guix build utils)))
3590 (snippet '(begin (substitute* '("Makefile")
3591 (("-march=native") ""))))))
3592 (build-system gnu-build-system)
3593 (arguments
3594 (list
3595 #:tests? #f ; No test suite.
3596 #:make-flags
3597 #~(list (string-append "CC=" #$(cc-for-target))
3598 (string-append "PREFIX=" #$output))
3599 #:phases
3600 #~(modify-phases %standard-phases
3601 (add-after 'unpack 'patch-makefile
3602 (lambda _
3603 (substitute* "Makefile"
3604 ;; For reproducible builds
3605 (("date --iso-8601")
3606 "date --iso-8601 --utc --date=@$(SOURCE_DATE_EPOCH)")
3607 (("/bin/echo") "echo"))))
3608 (delete 'configure) ; No ./configure script.
3609 (add-after 'install 'install-more-docs
3610 (lambda _
3611 (let ((doc (string-append #$output "/share/thc-ipv6/doc")))
3612 (install-file "README" doc)
3613 (install-file "HOWTO-INJECT" doc)))))))
3614 (inputs
3615 (list libnetfilter-queue
3616 libnfnetlink
3617 libpcap
3618 openssl
3619 perl))
3620 (properties '((tunable? . #t)))
3621 (home-page "https://github.com/vanhauser-thc/thc-ipv6")
3622 (synopsis "IPv6 security research toolkit")
3623 (description "The THC IPv6 Toolkit provides command-line tools and a library
3624for researching IPv6 implementations and deployments. It requires Linux 2.6 or
3625newer and only works on Ethernet network interfaces.")
3626 ;; AGPL 3 with exception for linking with OpenSSL. See the 'LICENSE' file in
3627 ;; the source distribution for more information.
3628 (license license:agpl3)))
3629
3630(define-public bmon
3631 (package
3632 (name "bmon")
3633 (version "5.0")
3634 (source
3635 (origin
3636 (method url-fetch)
3637 (uri (string-append "https://github.com/Jafaral/bmon/releases/download/v"
3638 version "/bmon-" version ".tar.gz"))
3639 (sha256
3640 (base32
3641 "1h3kmmcm8mcagb4h9yfdbarw6ly4l00wc2lsn236n5m9vlgy85k0"))))
3642 (build-system gnu-build-system)
3643 (inputs
3644 (list libconfuse libnl ncurses))
3645 (native-inputs
3646 (list autoconf automake pkg-config))
3647 (synopsis "Bandwidth monitor")
3648 (description "bmon is a monitoring and debugging tool to capture
3649networking-related statistics and prepare them visually in a human-friendly
3650way. It features various output methods including an interactive curses user
3651interface and a programmable text output for scripting.")
3652 (home-page "https://github.com/Jafaral/bmon")
3653 ;; README.md mentions both the 2-clause BSD and expat licenses, but all
3654 ;; the source files only have expat license headers. Upstream has been
3655 ;; contacted for clarification: https://github.com/Jafaral/bmon/issues/59
3656 ;; Update the license field when upstream responds.
3657 (license (list license:bsd-2
3658 license:expat))))
3659
3660(define-public libnet
3661 (package
3662 (name "libnet")
3663 (version "1.2")
3664 (source
3665 (origin
3666 (method url-fetch)
3667 (uri (string-append "https://github.com/libnet/libnet/releases/download"
3668 "/v" version "/libnet-" version ".tar.gz"))
3669 (sha256
3670 (base32
3671 "19ys9vxk6fg70yzzdxsphfr0rwzgxxhr9b3ykhpg7rfray0qd96a"))))
3672 (build-system gnu-build-system)
3673 (arguments
3674 `(#:phases
3675 (modify-phases %standard-phases
3676 (add-after 'unpack 'fix-manpage-date
3677 (lambda _
3678 ;; Replace current date with specific date to build reproducibly
3679 (substitute* "doc/fixmanpages.in"
3680 (("pod2man -d .* -n") "pod2man -d \"1970-01-01\" -n"))))
3681 (add-before 'build 'build-doc
3682 (lambda* (#:key make-flags #:allow-other-keys)
3683 (apply invoke "make" "-C" "doc" "doc"
3684 make-flags))))))
3685 (native-inputs
3686 (list ;; To build the documentation, Doxygen and Perl is required.
3687 doxygen perl))
3688 (home-page "https://github.com/libnet/libnet")
3689 (synopsis "Framework for low-level network packet construction")
3690 (description
3691 "Libnet provides a fairly portable framework for network packet
3692construction and injection. It features portable packet creation interfaces
3693at the IP layer and link layer, as well as a host of supplementary
3694functionality. Using libnet, quick and simple packet assembly applications
3695can be whipped up with little effort.")
3696 (license license:bsd-2)))
3697
3698(define-public mtr
3699 (package
3700 (name "mtr")
3701 (version "0.95")
3702 (source
3703 (origin
3704 (method url-fetch)
3705 (uri (string-append "ftp://ftp.bitwizard.nl/mtr/"
3706 "mtr-" version ".tar.gz"))
3707 (sha256
3708 (base32 "0haanralbvd12pvkyihgkmx9ld74dnzm1s7mzparfandl416ibff"))))
3709 (build-system gnu-build-system)
3710 (native-inputs (list pkg-config))
3711 (inputs
3712 (list jansson ncurses))
3713 (arguments
3714 `(#:tests? #f)) ; tests require network access
3715 (home-page "https://www.bitwizard.nl/mtr/")
3716 (synopsis "Network diagnostic tool")
3717 (description
3718 "@acronym{mtr, My TraceRoute} combines the functionality of the
3719@command{traceroute} and @command{ping} programs in a single network diagnostic
3720tool. @command{mtr} can use several network protocols to detect intermediate
3721routers (or @dfn{hops}) between the local host and a user-specified destination.
3722It then continually measures the response time and packet loss at each hop, and
3723displays the results in real time.")
3724 (license license:gpl2+)))
3725
3726(define-public amule
3727 (let ((commit "9ceeaa68b9727fa38efd9ddcf774b20d39d5a200")
3728 (revision "0"))
3729 (package
3730 (name "amule")
3731 (version (git-version "2.3.3" revision commit))
3732 (source
3733 (origin
3734 (method git-fetch)
3735 (uri (git-reference
3736 (url "https://github.com/amule-project/amule")
3737 (commit commit)))
3738 (file-name (git-file-name name version))
3739 (sha256
3740 (base32 "1mwc7cgijbb5l4bvvsvjm0qqnyi9hpp1qaj6si86q4q935qp5qx6"))))
3741 (build-system gnu-build-system)
3742 (arguments
3743 (list
3744 #:phases
3745 #~(modify-phases %standard-phases
3746 (delete 'bootstrap) ;bootstrap phase runs too early.
3747 (add-after 'patch-source-shebangs 'autogen
3748 (lambda _
3749 (invoke "sh" "autogen.sh"))))
3750 #:configure-flags
3751 #~(list "--disable-rpath"
3752 "--enable-wxcas"
3753 "--enable-cas"
3754 "--enable-alc"
3755 "--enable-alcc"
3756 "--enable-xas"
3757 "--enable-amulecmd"
3758 "--enable-geoip"
3759 "--enable-ccache"
3760 "--enable-nls"
3761 "--enable-optimize"
3762 "--enable-amule-gui"
3763 "--enable-amule-daemon"
3764 "--enable-webserver"
3765 "--with-denoise-level=0")))
3766 (native-inputs (list autoconf automake gettext-minimal perl))
3767 (inputs (list zlib crypto++ libpng wxwidgets))
3768 (home-page "https://amule.org/")
3769 (synopsis "Peer-to-peer client for the eD2K and Kademlia networks")
3770 (description
3771 "aMule is an eMule-like client for the eD2k and Kademlia peer-to-peer
3772file sharing networks. It includes a graphical user interface (GUI), a daemon
3773allowing you to run a client with no graphical interface, and a Web GUI for
3774remote access. The @command{amulecmd} command allows you to control aMule
3775remotely.")
3776 (license license:gpl2+))))
3777
3778(define-public zyre
3779 (package
3780 (name "zyre")
3781 (version "2.0.1")
3782 (source (origin
3783 (method url-fetch)
3784 (uri
3785 (string-append "https://github.com/zeromq/zyre/releases/download/v"
3786 version "/" name "-" version ".tar.gz"))
3787 (sha256
3788 (base32
3789 "13596507ma1474cjqzxym5jlvcshvw7sjhw80rdz788gyz6kz90b"))))
3790 (build-system gnu-build-system)
3791 (inputs (list zeromq czmq libsodium))
3792 (synopsis "Framework for proximity-based peer-to-peer applications")
3793 (description "Zyre provides reliable group messaging over local area
3794networks using zeromq. It has these key characteristics:
3795
3796@itemize
3797@item Zyre needs no administration or configuration.
3798@item Peers may join and leave the network at any time.
3799@item Peers talk to each other without any central brokers or servers.
3800@item Peers can talk directly to each other.
3801@item Peers can join groups, and then talk to groups.
3802@item Zyre is reliable, and loses no messages even when the network is heavily loaded.
3803@item Zyre is fast and has low latency, requiring no consensus protocols.
3804@item Zyre is designed for WiFi networks, yet also works well on Ethernet networks.
3805@end itemize")
3806 (home-page "https://github.com/zeromq/zyre")
3807 (license license:mpl2.0)))
3808
3809(define-public libsocketcan
3810 (package
3811 (name "libsocketcan")
3812 (version "0.0.12")
3813 (source (origin
3814 (method git-fetch)
3815 (uri (git-reference
3816 (url "https://git.pengutronix.de/cgit/tools/libsocketcan")
3817 (commit (string-append "v" version))))
3818 (file-name (git-file-name name version))
3819 (sha256
3820 (base32
3821 "0nrav2yqxgb7jwnhrwirnxs9ycqqh90sqgv5a8lns837jf385jvq"))))
3822 (build-system gnu-build-system)
3823 (arguments
3824 (list #:phases
3825 #~(modify-phases %standard-phases
3826 ;; Upstream already puts (more) files in share/doc/libsocketcan.
3827 (delete 'install-license-files))))
3828 (native-inputs
3829 (list autoconf automake libtool))
3830 (home-page "https://git.pengutronix.de/cgit/tools/libsocketcan")
3831 (synopsis "SocketCAN user-space library")
3832 (description "This library allows controlling basic functions in SocketCAN
3833from user-space. It requires a kernel built with SocketCAN support.")
3834 (license license:lgpl2.1+)))
3835
3836(define-public can-utils
3837 (package
3838 (name "can-utils")
3839 (version "2025.01")
3840 (source (origin
3841 (method git-fetch)
3842 (uri (git-reference
3843 (url "https://github.com/linux-can/can-utils")
3844 (commit (string-append "v" version))))
3845 (file-name (git-file-name name version))
3846 (sha256
3847 (base32
3848 "1h8qh3170ign8b37m89i2jnnznzkwglv1kg63s3v1pp3lf3b9sf2"))))
3849 (build-system gnu-build-system)
3850 (arguments
3851 (list #:tests? #f ; No tests exist.
3852 #:make-flags #~(list (string-append "CC=" #$(cc-for-target))
3853 (string-append "PREFIX=" #$output))
3854 #:phases
3855 #~(modify-phases %standard-phases
3856 (delete 'bootstrap)
3857 (delete 'configure))))
3858 (home-page "https://github.com/linux-can/can-utils")
3859 (synopsis "CAN utilities")
3860 (description "This package provides CAN utilities in the following areas:
3861
3862@itemize
3863@item Basic tools to display, record, generate and replay CAN traffic
3864@item CAN access via IP sockets
3865@item CAN in-kernel gateway configuration
3866@item CAN bus measurement and testing
3867@item ISO-TP (ISO15765-2:2016 - this means messages with a body larger than
3868eight bytes) tools
3869@item Log file converters
3870@item Serial Line Discipline configuration for slcan driver
3871@end itemize")
3872 ;; Either BSD-3 or GPL-2 can be used.
3873 (license (list license:bsd-3 license:gpl2))))
3874
3875(define-public asio
3876 (package
3877 (name "asio")
3878 (version "1.36.0")
3879 (source
3880 (origin
3881 (method url-fetch)
3882 (uri (string-append "mirror://sourceforge/asio/asio/"
3883 version " (Stable)/asio-" version ".tar.bz2"))
3884 (sha256
3885 (base32 "092mh9lmvj0da2wnna0x43wi08fcdl1bxrp6ji6crnfcq7ixpx3v"))))
3886 (build-system gnu-build-system)
3887 (inputs
3888 (list boost openssl))
3889 (arguments
3890 `(#:configure-flags
3891 (list
3892 (string-append "--with-boost=" (assoc-ref %build-inputs "boost"))
3893 (string-append "--with-openssl=" (assoc-ref %build-inputs "openssl")))))
3894 (home-page "https://think-async.com/Asio")
3895 (synopsis "C++ library for ASynchronous network I/O")
3896 (description "Asio is a cross-platform C++ library for network and
3897low-level I/O programming that provides developers with a consistent
3898asynchronous model using a modern C++ approach.")
3899 (license license:boost1.0)))
3900
3901(define-public asio-1.28
3902 (package/inherit asio
3903 (version "1.28.2")
3904 (source
3905 (origin
3906 (method url-fetch)
3907 (uri (string-append "mirror://sourceforge/asio/asio/"
3908 version " (Stable)/asio-" version ".tar.bz2"))
3909 (sha256
3910 (base32 "1479z0pa9781dx1crsyaa9fvlcmyhb22m355f8cil77jjh13xf7i"))))))
3911
3912(define-public shadowsocks
3913 (package
3914 (name "shadowsocks")
3915 (version "2.9.1")
3916 (source
3917 (origin
3918 (method git-fetch)
3919 (uri (git-reference
3920 (url "https://github.com/shadowsocks/shadowsocks")
3921 (commit version)))
3922 (sha256
3923 (base32 "02mp5905nz02d7amb4zc77rcrkxmvy8mf5rci7mvy58g24lvbw25"))
3924 (file-name (git-file-name name version))))
3925 (build-system pyproject-build-system)
3926 (arguments
3927 (list
3928 ;; XXX: Package is deprecated, but it might be a good thing to try and
3929 ;; keep it.
3930 #:tests? #f
3931 #:phases
3932 #~(modify-phases %standard-phases
3933 (add-after 'unpack 'patch-crypto-paths
3934 (lambda* (#:key inputs #:allow-other-keys)
3935 (substitute* "shadowsocks/shell.py"
3936 (("config\\.get\\('libopenssl', None\\)")
3937 (format #f "config.get('libopenssl', ~s)"
3938 (search-input-file inputs "lib/libssl.so"))))))
3939 (add-after 'unpack 'python-fixes
3940 (lambda _
3941 (substitute* "shadowsocks/lru_cache.py"
3942 (("collections\\.MutableMapping")
3943 "collections.abc.MutableMapping")))))))
3944 (inputs (list openssl))
3945 (native-inputs
3946 (list python-pytest python-setuptools python-wheel))
3947 (home-page "https://github.com/shadowsocks/shadowsocks")
3948 (synopsis "Fast tunnel proxy that helps you bypass firewalls")
3949 (description
3950 "This package is a fast tunnel proxy that helps you bypass firewalls.
3951
3952Features:
3953@itemize
3954@item TCP & UDP support
3955@item User management API
3956@item TCP Fast Open
3957@item Workers and graceful restart
3958@item Destination IP blacklist
3959@end itemize")
3960 (license license:asl2.0)))
3961
3962(define-public net-snmp
3963 (package
3964 (name "net-snmp")
3965 (version "5.9.4")
3966 (source (origin
3967 (method url-fetch)
3968 (uri (string-append "mirror://sourceforge/net-snmp/net-snmp/"
3969 version "/net-snmp-" version ".tar.gz"))
3970 (sha256
3971 (base32
3972 "0i05bds30jazb2wq0hn3mh1zmmnnl9hkkd5y2iq3qkp7j49y0kcb"))
3973 (modules '((guix build utils)))
3974 (snippet
3975 '(begin
3976 ;; Drop bundled libraries.
3977 (delete-file-recursively "snmplib/openssl")))))
3978 (build-system gnu-build-system)
3979 (arguments
3980 `(#:test-target "test"
3981 ;; XXX: With parallel build enabled, Perl modules may not get linked with
3982 ;; libnetsnmp. See e.g. <https://bugzilla.novell.com/show_bug.cgi?id=819497>.
3983 #:parallel-build? #f
3984 #:configure-flags
3985 (list (string-append "LDFLAGS=-Wl,-rpath="
3986 (assoc-ref %outputs "out")
3987 "/lib")
3988 "--disable-static"
3989 "--with-logfile=/var/log/snmpd.log"
3990 (string-append "--with-openssl="
3991 (assoc-ref %build-inputs "openssl")))
3992 #:phases
3993 (modify-phases %standard-phases
3994 (add-after 'unpack 'patch-tests
3995 (lambda* (#:key inputs #:allow-other-keys)
3996 (substitute* "testing/fulltests/support/simple_TESTCONF.sh"
3997 (("NETSTAT=\"\"")
3998 (string-append "NETSTAT=\"" (which "netstat") "\"")))
3999 (substitute* '("testing/fulltests/default/T065agentextend_simple"
4000 "testing/fulltests/default/T115agentxperl_simple")
4001 (("/usr/bin/env") (which "env")))
4002 (substitute* "testing/fulltests/default/T065agentextend_sh_simple"
4003 (("/bin/sh") (which "sh")))
4004 ;; These tests require network access.
4005 (for-each delete-file
4006 '("testing/fulltests/default/T070com2sec_simple"
4007 "testing/fulltests/default/T071com2sec6_simple"))))
4008 (add-after 'unpack 'patch-Makefile.PL
4009 (lambda* (#:key outputs #:allow-other-keys)
4010 (substitute* "Makefile.in"
4011 (("Makefile.PL -NET")
4012 (string-append "Makefile.PL PREFIX="
4013 (assoc-ref outputs "out")
4014 " INSTALLDIRS=site" " NO_PERLLOCAL=1"
4015 " -NET"))))))))
4016 (inputs
4017 (list libnl ncurses ; for the ‘apps’
4018 openssl perl))
4019 (native-inputs
4020 (list pkg-config
4021 ;; For tests only.
4022 net-tools coreutils grep))
4023 (home-page "http://www.net-snmp.org/")
4024 (synopsis "Simple Network Management Protocol library and tools")
4025 (description "The @dfn{Simple Network Management Protocol} (SNMP) is a
4026widely used protocol for monitoring the health and welfare of network
4027equipment (e.g. routers), computer equipment and even devices like UPSs.
4028Net-SNMP is a suite of applications used to implement SNMP v1, SNMP v2c and
4029SNMP v3 using both IPv4 and IPv6.")
4030 ;; This only affects OpenBSD
4031 ;; https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-8100
4032 (properties `((lint-hidden-cve . ("CVE-2015-8100"))))
4033 (license (list license:bsd-3
4034 (license:non-copyleft
4035 "http://www.net-snmp.org/about/license.html"
4036 "CMU/UCD copyright notice")))))
4037
4038(define-public ubridge
4039 (package
4040 (name "ubridge")
4041 (version "0.9.19")
4042 (source
4043 (origin
4044 (method git-fetch)
4045 (uri (git-reference
4046 (url "https://github.com/GNS3/ubridge")
4047 (commit (string-append "v" version))))
4048 (file-name (git-file-name name version))
4049 (sha256
4050 (base32 "1hjn1zxjif6kp251gxlf4a5s2lnjgx78ls74ck6cqmkly4ndgp5s"))))
4051 (build-system gnu-build-system)
4052 (arguments
4053 (list
4054 #:tests? #f ; no tests
4055 #:make-flags #~(list (string-append "CC=" #$(cc-for-target)))
4056 #:phases
4057 #~(modify-phases %standard-phases
4058 (delete 'configure) ; no configure script
4059 (add-before 'install 'set-bindir
4060 (lambda _
4061 (let ((bin (string-append #$output "/bin")))
4062 (mkdir-p bin)
4063 (substitute* "Makefile"
4064 (("\\$\\(BINDIR\\)") bin)
4065 (("\tsetcap cap_net.*$") ""))))))))
4066 (inputs
4067 (list libpcap))
4068 (home-page "https://github.com/GNS3/ubridge/")
4069 (synopsis "Bridge for UDP tunnels, Ethernet, TAP and VMnet interfaces")
4070 (description "uBridge is a simple program to create user-land bridges
4071between various technologies. Currently, bridging between UDP tunnels,
4072Ethernet and TAP interfaces is supported. Packet capture is also supported.")
4073 (license license:gpl3+)))
4074
4075(define-public hcxtools
4076 (package
4077 (name "hcxtools")
4078 (version "7.1.2")
4079 (source
4080 (origin
4081 (method git-fetch)
4082 (uri (git-reference
4083 (url "https://github.com/ZerBea/hcxtools")
4084 (commit version)))
4085 (sha256
4086 (base32 "0da9ad3v53x080b75q34zi16mnd58xl5s5w6afafgq406ajd2zdz"))
4087 (file-name (git-file-name name version))))
4088 (build-system gnu-build-system)
4089 (native-inputs (list pkg-config))
4090 (inputs (list curl libpcap openssl zlib))
4091 (arguments
4092 (list #:make-flags
4093 #~(list (string-append "CC="
4094 #$(cc-for-target)) "LDFLAGS+=-lcrypto"
4095 "LDFLAGS+=-lcurl" "LDFLAGS+=-lz"
4096 (string-append "PREFIX="
4097 #$output))
4098 #:tests? #f ;no test suite
4099 #:phases
4100 #~(modify-phases %standard-phases
4101 (delete 'configure))))
4102 (home-page "https://github.com/ZerBea/hcxtools")
4103 (synopsis "Capture wlan traffic to hashcat and John the Ripper")
4104 (description
4105 "This package contains a small set of tools to capture and convert
4106packets from wireless devices for use with hashcat or John the Ripper.")
4107 (license license:expat)))
4108
4109(define-public hcxdumptool
4110 (package
4111 (name "hcxdumptool")
4112 (version "7.1.2")
4113 (source
4114 (origin
4115 (method git-fetch)
4116 (uri (git-reference
4117 (url "https://github.com/ZerBea/hcxdumptool")
4118 (commit version)))
4119 (sha256
4120 (base32 "044ixwww6byfmv9208h3xzhqfc996sxxjqqq2lhr8dwmvg6s6jbl"))
4121 (file-name (git-file-name name version))))
4122 (build-system gnu-build-system)
4123 (arguments
4124 (list
4125 #:make-flags
4126 #~(list (string-append "CC=" #$(cc-for-target))
4127 (string-append "DESTDIR=")
4128 (string-append "PREFIX=" #$output))
4129 #:tests? #f ; no test suite
4130 #:phases
4131 #~(modify-phases %standard-phases
4132 (delete 'configure))))
4133 (inputs
4134 (list libpcap openssl))
4135 (home-page "https://github.com/ZerBea/hcxdumptool")
4136 (synopsis "Small tool to capture packets from wlan devices")
4137 (description
4138 "Small tool to capture packets from WLAN devices. After capturing,
4139upload the \"uncleaned\" cap to @url{https://wpa-sec.stanev.org/?submit} to
4140see if the access point or the client is vulnerable to a dictionary attack.
4141Convert the cap file to hccapx format and/or to WPA-PMKID-PBKDF2
4142hashline (16800) with @command{hcxpcaptool} from the @code{hcxtools} package
4143and check if the WLAN key or the master key was transmitted unencrypted.")
4144 (license license:expat)))
4145
4146(define-public dante
4147 (package
4148 (name "dante")
4149 (version "1.4.4")
4150 (source
4151 (origin
4152 (method url-fetch)
4153 (uri (string-append "https://www.inet.no/dante/files/dante-"
4154 version ".tar.gz"))
4155 (sha256
4156 (base32 "1v7s2fl573xrz68flhsnn9h51hn7cbj1qb6g1i60m7qz5xrwfwqr"))
4157 (patches (search-patches "dante-non-darwin.patch"))))
4158 (build-system gnu-build-system)
4159 (arguments '(#:configure-flags '("--with-libc=libc.so.6")))
4160 (inputs (list libxcrypt))
4161 (home-page "https://www.inet.no/dante/")
4162 (synopsis "SOCKS server and client")
4163 (description "Dante is a SOCKS client and server implementation. It can
4164be installed on a machine with access to an external TCP/IP network and will
4165allow all other machines, without direct access to that network, to be relayed
4166through the machine the Dante server is running on. The external network will
4167never see any machines other than the one Dante is running on.")
4168 (license (license:non-copyleft "file://LICENSE"))))
4169
4170(define-public restbed
4171 (package
4172 (name "restbed")
4173 (version "4.8")
4174 (source
4175 (origin
4176 (method git-fetch)
4177 (uri (git-reference
4178 (url "https://github.com/Corvusoft/restbed/")
4179 (commit version)))
4180 (file-name (git-file-name name version))
4181 (sha256
4182 (base32 "15j09x36i6zj6innl0w1mfzlc56qmjwrs82my8dsagqa2ikd08ya"))))
4183 (build-system cmake-build-system)
4184 (inputs
4185 (list asio-1.28 catch-framework openssl))
4186 (arguments
4187 `(;; Running parallel tests results in "bind: Address already in use" error
4188 ;; in test service_status_feature_test_suite.
4189 #:parallel-tests? #f
4190 #:configure-flags
4191 '("-DBUILD_SSL=NO")
4192 #:phases
4193 (modify-phases %standard-phases
4194 (add-after 'unpack 'apply-patches-and-fix-paths
4195 (lambda* (#:key inputs #:allow-other-keys)
4196 (let ((asio (assoc-ref inputs "asio"))
4197 (catch (assoc-ref inputs "catch"))
4198 (openssl (assoc-ref inputs "openssl")))
4199 (substitute* "cmake/Findasio.cmake"
4200 (("(find_path\\( asio_INCLUDE asio\\.hpp HINTS ).*$" all begin)
4201 (string-append begin " \"" asio "/include\" )")))
4202 (substitute* "cmake/Findcatch.cmake"
4203 (("(find_path\\( catch_INCLUDE catch\\.hpp HINTS ).*$" all begin)
4204 (string-append begin " \"" catch "/include\" )")))
4205 (substitute* "cmake/Findopenssl.cmake"
4206 (("(find_library\\( ssl_LIBRARY ssl ssleay32 HINTS ).*$" all begin)
4207 (string-append begin " \"" openssl "/lib\" )"))
4208 (("(find_library\\( crypto_LIBRARY crypto libeay32 HINTS ).*$" all begin)
4209 (string-append begin " \"" openssl "/lib\" )"))
4210 (("(find_path\\( ssl_INCLUDE openssl/ssl\\.h HINTS ).*$" all begin)
4211 (string-append begin " \"" openssl "/include\" )")))))))))
4212 (synopsis "Asynchronous RESTful functionality to C++11 applications")
4213 (description "Restbed is a comprehensive and consistent programming
4214model for building applications that require seamless and secure
4215communication over HTTP.")
4216 (home-page "https://github.com/Corvusoft/restbed")
4217 (license license:agpl3+)))
4218
4219(define-public restinio
4220 (package
4221 (name "restinio")
4222 (version "0.7.7")
4223 (source (origin
4224 (method git-fetch)
4225 (uri (git-reference
4226 (url "https://github.com/Stiffstream/restinio")
4227 (commit (string-append "v" version))))
4228 (file-name (git-file-name name version))
4229 (sha256
4230 (base32
4231 "0nzkh9kxk6mz570w4pygmfnyila5mkxcgzifi73wshd4yp7q3f3d"))))
4232 (build-system cmake-build-system)
4233 (arguments
4234 (list
4235 ;; Error when tests are run in parallel: "bind: Address already in use".
4236 #:parallel-tests? #f
4237 #:configure-flags
4238 #~(list "-DRESTINIO_INSTALL=ON"
4239 "-DRESTINIO_TEST=ON"
4240 "-DRESTINIO_DEP_LLHTTP=system"
4241 "-DRESTINIO_DEP_FMT=system"
4242 "-DRESTINIO_DEP_EXPECTED_LITE=system"
4243 "-DRESTINIO_DEP_CATCH2=find"
4244 "-DRESTINIO_DEP_SOBJECTIZER=find")
4245 #:phases
4246 #~(modify-phases %standard-phases
4247 (add-after 'unpack 'change-directory
4248 (lambda _
4249 (chdir "dev"))))))
4250 (native-inputs
4251 (list catch2-3.5
4252 json-dto))
4253 (inputs
4254 (list openssl
4255 sobjectizer))
4256 (propagated-inputs
4257 ;; These are all #include'd by restinio's .hpp header files.
4258 (list asio
4259 expected-lite
4260 fmt
4261 llhttp
4262 pcre
4263 pcre2
4264 zlib))
4265 (home-page "https://stiffstream.com/en/products/restinio.html")
4266 (synopsis "C++14 library that gives you an embedded HTTP/Websocket server")
4267 (description "RESTinio is a header-only C++14 library that gives you an embedded
4268HTTP/Websocket server. It is based on standalone version of ASIO
4269and targeted primarily for asynchronous processing of HTTP-requests.")
4270 (license license:bsd-3)))
4271
4272(define-public opendht
4273 (package
4274 (name "opendht")
4275 (version "3.7.0rc8") ;jami depends on this RC
4276 (source (origin
4277 (method git-fetch)
4278 (uri (git-reference
4279 (url "https://github.com/savoirfairelinux/opendht")
4280 (commit (string-append "v" version))))
4281 (file-name (git-file-name name version))
4282 (sha256
4283 (base32
4284 "0ysfwrqjh6mpy6zycmd3ljsd63ap8i4psgnr25vp0xqbjrfz6rf6"))))
4285 (outputs '("out" "python" "tools" "debug"))
4286 (build-system meson-build-system)
4287 (arguments
4288 (list
4289 #:modules '((guix build meson-build-system)
4290 (guix build utils)
4291 (ice-9 ftw)
4292 (srfi srfi-26))
4293 #:configure-flags
4294 #~(list "-Dproxy_client=enabled"
4295 "-Dproxy_server=enabled"
4296 "-Dpush_notifications=enabled")
4297 #:phases
4298 #~(modify-phases %standard-phases
4299 (add-after 'unpack 'disable-problematic-tests
4300 (lambda _
4301 (substitute* "meson.build"
4302 ;; The 'peerdiscovery' test fails even outside of the build
4303 ;; environment (see:
4304 ;; <https://github.com/savoirfairelinux/opendht/issues/819#issuecomment-3701328516>).
4305 (("test\\('PeerDiscovery', test_peerdiscovery)")
4306 ""))))
4307 (add-after 'unpack 'relax-test-timeouts
4308 (lambda _
4309 ;; At least the 'test_send_json' has been seen to fail
4310 ;; non-deterministically, but it seems hard to reproducible that
4311 ;; failure.
4312 (substitute* "tests/httptester.cpp"
4313 (("std::chrono::seconds\\(10)")
4314 "std::chrono::seconds(30)"))))
4315 (add-after 'install 'move-tools
4316 (lambda* (#:key inputs outputs #:allow-other-keys)
4317 (let* ((tools #$output:tools))
4318 (mkdir tools)
4319 (rename-file (string-append #$output "/bin")
4320 (string-append tools "/bin")))))
4321 (add-after 'install 'move-python-bindings
4322 (lambda _
4323 (let* ((python-dir (car
4324 (scandir (string-append #$output "/lib")
4325 (cut string-prefix? "python" <>))))
4326 (dest (string-append #$output:python "/lib/"
4327 python-dir)))
4328 (mkdir-p (dirname dest))
4329 (rename-file (string-append #$output "/lib/" python-dir)
4330 dest)))))))
4331 (native-inputs (list cppunit pkg-config python python-cython))
4332 (inputs
4333 (list bash-minimal
4334 fmt
4335 readline))
4336 (propagated-inputs
4337 (list msgpack-cxx ;included in several installed headers
4338 restinio ;included in opendht/http.h
4339 ;; The following are listed in the Requires/Requires.private
4340 ;; field of opendht.pc:
4341 argon2
4342 gnutls
4343 jsoncpp
4344 ;; liburing causes issues (see
4345 ;; <https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/2179>).
4346 nettle
4347 openssl ;required for the DHT proxy
4348 simdutf))
4349 (home-page "https://github.com/savoirfairelinux/opendht/")
4350 (synopsis "Lightweight Distributed Hash Table (DHT) library")
4351 (description "OpenDHT provides an easy to use distributed in-memory data
4352store. Every node in the network can read and write values to the store.
4353Values are distributed over the network, with redundancy. It includes the
4354following features:
4355@itemize
4356@item Lightweight and scalable, designed for large networks and small devices;
4357@item High resilience to network disruption;
4358@item Public key cryptography layer providing optional data signature and
4359encryption (using GnuTLS);
4360@item IPv4 and IPv6 support;
4361@item Clean and powerful C++14 map API;
4362@item Bindings for C, Rust & Python 3;
4363@item REST API with an optional HTTP client and server with push notification
4364support.
4365@end itemize
4366The following tools are also included:
4367@table @command
4368@item dhtnode
4369A command line tool to run a DHT node and perform operations supported by the
4370library (get, put, etc.) with text values.
4371@item dhtchat
4372A very simple IM client working over the DHT.
4373@end table")
4374 (license license:gpl3+)))
4375
4376(define-public dhtnet
4377 ;; There is no tag nor release; use the latest available commit.
4378 (let ((revision "2")
4379 (commit "7cadae497a87df2885a6ae5797654c1a1e57b5be"))
4380 (package
4381 (name "dhtnet")
4382 ;; The base version is taken from the CMakeLists.txt file (see:
4383 ;; <https://github.com/savoirfairelinux/dhtnet/blob/master/CMakeLists.txt#L3>)
4384 (version (git-version "0.1.0" revision commit))
4385 (source (origin
4386 (method git-fetch)
4387 (uri (git-reference
4388 (url "https://github.com/savoirfairelinux/dhtnet")
4389 (commit commit)))
4390 (file-name (git-file-name name version))
4391 (sha256
4392 (base32
4393 "10l8h2gn9kndl75nriazhclqmpd2yxr3jyrpi9jga5xc72bi3zpz"))))
4394 (outputs (list "out" "debug"))
4395 (build-system cmake-build-system)
4396 (arguments
4397 (list
4398 #:configure-flags #~(list "-DBUILD_DEPENDENCIES=OFF"
4399 "-DBUILD_SHARED_LIBS=ON"
4400 "-DDNC_SYSTEMD=OFF")
4401 #:phases
4402 #~(modify-phases %standard-phases
4403 (add-after 'unpack 'delete-problematic-tests
4404 (lambda _
4405 (substitute* "CMakeLists.txt"
4406 ;; The connectionaMnager, the ICE and turnCache tests fail
4407 ;; inside the containerized build environment, due to
4408 ;; relying on a name resolver (see:
4409 ;; https://git.jami.net/savoirfairelinux/dhtnet/-/issues/25).
4410 ((".*tests_connectionManager.*") "")
4411 ((".*tests_ice.*") "")
4412 ((".*tests_turnCache.*") "")
4413 ;; The peerDiscovery test fails for unknown reasons, on an
4414 ;; assertion that checks the value of 'isBobRecvChanlReq'.
4415 ((".*tests_peerDiscovery.*") "")))))))
4416 (native-inputs (list cppunit pkg-config))
4417 ;; This library depends on the Jami fork of pjproject that adds ICE
4418 ;; support.
4419 (inputs
4420 (list asio
4421 fmt
4422 msgpack-cxx
4423 opendht
4424 libnatpmp
4425 libupnp
4426 pjproject-jami
4427 readline
4428 yaml-cpp))
4429 (home-page "https://github.com/savoirfairelinux/dhtnet/")
4430 (synopsis "OpenDHT network library for C++")
4431 (description "The @code{dhtnet} is a C++ library providing abstractions
4432for interacting with an OpenDHT distributed network.")
4433 (license license:gpl3+))))
4434
4435(define-public frrouting
4436 (package
4437 (name "frrouting")
4438 (version "10.4.1")
4439 (source (origin
4440 (method git-fetch)
4441 (uri (git-reference
4442 (url "https://github.com/FRRouting/frr")
4443 (commit (string-append "frr-" version))))
4444 (file-name (git-file-name name version))
4445 (sha256
4446 (base32
4447 "0c787iv8lrjh92dgng3m8v0i56fx8ln1mhpmdcy8p03z5lxwqjd4"))))
4448 (build-system gnu-build-system)
4449 (inputs
4450 (list c-ares json-c libcap libxcrypt libyang libelf protobuf-c readline))
4451 (native-inputs
4452 (list autoconf automake
4453 libtool perl pkg-config python-wrapper python-pytest
4454 flex
4455 bison))
4456 (arguments (list #:configure-flags #~(list "--sysconfdir=/etc")))
4457 (home-page "https://frrouting.org/")
4458 (synopsis "IP routing protocol suite")
4459 (description "FRRouting (FRR) is an IP routing protocol suite which includes
4460protocol daemons for BGP, IS-IS, LDP, OSPF, PIM, and RIP.")
4461 (license license:gpl2+)))
4462
4463(define-public bird
4464 (package
4465 (name "bird")
4466 (version "2.15.1")
4467 (source (origin
4468 (method url-fetch)
4469 (uri (string-append "ftp://bird.network.cz/pub/bird/bird-"
4470 version ".tar.gz"))
4471 (sha256
4472 (base32
4473 "0pf7fp78jrblhbcd1zrp07ywjp59m38pm9rf2dn7ar715mi5rs28"))))
4474 (inputs
4475 (list libssh readline))
4476 (native-inputs
4477 (list bison flex))
4478 (arguments
4479 `(#:configure-flags '("--localstatedir=/var" "--enable-ipv6")
4480 #:phases
4481 (modify-phases %standard-phases
4482 (add-before 'configure 'dont-create-sysconfdir
4483 (lambda* (#:key outputs #:allow-other-keys)
4484 (substitute* "Makefile.in"
4485 ((" \\$\\(DESTDIR)/\\$\\(runstatedir)") "")))))))
4486 (build-system gnu-build-system)
4487 (home-page "https://bird.network.cz")
4488 (synopsis "Internet Routing Daemon")
4489 (description "BIRD is an Internet routing daemon with full support for all
4490the major routing protocols. It allows redistribution between protocols with a
4491powerful route filtering syntax and an easy-to-use configuration interface.")
4492 (license license:gpl2+)))
4493
4494(define-public iwd
4495 (package
4496 (name "iwd")
4497 (version "3.12")
4498 (source
4499 (origin
4500 (method git-fetch)
4501 (uri (git-reference
4502 (url "https://git.kernel.org/pub/scm/network/wireless/iwd.git")
4503 (commit version)))
4504 (file-name (git-file-name name version))
4505 (sha256
4506 (base32
4507 "1c05ayakg8kf9bxqf5857lkflk4mrzllmhz01cpyfpcx5pz71ipg"))))
4508 (build-system gnu-build-system)
4509 (inputs
4510 (list dbus
4511 ell (package-source ell)
4512 openresolv
4513 readline))
4514 (native-inputs
4515 (list autoconf
4516 automake
4517 libtool
4518 pkg-config
4519 python
4520 python-docutils
4521 openssl))
4522 (arguments
4523 (list
4524 #:configure-flags
4525 #~(list "--disable-systemd-service"
4526 "--enable-external-ell"
4527 "--enable-hwsim"
4528 "--enable-tools"
4529 "--enable-wired"
4530 "--localstatedir=/var"
4531 (string-append "--with-dbus-datadir=" #$output "/share/")
4532 (string-append "--with-dbus-busdir="
4533 #$output "/share/dbus-1/system-services"))
4534 #:phases
4535 #~(modify-phases %standard-phases
4536 (add-after 'unpack 'copy-ell-header-files
4537 ;; Copy into the source tree two of ell's private header files
4538 ;; that it shares with iwd, as is required to build with the
4539 ;; "--enable-external-ell" configure option. See the
4540 ;; definition of "ell_shared" in iwd's Makefile.am.
4541 (lambda* (#:key inputs #:allow-other-keys)
4542 (let ((ell-header-dir (search-input-directory inputs "/ell"))
4543 (target-dir "ell"))
4544 (mkdir target-dir)
4545 (for-each
4546 (lambda (file-name)
4547 (copy-file (string-append ell-header-dir "/" file-name)
4548 (string-append target-dir "/" file-name)))
4549 '("asn1-private.h" "useful.h")))))
4550 (add-after 'unpack 'patch-resolvconf-path
4551 (lambda* (#:key inputs #:allow-other-keys)
4552 (substitute* "src/resolve.c"
4553 (("getenv\\(\"PATH\"\\)")
4554 (format #f "\"~a\""
4555 (dirname (search-input-file
4556 inputs "sbin/resolvconf")))))))
4557 (add-after 'configure 'patch-Makefile
4558 (lambda _
4559 (substitute* "Makefile"
4560 ;; Don't try to 'mkdir /var'.
4561 (("\\$\\(MKDIR_P\\) -m 700") "true")))))))
4562 (home-page "https://iwd.wiki.kernel.org/")
4563 (synopsis "iNet Wireless Daemon")
4564 (description "iwd is a wireless daemon for Linux that aims to replace WPA
4565Supplicant. It optimizes resource utilization by not depending on any external
4566libraries and instead utilizing features provided by the Linux kernel to the
4567maximum extent possible.")
4568 (license license:lgpl2.1+)))
4569
4570(define-public iwgtk
4571 (package
4572 (name "iwgtk")
4573 (version "0.9")
4574 (source
4575 (origin
4576 (method git-fetch)
4577 (uri (git-reference (url "https://github.com/J-Lentz/iwgtk")
4578 (commit (string-append "v" version))))
4579 (file-name (git-file-name name version))
4580 (sha256
4581 (base32 "1fvxq4ydhzisfn93pcqbspqqi8fwj45v8q104bkm4qfzhf5nvp7w"))))
4582 (build-system meson-build-system)
4583 (inputs (list gtk qrencode))
4584 (native-inputs (list gettext-minimal pkg-config scdoc))
4585 (home-page "https://github.com/J-Lentz/iwgtk")
4586 (synopsis "Lightweight front-end for iwd")
4587 (description "Wireless networking GUI front-end for iwd, with supported
4588functionality similar to that of iwctl. Features include viewing and connecting
4589to available networks, managing known networks, provisioning new networks via
4590WPS or Wi-Fi Easy Connect, and an indicator icon displaying connection status
4591and signal strength.")
4592 (license license:gpl3+)))
4593
4594(define-public libyang
4595 (package
4596 (name "libyang")
4597 (version "3.12.2")
4598 (source (origin
4599 (method git-fetch)
4600 (uri (git-reference
4601 (url "https://github.com/CESNET/libyang")
4602 (commit (string-append "v" version))))
4603 (file-name (git-file-name name version))
4604 (sha256
4605 (base32
4606 "1gnnhm28zcla42wm1qpps5336msmhxcnrs8gc1prw6c0n5g0fwl8"))))
4607 (build-system cmake-build-system)
4608 (arguments
4609 `(#:configure-flags
4610 (list "-DENABLE_BUILD_TESTS=ON" "-DENABLE_LYD_PRIV=ON")))
4611 (propagated-inputs (list pcre2))
4612 (native-inputs (list cmocka pkg-config))
4613 (home-page "https://github.com/CESNET/libyang")
4614 (synopsis "YANG data modelling language library")
4615 (description "libyang is a YANG data modelling language parser and toolkit
4616written (and providing API) in C. Current implementation covers YANG 1.0 (RFC
46176020) as well as YANG 1.1 (RFC 7950).")
4618 (license license:bsd-3)))
4619
4620(define-public batctl
4621 (package
4622 (name "batctl")
4623 (version "2021.4")
4624 (source
4625 (origin
4626 (method url-fetch)
4627 (uri (string-append "https://downloads.open-mesh.org/batman/releases/batman-adv-"
4628 version "/batctl-" version ".tar.gz"))
4629 (sha256
4630 (base32 "1ryqz90av2p5pgmmpi1afmycd18zhpwz1i4f7r0s359jis86xndn"))))
4631 (inputs
4632 (list libnl))
4633 (native-inputs
4634 (list pkg-config))
4635 (build-system gnu-build-system)
4636 (arguments
4637 `(#:tests? #f
4638 ;; Batctl only has a makefile. Thus we disable tests and
4639 ;; configuration, passing in a few make-flags.
4640 #:phases (modify-phases %standard-phases (delete 'configure))
4641 #:make-flags
4642 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
4643 (string-append "PKG_CONFIG="
4644 (search-input-file %build-inputs
4645 "/bin/pkg-config"))
4646 ,(string-append "CC=" (cc-for-target)))))
4647 (home-page "https://www.open-mesh.org/projects/batman-adv/wiki/Wiki")
4648 (synopsis "Management tool for the mesh networking BATMAN protocol")
4649 (description "This package provides a control tool for the
4650B.A.T.M.A.N. mesh networking routing protocol provided by the Linux kernel
4651module @code{batman-adv}, for Layer 2.")
4652 (license license:gpl2+)))
4653
4654(define-public naett
4655 (package
4656 (name "naett")
4657 (version "0.3.3")
4658 (source (origin
4659 (method git-fetch)
4660 (uri (git-reference
4661 (url "https://github.com/erkkah/naett")
4662 (commit (string-append "v" version))))
4663 (file-name (git-file-name name version))
4664 (sha256
4665 (base32
4666 "1nnnps1755h8yawzpf71fm4g2hqdja4zw993ilsaad3z7p464q47"))))
4667 (build-system copy-build-system)
4668 (inputs (list curl))
4669 (arguments
4670 (list #:install-plan
4671 #~'(("naett.h" "include/")
4672 ("libnaett.so" "lib/"))
4673 #:phases
4674 #~(modify-phases %standard-phases
4675 (add-before 'install 'build
4676 (lambda _
4677 (invoke #$(cc-for-target)
4678 "-o" "libnaett.so"
4679 "-shared" "-fPIC" "-O2" "naett.c"
4680 "-lcurl" "-lpthread"))))))
4681 (synopsis "Tiny HTTP client library")
4682 (home-page "https://github.com/erkkah/naett")
4683 (description "This package provides a tiny HTTP client library in C.")
4684 (license license:unlicense)))
4685
4686(define-public pagekite
4687 (package
4688 (name "pagekite")
4689 (version "1.5.2.201011")
4690 (source
4691 (origin
4692 (method git-fetch)
4693 (uri (git-reference
4694 (url "https://github.com/pagekite/PyPagekite")
4695 (commit (string-append "v" version))))
4696 (file-name (git-file-name name version))
4697 (sha256
4698 (base32 "1v14pafdd2nzd63kpf7aijpqf5dribxij3ynx5q1232y1ci4wf14"))))
4699 (build-system pyproject-build-system)
4700 (arguments
4701 (list
4702 #:tests? #f ; Tests require extensive configuration.
4703 #:phases
4704 #~(modify-phases %standard-phases
4705 (add-after 'install 'install-man-page
4706 (lambda _
4707 (invoke "make" "doc/pagekite.1")
4708 (install-file "doc/pagekite.1"
4709 (string-append #$output "/share/man/man1"))))
4710 (replace 'check
4711 (lambda* (#:key tests? #:allow-other-keys)
4712 (when tests?
4713 (invoke "make" "test")))))))
4714 (native-inputs (list perl python-setuptools))
4715 (inputs (list python-six python-socksipychain))
4716 (home-page "https://pagekite.net/")
4717 (synopsis "Make localhost servers publicly visible")
4718 (description
4719 "PageKite implements a tunneled reverse proxy which makes it easy to make
4720a service (such as an HTTP or SSH server) on localhost visible to the wider
4721Internet, even behind NAT or restrictive firewalls. A managed front-end relay
4722service is available at @url{https://pagekite.net/}, or you can run your own.")
4723 (license license:agpl3+)))
4724
4725(define-public ipcalc
4726 (package
4727 (name "ipcalc")
4728 (version "0.51")
4729 (source
4730 (origin
4731 (method git-fetch)
4732 (uri (git-reference
4733 ;; This is the IPv6-capable continuation of the unmaintained
4734 ;; <https://jodies.de/ipcalc-archive/>.
4735 (url "https://github.com/kjokjo/ipcalc")
4736 (commit version)))
4737 (file-name (git-file-name name version))
4738 (sha256
4739 (base32 "0cnygb69vjmp3by75jcd2z4y3ybp1s7x4nl3d32xa49h8lkhdbfv"))))
4740 (inputs `(("perl" ,perl)))
4741 (build-system trivial-build-system) ;no Makefile.PL
4742 (arguments
4743 `(#:modules ((guix build utils))
4744 #:builder
4745 (begin
4746 (use-modules (guix build utils))
4747 (use-modules (srfi srfi-1))
4748 (let* ((source (assoc-ref %build-inputs "source"))
4749 (perl (string-append (assoc-ref %build-inputs "perl")
4750 "/bin"))
4751 (out (assoc-ref %outputs "out"))
4752 (bin (string-append out "/bin"))
4753 (doc (string-append out "/share/doc/ipcalc")))
4754 (copy-recursively source "source")
4755 (chdir "source")
4756
4757 (install-file "ipcalc" bin)
4758 (patch-shebang (string-append bin "/ipcalc") (list perl))))))
4759 (synopsis "Simple IP network calculator")
4760 (description "ipcalc takes an IP address and netmask and calculates the
4761resulting broadcast, network, Cisco wildcard mask, and host range. By giving
4762a second netmask, you can design subnets and supernets. It is also intended
4763to be a teaching tool and presents the subnetting results as
4764easy-to-understand binary values.")
4765 (home-page "https://github.com/kjokjo/ipcalc")
4766 (license license:gpl2+)))
4767
4768(define-public tunctl
4769 (package
4770 (name "tunctl")
4771 (version "1.5")
4772 (source
4773 (origin
4774 (method url-fetch)
4775 (uri (string-append "mirror://sourceforge/tunctl/tunctl/" version "/"
4776 "tunctl-" version ".tar.gz"))
4777 (sha256
4778 (base32 "1zsgn7w6l2zh2q0j6qaw8wsx981qcr536qlz1lgb3b5zqr66qama"))))
4779 (build-system gnu-build-system)
4780 (arguments
4781 (list
4782 #:phases
4783 #~(modify-phases %standard-phases
4784 (delete 'bootstrap) ;there is no configure.ac file
4785 (delete 'configure) ;there is no configure script
4786 (delete 'check) ;there are no tests
4787 (replace 'build
4788 (lambda _
4789 (setenv "CC" "gcc")
4790 (invoke "make" "tunctl")))
4791 ;; TODO: Requires docbook-to-man (unrelated to docbook2x and
4792 ;; docbook-utils) to generate man page from SGML.
4793 (replace 'install
4794 (lambda* (#:key outputs #:allow-other-keys)
4795 (let ((bin (string-append #$output "/bin")))
4796 (install-file "tunctl" bin)))))))
4797 (home-page "https://tunctl.sourceforge.net")
4798 (synopsis "Utility to set up and maintain TUN/TAP network interfaces")
4799 (description "Tunctl is used to set up and maintain persistent TUN/TAP
4800network interfaces, enabling user applications to simulate network traffic.
4801Such interfaces are useful for VPN software, virtualization, emulation,
4802simulation, and a number of other applications.")
4803 (license license:gpl2)))
4804
4805(define-public wol
4806 (package
4807 (name "wol")
4808 (version "0.7.1")
4809 (source
4810 (origin
4811 (method url-fetch)
4812 (uri (string-append "mirror://sourceforge/wake-on-lan/wol/"
4813 version "/wol-" version ".tar.gz"))
4814 (sha256
4815 (base32 "08i6l5lr14mh4n3qbmx6kyx7vjqvzdnh3j9yfvgjppqik2dnq270"))))
4816 (build-system gnu-build-system)
4817 (arguments
4818 ;; fix build with GCC 14
4819 '(#:configure-flags
4820 (list "CFLAGS=-Wno-implicit-function-declaration")))
4821 (home-page "https://sourceforge.net/projects/wake-on-lan/")
4822 (synopsis "Implements Wake On LAN functionality in a small program")
4823 (description "Tool to send a magic packet to wake another host on the
4824network. This must be enabled on the target host, usually in the BIOS.")
4825 (license license:gpl2)))
4826
4827(define-public traceroute
4828 (package
4829 (name "traceroute")
4830 (version "2.1.6")
4831 (source
4832 (origin
4833 (method url-fetch)
4834 (uri (string-append "mirror://sourceforge/traceroute/traceroute/"
4835 "traceroute-" version "/traceroute-"
4836 version ".tar.gz"))
4837 (sha256
4838 (base32 "0pnvp7fcgkhg58ilnp2j9dk83274s3mpjgzrzgvqzafpp76zkklw"))))
4839 (build-system gnu-build-system)
4840 (arguments
4841 (list
4842 #:tests? #f ; no test suite
4843 #:make-flags
4844 #~(list (string-append "LIBRARY_PATH="
4845 (assoc-ref %build-inputs "libc") "/lib")
4846 (string-append "CFLAGS=-I"
4847 (assoc-ref %build-inputs "kernel-headers")
4848 "/include")
4849 "LDFLAGS=-lm -L../libsupp"
4850 (string-append "prefix=" #$output))
4851 #:phases
4852 #~(modify-phases %standard-phases
4853 (add-after 'unpack 'patch-make
4854 (lambda _
4855 (substitute* "default.rules"
4856 ((" \\$\\(LIBDEPS\\)")
4857 "$(filter-out -l%,$(LIBDEPS))"))))
4858 (delete 'bootstrap) ; no configure.ac file
4859 (delete 'configure)))) ; no configure script
4860 (home-page "https://traceroute.sourceforge.net/")
4861 (synopsis "Tracks the route taken by packets over an IP network")
4862 (description "This package provides a modern, but Linux-specific
4863implementation of the @command{traceroute} command that can be used to follow
4864the route taken by packets on an IP network on their way to a given host. It
4865utilizes the IP protocol's time to live (TTL) field and attempts to elicit an
4866ICMP TIME_EXCEEDED response from each gateway along the path to the host.
4867Compared to other implementations, this @command{traceroute} command allows
4868some traces for unprivileged users.")
4869 (license (list license:gpl2+
4870 license:lgpl2.1+)))) ;for the libsupp subdirectory
4871
4872(define-public vde2
4873 (package
4874 (name "vde2")
4875 (version "2.3.3")
4876 (source
4877 (origin
4878 (method git-fetch)
4879 (uri (git-reference
4880 (url "https://github.com/virtualsquare/vde-2")
4881 (commit version)))
4882 (file-name (git-file-name name version))
4883 (sha256
4884 (base32 "0rgsizq6mhmrfc2nm2pdakp3g39b565qaskvv5fqk5grp03r1zk1"))))
4885 (build-system gnu-build-system)
4886 (arguments
4887 `(#:parallel-build? #f)) ; Build fails if #t.
4888 (native-inputs
4889 (list autoconf automake libtool))
4890 (inputs
4891 (list python libpcap wolfssl))
4892 (home-page "https://github.com/virtualsquare/vde-2")
4893 (synopsis "Virtual Distributed Ethernet")
4894 (description "VDE is a set of programs to provide virtual software-defined
4895Ethernet network interface controllers across multiple virtual or
4896physical, local or remote devices. The VDE architecture provides
4897virtual counterparts to hardware components such as switches and
4898cables.")
4899 (license (list license:gpl2
4900 license:lgpl2.1 ; libvdeplug
4901 (license:non-copyleft ; slirpvde
4902 "file://COPYING.slirpvde"
4903 "See COPYING.slirpvde in the distribution.")))))
4904
4905(define-public lldpd
4906 (package
4907 (name "lldpd")
4908 (version "1.0.19")
4909 (source
4910 (origin
4911 (method url-fetch)
4912 (uri (string-append "https://media.luffy.cx/files/lldpd/lldpd-"
4913 version ".tar.gz"))
4914 (sha256
4915 (base32 "0zwr1brzq41r6ji1gnqgnlg5sy0980w5n18xj3d3hlay7lbg6zgq"))
4916 (modules '((guix build utils)))
4917 (snippet
4918 '(begin
4919 ;; Drop bundled library.
4920 (delete-file-recursively "libevent")))))
4921 (arguments
4922 (list #:configure-flags
4923 #~(list
4924 "--with-privsep-user=nobody"
4925 "--with-privsep-group=nogroup"
4926 "--localstatedir=/var"
4927 "--enable-pie"
4928 "--disable-static"
4929 "--without-embedded-libevent"
4930 (string-append "--with-systemdsystemunitdir="
4931 #$output "/lib/systemd/system"))))
4932 (build-system gnu-build-system)
4933 (inputs
4934 (list libevent libxml2 openssl readline))
4935 (native-inputs
4936 (list pkg-config))
4937 (home-page "https://lldpd.github.io/")
4938 (synopsis "Locate neighbors of your network equipment")
4939 (description
4940 "The @dfn{Link Layer Discovery Protocol} (LLDP) is an industry standard
4941protocol designed to supplant proprietary Link-Layer protocols such as EDP or
4942CDP. The goal of LLDP is to provide an inter-vendor compatible mechanism to
4943deliver Link-Layer notifications to adjacent network devices. @code{lldpd} is
4944an implementation of LLDP. It also supports some proprietary protocols.")
4945 (license license:isc)))
4946
4947(define-public hashcash
4948 (package
4949 (name "hashcash")
4950 (version "1.22")
4951 (source
4952 (origin
4953 (method url-fetch)
4954 (uri (string-append "http://www.hashcash.org/source/hashcash-"
4955 version ".tgz"))
4956 (sha256
4957 (base32
4958 "15kqaimwb2y8wvzpn73021bvay9mz1gqqfc40gk4hj6f84nz34h1"))))
4959 (build-system gnu-build-system)
4960 (arguments
4961 (list
4962 #:tests? #f ;No tests available.
4963 #:make-flags
4964 #~(list "CFLAGS=-g -O2 -Wno-error=implicit-function-declaration"
4965 (string-append "CC=" #$(cc-for-target)))
4966 #:phases
4967 #~(modify-phases %standard-phases
4968 (delete 'configure)
4969 (add-after 'unpack 'fix-makefile
4970 (lambda _
4971 (substitute* "Makefile"
4972 (("/usr") #$output)
4973 ;; Only install hashcash, as we don't need the `sha1` binary.
4974 ((" hashcash sha1 ") " hashcash ")
4975 (("sha1-hashcash.1 ") " ")))))))
4976 ;; Home page does not have https.
4977 (home-page "http://www.hashcash.org/")
4978 (synopsis "Denial-of-service countermeasure")
4979 (description "Hashcash is a proof-of-work algorithm, which has been used
4980as a denial-of-service countermeasure technique in a number of systems.
4981
4982A hashcash stamp constitutes a proof-of-work which takes a parametrizable
4983amount of work to compute for the sender. The recipient can verify received
4984hashcash stamps efficiently.
4985
4986This package contains a command-line tool for computing and verifying hashcash
4987stamps.")
4988 (license license:public-domain)))
4989
4990(define-public nbd
4991 (package
4992 (name "nbd")
4993 (version "3.25")
4994 (source
4995 (origin
4996 (method url-fetch)
4997 (uri (string-append
4998 "https://github.com/NetworkBlockDevice/nbd/releases/download/nbd-"
4999 version "/nbd-" version ".tar.xz"))
5000 (sha256
5001 (base32 "02nxrgq3024g106x9wdyg23f0bj3avrmf3jdb4kckcaprc7zvj7m"))))
5002 (build-system gnu-build-system)
5003 (inputs
5004 (list glib))
5005 (native-inputs
5006 (list bison pkg-config which))
5007 (home-page "https://nbd.sourceforge.io/")
5008 (synopsis "NBD client and server")
5009 (description "This package provides the NBD (Network Block Devices)
5010client and server. It allows you to use remote block devices over a TCP/IP
5011network.")
5012 (license license:gpl2)))
5013
5014(define-public ngtcp2
5015 (package
5016 (name "ngtcp2")
5017 (version "1.15.1")
5018 (source
5019 (origin
5020 (method url-fetch)
5021 (uri (string-append "https://github.com/ngtcp2/ngtcp2/"
5022 "releases/download/v" version "/"
5023 "ngtcp2-" version ".tar.gz"))
5024 (sha256
5025 (base32 "1r3128v6fwn1p7py57frp4ij251z4rv4mfxknhjwylw9i3gr947r"))))
5026 (build-system gnu-build-system)
5027 (arguments
5028 (list
5029 #:configure-flags
5030 ;; openssl package does not support QUIC interface, so just gnutls
5031 #~(list "--with-gnutls")))
5032 (native-inputs (list pkg-config))
5033 (inputs (list gnutls))
5034 (home-page "https://nghttp2.org/ngtcp2/")
5035 (synopsis "QUIC protocol implementation")
5036 (description
5037 "The ngtcp2 project is an effort to implement the RFC9000 (IETF)
5038QUIC protocol.")
5039 (license license:expat)))
5040
5041(define-public yaz
5042 (package
5043 (name "yaz")
5044 (version "5.34.3")
5045 (source
5046 (origin
5047 (method url-fetch)
5048 (uri (string-append "https://download.indexdata.com/pub/yaz/yaz-"
5049 version ".tar.gz"))
5050 (sha256
5051 (base32 "1h54vda4rgisih309jbdzs6d5vk5mfv5ca9csdbwwrg8hgjbjk6f"))))
5052 (build-system gnu-build-system)
5053 (home-page "https://www.indexdata.com/resources/software/yaz/")
5054 (synopsis "Z39.50 toolkit for C")
5055 (description
5056 "YAZ is a C/C++ library for information retrieval applications using
5057@uref{https://www.loc.gov/z3950/, Z39.50},
5058@uref{https://www.loc.gov/standards/sru/, SRU} or
5059@uref{https://solr.apache.org/, Solr Web Service} protocols for information
5060retrieval. It also offers @uref{https://zoom.z3950.org/, ZOOM} API
5061implementing them.")
5062 (license license:bsd-3)))
5063
5064(define-public yggdrasil
5065 (package
5066 (name "yggdrasil")
5067 (version "0.5.14")
5068 (source
5069 (origin
5070 (method git-fetch)
5071 (uri
5072 (git-reference
5073 (url "https://github.com/yggdrasil-network/yggdrasil-go")
5074 (commit (string-append "v" version))
5075 (recursive? #t)))
5076 (file-name (git-file-name name version))
5077 (sha256
5078 (base32 "005a66p95p8mn30zgfxrdrldz5nn7xwfzh9p38c59fz1kvrafg3f"))
5079 (patches (search-patches "yggdrasil-extra-config.patch"))))
5080 (build-system go-build-system)
5081 (arguments
5082 (list #:import-path "github.com/yggdrasil-network/yggdrasil-go"
5083 #:install-source? #f
5084 ;; XXX: Test fails with "runtime error: slice bounds out of range
5085 ;; [:32] with capacity 0." See:
5086 ;; <https://github.com/yggdrasil-network/yggdrasil-go/issues/1353>
5087 #:test-flags #~(list "-skip" "TestConfigReadFromEmpty/empty")
5088 #:phases
5089 #~(modify-phases %standard-phases
5090 (replace 'build
5091 (lambda* (#:key import-path build-flags #:allow-other-keys)
5092 (let* ((pkgsrc "github.com/yggdrasil-network/yggdrasil-go/src/version")
5093 (ldflags (format #f
5094 "-X ~a.buildName=yggdrasil -X ~a.buildVersion=~a"
5095 pkgsrc
5096 pkgsrc
5097 #$version)))
5098 (for-each
5099 (lambda (directory)
5100 ((assoc-ref %standard-phases 'build)
5101 #:build-flags `("-ldflags" ,ldflags)
5102 #:import-path directory))
5103 (list "github.com/yggdrasil-network/yggdrasil-go/cmd/yggdrasil"
5104 "github.com/yggdrasil-network/yggdrasil-go/cmd/yggdrasilctl"
5105 "github.com/yggdrasil-network/yggdrasil-go/cmd/genkeys"))))))))
5106 (native-inputs
5107 (list ;; go-golang-org-x-mobile ; Not packed yet, for contrib.
5108 ;; go-golang-zx2c4-com-wireguard-windows ; Not packed yet, for tun.
5109 go-github-com-arceliar-ironwood
5110 go-github-com-arceliar-phony
5111 go-github-com-cheggaaa-pb-v3
5112 go-github-com-coder-websocket
5113 go-github-com-gologme-log
5114 go-github-com-hashicorp-go-syslog
5115 go-github-com-hjson-hjson-go-v4
5116 go-github-com-kardianos-minwinsvc
5117 go-github-com-olekukonko-tablewriter
5118 go-github-com-quic-go-quic-go
5119 go-github-com-vishvananda-netlink
5120 go-github-com-wlynxg-anet
5121 go-golang-org-x-crypto
5122 go-golang-org-x-net
5123 go-golang-org-x-sys
5124 go-golang-org-x-text
5125 go-golang-zx2c4-com-wireguard
5126 go-suah-dev-protect))
5127 (home-page "https://yggdrasil-network.github.io/blog.html")
5128 (synopsis
5129 "Experiment in scalable routing as an encrypted IPv6 overlay network")
5130 (description
5131 "Yggdrasil is an early-stage implementation of a fully end-to-end encrypted
5132IPv6 network. It is lightweight, self-arranging, supported on multiple
5133platforms and allows pretty much any IPv6-capable application to communicate
5134securely with other Yggdrasil nodes. Yggdrasil does not require you to have
5135IPv6 Internet connectivity - it also works over IPv4.")
5136 (license
5137 ;; As a special exception to the GNU Lesser General Public License
5138 ;; version 3 ("LGPL3"), the copyright holders of this Library give you
5139 ;; permission to convey to a third party a Combined Work that links
5140 ;; statically or dynamically to this Library without providing any Minimal
5141 ;; Corresponding Source or Minimal Application Code as set out in 4d or
5142 ;; providing the installation information set out in section 4e, provided
5143 ;; that you comply with the other provisions of LGPL3 and provided that you
5144 ;; meet, for the Application the terms and conditions of the license(s)
5145 ;; which apply to the Application. Except as stated in this special
5146 ;; exception, the provisions of LGPL3 will continue to comply in full to
5147 ;; this Library. If you modify this Library, you may apply this exception
5148 ;; to your version of this Library, but you are not obliged to do so. If
5149 ;; you do not wish to do so, delete this exception statement from your
5150 ;; version. This exception does not (and cannot) modify any license terms
5151 ;; which apply to the Application, with which you must still comply
5152 license:lgpl3)))
5153
5154(define-public yggtray
5155 (package
5156 (name "yggtray")
5157 (version "0.1.16")
5158 (source
5159 (origin
5160 (method git-fetch)
5161 (uri (git-reference
5162 (url "https://github.com/the-nexi/yggtray")
5163 (commit version)))
5164 (file-name (git-file-name name version))
5165 (sha256
5166 (base32 "1flwsxvhdj8xamr48z7z0272i9ffm9fpgij22vjk2ykjvsdrimvy"))))
5167 (build-system cmake-build-system)
5168 (arguments
5169 (list
5170 #:modules '((guix build cmake-build-system)
5171 (guix build qt-utils)
5172 (guix build utils))
5173 #:imported-modules `(,@%cmake-build-system-modules (guix build qt-utils))
5174 #:phases #~(modify-phases %standard-phases
5175 (add-after 'install 'wrap-qt
5176 (lambda* (#:key inputs #:allow-other-keys)
5177 (wrap-qt-program "yggtray"
5178 #:output #$output
5179 #:inputs inputs)))
5180 (replace 'check
5181 (lambda* (#:key tests? #:allow-other-keys)
5182 (when tests?
5183 (invoke "./unit_tests")))))))
5184 (native-inputs (list cmake-minimal
5185 check
5186 pkg-config))
5187 (inputs (list bash-minimal qtbase-5 qttools-5 qtwayland-5 yggdrasil))
5188 (home-page "https://github.com/the-nexi/yggtray")
5189 (synopsis "Yggdrasil tray and control panel")
5190 (description
5191 "@code{yggtray} is an @url{https://yggdrasil-network.github.io/, Yggdrasil} tray
5192and control panel. It allows the user to configure, run and control the Yggdrasil
5193daemon.")
5194 (license license:gpl3+)))
5195
5196(define-public nebula
5197 (package
5198 (name "nebula")
5199 (version "1.11.1")
5200 (source (origin
5201 (method git-fetch)
5202 (uri (git-reference
5203 (url "https://github.com/slackhq/nebula")
5204 (commit (string-append "v" version))))
5205 (file-name (git-file-name name version))
5206 (sha256
5207 (base32
5208 "1zj8wlchilk8lwjj686sgbr6ahqackzyhndi45j2hd9iv6mlx36x"))
5209 ;; Remove windows-related binary blobs and files
5210 (snippet
5211 #~(begin
5212 (use-modules (guix build utils))
5213 (delete-file-recursively "dist/windows")
5214 (delete-file-recursively "wintun")))))
5215 (build-system go-build-system)
5216 (arguments
5217 (list
5218 #:install-source? #f
5219 #:import-path "github.com/slackhq/nebula/..."
5220 #:unpack-path "github.com/slackhq/nebula"
5221 #:build-flags
5222 #~(list (format #f "-ldflags=-X main.Build=~a" #$version))))
5223 (native-inputs
5224 (list go-dario-cat-mergo
5225 go-filippo-io-bigmod
5226 go-github-com-anmitsu-go-shlex
5227 go-github-com-armon-go-radix
5228 go-github-com-cyberdelia-go-metrics-graphite
5229 go-github-com-flynn-noise
5230 go-github-com-gaissmai-bart
5231 go-github-com-gogo-protobuf
5232 go-github-com-google-gopacket
5233 go-github-com-kardianos-service
5234 go-github-com-miekg-dns
5235 go-github-com-miekg-pkcs11
5236 go-github-com-nbrownus-go-metrics-prometheus
5237 go-github-com-prometheus-client-golang
5238 go-github-com-rcrowley-go-metrics
5239 go-github-com-sirupsen-logrus
5240 go-github-com-skip2-go-qrcode
5241 go-github-com-stefanberger-go-pkcs11uri
5242 go-github-com-stretchr-testify
5243 go-github-com-vishvananda-netlink
5244 go-go-yaml-in-yaml-v3
5245 go-golang-org-x-crypto
5246 go-golang-org-x-exp
5247 go-golang-org-x-net
5248 go-golang-org-x-sync
5249 go-golang-org-x-sys
5250 go-golang-org-x-term
5251 go-golang-zx2c4-com-wireguard
5252 go-google-golang-org-protobuf
5253 go-gopkg-in-yaml-v3
5254 go-gvisor-dev-gvisor-source))
5255 (home-page "https://github.com/slackhq/nebula")
5256 (synopsis "Scalable, peer-to-peer overlay networking tool")
5257 (description
5258 "Nebula is a peer-to-peer networking tool based on the
5259@url{https://noiseprotocol.org/, Noise Protocol Framework}. It is not a fully
5260decentralized network, but instead uses central discovery nodes and a
5261certificate authority to facilitate direct, encrypted peer-to-peer connections
5262from behind most firewalls and @acronym{NAT, Network Address Translation}
5263layers.")
5264 (license license:expat)))
5265
5266(define-public netdiscover
5267 (package
5268 (name "netdiscover")
5269 (version "0.21")
5270 (source
5271 (origin
5272 (method git-fetch)
5273 (uri (git-reference
5274 (url "https://github.com/netdiscover-scanner/netdiscover")
5275 (commit version)))
5276 (sha256
5277 (base32 "0c5av6x2wm7gmhh5wc5961ff3l6kzpx95aj076qwn7v6v28psvpj"))
5278 (file-name (string-append "netdiscover-" version))))
5279 (arguments
5280 `(#:tests? #f)) ; no tests
5281 (build-system gnu-build-system)
5282 (inputs
5283 (list libnet libpcap))
5284 (native-inputs
5285 (list autoconf automake))
5286 (synopsis "Network address discovery tool")
5287 (description "Netdiscover is a network address discovery tool developed
5288mainly for wireless networks without a @acronym{DHCP} server. It also works
5289on hub/switched networks. It is based on @acronym{ARP} packets, it will send
5290@acronym{ARP} requests and sniff for replies.")
5291 (home-page "https://github.com/netdiscover-scanner/netdiscover")
5292 (license license:gpl3+)))
5293
5294(define-public phantomsocks
5295 (package
5296 (name "phantomsocks")
5297 (version "0.0.0-20241119070700-535ab0adb1e4")
5298 (source (origin
5299 (method git-fetch)
5300 (uri (git-reference
5301 (url "https://github.com/macronut/phantomsocks")
5302 (commit (go-version->git-ref version))))
5303 (file-name (git-file-name name version))
5304 (sha256
5305 (base32
5306 "1mqjkhpv4d0178d9r8kdjzb2mrvx1xrhbjsgsdn065h4jbjl1z96"))))
5307 (build-system go-build-system)
5308 (arguments
5309 (list #:install-source? #f
5310 #:import-path "github.com/macronut/phantomsocks"
5311 #:build-flags #~'("-tags" #$(if (target-linux?)
5312 "rawsocket"
5313 "pcap"))))
5314 (inputs
5315 (append (if (target-linux?)
5316 '()
5317 (list libpcap))
5318 (list go-github-com-google-gopacket
5319 go-github-com-macronut-go-tproxy)))
5320 (home-page "https://github.com/macronut/phantomsocks")
5321 (synopsis "Internet censorship circumvention tool")
5322 (description
5323 "Phantomsocks is an Internet censorship circumvention tool based on the
5324desync technique, which was introduced in the 2017 paper
5325@url{https://doi.org/10.1145/3131365.3131374, @cite{Your State is Not Mine: A
5326Closer Look at Evading Stateful Internet Censorship}}.
5327
5328Further information on the usage could be found on the Wikibooks page
5329@url{https://zh.wikibooks.org/wiki/Phantomsocks, @cite{Phantomsocks}}.")
5330 (license license:lgpl3+)))
5331
5332(define-public putty
5333 (package
5334 (name "putty")
5335 (version "0.81")
5336 (source
5337 (origin
5338 (method url-fetch)
5339 (uri (list (string-append "https://the.earth.li/~sgtatham/putty/"
5340 version "/putty-" version ".tar.gz")
5341 (string-append "http://www.putty.be/" version
5342 "/putty-" version ".tar.gz")))
5343 (sha256
5344 (base32 "1zirfs2zh1jj2i7jcdkyvnq6pliyg8fjipx38pir8d259ylh12yb"))))
5345 (build-system cmake-build-system)
5346 (arguments
5347 `(#:phases
5348 (modify-phases %standard-phases
5349 (replace 'check
5350 ;; As ‘documented’ in ./Buildscr and the 0.76 Makefile.in.
5351 (lambda* (#:key tests? #:allow-other-keys)
5352 (when tests?
5353 (setenv "PUTTY_TESTCRYPT" "./testcrypt")
5354 (invoke (string-append "../putty-" ,version
5355 "/test/cryptsuite.py"))))))))
5356 (inputs
5357 (list gtk+))
5358 (native-inputs
5359 (list perl
5360 pkg-config
5361
5362 ;; For tests.
5363 python))
5364 (synopsis "Graphical @acronym{SSH, Secure SHell} and telnet client")
5365 (description "PuTTY is a graphical text terminal client. It supports
5366@acronym{SSH, Secure SHell}, telnet, and raw socket connections with good
5367terminal emulation. It can authenticate with public keys and Kerberos
5368single-sign-on. It also includes command-line @acronym{SFTP, Secure File
5369Transfer Protocol} and older @acronym{SCP, Secure Copy Protocol}
5370implementations.")
5371 (home-page "https://www.chiark.greenend.org.uk/~sgtatham/putty/")
5372 (license license:expat)))
5373
5374
5375(define-public vnstat
5376 (package
5377 (name "vnstat")
5378 (version "2.13")
5379 (source
5380 (origin
5381 (method url-fetch)
5382 (uri (string-append "https://humdi.net/vnstat/vnstat-"
5383 version ".tar.gz"))
5384 (sha256
5385 (base32
5386 "11xilq1rhzazav9x7jhlvjcclqcyrx8sjak7qkxxvhqy5lqikzn9"))))
5387 (build-system gnu-build-system)
5388 (inputs (list sqlite gd))
5389 (native-inputs (list pkg-config check))
5390 (arguments
5391 (list
5392 #:phases
5393 #~(modify-phases %standard-phases
5394 (add-before 'check 'disable-id-tests
5395 (lambda _
5396 (substitute*
5397 '("Makefile" "tests/vnstat_tests.c")
5398 (("tests/id_tests.c \\$") "\\")
5399 (("tests/id_tests.h h") "h")
5400 (("^.*id_tests.*$") "")))))))
5401 (home-page "https://humdi.net/vnstat/")
5402 (synopsis "Network traffic monitoring tool")
5403 (description "vnStat is a console-based network traffic monitor that keeps
5404a log of network traffic for the selected interface(s). It uses the network
5405interface statistics provided by the kernel as information source. This means
5406that vnStat won't actually be sniffing any traffic and also ensures light use
5407of system resources regardless of network traffic rate.")
5408 (license license:gpl2+)))
5409
5410(define-public dnstracer
5411 (package
5412 (name "dnstracer")
5413 (version "1.10")
5414 (source (origin
5415 (method url-fetch)
5416 (uri (string-append "http://www.mavetju.org/download/"
5417 name "-" version ".tar.bz2"))
5418 (sha256
5419 (base32
5420 "089bmrjnmsga2n0r4xgw4bwbf41xdqsnmabjxhw8lngg2pns1kb4"))))
5421 (build-system gnu-build-system)
5422 (arguments
5423 (list #:tests? #f ;no test suite
5424 #:make-flags #~(list (string-append "PREFIX=" #$output)
5425 (string-append "CC=" #$(cc-for-target)))
5426 #:phases #~(modify-phases %standard-phases
5427 (add-after 'unpack 'patch-makefile
5428 (lambda _
5429 (substitute* "Makefile"
5430 (("\\$\\{PREFIX}/man")
5431 "${PREFIX}/share/man")
5432 (("^install:.*" all)
5433 (string-append
5434 all
5435 "\tinstall -d ${BINPREFIX}\n"
5436 "\tinstall -d ${MANPREFIX}\n")))))
5437 (delete 'configure))))
5438 (native-inputs (list perl)) ;for pod2man
5439 (home-page "http://www.mavetju.org/unix/dnstracer.php")
5440 (synopsis "Trace a chain of DNS servers to the source")
5441 (description "@command{dnstracer} determines where a given Domain Name
5442Server (DNS) gets its information from, and follows the chain of DNS servers
5443back to the servers which know the data.")
5444 (license license:bsd-2)))
5445
5446(define-public dropwatch
5447 (package
5448 (name "dropwatch")
5449 (version "1.5.5")
5450 (source (origin
5451 (method git-fetch)
5452 (uri (git-reference
5453 (url "https://github.com/nhorman/dropwatch")
5454 (commit (string-append "v" version))))
5455 (file-name (git-file-name name version))
5456 (sha256
5457 (base32
5458 "1zpp52mw863km710ljbcrlqcmk9nwfswbwaa2q5wr79qdkad7dpv"))))
5459 (build-system gnu-build-system)
5460 ;; XXX: bfd support isn't finished.
5461 ;; https://github.com/nhorman/dropwatch/issues/76#issuecomment-1328345444
5462 (arguments
5463 (list #:configure-flags #~(list "--without-bfd")))
5464 (native-inputs (list autoconf automake pkg-config))
5465 (inputs (list libnl libpcap readline))
5466 (home-page "https://github.com/nhorman/dropwatch")
5467 (synopsis "Monitor for network packets dropped by the kernel")
5468 (description
5469 "Dropwatch is an interactive utility for monitoring and
5470recording packets that are dropped by the kernel. It provides the commands
5471@command{dropwatch} and @command{dwdump}.")
5472 (license license:gpl2+)))
5473
5474(define-public openrdap
5475 (package
5476 (name "openrdap")
5477 (version "0.9.1")
5478 (source
5479 (origin
5480 (method git-fetch)
5481 (uri (git-reference
5482 (url "https://github.com/openrdap/rdap")
5483 (commit (string-append "v" version))))
5484 (file-name (git-file-name name version))
5485 (sha256
5486 (base32 "1w3kwxh3hvkp5x1m6i4ijydmpfpibgf9jkviqrvpcadh335989hn"))))
5487 (build-system go-build-system)
5488 (arguments
5489 (list
5490 #:install-source? #f
5491 #:import-path "github.com/openrdap/rdap/cmd/rdap"
5492 #:unpack-path "github.com/openrdap/rdap"
5493 #:test-subdirs #~(list "../../..."))) ;test whole library, starting from import-path
5494 (native-inputs
5495 (list go-github-com-alecthomas-kingpin-v2
5496 go-github-com-davecgh-go-spew
5497 go-github-com-jarcoal-httpmock
5498 go-github-com-mitchellh-go-homedir
5499 go-golang-org-x-crypto))
5500 (home-page "https://www.openrdap.org/")
5501 (synopsis "Command line RDAP client")
5502 (description
5503 "OpenRDAP is a command line client for the Registration Data Access
5504Protocol. RDAP is modern a replacement for WHOIS, which provides domain name
5505and IP address registration information in JSON format over HTTP.")
5506 (license license:expat)))
5507
5508(define-public wireproxy
5509 (package
5510 (name "wireproxy")
5511 (version "1.1.3")
5512 (source
5513 (origin
5514 (method git-fetch)
5515 (uri (git-reference
5516 (url "https://github.com/windtf/wireproxy")
5517 (commit (string-append "v" version))))
5518 (file-name (git-file-name name version))
5519 (sha256
5520 (base32 "0gpxvziz3n79lfakgdjpq3a75wiaa8rry0zq5q9wyqfc88328z2f"))))
5521 (build-system go-build-system)
5522 (arguments
5523 (list
5524 #:install-source? #f
5525 #:import-path "github.com/windtf/wireproxy/cmd/wireproxy"
5526 #:unpack-path "github.com/windtf/wireproxy"
5527 #:test-subdirs #~(list "../../..."))) ;to test the whole module
5528 (native-inputs
5529 (list go-github-com-akamensky-argparse
5530 go-github-com-go-ini-ini
5531 go-github-com-landlock-lsm-go-landlock
5532 go-github-com-makenowjust-heredoc-v2
5533 go-github-com-things-go-go-socks5
5534 go-golang-org-x-net
5535 go-golang-zx2c4-com-wireguard
5536 go-suah-dev-protect))
5537 (home-page "https://github.com/windtf/wireproxy")
5538 (synopsis "Wireguard client that exposes itself as a socks5 proxy")
5539 (description
5540 "wireproxy is a completely userspace application that connects to a
5541wireguard peer, and exposes a socks5/http proxy or tunnels on the machine.")
5542 (license license:isc)))
5543
5544(define-public wireproxy-awg
5545 (package
5546 (name "wireproxy-awg")
5547 (version "1.0.17")
5548 (source
5549 (origin
5550 (method git-fetch)
5551 (uri (git-reference
5552 (url "https://github.com/artem-russkikh/wireproxy-awg")
5553 (commit (string-append "v" version))))
5554 (file-name (git-file-name name version))
5555 (sha256
5556 (base32 "1wsdyimml8l09m97fq593rj84rlj08ly5vp2bkc4lahj1w9f074z"))))
5557 (build-system go-build-system)
5558 (arguments
5559 (list
5560 #:install-source? #f
5561 #:import-path "github.com/artem-russkikh/wireproxy-awg/cmd/wireproxy"
5562 #:unpack-path "github.com/artem-russkikh/wireproxy-awg"
5563 #:test-subdirs #~(list "../../...")))
5564 (native-inputs
5565 (list go-github-com-akamensky-argparse
5566 go-github-com-amnezia-vpn-amneziawg-go
5567 go-github-com-go-ini-ini
5568 go-github-com-landlock-lsm-go-landlock
5569 go-github-com-makenowjust-heredoc-v2
5570 go-github-com-things-go-go-socks5
5571 go-golang-org-x-net
5572 go-gvisor-dev-gvisor-source
5573 go-suah-dev-protect))
5574 (home-page "https://github.com/artem-russkikh/wireproxy-awg")
5575 (synopsis "AmneziaWG client that exposes itself as a SOCKS5 proxy")
5576 (description
5577 "wireproxy-awg is a completely userspace application that connects to a
5578WireGuard peer, and exposes a SOCKS5/HTTP proxy or tunnels on the machine.")
5579 (license license:isc)))
5580
5581(define-public zapret2
5582 (package
5583 (name "zapret2")
5584 (version "0.9.5")
5585 (source
5586 (origin
5587 (method git-fetch)
5588 (uri (git-reference
5589 (url "https://github.com/bol-van/zapret2")
5590 (commit (string-append "v" version))))
5591 (file-name (git-file-name name version))
5592 (sha256
5593 (base32 "1awl8ngh6x6sdn04az1rrsw1v7ignaz8bp4d3067li8gc9bp6cnd"))))
5594 (build-system gnu-build-system)
5595 (arguments
5596 (list
5597 #:tests? #f ;no tests
5598 #:make-flags #~(list (string-append "CC=" #$(cc-for-target)))
5599 #:phases
5600 #~(modify-phases %standard-phases
5601 (delete 'configure) ;no configure
5602 (add-after 'unpack 'fix-output-path
5603 (lambda _
5604 (substitute* "Makefile"
5605 (("TGT := binaries/my")
5606 (string-append "TGT := "
5607 #$output "/libexec/zapret2/nfq2")))))
5608 (add-after 'unpack 'fix-blockcheck-file
5609 (lambda _
5610 (substitute* "blockcheck2.sh"
5611 (("^ZAPRET_BASE=.*")
5612 (string-append "ZAPRET_BASE="
5613 #$output "/libexec/zapret2\n"))
5614 (("^ZAPRET_CONFIG=.*")
5615 "ZAPRET_CONFIG=/etc/zapret2/config\n")
5616 (("^ZAPRET_CONFIG_DEFAULT=.*")
5617 (string-append "ZAPRET_CONFIG_DEFAULT="
5618 #$output "/etc/zapret2/config.default\n"))
5619 (("^NFQWS2=.*")
5620 (string-append "NFQWS2="
5621 #$output "/libexec/zapret2/nfq2/nfqws2\n"))
5622 (("^MDIG=.*")
5623 (string-append "MDIG="
5624 #$output "/libexec/zapret2/nfq2/mdig\n")))))
5625 (add-after 'fix-blockcheck-file 'fix-zapret2-script
5626 (lambda _
5627 (substitute* "init.d/sysv/zapret2"
5628 (("^ZAPRET_BASE=.*")
5629 (string-append "ZAPRET_BASE="
5630 #$output "/libexec/zapret2\n"
5631 "ZAPRET_CONFIG=/etc/zapret2/config\n"))
5632 (("\\$EXEDIR/functions")
5633 (string-append #$output "/libexec/zapret2/functions")))))
5634 (replace 'install
5635 (lambda _
5636 (let ((bin (string-append #$output "/bin"))
5637 (etc-zapret2 (string-append #$output "/etc/zapret2"))
5638 (libexec (string-append #$output "/libexec/zapret2/")))
5639 (mkdir-p bin)
5640 (mkdir-p etc-zapret2)
5641 (for-each (lambda (dir)
5642 (copy-recursively dir
5643 (string-append libexec dir)))
5644 (list "lua" "common" "ipset" "blockcheck2.d"))
5645 (install-file "init.d/sysv/functions" libexec)
5646 (install-file "config.default" etc-zapret2)
5647 (install-file "init.d/sysv/zapret2" bin)
5648 (copy-file "blockcheck2.sh"
5649 (string-append bin "/zapret2-blockcheck")))))
5650 (add-after 'install 'wrap-scripts
5651 (lambda* (#:key inputs #:allow-other-keys)
5652 ;; Tools expected at runtime.
5653 (let* ((dir (lambda (f) (dirname (search-input-file inputs f))))
5654 (utils (list (dir "/bin/sed")
5655 (dir "/bin/grep")
5656 (dir "/bin/awk")
5657 (dir "/bin/cut")
5658 (dir "/sbin/nft"))))
5659 (wrap-program (string-append #$output "/bin/zapret2")
5660 `("PATH" ":" prefix ,utils))
5661 (wrap-program (string-append #$output "/bin/zapret2-blockcheck")
5662 `("PATH" ":" prefix
5663 (,(dir "/bin/curl")
5664 ,(dir "/bin/nslookup")
5665 ,@utils)))))))))
5666 (native-inputs
5667 (list pkg-config))
5668 (inputs
5669 (list bash-minimal
5670 coreutils
5671 curl
5672 gawk
5673 grep
5674 `(,isc-bind "utils")
5675 libcap
5676 libmnl
5677 libnetfilter-queue
5678 libnfnetlink
5679 luajit
5680 nftables
5681 sed
5682 zlib))
5683 (home-page "https://github.com/bol-van/zapret2")
5684 (synopsis "DPI bypass platform configured in Lua")
5685 (description
5686 "Zapret2 is a packet manipulator primarily designed to perform various
5687autonomous real-time attacks on @acronym{DPI, Deep Packet Inspection} systems.
5688Its main objective is to bypass resource blocks or protocol restrictions.
5689However, zapret2's capabilities are not limited to this; its architecture
5690allows for other types of packet manipulation, such as bidirectional
5691(client-server) protocol obfuscation to hide traffic from DPI, among other
5692applications.
5693
5694The configuration file is read from @file{/etc/zapret2/config}.")
5695 (license license:expat)))