diff options
-rw-r--r-- | README (renamed from debian/README) | 6 | ||||
-rw-r--r-- | debian/changelog | 9 | ||||
-rw-r--r-- | debian/control | 13 | ||||
-rw-r--r-- | debian/copyright | 5 | ||||
-rw-r--r-- | debian/openssh-known-hosts.cron.d | 2 | ||||
-rw-r--r-- | debian/openssh-known-hosts.docs | 2 | ||||
-rw-r--r-- | debian/openssh-known-hosts.examples | 1 | ||||
-rw-r--r-- | debian/openssh-known-hosts.install | 4 | ||||
-rw-r--r-- | debian/openssh-known-hosts.manpages | 1 | ||||
-rwxr-xr-x | debian/rules | 12 | ||||
-rw-r--r-- | examples/curl | 9 | ||||
-rw-r--r-- | examples/psql | 12 | ||||
-rw-r--r-- | examples/rsync | 10 | ||||
-rw-r--r-- | examples/symlink | 5 | ||||
-rwxr-xr-x | plugins/curl | 11 | ||||
-rwxr-xr-x | plugins/rsync | 10 | ||||
-rwxr-xr-x | update-openssh-known-hosts (renamed from update-known-hosts) | 8 | ||||
-rw-r--r-- | update-openssh-known-hosts.8 | 42 |
18 files changed, 131 insertions, 31 deletions
@@ -1,7 +1,7 @@ Writing a source definition: ============================ -Place a file in /etc/openssh-known-hosts/sources/. Its name must follow +Place a file in /etc/openssh-known-hosts/sources. Its name must follow run-parts' conventions. Basic variables: @@ -9,6 +9,7 @@ Basic variables: * EXIT_IGNORE: space-seperated list of exitcodes which should be ignored, no update is performed for this source then (optional) +For examples see /usr/share/doc/openssh-known-hosts/examples/*. Writing a plugin: ================= @@ -18,5 +19,6 @@ plugin gets the variables set in the source definition in its environment. The working directory will be set to the source's cache directory. All your plugin has to do is to create a file named "new". "current" must not be touched but can be used as a hint to skip downloading the same file again. stdout and -stderr will be connected to "log", which will be output on error. +stderr will be connected to "log", which will be output on error. You needn't +create "new" if it would be identical to "current". diff --git a/debian/changelog b/debian/changelog index bfc242e..9df9cde 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +openssh-known-hosts (0.2) unstable; urgency=low + + * Add examples. + * Add optional GnuPG verification in curl and rsync plugins. + * Upload to unstable (Closes: #534891) + * Rename update-known-hosts to update-$package and install it in /usr/sbin. + + -- Timo Weingärtner <timo@tiwe.de> Sun, 28 Jun 2009 01:57:44 +0200 + openssh-known-hosts (0.1) fsmi-lenny; urgency=low * Initial Release. diff --git a/debian/control b/debian/control index 6f86622..e23b98f 100644 --- a/debian/control +++ b/debian/control @@ -4,14 +4,13 @@ Priority: extra Maintainer: Timo Weingärtner <timo@tiwe.de> Build-Depends: debhelper (>= 7) Standards-Version: 3.8.1 -#Homepage: <insert the upstream URL, if relevant> Package: openssh-known-hosts Architecture: all -Depends: dash, lockfile-progs, ${shlibs:Depends}, ${misc:Depends} -Recommends: openssh-client -Suggests: postgresql-client, rsync, curl +Depends: dash, lockfile-progs, ${misc:Depends} +Recommends: openssh-client, cron +Suggests: postgresql-client, rsync, curl, gpgv Description: known_hosts downloader for OpenSSH - This package allows you to download public hostkeys from various sources and - merge them together into one file for use by OpenSSH. Plugins for some types - of sources are included, new plugins can easily be written. + This package allows you to download public hostkeys from multiple sources + and merge them together into one file for use by OpenSSH. Plugins for some + types of sources are included, new plugins can easily be written. diff --git a/debian/copyright b/debian/copyright index a60558a..0e558ce 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1,6 +1,6 @@ Copyright: - <Copyright (C) 2009 Timo Weingärtner> + Copyright (C) 2009 Timo Weingärtner <timo@tiwe.de> License: @@ -21,6 +21,3 @@ License: On Debian systems, the complete text of the GNU General Public License can be found in `/usr/share/common-licenses/GPL'. -The Debian packaging is (C) 2009, Timo Weingärtner <timo@tiwe.de> and -is licensed under the GPL, see above. - diff --git a/debian/openssh-known-hosts.cron.d b/debian/openssh-known-hosts.cron.d index d1fef7b..27f4f64 100644 --- a/debian/openssh-known-hosts.cron.d +++ b/debian/openssh-known-hosts.cron.d @@ -1,4 +1,4 @@ # # Regular cron jobs for the openssh-known-hosts package # -0 * * * * root [ -x /usr/share/openssh-known-hosts/update-known-hosts ] && /usr/share/openssh-known-hosts/update-known-hosts +0 * * * * root [ -x /usr/sbin/update-openssh-known-hosts ] && /usr/sbin/update-openssh-known-hosts diff --git a/debian/openssh-known-hosts.docs b/debian/openssh-known-hosts.docs index 2c0d173..ba8894c 100644 --- a/debian/openssh-known-hosts.docs +++ b/debian/openssh-known-hosts.docs @@ -1,2 +1,2 @@ -debian/README +README diff --git a/debian/openssh-known-hosts.examples b/debian/openssh-known-hosts.examples new file mode 100644 index 0000000..e39721e --- /dev/null +++ b/debian/openssh-known-hosts.examples @@ -0,0 +1 @@ +examples/* diff --git a/debian/openssh-known-hosts.install b/debian/openssh-known-hosts.install index 8e9375a..e7b7cf1 100644 --- a/debian/openssh-known-hosts.install +++ b/debian/openssh-known-hosts.install @@ -1,2 +1,2 @@ -update-known-hosts usr/share/openssh-known-hosts/ -plugins usr/share/openssh-known-hosts/ +update-openssh-known-hosts usr/sbin/ +plugins usr/share/openssh-known-hosts/ diff --git a/debian/openssh-known-hosts.manpages b/debian/openssh-known-hosts.manpages new file mode 100644 index 0000000..6ae64ea --- /dev/null +++ b/debian/openssh-known-hosts.manpages @@ -0,0 +1 @@ +update-openssh-known-hosts.8 diff --git a/debian/rules b/debian/rules index bf240d0..f1516b9 100755 --- a/debian/rules +++ b/debian/rules @@ -28,20 +28,19 @@ configure-stamp: touch configure-stamp -#Architecture build: build-arch build-indep build-arch: build-arch-stamp -build-arch-stamp: configure-stamp +build-arch-stamp: configure-stamp touch $@ build-indep: build-indep-stamp -build-indep-stamp: configure-stamp +build-indep-stamp: configure-stamp touch $@ -clean: +clean: dh_testdir dh_testroot rm -f build-arch-stamp build-indep-stamp configure-stamp @@ -73,16 +72,11 @@ binary-common: dh_installchangelogs dh_installdocs dh_installexamples -# dh_installmime dh_installcron dh_installman - dh_link - dh_strip dh_compress dh_fixperms - dh_makeshlibs dh_installdeb - dh_shlibdeps dh_gencontrol dh_md5sums dh_builddeb diff --git a/examples/curl b/examples/curl new file mode 100644 index 0000000..18ed01b --- /dev/null +++ b/examples/curl @@ -0,0 +1,9 @@ +PLUGIN=curl +# see curl(1), section "EXIT CODES" for details: +EXIT_IGNORE='6 7 28' + +URL='https://www.example.com/known_hosts' + +# optional: +SIGURL='http://www.example.com/known_hosts.sig' +KEYRING='/path/to/gpgv-compatible.keyring' diff --git a/examples/psql b/examples/psql new file mode 100644 index 0000000..e2e72cb --- /dev/null +++ b/examples/psql @@ -0,0 +1,12 @@ +PLUGIN=psql +# from psql(1): psql returns 2 if the connection to the server went bad and +# the session was not interactive +EXIT_IGNORE=2 + +PGCLUSTER=8.3/db.example.com: +PGDATABASE=exampledb +PGUSER=exampleuser +PGPASSWORD=foobar # beware: will be readable from /proc/<pid>/environ, better: +PGPASSFILE=/path/to/.pgpass + +TABLE=known_hosts diff --git a/examples/rsync b/examples/rsync new file mode 100644 index 0000000..f8d9861 --- /dev/null +++ b/examples/rsync @@ -0,0 +1,10 @@ +PLUGIN=rsync +# see rsync(1), section "EXIT VALUES" for details: +EXIT_IGNORE=10 + +URL='rsync://rsync.example.com/pub/known_hosts' + +# optional: +SIGURL='rsync://rsync.example.com/pub/known_hosts.sig' +KEYRING='/path/to/gpgv-compatible.keyring' + diff --git a/examples/symlink b/examples/symlink new file mode 100644 index 0000000..c1a9ba2 --- /dev/null +++ b/examples/symlink @@ -0,0 +1,5 @@ +PLUGIN=symlink +# EXIT_IGNORE doesn't make sense here +EXIT_IGNORE= + +LINKDEST=/etc/ssh/ssh_known_hosts_local diff --git a/plugins/curl b/plugins/curl index 8e658cc..5964613 100755 --- a/plugins/curl +++ b/plugins/curl @@ -4,10 +4,19 @@ # # ENVIRONMENT VARIABLES: # URL URL to download known_hosts file from +# SIGURL URL of the GnuPG signature +# KEYRING path to the keyring for use by gpgv # set -e -curl -Rz "./current" -m 300 -o new "${URL}" +if [ "${SIGURL}" ]; then + curl -Rz "./current" -m 300 -o new.sig "${SIGURL}" -o new "${URL}" + [ -e new ] || exit 0 + gpgv --keyring "${KEYRING}" --status-fd 2 new.sig || exit 1 + # return 1 because it's not clear what other codes may used +else + curl -Rz "./current" -m 300 -o new "${URL}" +fi # vim:set ft=sh: diff --git a/plugins/rsync b/plugins/rsync index 17a1e54..2d51a9d 100755 --- a/plugins/rsync +++ b/plugins/rsync @@ -3,7 +3,9 @@ # rsync plugin # # ENVIRONMENT VARIABLES: -# URL URL to download known_hosts file from +# URL URL to download known_hosts file from +# SIGURL URL of the GnuPG signature +# KEYRING path to the keyring for use by gpgv # set -e @@ -11,4 +13,10 @@ set -e ln -f current new || true rsync -vt --timeout=300 "${URL}" new +if [ "${SIGURL}" ]; then + rsync -vt --timeout=300 "${SIGURL}" new.sig + gpgv --keyring "${KEYRING}" --status-fd 2 new.sig || exit 1 + # return 1 because it's not clear what other codes may used +fi + # vim:set ft=sh: diff --git a/update-known-hosts b/update-openssh-known-hosts index 14f873f..136535a 100755 --- a/update-known-hosts +++ b/update-openssh-known-hosts @@ -25,17 +25,18 @@ lockfile-create "${LOCK}" lockfile-touch "${LOCK}" & LOCKPID="$!" +mkdir -p "${CACHEDIR}" cd "${CACHEDIR}" find -mindepth 2 -maxdepth 2 -type f -name new -delete -run-parts --list "${CONFDIR}/sources/" | while read source; do - source=`basename ${source}` +run-parts --list "${CONFDIR}/sources/" | while read sourcefile; do + source=`basename ${sourcefile}` mkdir -p ${source} ( set -a cd ${source} - . "${CONFDIR}/sources/${source}" + . "${sourcefile}" `path_search "$PLUGIN" "$PLUGIN_PATH"` >| log 2>&1 || { exitcode=$? rm -f new @@ -63,6 +64,7 @@ done 3>| "${OUTFILE}.new" mv "${OUTFILE}.new" "${OUTFILE}" +# clean up cache dirs of vanished sources for d in *; do [ -d $d ] || continue [ -e "${CONFDIR}/sources/$d" ] || rm -fr $d diff --git a/update-openssh-known-hosts.8 b/update-openssh-known-hosts.8 new file mode 100644 index 0000000..445c7d6 --- /dev/null +++ b/update-openssh-known-hosts.8 @@ -0,0 +1,42 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH OPENSSH-KNOWN-HOSTS 8 "2009-06-28" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp <n> insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +update-openssh-known-hosts \- known_hosts downloader for OpenSSH +.SH SYNOPSIS +.B update-openssh-known-hosts +.SH DESCRIPTION +This manual page documents briefly the +.B update-openssh-known-hosts +command. +.PP +.\" TeX users may be more comfortable with the \fB<whatever>\fP and +.\" \fI<whatever>\fP escape sequences to invode bold face and italics, +.\" respectively. +\fBupdate-openssh-known-hosts\fP is a program that downloads public hostkeys from multiple sources +and merges them together into one file for use by OpenSSH. +.SH OPTIONS +This program takes no options. +.SH SEE ALSO +.BR sshd (8), +.BR /usr/share/doc/openssh-known-hosts , +.BR /usr/share/openssh-known-hosts/plugins/* . +.SH AUTHOR +openssh-known-hosts was written by Timo Weingärtner <timo@tiwe.de>. +.PP +This manual page was written by Timo Weingärtner <timo@tiwe.de>, +for the Debian project (but may be used by others). |