rap/doc/en/CONVENCIONES.1
2013-12-12 23:58:16 -03:00

235 lines
5.7 KiB
Groff

.TH "CONVENCIONES" "2" "2013" "Manual de LibreVPN" "lvpn"
.SH NAME
.PP
Notas para desarrolladores de lvpn :)
.SH SYNOPSIS
.TP
.B lib/
comandos
.RS
.RE
.TP
.B lib/skel/
archivos base para tinc
.RS
.RE
.TP
.B doc/
documentación
.RS
.RE
.TP
.B bin/
programas de ayuda que no son especificamente de lvpn
.RS
.RE
.TP
.B etc/
código fuente extra
.RS
.RE
.TP
.B hosts/
archivos de nodos
.RS
.RE
.TP
.B nodos/
nodos propios
.RS
.RE
.TP
.B locale/
traducciones
.RS
.RE
.SH DESCRIPTION
.SS Dónde van los scripts
.PP
El script \f[I]lvpn\f[] autodescubre los comandos siguiendo la
convención \f[I]lib/lvpn\-tuscript\f[].
Además setea algunas variables de entorno que los scripts pueden usar
para saber en qué red están trabajando.
.PP
Los scripts pueden estar en cualquier lenguaje de programación mientras
sepan leer esas variables de entorno.
.SS Variables de entorno
.PP
Estas son las variables de entorno que \f[I]lvpn\f[] exporta para el
resto de los comandos.
.TP
.B TINC
Ubicación del directorio del nodo, por defecto \f[I]/etc/tinc/lvpn\f[].
.RS
.RE
.TP
.B NETWORK
Nombre de la red, por defecto el último directorio de \f[I]TINC\f[].
.RS
.RE
.TP
.B LVPN
Path completo de \f[I]lvpn\f[].
.RS
.RE
.TP
.B LVPN_DIR
Path completo del directorio de trabajo, por defecto el directorio base
de \f[I]LVPN\f[]
.RS
.RE
.TP
.B LVPN_LIBDIR
Path completo del directorio de comandos.
.RS
.RE
.TP
.B LVPN_HOSTS
Path completo del directorio de hosts.
.RS
.RE
.TP
.B LVPN_BEADLE
Path completo del directorio de llaves anunciables nuevas de
desconocidos.
.RS
.RE
.TP
.B KEYSIZE
Tamaño por defecto de las llaves.
.RS
.RE
.TP
.B LVPN_SUBNET
El rango de IPv4
.RS
.RE
.TP
.B LVPN_SUBNET6
El rango de IPv6
.RS
.RE
.TP
.B TINCD_FLAGS
Flags para el demonio \f[I]tincd\f[].
.RS
.RE
.TP
.B PORT
Puerto por defecto
.RS
.RE
.TP
.B sudo
Usar esta variable delante de cualquier comando que deba correr con
privilegios de root, ej: \f[I]${sudo} rsync\f[].
Requiere \f[I]"root=true"\f[] al principio del script.
.RS
.RE
.SS Dónde va la documentación
.PP
La documentación lleva el nombre completo del script:
\f[I]doc/idioma/lvpn\-tuscript.markdown\f[].
La función \f[I]help()\f[] en \f[I]lib/msg\f[] lo lleva como argumento
para mostrar la ayuda.
.PP
Además, toma la variable de entorno \f[I]PAGER\f[] para paginar la
salida, por defecto se usa \f[I]less\f[].
.SS Flags y parámetros
.PP
\f[I]lvpn comando\f[] \-flags nodolocal parametros extra
.PP
Seguido de \f[I]lvpn\f[] viene el comando, al que se le pasan en orden
las flags (con sus opciones).
El primer parámetro siempre tiene que ser el nodo local en el que se
realiza la acción.
Luego vienen los parámetros extra (nombres de otros nodos, por ejemplo).
.SS Funciones comunes
.PP
En el archivo \f[I]lib/common\f[] se almacenan las funciones de uso
común entre todos los comandos.
Se la puede incluir en un script añadiendo la línea
.IP
.nf
\f[C]
\&.\ "${LVPN_LIBDIR}"/common
\f[]
.fi
.PP
al principio del script.
.PP
Nota: Agregar \f[I]root=true\f[] antes de common para poder correr
funciones de root.
.SS Variables
.IP \[bu] 2
self: nombre del script.
Usado para obtener el nombre del script.
Ejemplo: \f[I]help $self\f[] llama a la ayuda del script actual.
.SS Funciones
.IP \[bu] 2
\f[I]add\f[]to_file()\f[I]: Agrega una línea al final de un archivo.
Uso: \f[]add_to_file archivo "Texto a agregar"_
.IP \[bu] 2
\f[I]requires()\f[]: Indica que el script necesita que un programa se
encuentre en el PATH.
Se recomienda cuando el script llama a un programa que puede no
encontrarse en una instalación estándar.
Uso: \f[I]requires avahi\-publish rsync\f[]
.IP \[bu] 2
\f[I]get_node_dir()\f[]: Encuentra el directorio de un nodo pasándole el
nombre del nodo como argumento.
\f[I]node\f[]dir="(\f[I]g\f[]\f[I]e\f[]\f[I]t\f[]~\f[I]n\f[]~\f[I]o\f[]\f[I]d\f[]\f[I]e\f[]~\f[I]d\f[]~\f[I]i\f[]\f[I]r\f[]{node})"_
.IP \[bu] 2
\f[I]get_node_file()\f[]: Encuentra el archivo de host de un nodo dentro
del directorio del nodo.
\f[I]node\f[]file="(\f[I]g\f[]\f[I]e\f[]\f[I]t\f[]~\f[I]n\f[]~\f[I]o\f[]\f[I]d\f[]\f[I]e\f[]~\f[I]f\f[]~\f[I]i\f[]\f[I]l\f[]\f[I]e\f[]{node})"_
.IP \[bu] 2
\f[I]get_node_name()\f[]: Limpia el nombre del nodo de caracteres
inválidos
.IP \[bu] 2
\f[I]get_host_file()\f[]: Obtiene el archivo del nodo en $LVPN_HOSTS
.IP \[bu] 2
\f[I]find_init_system()\f[]: Encuentra el tipo de inicio de tinc.
Ver \f[I]lib/lvpn\-install\f[].
.IP \[bu] 2
\f[I]get_id()\f[]: Obtiene nombre y mail del responsable del nodo usando
git o usuario\@hostname.
.IP \[bu] 2
\f[I]get_ipv4()\f[]: Genera una dirección IPv4 a partir de LVPN_SUBNET.
.IP \[bu] 2
\f[I]get_ipv6()\f[]: Genera una dirección IPv6 a partir de LVPN_SUBNET6.
.SS Mensajes
.PP
En \f[I]lib/msg\f[] se encuentran las funciones básicas para imprimir
mensajes en la salida de errores estándar.
Esto es para que no sean procesados como la salida estándar de los
scripts, que se reservan para poder enviar la información a una tubería.
.PP
No es necesario incluirla ya que se llama desde \f[I]lib/common\f[].
.PP
Todas las funciones tienen soporte para traducciones utilizando gettext,
por lo que los mensajes que se completan con variables deben seguir el
formato de \f[I]printf\f[]: \f[I]%s\f[] para reemplazar por cadenas,
\f[I]%d\f[] para números enteros, etc.
.PP
Por ejemplo: \f[I]msg "Procesando el nodo %s..." "$node"\f[]
.IP \[bu] 2
\f[I]msg()\f[]: Información
.IP \[bu] 2
\f[I]error()\f[]: Mensaje de error
.IP \[bu] 2
\f[I]warning()\f[]: Alerta
.IP \[bu] 2
\f[I]fatal_error()\f[]: Imprime un mensaje de error y termina el
programa inmediatamente
.IP \[bu] 2
\f[I]tip()\f[]: Recomendaciones, por ejemplo, cual comando correr a
continuación.
.SS Los comandos
.PP
La mayoria de los comandos solo configuran, luego hay que enviar los
cambios a directorio de instalación con el comando \f[I]lvpn init
install\f[].
.SH AUTHORS
fauno <fauno@endefensadelsl.org>.