summaryrefslogtreecommitdiffstats
path: root/contrib/mysqlcrypt.sh
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2011-07-04 22:38:03 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2011-07-04 22:38:03 +0000
commitdadc34655c3ab961b0b0b94a10eaaba710f0b5e8 (patch)
tree99e72842fe687baea16376a147619b6048d7e441 /contrib/mysqlcrypt.sh
downloadkmymoney-dadc34655c3ab961b0b0b94a10eaaba710f0b5e8.tar.gz
kmymoney-dadc34655c3ab961b0b0b94a10eaaba710f0b5e8.zip
Added kmymoney
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/kmymoney@1239792 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'contrib/mysqlcrypt.sh')
-rw-r--r--contrib/mysqlcrypt.sh99
1 files changed, 99 insertions, 0 deletions
diff --git a/contrib/mysqlcrypt.sh b/contrib/mysqlcrypt.sh
new file mode 100644
index 0000000..b04525b
--- /dev/null
+++ b/contrib/mysqlcrypt.sh
@@ -0,0 +1,99 @@
+# mysqlcrypt.sh
+# This shell script will run KMyMoney in a MySql database
+# and uses the MySql dump program to maintain a copy of the data.
+# Additionally, another copy is written to a backup
+# directory before running KMyMoney. These backups will be deleted after a
+# user-specified number of days.
+
+# Optionally, these data files may be encrypted.
+# For encryption, it is necessary that you have the 'gpg' program installed,
+# and have set up a key identified by an email address (which may be a pseudo address).
+# See 'man gpg' for more info. The kgpg program will help set up these keys.
+# DO NOT forget the password associated with gpg; you will need it to access your data.
+
+# Optionally, the data can be removed from the database after KMyMoney finishes,
+# and reloaded next time you run.
+
+# It is assumed that your logon user name has the necessary database permissions.
+
+# Please set the following variables to your requirements
+MYDIR=$HOME/money # directory where the encrypted copy is to be held
+BUDIR=$MYDIR/backup # directory where the backups should go;
+FILE=myfin # name for the encrypted copy
+DBNAME=KMyMoney # mysql datbase name
+DROP=y # (y/n) - whether to delete info from database after running kmm
+SILENT=n # if set to y, backups will be deleted silently, else you will be asked
+CRYPTEMAIL=me@googlemail.com # delete this line if you don't want encrypted copies
+declare -i KEEP=7 # number of days to keep backups
+# end of user-changeable directives
+
+if [ ! -d $MYDIR ] ; then
+ mkdir $MYDIR;
+fi
+if [ ! -d $BUDIR ] ; then
+ mkdir $BUDIR;
+fi
+
+if [ -z $CRYPTEMAIL ]; then
+ EFILE=${FILE};
+else
+ EFILE=${FILE}.gpg;
+fi
+
+declare NOW=`date +%Y%m%d%H%M%S`
+
+if [ ! -f $MYDIR/$EFILE ] ; then
+ kdialog --warningcontinuecancel "A version of $FILE does not exist in $MYDIR.\nWhen KMyMoney starts, please open or create a file and use the 'File/Save as Database' function."
+ if [ $? -ne 0 ]; then
+ exit;
+ fi
+ KMMCMD=-n;
+else
+ KMMCMD=sql://$USER@localhost/$DBNAME?driver=QMYSQL3
+ # backup file
+ cp $MYDIR/$EFILE $BUDIR/$NOW$EFILE
+ LOAD=y
+ mysql -e "use $DBNAME;" 2>/dev/null
+ if [ $? -eq 0 ]; then
+ kdialog --warningyesno "A $DBNAME database exists. Do you wish to run with this?\n If not, the database will be reloaded from the encrypted file"
+ if [ $? -eq 0 ]; then # replied yes
+ LOAD=n
+ fi;
+ fi;
+ if [ $LOAD = y ]; then
+ echo "Reloading from file"
+ if [ -z $CRYPTEMAIL ]; then
+ mysql <$MYDIR/$EFILE;
+ else
+ gpg --decrypt $MYDIR/$EFILE |mysql;
+ fi;
+ fi;
+fi
+#run kmymoney
+kmymoney $KMMCMD
+mysqldump --databases -R $DBNAME >$MYDIR/$FILE
+if [ ! -z $CRYPTEMAIL ]; then
+ rm -f $MYDIR/$EFILE
+ gpg -e -r $CRYPTEMAIL $MYDIR/$FILE
+ rm $MYDIR/$FILE;
+fi
+
+case ${DROP:0:1} in
+ y | Y) mysql -e "drop database KMyMoney;";;
+esac
+
+# delete outdated backup files
+cd $BUDIR
+for i in `find . -name "*${EFILE}" -ctime +${KEEP}`; do
+ case ${SILENT:0:1} in
+ y | Y) ANSWER=y
+ ;;
+ *) read -p "Delete $i?" ANSWER
+ ;;
+ esac
+ case ${ANSWER:0:1} in
+ y | Y) echo "Deleting $i!"
+ rm $i
+ ;;
+ esac
+done