Bug 5509 - use an XML parser to get values from config
authorRobin Sheat <robin@catalyst.net.nz>
Thu, 16 Dec 2010 05:05:43 +0000 (18:05 +1300)
committerChris Cormack <chrisc@catalyst.net.nz>
Thu, 28 Apr 2011 01:35:25 +0000 (13:35 +1200)
Using sed and regex was causing issues when LDAP connection details were
added.

See
http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454
for more information.

Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
debian/control
debian/control.in
debian/scripts/koha-dump
debian/scripts/koha-dump-defaults
debian/scripts/koha-restore

index 79fd89f..add095f 100644 (file)
@@ -25,7 +25,6 @@ Build-Depends: libalgorithm-checkdigits-perl,
  libdbi-perl,
  libdigest-sha-perl | perl,
  libemail-date-perl,
- libfile-temp-perl | perl-modules,
  libgd-barcode-perl,
  libgd-gd2-noxpm-perl | libgd-gd2-perl,
  libgraphics-magick-perl,
@@ -93,6 +92,7 @@ Depends: ${misc:Depends}, ${koha:Depends},
  mysql-client,
  pwgen,
  tinymce2, 
+ xmlstarlet,
  yaz
 Suggests: mysql-server
 Homepage: http://koha-community.org/
index 44e144b..090b7b3 100644 (file)
@@ -22,6 +22,7 @@ Depends: ${misc:Depends}, ${koha:Depends},
  mysql-client,
  pwgen,
  tinymce2, 
+ xmlstarlet,
  yaz
 Suggests: mysql-server
 Homepage: http://koha-community.org/
index ab2995e..99c3894 100755 (executable)
@@ -40,10 +40,10 @@ echo "Dumping Koha site $name:"
 
 
 # Dump database.
-mysqlhost="$(sed -n '/.*<hostname>\(.*\)<\/hostname>.*/s::\1:p' $kohaconfig)"
-mysqldb="$(sed -n '/.*<database>\(.*\)<\/database>.*/s::\1:p' $kohaconfig)"
-mysqluser="$(sed -n '/.*<user>\(.*\)<\/user>.*/s::\1:p' $kohaconfig | tail -n1)"
-mysqlpass="$(sed -n '/.*<pass>\(.*\)<\/pass>.*/s::\1:p' $kohaconfig)"
+mysqlhost="$( xmlstarlet sel -t -v 'yazgfs/config/hostname' $kohaconfig )"
+mysqldb="$( xmlstarlet sel -t -v 'yazgfs/config/database' $kohaconfig )"
+mysqluser="$( xmlstarlet sel -t -v 'yazgfs/config/user' $kohaconfig )"
+mysqlpass="$( xmlstarlet sel -t -v 'yazgfs/config/pass' $kohaconfig )"
 dbdump="/var/spool/koha/$name/$name-$date.sql.gz"
 echo "* DB to $dbdump"
 mysqldump --databases --host="$mysqlhost" \
index 1de7ed8..fb5e988 100755 (executable)
@@ -27,8 +27,10 @@ kohaconfig="/etc/koha/sites/$name/koha-conf.xml"
 date="$(date +%Y-%m-%d)"
 
 
-mysqldb="$(sed -n '/.*<database>\(.*\)<\/database>.*/s::\1:p' $kohaconfig)"
-mysqluser="$(sed -n '/.*<user>\(.*\)<\/user>.*/s::\1:p' $kohaconfig | tail -n1)"
-mysqlpass="$(sed -n '/.*<pass>\(.*\)<\/pass>.*/s::\1:p' $kohaconfig)"
-mysqldump --databases --user="$mysqluser" --password="$mysqlpass" "$mysqldb" |
+mysqlhost="$( xmlstarlet sel -t -v 'yazgfs/config/hostname' $kohaconfig )"
+mysqldb="$( xmlstarlet sel -t -v 'yazgfs/config/database' $kohaconfig )"
+mysqluser="$( xmlstarlet sel -t -v 'yazgfs/config/user' $kohaconfig )"
+mysqlpass="$( xmlstarlet sel -t -v 'yazgfs/config/pass' $kohaconfig )"
+mysqldump --databases --host="$mysqlhost" --user="$mysqluser" \
+    --password="$mysqlpass" "$mysqldb" |
     sed "s/$name/__KOHASITE__/g"
index 560dc40..4999088 100755 (executable)
@@ -69,7 +69,7 @@ tar -C / -xf "$configdump"
 # Re-create database and database user.
 mysqldb="koha_$name"
 mysqluser="koha_$name"
-mysqlpwd="$(sed -n '/.*<pass>\(.*\)<\/pass>.*/s//\1/p' /etc/koha/sites/$name/koha-conf.xml)"
+mysqlpwd="$( xmlstarlet sel -t -v 'yazgfs/config/pass' /etc/koha/sites/$name/koha-conf.xml )"
 zcat "$sqldump" | mysql --defaults-extra-file=/etc/mysql/koha-common.cnf
 mysql --defaults-extra-file=/etc/mysql/koha-common.cnf <<eof || true
 DROP USER '$mysqluser';