X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=createBlog.sh;h=aaece90286e8a4b781f4e2938071072dcf22779f;hb=HEAD;hp=13af9375cf8158382963d11a0d0ca91a6b5c854f;hpb=0873522c26fc07b4b19a6e43a30188545ecb44a6;p=dotclear.git diff --git a/createBlog.sh b/createBlog.sh index 13af937..aaece90 100755 --- a/createBlog.sh +++ b/createBlog.sh @@ -1,36 +1,142 @@ -#!/bin/sh +#!/bin/bash -type=$1 -owner=$2 -url=$3 -apache_group=www-data -rootpath=/home/x2003bruneau/public_html/ -templatepath=dotclear -baseurl=/~x2003bruneau -serviceurl="http://murphy.m4x.org/~x2003bruneau/dotclear2/xorgservice/createBlog" +# Usage: +# ./createBlog.sh type owner baseurl +# type = user | connected | group-member | group-admin +# * user: this is a blog for a user +# * connected: this is a blog for a group, all connected users can post +# * group-member: this is a blog for a group, all the members of the group can post +# * group-admin: this is a blog for a group, only group admins can post +# owner = name of the owner +# * user blog: forlife of the owner of the blog +# * group blog: 'diminutif' of the group (from X.net database) +# url = full url of the blog (e.g http://group.blog-x.org/). + +# WARNING: The script generates a .htaccess. The rewrite base might be edited to match +# the installation. Default value is based on a blog-farm of the form +# http://$owner.base.url/ + +# Once the blog has been installed and the .htaccess set-up, you can go on the administration +# page of the blog at baseurl/admin/ +# +# Their, go to the section 'Widget' and add (by drag-n-drop) the widgets 'Auth X.org' and 'Copyright'. +# (should be set up by default in near future). + + +# HELPERS + +usage() { + echo "Usage: $0 -t TYPE -o OWNER -u URL + + where : + TYPE = user | connected | group-member | group-admin is the type of the blog + OWNER if the owner of the blog (user hruid or group diminutif) + URL is the URL of the blog + " + exit $1; +} die() { echo $1 exit 1 } -( wget "$serviceurl?owner=$owner&type=$type&url=$3" -O - 2> /dev/null | grep 'blog created' ) || die "Blog creating failed" -( cd $rootpath && mkdir $owner ) || die "Can't create the repository for the blog" +# GETOPT + +TEMP=`getopt -n $0 -o ht:o:u: -- "$@"` + +RET=$? + +if [ $RET != 0 ]; then + usage $RET +fi + +eval set -- "$TEMP" + +TYPE="" +OWNER="" +URL="" +VHOST=0 + +while true ; do + case "$1" in + -h) + usage 0 + ;; + -t) + TYPE=$2; + if [[ "${TYPE}" != "user" && "${TYPE}" != "group-member" && "${TYPE}" != "group-admin" && "${TYPE}" != "connected" ]]; then + echo -e "ERROR: TYPE must be one of: user | group-member | group-admin | connected\n"; + usage 1 + fi + shift 2; + ;; + -o) + OWNER=$2; + shift 2; + ;; + -u) + URL=$2; + if ! echo "${URL}" | grep -E "^https?://[^/]+/" > /dev/null; then + echo -e "ERROR: URL must be a full URL, e.g 'http://www.example.org/'\n"; + usage 1 + fi + shift 2; + ;; + --) + shift; + break; + ;; + *) + echo -e "ERROR: Invalid argument '$1'\n" + usage 1 + ;; + esac +done + +if [[ "x${TYPE}" == "x" || "x${OWNER}" == "x" || "x${URL}" == "x" ]]; then + echo -e "ERROR: Missing one of -t, -o or -u options.\n" + usage 1 +fi + +BASEURL=`echo "${URL}" | sed -r 's,https?://[^/]+/,/,'` + +echo "Creating blog with : + TYPE = ${TYPE} + OWNER = ${OWNER} + URL = ${URL} + BASEURL = ${BASEURL} +" + +apache_group=www-data +rootpath=/home/web/blogs +templatepath=dotclear + +serviceurl="http://blog.polytechnique.org/xorgservice/createBlog" + +CALLED="$serviceurl?owner=${OWNER}&type=${TYPE}&url=${URL}&baseurl=${BASEURL}" +echo "Calling $CALLED" +( wget "$CALLED" -O - 2> /dev/null | grep 'blog created' ) || die "Blog creation failed" + +( cd $rootpath && mkdir -p $OWNER ) || die "Can't create the repository for the blog ($rootpath/$OWNER)" -cd $owner -for i in admin db inc index.php locales plugins themes ; do +cd $rootpath/$OWNER +for i in admin db inc index.php locales plugins themes; do ln -s $rootpath/$templatepath/$i || die "Can't add path to $i" done -mkdir public && chmod a+rwx public +mkdir -p "$rootpath/$templatepath/public/$OWNER" +chgrp -R "$apache_group" "$rootpath/$templatepath/public/$OWNER" +chmod g+wr "$rootpath/$templatepath/public/$OWNER" +ln -s $rootpath/$templatepath/public/$OWNER public ( cat < .htaccess