openmamba-headserver-tools/bin/openmamba-newrep
2012-03-12 15:18:41 +01:00

177 lines
5.4 KiB
Bash
Executable File

#!/bin/bash
#
# openmamba new repository creation script
# Copyright (c) 2007-2008 by Silvan Calarco
#
. /etc/sysconfig/openmamba-central
CONFMODE=$1
REPNAME=$2
REPDIR=$local_ftp/$REPNAME
DISTROMATICDIR=$local_ftp/distromatic/$REPNAME
WEBDAV_DIR=/var/www/davdb
[ "$CONFMODE" = "frontend" -o "$CONFMODE" = "backend" -a "$REPNAME" ] || {
echo "openmamba new repository creation tool"
echo "Copyright (c) 2007-2008 by Silvan Calarco"
echo
echo "Usage:"
echo "$0 {backend|frontend} name [-t type]"
echo
echo " backend this is the backend server"
echo " frontend this is the frontend server"
echo " name repository name (e.g. devel-silvan)"
echo " type the type of repository, default is 'people', choices are:"
echo " people group"
echo
exit 1
}
echo "openmamba new repository creation tool"
echo "Copyright (c) 2007-2008 by Silvan Calarco"
echo
if [ "$CONFMODE" = "backend" ]; then
for r in ${local_reps[*]}; do
[ "$r" = "$REPNAME" ] && REPTYPE=local
done
for r in ${remote_reps[*]}; do
[ "$r" = "$REPNAME" ] && REPTYPE=remote
done
[ "$REPTYPE" ] || {
echo "Error: please add repository to /etc/sysconfig/openmamba-central first; aborting."
exit 1
}
[ -e $REPDIR ] && {
echo "Error: a file or directory called $REPDIR already exits; aborting."
exit 1
}
[ -e $DISTROMATICDIR ] && {
echo "Error: a file or directory called $DISTROMATICDIR already exits; aborting."
exit 1
}
mkdir -p $REPDIR/{base,SRPMS.base,home,old} || {
echo "Error: cannot create directories in $REPDIR; aborting."
exit 1
}
mkdir -p $REPDIR/nonflat/RPMS
ln -s ../SRPMS.base $REPDIR/nonflat/SRPMS
for a in ${archs[*]}; do
ln -s ../../RPMS.$a $REPDIR/nonflat/RPMS/$a
mkdir -p $REPDIR/RPMS.$a || {
echo "Error: cannot create directories in $REPDIR; aborting."
exit 1
}
done
mkdir -p $DISTROMATICDIR || {
echo "Error: cannot create directory $DISTROMATICDIR; aborting."
exit 1
}
if [ "$REPTYPE" = "local" ]; then
useradd ftp$REPNAME -d $REPDIR -s /bin/true || {
echo "Error: cannot create ftp$REPNAME user; aborting."
exit 1
}
chown -R ftp$REPNAME.ftp $REPDIR/{SRPMS.base,RPMS.*,nonflat,old}
fi
cat > $REPDIR/.htaccess << _EOF
AuthType Basic
AuthUserFile /var/www/davdb/$REPUSER
AuthName "Authentication required"
_EOF
echo "Repository has been created on the backend, now you need to do the following things:"
echo "+ configure distromatic for the $REPNAME repository"
echo "+ launch 'openmamba-newrep frontend' on the frontend server"
echo "+ add HTML code for the repository publication of the website"
echo
elif [ "$CONFMODE" = "frontend" ]; then
REPUSER="${REPNAME/*-/}"
TEMPLATEDIR=$local_ftp/template
[ "`getent passwd $REPUSER`" ] && {
echo "Error: user $REPUSER already exits; aborting."
exit 1
}
[ -e $REPDIR ] && {
echo "Error: a file or directory called $REPDIR already exits; aborting."
exit 1
}
useradd $REPUSER -d $REPDIR -s /bin/true || {
echo "Error: cannot create ftp$REPNAME user; aborting."
exit 1
}
REPUSER_PASSWD=`mkpasswd -s 0 -l 9`
echo "$REPUSER_PASSWD" | passwd $REPUSER --stdin
mkdir -p $REPDIR/{base,SRPMS.base,home,old} || {
echo "Error: cannot create directories in $REPDIR; aborting."
exit 1
}
cp -a $TEMPLATEDIR/home/* $REPDIR/home/
mkdir -p $REPDIR/nonflat/RPMS
ln -s ../SRPMS.base $REPDIR/nonflat/SRPMS
for a in ${archs[*]}; do
ln -s ../../RPMS.$a $REPDIR/nonflat/RPMS/$a
mkdir -p $REPDIR/RPMS.$a || {
echo "Error: cannot create directories in $REPDIR; aborting."
exit 1
}
done
chown -R $REPUSER.nobody $REPDIR/{SRPMS.base,RPMS.*,nonflat,old}
chmod -R 775 $REPDIR/{SRPMS.base,RPMS.*,nonflat,old}
ln -s $REPDIR/home/ /var/www/www.openmamba.org/people/$REPUSER
htpasswd -nb $REPUSER $REPUSER_PASSWD > $WEBDAV_DIR/$REPUSER
echo "Repository has been created on the frontend"
echo "* ftp address: ftpaccounts.openmamba.org"
echo "+ ftp user: $REPUSER"
echo "+ ftp password: $REPUSER_PASSWD"
echo
echo "You may configure autospec by copying the following lines at the"
echo "bottom of file .autospec in your home directory:"
echo
echo "#==================================================#"
echo "# devel-$REPUSER repository #"
echo "#==================================================#"
echo "ftp_rw_server[x]=\"ftp://ftpaccounts.openmamba.org\""
echo "ftp_rw_port[x]="
echo "ftp_rw_passive_mode[x]=on"
echo "ftp_rw_user[x]=$REPUSER"
echo "ftp_rw_passwd[x]=\"$REPUSER_PASSWD\""
echo "ftp_rw_rpms_dir[x]=\"/RPMS.@arch@\""
echo "ftp_rw_srpms_dir[x]=\"/SRPMS.base\""
echo "arch_list[x]=\"${archs[*]}\""
echo "arch_noarch_upload[x]=\"${arch_list[8]}\""
echo "ftpdir_rw_old[x]=\"\""
echo "ftpurl_ro_rpms[x]=\"ftp://ftpaccounts.openmamba.org/pub/openmamba/devel-$REPUSER/RPMS.@arch@\""
echo "ftpurl_ro_srpms[x]=\"ftp://ftpaccounts.openmamba.org/pub/openmamba/devel-$REPUSER/SRPMS.base\""
echo "#==================================================#"
echo
echo "Warning: you have to replace the occurencies of 'x' within brackets '[x]'"
echo " with the first free server number in your current autospec configuration."
echo
fi
exit 0