123 lines
3.4 KiB
Bash
Executable file
123 lines
3.4 KiB
Bash
Executable file
#!/bin/sh
|
|
#
|
|
# $Id: create-functions.sh 290 2011-06-20 00:45:51Z alba $
|
|
#
|
|
set_mysql_vars()
|
|
{
|
|
moderated_group="$1"
|
|
|
|
# news.newusers.questions => nnq
|
|
moderated_group_abbr=$( echo "${moderated_group}" |
|
|
sed 's#\([a-zA-Z]\)[a-zA-Z]*\([^a-zA-Z]\|$\)#\1#g' )
|
|
if [ -z "${moderated_group_abbr}" ]; then
|
|
echo "${moderated_group} is not a valid newsgroup"
|
|
exit 1
|
|
fi
|
|
|
|
# news.newusers.questions => news/newusers/questions
|
|
www_dir=$( echo "${moderated_group}" | tr . / )
|
|
|
|
# news.newusers.questions => news-newusers-questions
|
|
mysql_db=$( echo "${moderated_group}" | tr . - )
|
|
|
|
mysql_password=$( "${HUHU_DIR}/bin/new-passwd.pl" )
|
|
mysql_table="${moderated_group_abbr}"
|
|
mysql_username="${mysql_db}"
|
|
|
|
length=$( echo "${mysql_username}" | wc -c )
|
|
if [ "${length}" -gt 16 ]; then
|
|
# http://dev.mysql.com/doc/refman/4.1/en/user-names.html
|
|
# MySQL user names can be up to 16 characters long.
|
|
mysql_username="${moderated_group_abbr}"
|
|
fi
|
|
|
|
export today=$( date +%Y-%m-%d )
|
|
export year=$( date +%Y )
|
|
}
|
|
|
|
create_mysql()
|
|
{
|
|
local cmd="DROP USER '${mysql_username}'@'localhost'"
|
|
|
|
if echo "${cmd}" | mysql
|
|
then echo "${cmd} succeeded."
|
|
else echo "${cmd} failed."
|
|
fi
|
|
|
|
mysqladmin create "${mysql_db}"
|
|
(
|
|
echo "CREATE USER '${mysql_username}'@'localhost' IDENTIFIED BY '${mysql_password}';"
|
|
echo 'GRANT ALL ON `'${mysql_db}'`.* TO '"'${mysql_username}'@'localhost';"
|
|
) | mysql
|
|
|
|
sed "s/@sample@/${mysql_table}/g" \
|
|
< "${HUHU_DIR}/samples/mysql/create.sql" |
|
|
mysql "${mysql_db}"
|
|
|
|
echo "mysql_db=${mysql_db}"
|
|
echo "mysql_table=${mysql_table}"
|
|
echo "mysql_username=${mysql_username}"
|
|
echo "mysql_password=${mysql_password}"
|
|
}
|
|
|
|
clean_new_home()
|
|
{
|
|
cd "${1}" || exit 1
|
|
|
|
# remove .svn or _svn directories copied from skeleton
|
|
find . -type d -name '[._]svn' -exec rm -rf {} \+
|
|
|
|
# remove backup files
|
|
find . -type f -name '*~' -exec rm {} \+
|
|
|
|
# property svn:executable is used to set the executable bit, so keep
|
|
# u-permissions intact
|
|
find . -type f -exec chmod o-rwx,g-rwx {} \+
|
|
}
|
|
|
|
install_file()
|
|
{
|
|
permissions="$1"
|
|
src="$2"
|
|
dst="${user_home}/${src}"
|
|
|
|
# template file was copied from skeleton by useradd
|
|
# set safe permissions before we write sensitive contents into it
|
|
chmod "${permissions}" "${dst}"
|
|
|
|
awk '{
|
|
gsub(/@HUHU_DIR@/, ENVIRON["HUHU_DIR"]);
|
|
gsub(/@HUHU_WWW_BASE_DIR@/, ENVIRON["HUHU_WWW_BASE_DIR"]);
|
|
gsub(/@HUHU_WWW_BASE_URL@/, ENVIRON["HUHU_WWW_BASE_URL"]);
|
|
gsub(/@MODERATED_GROUP_ABBR@/, ENVIRON["moderated_group_abbr"]);
|
|
gsub(/@MODERATED_GROUP@/, ENVIRON["moderated_group"]);
|
|
gsub(/@MYSQL_DB@/, ENVIRON["mysql_db"]);
|
|
gsub(/@MYSQL_PASSWORD@/, ENVIRON["mysql_password"]);
|
|
gsub(/@MYSQL_TABLE@/, ENVIRON["mysql_table"]);
|
|
gsub(/@MYSQL_USERNAME@/, ENVIRON["mysql_username"]);
|
|
gsub(/@SUBMISSION_EMAIL@/, ENVIRON["user_name"] "@" ENVIRON["HUHU_EMAIL_DOMAIN"]);
|
|
gsub(/@TODAY@/, ENVIRON["today"]);
|
|
gsub(/@YEAR@/, ENVIRON["year"]);
|
|
gsub(/@USER_HOME@/, ENVIRON["user_home"]);
|
|
gsub(/@USER_ID@/, ENVIRON["user_id"]);
|
|
gsub(/@USER_NAME@/, ENVIRON["user_name"]);
|
|
gsub(/@WWW_DIR@/, ENVIRON["www_dir"]);
|
|
print $0;
|
|
}' "${skel_dir}/${src}" > "${dst}"
|
|
}
|
|
|
|
create_www_home()
|
|
{
|
|
[ -n "${HUHU_WWW_BASE_DIR:-}" ] || return
|
|
[ -n "${www_dir:-}" ] || return
|
|
|
|
local dir="${HUHU_WWW_BASE_DIR}/${www_dir}/stats"
|
|
[ -d "${dir}" ] || mkdir -p "${dir}"
|
|
|
|
dir="${HUHU_WWW_BASE_DIR}/${www_dir}"
|
|
(
|
|
cd "${dir}"
|
|
ln -s "${HUHU_DIR}/cgi-bin/modtable.pl"
|
|
ln -s "${HUHU_DIR}/cgi-bin/public.pl"
|
|
)
|
|
}
|