File "svnldapadmin.sh"
Full path: /www/wwwroot/fabriciovc.eti.br/downloads/scripts/bind/svn/svnldapadmin.sh
File size: 6.52 KiB (6677 bytes)
MIME-type: text/x-shellscript
Charset: utf-8
#!/bin/bash
#
# svnadmin.shr
# Script de administracao ddo subversion
# http://downloads.fabriciovc.eti.br/svn/svnadmin.sh
#
# Copyright (C) 2011 - Fabricio Vaccari Constanski
# Fabricio Vaccari Constanski | fabriciovc@fabriciovc.eti.br
# 20081022, FabricioVC - Versao inicial
# 20110620, FabricioVC - Correcao do menu, removendo o select.
#
# Creative Commons
# Atribuicao-Compartilhamento pela mesma Licenca 3.0 Brasil.
# http://creativecommons.org/licenses/by/3.0/br/
#
# Voce tem a liberdade de:
# * Compartilhar: copiar, distribuir e transmitir a obra.
# * Remixar: criar obras derivadas.
#
# Sob as seguintes condicoes:
# * Atribuicao: Voce deve creditar a obra da forma especificada ao autor
# * Aviso: Para qualquer reutilizacao ou distribuicao, voce deve deixar claro
# a terceiros os termos da licenca a que se encontra submetida esta
# obra. A melhor maneira de fazer isso e com um link para a pagina
# http://creativecommons.org/licenses/by/3.0/br/.
#=============================================================================#
# CONFIGURAR AS VARIAVEIS A SEGUIR
SVN_HOME=/srv/svn # Diretorio onde os repositorios do subversion serao armazenados
USUARIO_APACHE=www-data # Usuario que executa o apache2
GRUPO_APACHE=www-data # Grupo do usuario que executa o apache2
SVN_APACHE=/etc/apache2/svn # Diretorio com as entradas do svn no apache
PAGINA_WEB=/svn # Endereco web que ficara o repositorio http://servidor/svn
ARQUIVO_SENHA=$SVN_APACHE/passwd # Local ddos arquivos de senha usuarios do subversion
# Variaveis de comando
SVNADMIN=`which svnadmin`
RM=`which rm`
CAT=`which cat`
CHMOD=`which chmod`
CHOWN=`which chown`
# Funcoes
_MENU () {
echo
echo "1) Criar Repositorio"
echo "2) Listar Repositorio"
echo "3) Reparar Repositorio"
echo "4) Excluir Repositorio"
echo "Q) Sair"
echo
echo "Escolha uma opcao a seguir para gerenciar os repositórios:"
echo -n "#? "
read OPT
case $OPT in
"1") _CRIAR_REPOSITORIO; _MENU ;;
"2") _LISTAR_REPOSITORIO; _MENU ;;
"3") _REPARAR_REPOSITORIO; _MENU ;;
"4") _EXCLUIR_REPOSITORIO; _MENU ;;
q|Q) exit 0 ;;
*) echo -e "\\033[1;33mForneca uma opcao valida.\\033[0;39m" ;_MENU ;;
esac
}
_CHECKOK () {
if [ $? -eq 0 ]; then
sleep 1
echo -e " \\033[1;32mOK\\033[0;39m"
else
sleep 1
echo -e " \\033[1;31mFALHOU\\033[0;39m"
fi
}
_CRIAR_REPOSITORIO () {
echo
echo -n "Entre com o nome do repositorio a ser criado ..: "
read NOME_PROJETO_ADD
if [ -z $NOME_PROJETO_ADD ]; then
_CRIAR_REPOSITORIO
else
# verifica se o repositorio ja existe
if [ -d ${SVN_HOME}/${NOME_PROJETO_ADD} ]; then
echo -e "Repositorio \\033[1;34m${NOME_PROJETO_ADD}\\033[0;39m \\033[1;33mja existe\\033[0;39m!!"
else
if `${SVNADMIN} create ${SVN_HOME}/${NOME_PROJETO_ADD} 2> /dev/null` ; then
echo -e "Repositorio \\033[1;34m${NOME_PROJETO_ADD}\\033[0;39m \\033[1;33mcriado\\033[0;39m com sucesso!!"
echo
# Mudando as permissoes
echo -n "Mudando as permissoes de escrita do diretório ${SVN_HOME}/${NOME_PROJETO_ADD} ..:"
$CHMOD -R g+ws ${SVN_HOME}/${NOME_PROJETO_ADD}
_CHECKOK
# Mudando Usuários e Grupos
echo -n "Mudando as permissões de usuário do diretório ${SVN_HOME}/${NOME_PROJETO_ADD} ..:"
$CHOWN -R ${USUARIO_APACHE}:${GRUPO_APACHE} ${SVN_HOME}/${NOME_PROJETO_ADD}
_CHECKOK
_APACHE_ADD
else
echo -e "\\033[1;31mErro\\033[0;39m na criacao do repositorio \\033[1;34m${NOME_PROJETO_ADD}\\033[0;39m!!"
fi
fi
fi
}
_APACHE_ADD () {
#touch $SVN_APACHE/${NOME_PROJETO}
#sleep 1
echo -n "Criando as entradas no apache ..:"
$CAT << EOF > $SVN_APACHE/${NOME_PROJETO_ADD}
<Location $PAGINA_WEB/${NOME_PROJETO_ADD}>
DAV svn
SVNPath ${SVN_HOME}/${NOME_PROJETO_ADD}
AuthType Basic
AuthName "Repositorio ${NOME_PROJETO_ADD}"
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthLDAPURL ldap://IP_SERVIDOR_LDAP/ou=dominio,dc=com,dc=br?uid
Require valid-user
#Require user usuario01 usuario02 usuario03o
# <LimitExcept GET PROPFIND OPTIONS REPORT>
# AuthUserFile ${ARQUIVO_SENHA}
# AuthzSVNAccessFile $SVN_APACHE/${NOME_PROJETO_ADD}
# Require valid-user
# </LimitExcept>
</Location>
EOF
_CHECKOK
echo -n "Relendo as configuracoes do servidor web apache ..:"
/etc/init.d/apache2 reload > /dev/null
_CHECKOK
}
_LISTAR_REPOSITORIO () {
echo
echo "Lista de repositórios existentes:"
for LIST in `ls $SVN_HOME/`
do
echo -e "-> \\033[1;34m$LIST\\033[0;39m"
done
}
_REPARAR_REPOSITORIO () {
_LISTAR_REPOSITORIO
echo
echo -n "Qual repositório deseja reparar? "
read NOME_PROJETO_REP
if [ -z $NOME_PROJETO_REP ]; then
_REPARAR_REPOSITORIO
else
if [ -d ${SVN_HOME}/$NOME_PROJETO_REP ]; then
echo -n "Realmente reparar o repositório $NOME_PROJETO_REP ? (s/n) ..: "
read SN
if [ -z $SN ] || [ $SN != s ]; then
echo -e "Repositorio \\033[1;34m${NOME_PROJETO_REP}\\033[0;39m \\033[1;31mnao\\033[0;39m reparado!!"
elif [ $SN = s ]; then
$SVNADMIN recover ${SVN_HOME}/$NOME_PROJETO_REP
echo -e "Repositorio \\033[1;34m${NOME_PROJETO_REP}\\033[0;39m \\033[1;33mreparado\\033[0;39m com sucesso!!"
fi
else
echo -e "Repositorio \\033[1;34m${NOME_PROJETO_REP}\\033[0;39m \\033[1;31mnao existe\\033[0;39m!!"
_REPARAR_REPOSITORIO
fi
fi
}
_EXCLUIR_REPOSITORIO () {
_LISTAR_REPOSITORIO
echo
echo -n "Qual repositório deseja excluir ..: "
read NOME_PROJETO_DEL
if [ -z $NOME_PROJETO_DEL ]; then
_EXCLUIR_REPOSITORIO
else
if [ -d ${SVN_HOME}/$NOME_PROJETO_DEL ]; then
echo -n "Realmente remover o repositório $NOME_PROJETO_DEL ? (s/n) ..: "
read SN
if [ -z $SN ] || [ $SN != s ]; then
echo -e "Repositorio \\033[1;34m${NOME_PROJETO_DEL}\\033[0;39m \\033[1;31mnao\\033[0;39m removido!!"
elif [ $SN = s ]; then
$RM -rf $SVN_HOME/$NOME_PROJETO_DEL
echo -e "Repositorio \\033[1;34m${NOME_PROJETO_DEL}\\033[0;39m \\033[1;33mremovido\\033[0;39m com sucesso!!"
echo
echo -n "Removendo as entradas no apache ..:"
$RM -f $SVN_APACHE/${NOME_PROJETO_DEL}
_CHECKOK
echo -n "Relendo as configuracoes do servidor web apache ..:"
/etc/init.d/apache2 reload > /dev/null
_CHECKOK
fi
else
echo -e "Repositorio \\033[1;34m${NOME_PROJETO_DEL}\\033[0;39m \\033[1;31mnao existe\\033[0;39m!!"
_EXCLUIR_REPOSITORIO
fi
fi
}
clear
echo -e "\\033[1;33m--------------------------------------------------------------------\\033[0;39m"
echo -e "\\033[1;33m SISTEMA DE GERENCIAMENTO DE REPOSITORIO SVN \\033[0;39m"
echo -e "\\033[1;33m--------------------------------------------------------------------\\033[0;39m"
_MENU