Posteado por: Gabriel en: Junio 3, 2008
Siguiendo con el tema de Subversion, ayer puse en funcionamiento un navegador web para repositorios de subversion, específicamente el ViewVC que es un cliente bastante simple y fácil de usar escrito en Python, su función principal es permitir a los usuario navegar a través de los repositorios pudiendo ver las distintas revisiones, comparar documentos (diff), ver los logs de modificaciones, etc. todo desde el navegador sin la necesidad de tener instalado en la máquina un cliente específico para subversion, ésta herramienta no permite realizar modificaciones a los archivos.
A continuación voy a comentar los pasos que seguí para configurarlo en openSuSE 10.3.
Lo primero que tuve que hacer es instalar el paquete de ViewVC con Yast o con el gestor de paquetes de su preferencia (Zypper, Smart, etc.), pero para ello es necesario tener agregado el repositorio principal de openSuSE (OSS) de la lista de repositorios de la comunidad (YaST2->Software->Community Repositories).
Luego de instalar el paquete se creó una carpeta en el directorio /srv llamada viewvc con todo el contenido de software y además también se creó un archivo llamado viewvc.conf en el directorio de configuraciones de Apache, específicamente en el directorio /etc/apache2/conf.d que contiene las configuración del módulo Python para Apache. Para hacer funcionar el programa tuve que editar el archivo /srv/viewvc/viewvc.conf y modificarle las 4 directivas que cito a continuación (hay más pero no las toque):
# Comente estas líneas para que no tuvieran efecto.
#svn_roots:
# your_unnamed_project : /srv/svn/repos/<your_unnamed_project> ,
# another_project : /srv/svn/repos/<another_project>
# Definí la ruta raíz en donde se encuentran los repositorios
# de subversion.
root_parents = /srv/svn/repos : svn
# Comente esta línea para que no tuvieran efecto.
#default_root = your_unnamed_project
# Personalicé la dirección de correo electrónico del administrador que
# aparece en ViewVC.
address = <a href="mailto:labitacoradegabriel@gmail.com">Email del Administrador</a>
Luego tuve que acceder al archivo /etc/sysconfig/apache2 y agregarle a la directiva APACHE_SERVER_FLAGS la opción SVN_VIEWCVS:
APACHE_SERVER_FLAGS="SSL SVN_VIEWCVS"
Hechas las modificaciones a los archivos de configuración y reiniciado el servicio de Apache el navegador de repositorios ya se podía usar, solo basta con introducirle la URL: http://direccion_del_servidor/viewvc a la barra de direcciones del navegador de nuestra preferencia:
Funciona correctamente tanto con el protocolo http como https así que no hay ningún inconveniente con eso, luego de probar un rato la herramienta web me di cuenta de algo importante, que se podría acceder a cualquier repositorio sin que se solicite una clave de autorización para su lectura, aunque el repositorio se haya configurado para tal caso.
Para solucionar este tema simplemente hice uso de los métodos de autorización para carpetas que ofrece Apache, creando los conocidos archivos .htaccess en el directorio al cual se le desea controlar el acceso, pero para que los archivos .htaccess sean tomados en cuenta por Apache tuve que modificar una línea en el archivo /etc/apache2/conf.d/viewvc.conf. En la sección en donde se especifica el directorio donde se encuentra el ejecutable del programa, tuve que cambiar la línea AllowOverride None por AllowOverride AuthConfig para que tome en cuenta los archivos .htaccess:
En el directorio /etc/apache2 preparé una nueva carpeta llamada passwords y en ella generé en un archivo los usuarios y sus respectivas claves que tendrán acceso al Browser ViewVC:
machine:/ # cd /etc/apache2
machine:/etc/apache2 # mkdir passwords
machine:/etc/apache2 # cd passwords
machine:/etc/apache2/passwords # touch .htpasswd
machine:/etc/apache2/passwords # htpasswd2 .htpasswd gabriel
Luego creamos el archivo .htaccess en el directorio /srv/viewvc/bin/cgi:
machine:/ # cd /srv/viewvc/bin/cgi/
machine:/srv/viewvc/bin/cgi # touch .htaccess
Agregando el contenido siguiente:
Con la línea Require valid-user aclaramos que todos los usuarios que agregamos al archivo /etc/apache2/passwords/.htpasswd son válidos para la autorización de acceso, por último es necesario reiniciar el servicio de Apache:
machine:/ # service apache2 restart
y con eso ya solicitará que los usuarios se autentiquen a la hora de querer acceder al Browser VievVC.
Lo malo de todo esto es que para cada servicio que establecemos políticas de autenticación (ftp, Subversion, a carpetas web de Apache, y peor aun si tenemos un servidor de correo con usuarios virtuales) estamos creando archivos con los nombres de los autorizados y sus claves, sin embargo, es muy posible que muchas veces los usuarios sean siempre los mismos así que debería verse la forma de administrar los usuarios por separado, quizás con openLDAP, pero eso ya lo dejaremos para otra ocación.
Comentarios recientes