diff options
Diffstat (limited to 'mayor-mod/bin/decrypt-backup.sh')
-rw-r--r-- | mayor-mod/bin/decrypt-backup.sh | 138 |
1 files changed, 0 insertions, 138 deletions
diff --git a/mayor-mod/bin/decrypt-backup.sh b/mayor-mod/bin/decrypt-backup.sh deleted file mode 100644 index 9eca4375..00000000 --- a/mayor-mod/bin/decrypt-backup.sh +++ /dev/null @@ -1,138 +0,0 @@ -#!/bin/bash -# -# Example: mayor decrypt-backup --crypted-file=/home/backup/20110515-crypt.tgz -# Az eredmény a $BACKUPDIR alá kerül az eredetileg elkódolt állomány nevéből -# származtatott néven: file.kit --> file-decrypt.kit -# -# TODO: ellenőrizni kell még az openssl és az aespipe meglétét -# - -OPT_SPEC="hf:d::" -LONG_OPT_SPEC="help,file:,crypted-file:,dir:,backup-dir::" -PARSED_OPTIONS=$(getopt -n "$0" -a -o $OPT_SPEC --long $LONG_OPT_SPEC -- "$@") -OPTIONS_RET=$? -eval set -- "$PARSED_OPTIONS" - -help_usage() { -cat <<EOF - -Decrypt-backup használata: mayor decrypt-backup [opciók] - -A parancs segítségével a korábban titkosított (ld. mayor help crypt-backup) mentést -csomagolhatjuk ki. A kicsomagoláshoz szükséges az intézmény privát kulcsa, amit a -program alapesetben az adatbázisban keres. Ha nincs más megadva, akkor a szkript -"YYYYmmdd-crypt.tgz" néven keresi a kicsomagolandó állományt (pl. ${DATE}-crypt.tgz) - -A mentési könyvtár, a szükséges jelszavak és egyéb paraméterek beállításait a -/etc/mayor/main.conf állományban kell megadni. - -Opciók: - -h, --help: A parancs leírása (amit most olvasol...) - -f, --file, --crypted-file: A kódolt állomány neve - -d, --dir, --backup-dir: A mentési könyvtár elérési útja - -EOF -} - -if [ $OPTIONS_RET -ne 0 ]; then help_usage; exit; fi - -FILE="${DATE}-crypt.tgz" -while [ $# -ge 1 ]; do - case $1 in - --help | -h ) help_usage - exit - ;; - - --crypted-file | --file | -f ) shift - FILE="$1" - echo "Kódolt állomány: $FILE" - ;; - - --backup-dir | --dir | -d ) shift - BACKUPDIR="$1" - echo "Backup könyvtár: $BACKUPDIR" - ;; - - -- ) shift - break - ;; - - * ) echo "HIBA: ismeretlen opció: $1" # ide elvileg sose jutunk, mert a getopts már kiszűrte a hibás paraméterek - exit - ;; - esac - shift -done - - - - -# A mysql bináris ellenőrzése -if [ ! -f $MYSQL ]; then - echo -e "\n\nERROR: A mysql kliens nem található: $MYSQL\n" - exit 1 -fi - -# A login adatbázis eléréséhez szükséges adatok a konfig-ból -DB=`grep db $BASEDIR/config/main-config.php | sed -e "s/$.*=\ *['|\"]//g" -e "s/['|\"];//g"` -USER=`grep user $BASEDIR/config/main-config.php | sed -e "s/$.*=\ *['|\"]//g" -e "s/['|\"];//g"` -PW=`grep pw $BASEDIR/config/main-config.php | sed -e "s/$.*=\ *['|\"]//g" -e "s/['|\"];//g"` - -# Ellenőrizzük, hogy van-e privát kulcs - regisztrált intézmény-e -COUNT=`$MYSQL -e 'SELECT count(privateKey) FROM mayorSsl' -p$PW -u$USER $DB | grep -i -v count` -if [ "$COUNT" -ne "1" ]; then - echo "Privát kulcsok száma: $COUNT" - echo "Nem regisztrált intézmény? A titkosított mentések kezelése csak regisztrált intézmények számára érhető el!" - exit 2 -fi - -# Backup könyvtár létrehozása -if [ ! -e $BACKUPDIR ]; then - mkdir $BACKUPDIR > /dev/null 2>&1 - if [ $? -ne 0 ]; then - echo "Nem sikerült a ${BACKUPDIR} könyvtárat létrehozni!" - echo "MaYoR Backup failure!" - exit 3 - fi -fi -chown $WEB_SERVER_USER $BACKUPDIR -chmod 700 $BACKUPDIR - -# bejövő paraméterek feldolgozása (crypted-file) -if [ ! -f $FILE ]; then - echo -e " HIBA: Hiányzik a dekódolandó mentési állomámny: ${FILE}\n" - FILE=$BACKUPDIR/${FILE} - echo "Próbáljuk a mentési könyvtárban (${FILE})" - if [ ! -f $FILE ]; then - echo -e " HIBA: Hiányzik a dekódolandó mentési állomámny: ${FILE}\n" - FILE=$BACKUPDIR/${PREFIX}${DATE}-crypt.tgz - echo "Próbáljuk az alapértelmezett állományt (${FILE})" - if [ ! -e $FILE ]; then - echo " HIBA: Hiányzik a dekódolandó mentési állomámny: ${FILE}" - exit 4 - fi - fi -fi -BASENAME=`basename $FILE` - -cd $BACKUPDIR -tar xfz $FILE -TARFILES=`tar tf $FILE` -SUBDIR=`for f in $TARFILES; do echo $f; break; done` -AESFILE=`echo $TARFILES | sed -e 's/ /\n/g' | grep '.aes'` -AESBASE=`basename $AESFILE | sed -e 's/.aes//g'` -DECRYPTFILE=`echo $AESBASE | sed -e 's/\.\([a-z]*\)$/-decrypt\.\1/'` - -# A privát kulcs lekérdezése -echo 'SELECT privateKey FROM mayorSsl' | $MYSQL -p$PW -u$USER $DB | grep -v privateKey | sed -e 's/\\n/\n/g' > $BACKUPDIR/$SUBDIR/id_rsa - -# AES kulcs dekódolása -openssl rsautl -decrypt -inkey $BACKUPDIR/$SUBDIR/id_rsa -in $BACKUPDIR/$SUBDIR/key.rsa -out $BACKUPDIR/$SUBDIR/key.txt - -# AES dekódolás (feltételezzük, hogy az eredmény tgz -aespipe -P $BACKUPDIR/$SUBDIR/key.txt -d -e aes256 < $BACKUPDIR/$AESFILE > $BACKUPDIR/$DECRYPTFILE - -# Törlés -rm -rf $BACKUPDIR/$SUBDIR - -echo -e "\nKicsomagolva: $BACKUPDIR/$DECRYPTFILE\n\n" |