<?xml version="1.0" encoding="ISO-8859-1"?>

<chapter id="administracion" role="periodo" userlevel="p1">
	<title>Administración</title>
  <highlights role="logros">
  <itemizedlist>
	  <listitem role="logro" id="ltablasbasicas"><para>Añade y elimina registros
			  a tablas básicas.
	  </para></listitem>
	  <listitem role="logro" id="lcopias"><para>Puede hacer volcados de
			  la base de  datos y sacar copias de forma segura.
	  </para></listitem>
	  <listitem role="logro" id="lconsultaweb"><para>Configura consulta web pública y retroalimentación por correo, así como desencriptar los mensajes que
			  se reciban.</para></listitem>
	  <listitem role="logro" id="logroa3"><para>Puede copiar los datos
			  públicos de una instalación de SIVeL a otra.
    	  </para></listitem>
  </itemizedlist>
  </highlights>
  <para>El rol de administrador desde la interfaz de SIVeL podrá especificar 
	  usuarios, modificar tablas básicas (con opciones de algunos de los 
	  campos de la ficha); y desde su cuenta en el sistema operativo
	  podrá crear nuevos usuarios, sacar copias de respaldo manualmente, 
	  programar copias automáticas y recuperar copias de respaldo
	  (en la misma base o en otra nueva); actualizar SIVeL y la 
	  distribución adJ del sistema operativo cuando se publiquen nuevas 
	  versiones (cada 6 meses); auditar seguridad del servidor y 
	  responder en caso de fallas; así 
	  mismo podrá manejar la base de datos subyacente a SIVeL en SQL. 
	  Consideramos que también es importante para el administrador  
	  sugerir mejoras a la infraestructura tecnológica 
	  (ver <xref linkend="infraestructura-tecnologica"/>) de su
	  organización, 	capacitar y dar soporte a los usuarios y 
	  en general consideramos que debe ayudar a garantizar que la 
	  base esté disponible permanentemente sólo para los usuarios 
	  autorizados de la organización.
  </para>
  <para>En la interfaz web un usuario que no tenga el rol de
	  Administrador no podrá ingresar a modificar tablas básicas ni 
	  a manejar usuarios. </para>

  <sect1 id="admin1">
	  <title>Labores administrativas desde la interfaz web</title>
  <sect2 id="tablasbasicas">
		<title>Tablas básicas</title>
		<para>Pueden configurarse las tablas presentadas en la
			siguiente figura:
		</para>
<informalfigure>
        <screenshot><mediaobject><imageobject>
        <imagedata fileref="ptablasbasicas.eps" format="EPS" scale="40" align="center"></imagedata></imageobject>
        <imageobject><imagedata fileref="ptablasbasicas.png" format="PNG" align="center"></imagedata></imageobject>
        <textobject><phrase>Tablas Básicas</phrase></textobject></mediaobject>
        </screenshot>
  </informalfigure>
		<para>
			Al elegir una de las tablas, verá los registros
			que tiene y podrá bien crear uno nuevo (con
			el enlace <literal>Nuevo</literal> al final
			de los registros) o bien elegir un registro
			para actualizarlo o para eliminarlo.  La
			siguiente figura ejemplifica los registros
			de las Fuentes Frecuentes.
			
		</para>
<informalfigure>
        <screenshot><mediaobject><imageobject>
        <imagedata fileref="ptablafrecuente.eps" format="EPS" scale="40" align="center"></imagedata></imageobject>
        <imageobject><imagedata fileref="ptablafrecuente.png" format="PNG" align="center"></imagedata></imageobject>
	<textobject><phrase>Edición de la tabla básica Fuentes Frecuentes</phrase></textobject></mediaobject>
        </screenshot>
  </informalfigure>

  <para>Para no perder compatibilidad entre su instalación
	  de SIVeL y la de otras organizaciones, pero a la vez para
	  permitirle personalizar el sistema a sus necesidades de
	  sistematización de información, sugerimos no cambiar ni eliminar
	  los registros por defecto de las tablas básicas, sino agregar
	  los que necesite su organización.   En la siguiente figura se
	  presenta el formulario para añadir una nueva fuente frecuente:
  	  </para>
<informalfigure>
        <screenshot><mediaobject><imageobject>
        <imagedata fileref="pnuevafrecuente.eps" format="EPS" scale="40" align="center"></imagedata></imageobject>
        <imageobject><imagedata fileref="pnuevafrecuente.png" format="PNG" align="center"></imagedata></imageobject>
	<textobject><phrase>Nueva Fuente Frecuente</phrase></textobject></mediaobject>
        </screenshot>
  </informalfigure>

  <para>Cada entrada (i.e registro) de una tabla básica tiene una llave, 
	       que puede constar de uno o más datos (i.e campos) del registro.
	     Al actualizar tablas básicas tenga en cuenta que no pueden
	     modificarse las llaves. Por ejemplo en una categoría ya 
	     ingresada no es posible modificar supracategoría o fecha
	     de violencia.  Si requiere actualizar una llave en un registro,
	     debe primero eliminarlo de la tabla básica y después volverlo a 
	     añadir haciendo los cambios apropiados.</para>
	<para>En general si añade datos a una tabla cuya llave sea un dato 
	     numérico, no necesitará elegir un número para la llave pues
	     el sistema lo hará automáticamente.</para>

  <para>
	  En general la información de cada tabla básica es autoexplicativa,
	  algunas que pueden requerir aclaración adicional son:
	  <itemizedlist>
		  <listitem>
			  <para>Categoría:  No se numeran
				  automáticamente para que cada organización
				  pueda proponer su codificación.
				  El campo "Contada también como 
				  Categoría" permite
				  indicar que categorías se replican, para
				  excluirlas de requerirse en conteos
				  (ver <xref linkend="cconteos"></xref>).
 	Por ejemplo toda ejecución extrajudicial
			por persecución política (A10) también es un 
			Homicidio Intencional a Persona Protegida (D701) por lo
			que en el registro A10 de la tabla Categoría el campo 
			"Contada también como Categoría" debe ser 701.
			  </para>
		  </listitem>
		  <listitem>
      <para>En la tabla <literal>Clase</literal> tenga en cuenta que no 
	      es posible actualizar el municipio ---porque hace parte de la 
	      llave primaria.  Si le resulta indispensable modificarlo,
	      elimine primero el registro y añado uno nuevo con los
	      datos corregidos. </para>
		  </listitem>
	  </itemizedlist>
	</para>
</sect2>

	<sect2 id="usuarios">
		<title>Usuarios</title>
		<para>
			Esta opción del menú presenta el listado de usuarios
			de la base (como se presenta en la figura)
		</para>
<informalfigure>
        <screenshot><mediaobject><imageobject>
        <imagedata fileref="pusuarios.eps" format="EPS" scale="40" align="center"></imagedata></imageobject>
        <imageobject><imagedata fileref="pusuarios.png" format="PNG" align="center"></imagedata></imageobject>
	<textobject><phrase>Usuarios</phrase></textobject></mediaobject>
        </screenshot>
  </informalfigure>
		<para>
			Podrá añadir nuevos usuarios y sus contraseñas
			(como se presenta en la siguiente figura), o cambiar 
			datos, rol y contraseñas de usuarios ya existentes.
		</para>
  <informalfigure>
        <screenshot><mediaobject><imageobject>
        <imagedata fileref="pusuarionuevo.eps" format="EPS" scale="40" align="center"></imagedata></imageobject>
        <imageobject><imagedata fileref="pusuarionuevo.png" format="PNG" align="center"></imagedata></imageobject>
	<textobject><phrase>Nuevo Usuario</phrase></textobject></mediaobject>
        </screenshot>
  </informalfigure>

	</sect2> 
  </sect1>



  <sect1 id="admin2">
	  <title>Labores administrativas desde el interprete de comandos</title>
	<sect2 id="copias-respaldo">
		<title>Copias de respaldo y restauración</title>
		<para>
			Hay varias herramientas relacionadas con copias
			de respaldo:
			<variablelist>
				<varlistentry><term><filename>bin/pgdump.sh</filename></term>
					<listitem>
						<para>Saca volcado de la base 
(i.e un volcado es un archivo con instrucciones SQL para
reconstruir la base completa), lo almacena 
junto con los del último mes en el directorio de respaldo configurado 
--por defecto es <filename>/var/www/resbase</filename> que en adJ 
está encriptado.  </para>
<warning><para>Los volcados generados con <filename>bin/pgdump.sh</filename>
		incluyen las fuentes de información.  Debe mantenerlos 
		encriptados y con permisos que no permitan lectura
		por parte de usuarios que no administren.</para></warning>

					</listitem>
				</varlistentry>
				<varlistentry><term><filename>bin/respaldo.sh</filename></term>
					<listitem><para>Almacena volcado 
junto con los de última semana y opcionalmente lo copia de forma segura (con 
<literal>ssh</literal>) a otro(s) computador(es).</para>
<warning><para>Las copias de envíe manténgalas  en directorios encriptados
		en los computadores donde lleguen.
</para></warning>
<para>Especifique cada computador destino y usuario en la variable
<literal>$rremotos</literal> separandolos con espacio, por ejemplo 
un sólo destino sería 
<literal>jaime@miservidor.cc.cc:copiasencriptadas/</literal>.  Para
que pueda hacer automático el copiado, genere un par de llaves RSA sin
clave con <literal>ssh-keygen</literal>, configure la llave
privada en la variable <literal>$llave</literal> y agregue la
llave pública en el archivo <filename>~/.ssh/authorized_keys</filename>
de la cuenta a la que enviará las copias.
</para></listitem>
				</varlistentry>
				<varlistentry><term><filename>bin/copiacd.sh</filename></term>
					<listitem><para>Que quema un CD con 
el contenedor encriptado (por defecto <filename>/var/resbase.img</filename>)
del directorio de respaldos.</para></listitem>
				</varlistentry>
				<varlistentry><term><filename>bin/restaura.sh</filename></term>
					<listitem><para>Que permite restaurar un volcado SQL de la base de datos. Por ejemplo si el volcado está ubicado en <filename>/mnt/usb/volcado.sql</filename> para incluirlo en la base basta:
							<screen>
cd /var/www/users/sivel
bin/restaura.sh /mnt/usb/volcado.sql
</screen>El volcado puede estar comprimido con gzip.
<warning><para>Los volcados generados con <filename>bin/pgdump.sh</filename>
		incluyen instrucciones para borrar las
		tablas existentes antes de insertar los registros volcados.
		Es decir al restaurarlos borran la información que hubiera
		en la base.  
</para></warning>
Es posible editar los volcados antes de restaurarlos, para eso deben 
descomprimirse antes, por ejemplo:
<screen>
cp /var/www/resbase/sivel-dump-22.sql.gz /tmp/volcado.sql.gz
gzip -d /tmp/volcado.sql.gz
</screen>
Si requiere editar un volcado para eliminar las líneas que borran
las tablas  (i.e las de la forma <literal>DROP TABLE</literal>) puede
emplear:
		<screen>
grep -v "DROP TABLE" /tmp/volcado.sql > /tmp/volcadosindrops.sql
		</screen>
Para ver brevemente las diferencias entre 2 volcados puede
emplear:
		<screen>
diff /tmp/volcado.sql /tmp/volcadosindrops.sql | less
		</screen>
</para></listitem>
				</varlistentry>
				<varlistentry><term><filename>bin/importacd.sh</filename></term>
					<listitem><para>Que intenta restaurar 
la base de datos de un volcado posiblemente incluido en un CD quemado
con <filename>bin/copiacd.sh</filename>.  Antes de efectuar este procedimiento
saque un volcado de la base que tenga.
</para></listitem>
				</varlistentry>


			</variablelist>
Se recomienda que configure ejecución diaria de <filename>bin/respaldo.sh</filename>.
En adJ esto se hace con una tarea cron diaría a las 12:00M</para>
	
	<sect3 id="volcado">
		<title>Procedimiento de volcado en detalle</title>
		<para>
	Si no tiene una instalación de adJ estándar ajuste variables
	relacionadas con volcados en <filename>aut/conf.php</filename>,
	en particular la variable <literal>rlocal</literal>
	que debe tener el directorio en el que quedarán los volcados
	generados con <filename>bin/pgdump.sh</filename>.
		</para>
		<para>
Para sacar un volcado comprimido de la base, desde un interprete de
comandos:
<screen>
$ cd /var/www/users/sivel
$ bin/pgdump.sh
</screen>
Al ejecutarlo se generará un archivo  de la forma
<filename>/var/www/resbase/sivel-dump-08.sql.gz</filename>, en lugar de
<filename>/var/www/resbase/</filename> el directorio que haya configurado y
en lugar de <literal>08</literal> el día del mes.
		</para>
	</sect3>

        </sect2>
	<sect2 id="publicacion-web">
		<title>Publicación web</title>
		<para>Suponemos que tiene una segunda instalación de
			SIVeL --preferiblemente en un computador diferente
			al de la base principal-- para consulta pública por
			el web de los datos públicos (i.e sin fuentes).
			Para actualizar esa segunda instalación debe:
			<orderedlist>
				<listitem>
					<para>En la instalación fuente
asegúrese de configurar computador destino en la variable
<literal>$maquinaweb</literal>, por ejemplo <literal>miservidor.cc.cc</literal>.
El usuario destino en <literal>$usuarioact</literal> y el
directorio donde quedará un volcado en el destino (la información
que llegará a este directorio no incluye fuentes por lo que no
requiere estar encriptado), por ejemplo <literal>/var/www/resbase</literal>.
					</para>
				</listitem>
				<listitem>
					<para>En la instalación fuente como
usuario administrador de SIVeL ejecute:
						<screen>
cd /var/www/users/sivel
bin/actweb.sh
						</screen>
Este script generará un volcado, del cual eliminará las fuentes y
enviará el volcado resultante con <literal>scp</literal> al destino 
configurado con un nombre de la forma
<literal>web-sf-sinf-22.sql.gz</literal>.
					</para>
				</listitem>
				<listitem>
					<para>Ingrese al servidor destino
						y ejecute:
						<screen>
cd /var/www/users/sivel	
bin/pgdump.sh
bin/pubweb.sh
						</screen>

					</para>
				</listitem>
			</orderedlist>
		</para>
		<!--		<para>
			Otra posibilidad Desde Consulta Externa eliga el rango de datos 
		       que exportará y publicará	Hay varias herramientas relacionadas con copias
	       </para> -->
       </sect2>	
       
       <sect2 id="retroalimentacion">
	<title>Retroalimentación por correo desde Consulta Web</title>
	<para> La información complementada por un usuario en el
		formulario que se ve tras oprimir el botón
		'Comente Caso', será encriptada 
		y enviada a una cuenta de correo.
	</para>
	<para>	Hay 3 aspectos por 
		configurar:
		<itemizedlist>
			<listitem>
				<para>Ubicación del programa
					<literal>openssl</literal>. 
					Que típicamente será
					ubicado por el 
					script <literal>bin/prep-chroot.sh</literal> 
					en el directorio
					<filename>/var/www/usr/sbin/</filename>
					y autodetectado o especificado en el 
					momento de la configuración con
					<literal>conf.sh</literal></para>
			</listitem>
			<listitem>
				<para>Llave de encripción.  Especificada en el 
					archivo <filename>aut/conf.sh</filename> 
					como <literal>PALABRA_SITIO</literal>. 
					<warning><para>Cambie la llave de encripción que se distribuye con SIVeL.
					</para></warning>
					</para>
			</listitem>
			<listitem>
				<para>Cuenta de correo que recibirá la 
					información encriptada. Especificada 
					en el archivo <filename>aut/conf.sh</filename>
					variable 
					<literal>receptor_correo</literal>.</para>
			</listitem>
		</itemizedlist>
		
		En la cuenta configurada se recibirán dos correos por cada
		retroalimentación, ambos con el mismo mensaje pero el primero 
		lo incluye en el cuerpo del mensaje en hexadecimal, mientras
		que el segundo lo incluye en binario como adjunto.
	</para>
	<para>El adjunto puede guardarse en un archivo, digamos
		<filename>/tmp/encriptado</filename>, y si la llave de
		encripción fuera la cadena <literal>La llave</literal>,
		podría desencriptarse y guardarse en el archivo
		<filename>/tmp/desenc</filename> con:
		<screen>
openssl bf -nosalt -d -in /tmp/encri -out /tmp/desenc -k "La llave"
		</screen>
	</para>
	<para>El mensaje en hexadecimal primero tendría que salvarse
		en un archivo, digamos <filename>/tmp/hex</filename>,
		pasarse a binario, digamos al archivo 
		<filename>/tmp/encriptado</filename> y después
		desencriptarse como se explicó en el párrafo anterior.
		Para convertir de hexadecimal a binario podría
		emplear el script <filename>herram/hex2bin.php</filename> 
		distribuido
		con las fuentes de SIVeL, que de estar ubicadas en
		<filename>/var/www/users/sivel</filename>, se emplearía
		así:
		<screen>
cd /var/www/users/sivel
php herram/hex2bin.php &lt; /tmp/hex &gt; /tmp/encriptado
		</screen>
	</para>
	</sect2>

</sect1>
<sect1 id="serviciosweb">
	<title>Servicios web</title>
	<para>Permiten a otras aplicaciones web, emplear SIVeL. </para>

	<sect2 id="swconsultaweb">
		<title>Consulta</title>
		<para>La consulta web puede emplearse sin 
			autenticación aunque en tal caso cuenta con
			menos filtros de búsqueda y puede tener
			restricciones (fecha mínima, fecha máxima y
			cantidad de resultados,
			ver <xref linkend="detalles-interfaz"></xref>).
		</para>
		<para>
			Suponiendo que opera un SIVeL para consulta
			pública en &URL-BASE;/consulta_web.php, puede
			solicitar una consulta sin filtros de búsqueda y que
			muestre todos los campos en formato de tabla en:
			<screen>
&URL-BASE;/consulta_web.php?_qf_consultaWeb_consulta=Consulta&amp;mostrar=tabla&amp;caso_memo=1&amp;caso_fecha=1&amp;m_localizacion=1&amp;m_victimas=1&amp;m_presponsables=1&amp;m_tipificacion=1
			</screen>
Puede elegir menos campos poniendo 0 en lugar de 1 en los que no 
requiera o no poniendolos, por ejemplo para ver sólo las fechas, agregue
a la dirección base:
<screen>
consulta_web.php?_qf_consultaWeb_consulta=Consulta&amp;mostrar=tabla&amp;caso_fecha=1
</screen>
Los filtros de búsqueda se agregan a lo anterior como se ejemplifica a 
continuación:
<variablelist>
	<varlistentry><term>
Titulo del caso es 5:
		</term>
		<listitem>
			<screen>
			titulo=5
			</screen>
		</listitem>
	</varlistentry>

	<varlistentry><term>Fecha inicial es 1.Ene.2007</term>
		<listitem>
			<screen>
			fini[d]=1&amp;fini[M]=1&amp;fini[Y]=2007
			</screen>
		</listitem>
	</varlistentry>
	<varlistentry><term>
			Fecha final es 1.Ene.2008
		</term>
		<listitem>
			<screen>
			fini[d]=1&amp;fini[M]=1&amp;fini[Y]=2008
			</screen>
		</listitem>
	</varlistentry>
	<varlistentry><term>
Departamento Santander (codigo 68 en DIVIPOLA):
		</term>
		<listitem>
			<screen>
			id_departamento=68
			</screen>
		</listitem>
	</varlistentry>
	<varlistentry><term>
Municipio  Barrancabermeja de Santander (código 81 en DIVIPOLA):
		</term>
		<listitem>
			<screen>
			id_departamento=68&amp;id_municipio=81
			</screen>
		</listitem>
	</varlistentry>
	<varlistentry><term>
	Cabecera municipal Barrancabermeja (centro poblado con código 0 en el 
			municipio Barrancabermeja):
		</term>
		<listitem>
			<screen>
			id_departamento=68&amp;id_municipio=81&amp;id_clase=0
		</screen>
		<para>
			Los datos geograficos están disponibles
			en Internet (busque DIVIPOLA) o en SQL en las fuentes 
			de SIVeL en el archivo 
			<filename>datos-geo-col.sql</filename>.
		</para>
		</listitem>
	</varlistentry>

	<varlistentry><term>
Sólo ejecuciones extrajudiciales por persecución política
(tipo de violencia Derechos Humanos A, supracategoria: Persecución política 1,
Categoria: ejecución extrajudicial: 10):
		</term>
		<listitem>
			<screen>
			clasificacion[0]=A:1:10
		</screen>
		<para>El marco conceptual puede consultarlo en <xref linkend="marco"></xref>, o en SQL está en las fuentes de SIVeL en el archivo
			<filename>datos_caso.sql</filename></para>
		</listitem>
	</varlistentry>


	<varlistentry><term>
Ejecuciones por persecución o por intolerancia social:
		</term>
		<listitem>
			<screen>
			clasificacion[0]=A:1:10&amp;clasificacion[1]=A:2:20
			</screen>
		</listitem>
	</varlistentry>


	<varlistentry><term>
Presunto responsable Policia:
		</term>
		<listitem>
			<screen>
			presponsable=7
		</screen>
		<para>Los códigos los puede revisar desde 
			Adminstración->Tablas Básicas o en
			el archivo <filename>datos-caso.sql</filename>
		</para>
		</listitem>
	</varlistentry>


	<varlistentry><term>
		Sector Social campesino:
		</term>
		<listitem>
			<screen>
			ssocial=1
		</screen>
		<para> Puede ver los código en Tablas Básicas o en
			el archivo <filename>datos-implicado.sql</filename>
		</para>
		</listitem>
	</varlistentry>


	<varlistentry><term>
Nombre o apellido de la víctima incluyen cadena Orielao:
		</term>
		<listitem>
			<screen>
			nomvic=Orielao
			</screen>
		</listitem>
	</varlistentry>

</variablelist>


Con respecto a la forma de presentación de la información pueden
emplearse las siguientes variables:
<variablelist>
	<varlistentry><term><literal>
ordenar 
	</literal></term>
		<listitem>
			<para>
				Puede ser <literal>localizacion</literal> o 
				<literal>fecha</literal>
			</para>
		</listitem>
	</varlistentry>
	<varlistentry><term><literal>
mostrar 
	</literal></term>
		<listitem>
			<para>
				Puede ser <literal>tabla</literal>,
				<literal>revista</literal> o
				<literal>csv</literal>.
				Para procesamiento automático seguramente
				preferirá CSV (valores separados por comas).
			</para>
		</listitem>
	</varlistentry>
	<varlistentry><term><literal>
m_varlineas 
	</literal></term>
		<listitem>
			<para>
				Puede ser 0 o 1 si se quiere la descripción
				de cada caso en tabla o no.
			</para>
		</listitem>
	</varlistentry>
	<varlistentry><term><literal>
m_tex 
	</literal></term>
		<listitem>
			<para>
				0, 1 para indicar si dese algunos detalles
				de la presentación en TeX.
			</para>
		</listitem>
	</varlistentry>

		<varlistentry><term><literal>
caso_memo
	</literal></term>
		<listitem>
			<para>
				0, 1 para indicar inclusión de la descripción de cada caso.
			</para>
		</listitem>
	</varlistentry>
		<varlistentry><term><literal>
caso_fecha
	</literal></term>
		<listitem>
			<para>
				0, 1 para indicar inclusión de la fecha de cada caso.
			</para>
		</listitem>
	</varlistentry>
	<varlistentry><term><literal>
m_localizacion
	</literal></term>
		<listitem>
			<para>
				0, 1 para indicar inclusión de la localización geográfica.
			</para>
		</listitem>
	</varlistentry>
<varlistentry><term><literal>
m_victima
	</literal></term>
		<listitem>
			<para>
				0, 1 para indicar inclusión de víctimas.
			</para>
		</listitem>
	</varlistentry>
<varlistentry><term><literal>
m_presponsable
	</literal></term>
		<listitem>
			<para>
				0, 1 para indicar inclusión de presuntos responsables.
			</para>
		</listitem>
	</varlistentry>
<varlistentry><term><literal>
m_tipificacion
	</literal></term>
		<listitem>
			<para>
				0, 1 para indicar inclusión de categoría(s) de violencia.
			</para>
		</listitem>
	</varlistentry>

</variablelist>


</para>
</sect2>

</sect1>

</chapter>
