]> git.llucax.com Git - mecon/scripts.git/commitdiff
Primera version de archivos de soporte de subversion.
authorMartín Marrese <marrese@gmail.com>
Tue, 20 Jan 2004 16:50:32 +0000 (16:50 +0000)
committerMartín Marrese <marrese@gmail.com>
Tue, 20 Jan 2004 16:50:32 +0000 (16:50 +0000)
subversion/sapo/.htaccess [new file with mode: 0644]
subversion/sapo/index.html [new file with mode: 0644]
subversion/sapo/robots.txt [new file with mode: 0644]
subversion/sapo/sapo.php [new file with mode: 0644]
subversion/sapo/sapo.py [new file with mode: 0755]
subversion/sapo/svncreate [new file with mode: 0755]
subversion/sapo/template.conf [new file with mode: 0644]
subversion/svn/apache.conf [new file with mode: 0644]
subversion/svn/group [new file with mode: 0644]
subversion/svn/passwd [new file with mode: 0644]
subversion/svn/passwd.digest [new file with mode: 0644]

diff --git a/subversion/sapo/.htaccess b/subversion/sapo/.htaccess
new file mode 100644 (file)
index 0000000..dc7bdf7
--- /dev/null
@@ -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 (file)
index 0000000..c5e75f3
--- /dev/null
@@ -0,0 +1,14 @@
+<!-- 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>
diff --git a/subversion/sapo/robots.txt b/subversion/sapo/robots.txt
new file mode 100644 (file)
index 0000000..c6742d8
--- /dev/null
@@ -0,0 +1,2 @@
+User-Agent: *
+Disallow: /
diff --git a/subversion/sapo/sapo.php b/subversion/sapo/sapo.php
new file mode 100644 (file)
index 0000000..97cb0cb
--- /dev/null
@@ -0,0 +1,82 @@
+<!-- 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>
diff --git a/subversion/sapo/sapo.py b/subversion/sapo/sapo.py
new file mode 100755 (executable)
index 0000000..7b0bd4b
--- /dev/null
@@ -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 """<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()
+
+
diff --git a/subversion/sapo/svncreate b/subversion/sapo/svncreate
new file mode 100755 (executable)
index 0000000..0cf6681
--- /dev/null
@@ -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 (file)
index 0000000..dab5336
--- /dev/null
@@ -0,0 +1,11 @@
+
+# {REPOS} - {DESC}
+<Location {REPOS_WWW}>
+
+   SVNReposName "{DESC}"
+
+   <LimitExcept GET PROPFIND OPTIONS REPORT>
+      Require group {REPOS}
+   </LimitExcept>
+
+</Location>
diff --git a/subversion/svn/apache.conf b/subversion/svn/apache.conf
new file mode 100644 (file)
index 0000000..78bf911
--- /dev/null
@@ -0,0 +1,293 @@
+# 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>
diff --git a/subversion/svn/group b/subversion/svn/group
new file mode 100644 (file)
index 0000000..ccd3fb6
--- /dev/null
@@ -0,0 +1 @@
+desarrolladores: llucar manazar mdegan msklar mmarre
diff --git a/subversion/svn/passwd b/subversion/svn/passwd
new file mode 100644 (file)
index 0000000..59db873
--- /dev/null
@@ -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 (file)
index 0000000..7bd5b2f
--- /dev/null
@@ -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