From 6555662d311a5db90aea058edfbec7c2f2b08754 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mart=C3=ADn=20Marrese?= Date: Tue, 20 Jan 2004 16:50:32 +0000 Subject: [PATCH 1/1] Primera version de archivos de soporte de subversion. --- subversion/sapo/.htaccess | 6 + subversion/sapo/index.html | 14 ++ subversion/sapo/robots.txt | 2 + subversion/sapo/sapo.php | 82 ++++++++++ subversion/sapo/sapo.py | 135 ++++++++++++++++ subversion/sapo/svncreate | 37 +++++ subversion/sapo/template.conf | 11 ++ subversion/svn/apache.conf | 293 ++++++++++++++++++++++++++++++++++ subversion/svn/group | 1 + subversion/svn/passwd | 10 ++ subversion/svn/passwd.digest | 7 + 11 files changed, 598 insertions(+) create mode 100644 subversion/sapo/.htaccess create mode 100644 subversion/sapo/index.html create mode 100644 subversion/sapo/robots.txt create mode 100644 subversion/sapo/sapo.php create mode 100755 subversion/sapo/sapo.py create mode 100755 subversion/sapo/svncreate create mode 100644 subversion/sapo/template.conf create mode 100644 subversion/svn/apache.conf create mode 100644 subversion/svn/group create mode 100644 subversion/svn/passwd create mode 100644 subversion/svn/passwd.digest diff --git a/subversion/sapo/.htaccess b/subversion/sapo/.htaccess new file mode 100644 index 0000000..dc7bdf7 --- /dev/null +++ b/subversion/sapo/.htaccess @@ -0,0 +1,6 @@ +AuthName "Creador de Repositorios Subversion" +AuthType Basic +AuthUserFile /etc/svn/passwd +AuthGroupFile /etc/svn/group +#Require valid-user +Require group desarrolladores diff --git a/subversion/sapo/index.html b/subversion/sapo/index.html new file mode 100644 index 0000000..c5e75f3 --- /dev/null +++ b/subversion/sapo/index.html @@ -0,0 +1,14 @@ + + + + SAPO - Systema de Administración de Portal y Otros + + +

SAPO

+

Systema de Administración de Portal y Otros

+ + + diff --git a/subversion/sapo/robots.txt b/subversion/sapo/robots.txt new file mode 100644 index 0000000..c6742d8 --- /dev/null +++ b/subversion/sapo/robots.txt @@ -0,0 +1,2 @@ +User-Agent: * +Disallow: / diff --git a/subversion/sapo/sapo.php b/subversion/sapo/sapo.php new file mode 100644 index 0000000..97cb0cb --- /dev/null +++ b/subversion/sapo/sapo.php @@ -0,0 +1,82 @@ + + + + Creador de Repositorios Subversion + + +

Creador de Repositorios Subversion

+'; + $retval = 0; + echo system( + //echo( + sprintf( + "%s %s %s %s", + $svncreate, + escapeshellarg($_REQUEST['repos']), + escapeshellarg($_REQUEST['desc']), + escapeshellarg(join(' ', $_REQUEST['users'])) + ), + $retval + ); + if ($retval) { + echo "Hubo un error: $retval"; + } + echo "\n"; + $url = sprintf('http://portal.mecon.ar/svn/%s/tronco/', $_REQUEST['repos']); + printf('Puede hacer un checkout con: svn co %s %s.%s', $url, $url, $_REQUEST['repos'], "\n"); + printf("Alternativamente puede hacer un checkout con: svn co svn+ssh://portal.mecon.ar/var/lib/svn/%s si tiene acceso via ssh.\n", $_REQUEST['repos']); + printf('Volver', $_SERVER['PHP_SELF']); + echo ''; + +} else { + +?> +
+ Nombre del repositorio:
+ Descripción:
+ Usuarios habilitados a escribir: +
+
+
+ + + diff --git a/subversion/sapo/sapo.py b/subversion/sapo/sapo.py new file mode 100755 index 0000000..7b0bd4b --- /dev/null +++ b/subversion/sapo/sapo.py @@ -0,0 +1,135 @@ +#!/usr/bin/env python +# -*- coding: iso-8859-1 -*- +# vim: set ts=4 softtabstop=4 expandtab : +# $Id$ + +# Config. + +svncreate = 'sudo /usr/local/bin/svncreate' + +import sys +import os +import re +import string +import cgi +import cgitb + +# Para que tire errores más verborrágicos. +cgitb.enable() + +def is_in(elem, lst): + for e in lst: + if elem == e: + return True + return False + +class FormError(Exception): + def __init__(self, value): + self.value = value + def __str__(self): + return """
%s
""" % self.value + +def print_header(): + print "Content-Type: text/html" + print + print """\ + + + Creador de Repositorios Subversion + + +

Creador de Repositorios Subversion

+""" + +def print_footer(): + print """\ + + +""" + +def print_form(form): + def selected(user): + if is_in(user, form.getlist('users')): + return ' selected' + return '' + + repos = '' + if form.getfirst('repos'): + repos = form.getfirst('repos') + desc = '' + if form.getfirst('desc'): + desc = form.getfirst('desc') + print """\ +
+ Nombre del repositorio:
+ Descripción:
+ Usuarios habilitados a escribir: +
+
+
""" + +def print_repos(repos): + url = 'http://portal.mecon.ar/svn/%s/tronco/' % repos + print '

Puede hacer un checkout con:
' + print 'svn co %s %s

.\n' % (url, url, repos) + #print 'Alternativamente puede hacer un checkout con: svn co svn+ssh://portal.mecon.ar/var/lib/svn/%s si tiene acceso via ssh.\n' % repos + print '
Volver
' + +def get_users(file): + users = [] + f = open(file, 'r') + lines = f.readlines() + for line in lines: + users.append(line.strip().split(':')[0]) + f.close() + return users + +def check_form(form): + check_cond(form.has_key('repos'), 'No se especificó el nombre del repositorio.') + check_cond(form.has_key('desc'), 'No se especificó la descripción del repositorio.') + check_cond(form.has_key('users'), 'No se especificaron usuarios habilitados para escribir en el repositorio.') + check_cond(re.match('^[\w\d]+$', form['repos'].value), + 'El nombre del repositorio no es válido (sólo puede tener caracteres alfanuméricos).') + +def check_cond(cond, msg): + if (not cond): + raise FormError(msg); + +def escape(str): + return str.replace("'", "\\'") + + +################################### PROGRAMA PRINCIPAL ###################################### + +print_header() + +form = cgi.FieldStorage() +try: + # Si nos llegó el formulario. + if form.has_key('enviado'): + check_form(form) + print '
'
+        repos = escape(form.getfirst('repos'))
+        desc = escape(form.getfirst('desc'))
+        usrs = ' '
+        usrs = escape(usrs.join(form.getlist('users')))
+        cmd = "%s '%s' '%s' '%s'" % (svncreate, repos, desc, usrs)
+        sys.stdout.flush()
+        status = os.system(cmd)
+        print '
' + if status: + raise FormError('Hubo un error al crear el repositorio (código de estado: %d).' % status) + print_repos(form.getfirst('repos')) + else: + print_form(form) +except FormError, e: + print e + print_form(form) + +print_footer() + + diff --git a/subversion/sapo/svncreate b/subversion/sapo/svncreate new file mode 100755 index 0000000..0cf6681 --- /dev/null +++ b/subversion/sapo/svncreate @@ -0,0 +1,37 @@ +#!/bin/sh +# $Id$ + +repos_root=/var/lib/svn +repos_www=/svn +template=/etc/svn/template.conf +sistema_base=sistema + +repos=$1 +desc=$2 +users=$3 + +if [ -r $repos_root/$repos ]; then + echo "ERROR: El repositorio $repos ya existe." + exit 1 +fi +echo "Creando repositorio en $repos_root/$repos..." +#svnadmin create $repos_root/$repos +cp -a $repos_root/$sistema_base $repos_root/$repos + +echo "Corrigiendo permisos de $repos_root/$repos..." +chown -R .src $repos_root/$repos +chmod -R g=u $repos_root/$repos + +echo "Agregando repositorio $repos al Apache2 en $repos_www..." +sed -e "s|{REPOS}|$repos|" -e "s/{DESC}/$desc/" \ + -e "s|{REPOS_ROOT}|$repos_root/$repos|" \ + -e "s|{REPOS_WWW}|$repos_www/$repos|" \ + $template >> /etc/svn/apache.conf + +echo "Agregando grupo $repos con los usuarios $users..." +echo "$repos: $users" >> /etc/svn/group + +echo "Reiniciando Apache2..." +/etc/init.d/apache2 reload + +echo "Finalizado." diff --git a/subversion/sapo/template.conf b/subversion/sapo/template.conf new file mode 100644 index 0000000..dab5336 --- /dev/null +++ b/subversion/sapo/template.conf @@ -0,0 +1,11 @@ + +# {REPOS} - {DESC} + + + SVNReposName "{DESC}" + + + Require group {REPOS} + + + diff --git a/subversion/svn/apache.conf b/subversion/svn/apache.conf new file mode 100644 index 0000000..78bf911 --- /dev/null +++ b/subversion/svn/apache.conf @@ -0,0 +1,293 @@ +# Repositorio General + + + DAV svn + SVNParentPath /var/lib/svn + SVNReposName "Repositorio Subversion" + SVNIndexXSLT "/svnindex.xsl" + + AuthType Digest + AuthName "Repositorio Subversion" + AuthDigestDomain / + AuthUserFile /etc/svn/passwd.digest + AuthGroupFile /etc/svn/group + Require valid-user + + + +# intranet - Intranet + + + DAV svn + SVNPath /var/lib/svn/intranet + SVNReposName "intranet - Intranet" + + # Archivo para controlar el acceso fino a los directorios. + AuthzSVNAccessFile /var/lib/svn/intranet/conf/permisos.ini + + + Require group intranet + + + + + +# Horas Extra + + + DAV svn + SVNPath /var/lib/svn/he + SVNReposName "Horas Extra" + + + Require group he + + + + +# Horas Extra + + + DAV svn + SVNPath /var/lib/svn/llucar + SVNReposName "Horas Extra" + + + Require group llucar_ci + + + + +# mmarre + + + DAV svn + SVNPath /var/lib/svn/protocolizacion + SVNReposName "Protocolización" + + + Require group protocolizacion + + + + +# SAMURAI - Sistema de Administracion y Mantenimiento de Usuarios Relativos A Intranet + + + DAV svn + SVNPath /var/lib/svn/samurai + SVNReposName "SAMURAI - Sistema de Administracion y Mantenimiento de Usuarios Relativos A Intranet" + + + Require group samurai + + + + +# MEconLib - Librerias de la Intranet del Ministerio de Economia + + + DAV svn + SVNPath /var/lib/svn/meconlib + SVNReposName "MEconLib - Librerias de la Intranet del Ministerio de Economia" + + + Require group meconlib + + + + +# Scripts para carga de bases de datos. + + + DAV svn + SVNPath /var/lib/svn/scripts + SVNReposName "Scripts varios" + + + Require group scripts + + + + +# Brigada de evacuación ante emergencias. + + + DAV svn + SVNPath /var/lib/svn/brigada + SVNReposName "Brigada de evacuación ante emergencias" + + + Require group brigada + + + + +# bandas - Bandas Horarias Reloaded + + + DAV svn + SVNPath /var/lib/svn/bandas + SVNReposName "bandas - Bandas Horarias Reloaded" + + + Require group bandas + + + + +# infoleg - Nueva versión del sistema de Nora Chaponick + + + DAV svn + SVNPath /var/lib/svn/infoleg + SVNReposName "infoleg - Nueva versión del sistema de Nora Chaponick" + + + Require group infoleg + + + + +# sistema - Sistema base de ejemplo. + + + DAV svn + SVNPath /var/lib/svn/sistema + SVNReposName "sistema - Sistema base de ejemplo." + + + Require group sistema + + + + +# ai - Administrador de Intranet + + + DAV svn + SVNPath /var/lib/svn/ai + SVNReposName "ai - Administrador de Intranet" + + + Require group ai + + + + +# procad - Sistema de Capacitacion Online. + + + DAV svn + SVNPath /var/lib/svn/procad + SVNReposName "procad - Sistema de Capacitacion Online." + + + Require group procad + + + + +# codep - Sistema de Gestiòn del Codificador de Dependencias + + + DAV svn + SVNPath /var/lib/svn/codep + SVNReposName "codep - Sistema de Gestiòn del Codificador de Dependencias" + + + Require group codep + + + + +# art - Sistema de Seguros Riesgos de Trabajo + + + DAV svn + SVNPath /var/lib/svn/art + SVNReposName "art - Sistema de Seguros Riesgos de Trabajo" + + + Require group art + + + + +# bandasnovedades - Sistema para la visualización de las bandas horarias y novedades de personal para el personal jerárquico + + + DAV svn + SVNPath /var/lib/svn/bandasnovedades + SVNReposName "bandasnovedades - Sistema para la visualización de las bandas horarias y novedades de personal para el personal jerárquico" + + + Require group bandasnovedades + + + + +# estadisticas - Estadisticas Web + + + DAV svn + SVNPath /var/lib/svn/estadisticas + SVNReposName "estadisticas - Estadisticas Web" + + + Require group estadisticas + + + + +# presupuesto - Sistema de administracion de pagos y previsiones de sentencias judiciales + + + DAV svn + SVNPath /var/lib/svn/presupuesto + SVNReposName "presupuesto - Sistema de administracion de pagos y previsiones de sentencias judiciales" + + + Require group presupuesto + + + + +# yatta - YA Tenemos Tus Archivos. Administrador de Procesos y Tacho de Archivos. + + + DAV svn + SVNPath /var/lib/svn/yatta + SVNReposName "YATTA - YA Tenemos Tus Archivos. Administrador de Procesos y Tacho de Archivos." + + + Require group yatta + + + + +# proyectos_ley - Sistema de Proyectos de Ley + + + DAV svn + SVNPath /var/lib/svn/proyectos_ley + SVNReposName "proyectos_ley - Sistema de Proyectos de Ley" + + + Require group proyectos_ley + + + + +# renavi - Registro Nacional de Multiplicadores e Incubadores Avicolas + + + DAV svn + SVNPath /var/lib/svn/renavi + SVNReposName "renavi - Registro Nacional de Multiplicadores e Incubadores Avicolas" + + + Require group renavi + + + diff --git a/subversion/svn/group b/subversion/svn/group new file mode 100644 index 0000000..ccd3fb6 --- /dev/null +++ b/subversion/svn/group @@ -0,0 +1 @@ +desarrolladores: llucar manazar mdegan msklar mmarre diff --git a/subversion/svn/passwd b/subversion/svn/passwd new file mode 100644 index 0000000..59db873 --- /dev/null +++ b/subversion/svn/passwd @@ -0,0 +1,10 @@ +llucar:ZoTPeX7rui06U +msklar:6DHiwPGeTbjSQ +mdegan:BG3.8Iwkoy96c +mmarre:nuTGFACElSDk. +sotton:eSix22256xdGU +matsch:6xqWkWBz1HJZ2 +manazar:xiouQzX42MXvQ +vcrehu:ZWjBZUUxPObeQ +mazzoni:05W3Y49yYw04I +www-data:c3N4.J/QmVVLI diff --git a/subversion/svn/passwd.digest b/subversion/svn/passwd.digest new file mode 100644 index 0000000..7bd5b2f --- /dev/null +++ b/subversion/svn/passwd.digest @@ -0,0 +1,7 @@ +llucar:Repositorio Subversion:b278f661f16f10996f42aa4851d63944 +msklar:Repositorio Subversion:5ea9adea421a2ae619c517145835bb5c +mdegan:Repositorio Subversion:d7bf2380ec19b817b6cc928b26dc6e8a +mmarre:Repositorio Subversion:9b473876abf971c0e7970ad5f2fdfa9d +matsch:Repositorio Subversion:d7a28f7bc6a021164082c77ca0089667 +vcrehu:Repositorio Subversion:915c3106e48520ab2193bd00801093e1 +luca:Repositorio Subversion:79212f356863475ffb39521dffa7ba8d -- 2.43.0