CONVENCIONES(2)

NAME

Notas para desarrolladores de lvpn :)

SYNOPSIS

lib/
    comandos

lib/skel/
    archivos base para tinc

doc/
    documentación

bin/
    programas de ayuda que no son especificamente de lvpn

etc/
    código fuente extra

hosts/
    archivos de nodos

nodos/
    nodos propios

locale/
    traducciones

DESCRIPTION

  Dónde van los scripts

El script lvpn autodescubre los comandos siguiendo la convención lib/lvpn-tuscript. Además setea algunas variables de entorno que los scripts pueden usar para saber en qué red están trabajando.

Los scripts pueden estar en cualquier lenguaje de programación mientras sepan leer esas variables de entorno.

  Variables de entorno

Estas son las variables de entorno que lvpn exporta para el resto de los comandos.

TINC
    Ubicación del directorio del nodo, por defecto /etc/tinc/lvpn.

NETWORK
    Nombre de la red, por defecto el último directorio de TINC.

LVPN
    Path completo de lvpn.

LVPN_DIR
    Path completo del directorio de trabajo, por defecto el directorio base de LVPN

LVPN_LIBDIR
    Path completo del directorio de comandos.

LVPN_HOSTS
    Path completo del directorio de hosts.

LVPN_BEADLE
    Path completo del directorio de llaves anunciables nuevas de desconocidos.

KEYSIZE
    Tamaño por defecto de las llaves.

LVPN_SUBNET
    El rango de IPv4

LVPN_SUBNET6
    El rango de IPv6

TINCD_FLAGS
    Flags para el demonio tincd.

PORT
    Puerto por defecto

sudo
    Usar esta variable delante de cualquier comando que deba correr con privilegios de root, ej: ${sudo} rsync. Requiere “root=true” al principio del script.

  Dónde va la documentación

La documentación lleva el nombre completo del script: doc/idioma/lvpn-tuscript.markdown. La función help() en lib/msg lo lleva como argumento para mostrar la ayuda.

Además, toma la variable de entorno PAGER para paginar la salida, por defecto se usa less.

  Flags y parámetros

lvpn comando -flags nodolocal parametros extra

Seguido de lvpn 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).

  Funciones comunes

En el archivo lib/common se almacenan las funciones de uso común entre todos los comandos. Se la puede incluir en un script añadiendo la línea

    . "${LVPN_LIBDIR}"/common

al principio del script.

Nota: Agregar root=true antes de common para poder correr funciones de root.

  Variables

•   self: nombre del script. Usado para obtener el nombre del script. Ejemplo: help $self llama a la ayuda del script actual.

  Funciones

•   add_to_file(): Agrega una línea al final de un archivo. Uso: add_to_file archivo “Texto a agregar”

•   requires(): 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: requires avahi-publish rsync

•   get_node_dir(): Encuentra el directorio de un nodo pasándole el nombre del nodo como argumento. node_dir=“$(get_node_dir ${node})”

•   get_node_file(): Encuentra el archivo de host de un nodo dentro del directorio del nodo. node_file=“$(get_node_file ${node})”

•   get_node_name(): Limpia el nombre del nodo de caracteres inválidos

•   get_host_file(): Obtiene el archivo del nodo en $LVPN_HOSTS

•   find_init_system(): Encuentra el tipo de inicio de tinc. Ver lib/lvpn-install.

•   get_id(): Obtiene nombre y mail del responsable del nodo usando git o usuario@hostname.

•   get_ipv4(): Genera una dirección IPv4 a partir de LVPN_SUBNET.

•   get_ipv6(): Genera una dirección IPv6 a partir de LVPN_SUBNET6.

  Mensajes

En lib/msg 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.

No es necesario incluirla ya que se llama desde lib/common.

Todas las funciones tienen soporte para traducciones utilizando gettext, por lo que los mensajes que se completan con variables deben seguir el formato de printf: %s para reemplazar por cadenas, %d para números enteros, etc.

Por ejemplo: msg “Procesando el nodo %s...” “$node”

•   msg(): Información

•   error(): Mensaje de error

•   warning(): Alerta

•   fatal_error(): Imprime un mensaje de error y termina el programa inmediatamente

•   tip(): Recomendaciones, por ejemplo, cual comando correr a continuación.

  Los comandos

La mayoria de los comandos solo configuran, luego hay que enviar los cambios a directorio de instalación con el comando lvpn init install.

AUTHORS
Nicolás Reynolds <fauno@endefensadelsl.org>.