Script en Python que sirve para obtener, cuales deben ser las líneas a ser agregadas en el authz file, una vez se sepa cual es la poítica de accesos que desea el responsable del Repositorio.
1. 1. Se tiene el siguiente contenido en un fichero llamado file en la carpeta de trabajo:
PROG-ASI1 [paulino,rafa,jose]
maria[maria,pedro]
sofi[sofia,juan]
andres[andres]
raul[andres,pedro,rauli]
Este fichero contiene la política de acceso al repositorio PROG-ASI1, sobre el cual trabajará un
conjunto de usuarios
2. Ejecutando el siguiente script Python se obtienen dos ficheros en /tmp: output_perm y output_us
Los contenidos de dichos ficheros deben ser agregados por el Administrador de Repositorios al
fichero authz
#!/usr/bin/env pyton
import re
D={}
S=set([])
T=set([])
def agrupar(line):
match=separar(line)
repos=match.group(1).rstrip()
D[repos]=match.group(2)
def separar(line):
line=line.rstrip()
line=line.lstrip()
match=re.match('(.*)[(.*)](.*)',line)
return match
def put_en_set(clave):
for i in D:
if i!=clave:
alum=D[i].split(',')
for a in alum:
S.add(a)
def presentar(A):
c=''
i=0
for t in A:
if i<len(A)-1:
c+='%s,' % t
else:
c+='%s' % t
2. i+=1
return c
def main():
f=open('file')
while True:
line=f.readline()
if not line:
break
agrupar(line)
if len(D.keys()) == 1:
for clave in D:
repositorio=clave
us_rw_repos=D[clave]
put_en_set(clave) # generar el total de autorizados al
repo
output_us = open('/tmp/output_us', 'w')
output_perm = open('/tmp/output_perm', 'w')
output_us.write('u-rw-%s = %sn' %
(repositorio,us_rw_repos))
c=presentar(S)
output_us.write('u-r-%s = %sn' % (repositorio,c))
output_perm.write('[%s:/]n' % repositorio)
output_perm.write('@u-rw-%s = rwn' % repositorio)
output_perm.write('@u-r-%s = rn' % repositorio)
for i in D:
if i!=clave:
alum=D[i].split(',')
for a in alum:
T.add(a)
R=S-T
c=presentar(alum)
output_us.write('u-rw-%s-%s = %sn' %
(repositorio,i,c))
c=presentar(R)
output_us.write('u-nor-%s-%s = %sn' %
(repositorio,i,c))
output_perm.write('[%s:/%s]n' % (repositorio,i))
output_perm.write('@u-rw-%s-%s = rwn' %
(repositorio,i))
output_perm.write('@u-nor-%s-%s = n' %
(repositorio,i))
T.clear()
R.clear()
output_perm.close()