diff options
author | M.Gergo | 2018-03-04 13:04:58 +0100 |
---|---|---|
committer | Gergo | 2018-03-04 13:04:58 +0100 |
commit | 044a4bc2855521d49054d1854650491a99f3c5ce (patch) | |
tree | c22bac72067eaedc8c141558173f3e7fa9e93741 /mayor | |
download | mayor-044a4bc2855521d49054d1854650491a99f3c5ce.tar.gz mayor-044a4bc2855521d49054d1854650491a99f3c5ce.zip |
eredeti fájlok
Diffstat (limited to 'mayor')
-rw-r--r-- | mayor/bin/backup.sh | 192 | ||||
-rw-r--r-- | mayor/bin/crypt-backup.sh | 144 | ||||
-rw-r--r-- | mayor/bin/decrypt-backup.sh | 138 | ||||
-rwxr-xr-x | mayor/bin/etc/cron.daily/mayor | 13 | ||||
-rw-r--r-- | mayor/bin/help.sh | 47 | ||||
-rwxr-xr-x | mayor/bin/mayor | 67 | ||||
-rw-r--r-- | mayor/bin/remote-backup.sh | 170 | ||||
-rw-r--r-- | mayor/bin/restore.sh | 257 | ||||
-rwxr-xr-x | mayor/bin/sbin/eNaploBackup.sh | 95 | ||||
-rwxr-xr-x | mayor/bin/sbin/eNaploRestore.sh | 82 | ||||
-rw-r--r-- | mayor/bin/sbin/update.sh | 33 | ||||
-rw-r--r-- | mayor/bin/tex2pdf.sh | 24 | ||||
-rw-r--r-- | mayor/bin/update.sh | 227 | ||||
-rw-r--r-- | mayor/bin/xetex2pdf.sh | 36 | ||||
-rw-r--r-- | mayor/update/processUpdateScripts.sh | 259 |
15 files changed, 1784 insertions, 0 deletions
diff --git a/mayor/bin/backup.sh b/mayor/bin/backup.sh new file mode 100644 index 00000000..46a11f4b --- /dev/null +++ b/mayor/bin/backup.sh @@ -0,0 +1,192 @@ +#!/bin/bash + +OPT_SPEC="hf:d::" +LONG_OPT_SPEC="help,file:,backup-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 + +Backup használata: mayor backup [opciók] + +A parancs segítségével menthetjük a MaYoR rendszer adatbázisait, aktuális forrását és +beállításait. A mentés alapértelmezetten az aktuális dátum alapján lesz elnevezve +"YYYYmmdd.tgz" alakban (pl. $DATE.tgz). + +A mentési könyvtár, a szükséges jelszavak és egyéb mentési 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, --backup-file: A mentési állomány neve + -d, --dir, --backup-dir: A mentési könyvtár elérési útja + +EOF +} + +#if [ $OPTIONS_RET -ne 0 ] || [ $# -le 1 ]; then help_usage; exit; fi +if [ $OPTIONS_RET -ne 0 ]; then help_usage; exit; fi + +BACKUPFILE="$DATE" +while [ $# -ge 1 ]; do + case $1 in + --help | -h ) help_usage + exit + ;; + + --backup-file | --file | -f ) shift + BACKUPFILE="$1" + echo "Backup fájl: $BACKUPFILE" + ;; + + --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étereket... + exit + ;; + esac + shift +done + +########################### + +if [ -z $BACKUPDIR ]; then + if [ -f ../config/backup.conf ]; then + echo "WARNING: elavult konfigurációs állomány! (backup.conf)" + echo " A frissítési rendszer a korábbi backup.conf és update.conf állományok helyett" + echo " egy új, rögzített helyen lévő állományt használ: /etc/mayor/main.conf" + echo " Most - ennek hiányában - a régebbi állományt használjuk" + . ../config/backup.conf + else + echo -e "\n\nERROR: Hiányzó konfigurációs file: ../config/backup.conf" + pwd + exit 11 + fi +fi + +## +# A könyvtárak 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 1 + fi +fi +chown $WEB_SERVER_USER $BACKUPDIR +chmod 700 $BACKUPDIR + +if [ -e $BACKUPDIR/$BACKUPFILE.tgz ]; then + echo -e "\n\nERROR: már volt mentés: $BACKUPDIR/$BACKUPFILE.tgz\n" + exit 1 +fi +mkdir $BACKUPDIR/$BACKUPFILE +chown $WEB_SERVER_USER $BACKUPDIR/$BACKUPFILE +chmod 700 $BACKUPDIR/$BACKUPFILE + +## +# mysql adatbázis mentése +## + +if [ "$MYSQL_HOST" == "" ]; then + MYSQL_HOST="localhost" +fi + +if [ -f $MYSQL ]; then + DATABASES='' + for DB in `echo 'SHOW DATABASES' | mysql -h$MYSQL_HOST -p$MYSQL_PW -u$MYSQL_USER`; do + if [[ ! $EXCLUDED_DBS =~ .*$DB.* ]] && { [[ $DB =~ ^mayor.* ]] || [[ $DB =~ ^naplo.* ]] || [[ $DB =~ ^intezmeny.* ]]; } then + DATABASES="$DATABASES $DB" + fi + done + +else + echo -e "\n\nERROR: A mysql kliens nem található: $MYSQL\n" + exit 2 +fi + +for DATABASE in $DATABASES; do + mysqldump -R -h$MYSQL_HOST -p$MYSQL_PW -u$MYSQL_USER $DATABASE >> $BACKUPDIR/$BACKUPFILE/$DATABASE.sql +done + +## +# A honlap mentése +## + +mkdir $BACKUPDIR/$BACKUPFILE/log +cp -a $BASEDIR/log/revision $BACKUPDIR/$BACKUPFILE/log/revision +cp -a $BASEDIR/www $BACKUPDIR/$BACKUPFILE/www +cp -a $BASEDIR/config $BACKUPDIR/$BACKUPFILE/config + + +if [ "$SAVELDAP" == 1 ]; then + + ## + # Az LDAP adatbázis + ## + + /etc/init.d/slapd stop + sleep 1 + + slapcat -b $BASEDN -l $BACKUPDIR/$BACKUPFILE/ldap.ldif + + cp -a $LDAPDBDIR $BACKUPDIR/$BACKUPFILE/ldap + + /etc/init.d/slapd start + + ## + # LDAP konfig file-ok mentése (schema) + ## + + mkdir $BACKUPDIR/$BACKUPFILE/etc + cp -a $LDAPCONFDIR $BACKUPDIR/$BACKUPFILE/etc/ + +fi + +## +# Becsomagolás +## + +cd $BACKUPDIR +## Ez a korábbi szerintem hibás: +## tar cfz ${BACKUPFILE}.tgz ${DATE} +tar cfz ${BACKUPFILE}.tgz ${BACKUPFILE} +rm -rf $BACKUPFILE +#Debian6 inkompatibilis: tar cfz ${BACKUPFILE}.tgz --remove-files ${BACKUPFILE} + +## +# Mentés átmásolása másik szerverre +# rsync # Losonci János kiegészítése (losy@agymk.sulinet.hu) +## + +if [ "$RSYNC" == 1 ]; then + RSYNCBIN=`which rsync` + if [ "$RSYNCBIN" != "" ]; then + echo $RSYNCBIN -auvE $BACKUPDIR/ $RUSER@$RHOST:$RPATH/ + $RSYNCBIN -auvE $BACKUPDIR/ $RUSER@$RHOST:$RPATH/ + if [ $? -ne 0 ]; then + echo "rsync error!" + fi + fi +fi + +## +# Elavult mentés törlése +## + +declare -i BDAYS=BACKUPDAYS +if [ $BDAYS -gt 0 ]; then + find $BACKUPDIR -mtime +$BDAYS -exec rm {} \; +fi diff --git a/mayor/bin/crypt-backup.sh b/mayor/bin/crypt-backup.sh new file mode 100644 index 00000000..11e10a27 --- /dev/null +++ b/mayor/bin/crypt-backup.sh @@ -0,0 +1,144 @@ +#!/bin/bash +# +# Example: mayor crypt-backup --backup-file=/tmp/wiki.tgz +# Az eredmény a $BACKUPDIR/$DATE-crypt.tgz állományba kerül +# (Vagy jobb lenne, ha a file nevéből venné a nevét?) +# +# TODO: ellenőrizni kell még, hogy van-e openssl és aespipe +# + +OPT_SPEC="hf:d::" +LONG_OPT_SPEC="help,file:,backup-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 + +Crypt-backup használata: mayor crypt-backup [opciók] + +A parancs segítségével titkosíthatjuk meglévő mentési állományunkat. Az így kapott +állomány akár nyilvános tárhelyen is tárolható, kibontásához az intézmény privát +kulcsa szükséges. +A script alapértelmezetten az aktuális dátum alapján elnevezett mentési állományt +keres: "YYYYmmdd.tgz" alakban (pl. $DATE.tgz), ebből készít "YYYYmmdd-crypt.tgz" +nevű állományt (pl. ${DATE}-crypt.tgz). + +A mentési könyvtár, a szükséges jelszavak és egyéb mentési 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, --backup-file: A mentési állomány neve + -d, --dir, --backup-dir: A mentési könyvtár elérési útja + +EOF +} + +#if [ $OPTIONS_RET -ne 0 ] || [ $# -le 1 ]; then help_usage; exit; fi +if [ $OPTIONS_RET -ne 0 ]; then help_usage; exit; fi + +BACKUPFILE="$DATE" +while [ $# -ge 1 ]; do + case $1 in + --help | -h ) help_usage + exit + ;; + + --backup-file | --file | -f ) shift + BACKUPFILE="$1" + echo "Backup fájl: $BACKUPFILE" + ;; + + --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 + +############################ + +# 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 + +# Login adatbázis eléréséhez szükséges paraméterek lekérdezése 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 publikus kulcs - regisztrált intézmény-e +COUNT=`$MYSQL -e 'SELECT count(publicKey) FROM mayorSsl' -p$PW -u$USER $DB | grep -i -v count` +if [ "$COUNT" -ne "1" ]; then + echo "Publikus kulcsok száma: $COUNT" + echo "Nem regisztrált intézmény? A mentés titkosítása 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 +CRYPTDIR=$BACKUPDIR/$DATE +if [ ! -e $CRYPTDIR ]; then + mkdir $CRYPTDIR +fi +chown $WEB_SERVER_USER $BACKUPDIR +chmod 700 $BACKUPDIR + +if [ ! -f $BACKUPFILE ]; then + # Próbáljuk meg a mai dátum szerinti backup-ot (alapértelmezés) + echo -e " HIBA: Hiányzik a kódolandó mentési állomámny: (${BACKUPFILE})\n" + BACKUPFILE=$BACKUPDIR/${BACKUPFILE} + echo "Próbáljuk a mentéi könyvtáron belül: ${BACKUPFILE}" + if [ ! -f $BACKUPFILE ]; then + echo -e " HIBA: Hiányzik a kódolandó mentési állomámny: (${BACKUPFILE})\n" + BACKUPFILE=$BACKUPDIR/${PREFIX}${DATE}.tgz + echo "Próbáljuk az alapértelmezett állománynevet: ${BACKUPFILE}" + if [ ! -e $BACKUPFILE ]; then + echo -e " HIBA: Hiányzik a kódolandó mentési állomámny: (${BACKUPFILE})\n" + exit 3 + fi + fi +fi +BASENAME=`basename $BACKUPFILE` + +# Publikus kulcs lekérdezése +echo 'SELECT publicKey FROM mayorSsl' | $MYSQL -p$PW -u$USER $DB | grep -v publicKey | sed -e 's/\\n/\n/g' > $CRYPTDIR/id_rsa.pub + +# Véletlen kulcs generálás a szimmetrikus AES kódoláshoz +pwgen -nc 50 1 > $CRYPTDIR/key.txt + +# AES kódolás +aespipe -P $CRYPTDIR/key.txt -e aes256 < $BACKUPFILE > $CRYPTDIR/$BASENAME.aes + +# A kulcsok RSA kódolása a publikus kulccsal +openssl rsautl -encrypt -inkey $CRYPTDIR/id_rsa.pub -pubin -in $CRYPTDIR/key.txt -out $CRYPTDIR/key.rsa + +# Kulcsok törlése +rm $CRYPTDIR/id_rsa.pub +rm $CRYPTDIR/key.txt + +cd $BACKUPDIR +tar cfz ${DATE}-crypt.tgz ${DATE} +rm -rf $DATE + +echo -e "\nBecsomagolva: $BACKUPDIR/${DATE}-crypt.tgz\n\n" diff --git a/mayor/bin/decrypt-backup.sh b/mayor/bin/decrypt-backup.sh new file mode 100644 index 00000000..9eca4375 --- /dev/null +++ b/mayor/bin/decrypt-backup.sh @@ -0,0 +1,138 @@ +#!/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" diff --git a/mayor/bin/etc/cron.daily/mayor b/mayor/bin/etc/cron.daily/mayor new file mode 100755 index 00000000..815cc023 --- /dev/null +++ b/mayor/bin/etc/cron.daily/mayor @@ -0,0 +1,13 @@ +#!/bin/bash + +# A helyes környezet beállítása (svn alapú frissítés esetén az ékezetes file-nevekhez) +export LANG=hu_HU.UTF-8 + +# Napló napi mentése +/usr/local/sbin/mayor backup + +# Heti frissítés +if [ `date +'%w'` == 0 ]; then + /usr/local/sbin/mayor update +fi + diff --git a/mayor/bin/help.sh b/mayor/bin/help.sh new file mode 100644 index 00000000..e983ccd3 --- /dev/null +++ b/mayor/bin/help.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +OPT_SPEC="hf::" +LONG_OPT_SPEC="help,file:,f::" +PARSED_OPTIONS=$(getopt -n "$0" -a -o $OPT_SPEC --long $LONG_OPT_SPEC -- "$@") +OPTIONS_RET=$? +eval set -- "$PARSED_OPTIONS" + +help_usage() { + print_help; + echo -e "\nHELP használata: mayor help [parancs]\n\n" +} + +if [ $OPTIONS_RET -ne 0 ] || [ $# -le 1 ]; then help_usage; exit; fi + +while [ $# -ge 1 ]; do + case $1 in + --help | -h ) help_usage + exit + ;; + + --file | -f ) shift + FILE="$1" + echo "FILE: $FILE" + ;; + + -- ) shift + break + ;; + + * ) echo "HIBA: ismeretlen opció: $1" # ide elvileg sose jutunk, mert a getopts már kiszűrte a hibás paramétereket... + exit + ;; + esac + shift +done + +while [ $# -ge 1 ]; do + echo -e "\n---------- HELP: $1 ----------\n" + if [[ ! "${CMDS[*]}" =~ .*$1.* ]]; then + echo -e "Ismeretlen parancs: $1" + #print_help + else + . ./$1.sh --help + fi + shift +done diff --git a/mayor/bin/mayor b/mayor/bin/mayor new file mode 100755 index 00000000..aa46f58d --- /dev/null +++ b/mayor/bin/mayor @@ -0,0 +1,67 @@ +#!/bin/bash + +VERSION="2.0" +echo -e "\nmayor szkript - verzió: $VERSION (" `date '+%Y-%m-%d'` ")\n" + +CMDS=(backup update crypt-backup decrypt-backup remote-backup restore help) +MODS=(mayor-base mayor-portal mayor-naplo mayor-naplo-sni mayor-wiki mayor-felveteli mayor-installer mayor-installer-sulix mayor-jatek mayor-locales-de_DE mayor-locales-en_US mayor-local-jp_JP) +DESC=('a rendszer mentése' 'a rendszer frissítése' 'a mentés titkosítása (ß)' 'a titkosított mentés visszakódolása (ß)' 'mentés a központi (távoli) szerverre' 'mentés visszatöltése' 'A parancs működésének leírása') +#OPTS=('--skip-lock') +#OPTDESC=('a rendszer zárolásának kihagyása') +DATE=`date "+%Y%m%d"` +DATETIME=`date "+%Y-%m-%d %H:%M:%S"` + +print_help() { + echo -e "\nHasználat: mayor [parancs] [opciók]\n\nParancs" + for ((i=0; i<${#CMDS[@]}; i=i+1)); do + echo " - ${CMDS[$i]}: ${DESC[$i]}" + done +# echo -e "\nOpciók" +# for ((i=0; i<${#OPTS[@]}; i=i+1)); do +# echo " ${OPTS[$i]}: ${OPTDESC[$i]}" +# done + echo "" +} + +# Ellenőrizzük, hogy van-e configurációs állomány +if [ -f /etc/mayor/main.conf ]; then + . /etc/mayor/main.conf +else + echo -e "\nHIBA: hiányzó konfigurációs file: /etc/mayor/main.conf\n" + exit 1 +fi + +# Ha nincs paraméter, akkor írjuk ki a tennivalót +if [ -z $1 ]; then + print_help + exit 1 +fi + +# A paraméter ellenőrzése +for ((i=0; i<${#CMDS[@]}; i=i+1)); do + if [ ${CMDS[$i]} == "$1" ]; then + CMD=${CMDS[$i]} + break + fi +done + +if [ -z $CMD ]; then + echo -e "\nHIBA: ismeretlen parancs: $1\n" + print_help + exit 1 +fi + +# Alapértelmezés +if [ "$MYSQL_HOST" == "" ]; then + MYSQL_HOST="localhost" +fi + +shift +# A parancs végrehajtása +cd $BASEDIR/bin +if [ -z $UPDATELOG ]; then + . ./$CMD.sh +else + . ./$CMD.sh 2>&1 | tee -a $UPDATELOG +fi + diff --git a/mayor/bin/remote-backup.sh b/mayor/bin/remote-backup.sh new file mode 100644 index 00000000..71e241d5 --- /dev/null +++ b/mayor/bin/remote-backup.sh @@ -0,0 +1,170 @@ +#!/bin/bash +# +# Example: mayor remote-backup --backup-file=/tmp/wiki.tgz +# Az eredmény a $BACKUPDIR/$DATE-crypt.tgz állományba kerül +# (Vagy jobb lenne, ha a file nevéből venné a nevét?) +# +# TODO: ellenőrizni kell még, hogy van-e openssl és aespipe +# + +OPT_SPEC="hf:d::" +LONG_OPT_SPEC="help,file:,backup-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 + +Remote-backup használata: mayor remote-backup [opciók] + +A parancs segítségével menthetjük egy központi szerverre a MaYoR rendszer adatbázisait, +aktuális forrását és beállításait titkosított formában. A távoli szerverre való bejele- +lentkezéshez szükséges az intézmény privát kulcsa, amit a program alapesetben az adat- +bázisban keres. +A szkript, ha nincs más megadva, akkor az aktuális dátumnak megelelő, +"YYYYmmdd-crypt.tgz" alkú néven keresi a feltöltendő mentési állományt. + +A mentési könyvtár, a szükséges jelszavak és egyéb mentési 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, --backup-file: A mentési á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 + ;; + + --backup-file | --file | -f ) shift + FILE="$1" + echo "Backup fájl: $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 + + + +SSH_PORT="8023" +SSH_HOST="backup.mayor.hu" + +# 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 + +# Login adatbázis eléréséhez szükséges paraméterek lekérdezése 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" | sed 's/^ *//g'` +PW=`grep pw $BASEDIR/config/main-config.php | sed -e "s/$.*=\ *['|\"]//g" -e "s/['|\"];//g" | sed 's/^ *//g'` + +# Ellenőrizzük, hogy van-e publikus kulcs - regisztrált intézmény-e +COUNT=`$MYSQL -e 'SELECT count(publicKey) FROM mayorSsl' -p$PW -u$USER $DB | grep -i -v count` +if [ "$COUNT" -ne "1" ]; then + echo "Publikus kulcsok száma: $COUNT" + echo "Nem regisztrált intézmény? A mentés titkosítása 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 +CRYPTDIR=$BACKUPDIR/$DATE +if [ ! -e $CRYPTDIR ]; then + mkdir $CRYPTDIR +fi +chown $WEB_SERVER_USER $BACKUPDIR +chmod 700 $BACKUPDIR + +if [ ! -f $FILE ]; then + echo -e " HIBA: Hiányzik a kódolandó mentési állomámny: ${FILE}" + FILE=$BACKUPDIR/${FILE} + echo "Próbáljuk a mentési könyvtárban! (${FILE})" + if [ ! -f $FILE ]; then + echo -e " HIBA: Hiányzik a kódolandó mentési állomámny: ${FILE}" + FILE=$BACKUPDIR/${PREFIX}${DATE}.tgz + echo "Próbáljuk az alapértelmezett állományt! (${FILE})" + if [ ! -e $FILE ]; then + echo -e " HIBA: Hiányzik a kódolandó mentési állomámny: ${FILE}" + exit 3 + fi + fi +fi +BASENAME=`basename $FILE` + +# Publikus kulcs lekérdezése +echo 'SELECT publicKey FROM mayorSsl' | $MYSQL -p$PW -u$USER $DB | grep -v publicKey | sed -e 's/\\n/\n/g' > $CRYPTDIR/id_rsa.pub + +# Véletlen kulcs generálás a szimmetrikus AES kódoláshoz +pwgen -nc 50 1 > $CRYPTDIR/key.txt + +# AES kódolás +aespipe -P $CRYPTDIR/key.txt -e aes256 < $FILE > $CRYPTDIR/$BASENAME.aes + +# A kulcsok RSA kódolása a publikus kulccsal +openssl rsautl -encrypt -inkey $CRYPTDIR/id_rsa.pub -pubin -in $CRYPTDIR/key.txt -out $CRYPTDIR/key.rsa + +# Kulcsok törlése +rm $CRYPTDIR/id_rsa.pub +rm $CRYPTDIR/key.txt + +cd $BACKUPDIR +tar cfz ${DATE}-crypt.tgz ${DATE} +rm -rf $DATE + +echo -e "\nBecsomagolva: $BACKUPDIR/${DATE}-crypt.tgz\n\n" + +# A privát kulcs lekérdezése, elhelyezése +if [ ! -d $BASEDIR/ssh ]; then + echo "Létrehozzuk a $BASEDIR/ssh könyvtárat, amibe belerakjuk a privát kulcsot..." + mkdir $BASEDIR/ssh + chmod 700 $BASEDIR/ssh +fi +if [ ! -f $BASEDIR/ssh/id_rsa ]; then + echo 'SELECT privateKey FROM mayorSsl' | $MYSQL -p$PW -u$USER $DB | grep -v privateKey | sed -e 's/\\n/\n/g' > $BASEDIR/ssh/id_rsa + chmod 700 $BASEDIR/ssh/id_rsa +fi + +# Az intézmény OM kódjának lekérdezése + +# A mayor_naplo adatbázis eléréséhez szükséges paraméterek lekérdezése a konfig-ból... +DB=`grep db $BASEDIR/config/module-naplo/config.php | sed -e "s/$.*=\ *['|\"]//g" -e "s/['|\"];//g"` +USER=`grep userRead $BASEDIR/config/module-naplo/config.php | sed -e "s/$.*=\ *['|\"]//g" -e "s/['|\"];//g" | sed 's/^ *//g'` +PW=`grep pwRead $BASEDIR/config/module-naplo/config.php | sed -e "s/$.*=\ *['|\"]//g" -e "s/['|\"];//g" | sed 's/^ *//g'` + +OMKOD=`echo 'SELECT SUBSTR(OMKod,-6) FROM intezmeny WHERE alapertelmezett = 1' | $MYSQL -p$PW -u$USER $DB | grep -v OMKod` +SSH_USER="om$OMKOD" +echo $SSH_USER + +# A kódolt adatállomány másolása +scp -i $BASEDIR/ssh/id_rsa -P $SSH_PORT $BACKUPDIR/${DATE}-crypt.tgz $SSH_USER@$SSH_HOST:/home/$SSH_USER/ diff --git a/mayor/bin/restore.sh b/mayor/bin/restore.sh new file mode 100644 index 00000000..8283effa --- /dev/null +++ b/mayor/bin/restore.sh @@ -0,0 +1,257 @@ +#!/bin/bash + +OPT_SPEC="hkprf:d:t::" +LONG_OPT_SPEC="help,keep-old-passwords,restore-parent,restore-private,tmp-dir:,file:,backup-file:,dir:,base-dir::" +PARSED_OPTIONS=$(getopt -n "$0" -a -o $OPT_SPEC --long $LONG_OPT_SPEC -- "$@") +OPTIONS_RET=$? +eval set -- "$PARSED_OPTIONS" + +help_usage() { +cat <<EOF + +Restore használata: mayor restore [opciók] + +A parancs segítségével korábbi mentésből állíthatjuk helyre a napló adaokat. A helyreállítás előtt +telepíteni kell egy új, lehetőleg a mentettel megegyező, vagy újabb verziójú rendszert, amibe a régi +adatokat betöltjük. +A mentést alapértelmezetten az aktuális dátum alapján keresi, "YYYYmmdd.tgz" alakban (pl. $DATE.tgz). + +Amennyiben a paraméterként megadott alapkönyvtárban léteznek a configurációs állományok, úgy a program +ezeket használja, különben a mentésből állítja őket helyre. A jelszavak alapértelmezetten mindig az +új telepítés szerintiek maradnak. + +Opciók: + -h, --help: A parancs leírása (amit most olvasol...) + -f, --file, --backup-file: A visszatöltendő mentési állomány neve + -d, --dir, --base-dir: Az alapkönyvtár elérési útja + -t, --tmp-dir: Az ideiglenes könyvtár + -k, --keep-old-passwords: A mentett adatbázis-jelszavak megtartása akkor is, ha léteznek újak + -p, --restore-parent: A szülők felhasználói azonosítóinak helyreállítása + -r, --restore-private: A tanár/diák felhasználói azonosítóinak helyreállítása (csak MySQL-ből!) + +EOF +} + +cleartmp() { + echo -e -n "\n\nAz ideiglenes könyvátrat töröljük: ${RTMPDIR}/restore/${DT}..." + rm -rf ${RTMPDIR}/restore/${DT} + echo "ok" +} + +#if [ $OPTIONS_RET -ne 0 ] || [ $# -le 1 ]; then help_usage; exit; fi +if [ $OPTIONS_RET -ne 0 ]; then help_usage; exit; fi + +# Alapéretelmezett értékek: +RBACKUPFILE="${DATE}.tgz" +RBASEDIR="/var/mayor" +KEEP_OLD_PASSWORDS=0 + +while [ $# -ge 1 ]; do + case $1 in + --help | -h ) help_usage + exit + ;; + + --keep-old-passwords | -k ) KEEP_OLD_PASSWORDS=1 + echo "A mentett adatbázis-jelszavak használata..." + ;; + + --restore-parent | -p ) RESTORE_PARENT=1 + echo "Szülői azonosítók betöltése..." + ;; + + --restore-private | -r ) RESTORE_PRIVATE=1 + echo "Tanár/diák azonosítók betöltése..." + ;; + + --backup-file | --file | -f ) shift + RBACKUPFILE="$1" + echo "Backup fájl: $RBACKUPFILE" + ;; + + --base-dir | --dir | -d ) shift + RBASEDIR="$1" + echo "Alapkönyvtár: $RBASEDIR" + ;; + + --tmp-dir | -t ) shift + RTMPDIR="$1" + echo "Ideiglenes könyvtár: $RTMPDIR" + ;; + + -- ) shift + break + ;; + + * ) echo "HIBA: ismeretlen opció: $1" # ide elvileg sose jutunk, mert a getopts már kiszűrte a hibás paramétereket... + exit + ;; + esac + shift +done + +## +# A könyvtárak létrehozása +## + +RREVISIONFILE="${RBASEDIR}/log/revision" +declare -i INST_REV +if [ ! -e "${RREVISIONFILE}" ]; then + echo "Hiba: A megadott alapkönyvtárban (${RBASEDIR}) nem található telepített MaYoR rendszer!" + echo -e " A helyreállításhoz először telepíteni kell egy azonos, vagy újabb verziójú rendszert.\n" + exit 1 +fi +INST_REV=`cat $RREVISIONFILE` +echo "A telepített rendszer revision száma: ${INST_REV}" + +if [ ! -e "${RBACKUPFILE}" ]; then + echo "Hiba: A backup állomány nem található (${RBACKUPFILE})" + echo -e " A backup állományt teljes elérési úttal kell megadni!\n" + exit 2 +fi + +[ -z "${RTMPDIR:-}" ] && RTMPDIR="/tmp" +if [ ! -e "${RTMPDIR}" ]; then + echo "Az ideiglenes könyvtár (${RTMPDIR}) nem létezik." + echo -n "Létrehozás ... " + if mkdir -p "${RTMPDIR}" 2>/dev/null; then + echo "ok." + else + echo "hiba." + exit 3 + fi +fi + +if [ ! -d "${RTMPDIR}/restore" ]; then + if ! mkdir "${RTMPDIR}/restore" 2>/dev/null; then + echo "Hiba: Az ideiglenes könyvtár nem írható (${RTMPDIR})!" + exit 4 + fi +fi +chmod 700 "${RTMPDIR}/restore" +cd "${RTMPDIR}/restore" +tar xvfz $RBACKUPFILE +DT=$(ls) +echo "A mentés dátuma: ${DT}" +cd ${DT} + +RREVISIONFILE="${RTMPDIR}/restore/${DT}/log/revision" +declare -i BAK_REV +if [ ! -e "${RREVISIONFILE}" ]; then + echo "Hiba: A mentési állomány nem tartalmaz verzió információt!" + echo -e " A mentési állományon belül, a ${DT}/log/revision állományba írja be a revision számot (pl: 2512)!\n" + cleartmp + exit 5 +fi +BAK_REV=`cat $RREVISIONFILE` +echo "A mentett rendszer revision száma: ${BAK_REV}" + +if [ ${BAK_REV} -gt ${INST_REV} ]; then + echo "Hiba: A mentett rendszer újabb, mint a telepített!" + echo -e " A telepített rendszer revision száma nagyobb vagy egyenlő kell legyen a mentett rendszer revision számánál!\n Telepítsen frissíebb rendszert!\n" + cleartmp + exit 6 +fi + +# A telepített rendszer beállításainsak betöltése +if [ -f "${RBASEDIR}/config/main.conf" ]; then + . "${RBASEDIR}/config/main.conf" +else + echo "Hiba: A telepített rendszer nincs beállítva!" + echo -e " Hiányzik a konfigurációs állomány: ${RBASEDIR}/config/main.conf\n" + cleartmp + exit 7 +fi + +# Az adatbázisok betöltése +NAPLOUSER=`egrep 'userWrite.*=' $BASEDIR/config/module-naplo/config.php | sed -e "s/^.*=\ *['|\"]//g" -e "s/['|\"];//g"` +NAPLOUSERREAD=`egrep 'userRead.*=' $BASEDIR/config/module-naplo/config.php | sed -e "s/^.*=\ *['|\"]//g" -e "s/['|\"];//g"` +DBS=`$MYSQL -h$MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PW -e"SHOW DATABASES"` +if [ "$RESTORE_PARENT" == "1" ]; then + FILES="mayor_naplo.sql mayor_parent.sql intezmeny_*.sql naplo_*.sql" +else + FILES="mayor_naplo.sql intezmeny_*.sql naplo_*.sql" +fi +if [ "$RESTORE_PRIVATE" == "1" ]; then + FILES="$FILES mayor_private.sql" +fi +for SQLFILE in $FILES; do + if [ -e "${SQLFILE}" ]; then + DB=${SQLFILE%.sql} + echo -n "${DB} ... " + if [[ ! ${DBS} =~ .*$DB.* ]]; then + echo -n "... " + (cat <<EOF + create database ${DB} character set utf8 collate utf8_hungarian_ci; + grant select,execute on ${DB}.* to '$NAPLOUSERREAD'@'localhost'; + grant all on ${DB}.* to '$NAPLOUSER'@'localhost'; +EOF +) | $MYSQL -h$MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PW + fi + echo -n '... ' + cat ${SQLFILE} | mysql -p${MYSQL_PW} --user=${MYSQL_USER} --default-character-set=utf8 ${DB} + echo ok + fi +done + +# A mentésben szereplő user és jelszó adatok +bNCDIR="${RTMPDIR}/restore/${DT}/config/module-naplo" +iNCDIR="${BASEDIR}/config/module-naplo" +cd ${bNCDIR} +bDB=`grep db ${bNCDIR}/config.php | egrep -v '^[[:space:]]*(//|/\*.*\*/$)' | grep naplo_base | sed -e "s/^.*=\ *['|\"]//g" -e "s/['|\"];//g"` +bUSER=`egrep 'userWrite.*=' ${bNCDIR}/config.php | egrep -v '^[[:space:]]*(//|/\*.*\*/$)' | sed -e "s/^.*=\ *['|\"]//g" -e "s/['|\"];//g"` +bUSERREAD=`egrep 'userRead.*=' ${bNCDIR}/config.php | egrep -v '^[[:space:]]*(//|/\*.*\*/$)' | sed -e "s/^.*=\ *['|\"]//g" -e "s/['|\"];//g"` +bPW=`egrep 'pwWrite.*=' ${bNCDIR}/config.php | egrep -v '^[[:space:]]*(//|/\*.*\*/$)' | sed -e "s/^.*=\ *['|\"]//g" -e "s/['|\"];//g"` +bPWREAD=`egrep 'pwRead.*=' ${bNCDIR}/config.php | egrep -v '^[[:space:]]*(//|/\*.*\*/$)' | sed -e "s/^.*=\ *['|\"]//g" -e "s/['|\"];//g"` +#echo "mentett: $bDB : $bUSER : $bUSERREAD : $bPW : $bPWREAD" +# Az új telepítés user és jelszó adatai +if [ -e "${iNCDIR}/config.php" ] && [ "${KEEP_OLD_PASSWORDS}" != "1" ]; then + iDB=`grep db ${iNCDIR}/config.php | egrep -v '^[[:space:]]*(//|/\*.*\*/$)' | grep naplo_base | sed -e "s/^.*=\ *['|\"]//g" -e "s/['|\"];//g"` + iUSER=`egrep 'userWrite.*=' ${iNCDIR}/config.php | egrep -v '^[[:space:]]*(//|/\*.*\*/$)' | sed -e "s/^.*=\ *['|\"]//g" -e "s/['|\"];//g"` + iUSERREAD=`egrep 'userRead.*=' ${iNCDIR}/config.php | egrep -v '^[[:space:]]*(//|/\*.*\*/$)' | sed -e "s/^.*=\ *['|\"]//g" -e "s/['|\"];//g"` + iPW=`egrep 'pwWrite.*=' ${iNCDIR}/config.php | egrep -v '^[[:space:]]*(//|/\*.*\*/$)' | sed -e "s/^.*=\ *['|\"]//g" -e "s/['|\"];//g"` + iPWREAD=`egrep 'pwRead.*=' ${iNCDIR}/config.php | egrep -v '^[[:space:]]*(//|/\*.*\*/$)' | sed -e "s/^.*=\ *['|\"]//g" -e "s/['|\"];//g"` +else + iDB=$bDB + iUSER=$bUSER + iUSERREAD=$bUSERREAD + iPW=$bPW + iPWREAD=$bPWREAD +fi +#echo "installált: $iDB : $iUSER : $iUSERREAD : $iPW : $iPWREAD" +if [ -e "${iNCDIR}/config.php" ]; then + if [ ! -e "${iNCDIR}/config.php.backup" ]; then + echo "${iNCDIR}/config.php --> ${iNCDIR}/config.php.backup" + mv "${iNCDIR}/config.php" "${iNCDIR}/config.php.backup" + fi +fi + +cat "${bNCDIR}/config.php" | sed \ + -e "s/db\(.*\)$bDB\(.*\)/db\1$iDB\2/g" \ + -e "s/userWrite\(.*\)$bUSER\(.*\)/userWrite\1$iUSER\2/g" \ + -e "s/userRead\(.*\)$bUSERREAD\(.*\)/userRead\1$iUSERREAD\2/g" \ + -e "s/$bPW/$iPW/g" -e "s/$bPWREAD/$iPWREAD/g" > "${iNCDIR}/config.php" + +for FILE in config-*.php; do + echo -n "$FILE ... " + # mentés + if [ -e "${iNCDIR}/$FILE" ]; then + if [ ! -e "${iNCDIR}/$FILE.backup" ]; then + echo -n "... " + mv "${iNCDIR}/$FILE" "${iNCDIR}/$FILE.backup" + fi + fi + cp $FILE "${iNCDIR}/$FILE" + echo ok +done + +cd ${BASEDIR}/bin +if [ -z $UPDATELOG ]; then + . update.sh -e -r$BAK_REV -b${BASEDIR} +else + . update.sh -e -r$BAK_REV -b${BASEDIR} 2>&1 | tee -a $UPDATELOG +fi + +# Az ideiglenes könyvtár törlése +cleartmp + diff --git a/mayor/bin/sbin/eNaploBackup.sh b/mayor/bin/sbin/eNaploBackup.sh new file mode 100755 index 00000000..5bdba177 --- /dev/null +++ b/mayor/bin/sbin/eNaploBackup.sh @@ -0,0 +1,95 @@ +#!/bin/sh +## +# Az elektronikus mentése (Version 1.0) +## + + DATE=`date +%Y%m%d` + NAPLO_BACKUP_BASE_DIR='/backup/naplo' + NAPLO_BACKUP_DIR="$NAPLO_BACKUP_BASE_DIR/$DATE" + + DATABASES='mayor_parent mayor_private mayor_naplo intezmeny_fasori naplo_fasori_2007' + #MYSQL_DB='%MYSQL_NAPLO_DB%' + MYSQL_USER='%MYSQL_NAPLO_USER%' + MYSQL_PW='%MYSQL_NAPLO_PW%' + + WWW_SSL_DIR='%BASEDIR%' + WEB_SERVER_USER='%WEB_SERVER_USER%' + EXPIRE_DATE=`date -d '30 days ago' +%Y%m%d` + + BASEDN='%BASEDN%' + LDAP_CONF_DIR='%LDAP_CONF_DIR%' + LDAP_DB_DIR='%LDAP_DB_DIR%' + +## +# A könyvtárak létrehozása +## + if [ ! -e $NAPLO_BACKUP_BASE_DIR ]; then + /bin/mkdir $NAPLO_BACKUP_BASE_DIR + fi + /bin/chown $WEB_SERVER_USER $NAPLO_BACKUP_BASE_DIR + /bin/chmod 700 $NAPLO_BACKUP_BASE_DIR + + if [ -e $NAPLO_BACKUP_DIR.tgz ]; then + exit 1 + fi + /bin/mkdir $NAPLO_BACKUP_DIR + /bin/chown $WEB_SERVER_USER $NAPLO_BACKUP_DIR + /bin/chmod 700 $NAPLO_BACKUP_DIR + +## +# mysql adatbázis mentése +## + +for DATABASE in $DATABASES; do + /usr/bin/mysqldump -p$MYSQL_PW -u$MYSQL_USER $DATABASE >> $NAPLO_BACKUP_DIR/$DATABASE.sql +done + +## +# mysql adatbázis mentése +## + +# /usr/bin/mysqldump -p$MYSQL_PW -u$MYSQL_USER $MYSQL_DB >> $NAPLO_BACKUP_DIR/$MYSQL_DB.sql + +## +# A honlap mentése +## + + mkdir $NAPLO_BACKUP_DIR/html + + /bin/cp -a $WWW_SSL_DIR/* $NAPLO_BACKUP_DIR/html/ + +## +# Az LDAP adatbázis +## + + /etc/init.d/slapd stop + /bin/sleep 1 + + /usr/sbin/slapcat -b $BASEDN -l $NAPLO_BACKUP_DIR/ldap.ldif + + /bin/cp -a $LDAP_DB_DIR $NAPLO_BACKUP_DIR/ldap + + /etc/init.d/slapd start + +## +# LDAP konfig file-ok mentése (schema) +## + + /bin/mkdir $NAPLO_BACKUP_DIR/etc + /bin/cp -a $LDAP_CONF_DIR $NAPLO_BACKUP_DIR/etc/ + +## +# Becsomagolás +## + + cd $NAPLO_BACKUP_BASE_DIR + /bin/tar cfz $DATE.tgz $DATE + /bin/rm -rf $NAPLO_BACKUP_DIR + +## +# Elavult mentés tölése +## + + if [ -e $NAPLO_BACKUP_BASE_DIR/$EXPIRE_DATE.tgz ]; then + rm -rf $NAPLO_BACKUP_BASE_DIR/$EXPIRE_DATE.tgz + fi diff --git a/mayor/bin/sbin/eNaploRestore.sh b/mayor/bin/sbin/eNaploRestore.sh new file mode 100755 index 00000000..f383360f --- /dev/null +++ b/mayor/bin/sbin/eNaploRestore.sh @@ -0,0 +1,82 @@ +#!/bin/sh +## +# Az elektronikus visszatöltése (Version 1.0) +## + + NAPLO_BACKUP_BASE_DIR='/backup/naplo' + NAPLO_BACKUP_TMP_DIR="$NAPLO_BACKUP_BASE_DIR/tmp" + + DATABASE='%MYSQL_NAPLO_DB%' + MYSQL_PW='%MYSQL_ROOT_PW%' + MYSQL_USER='root' + + WWW_DIR='%BASEDIR%' + WEB_SERVER_USER='%WEB_SERVER_USER%' + BASEDN='%BASEDN%' + DUMP_FILE="$DATABASE.sql" + LDIF_FILE='ldap.ldif' + LDAP_DB_DIR='%LDAP_DB_DIR%/mayor' + +## +# A paraméter ellenőrzése +## + + if [ -z $1 ]; then + exit 1 + else + if [ -e $NAPLO_BACKUP_BASE_DIR/$1 ]; then + FILE=$1 + DATE=`echo $FILE | cut -d . -f 1` + else + exit 2 + fi + fi + +echo "PARAMÉTER: $1" + +## +# TMP Könyvtár ellenőrzése, létrehozása +## + + if [ ! -e $NAPLO_BACKUP_TMP_DIR ]; then + /bin/mkdir $NAPLO_BACKUP_TMP_DIR + fi + /bin/chown $WEB_SERVER_USER $NAPLO_BACKUP_TMP_DIR + /bin/chmod 700 $NAPLO_BACKUP_TMP_DIR + +## +# Adatfile kicsomagolása +## + + cd $NAPLO_BACKUP_TMP_DIR + /bin/tar xfz $NAPLO_BACKUP_BASE_DIR/$FILE + if [ ! -e $NAPLO_BACKUP_TMP_DIR/$DATE/$DUMP_FILE ]; then + exit 3 + fi + if [ ! -e $NAPLO_BACKUP_TMP_DIR/$DATE/$LDIF_FILE ]; then + exit 4 + fi + +## +# Az LDAP adatbázis visszatöltése/felülírása +## + + /etc/init.d/slapd stop + /bin/sleep 1 + + /bin/rm -rf $LDAP_DB_DIR/* + /usr/sbin/slapadd -c -b $BASEDN -l $NAPLO_BACKUP_TMP_DIR/$DATE/$LDIF_FILE + + /etc/init.d/slapd start + +## +# mysql adatbázis visszatöltése +## + +(cat <<EOF +DROP DATABASE IF EXISTS $DATABASE; +CREATE DATABASE $DATABASE; +EOF +) | mysql -u$MYSQL_USER -p$MYSQL_PW + +cat $NAPLO_BACKUP_TMP_DIR/$DATE/$DUMP_FILE | mysql -u$MYSQL_USER -p$MYSQL_PW $DATABASE diff --git a/mayor/bin/sbin/update.sh b/mayor/bin/sbin/update.sh new file mode 100644 index 00000000..53735e6d --- /dev/null +++ b/mayor/bin/sbin/update.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +DIR=/var/mayor +REV="$DIR/www/include/config/rev.php" +PARENT="haladasi/haladasi haladasi/stat osztalyozo/diak osztalyozo/jegy osztalyozo/dolgozat bejegyzesek/bejegyzesek tanev/fogadoOra tanev/helyettesites tanev/munkaterv tanev/orarend intezmeny/valtas hianyzas/diak hianyzas/nap hianyzas/info uzeno/uzeno ertekeles/ertekeles hirnok/hirnok hirnok/hirnokFeliratkozas" +PUBLIC="tanev/orarend tanev/szabadTerem tanev/helyettesites" +WRITABLE="download/private/export download/private/osztalyozo download/private/nyomtatas/osztalyozo download/private/nyomtatas/haladasi" + +svn --force export https://blyck.vmg.sulinet.hu/svn/trunk/mayor-base/www /var/mayor/www/ +# svn --force export https://blyck.vmg.sulinet.hu/svn/trunk/mayor-keptar/www /var/mayor/www/ +# svn --force export https://blyck.vmg.sulinet.hu/svn/trunk/mayor-honosito/www /var/mayor/www/ +# svn --force export https://blyck.vmg.sulinet.hu/svn/trunk/mayor-portal/www /var/mayor/www/ +svn --force export https://blyck.vmg.sulinet.hu/svn/trunk/mayor-naplo/install/module-naplo/mysql /var/mayor/install/module-naplo/mysql +svn --force export http://blyck.vmg.sulinet.hu/svn/trunk/mayor-base/print /var/mayor/print +svn --force export http://blyck.vmg.sulinet.hu/svn/trunk/mayor-naplo/print /var/mayor/print +svn --force export http://blyck.vmg.sulinet.hu/svn/trunk/mayor-naplo/print /var/mayor/download +chown -R www-data.www-data /var/mayor/download +svn --force export http://blyck.vmg.sulinet.hu/svn/trunk/mayor-base/data/base /var/mayor/data/base +svn --force export https://blyck.vmg.sulinet.hu/svn/trunk/mayor-naplo/www /var/mayor/www/ | grep revision | cut -d ' ' -f 3 | uniq > $REV + +for f in $PARENT; do + ln -s $DIR/www/policy/private/naplo/$f-pre.php $DIR/www/policy/parent/naplo/$f-pre.php + ln -s $DIR/www/policy/private/naplo/$f.php $DIR/www/policy/parent/naplo/$f.php +done + +for f in $PUBLIC; do + ln -s $DIR/www/policy/private/naplo/$f-pre.php $DIR/www/policy/public/naplo/$f-pre.php + ln -s $DIR/www/policy/private/naplo/$f.php $DIR/www/policy/public/naplo/$f.php +done + +for f in $WRITABLE; do + chmod a+rwx $DIR/$f +done diff --git a/mayor/bin/tex2pdf.sh b/mayor/bin/tex2pdf.sh new file mode 100644 index 00000000..ee177b11 --- /dev/null +++ b/mayor/bin/tex2pdf.sh @@ -0,0 +1,24 @@ +#!/bin/bash +# +# A script segítségével tesztelhetjük, hogy mi történik, mikor a program a haladásinaplót, illetve osztályozónaplót generálja... +# +# Paraméter: a feldolgozandó UTF-8 kódolású TeX állomány "-u8.tex" végződés nélküli neve. +# + +. /etc/mayor/main.conf + +HOME="/tmp" +export HOME + +# Make sure this exists +# cd $BASEDIR/print/module-naplo/tex/ +# fmtutil-sys --cnffile $BASEDIR/print/module-naplo/tex/mayor.cnf --fmtdir $BASEDIR/print/module-naplo/ --byfmt mayor + +cat $1-u8.tex | recode u8..T1 > $1.tex + +tex -fmt $BASEDIR/print/module-naplo/tex/mayor $1.tex + +dvips $1.dvi + +ps2pdf -sPAPERSIZE=a4 -dAutoRotatePages=/None $1.ps + diff --git a/mayor/bin/update.sh b/mayor/bin/update.sh new file mode 100644 index 00000000..0be82608 --- /dev/null +++ b/mayor/bin/update.sh @@ -0,0 +1,227 @@ +#!/bin/bash + +OPT_SPEC="hes:lb:r::" +LONG_OPT_SPEC="http-server:,skip-lock,basedir:,backup-dir:,from-revision:,exec-only,help:" +PARSED_OPTIONS=$(getopt -n "$0" -a -o $OPT_SPEC --long $LONG_OPT_SPEC -- "$@") +OPTIONS_RET=$? + +eval set -- "$PARSED_OPTIONS" + +help_usage() { +cat <<EOF + +UPDATE használata: mayor update [opciók] [modulok] + +A parancs segítségével frissíthetjük a MaYoR rendszert, a program forrását és +az adatbázis-szerkezetet. A frissítések letöltése és kicsomagolása mellett +a szkript egyéb módosításokat is végrehajthat, ezért alapértelmezett működés +esetén a frissítés idejére letiltjuk a napló elérését. A zárolás a +/var/run/mayor.lock állomány létrehozásával történik. + +A HTTP szervert, a frissítendő modulokat, a szükséges jelszavak és egyéb beál- +lításokat a /etc/mayor/main.conf állományban kell megadni. + +Opciók: + -h, --help: A parancs leírása (amit most olvasol...) + -s, --http-server: A szerver ahonnan a frissítéseket letöltjük + -b, --basedir: A telepítési könyvtár + -l, --skip-lock: A frissítés idejére se zároljuk a program működését + -r, --from-revision: A frissítés indítása a megadott revision számtól - függetlenül a + jelenleg eltárolt aktuális számtól + -e, --exec-only: A frissítő szkriptek futtatása új állományok letöltése nélkül. + Csak a --from-revision opcióval együtt használható! + +Modulok: + A frissítendő modulok listája, pl: mayor-base mayor-naplo mayor-portal + +EOF +} + +if [ $OPTIONS_RET -ne 0 ]; then help_usage; exit; fi + +declare -i REV +while [ $# -ge 1 ]; do + case $1 in + --help | -h ) help_usage + exit + ;; + + --skip-lock | -l ) SKIPLOCK=1 + export SKIPLOCK + ;; + + --exec-only | -e ) EXECONLY=1 + export EXECONLY + ;; + + --http-server | -s ) shift + HTTP_SERVER="$1" + echo "HTTP szerver: $HTTP_SERVER" + ;; + + --basedir | -b ) shift + BASEDIR="$1" + echo "Alapkönyvtár: $BASEDIR" + ;; + + --from-revision | -r ) shift + REV="$1" + echo "Revision: $REV" + ;; + + -- ) 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 + +TMPMODS="" +while [ $# -ge 1 ]; do + if [[ ! "${MODS[*]}" =~ .*$1.* ]]; then + echo -e "Ismeretlen modul: $1" + else + TMPMODS="$1 $TMPMODS" + fi + shift +done +if [ "$TMPMODS" != '' ]; then + MODULES=$TMPMODS +fi + +########################### + + +if [ -z $UPDATEDIR ]; then + if [ -f ../config/update.conf ]; then + echo -e "\n\nWARNING: elavult konfigurációs állomány! (update.conf)" + echo " A frissítési rendszer a korábbi backup.conf és update.conf állományok helyett" + echo " egy új, rögzített helyen lévő állományt használ: /etc/mayor/main.conf" + echo " Most - ennek hiányában - a régebbi állományt használjuk" + . ../config/update.conf + else + echo -e "\n\nERROR: Hiányzó konfigurációs file: ../config/update.conf" + pwd + exit 10 + fi +fi + +# Ha paraméterknént nem volt megadva revision +if [ -z "${REV:-}" ]; then + if [ "$EXECONLY" == "1" ]; then + echo "Hiba: Az --exec-only kapcsoló csak a --from-revision paraméterrel együtt használható!" + exit 9 + fi + if [ -f $REVISION_FILE ]; then + REV=`cat $REVISION_FILE` + else + REV=0 + fi +fi + +echo -e "\n%%%%%%%%%%%%%%%%% $DATETIME %%%%%%%%%%%%%%%%%" +echo -e "\nFrissítés $REV számú változatról." + +if [ "$EXECONLY" != "1" ]; then + echo -e "\n * Az frissítéshez szükséges állományok letöltése (eltarthat pár percig)... " + + if [ "$MODULES" == '' ]; then + echo -e "\n\nERROR: Nincs megadva a frissítendő modulok listája (/etc/mayor/main.conf)!\n" + exit 1 + else + declare -i UJ_REV + if [ "$HTTP_SERVER" == '' ]; then + if [ -f $SVN ]; then + # frissítés SVN-ből + $SVN --force export https://svn.mayor.hu/svn/trunk/mayor-base/bin "$BASEDIR/bin" > /dev/null + for MODULE in $MODULES; do + echo -n " $MODULE... " + chmod +x $BASEDIR/bin/mayor + if [ $? != 0 ]; then exit 2; fi + UJ_REV=`$SVN --force export https://svn.mayor.hu/svn/trunk/$MODULE/update "$BASEDIR/update" | grep revision | cut -d ' ' -f 3 | uniq | sed -e 's/\.//g'` + if [ $? != 0 ]; then exit 3; fi + echo "kész." + done + else + echo -e "\n\nERROR: A subversion kliens nem található: $SVN" + exit 4 + fi + else + # Munkakönyvtár létrehozása + if [ ! -d $TMPDIR ]; then + mkdir $TMPDIR + chown -R 0:0 $TMPDIR + chmod -R 700 $TMPDIR + else + rm -rf $TMPDIR/* + fi + cd $TMPDIR + # Az md5sum állomány leszedáse + if [ -z $VERSION ]; then + wget "http://www.mayor.hu/download/md5sum" + else + wget "http://www.mayor.hu/download/$VERSION/md5sum" + if [[ ! $HTTP_SERVER =~ .*$VERSION.* ]]; then HTTP_SERVER="$HTTP_SERVER/$VERSION"; fi + fi + if [ $? != 0 ]; then exit 5; fi + UJ_REV=`grep Revision md5sum | cut -d ' ' -f 2` + if [ "$REV" -lt "$UJ_REV" ]; then + # csomagok leszedése + for MODULE in $MODULES; do + echo -n " $MODULE... " + MOD=`echo $MODULE | sed "s#/#-#"` + FILE=`grep "$MOD-rev" md5sum | cut -d ' ' -f 3` + if [ "$FILE" != '' ]; then + wget "$HTTP_SERVER/$FILE" + if [ $? != 0 ]; then + echo -e "\n\n ERROR: Az frissítés nem tölthető le: $FILE!\n" + exit 6 + fi + grep $FILE md5sum | md5sum -c --status + if [ $? == 0 ]; then + tar xfz $FILE -C $BASEDIR ./update + else + echo -e "\n\n ERROR: Az ellenörző összeg nem egyezik!\n" + exit 7 + fi + else + echo 'Nincs ilyen modul!' + exit 8 # nem szabad hiányzó csomagok mellett frissíteni!! + fi + done + fi + cd $BASEDIR/bin + fi + fi +else # exec-only + if [ -f $REVISION_FILE ]; then + UJ_REV=`cat $REVISION_FILE` + else + UJ_REV=0 # nem frissítünk semmit + fi +fi + +if [ "$REV" -ge "$UJ_REV" ]; then + echo -e "\nNincs újabb változat.\n" + echo -e "\n * A szükséges jogosultságok beállítása:" + chmod +x $BASEDIR/bin/mayor + echo 'kész.' +else + echo 'kész.' + . $BASEDIR/update/processUpdateScripts.sh +fi + +PWDTEX=`pwd` +echo -e "\nMaYoR TeX formátum állomány újragenerálása... " +cd $BASEDIR/print/module-naplo/tex/ && fmtutil-sys --cnffile $BASEDIR/print/module-naplo/tex/mayor.cnf --fmtdir $BASEDIR/print/module-naplo/ --byfmt mayor > /dev/null 2>&1 +echo -e "\nMaYoR XeTeX formátum állomány újragenerálása... " +cd $BASEDIR/print/module-naplo/xetex/ && fmtutil-sys --cnffile $BASEDIR/print/module-naplo/xetex/mayor-xetex.cnf --fmtdir $BASEDIR/print/module-naplo/ --byfmt mayor-xetex > /dev/null 2>&1 +cd $PWDTEX +echo 'kész.' + +echo -e "\nFrissítés vége.\n" +exit 0 diff --git a/mayor/bin/xetex2pdf.sh b/mayor/bin/xetex2pdf.sh new file mode 100644 index 00000000..a4f7bf3f --- /dev/null +++ b/mayor/bin/xetex2pdf.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# +# A script segítségével tesztelhetjük, hogy mi történik, mikor a program a haladásinaplót, illetve osztályozónaplót generálja +# __NYOMTATAS_XETEX===true beállítás mellett +# +# Paraméter: a feldolgozandó UTF-8 kódolású TeX állomány "-u8.tex" végződés nélküli neve. +# + +. /etc/mayor/main.conf + +HOME="/tmp" +export HOME + +# Make sure this exists +# cd $BASEDIR/print/module-naplo/tex/ +# fmtutil-sys --cnffile $BASEDIR/print/module-naplo/tex/mayor.cnf --fmtdir $BASEDIR/print/module-naplo/ --byfmt mayor + +cat <<EOF > $1.tex +%\font\kicsi=ecrm0500 +%\font\nagy=ecbx1200 +%\font\vastag=ecsx0800 +%\font\nagyss=ecsx1200 +%\font\normal=ecss0800 +%\font\dolt=ecsi0800 + +\font\kicsi="Linux Libertine O" at 5pt +\font\nagy="Linux Libertine O/B" at 12pt +\font\nagyss="Arial/B" at 12pt +\font\normal="Linux Biolinum O" at 8pt +\font\dolt="Linux Biolinum O/I" at 8pt +\normal + +EOF +cat $1-u8.tex >> $1.tex +xetex -fmt $BASEDIR/print/module-naplo/xetex/mayor-xetex $1.tex + diff --git a/mayor/update/processUpdateScripts.sh b/mayor/update/processUpdateScripts.sh new file mode 100644 index 00000000..47fbb23e --- /dev/null +++ b/mayor/update/processUpdateScripts.sh @@ -0,0 +1,259 @@ +#!/bin/bash + +source $BASEDIR/update/linkme.sh + +# Setting Mysql Connection Parameters +echo -e "[mysqld] +character-set-server = utf8 +collation-server = utf8_hungarian_ci +skip-character-set-client-handshake +[client] +host=$MYSQL_HOST +user=$MYSQL_USER +password=$MYSQL_PW +" > $BASEDIR/config/my.cnf +MYSQL_CONFIG="--defaults-extra-file=$BASEDIR/config/my.cnf" +MYSQL_PARAMETERS="" +TEST=`$MYSQL -h$MYSQL_HOST -u$MYSQL_USER -p$MYSQL_PW -e exit 2>&1 >/dev/null` +if [ $? == "0" ]; then + echo "SQL-connect test #2 OK" + MYSQL_PARAMETERS="-h$MYSQL_HOST -u$MYSQL_USER -p$MYSQL_PW" +else + echo "Hibás SQL csatlakozás(2)" +fi +TEST=`$MYSQL $MYSQL_CONFIG -e exit 2>&1 >/dev/null` +if [ $? == "0" ]; then + echo "SQL-connect test #1 OK" + MYSQL_PARAMETERS=$MYSQL_CONFIG +else + echo "Hibás SQL csatlakozás(1)" +fi +echo "Karakterkódolás ellenőrzése" +echo "SHOW VARIABLES LIKE 'character%';" | $MYSQL $MYSQL_PARAMETERS +# patch by Acsai Gabor <acsi@c3.hu> - FreeBSD +TEST=`echo "SHOW VARIABLES LIKE 'character_set_client'" | $MYSQL $MYSQL_PARAMETERS | grep utf8 | wc -l | tr -d " "` +if [ "x${TEST}" == "x1" ]; then + echo "SQL-UTF8 test OK" +else + echo -e "\n\nERROR: Hibás - nem utf8 - MySQL kliens karakterkódolás!\n" + echo -e "Ellenőrizd a beállításokat és kérj segítséget a support@mayor.hu -n!\n" + exit 12 +fi +# -- + +run_script() { + FILEELEJE=`echo $FILE | cut -f 1 -d '-'` + FILEREV=${FILEELEJE: -6} + LOGSQL="" + if [ "$FILEREV" != "" ]; then + if [ "$FILEREV" -gt 3399 ]; then + LOGSQL="INSERT IGNORE mayorUpdateLog (scriptFile) VALUES ('${FILE}')" + fi + fi + if [ ! "${FILEREV}" \< "${REVSTR}" ]; then + FILEEXT=`echo $FILE | cut -f 2 -d '.'` + if [ "$FILEEXT" == "sh" ]; then + echo " - Szkript futtatása ($FILE)..." + . $FILE + if [ $? != 0 ]; then exit 13; fi + elif [ "$FILEEXT" == "sql" ]; then + echo " - SQL utasítások végrehajtása ($FILE)..." + FILEDB=`echo $FILE | cut -f 1 -d '.' | cut -f 3 -d '-'` + case "$FILEDB" in + naplo) + DBS=$DB_NAPLO + ;; + intezmeny) + DBS=$DB_INTEZMENY + ;; + auth) + DBS=$DB_AUTH + ;; + *) + DBS=$FILEDB + ;; + esac + for DB in $DBS; do + echo -e "\n $DB..." + + if [ "$FILEREV" != "" ]; then + if [ "$FILEREV" -gt 3399 ]; then + TEST=`echo "SELECT count(*) as db FROM information_schema.TABLES WHERE TABLE_SCHEMA='${DB}' and TABLE_NAME='mayorUpdateLog'" | $MYSQL $MYSQL_PARAMETERS $DB | grep -v "db"` + if [ "$TEST" == "0" ]; then + echo " Hiányzik a mayorUpdateLog tábla... tovább..." + continue + fi + fi + fi + + case "$FILEDB" in + naplo) + INTEZMENYDB=`echo $DB | sed -e 's/\(naplo_\)\(.*\)\(_.*\)/intezmeny_\2/'` + INTEZMENYROVIDNEV=`echo $DB | cut -f 2 -d '_'` + TANEV=`echo $DB | cut -f 3 -d '_'` + (cat $FILE && echo "${LOGSQL}") | sed -e "s/%INTEZMENYDB%/$INTEZMENYDB/g" | sed -e "s/%INTEZMENY%/$INTEZMENYROVIDNEV/g" | \ + sed -e "s/%TANEV%/$TANEV/g" | $MYSQL $MYSQL_PARAMETERS $DB + ;; + auth) + (cat $FILE && echo "${LOGSQL}") | sed -e "s/%MYSQL_ENCODE_STR%/$MYSQL_ENCODE_STR/g" | $MYSQL $MYSQL_PARAMETERS $DB + ;; + intezmeny) + INTEZMENYROVIDNEV=`echo $DB | cut -f 2 -d '_'` + (cat $FILE && echo "${LOGSQL}") | sed -e "s/%INTEZMENY%/$INTEZMENYROVIDNEV/g" | $MYSQL $MYSQL_PARAMETERS $DB + ;; + *) + (cat $FILE && echo "${LOGSQL}") | $MYSQL $MYSQL_PARAMETERS $DB + ;; + esac + if [ $? != 0 ]; then + exit 13; + fi + done + [ ! -z $SQLLOG ] && echo $FILE >> $SQLLOG; + fi + fi +} + +echo " Az új változat verziószáma: $UJ_REV" + +REVSTR=`printf "%06d" $REV` +MYSQL_ENCODE_STR=`grep _MYSQL_ENCODE_STR $BASEDIR/config/main-config.php | sed -e "s/define('_MYSQL_ENCODE_STR','\(.*\)');/\\1/"` + +# mysql host beállítása +if [ "$MYSQL_HOST" == "" ]; then + MYSQL_HOST="localhost" +fi +echo " A MySQL backend a következő lesz: $MYSQL_HOST" +echo " Figyelem! MySQL Master-Slave architekturát az upgrade script jelenleg nem támogat!!!" + +echo -e "\n * Adatbázisok lekérdezése..." +if [ -f $MYSQL ] +then + DB_MAYOR=`$MYSQL $MYSQL_PARAMETERS -e"SHOW DATABASES LIKE 'mayor\_%'" | grep -e '^mayor\_[^_]*$'` + DB_NAPLO=`$MYSQL $MYSQL_PARAMETERS -e"SHOW DATABASES LIKE 'naplo\_%\_%'" | grep -e '^naplo\_[^\_]*\_20[0-9][0-9]$'` + DB_INTEZMENY=`$MYSQL $MYSQL_PARAMETERS -e"SELECT CONCAT('intezmeny_',rovidNev) FROM mayor_naplo.intezmeny" | grep -e '^intezmeny\_[^\_]*$'` +# DB_INTEZMENY=`$MYSQL $MYSQL_PARAMETERS -e"SHOW DATABASES LIKE 'intezmeny\_%'" | grep -e '^intezmeny\_[^\_]*$'` + if [ $? != 0 ]; then exit 12; fi + DB_AUTH="" + for DB in $DB_MAYOR; do + if [ "$DB" == "mayor_parent" -o "$DB" == "mayor_private" -o "$DB" == "mayor_public" ]; then + DB_AUTH="$DB_AUTH $DB" + fi + done +else + echo -e "\n\nERROR: A mysql kliens nem található: $MYSQL\n" + exit 12 +fi + +if [ "$SKIPLOCK" != "1" ]; then + if [ ! -z $LOCKFILE ]; then + echo -e "\n * A web-es elérés letiltása:" + echo -n " - Lock-file létrehozása... " + echo "$DATE: Update process runing... " > $LOCKFILE + echo "kész." + + echo -n " - Aktív munkamenetek törlése... " + $MYSQL $MYSQL_PARAMETERS -e"DELETE FROM mayor_login.session" + echo "kész." + fi +else + echo -e "\n * A lock-olást a kérésedre kihagyjuk..." +fi + +echo -e "\n * Az előzetes frissítő állományok feldolgozása (pre*, rev*):\n" +for FILE in `ls $UPDATEDIR/rev* $UPDATEDIR/pre* | sort`; do + run_script +done + +if [ "$EXECONLY" != "1" ]; then + echo -e "\n * A modulok állományainak frissítése:\n" + for MODULE in $MODULES; do + echo -e "\n $MODULE... \n" + if [ "$HTTP_SERVER" == '' ]; then + $SVN --force --quiet export https://svn.mayor.hu/svn/trunk/$MODULE "$BASEDIR" + if [ $? != 0 ]; then exit 13; fi + else + # Ha rpm csomag futtatja, akkor már ki van csomagolva minden és nincs md5sum + if [ -f $TMPDIR/md5sum ]; then + MOD=`echo $MODULE | sed "s#/#-#"` + FILE=`grep "$MOD-rev" $TMPDIR/md5sum | cut -d ' ' -f 3` + if [ -f $TMPDIR/$FILE ]; then + tar xfz $TMPDIR/$FILE -C $BASEDIR + if [ $? != 0 ]; then exit 13; fi + fi + fi + fi + done + if [ -d $TMPDIR ]; then rm -rf $TMPDIR; fi + echo -e "\nkész.\n" +fi + +echo -e "\n * Az utólagos frissítő állományok feldolgozása (post*):\n" +for FILE in `ls $UPDATEDIR/post* | sort`; do + run_script +done + + +if [ -e $LOCKFILE ]; then + if [ ! -z $LOCKFILE ]; then + echo -e "\n * A web-es hozzáférés engedélyezése:" + rm $LOCKFILE + fi +fi + +if [ "$EXECONLY" != "1" ]; then + echo -e "\n * A szükséges jogosultságok beállítása:" + chmod +x $BASEDIR/bin/mayor + echo -n " ... " + chown -R $WEB_SERVER_USER $BASEDIR/download + chown -R $WEB_SERVER_USER $BASEDIR/cache + if [ -d $BASEDIR/www/wiki/conf ]; then + chown -R $WEB_SERVER_USER $BASEDIR/www/wiki/conf $BASEDIR/www/wiki/data + fi + chown $WEB_SERVER_USER $BASEDIR/config + chmod 700 $BASEDIR/config + echo -e "... kész.\n" + + echo -e "\n * Szimbolikus linkek ellenőrzése/létrehozása" + POLICIES="parent public" + for POLICY in $POLICIES; do + eval "LIST=\$${POLICY}Link" + for f in $LIST; do + DIR=`echo $f | cut -d / -f 1-2` + if [ ! -d $BASEDIR/www/policy/$POLICY/$DIR ]; then + echo " Könyvtár: $BASEDIR/www/policy/$POLICY/$DIR" + mkdir -p $BASEDIR/www/policy/$POLICY/$DIR + fi + FILES="$f-pre.php $f.php" + for file in $FILES; do + if [ ! -e $BASEDIR/www/policy/$POLICY/$file ]; then + if [ -f $BASEDIR/www/policy/private/$file ]; then + echo " $BASEDIR/www/policy/private/$file --> $BASEDIR/www/policy/$POLICY/$file" + ln -s $BASEDIR/www/policy/private/$file $BASEDIR/www/policy/$POLICY/$file + else + echo " Hiányzó file: $BASEDIR/www/policy/private/$file" + fi + fi + done + done + eval "DLIST=\$${POLICY}Deny" + for f in $DLIST; do + FILES="$f-pre.php $f.php" + for file in $FILES; do + if [ -e $BASEDIR/www/policy/$POLICY/$file ]; then + echo " $BASEDIR/www/policy/$POLICY/$file link(file) törlése" + rm "$BASEDIR/www/policy/$POLICY/$file" + fi + done + done + done +fi # execonly + +echo -e "\n * Az frissített verziószám rögzítése ($UJ_REV)" +if [ "$UJ_REV" -gt 0 ]; then + echo $UJ_REV > $REVISION_FILE +else + echo " Hibás (nulla) verziószám! Nem rögzítjük." +fi + +[ -x "$LOCAL_UPDATE_SCRIPT" ] && echo -e "\n * Helyi szkript futtatása: $LOCAL_UPDATE_SCRIPT...\n " && . "$LOCAL_UPDATE_SCRIPT" |