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