From 5b23544472bb59e5f3e4c0434700bce319b81693 Mon Sep 17 00:00:00 2001 From: =?utf-8?q?J=C3=B6rg=20Sommer?= <[EMAIL PROTECTED]> Date: Mon, 5 May 2008 18:37:43 +0200 Subject: [PATCH] Add new mirror scheme ssh://
--- src/frontend/standalone/cdebootstrap.man | 5 ++++- src/frontend/standalone/main.c | 21 +++++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/frontend/standalone/cdebootstrap.man b/src/frontend/standalone/cdebootstrap.man index abe349a..1d3c951 100644 --- a/src/frontend/standalone/cdebootstrap.man +++ b/src/frontend/standalone/cdebootstrap.man @@ -6,7 +6,10 @@ cdebootstrap \- Bootstrap a Debian system [\fIOPTION\fR]... \fISUITE TARGET \fR[\fIMIRROR\fR] .SH DESCRIPTION \fBcdebootstrap\fR builds a basic Debian system of \fISUITE\fR (e.g. sarge, etch, lenny, sid) into \fITARGET\fR using the source specified in \fIMIRROR\fR. -It supports http://, ftp:// and file:// URL and defaults to http://ftp.debian.org/debian. +It supports http://, ftp://, ssh:// and file:// URL and defaults to http://ftp.debian.org/debian. +The ssh:// scheme uses \fBcat\fR on the remote host to access the files. +You have to setup a master connection and configure ssh to use it or use a +key for authentication. No user interaction is possible. The complete log is saved as \fI/var/log/bootstrap.log\fR in the new system. .PP Mandatory arguments to long options are mandatory for short options too. diff --git a/src/frontend/standalone/main.c b/src/frontend/standalone/main.c index 304cd92..9288b7d 100644 --- a/src/frontend/standalone/main.c +++ b/src/frontend/standalone/main.c @@ -56,7 +56,13 @@ const char *target_root; FILE *foreign_script; -static enum { MIRROR_SCHEME_HTTP, MIRROR_SCHEME_FTP, MIRROR_SCHEME_FILE } mirror_scheme; +static enum +{ + MIRROR_SCHEME_HTTP, + MIRROR_SCHEME_FTP, + MIRROR_SCHEME_FILE, + MIRROR_SCHEME_SSH +} mirror_scheme; static char mirror_host[128]; static char mirror_path[256]; @@ -125,6 +131,12 @@ int frontend_download (const char *source, const char *target) case MIRROR_SCHEME_FILE: snprintf (buf, sizeof buf, "cp %s/%s %s", mirror_path, source, target); + break; + + case MIRROR_SCHEME_SSH: + snprintf (buf, sizeof buf, "ssh -o BatchMode=yes %s 'cat %s/%s' > %s", + mirror_host, mirror_path, source, target); + break; } ret = execute (buf); @@ -148,6 +160,8 @@ static void check_mirror_scheme (const char **input) mirror_scheme = MIRROR_SCHEME_FTP; else if (!strncmp (*input, "file", 4)) mirror_scheme = MIRROR_SCHEME_FILE; + else if (!strncmp (*input, "ssh", 3)) + mirror_scheme = MIRROR_SCHEME_SSH; else log_text (DI_LOG_LEVEL_ERROR, "Invalid mirror: scheme not supported"); @@ -283,11 +297,14 @@ static int finish_etc (void) return 1; } - if (mirror_scheme == MIRROR_SCHEME_HTTP || mirror_scheme == MIRROR_SCHEME_FTP) + if (mirror_scheme == MIRROR_SCHEME_HTTP || mirror_scheme == MIRROR_SCHEME_FTP || + mirror_scheme == MIRROR_SCHEME_SSH) { char *scheme = "http"; if (mirror_scheme == MIRROR_SCHEME_FTP) scheme = "ftp"; + else if (mirror_scheme == MIRROR_SCHEME_SSH) + scheme = "ssh"; if (foreign_script) fprintf (foreign_script, "\necho 'deb %s://%s%s %s main' > /etc/apt/sources.list\n\n", scheme, mirror_host, mirror_path, suite_name); -- 1.5.5.1
signature.asc
Description: Digital signature http://en.wikipedia.org/wiki/OpenPGP