Hello community,

here is the log from the commit of package duply for openSUSE:Factory checked 
in at 2012-10-07 18:57:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/duply (Old)
 and      /work/SRC/openSUSE:Factory/.duply.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "duply", Maintainer is ""

Changes:
--------
--- /work/SRC/openSUSE:Factory/duply/duply.changes      2011-11-22 
17:47:24.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.duply.new/duply.changes 2012-10-07 
18:57:33.000000000 +0200
@@ -1,0 +2,17 @@
+Sat Oct  6 15:10:06 UTC 2012 - [email protected]
+
+- Update to version 1.5.7:
+  + Bugfix 3531450: Cannot use space in target URL (file:///)
+    anymore.
+- Updates from 1.5.6:
+  + Commands purge, purge-full have no default value anymore for
+    security reasons; instead max value can be given via cmd line
+    or must be set in profile; else an error is shown.
+  + Minor man page modifications
+- Updates from 1.5.5.5:
+  + Bugfix 3479605: SEL context confused profile folder's
+    permission check.
+  + Colon ':' in url passphrase got ignored, added python driven
+    url_decoding for user & pass to better process special chars.
+
+-------------------------------------------------------------------

Old:
----
  duply_1.5.5.4.tgz

New:
----
  duply_1.5.7.tgz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ duply.spec ++++++
--- /var/tmp/diff_new_pack.TsKk1K/_old  2012-10-07 18:57:34.000000000 +0200
+++ /var/tmp/diff_new_pack.TsKk1K/_new  2012-10-07 18:57:34.000000000 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package duply
 #
-# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
 # Copyright (c) 2011 Malcolm J Lewis <[email protected]>
 #
 # All modifications and additions to the file contributed by third parties
@@ -17,15 +17,14 @@
 #
 
 
-
 Name:           duply
-Version:        1.5.5.4
-Release:        1
-License:        GPL-2.0
+Version:        1.5.7
+Release:        0
 Summary:        A frontend for the mighty duplicity magic
-Url:            http://duply.net/
+License:        GPL-2.0
 Group:          Productivity/Archiving/Compression
-Source0:        
http://surfnet.dl.sourceforge.net/project/ftplicity/duply%20%28simple%20duplicity%29/1.5.x/duply_1.5.5.4.tgz
+Url:            http://duply.net/
+Source0:        
http://surfnet.dl.sourceforge.net/project/ftplicity/duply%20%28simple%20duplicity%29/1.5.x/duply_1.5.7.tgz
 Requires:       duplicity
 BuildArch:      noarch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build

++++++ duply_1.5.5.4.tgz -> duply_1.5.7.tgz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/duply_1.5.5.4/INSTALL.txt new/duply_1.5.7/INSTALL.txt
--- old/duply_1.5.5.4/INSTALL.txt       2011-10-16 15:15:07.000000000 +0200
+++ new/duply_1.5.7/INSTALL.txt 2012-06-10 13:33:52.000000000 +0200
@@ -4,7 +4,7 @@
 Most distributions have readymade packages available. I suggest _not_ to use
 these, because they generally lack behind duplicity development. If you 
 encounter errors using the distro's duplicity please doublecheck if the 
-version is outdated on http://duplicity.org.
+version is outdated on http://duplicity.nongnu.org.
 If so please try using the latest stable from the website before filing 
 bug reports or complaining in the mailing list.
 If you install duplicity from the website's tarball check chapter 
@@ -34,11 +34,38 @@
 tar xvf duplicity-0.6.07.tar.gz
 cd duplicity-0.6.07/
 # install into PREFIX
-PREFIX=~/_apps/duplicity-0.6.07 ; python setup.py install --prefix=$PREFIX 
--install-lib=$PREFIX
+PREFIX=~/_apps/duplicity-0.6.07
+python setup.py install --prefix="$PREFIX" --install-lib="$PREFIX"
+# OBSOLETE: since 0.6.17 the next step is not required anymore
 # patch executable to find libs in PREFIX
-PREFIX=~/_apps/duplicity-0.6.07; cat $PREFIX/bin/duplicity | awk '1;/import 
getpass, gzip, os, sys, time, types/{print "sys.path.insert(1,sys.path[0] + 
\47/../\47)"}' > $PREFIX/bin/duplicity_mod && chmod 755 
$PREFIX/bin/duplicity_mod && mv $PREFIX/bin/duplicity_mod $PREFIX/bin/duplicity
+cat $PREFIX/bin/duplicity | \
+awk '1;/import getpass, gzip, os, sys, time, types/{print 
"sys.path.insert(1,sys.path[0] + \47/../\47)"}' > \
+$PREFIX/bin/duplicity_mod && chmod 755 $PREFIX/bin/duplicity_mod && \
+mv $PREFIX/bin/duplicity_mod $PREFIX/bin/duplicity
 
 If this works flawlessly than you will find the duplicity executable under
 $PREFIX/bin/duplicity
 
-To change the systemwide used duplicity symlink this to somewhere in your path.
+To change the systemwide used duplicity don't symlink it! It won't find it's 
+script file structure it depends on then. Rather hack short wrapper like
+
+/usr/local/bin/duply
+-->
+#!/bin/bash
+DUPLY=/path/to/duply.sh
+#DUPLY=~user/release/duply_1.5.2.3/duply
+PATH=~user/path/to/duplicity-0.6.18/bin:$PATH
+"$DUPLY" "$@"
+<--
+
+This way you can easily juggle with versions and stay up to date but have duply
+in the path.
+Alternatively you can of course simply add it to the systemwide PATH variable 
or
+use only a duplicity wrapper like
+
+/usr/local/bin/duplicity
+-->
+#!/bin/bash
+PATH=~user/path/to/duplicity-0.6.18/bin:$PATH
+duplicity "$@"
+<--
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/duply_1.5.5.4/duply new/duply_1.5.7/duply
--- old/duply_1.5.5.4/duply     2011-10-16 15:15:07.000000000 +0200
+++ new/duply_1.5.7/duply       2012-06-10 13:33:52.000000000 +0200
@@ -9,7 +9,7 @@
 #  changed from ftplicity to duply.                                           #
 #  See http://duply.net or http://ftplicity.sourceforge.net/ for more info.   #
 #  (c) 2006 Christiane Ruetten, Heise Zeitschriften Verlag, Germany           #
-#  (c) 2008-2011 Edgar Soldin (changes since version 1.3)                     #
+#  (c) 2008-2012 Edgar Soldin (changes since version 1.3)                     #
 ###############################################################################
 #  LICENSE:                                                                   #
 #  This program is licensed under GPLv2.                                      #
@@ -38,10 +38,24 @@
 #  - import/export profile from/to .tgz function !!!
 #
 #  CHANGELOG:
+#  1.5.7 (10.06.2012)
+#  - bugfix 3531450: Cannot use space in target URL (file:///) anymore
+#
+#  1.5.6 (24.5.2012)
+#  - commands purge, purge-full have no default value anymore for security 
+#    reasons; instead max value can be given via cmd line or must be set
+#    in profile; else an error is shown.
+#  - minor man page modifications
+#
 #  versioning scheme will be simplified to [major].[minor].[patch] version
-#  with the next minor version raise
+#  with the next version raise
+#
+#  1.5.5.5 (4.2.2012)
+#  - bugfix 3479605: SEL context confused profile folder's permission check
+#  - colon ':' in url passphrase got ignored, added python driven url_decoding
+#    for user & pass to better process special chars
 #
-#  1.5.5.4 (16.10.2010)
+#  1.5.5.4 (16.10.2011)
 #  - bugfix 3421268: SFTP passwords from conf ignored and always prompted for
 #  - add support for separate sign passphrase (needs duplicity 0.6.14+)
 #
@@ -279,7 +293,7 @@
 ME_LONG="$0"
 ME="$(basename $0)"
 ME_NAME="${ME%%.*}"
-ME_VERSION="1.5.5.4"
+ME_VERSION="1.5.7"
 ME_WEBSITE="http://duply.net";
 
 # default config values
@@ -392,14 +406,14 @@
   All conf parameters can also be defined in the environment instead.
 
 PROFILE:
-  Indicated by a profile name (<profile>), which is resolved 
+  Indicated by a path or a profile name (<profile>), which is resolved 
   to '~/.${ME_NAME}/<profile>' (~ expands to environment variable \$HOME).
 
-  Superuser root can place profiles under '/etc/${ME_NAME}' if the
-  folder is manually created before running $ME.
-  Hint:  
-    If '/etc/${ME_NAME}' is created later, already existing profiles in the 
-    user dir have to be moved manually or will cease to work.
+  Superuser root can place profiles under '/etc/${ME_NAME}'. Simply create
+  the folder manually before running $ME as superuser.
+  Note:  
+    Already existing profiles in root's profile folder will cease to work
+    unless there are moved to the new location manually.
 
   example 1:   $ME humbug backup
 
@@ -426,25 +440,26 @@
              list all files in backup (as it was at <age>, default: now)
   status     prints backup sets and chains currently in repository
   verify     list files changed since latest backup
-  purge [--force]  
-             shows outdated backup archives (older than \$MAX_AGE)
-              [actually delete these files]
-  purge-full [--force]  
-             shows outdated backups (more than \$MAX_FULL_BACKUPS, 
-             the number of 'recent' full backups and associated 
-             incrementals to keep) [actually delete these files]
-  cleanup [--force]  
-             shows broken backup archives (e.g. after unfinished run)
-              [actually delete these files]
   restore <target_path> [<age>]  
-             restore the backup to <target_path> [as it was at <age>]
+             restore the complete backup to <target_path> [as it was at <age>]
   fetch <src_path> <target_path> [<age>]  
-             restore single file/folder from backup [as it was at <age>]
+             fetch single file/folder from backup [as it was at <age>]
+  purge [<max_age>] [--force]  
+             list outdated backup files (older than \$MAX_AGE)
+              [use --force to actually delete these files]
+  purge-full [<max_full_backups>] [--force]  
+             list outdated backup files (\$MAX_FULL_BACKUPS being the number of
+             full backups and associated incrementals to keep, counting in 
+             reverse chronological order)
+              [use --force to actually delete these files]
+  cleanup [--force]  
+             list broken backup chain files archives (e.g. after unfinished 
run)
+              [use --force to actually delete these files]
 
   changelog  print changelog / todo list
-  txt2man    feature for package admins, create a manpage based on the usage
-             output. download txt2man from http://mvertes.free.fr/, put it
-             in the path and run '$ME txt2man' to create a man page.
+  txt2man    feature for package maintainers - create a manpage based on the 
+             usage output. download txt2man from http://mvertes.free.fr/, put 
+             it in the PATH and run '$ME txt2man' to create a man page.
 
 OPTIONS:
   --force    passed to duplicity (see commands: purge, purge-full, cleanup)
@@ -590,12 +605,10 @@
 
 # Time frame for old backups to keep, Used for the "purge" command.  
 # see duplicity man page, chapter TIME_FORMATS)
-# defaults to 1M, if not set
 #MAX_AGE=1M
 
 # Number of full backups to keep. Used for the "purge-full" command. 
 # See duplicity man page, action "remove-all-but-n-full".
-# defaults to 1, if not set 
 #MAX_FULL_BACKUPS=1
 
 # activates duplicity --full-if-older-than option (since duplicity v0.4.4.RC3) 
@@ -917,10 +930,11 @@
     if [ "$param" == "--" ] ; then
       PARAMSNOW=1
     else
+      # wrap in quotes to protect from spaces
       [ ! $PARAMSNOW ] && \
-        DUPL_CMD="$DUPL_CMD $param" \
+        DUPL_CMD="$DUPL_CMD $(qw $param)" \
       || \
-        DUPL_CMD_PARAMS="$DUPL_CMD_PARAMS $param"
+        DUPL_CMD_PARAMS="$DUPL_CMD_PARAMS $(qw $param)"
     fi
   done
 
@@ -939,7 +953,7 @@
 function secureconf { # secure the configuration dir
        #PERMS=$(ls -la $(dirname $CONFDIR) | grep -e " $(basename $CONFDIR)\$" 
| awk '{print $1}')
        local PERMS="$(ls -la "$CONFDIR/." | awk 'NR==2{print $1}')"
-       if [ "$PERMS" != 'drwx------' ] ; then
+       if [ "${PERMS/#drwx------*/OK}" != 'OK' ] ; then
                chmod u+rwX,go= "$CONFDIR"; local ERR=$?
                warning "The profile's folder 
 '$CONFDIR'
@@ -1006,9 +1020,14 @@
 }
 
 function url_encode {
-       # utilize python, silently do nothing on error - because no python no 
duplicity
-       OUT=$(python -c "import urllib; print urllib.quote('$1')" 2>/dev/null 
); ERR=$?
-       [ "$ERR" -eq 0 ] && echo $OUT || echo $1
+  # utilize python, silently do nothing on error - because no python no 
duplicity
+  OUT=$(python -c "import urllib; print urllib.${2}quote('$1')" 2>/dev/null ); 
ERR=$?
+  [ "$ERR" -eq 0 ] && echo $OUT || echo $1
+}
+
+function url_decode {
+  # reuse function above with a simple string param hack
+  url_encode "$1" "un"
 }
 
 function toupper {
@@ -1311,11 +1330,16 @@
 # split TARGET in handy variables
 TARGET_SPLIT_URL=$(echo $TARGET | awk '{ \
   target=$0; match(target,/^([^\/:]+):\/\//); \
-  prot=substr(target,RSTART,RLENGTH);rest=substr(target,RSTART+RLENGTH); \
+  prot=substr(target,RSTART,RLENGTH);\
+  rest=substr(target,RSTART+RLENGTH); \
   if (credsavail=match(rest,/^[^@]*@/)){\
     creds=substr(rest,RSTART,RLENGTH-1);\
     credcount=split(creds,cred,":");\
     rest=substr(rest,RLENGTH+1);\
+    # split creds with regexp\
+    match(creds,/^([^:]+)/);\
+    user=substr(creds,RSTART,RLENGTH);\
+    pass=substr(creds,RSTART+1+RLENGTH);\
   };\
   # filter quotes or escape them\
   gsub(/[\047\042]/,"",prot);\
@@ -1324,16 +1348,15 @@
   print "TARGET_URL_PROT=\047"prot"\047\n"\
          "TARGET_URL_HOSTPATH=\047"rest"\047\n"\
          "TARGET_URL_CREDS=\047"creds"\047\n";\
-   if(credsavail){\
-     gsub(/[\047]/,"\047\\\047\047",cred[1]);\
-     print "TARGET_URL_USER=\047"cred[1]"\047\n"}\
-   if(credcount>1){\
-     gsub(/[\047]/,"\047\\\047\047",cred[2]);\
-     print "TARGET_URL_PASS=\047"cred[2]"\047\n"}\
+   if(user){\
+     gsub(/[\047]/,"\047\\\047\047",user);\
+     print "TARGET_URL_USER=\047"user"\047\n"}\
+   if(pass){\
+     gsub(/[\047]/,"\047\\\047\047",pass);\
+     print "TARGET_URL_PASS=$(url_decode \047"pass"\047)\n"}\
   }')
 eval ${TARGET_SPLIT_URL}
 
-
 # check if backend specific software is in path
 [ -n "$(echo ${TARGET_URL_PROT} | grep -i -e '^ftp://$')" ] && \
   [ -z "$(which ncftp 2>/dev/null)" ] && error_path "Protocol 'ftp' needs 
ncftp. Installed und available in path?" 
@@ -1725,7 +1748,8 @@
                
BACKEND_URL="${TARGET_URL_PROT}${BACKEND_CREDS}${TARGET_URL_HOSTPATH}"
                ;;
 esac
-# protect eval from special chars in url (e.g. open ')' in password, spaces in 
path)
+# protect eval from special chars in url (e.g. open ')' in password, 
+# spaces in path, quotes) happens above in duplify() via quotewrap()
 SOURCE="$SOURCE"
 BACKEND_URL="$BACKEND_URL"
 EXCLUDE="$EXCLUDE"
@@ -1758,7 +1782,7 @@
     else
       script=$POST
     fi
-    # script execution in a subshell, protect us from failures/overwrites
+    # script execution in a subshell, protect us from failures/var overwrites
     ( run_script "$script" )
     ;;
   bkp)
@@ -1786,11 +1810,17 @@
     duplify cleanup -- "${dupl_opts[@]}" "$BACKEND_URL"
     ;;
   purge)
-    duplify remove-older-than "${MAX_AGE:-1M}" \
+    MAX_AGE=${ftpl_pars[0]:-$MAX_AGE}
+    [ -z "$MAX_AGE" ] && error "  Missing parameter <max_age>. Can be set in 
profile or as command line parameter."
+    
+    duplify remove-older-than "${MAX_AGE}" \
           -- "${dupl_opts[@]}" "$BACKEND_URL"
     ;;
   purge-full)
-    duplify remove-all-but-n-full "${MAX_FULL_BACKUPS:-1}" \
+    MAX_FULL_BACKUPS=${ftpl_pars[0]:-$MAX_FULL_BACKUPS}
+    [ -z "$MAX_FULL_BACKUPS" ] && error "  Missing parameter 
<max_full_backups>. Can be set in profile or as command line parameter."
+  
+    duplify remove-all-but-n-full "${MAX_FULL_BACKUPS}" \
           -- "${dupl_opts[@]}" "$BACKEND_URL"
     ;;
   restore)
@@ -1805,7 +1835,7 @@
   fetch)
     IN_PATH="${ftpl_pars[0]}"; OUT_PATH="${ftpl_pars[1]}"; 
     TIME="${ftpl_pars[2]:-now}";
-    ( [ -z "$IN_PATH" ] || [ -z "$OUT_PATH" ] ) && error "  Missing parameter 
src_path or target_path for fetch.
+    ( [ -z "$IN_PATH" ] || [ -z "$OUT_PATH" ] ) && error "  Missing parameter 
<src_path> or <target_path> for fetch.
   
   Hint: 
     Syntax is -> $ME <profile> fetch <src_path> <target_path> [<age>]"

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to