[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"))