--- /dev/null
+AuthName "Creador de Repositorios Subversion"
+AuthType Basic
+AuthUserFile /etc/svn/passwd
+AuthGroupFile /etc/svn/group
+#Require valid-user
+Require group desarrolladores
--- /dev/null
+<!-- vim:set ts=4 softtabstop=4 expandtab: -->
+<html>
+ <head>
+ <title>SAPO - Systema de Administración de Portal y Otros</title>
+ <head>
+ <body>
+ <h1>SAPO</h1>
+ <h2>Systema de Administración de Portal y Otros</h2>
+ <ul>
+ <li><a href="/svn_new/">Creador de Repositorios Subversion</a></li>
+ <li><a href="/cgi-bin/viewcvs.cgi">Visualizador de repositorios</a></li>
+ </ul>
+ </body>
+</html>
--- /dev/null
+User-Agent: *
+Disallow: /
--- /dev/null
+<!-- vim:set ts=4 softtabstop=4 expandtab: -->
+<html>
+ <head>
+ <title>Creador de Repositorios Subversion</title>
+ </head>
+ <body>
+ <h1>Creador de Repositorios Subversion</h1>
+<? // vim:set ts=4 softtabstop=4 expandtab:
+
+// $Id$
+
+// Configuración
+$svncreate = 'sudo /usr/local/bin/svncreate';
+
+ini_set('implicit_flush', true);
+
+$users = array();
+$f = fopen('/etc/svn/passwd', 'r');
+while (($s = fgets($f, 4096)) !== false) {
+ list($users[], $pass) = split(':', $s);
+}
+fclose($f);
+
+if (@$_REQUEST['enviado']) {
+
+ if (!$_REQUEST['repos']) {
+ die('No se especificó el nombre del repositorio.');
+ }
+ if (!$_REQUEST['desc']) {
+ die('No se especificó la descripción del repositorio.');
+ }
+ if (!$_REQUEST['users']) {
+ die('No se especificaron usuarios habilitados para escribir en el repositorio.');
+ }
+ if (!preg_match('/^[\w\d]+$/', $_REQUEST['repos'])) {
+ die('El nombre del repositorio no es válido (sólo puede tener caracteres alfanuméricos).');
+ }
+ // Chequear usuarios que existan.
+ //if (!$_REQUEST['users']) {
+ // error('No se especificaron usuarios habilitados para escribir en el repositorio.');
+ //}
+
+ echo '<PRE>';
+ $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 <A href="%s">%s</A> %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('<A href="%s">Volver</A>', $_SERVER['PHP_SELF']);
+ echo '</PRE>';
+
+} else {
+
+?>
+ <form>
+ Nombre del repositorio: <input type="text" name="repos" value="<?= @$_REQUEST['repos'] ?>"><br>
+ Descripción: <input type="text" name="desc" value="<?= @$_REQUEST['desc'] ?>"><br>
+ Usuarios habilitados a escribir:
+ <select name="users[]" multiple>
+ <? foreach ($users as $user) { ?>
+ <option><?= $user ?></option>
+ <? } ?>
+ </select><br>
+ <input type="submit" name="enviado" value="Crear"><br>
+ </form>
+<? } ?>
+ </body>
+</html>
--- /dev/null
+#!/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 """<div style="color: red">%s</div>""" % self.value
+
+def print_header():
+ print "Content-Type: text/html"
+ print
+ print """\
+<html>
+ <head>
+ <title>Creador de Repositorios Subversion</title>
+ </head>
+ <body>
+ <h1>Creador de Repositorios Subversion</h1>
+"""
+
+def print_footer():
+ print """\
+ </body>
+</html>
+"""
+
+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 """\
+ <form method="POST">
+ Nombre del repositorio: <input type="text" name="repos" value="%s"><br>
+ Descripción: <input type="text" name="desc" value="%s"><br>
+ Usuarios habilitados a escribir:
+ <select name="users" multiple>""" % (repos, desc)
+ for user in get_users('/etc/svn/passwd'):
+ print """<option%s>%s</option>""" % (selected(user), user)
+ print """\
+ </select><br>
+ <input type="submit" name="enviado" value="Crear"><br>
+ </form>"""
+
+def print_repos(repos):
+ url = 'http://portal.mecon.ar/svn/%s/tronco/' % repos
+ print '<p>Puede hacer un checkout con:<br>'
+ print '<tt>svn co <a href="%s">%s</a> %s</tt></p>.\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 '<div style="text-align: center"><a href="./">Volver</a></div>'
+
+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 '<pre>'
+ 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 '</pre>'
+ 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()
+
+
--- /dev/null
+#!/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."
--- /dev/null
+
+# {REPOS} - {DESC}
+<Location {REPOS_WWW}>
+
+ SVNReposName "{DESC}"
+
+ <LimitExcept GET PROPFIND OPTIONS REPORT>
+ Require group {REPOS}
+ </LimitExcept>
+
+</Location>
--- /dev/null
+# Repositorio General
+<Location /svn>
+
+ 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
+
+</Location>
+
+# intranet - Intranet
+<Location /svn/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
+
+ <LimitExcept GET PROPFIND OPTIONS REPORT>
+ Require group intranet
+ </LimitExcept>
+
+</Location>
+
+
+# Horas Extra
+<Location /svn/he>
+
+ DAV svn
+ SVNPath /var/lib/svn/he
+ SVNReposName "Horas Extra"
+
+ <LimitExcept GET PROPFIND OPTIONS REPORT>
+ Require group he
+ </LimitExcept>
+
+</Location>
+
+# Horas Extra
+<Location /svn/llucar>
+
+ DAV svn
+ SVNPath /var/lib/svn/llucar
+ SVNReposName "Horas Extra"
+
+ <LimitExcept GET PROPFIND OPTIONS REPORT>
+ Require group llucar_ci
+ </LimitExcept>
+
+</Location>
+
+# mmarre
+<Location /svn/protocolizacion>
+
+ DAV svn
+ SVNPath /var/lib/svn/protocolizacion
+ SVNReposName "Protocolización"
+
+ <LimitExcept GET PROPFIND OPTIONS REPORT>
+ Require group protocolizacion
+ </LimitExcept>
+
+</Location>
+
+# SAMURAI - Sistema de Administracion y Mantenimiento de Usuarios Relativos A Intranet
+<Location /svn/samurai>
+
+ DAV svn
+ SVNPath /var/lib/svn/samurai
+ SVNReposName "SAMURAI - Sistema de Administracion y Mantenimiento de Usuarios Relativos A Intranet"
+
+ <LimitExcept GET PROPFIND OPTIONS REPORT>
+ Require group samurai
+ </LimitExcept>
+
+</Location>
+
+# MEconLib - Librerias de la Intranet del Ministerio de Economia
+<Location /svn/meconlib>
+
+ DAV svn
+ SVNPath /var/lib/svn/meconlib
+ SVNReposName "MEconLib - Librerias de la Intranet del Ministerio de Economia"
+
+ <LimitExcept GET PROPFIND OPTIONS REPORT>
+ Require group meconlib
+ </LimitExcept>
+
+</Location>
+
+# Scripts para carga de bases de datos.
+<Location /svn/scripts>
+
+ DAV svn
+ SVNPath /var/lib/svn/scripts
+ SVNReposName "Scripts varios"
+
+ <LimitExcept GET PROPFIND OPTIONS REPORT>
+ Require group scripts
+ </LimitExcept>
+
+</Location>
+
+# Brigada de evacuación ante emergencias.
+<Location /svn/brigada>
+
+ DAV svn
+ SVNPath /var/lib/svn/brigada
+ SVNReposName "Brigada de evacuación ante emergencias"
+
+ <LimitExcept GET PROPFIND OPTIONS REPORT>
+ Require group brigada
+ </LimitExcept>
+
+</Location>
+
+# bandas - Bandas Horarias Reloaded
+<Location /svn/bandas>
+
+ DAV svn
+ SVNPath /var/lib/svn/bandas
+ SVNReposName "bandas - Bandas Horarias Reloaded"
+
+ <LimitExcept GET PROPFIND OPTIONS REPORT>
+ Require group bandas
+ </LimitExcept>
+
+</Location>
+
+# infoleg - Nueva versión del sistema de Nora Chaponick
+<Location /svn/infoleg>
+
+ DAV svn
+ SVNPath /var/lib/svn/infoleg
+ SVNReposName "infoleg - Nueva versión del sistema de Nora Chaponick"
+
+ <LimitExcept GET PROPFIND OPTIONS REPORT>
+ Require group infoleg
+ </LimitExcept>
+
+</Location>
+
+# sistema - Sistema base de ejemplo.
+<Location /svn/sistema>
+
+ DAV svn
+ SVNPath /var/lib/svn/sistema
+ SVNReposName "sistema - Sistema base de ejemplo."
+
+ <LimitExcept GET PROPFIND OPTIONS REPORT>
+ Require group sistema
+ </LimitExcept>
+
+</Location>
+
+# ai - Administrador de Intranet
+<Location /svn/ai>
+
+ DAV svn
+ SVNPath /var/lib/svn/ai
+ SVNReposName "ai - Administrador de Intranet"
+
+ <LimitExcept GET PROPFIND OPTIONS REPORT>
+ Require group ai
+ </LimitExcept>
+
+</Location>
+
+# procad - Sistema de Capacitacion Online.
+<Location /svn/procad>
+
+ DAV svn
+ SVNPath /var/lib/svn/procad
+ SVNReposName "procad - Sistema de Capacitacion Online."
+
+ <LimitExcept GET PROPFIND OPTIONS REPORT>
+ Require group procad
+ </LimitExcept>
+
+</Location>
+
+# codep - Sistema de Gestiòn del Codificador de Dependencias
+<Location /svn/codep>
+
+ DAV svn
+ SVNPath /var/lib/svn/codep
+ SVNReposName "codep - Sistema de Gestiòn del Codificador de Dependencias"
+
+ <LimitExcept GET PROPFIND OPTIONS REPORT>
+ Require group codep
+ </LimitExcept>
+
+</Location>
+
+# art - Sistema de Seguros Riesgos de Trabajo
+<Location /svn/art>
+
+ DAV svn
+ SVNPath /var/lib/svn/art
+ SVNReposName "art - Sistema de Seguros Riesgos de Trabajo"
+
+ <LimitExcept GET PROPFIND OPTIONS REPORT>
+ Require group art
+ </LimitExcept>
+
+</Location>
+
+# bandasnovedades - Sistema para la visualización de las bandas horarias y novedades de personal para el personal jerárquico
+<Location /svn/bandasnovedades>
+
+ 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"
+
+ <LimitExcept GET PROPFIND OPTIONS REPORT>
+ Require group bandasnovedades
+ </LimitExcept>
+
+</Location>
+
+# estadisticas - Estadisticas Web
+<Location /svn/estadisticas>
+
+ DAV svn
+ SVNPath /var/lib/svn/estadisticas
+ SVNReposName "estadisticas - Estadisticas Web"
+
+ <LimitExcept GET PROPFIND OPTIONS REPORT>
+ Require group estadisticas
+ </LimitExcept>
+
+</Location>
+
+# presupuesto - Sistema de administracion de pagos y previsiones de sentencias judiciales
+<Location /svn/presupuesto>
+
+ DAV svn
+ SVNPath /var/lib/svn/presupuesto
+ SVNReposName "presupuesto - Sistema de administracion de pagos y previsiones de sentencias judiciales"
+
+ <LimitExcept GET PROPFIND OPTIONS REPORT>
+ Require group presupuesto
+ </LimitExcept>
+
+</Location>
+
+# yatta - YA Tenemos Tus Archivos. Administrador de Procesos y Tacho de Archivos.
+<Location /svn/yatta>
+
+ DAV svn
+ SVNPath /var/lib/svn/yatta
+ SVNReposName "YATTA - YA Tenemos Tus Archivos. Administrador de Procesos y Tacho de Archivos."
+
+ <LimitExcept GET PROPFIND OPTIONS REPORT>
+ Require group yatta
+ </LimitExcept>
+
+</Location>
+
+# proyectos_ley - Sistema de Proyectos de Ley
+<Location /svn/proyectos_ley>
+
+ DAV svn
+ SVNPath /var/lib/svn/proyectos_ley
+ SVNReposName "proyectos_ley - Sistema de Proyectos de Ley"
+
+ <LimitExcept GET PROPFIND OPTIONS REPORT>
+ Require group proyectos_ley
+ </LimitExcept>
+
+</Location>
+
+# renavi - Registro Nacional de Multiplicadores e Incubadores Avicolas
+<Location /svn/renavi>
+
+ DAV svn
+ SVNPath /var/lib/svn/renavi
+ SVNReposName "renavi - Registro Nacional de Multiplicadores e Incubadores Avicolas"
+
+ <LimitExcept GET PROPFIND OPTIONS REPORT>
+ Require group renavi
+ </LimitExcept>
+
+</Location>
--- /dev/null
+desarrolladores: llucar manazar mdegan msklar mmarre
--- /dev/null
+llucar:ZoTPeX7rui06U
+msklar:6DHiwPGeTbjSQ
+mdegan:BG3.8Iwkoy96c
+mmarre:nuTGFACElSDk.
+sotton:eSix22256xdGU
+matsch:6xqWkWBz1HJZ2
+manazar:xiouQzX42MXvQ
+vcrehu:ZWjBZUUxPObeQ
+mazzoni:05W3Y49yYw04I
+www-data:c3N4.J/QmVVLI
--- /dev/null
+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