summaryrefslogtreecommitdiff
path: root/gnu/packages/vpn.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/vpn.scm')
-rw-r--r--gnu/packages/vpn.scm352
1 files changed, 345 insertions, 7 deletions
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index adb48b1b97..330a3271b4 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -15,6 +15,9 @@
;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
;;; Copyright © 2020 Ivan Kozlov <kanichos@yandex.ru>
;;; Copyright © 2020 David Dashyan <mail@davie.li>
+;;; Copyright © 2021 Domagoj Stolfa <ds815@gmx.com>
+;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
+;;; Copyright © 2021 jgart <jgart@dismail.de>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -37,9 +40,12 @@
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system cmake)
+ #:use-module (guix build-system copy)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system go)
#:use-module (guix build-system linux-module)
#:use-module (guix build-system python)
+ #:use-module (guix build-system qt)
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages admin)
@@ -49,16 +55,22 @@
#:use-module (gnu packages dns)
#:use-module (gnu packages autotools)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages curl)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gettext)
+ #:use-module (gnu packages gnome)
+ #:use-module (gnu packages gl)
#:use-module (gnu packages gnupg)
+ #:use-module (gnu packages golang)
#:use-module (gnu packages guile)
#:use-module (gnu packages libevent)
#:use-module (gnu packages linux)
+ #:use-module (gnu packages multiprecision)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages nss)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages polkit)
#:use-module (gnu packages python)
#:use-module (gnu packages python-build)
#:use-module (gnu packages python-crypto)
@@ -69,6 +81,201 @@
#:use-module (gnu packages tls)
#:use-module (gnu packages xml))
+(define-public bitmask
+ (package
+ (name "bitmask")
+ (version "0.21.6")
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://0xacab.org/leap/bitmask-vpn")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0xmn0pkpn0mcwi1jlgm5skydcnfxk5fawg5hl2inn50m0ikgxk1c"))
+ (modules
+ '((guix build utils)))
+ (snippet
+ `(begin
+ (delete-file-recursively "branding/thirdparty")
+ (call-with-output-file "pkg/config/version/version.go"
+ (lambda (port)
+ (format port "package version\n")
+ (format port "\n")
+ (format port (string-append "var VERSION = \"" ,version "\""))))
+ #t))))
+ (build-system go-build-system)
+ (arguments
+ `(#:imported-modules
+ ((guix build cmake-build-system)
+ (guix build copy-build-system)
+ (guix build python-build-system)
+ (guix build qt-build-system)
+ (guix build qt-utils)
+ ,@%go-build-system-modules)
+ #:modules
+ (((guix build copy-build-system)
+ #:prefix copy:)
+ ((guix build python-build-system)
+ #:prefix python:)
+ ((guix build qt-build-system)
+ #:prefix qt:)
+ (guix build utils)
+ (guix build go-build-system))
+ #:unpack-path "0xacab.org/leap/bitmask-vpn"
+ #:import-path "0xacab.org/leap/bitmask-vpn/cmd/bitmask-helper"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'setup-go-environment 'insert-missing-sources
+ ;; For some reason this package is left out.
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let* ((name "go-0xacab-org-leap-shapeshifter")
+ (shapeshifter (assoc-ref inputs name))
+ (shapeshifter-src (string-append shapeshifter "/src")))
+ (copy-recursively shapeshifter-src "src"))))
+ (add-after 'unpack 'patch
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (with-directory-excursion "src/0xacab.org/leap/bitmask-vpn"
+ ;; Use 'emersion/go-autostart',
+ ;; instead of 'ProtonMail/go-autostart',
+ ;; as the latter no longer exists.
+ (substitute* (find-files "." "\\.go$")
+ (("github.com/ProtonMail/go-autostart")
+ "github.com/emersion/go-autostart"))
+ ;; Use correct paths for referenced items.
+ (let* ((out (assoc-ref outputs "out"))
+ (policy-dir (string-append out "/share/polkit-1/actions"))
+ (policy-file "se.leap.bitmask.policy")
+ (policy-path (string-append policy-dir "/" policy-file))
+ (ip (string-append (assoc-ref inputs "iproute")
+ "/sbin/ip"))
+ (iptables (string-append (assoc-ref inputs "iptables")
+ "/sbin/iptables"))
+ (ip6tables (string-append (assoc-ref inputs "iptables")
+ "/sbin/ip6tables"))
+ (sysctl (string-append (assoc-ref inputs "procps")
+ "/sbin/sysctl"))
+ (pkttyagent (string-append (assoc-ref inputs "polkit")
+ "/bin/pkttyagent"))
+ (openvpn (string-append (assoc-ref inputs "openvpn")
+ "/sbin/openvpn"))
+ (bitmask-root (string-append (assoc-ref outputs "out")
+ "/sbin/bitmask-root")))
+ (substitute* (find-files "." "(\\.go$|\\.policy$|bitmask-root)")
+ (("swhich\\(\"ip\"\\)")
+ (string-append "\"" ip "\""))
+ (("swhich\\(\"iptables\"\\)")
+ (string-append "\"" iptables "\""))
+ (("swhich\\(\"ip6tables\"\\)")
+ (string-append "\"" ip6tables "\""))
+ (("swhich\\(\"sysctl\"\\)")
+ (string-append "\"" sysctl "\""))
+ (("/usr/(bin|lib|libexec)/.*(kit|agent|agent-1)") pkttyagent)
+ (("/usr/sbin/openvpn") openvpn)
+ (("/usr/sbin/bitmask-root") bitmask-root)
+ (("/usr/local/sbin/bitmask-root") bitmask-root)
+ (("/usr/share.*\\.policy") policy-path)))
+ (substitute* (find-files "." "\\.pro$")
+ ;; Use correct path for goshim files,
+ ;; which are generated in 'build-continued phase.
+ (("-L.*/lib") "-L./lib")
+ ;; FIXME: Unable to build i18n files.
+ (("TRANSLATIONS.*i18n.*$") "")
+ (("RESOURCES.*i18n.*$") "")))))
+ (add-after 'build 'build-continued
+ (lambda _
+ ;; Generate goshim library and header files.
+ (let* ((dir "src/0xacab.org/leap/bitmask-vpn")
+ (source (string-append dir "/gui/backend.go"))
+ (target (string-append dir "/lib/libgoshim.a")))
+ (mkdir-p (string-append dir "/lib"))
+ (invoke "go" "build" "-buildmode=c-archive" "-o" target source))
+ ;; Build bitmask application.
+ (with-directory-excursion "src/0xacab.org/leap/bitmask-vpn"
+ (delete-file "Makefile")
+ (invoke "qmake" "bitmask.pro")
+ (invoke "make"))))
+ (add-after 'check 'check-continued
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ ;; Run bitmask test-suite.
+ (with-directory-excursion "src/0xacab.org/leap/bitmask-vpn"
+ (delete-file "Makefile")
+ (invoke "qmake" "test.pro")
+ ;; Tests require display-server.
+ (setenv "QT_QPA_PLATFORM" "offscreen")
+ ;; Tests look for $XDG_RUNTIME_DIR.
+ (setenv "XDG_RUNTIME_DIR" (getenv "TEMP"))
+ ;; Tests write to $HOME.
+ (setenv "HOME" (getenv "TEMP"))
+ (invoke "make" "check")))))
+ (add-after 'install 'install-continued
+ (lambda args
+ (apply (assoc-ref copy:%standard-phases 'install)
+ #:install-plan
+ ;; Install bitmask program.
+ '(("src/0xacab.org/leap/bitmask-vpn/release"
+ "bin"
+ #:include ("bitmask"))
+ ;; Install bitmask-root script.
+ ("src/0xacab.org/leap/bitmask-vpn/helpers"
+ "sbin"
+ #:include ("bitmask-root"))
+ ;; Install polkit-policy.
+ ("src/0xacab.org/leap/bitmask-vpn/helpers"
+ "share/polkit-1/actions"
+ #:include ("se.leap.bitmask.policy")))
+ args)))
+ (add-after 'install-continued 'post-install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bitmask (string-append out "/bin/bitmask"))
+ (bitmask-root (string-append out "/sbin/bitmask-root")))
+ ;; Make bitmask-root script executable.
+ (chmod bitmask-root #o777))))
+ (add-after 'post-install 'python-wrap
+ (assoc-ref python:%standard-phases 'wrap))
+ (add-after 'python-wrap 'qt-wrap
+ (assoc-ref qt:%standard-phases 'qt-wrap)))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("iproute" ,iproute)
+ ("iptables" ,iptables)
+ ("mesa" ,mesa)
+ ("openvpn" ,openvpn)
+ ("polkit" ,polkit)
+ ("procps" ,procps)
+ ("python" ,python)
+ ("qtbase" ,qtbase-5)
+ ("qtdeclarative" ,qtdeclarative)
+ ("qtquickcontrols" ,qtquickcontrols)
+ ("qtquickcontrols2" ,qtquickcontrols2)))
+ (propagated-inputs
+ `(("go-0xacab-org-leap-shapeshifter"
+ ,go-0xacab-org-leap-shapeshifter)
+ ("go-github-com-apparentlymart-go-openvpn-mgmt"
+ ,go-github-com-apparentlymart-go-openvpn-mgmt)
+ ("go-github-com-emersion-go-autostart"
+ ,go-github-com-emersion-go-autostart)
+ ("go-github-com-keybase-go-ps"
+ ,go-github-com-keybase-go-ps)
+ ("go-github-com-rakyll-statik"
+ ,go-github-com-rakyll-statik)
+ ("go-github-com-sevlyar-go-daemon"
+ ,go-github-com-sevlyar-go-daemon)
+ ("go-golang-org-x-sys" ,go-golang-org-x-sys)))
+ (synopsis "Generic VPN client by LEAP")
+ (description "Bitmask, by @acronym{LEAP, LEAP Encryption Access Project},
+is an application to provide easy and secure encrypted communication with a
+@acronym{VPN, Virtual Private Network}. It allows you to select from a variety
+of trusted service provider all from one app. Current providers include Riseup
+Networks and The Calyx Institute, where the former is default.")
+ (home-page "https://bitmask.net/")
+ (license license:gpl3+)))
+
(define-public gvpe
(package
(name "gvpe")
@@ -93,6 +300,138 @@ by creating encrypted host-to-host tunnels between multiple
endpoints.")
(license license:gpl3+)))
+(define-public strongswan
+ (package
+ (name "strongswan")
+ (version "5.9.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://download.strongswan.org/strongswan-"
+ version ".tar.bz2"))
+ (sha256
+ (base32 "1xy6c9c7bq5a5jmm04r9f9iqn39yrr1dkq81jhvpxsd4l1ban9ck"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'patch-command-file-names
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "src/ipsec/_ipsec.in"
+ (("cat|kill|sleep|rm|uname" command)
+ (string-append (assoc-ref inputs "coreutils")
+ "/bin/" command)))
+ (substitute* "src/libstrongswan/utils/process.c"
+ (("/bin/sh")
+ (string-append (assoc-ref inputs "bash") "/bin/sh")))
+
+ (substitute* "src/libstrongswan/tests/suites/test_process.c"
+ (("/bin/sh") (which "sh"))
+ (("/bin/echo") (which "echo"))
+ (("cat") (which "cat")))
+ #t))
+ (add-before 'check 'set-up-test-environment
+ (lambda* (#:key inputs #:allow-other-keys)
+ (setenv "TZDIR" (string-append (assoc-ref inputs "tzdata")
+ "/share/zoneinfo"))
+ #t)))
+ #:configure-flags
+ (list
+ "--disable-ldap"
+ "--disable-mysql"
+ "--disable-systemd"
+
+ ;; Disable BSD-4 licensed plugins.
+ "--disable-blowfish"
+ "--disable-des"
+
+ ;; Make it usable. The default configuration is far too minimal to be
+ ;; used with most common VPN set-ups.
+ ;; See <https://wiki.strongswan.org/projects/strongswan/wiki/Autoconf>.
+ "--enable-aesni"
+ "--enable-attr-sql"
+ "--enable-chapoly"
+ "--enable-curl"
+ "--enable-dhcp"
+ "--enable-eap-aka"
+ "--enable-eap-aka-3gpp"
+ "--enable-eap-dynamic"
+ "--enable-eap-identity"
+ "--enable-eap-md5"
+ "--enable-eap-mschapv2"
+ "--enable-eap-peap"
+ "--enable-eap-radius"
+ "--enable-eap-sim"
+ "--enable-eap-sim-file"
+ "--enable-eap-simaka-pseudonym"
+ "--enable-eap-simaka-reauth"
+ "--enable-eap-simaka-sql"
+ "--enable-eap-tls"
+ "--enable-eap-tnc"
+ "--enable-eap-ttls"
+ "--enable-ext-auth"
+ "--enable-farp"
+ "--enable-ha"
+ "--enable-led"
+ "--enable-md4"
+ "--enable-mediation"
+ "--enable-openssl"
+ "--enable-soup"
+ "--enable-sql"
+ "--enable-sqlite"
+ "--enable-xauth-eap"
+ "--enable-xauth-noauth"
+ "--enable-xauth-pam"
+
+ ;; Use libcap by default.
+ "--with-capabilities=libcap")))
+ (inputs
+ `(("coreutils" ,coreutils)
+ ("curl" ,curl)
+ ("gmp" ,gmp)
+ ("libcap" ,libcap)
+ ("libgcrypt" ,libgcrypt)
+ ("libsoup" ,libsoup)
+ ("linux-pam" ,linux-pam)
+ ("openssl" ,openssl)))
+ (native-inputs
+ `(("coreutils" ,coreutils)
+ ("pkg-config" ,pkg-config)
+ ("tzdata" ,tzdata-for-tests)))
+ (synopsis "IKEv1/v2 keying daemon")
+ (description "StrongSwan is an IPsec implementation originally based upon
+the FreeS/WAN project. It contains support for IKEv1, IKEv2, MOBIKE, IPv6,
+NAT-T and more.")
+ (home-page "https://strongswan.org/")
+ (license
+ (list license:gpl2+
+ ;; src/aikgen/*
+ ;; src/libcharon/plugins/dnscert/*
+ ;; src/libcharon/plugins/ext_auth/*
+ ;; src/libcharon/plugins/vici/ruby/*
+ ;; src/libcharon/plugins/xauth_pam/xauth_pam_listener.[ch]
+ license:expat
+ ;; src/inclue/sys/*
+ license:bsd-3
+ ;; src/libstrongswan/plugins/sha3/sha3_keccak.c
+ license:public-domain
+ ;; src/libstrongswan/plugins/pkcs11/pkcs11.h
+ (license:non-copyleft
+ "file://src/libstrongswan/plugins/pkcs11/pkcs11.h"
+ "pkcs11 contains a unknown permissive license. View the specific
+file for more details.")
+ ;; These files are not included in the
+ ;; build, they are disabled through
+ ;; options to ./configure
+ ;;
+ ;; src/libstrongswan/plugins/blowfish/bf_enc.c
+ ;; src/libstrongswan/plugins/blowfish/bf_locl.h
+ ;; src/libstrongswan/plugins/blowfish/bf_pi.h
+ ;; src/libstrongswan/plugins/blowfish/bf_skey.c
+ ;; src/libstrongswan/plugins/blowfish/blowfish_crypter.c
+ ;; src/libstrongswan/plugins/des/des_crypter.c
+ license:bsd-4))))
+
(define-public vpnc
(package
(name "vpnc")
@@ -293,14 +632,13 @@ and probably others.")
(define-public openconnect-sso
(package
(name "openconnect-sso")
- (version "0.7.2")
+ (version "0.7.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "openconnect-sso" version))
(sha256
- (base32
- "0nb40zfpp38mz6389y0qvrr4mmak53swpg7578cldnhnk0g15qni"))))
+ (base32 "065s5c8q80jh0psdw7694nlabwpra7aw6yc4jlgsc9vxx8rx2na1"))))
(build-system python-build-system)
(arguments
`(#:tests? #f ; Tests not included, building from git requires poetry.
@@ -383,7 +721,7 @@ this process. It is compatible with Fortinet VPNs.")
(define-public openvpn
(package
(name "openvpn")
- (version "2.5.1")
+ (version "2.5.3")
(source (origin
(method url-fetch)
(uri (string-append
@@ -391,7 +729,7 @@ this process. It is compatible with Fortinet VPNs.")
version ".tar.xz"))
(sha256
(base32
- "157ikzap2bbkzx34hkh33bpk2i14xjx1x3pkadhmzh1pr24h94s0"))))
+ "0zlski66mw10klmwvg445z051mld7xjng4iyl4f9b883qr1rjspv"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags '("--enable-iproute2=yes")))
@@ -678,7 +1016,7 @@ WireGuard was added to Linux 5.6.")
(define-public wireguard-tools
(package
(name "wireguard-tools")
- (version "1.0.20210315")
+ (version "1.0.20210424")
(source
(origin
(method git-fetch)
@@ -687,7 +1025,7 @@ WireGuard was added to Linux 5.6.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1an5gm2dv111n3fylbrnyynxmi2d3iwf2b46zq08hc54kzazxcml"))))
+ (base32 "12v0ykaz7phv1gqin35wf6ndgb9819vai17ynjxssq00xwcbsq43"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags