From bbeb3bc53067e45c433232a46eb234721ff45652 Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Thu, 5 Dec 2002 04:20:19 +0000 Subject: Respect /etc/mailname (but still fallback to hostname -d. Make use of wwwconfig-common scripts if available. Look for root and user MySQL password in /root/.my.cfg. Install locale and template tarballs. Load overrides to defaults from /etc/local/localezcreate.conf. Shorten output lines when invoking --help. Add demo data as root, not user. Use shell constructs to check values, instead of test. --- localezcreate | 173 +++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 123 insertions(+), 50 deletions(-) (limited to 'localezcreate') diff --git a/localezcreate b/localezcreate index badde13..d06fb57 100755 --- a/localezcreate +++ b/localezcreate @@ -3,112 +3,184 @@ # /usr/local/sbin/localezcreate # Copyright 2001-2002 Jonas Smedegaard # -# $Id: localezcreate,v 1.12 2002-10-22 03:30:39 jonas Exp $ +# $Id: localezcreate,v 1.13 2002-12-05 04:20:19 jonas Exp $ # # Create local eZ Publish site # +# This script makes use of the Debian package wwwconfig-common if installed set -e # Defaults -defaultmaildomain=`hostname -d` -defaultdomain="ez.$defaultmaildomain" +pkg="ezpublish" +srcdir="/usr/src/ezpublish" +sqldir="/usr/share/ezpublish/sql" +bindir="/usr/share/ezpublish/bin" +tarballs="lib data tpl www" +sqlfile="publish_mysql.sql" +sqlfile2="data_mysql.sql" +defaultmaildomain=`cat /etc/mailname 2> /dev/null || hostname -d` +defaultdomain="ez."`hostname -d` defaultuid="www-data" +dbserver="localhost" +dballow="$dbserver" +template_tarballs="" +language_tarballs="en_GB en_GB_org" +if [ -e /etc/local/localezcreate.conf ]; then + . /etc/local/localezcreate.conf +fi # Input dbuser="$1" host="$2" fqdn="$3" -db="$4" +dbname="$4" mailuser="$5" maildomain="$6" uid="$7" gid="$8" -dbpasswd="$9" +dbpass="$9" + if [ $# \< 2 -o $# \> 9 ]; then - echo "\$#: $#" - echo "Usage: `basename $0` dbuser host [fqdn [db [mailuser [maildomain [ uid [ gid [dbpasswd ]]]]]]]" + echo "Usage: `basename $0` dbuser host [fqdn [dbname [mailuser [maildomain" + echo " [ uid [ gid [dbpass ]]]]]]]" echo echo " dbuser: MySQL database user" - echo " host: hostname (and only that - no dots!)" - echo " fqdn: Fully qualified domain name (default here is .$defaultdomain)" - echo " db: MySQL database name" - echo " mailuser: User part of mail address (default is )" - echo " maildomain: Domain part of mail address (default here is $defaultmaildomain)" - echo " uid: System user id (default is $defaultuid)" - echo " gid: System group id (default is " - echo " dbpasswd: MySQL database password (default is to ask for it)" + echo " host: hostname (without domain - no dots!)" + echo " fqdn: Complete domain name (default: .$defaultdomain)" + echo " dbname: MySQL database name (default: ez_2_2_)" + echo " mailuser: User part of mail address (default: )" + echo " maildomain: Domain part of mail address (default: $defaultmaildomain)" + echo " uid: System user id (default: $defaultuid)" + echo " gid: System group id (default: " + echo " dbpass: MySQL password (default: attempt to resolve or ask)" + echo + echo " dbpass resolving is done by looking in file $HOME/.my.cnf of ." echo echo " Example: `basename $0` bilbo news news.forum.com" exit 1 fi -# Attempt to find MySQL root password -if [ -f /root/.my.cnf ]; then - dbrootpw=$(grep password /root/.my.cnf | awk -F= '{print $2}' | head -1 | sed 's/^ //g') -else +# Attempt to figure out dbadmin and dbadmpass, else ask for them +if [ -e /usr/share/wwwconfig-common/mysql-localadmpass.get -a "$dbserver" = "localhost" ] ; then + status="" + . /usr/share/wwwconfig-common/mysql-localadmpass.get + if [ "$status" = "error" ] ; then + echo "$error" + fi +fi +if [ -z "$dbadmpass" ]; then + echo -n "Enter MySQL administrator (usually root): " + read -s dbadmin + echo echo -n "Enter MySQL root password: " - read -s dbrootpw + read -s dbadmpass echo fi -pkg="ezpublish" -srcdir="/usr/src/ezpublish" -sqldir="/usr/share/ezpublish/sql" -bindir="/usr/share/ezpublish/bin" -tarballs="lib data tpl www" -sqlfile="publish_mysql.sql" -sqlfile2="data_mysql.sql" - -[ "x$uid" == "x" ] && uid="$defaultuid" -gid="$uid" -[ "x$fqdn" == "x" ] && fqdn="$host.$defaultdomain" -[ "x$db" == "x" ] && db="ez_2_2_$host" -[ "x$mailuser" == "x" ] && mailuser="$uid" -[ "x$maildomain" == "x" ] && maildomain="$defaultmaildomain" -if [ "x$dbpasswd" == "x" ]; then - echo -n "Enter MySQL password for $dbuser: " - read -s dbpasswd - echo -fi +uid=${uid:-$defaultuid} +gid=${gid:-$uid} +fqdn=${fqdn:-$host.$defaultdomain} +dbname=${dbname:-ez_2_2_$host} +mailuser=${mailuser:-$uid} +maildomain=${maildomain:-$defaultmaildomain} home=`getent passwd $uid | awk -F: '{print $6}';` -basedir="$home/web_$fqdn" +if [ -z "$dbpass" ]; then + if [ -f $home/.my.cnf ]; then + dbpass=$(grep password $home/.my.cnf | awk -F= '{print $2}' | head -1 | sed 's/^ //g') + fi + if [ -z "$dbpass" ]; then + echo -n "Enter MySQL password for $uid: " + read -s dbpass + echo + fi +fi +basedir="$home/webphpsites/$fqdn" adminhost="admin.$fqdn" adminbasedir="$basedir/admin" webcfg="/etc/apache/vhosts.d/$fqdn" -#TODO: Make sure $basedir, $db, $dbuser and $webcfg doesn't exist +#TODO: Make sure $basedir, $dbname, $dbuser and $webcfg doesn't exist if [ "$(basename $0)" = "${pkg}betarecreate" ]; then - mysqladmin -uroot -p$dbrootpw drop $db + mysqladmin -u$dbadmin -p$dbadmpass drop $dbname rm -rf $basedir fi -echo "Creating database $db" -mysqladmin -uroot -p$dbrootpw create $db -echo "GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX ON $db.* TO '$dbuser'@localhost IDENTIFIED BY '$dbpasswd';" | mysql -uroot -p$dbrootpw +echo "Creating database $dbname" +if [ -e /usr/share/wwwconfig-common/mysql-createdb.sh ] ; then + status="" + . /usr/share/wwwconfig-common/mysql-createdb.sh + if [ "$status" = "error" ] ; then + echo "$error" + exit 1 + fi +else + mysqladmin -u$dbadmin -p$dbadmpass create $dbname +fi +if [ -e /usr/share/wwwconfig-common/mysql-createuser.sh ] ; then + status="" + . /usr/share/wwwconfig-common/mysql-createuser.sh + if [ "$status" = "error" ] ; then + echo "$error" + exit 1 + fi + echo "GRANT INDEX ON $dbname.* TO '$dbuser'@localhost IDENTIFIED BY '$dbpass';" | mysql -u$dbadmin -p$dbadmpass +else + echo "GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX ON $dbname.* TO '$dbuser'@localhost IDENTIFIED BY '$dbpass';" | mysql -u$dbadmin -p$dbadmpass +fi echo "Inject initial data into database" -cat $sqldir/$sqlfile | mysql -uroot -p$dbrootpw $db +if [ -e /usr/share/wwwconfig-common/mysql-exec.sh ] ; then + status="" + (cd $sqldir && . /usr/share/wwwconfig-common/mysql-exec.sh) + if [ "$status" = "error" ] ; then + echo "$error" + exit 1 + fi +else + cat $sqldir/$sqlfile | mysql -u$dbadmin -p$dbadmpass $dbname +fi echo -n "Unpacking tarballs:" +mkdir $basedir +chown $uid:$gid $basedir su $uid -c " - mkdir $basedir + set -e cd $basedir for tarball in $tarballs; do echo -n \" \$tarball\" tar -xz -C $basedir -f $srcdir/\$tarball.tar.gz done + for tarball in $language_tarballs; do + echo -n \" \$tarball\" + tar -xz -C $basedir -f $srcdir/lang/\$tarball.tar.gz + done + for tarball in $template_tarballs; do + echo -n \" \$tarball\" + tar -xz -C $basedir -f $srcdir/templates/\$tarball.tar.gz + done echo " echo "Adding demo data to database" -mysql -u$dbuser -p$dbpasswd $db < $sqldir/$sqlfile2 +sqlfile=$sqlfile2 +if [ -e /usr/share/wwwconfig-common/mysql-exec.sh ] ; then + status="" + (cd $sqldir && . /usr/share/wwwconfig-common/mysql-exec.sh) + if [ "$status" = "error" ] ; then + echo "$error" + exit 1 + fi +else + cat $sqldir/$sqlfile | mysql -u$dbadmin -p$dbadmpass $dbname +fi echo "Configuring website" su $uid -c " + set -e cd $basedir $bindir/modfix.sh >/dev/null $bindir/secure_modfix.sh $uid $gid >/dev/null @@ -123,9 +195,9 @@ SiteAuthor=someone at $maildomain SiteCopyright=someone © 2001 SiteDescription=a web application suite SiteKeywords=Content Management System, CMS, e-commerce -Database=$db +Database=$dbname User=$dbuser -Password=$dbpasswd +Password=$dbpass [eZUserMain] DefaultCountry=58 @@ -181,6 +253,7 @@ echo "# Generated for $pkg by $(basename $0) ServerName www.$fqdn RewriteEngine On RewriteRule / http://$fqdn/ [R] + TransferLog /dev/null " > $webcfg echo "Done!" -- cgit v1.2.3