guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/03: ssh: Move 'open-ssh-session' to (guix ssh).


From: Ludovic Courtès
Subject: 01/03: ssh: Move 'open-ssh-session' to (guix ssh).
Date: Fri, 21 Apr 2017 13:18:53 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit 615c5298f705c040068c363c45ed379f7c2b5319
Author: Ludovic Courtès <address@hidden>
Date:   Fri Apr 21 18:44:59 2017 +0200

    ssh: Move 'open-ssh-session' to (guix ssh).
    
    * guix/scripts/copy.scm (%compression, open-ssh-session): Move to...
    * guix/ssh.scm: ... here.  Use '&message' conditions instead of calling
    'leave'.
---
 guix/scripts/copy.scm | 41 +----------------------------------------
 guix/ssh.scm          | 51 ++++++++++++++++++++++++++++++++++++++++++++++++---
 2 files changed, 49 insertions(+), 43 deletions(-)

diff --git a/guix/scripts/copy.scm b/guix/scripts/copy.scm
index 624ef73..bc22504 100644
--- a/guix/scripts/copy.scm
+++ b/guix/scripts/copy.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016 Ludovic Courtès <address@hidden>
+;;; Copyright © 2016, 2017 Ludovic Courtès <address@hidden>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -25,9 +25,6 @@
   #:use-module (guix derivations)
   #:use-module (guix scripts build)
   #:use-module ((guix scripts archive) #:select (options->derivations+files))
-  #:use-module (ssh session)
-  #:use-module (ssh auth)
-  #:use-module (ssh key)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-11)
   #:use-module (srfi srfi-37)
@@ -40,42 +37,6 @@
 ;;; Exchanging store items over SSH.
 ;;;
 
-(define %compression
-  "address@hidden,zlib")
-
-(define* (open-ssh-session host #:key user port)
-  "Open an SSH session for HOST and return it.  When USER and PORT are #f, use
-default values or whatever '~/.ssh/config' specifies; otherwise use them.
-Throw an error on failure."
-  (let ((session (make-session #:user user
-                               #:host host
-                               #:port port
-                               #:timeout 10       ;seconds
-                               ;; #:log-verbosity 'protocol
-
-                               ;; We need lightweight compression when
-                               ;; exchanging full archives.
-                               #:compression %compression
-                               #:compression-level 3)))
-
-    ;; Honor ~/.ssh/config.
-    (session-parse-config! session)
-
-    (match (connect! session)
-      ('ok
-       ;; Use public key authentication, via the SSH agent if it's available.
-       (match (userauth-public-key/auto! session)
-         ('success
-          session)
-         (x
-          (disconnect! session)
-          (leave (_ "SSH authentication failed for '~a': ~a~%")
-                 host (get-error session)))))
-      (x
-       ;; Connection failed or timeout expired.
-       (leave (_ "SSH connection to '~a' failed: ~a~%")
-              host (get-error session))))))
-
 (define (ssh-spec->user+host+port spec)
   "Parse SPEC, a string like \"address@hidden:port\" or just \"host\", and 
return
 three values: the user name (or #f), the host name, and the TCP port
diff --git a/guix/ssh.scm b/guix/ssh.scm
index 3548243..e02c8eb 100644
--- a/guix/ssh.scm
+++ b/guix/ssh.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016 Ludovic Courtès <address@hidden>
+;;; Copyright © 2016, 2017 Ludovic Courtès <address@hidden>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -18,7 +18,10 @@
 
 (define-module (guix ssh)
   #:use-module (guix store)
-  #:autoload   (guix ui) (N_)
+  #:use-module ((guix ui) #:select (_ N_))
+  #:use-module (ssh session)
+  #:use-module (ssh auth)
+  #:use-module (ssh key)
   #:use-module (ssh channel)
   #:use-module (ssh popen)
   #:use-module (ssh session)
@@ -29,7 +32,8 @@
   #:use-module (srfi srfi-35)
   #:use-module (ice-9 match)
   #:use-module (ice-9 binary-ports)
-  #:export (connect-to-remote-daemon
+  #:export (open-ssh-session
+            connect-to-remote-daemon
             send-files
             retrieve-files
             remote-store-host
@@ -43,6 +47,47 @@
 ;;;
 ;;; Code:
 
+(define %compression
+  "address@hidden,zlib")
+
+(define* (open-ssh-session host #:key user port
+                           (compression %compression))
+  "Open an SSH session for HOST and return it.  When USER and PORT are #f, use
+default values or whatever '~/.ssh/config' specifies; otherwise use them.
+Throw an error on failure."
+  (let ((session (make-session #:user user
+                               #:host host
+                               #:port port
+                               #:timeout 10       ;seconds
+                               ;; #:log-verbosity 'protocol
+
+                               ;; We need lightweight compression when
+                               ;; exchanging full archives.
+                               #:compression compression
+                               #:compression-level 3)))
+
+    ;; Honor ~/.ssh/config.
+    (session-parse-config! session)
+
+    (match (connect! session)
+      ('ok
+       ;; Use public key authentication, via the SSH agent if it's available.
+       (match (userauth-public-key/auto! session)
+         ('success
+          session)
+         (x
+          (disconnect! session)
+          (raise (condition
+                  (&message
+                   (message (format #f (_ "SSH authentication failed for '~a': 
~a~%")
+                                    host (get-error session)))))))))
+      (x
+       ;; Connection failed or timeout expired.
+       (raise (condition
+               (&message
+                (message (format #f (_ "SSH connection to '~a' failed: ~a~%")
+                                 host (get-error session))))))))))
+
 (define* (connect-to-remote-daemon session
                                    #:optional
                                    (socket-name 
"/var/guix/daemon-socket/socket"))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]