diff options
Diffstat (limited to 'adei/scripts')
-rwxr-xr-x | adei/scripts/adei-branch.sh | 51 | ||||
-rwxr-xr-x | adei/scripts/configure.sh | 9 | ||||
-rwxr-xr-x | adei/scripts/log.sh | 54 | ||||
-rw-r--r-- | adei/scripts/override.sed | 19 | ||||
-rwxr-xr-x | adei/scripts/run-apache.sh | 40 | ||||
-rwxr-xr-x | adei/scripts/run-cron.sh | 7 |
6 files changed, 180 insertions, 0 deletions
diff --git a/adei/scripts/adei-branch.sh b/adei/scripts/adei-branch.sh new file mode 100755 index 0000000..6fa8db2 --- /dev/null +++ b/adei/scripts/adei-branch.sh @@ -0,0 +1,51 @@ +#! /bin/bash + +function branch { + url="$1" + bzr branch "$url" +} + +if [ ! -d /adei/src -o ! -d /adei/tmp -o ! -d /adei/sys -o ! -d /adei/cfg ]; then + echo "Incorrect volume configration, we expect /adei folder with populated docker volumes" + exit 1 +fi + + +if [ ! -f /adei/src/VERSION ]; then + bzr branch -r $ADEI_REVISION --use-existing-dir http://darksoft.org/bzr/adei/trunk/ /adei/src + ( + cd /adei/src + make + + [ -d tmp ] && rm tmp + ln -s ../tmp tmp + chmod 0777 /adei/tmp + + # Additional setups are clonned based on the environment for adei container creation + # but can be easily added in future. We cache all non-excluded setups. The .exclude + # file is removed afterwards from all + + if [ ! -f /adei/cfg/config.actual.php ]; then + + cp -a /opt/configs/config.*.php /adei/cfg/ + fi + + ln -s ../cfg/config.actual.php config.actual.php + ln -s ../cfg/config.override.php config.override.php + ) +fi + +( + cd /adei/src + for setup in $ADEI_ENABLED_SETUPS $ADEI_SETUP; do + if [[ ! -a setups/$setup ]]; then + if [[ ! -a /adei/cfg/$setup ]]; then + ( + cd /adei/cfg/ + branch "http://darksoft.org/bzr/adei/setups/$setup" + ) + fi + ln -s ../../cfg/$setup setups/$setup + fi + done +) diff --git a/adei/scripts/configure.sh b/adei/scripts/configure.sh new file mode 100755 index 0000000..88b48fc --- /dev/null +++ b/adei/scripts/configure.sh @@ -0,0 +1,9 @@ +#! /bin/bash + +chmod 0777 /adei/tmp + +sed -i'' -re 's/^.*pam_loginuid\.so.*$//' /etc/pam.d/crond + +sed -i'' -re 's/APACHE_MODULES="(.*)"/APACHE_MODULES="\1 php5 rewrite proxy mod_proxy_http access_compat"/' /etc/sysconfig/apache2 +sed -i'' -rf /opt/scripts/override.sed /etc/apache2/default-server.conf +sed -i'' -re 's/short_open_tag\s*=.*/short_open_tag = On/' /etc/php5/apache2/php.ini diff --git a/adei/scripts/log.sh b/adei/scripts/log.sh new file mode 100755 index 0000000..4237682 --- /dev/null +++ b/adei/scripts/log.sh @@ -0,0 +1,54 @@ +#! /bin/bash + +max_age=10 +max_mails=10 +log_lines=50 + +cur=`date +%s` +since=$(($cur - $max_age * 60)) + +echo "Apache error log" +echo "================" +tail -n $log_lines /var/log/apache2/error_log | perl -MDateTime::Format::Strptime -F';' -ane ' + my $parser = DateTime::Format::Strptime->new( + pattern => "%a %b %d %H:%M:%S.%N %Y" + ); + my $formater = DateTime::Format::Strptime->new( + pattern => "%s" + ); + if (/^\[([^]]+)\]/) { + $last = $formater->format_datetime($parser->parse_datetime($1)); + } elsif ($last !~ /\d+/) { + $last = 0; + } + print "$last $_\n"; +' | awk "{ if (\$1 > $since) print \$0 }" | cut -d ' ' -f 2- +echo +echo + + +mails=`mailutil check | cut -d ' ' -f 6` +if [ "$mails" == "in" ]; then + mails=`mailutil check | cut -d ' ' -f 4` +fi + +if [ $mails -gt 0 ]; then + [ $mails -gt $max_mails ] && mails=$max_mails + + cur=`date -u +%s` + for id in `seq $mails -1 1`; do + mail=$(($mails - $id + 1)) + + lastmail=`echo "type $mail" | mailx -R "" -N` + dt=`echo "$lastmail" | grep "From" | head -n 1 | cut -d ' ' -f 3-` + last=`date -u --date "$dt" +%s` + since=$((($cur - $last) / 60)) + if [ $since -le $max_age ]; then + echo "Cron reports on$dt" + echo "========================================" + echo "$lastmail" | sed -e '1,/^$/d' | head -n 10 + echo + echo + fi + done +fi diff --git a/adei/scripts/override.sed b/adei/scripts/override.sed new file mode 100644 index 0000000..7b96a5b --- /dev/null +++ b/adei/scripts/override.sed @@ -0,0 +1,19 @@ +\,<Directory "/srv/www/htdocs">, { + :loop + + \,</Directory>, { + b exit + } + + s/^(\s*Options|\s*AllowOverride).*/\1 All/ + n + + b loop +} +\,/adei/cfg/apache.conf, { + $ ! d +} +\,/adei/cfg/apache.conf, ! { + $aInclude /adei/cfg/apache.conf +} +:exit diff --git a/adei/scripts/run-apache.sh b/adei/scripts/run-apache.sh new file mode 100755 index 0000000..3ad9d5f --- /dev/null +++ b/adei/scripts/run-apache.sh @@ -0,0 +1,40 @@ +#! /bin/bash + +if [ ! -f /adei/cfg/apache.conf ]; then + cp -a /opt/configs/apache* /adei/cfg +fi + +sed -i'' -re '/Listen/ { /(80|443)/!d }' /etc/apache2/listen.conf +if [ -n "$ADEI_PORTS" ]; then + for port in $ADEI_PORTS; do + [ $port -eq 80 ] && continue + [ $port -eq 443 ] && continue + + echo "Listen $port" >> /etc/apache2/listen.conf + done +fi + +if [ -n "$APACHE_SERVERS" -a "$APACHE_SERVERS" -ne 0 ]; then + if [ $APACHE_SERVERS -eq 1 ]; then + start=1 + limit=1 + min_spare=1 + max_spare=1 + elif [ $APACHE_SERVERS -lt 10 ]; then + start=$(($APACHE_SERVERS / 2)) + limit=$APACHE_SERVERS + min_spare=$start + max_spare=$limit + else + start=0 + limit=$APACHE_SERVERS + min_spare=0 + max_spare=0 + fi + [ $start -eq 0 ] || sed -i'' -re "s/StartServers(.*)/StartServers $start/" /etc/apache2/server-tuning.conf + [ $limit -eq 0 ] || sed -i'' -re "s/MaxClients(.*)/MaxClients $limit/" /etc/apache2/server-tuning.conf + [ $min_spare -eq 0 ] || sed -i'' -re "s/MinSpareServers(.*)/MinSpareServers $min_spare/" /etc/apache2/server-tuning.conf + [ $max_spare -eq 0 ] || sed -i'' -re "s/MaxSpareServers(.*)/MaxSpareServers $max_spare/" /etc/apache2/server-tuning.conf +fi + +/usr/sbin/apache2ctl start -D FOREGROUND diff --git a/adei/scripts/run-cron.sh b/adei/scripts/run-cron.sh new file mode 100755 index 0000000..5f4b9e2 --- /dev/null +++ b/adei/scripts/run-cron.sh @@ -0,0 +1,7 @@ +#! /bin/bash + +printenv | grep -v affinity:container | sed -r 's/^(.*)=("?)(.*)\2$/export \1="\3"/g' > /adei/env + +/opt/scripts/adei-branch.sh + +cron -n -m '/usr/bin/procmail -d root' |