gnu: facter: Update to 4.0.33.
[jackhill/guix/guix.git] / gnu / packages / ssh.scm
index 72b7c74..50316ea 100644 (file)
@@ -9,10 +9,12 @@
 ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017 ng0 <ng0@n0.is>
+;;; Copyright © 2017 Nikita <nikita@n0.is>
 ;;; Copyright © 2018 Manuel Graf <graf@init.at>
 ;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com>
-;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
   #:use-module (guix utils)
   #:use-module (srfi srfi-1))
 
+(define-public hss
+  (package
+    (name "hss")
+    (version "1.8")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/six-ddc/hss")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1rpysj65j9ls30bf2c5k5hykzzjfknrihs58imp178bx1wqzw4jl"))))
+    (inputs
+     `(("readline" ,readline)))
+    (arguments
+     `(#:make-flags
+       (list ,(string-append "CC=" (cc-for-target))
+             (string-append "INSTALL_BIN=" (assoc-ref %outputs "out") "/bin"))
+       #:tests? #f                      ; no tests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-file-names
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* "Makefile"
+               (("/usr/local/opt/readline")
+                (assoc-ref inputs "readline")))
+             #t))
+         (delete 'configure))))         ; no configure script
+    (build-system gnu-build-system)
+    (home-page "https://github.com/six-ddc/hss/")
+    (synopsis "Interactive SSH client for multiple servers")
+    (description
+     "@command{hss} is an interactive SSH client for multiple servers.  Commands
+are executed on all servers in parallel.  Execution on one server does not need
+to wait for that on another server to finish before starting.  One can run a
+command on hundreds of servers at the same time, with almost the same experience
+as a local Bash shell.
+
+It supports:
+@itemize @bullet
+@item interactive input: based on GNU readline.
+@item history: responding to the @kbd{C-r} key.
+@item auto-completion: @key{TAB}-completion from remote servers for commands and
+file names.
+@end itemize\n")
+    (license license:expat)))
+
 (define-public libssh
   (package
     (name "libssh")
-    (version "0.9.3")
+    (version "0.9.4")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                      (commit (string-append "libssh-" version))))
               (sha256
                (base32
-                "175i3xybg69d5lb078334v6dd3njm743kww8f67ix9w33969rmzf"))
+                "0qr4vi3k1wv69c95d9j26fiv78pzyksaq8ccd76b8nxar5z1fbj6"))
               (file-name (git-file-name name version))))
     (build-system cmake-build-system)
     (outputs '("out" "debug"))
        ;; TODO: Add 'CMockery' and '-DWITH_TESTING=ON' for the test suite.
        #:tests? #f))
     (inputs `(("zlib" ,zlib)
-              ("libgcrypt" ,libgcrypt)))
+              ("libgcrypt" ,libgcrypt)
+              ("mit-krb5" ,mit-krb5)))
     (synopsis "SSH client library")
     (description
      "libssh is a C library implementing the SSHv2 and SSHv1 protocol for client
@@ -130,14 +181,15 @@ a server that supports the SSH-2 protocol.")
 (define-public openssh
   (package
    (name "openssh")
-   (version "8.2p1")
+   (version "8.3p1")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://openbsd/OpenSSH/portable/"
                                  "openssh-" version ".tar.gz"))
+             (patches (search-patches "openssh-hurd.patch"))
              (sha256
               (base32
-               "0wg6ckzvvklbzznijxkk28fb8dnwyjd0w30ra0afwv6gwr8m34j3"))))
+               "1cl74ghi9y21dc3f4xa0qamb7dhwacbynh1ks9syprrg8zhgpgpj"))))
    (build-system gnu-build-system)
    (native-inputs `(("groff" ,groff)
                     ("pkg-config" ,pkg-config)))
@@ -146,7 +198,7 @@ a server that supports the SSH-2 protocol.")
              ("pam" ,linux-pam)
              ("mit-krb5" ,mit-krb5)
              ("zlib" ,zlib)
-             ("xauth" ,xauth)))         ; for 'ssh -X' and 'ssh -Y'
+             ("xauth" ,xauth)))        ; for 'ssh -X' and 'ssh -Y'
    (arguments
     `(#:test-target "tests"
       ;; Otherwise, the test scripts try to use a nonexistent directory and
@@ -166,7 +218,15 @@ a server that supports the SSH-2 protocol.")
                           "--with-libedit"
 
                           ;; Enable PAM support in sshd.
-                          "--with-pam")
+                          "--with-pam"
+
+                          ;; "make install" runs "install -s" by default,
+                          ;; which doesn't work for cross-compiled binaries
+                          ;; because it invokes 'strip' instead of
+                          ;; 'TRIPLET-strip'.  Work around this.
+                          ,,@(if (%current-target-system)
+                                 '("--disable-strip")
+                                 '()))
 
       #:phases
       (modify-phases %standard-phases
@@ -225,10 +285,19 @@ Additionally, various channel-specific options can be negotiated.")
                                "See LICENSE in the distribution."))
    (home-page "https://www.openssh.com/")))
 
+;; OpenSSH without X support. This allows to use OpenSSH without dragging X
+;; libraries to the closure.
+(define-public openssh-sans-x
+  (package
+    (inherit openssh)
+    (name "openssh-sans-x")
+    (inputs (alist-delete "xauth" (package-inputs openssh)))
+    (synopsis "OpenSSH client and server without X11 support")))
+
 (define-public guile-ssh
   (package
     (name "guile-ssh")
-    (version "0.12.0")
+    (version "0.13.0")
     (home-page "https://github.com/artyom-poptsov/guile-ssh")
     (source (origin
               (method git-fetch)
@@ -238,7 +307,7 @@ Additionally, various channel-specific options can be negotiated.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "054hd9rzfhb48gc1hw3rphhp0cnnd4bs5qmidy5ygsyvy9ravlad"))
+                "1q96h98p6x7ah6nc0d2wfx503fmsj36riv9ka9s79z3lzwaf0k26"))
               (modules '((guix build utils)))))
     (build-system gnu-build-system)
     (outputs '("out" "debug"))
@@ -292,8 +361,8 @@ Additionally, various channel-specific options can be negotiated.")
                      ("texinfo" ,texinfo)
                      ("pkg-config" ,pkg-config)
                      ("which" ,which)
-                     ("guile" ,guile-2.2))) ;needed when cross-compiling.
-    (inputs `(("guile" ,guile-2.2)
+                     ("guile" ,guile-3.0))) ;needed when cross-compiling.
+    (inputs `(("guile" ,guile-3.0)
               ("libssh" ,libssh)
               ("libgcrypt" ,libgcrypt)))
     (synopsis "Guile bindings to libssh")
@@ -313,42 +382,44 @@ libssh library.")
     (inputs `(("guile" ,guile-2.0)
               ,@(alist-delete "guile" (package-inputs guile-ssh))))))
 
-(define-public guile3.0-ssh
+(define-public guile2.2-ssh
   (package
     (inherit guile-ssh)
-    (name "guile3.0-ssh")
+    (name "guile2.2-ssh")
     (native-inputs
-     `(("guile" ,guile-next) ;needed when cross-compiling.
+     `(("guile" ,guile-2.2) ;needed when cross-compiling.
        ,@(alist-delete "guile" (package-native-inputs guile-ssh))))
-    (inputs `(("guile" ,guile-next)
+    (inputs `(("guile" ,guile-2.2)
               ,@(alist-delete "guile" (package-inputs guile-ssh))))))
 
+(define-public guile3.0-ssh
+  (deprecated-package "guile3.0-ssh" guile-ssh))
+
 (define-public corkscrew
   (package
     (name "corkscrew")
     (version "2.0")
     (source
      (origin
-       (method url-fetch)
-       ;; The agroman.net domain name expired on 2017-03-23, and the original
-       ;; "http://www.agroman.net/corkscrew/corkscrew-2.0.tar.gz" now returns
-       ;; bogus HTML.  Perhaps it will yet return.  Until then, use a mirror.
-       (uri (string-append "https://downloads.openwrt.org/sources/"
-                           "corkscrew-" version ".tar.gz"))
-       (sha256 (base32
-                "1gmhas4va6gd70i2x2mpxpwpgww6413mji29mg282jms3jscn3qd"))))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/patpadgett/corkscrew")
+             (commit (string-append "v" version))))
+       (sha256
+        (base32 "0g4pkczrc1zqpnxyyjwcjmyzdj5qqcpzwf1bm3965zdwp94bpppf"))
+       (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
          (replace 'configure
            ;; Replace configure phase as the ./configure script does not like
-           ;; CONFIG_SHELL and SHELL passed as parameters
+           ;; CONFIG_SHELL and SHELL passed as parameters.
            (lambda* (#:key outputs build target #:allow-other-keys)
              (let* ((out   (assoc-ref outputs "out"))
                     (bash  (which "bash"))
                     ;; Set --build and --host flags as the provided config.guess
-                    ;; is not able to detect them
+                    ;; is not able to detect them.
                     (flags `(,(string-append "--prefix=" out)
                              ,(string-append "--build=" build)
                              ,(string-append "--host=" (or target build)))))
@@ -358,9 +429,9 @@ libssh library.")
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
                     (doc (string-append out "/share/doc/" ,name "-" ,version)))
-               (install-file "README" doc)
+               (install-file "README.markdown" doc)
                #t))))))
-    (home-page "http://www.agroman.net/corkscrew")
+    (home-page "https://github.com/patpadgett/corkscrew")
     (synopsis "SSH tunneling through HTTP(S) proxies")
     (description
      "Corkscrew tunnels SSH connections through most HTTP and HTTPS proxies.
@@ -382,6 +453,12 @@ authentication scheme.")
     (arguments
      '(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'patch-FHS-file-names
+           (lambda _
+             (substitute* "scripts/mosh.pl"
+               (("/bin/sh")
+                (which "sh")))
+             #t))
          (add-after 'install 'wrap
            (lambda* (#:key outputs #:allow-other-keys)
              ;; Make sure 'mosh' can find 'mosh-client' and
@@ -403,10 +480,10 @@ authentication scheme.")
     (home-page "https://mosh.org/")
     (synopsis "Remote shell tolerant to intermittent connectivity")
     (description
-     "Remote terminal application that allows roaming, supports intermittent
-connectivity, and provides intelligent local echo and line editing of user
-keystrokes.  Mosh is a replacement for SSH.  It's more robust and responsive,
-especially over Wi-Fi, cellular, and long-distance links.")
+     "Mosh is a remote terminal application that allows client roaming, supports
+intermittent connectivity, and provides intelligent local echo and line editing
+of user keystrokes.  It's a replacement for SSH that's more robust and
+responsive, especially over Wi-Fi, cellular, and long-distance links.")
     (license license:gpl3+)))
 
 (define-public et
@@ -417,7 +494,7 @@ especially over Wi-Fi, cellular, and long-distance links.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/MisterTea/EternalTCP.git")
+             (url "https://github.com/MisterTea/EternalTCP")
              (commit (string-append "et-v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -436,13 +513,13 @@ especially over Wi-Fi, cellular, and long-distance links.")
 without interrupting the session.  Unlike SSH sessions, ET sessions will
 survive even network outages and IP changes.  ET uses a custom protocol over
 TCP, not the SSH protocol.")
-    (home-page "https://mistertea.github.io/EternalTCP/")
+    (home-page "https://eternalterminal.dev/")
     (license license:asl2.0)))
 
 (define-public dropbear
   (package
     (name "dropbear")
-    (version "2019.78")
+    (version "2020.80")
     (source
      (origin
        (method url-fetch)
@@ -450,7 +527,7 @@ TCP, not the SSH protocol.")
              "https://matt.ucc.asn.au/dropbear/releases/"
              "dropbear-" version ".tar.bz2"))
        (sha256
-        (base32 "19242qlr40pbqfqd0gg6h8qpj38q6lgv03ja6sahj9vj2abnanaj"))))
+        (base32 "0jbrbpdzyv11x5rkljdimzq9p6a7da5siw9k405ibnpjj4dr89yr"))))
     (build-system gnu-build-system)
     (arguments `(#:tests? #f))  ; there is no "make check" or anything similar
     ;; TODO: Investigate unbundling libtommath and libtomcrypt or at least
@@ -477,7 +554,7 @@ particularly useful for embedded systems, such as wireless routers.")
        (base32
         "1q0p1l72pq9k3bi7a366j2rishv7dzzkg3i6r2npsfg7cnnidbsn"))))
     (build-system gnu-build-system)
-    (home-page "http://www.lysator.liu.se/liboop/")
+    (home-page "https://www.lysator.liu.se/liboop/")
     (synopsis "Event loop library")
     (description "Liboop is a low-level event loop management library for
 POSIX-based operating systems.  It supports the development of modular,
@@ -750,7 +827,7 @@ of existing remote shell facilities such as SSH.")
       (origin
         (method git-fetch)
         (uri (git-reference
-              (url "https://github.com/skeeto/endlessh.git")
+              (url "https://github.com/skeeto/endlessh")
               (commit version)))
         (file-name (git-file-name name version))
         (sha256