Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:fschuett
oss-moodle
oss-moodleconfig
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File oss-moodleconfig of Package oss-moodle
#!/bin/bash # # Copyright (c) 2012-2021 Frank Schuette fschuett@gymhim.de # All rights reserved. # # # check if we are started as root # only one of UID and USER must be set correctly # if test "$UID" != 0 -a "$USER" != root; then echo "You must be root to start $0." exit 1 fi if test ! -x /usr/bin/sudo; then echo "You need /usr/bin/sudo for $0." exit 1 fi if test ! -x /usr/bin/php; then echo "You need /usr/bin/php to start $0." exit 1 fi r="$ROOT" patchFile(){ file=$1 [ "$file" == "" ] && return; sed \ -e "s/#MOODLE_EXT_ADDRESS#/$MOODLE_EXT_ADDRESS/g;" \ -e "s/#CRANIX_DOMAIN#/$CRANIX_DOMAIN/g;" \ -e "s/#CRANIX_BASEDN#/$CRANIX_BASEDN/g;" \ -e "s/#CRANIX_NAME#/$CRANIX_NAME/g;" \ -e "s/#CRANIX_COUNTRY#/$CRANIX_COUNTRY/g;" \ -e "s/#CRANIX_CCODE#/$CRANIX_CCODE/g;" \ -e "s/#CRANIX_CITY#/$CRANIX_CITY/g;" \ -e "s/#CRANIX_NETBIOSNAME#/$CRANIX_NETBIOSNAME/g;" \ -e "s/#CRANIX_SERVER#/$CRANIX_SERVER/g;" \ -e "s/#CRANIX_PROXY#/$CRANIX_PROXY/g" \ -i $file } # $1 file name to edit in place # $2 lines to insert into file # $3 marker to insert before # insertLines(){ local FILE=$1 local LCB="# oss-moodle-BEGIN" local LCE="# oss-moodle-ENDE" local LINES="$2" local MARKER="$3" [ -z "${MARKER}" ] && MARKER="# End of file" sed -e "/$LCB/,/$LCE/ d" -i $FILE if grep -q "^${MARKER}" $FILE; then LINES=$(echo "${LINES}"| sed '{:a;N;$!ba;s/\n/\\\n/g;}') sed " /^${MARKER}.*/ { i\ ${LCB}\n\ ${LINES}\n\ ${LCE} }" -i $FILE else echo "$LCB" >>$FILE echo "$LINES" >>$FILE echo "$LCE" >>$FILE echo "$MARKER" >>$FILE fi } # # load config files # ossmoodlesysconf="$r/etc/sysconfig/oss-moodle" test -f $ossmoodlesysconf || { echo "ERROR - can not find $ossmoodlesysconf!!" echo "This should not happen. Exit..." exit 1 } . $ossmoodlesysconf osssysconf="$r/etc/sysconfig/cranix" test -f $osssysconf || { echo "ERROR - can not find $osssysconf!!" echo "This should not happen. Exit..." exit 1 } . $osssysconf moodledist="$r/usr/share/oss-moodle/config/dist.conf" test -f $moodledist || { echo "ERROR - can not find $moodledist!!" echo "This should not happen. Exit..." exit 1 } . $moodledist ossmoodleconf="$r/etc/oss-moodle/config.php" if [ -e $ossmoodleconf ] then MOODLE_EXT_ADDRESS_OLD=$(cat $ossmoodleconf|sed 's/'\''//g'|sed -n 's/^\$CFG->wwwroot[[:space:]]*=[[:space:]]*https:\/\/\(.*\);$/\1/p') # fetch moodle db password from old config.php pattern="^([[:space:]]*[^#].*->dbpass[[:space:]]*=[[:space:]]*')([^']*)('.*)" while read line; do [[ $line =~ $pattern ]] || continue; randompw="${BASH_REMATCH[2]}" break; done < $ossmoodleconf; fi if [ -z "$MOODLE_EXT_ADDRESS" -a -n "$CRANIX_DOMAIN" ]; then MOODLE_EXT_ADDRESS=www.${CRANIX_DOMAIN} fi cp $ossmoodleconf.in $ossmoodleconf patchFile $ossmoodleconf # set absolute path for db_replace utility echo "Setting absolute path for config.php into db_replace.php." sed -e "/^[[:space:]]*[^#]*config.php/s#\$CFG->dirroot#\'$MOODLEDIR\'#" -i $r$MOODLEDIR/admin/cli/db_replace.php # Care about the repository - disabled: Hamburg has destroyed file system #if [ -d $r$MOODLEFILEDIR ]; then # # set the owner and change rights accordingly # chown -R wwwrun:www $r$MOODLEFILEDIR # chmod 0755 $r$MOODLEFILEDIR #fi # moodle user and db existing ? MOODLEUSER="$(echo "SELECT 1 FROM mysql.user WHERE User='moodle' and Host='localhost';"|mysql -N)" if [ "$MOODLEUSER" == "" ]; then # create new user echo "CREATE USER 'moodle'@'localhost' IDENTIFIED BY 'password';"|mysql -N fi MOODLEDB="$(echo "SHOW DATABASES;"|mysql -N |grep ^moodle$)" if [ "$MOODLEDB" == "" ]; then echo "CREATE DATABASE 'moodle' CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;"|mysql -N echo "GRANT ALL PRIVILEGES ON moodle.* TO 'moodle'@'localhost';"|mysql -N echo "FLUSH PRIVILEGES;"|mysql -N fi # create random password [ -n "$randompw" ] || randompw=`pwgen -s 8 1` # patch dbpass & admin login sed -e "s/\$CFG->dbpass =.*/\$CFG->dbpass = \'$randompw\';/" -i $ossmoodleconf if [ "$MOODLEUSER" == "" ]; then # set random password for db access echo "ALTER USER 'moodle'@'localhost' IDENTIFIED BY '$randompw';"|mysql -N fi # create upload virus quarantine dir [ -d $r${MOODLEFILEDIR}/quarantine ] || mkdir -p $r${MOODLEFILEDIR}/quarantine chown wwwrun:www $r${MOODLEFILEDIR}/quarantine # wwwroot tweak [ -L $r${MOODLEDIR}/moodle ] || ln -s . $r${MOODLEDIR}/moodle # secure permissions of config.php chown root:www $ossmoodleconf chmod 440 $ossmoodleconf # check config.php link if [ ! -L $r${MOODLEDIR}/config.php ]; then [ -e $r${MOODLEDIR}/config.php ] && rm -rf $r${MOODLEDIR}/config.php pushd $r ln -s ${MOODLESYSCONFDIR}/config.php ${MOODLEDIR}/config.php popd fi if [ "$MOODLEDB" == "" ]; then # create random password randomadminpw=`pwgen -s 8 1` echo wwwadmin:${randomadminpw} >$r/etc/oss-moodle.secrets chmod 600 $r/etc/oss-moodle.secrets chown root.root $r/etc/oss-moodle.secrets sudo -u wwwrun /usr/bin/php $r${MOODLEDIR}/admin/cli/install_database.php \ --lang=$(echo ${CRANIX_CCODE}|tr '[:upper:]' '[:lower:]') \ --adminuser=wwwadmin --adminpass=${randomadminpw} --agree-license --fullname="${CRANIX_NAME}" \ --shortname="${CRANIX_NETBIOSNAME}" # unset random admin password unset randomadminpw cp $r/usr/share/oss-moodle/moodle_install.sql.in $r/usr/share/oss-moodle/moodle_install.sql patchFile $r/usr/share/oss-moodle/moodle_install.sql mysql --default-character-set=utf8 -u moodle --password=$randompw moodle <$r/usr/share/oss-moodle/moodle_install.sql fi # put into maintenance mode sudo -u wwwrun /usr/bin/php $r${MOODLEDIR}/admin/cli/maintenance.php --enable # upgrade database sudo -u wwwrun /usr/bin/php $r${MOODLEDIR}/admin/cli/upgrade.php --non-interactive # update settings cp $r/usr/share/oss-moodle/moodle_update.sql.in $r/usr/share/oss-moodle/moodle_update.sql patchFile $r/usr/share/oss-moodle/moodle_update.sql mysql --default-character-set=utf8 -u moodle --password=$randompw moodle <$r/usr/share/oss-moodle/moodle_update.sql # unset random pw unset randompw # update school ext name if [ -n "$MOODLE_EXT_ADDRESS" -a -n "$MOODLE_EXT_ADDRESS_OLD" -a "$MOODLE_EXT_ADDRESS" != "$MOODLE_EXT_ADDRESS_OLD" ]; then echo -n "Replacing $MOODLE_EXT_ADDRESS_OLD with $MOODLE_EXT_ADDRESS in moodle db..." /usr/bin/sudo -u wwwrun /usr/bin/php $r${MOODLEDIR}/admin/cli/db_replace.php --search="$MOODLE_EXT_ADDRESS_OLD" --replace="$MOODLE_EXT_ADDRESS" 2>&1 >/dev/null echo "finished." fi # leave maintenance mode sudo -u wwwrun /usr/bin/php $r${MOODLEDIR}/admin/cli/maintenance.php --disable
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor