#! /bin/sh
set -e

if [ $# -ne 1 ]
then
    echo "Usage: $0 SITE_NAME"
    exit 1
fi

site_name="$1"
site_dir="/var/lib/dokuwiki/farm/$site_name"
conf_dir="/etc/dokuwiki/farm/$site_name"
now=$(date --rfc-2822)

echo "Creating site $site_name"


#######################
# Directory structure #
#######################

echo "Creating directory structure..."
install -d -o www-data -g root -m 0700 "$site_dir/acl"
install -d -o www-data -g root -m 0700 "$site_dir/data"
install -d -o www-data -g root -m 0700 "$site_dir/data/attic"
install -d -o www-data -g root -m 0700 "$site_dir/data/cache"
install -d -o www-data -g root -m 0700 "$site_dir/data/index"
install -d -o www-data -g root -m 0700 "$site_dir/data/locks"
install -d -o www-data -g root -m 0700 "$site_dir/data/media"
install -d -o www-data -g root -m 0700 "$site_dir/data/meta"
install -d -o www-data -g root -m 0700 "$site_dir/data/pages"
install -d -o www-data -g root -m 0700 "$site_dir/data/tmp"
install -d -o root -g www-data -m 0775 "$conf_dir"


######################
# Main configuration #
######################

echo "Creating basic configuration..."

dokuwikiconf="$conf_dir/local.php"
install -o root -g www-data -m 0664 /dev/null "$dokuwikiconf"

cat >> "$dokuwikiconf" <<EOF
<?php
/**
 * Dokuwiki's Main Configuration File - Local Settings
 * Auto-generated by Debian dokuwiki-addsite script
 * Date: $now
 */

\$conf['title'] = '$site_name';
\$conf['license'] = 'cc-by-sa';
#\$conf['lang'] = 'en';
\$conf['useacl'] = 1;
\$conf['superuser'] = '@admin';
EOF


#######################
# Fixed configuration #
#######################

echo "Setting fixed configuration..."

install -o root -g www-data -m 0644 /dev/null "$conf_dir/local.protected.php"
cat >> "$conf_dir/local.protected.php" <<EOF
<?php
/**
 * Dokuwiki's Fixed Configuration File - Local Settings
 * Auto-generated by Debian dokuwiki-addsite script
 * Date: $now
 */

\$conf['savedir'] = '$site_dir/data';
EOF


#########################
# Access control system #
#########################

echo "Setting basic permissions..."

aclauth="$site_dir/acl/acl.auth.php"
install -o root -g www-data -m 0640 /dev/null "$aclauth"

cat >> "$aclauth" <<-EOF
# acl.auth.php
# <?php exit()?>
# Don't modify the lines above
#
# Access Control Lists
#
# Auto-generated by Debian dokuwiki-addsite script
# Date: $now

*               @ALL          1
*               @user         8
EOF

ln -s "$site_dir/acl/acl.auth.php"   "$conf_dir/"


#########################
# Administrator account #
#########################

echo "Adding admin user..."

usersauth="$site_dir/acl/users.auth.php"
install -o root -g www-data -m 0640 /dev/null "$usersauth"

superuser="admin"
fullname="DokuWiki Administrator"
email="webmaster@localhost"
password="password"
confirm="confirm"
stty -echo
while [ "$password" != "$confirm" ]
do
    read -p "Choose an administrator password: " -r password
    echo
    read -p "Retype the administrator password: " -r confirm
    echo
    if [ "$password" != "$confirm" ]
    then
        echo "Sorry, password do not match" >&2
    fi
done
stty echo
password=$(echo -n "$password" | md5sum -b | cut -d' ' -f1)
echo "$superuser:$password:$fullname:$email:admin,user" >> $usersauth

ln -s "$site_dir/acl/users.auth.php" "$conf_dir/"
 
 
############
# Finished #
############

echo "Finished!"
echo "Bye!"
 
exit 0
