ud-replicate: Sync only ssh_known_hosts into chroots, not ssh*. userdir-ldap-0.3.45
authorPeter Palfrader <peter@palfrader.org>
Sun, 26 Oct 2008 21:32:16 +0000 (22:32 +0100)
committerPeter Palfrader <peter@palfrader.org>
Sun, 26 Oct 2008 21:32:16 +0000 (22:32 +0100)
ud-replicate: Clean up better, correcting some mistakes done by earlier versions.

debian/changelog
ud-replicate

index f093c31..fb006c4 100644 (file)
@@ -4,8 +4,11 @@ userdir-ldap (0.3.45) unstable; urgency=low
   * ud-generate: Add [NOMARKERS] flag to not push markers (gps coordinates) to host.
   * ud-replicate: Use --delete-after with rsync.  Previously we didn't delete
     stuff ever.
+  * ud-replicate: Sync only ssh_known_hosts into chroots, not ssh*.
+  * ud-replicate: Clean up better, correcting some mistakes done by earlier
+    versions.
 
- -- Peter Palfrader <weasel@debian.org>  Sun, 26 Oct 2008 22:30:55 +0100
+ -- Peter Palfrader <weasel@debian.org>  Sun, 26 Oct 2008 22:31:46 +0100
 
 userdir-ldap (0.3.44) unstable; urgency=low
 
index fd858a2..aaab9f5 100755 (executable)
@@ -95,22 +95,41 @@ elif [ -x /usr/bin/dchroot-dsa ]; then
 fi
 if [ -n "$CHROOTS" ]; then
        for c in $CHROOTS; do
+               if [ "$c" = "/" ] || [ "$c" = "" ]; then
+                       echo "$0 WTF: \$c is '' or '/' here." 2>&1
+                       exit 1
+               fi
                if [ -x "$c/usr/bin/makedb" ]
                then
-
-                       test ! -d "$c/var/lib/misc/$HOST" || mkdir -p "$c/var/lib/misc/$HOST"
-
-                       rsync -a ${verbose} $HOST/group.tdb $HOST/passwd.tdb $HOST/ssh* "$c/var/lib/misc/$HOST"
-
-                       test ! -f "$c/var/lib/misc/$HOST/shadow.tdb" || rm -f "$c/var/lib/misc/$HOST/shadow.tdb"
-                       test ! -f "$c/var/lib/misc/shadow.db" || rm -f "$c/var/lib/misc/shadow.db"
-
+                       mkdir -p "$c/var/lib/misc/$HOST"
+
+                       # remove extra stuff from earlier times and so
+                       find "$c/var/lib/misc/$HOST" -mindepth 1 \
+                               ! -name group.tdb -a \
+                               ! -name passwd.tdb -a \
+                               ! -name ssh_known_hosts \
+                               -print0 | xargs --no-run-if-empty -0 rm -f
+                       rsync -a ${verbose} $HOST/group.tdb $HOST/passwd.tdb $HOST/ssh_known_hosts "$c/var/lib/misc/$HOST"
+
+                       # clean up from the times we supposedly did shadow stuff in chroots
+                       rm -f "$c/var/lib/misc/shadow.db"
+
+                       # from failed makedb runs earlier.
+                       rm -f "$c/var/lib/misc/passwd.db.t" \
+                             "$c/var/lib/misc/group.db.t"
+                       # build passwd information
                        chroot "$c" makedb "/var/lib/misc/$HOST/passwd.tdb" -o /var/lib/misc/passwd.db.t
                        chroot "$c" makedb "/var/lib/misc/$HOST/group.tdb" -o /var/lib/misc/group.db.t
                        mv -f "$c/var/lib/misc/passwd.db.t" "$c/var/lib/misc/passwd.db"
                        mv -f "$c/var/lib/misc/group.db.t" "$c/var/lib/misc/group.db"
+
                        ln -sf "$HOST/ssh_known_hosts" "$c/var/lib/misc/"
-                       ln -sf ../../var/lib/misc/ssh_known_hosts "$c/etc/ssh"
+                       if [ -d "$c/etc/ssh" ]; then
+                               ln -sf ../../var/lib/misc/ssh_known_hosts "$c/etc/ssh"
+                       elif [ -L "$c/etc/ssh" ] && [ "`readlink \"$c/etc/ssh\"`" = "../../var/lib/misc/ssh_known_hosts" ]; then
+                               # clean up past mistakes
+                               rm -f "$c/etc/ssh"
+                       fi
                fi
        done
 fi