[Koha-patches] [PATCH] Bug 5509 - use an XML parser to get values from config

Robin Sheat robin at catalyst.net.nz
Thu Dec 16 06:38:41 CET 2010


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.
---
 debian/control                    |    2 +-
 debian/control.in                 |    1 +
 debian/scripts/koha-dump          |    8 ++++----
 debian/scripts/koha-dump-defaults |   10 ++++++----
 debian/scripts/koha-restore       |    2 +-
 5 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/debian/control b/debian/control
index 14dadca..cecd304 100644
--- a/debian/control
+++ b/debian/control
@@ -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,
@@ -92,6 +91,7 @@ Depends: ${misc:Depends}, ${koha:Depends},
  mysql-client,
  pwgen,
  tinymce2, 
+ xmlstarlet,
  yaz
 Suggests: mysql-server
 Homepage: http://koha-community.org/
diff --git a/debian/control.in b/debian/control.in
index 44e144b..090b7b3 100644
--- a/debian/control.in
+++ b/debian/control.in
@@ -22,6 +22,7 @@ Depends: ${misc:Depends}, ${koha:Depends},
  mysql-client,
  pwgen,
  tinymce2, 
+ xmlstarlet,
  yaz
 Suggests: mysql-server
 Homepage: http://koha-community.org/
diff --git a/debian/scripts/koha-dump b/debian/scripts/koha-dump
index ab2995e..99c3894 100755
--- a/debian/scripts/koha-dump
+++ b/debian/scripts/koha-dump
@@ -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" \
diff --git a/debian/scripts/koha-dump-defaults b/debian/scripts/koha-dump-defaults
index 1de7ed8..fb5e988 100755
--- a/debian/scripts/koha-dump-defaults
+++ b/debian/scripts/koha-dump-defaults
@@ -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"
diff --git a/debian/scripts/koha-restore b/debian/scripts/koha-restore
index 560dc40..4999088 100755
--- a/debian/scripts/koha-restore
+++ b/debian/scripts/koha-restore
@@ -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';
-- 
1.7.1



More information about the Koha-patches mailing list