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