From: Guus Sliepen Date: Fri, 20 Oct 2000 16:49:20 +0000 (+0000) Subject: - Made Makefile.am stub for doc/es/ X-Git-Tag: release-1.0pre3~74 X-Git-Url: https://tinc-vpn.org/git/browse?a=commitdiff_plain;h=fba19c30c92d39e74f5fd5594053793b036f30f4;p=tinc - Made Makefile.am stub for doc/es/ - Merged genauth into tincd - Updated dutch translation --- diff --git a/doc/es/Makefile.am b/doc/es/Makefile.am new file mode 100644 index 00000000..756d6707 --- /dev/null +++ b/doc/es/Makefile.am @@ -0,0 +1,3 @@ +## Process this file with automake to get Makefile.in + +# Nothing to see here, go away! diff --git a/lib/list.c b/lib/list.c new file mode 100644 index 00000000..5358f198 --- /dev/null +++ b/lib/list.c @@ -0,0 +1,146 @@ +/* + list.c -- functions to deal with double linked lists + Copyright (C) 2000 Ivo Timmermans + 2000 Guus Sliepen + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + $Id: list.c,v 1.1 2000/10/20 16:44:32 zarq Exp $ +*/ + +#include "config.h" + +#include + +#include +#include +#include + +#include + +/* + list_new + + Initialize a new list. +*/ +list_t *list_new(void) +{ + list_t *list; + + list = xmalloc_and_zero(sizeof(list_t)); + return list; +} + +/* + list_delete + + Delete the element pointed to by idx from the list. +*/ +list_node_t *list_delete(list_t *list, list_node_t *idx) +{ + list_node_t *res; + + if(!list) + return NULL; + if(!idx) + return NULL; + + if(list->callbacks->delete != NULL) + if(list->callbacks->delete(idx->data)) + error(ERR_WARNING, N_("List callback[delete] failed for %08lx - freeing anyway"), idx->data); + + free(idx->data); + + if(idx->prev == NULL) + /* First element in list */ + { + res = idx->next; + list->head = idx->next; + } + if(idx->next == NULL) + /* Last element in list */ + { + res = NULL; + list->tail = idx->prev; + } + if(idx->prev != NULL && idx->next != NULL) + /* Neither first nor last element */ + { + idx->prev->next = idx->next; + idx->next->prev = idx->prev; + } + if(list->head == NULL) + list->tail = NULL; + else + if(list->tail == NULL) + list->head = NULL; + free(idx); + return res; +} + +/* + list_forall_nodes + + Call function() on each element in the list. If this function + returns non-zero, the element will be removed from the list. +*/ +void list_forall_nodes(list_t *list, int (*function)(void *data)) +{ + list_node_t *p; + int res; + + if(!list) /* no list given */ + return; + if(!function) /* no function given */ + return; + if(!list->head) /* list is empty */ + return; + for(p = list->head; p != NULL; p = p->next) + { + res = function(p->data); + if(res != 0) + p = list_delete(list, p); + } +} + +/* + list_destroy + + Free all datastructures contained in this list. It uses the delete + callback for this list to free each element. +*/ +void list_destroy(list_t *list) +{ + if(!list) + return; + list_destroy_nodes(list); + free(list); +} + +/* + list_append + + Append a new node to the list that points to data. +*/ +list_append(list_t *list, void *data) +{ + list_node_t *n; + + n = xmalloc_and_zero(sizeof(list_node_t)); + n->data = data; + n->prev = list->tail; + list->tail->next = n; + list->tail = n; +} diff --git a/lib/list.h b/lib/list.h new file mode 100644 index 00000000..91628332 --- /dev/null +++ b/lib/list.h @@ -0,0 +1,44 @@ +/* + list.h -- header file for list.c + Copyright (C) 2000 Ivo Timmermans + 2000 Guus Sliepen + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + $Id: list.h,v 1.1 2000/10/20 16:44:32 zarq Exp $ +*/ + +#ifndef __TINC_LIST_H__ +#define __TINC_LIST_H__ + +typedef struct list_callbacks_t { + int (*delete) (void *); +} list_callbacks_t; + +typedef struct list_node_t { + void *data; + struct list_node_t *prev; + struct list_node_t *next; +} list_node_t; + +typedef struct list_t { + list_node_t *head; + list_node_t *tail; + list_callbacks_t *callbacks; +} list_t; + + + +#endif /* __TINC_LIST_H__ */ diff --git a/po/POTFILES.in b/po/POTFILES.in index df8b507c..5e6af898 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -6,7 +6,6 @@ lib/pidfile.c lib/utils.c src/conf.c -src/genauth.c src/meta.c src/net.c src/netutl.c diff --git a/po/es.po b/po/es.po index 6076a85d..59404383 100644 --- a/po/es.po +++ b/po/es.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: tinc 1.0pre2\n" -"POT-Creation-Date: 2000-10-15 02:53+0200\n" +"POT-Creation-Date: 2000-10-20 18:35+0200\n" "PO-Revision-Date: 2000-07-02 12:49+01:00\n" "Last-Translator: Enrique Zanardi \n" "Language-Team: Spanish \n" @@ -33,37 +33,6 @@ msgstr "" msgid "Invalid value for variable on line %d while reading config file %s" msgstr "" -#: src/genauth.c:78 -#, c-format -msgid "Usage: %s bits\n" -msgstr "Uso: %s bits\n" - -#: src/genauth.c:89 -#, c-format -msgid "Illegal number: %s\n" -msgstr "Número ilegal: %s\n" - -#. Align to bytes for easy mallocing and reading -#: src/genauth.c:95 -#, fuzzy, c-format -msgid "Generating %d bits keys:\n" -msgstr "Generando claves de %d bits." - -#: src/genauth.c:99 -#, fuzzy -msgid "Done.\n" -msgstr ": hecho.\n" - -#: src/genauth.c:101 -#, c-format -msgid "Public key:\t%s\n" -msgstr "" - -#: src/genauth.c:102 -#, c-format -msgid "Private key:\t%s\n" -msgstr "" - #: src/meta.c:42 #, fuzzy, c-format msgid "Sending %d bytes of metadata to %s (%s): %s" @@ -74,7 +43,7 @@ msgstr "Enviados %d bytes a %lx" msgid "Sending meta data to %s (%s) failed: %m" msgstr "Error enviando datos: %m" -#: src/meta.c:85 src/net.c:773 +#: src/meta.c:85 src/net.c:847 #, fuzzy, c-format msgid "This is a bug: %s:%d: %d:%m %s (%s)" msgstr "Esto es un `bug': %s:%d: %d:%m" @@ -104,278 +73,300 @@ msgstr "Petici msgid "Metadata read buffer overflow for %s (%s)" msgstr "Desbordamiento del búfer de lectura de metadatos" -#: src/net.c:106 +#: src/net.c:107 #, fuzzy, c-format msgid "Sending packet of %d bytes to %s (%s)" msgstr "Enviados %d bytes a %lx" -#: src/net.c:115 +#: src/net.c:116 #, fuzzy, c-format msgid "Error sending packet to %s (%s): %m" msgstr "Error enviando datos: %m" -#: src/net.c:129 +#: src/net.c:130 #, fuzzy, c-format msgid "Receiving packet of %d bytes" msgstr "Recibiendo clave de " -#: src/net.c:142 +#: src/net.c:143 #, c-format msgid "Can't write to tap device: %m" msgstr "No puedo escribir en el dispositivo tap: %m" -#: src/net.c:242 +#: src/net.c:243 #, fuzzy msgid "Queue flushed" msgstr "cola vaciada" -#: src/net.c:257 +#: src/net.c:258 #, fuzzy, c-format msgid "Flushing send queue for %s (%s)" msgstr "Vaciando la cola de envíos para " -#: src/net.c:265 +#: src/net.c:266 #, fuzzy, c-format msgid "Flushing receive queue for %s (%s)" msgstr "Vaciando la cola de recepción para " -#: src/net.c:283 +#: src/net.c:284 #, c-format msgid "Trying to look up %d.%d.%d.%d in connection list failed!" msgstr "" -#: src/net.c:297 +#: src/net.c:298 #, fuzzy, c-format msgid "Could not open UDP connection to %s (%s)" msgstr "No pude abrir %s: %s\n" -#: src/net.c:305 +#: src/net.c:306 #, c-format msgid "No valid key known yet for %s (%s), queueing packet" msgstr "" -#: src/net.c:316 +#: src/net.c:317 #, c-format msgid "%s (%s) is not ready, queueing packet" msgstr "" -#: src/net.c:344 +#: src/net.c:352 #, c-format msgid "Could not open %s: %m" msgstr "No pude abrir %s: %m" -#: src/net.c:360 +#: src/net.c:370 #, c-format msgid "%s is a new style tun/tap device" msgstr "" -#: src/net.c:362 +#: src/net.c:373 msgid "tun/tap device will be left unconfigured" msgstr "" -#: src/net.c:384 +#: src/net.c:396 #, c-format msgid "Creating metasocket failed: %m" msgstr "Fallo al crear el metasocket: %m" -#: src/net.c:390 src/net.c:396 src/net.c:458 +#: src/net.c:402 src/net.c:408 src/net.c:470 #, c-format msgid "setsockopt: %m" msgstr "setsockopt(): %m" -#: src/net.c:403 src/net.c:465 +#: src/net.c:415 src/net.c:477 #, c-format msgid "fcntl: %m" msgstr "fcntl(): %m" -#: src/net.c:411 +#: src/net.c:423 #, c-format msgid "Unable to bind listen socket to interface %s: %m" msgstr "" -#: src/net.c:427 +#: src/net.c:439 #, c-format msgid "Can't bind to port %hd/tcp: %m" msgstr "Ha fallado la llamada a bind() con el puerto %hd/tcp: %m" -#: src/net.c:433 +#: src/net.c:445 #, c-format msgid "listen: %m" msgstr "listen(): %m" -#: src/net.c:452 +#: src/net.c:464 #, c-format msgid "Creating socket failed: %m" msgstr "Error al crear el `socket': %m" -#: src/net.c:476 +#: src/net.c:488 #, c-format msgid "Can't bind to port %hd/udp: %m" msgstr "Ha fallado la llamada a bind() con el puerto %hd/udp: %m" -#: src/net.c:493 +#: src/net.c:505 #, fuzzy, c-format msgid "Trying to connect to %s" msgstr "Cerrando conexión con %s." -#: src/net.c:503 +#: src/net.c:515 #, fuzzy, c-format msgid "Creating socket for %s port %d failed: %m" msgstr "Error al crear el `socket': %m" -#: src/net.c:514 +#: src/net.c:526 #, c-format msgid "%s port %hd: %m" msgstr "" -#: src/net.c:521 +#: src/net.c:533 #, c-format msgid "fcntl for %s port %d: %m" msgstr "" -#: src/net.c:527 +#: src/net.c:539 #, fuzzy, c-format msgid "Connected to %s port %hd" msgstr "Conectado a %s:%hd" -#: src/net.c:547 +#: src/net.c:562 +msgid "Invalid name for outgoing connection" +msgstr "" + +#: src/net.c:571 +#, c-format +msgid "Error reading host configuration file for %s" +msgstr "" + +#: src/net.c:578 +#, c-format +msgid "No address specified for %s" +msgstr "" + +#: src/net.c:585 #, fuzzy, c-format msgid "Error looking up `%s': %m" msgstr "Error buscando `%s': %s\n" -#: src/net.c:557 +#: src/net.c:595 #, fuzzy, c-format msgid "Could not set up a meta connection to %s" msgstr "No he podido configurar una meta conexión." -#: src/net.c:586 +#: src/net.c:629 msgid "Name for tinc daemon required!" msgstr "" -#: src/net.c:594 +#: src/net.c:637 msgid "Invalid name for myself!" msgstr "" -#: src/net.c:600 +#: src/net.c:643 +msgid "Private key for tinc daemon required!" +msgstr "" + +#: src/net.c:655 msgid "Cannot open host configuration file for myself!" msgstr "" -#: src/net.c:619 +#: src/net.c:661 +msgid "Public key for tinc daemon required!" +msgstr "" + +#: src/net.c:690 #, fuzzy msgid "Unable to set up a listening socket!" msgstr "No puedo configurar un `socket' a la escucha" -#: src/net.c:625 +#: src/net.c:696 #, fuzzy msgid "Unable to set up an incoming vpn data socket!" msgstr "No puedo configurar un `socket' para recibir datos de la vpn" -#: src/net.c:632 +#: src/net.c:703 #, fuzzy, c-format msgid "Ready: listening on port %hd" msgstr "Listo: escuchando en el puerto %d." -#: src/net.c:660 +#: src/net.c:734 #, fuzzy, c-format msgid "Still failed to connect to other, will retry in %d seconds" msgstr "Siguo sin poder conectar con el otro. Lo reintentaré en %d segundos." -#: src/net.c:698 +#: src/net.c:772 #, fuzzy, c-format msgid "Trying to re-establish outgoing connection in %d seconds" msgstr "Intento re-establecer la conexión saliente en 5 segundos." -#: src/net.c:736 +#: src/net.c:810 #, fuzzy msgid "Terminating" msgstr "Terminando." -#: src/net.c:750 +#: src/net.c:824 #, fuzzy, c-format msgid "Opening UDP socket to %s" msgstr "Abriendo `socket' UDP a " -#: src/net.c:755 +#: src/net.c:829 #, fuzzy, c-format msgid "Creating UDP socket failed: %m" msgstr "Error al crear el `socket': %m" -#: src/net.c:765 +#: src/net.c:839 #, fuzzy, c-format msgid "Connecting to %s port %d failed: %m" msgstr "Error al crear `socket' de datos: %m" -#: src/net.c:798 +#: src/net.c:872 #, c-format msgid "Error: getpeername: %m" msgstr "Error: getpeername(): %m" -#: src/net.c:813 +#: src/net.c:887 #, fuzzy, c-format msgid "Connection from %s port %d" msgstr "Conexión desde %s:%d" -#: src/net.c:861 +#: src/net.c:931 #, fuzzy, c-format msgid "This is a bug: %s:%d: %d:%m" msgstr "Esto es un `bug': %s:%d: %d:%m" -#: src/net.c:867 +#: src/net.c:937 #, fuzzy, c-format msgid "Incoming data socket error: %s" msgstr "Error en el `socket' de recepción de datos: %s" -#: src/net.c:873 +#: src/net.c:943 #, fuzzy, c-format msgid "Receiving packet failed: %m" msgstr "Error recibiendo datos: %m" -#: src/net.c:894 +#: src/net.c:964 #, fuzzy, c-format msgid "Closing connection with %s (%s)" msgstr "Cerrando conexión con %s." -#: src/net.c:937 +#: src/net.c:1007 #, fuzzy msgid "Trying to re-establish outgoing connection in 5 seconds" msgstr "Intento re-establecer la conexión saliente en 5 segundos." -#: src/net.c:967 +#: src/net.c:1037 #, c-format msgid "%s (%s) didn't respond to PING" msgstr "" -#: src/net.c:998 +#: src/net.c:1068 #, c-format msgid "Accepting a new connection failed: %m" msgstr "Error al aceptar una nueva conexión: %m" -#: src/net.c:1006 +#: src/net.c:1076 #, fuzzy msgid "Closed attempted connection" msgstr "Se ha cerrado la conexión que se intentaba realizar." -#: src/net.c:1041 +#: src/net.c:1111 #, fuzzy, c-format msgid "Outgoing data socket error for %s (%s): %s" msgstr "Error en el `socket' de datos salientes: %s" -#: src/net.c:1077 +#: src/net.c:1150 src/net.c:1159 #, c-format msgid "Error while reading from tapdevice: %m" msgstr "Error leyendo del dispositivo tap: %m" -#: src/net.c:1087 +#: src/net.c:1171 #, fuzzy, c-format msgid "Non-IP ethernet frame %04x from %02x:%02x:%02x:%02x:%02x:%02x" msgstr "Trama ethernet no-IP %04x de " -#: src/net.c:1094 +#: src/net.c:1178 #, c-format msgid "Dropping short packet from %02x:%02x:%02x:%02x:%02x:%02x" msgstr "" -#: src/net.c:1133 +#: src/net.c:1213 #, c-format msgid "Error while waiting for input: %m" msgstr "Error esperando entrada: %m" @@ -415,275 +406,285 @@ msgstr "Error al procesar la petici msgid "Bogus data received from %s (%s)" msgstr "Se han recibido datos sin sentido." -#: src/protocol.c:167 +#: src/protocol.c:170 #, fuzzy, c-format msgid "Got bad ID from %s" msgstr "recibí una petición BASIC_INFO incorrecta: %s" -#: src/protocol.c:175 +#: src/protocol.c:178 #, fuzzy, c-format msgid "Peer %s (%s) uses incompatible version %d" msgstr "" "La máquina remota usa una versión incompatible del protocolo (versión %d)." -#: src/protocol.c:184 +#: src/protocol.c:187 #, c-format msgid "Peer %s uses invalid identity name" msgstr "" -#: src/protocol.c:192 +#: src/protocol.c:195 #, c-format msgid "Peer %s had unknown identity (%s)" msgstr "" -#: src/protocol.c:207 +#: src/protocol.c:209 #, c-format msgid "Uplink %s (%s) is already in our connection list" msgstr "" -#: src/protocol.c:253 +#: src/protocol.c:219 +#, c-format +msgid "No public key known for %s (%s)" +msgstr "" + +#: src/protocol.c:258 src/protocol.c:312 +#, c-format +msgid "Error during encryption of challenge for %s (%s)" +msgstr "" + +#: src/protocol.c:284 #, fuzzy, c-format msgid "Got bad CHALLENGE from %s (%s)" msgstr "recibí KEY_CHANGED de " -#: src/protocol.c:261 +#: src/protocol.c:294 #, c-format msgid "Intruder: wrong challenge length from %s (%s)" msgstr "" -#: src/protocol.c:287 +#: src/protocol.c:330 #, c-format msgid "Trying to send CHAL_REPLY to %s (%s) without a valid CHALLENGE" msgstr "" -#: src/protocol.c:318 +#: src/protocol.c:361 #, fuzzy, c-format msgid "Got bad CHAL_REPLY from %s (%s)" msgstr "recibí una petición ANS_KEY incorrecta: %s" -#: src/protocol.c:327 +#: src/protocol.c:370 #, c-format msgid "Intruder: wrong challenge reply length from %s (%s)" msgstr "" -#: src/protocol.c:344 +#: src/protocol.c:387 #, c-format msgid "Intruder: wrong challenge reply from %s (%s)" msgstr "" -#: src/protocol.c:386 +#: src/protocol.c:425 #, c-format msgid "Removing old entry for %s at %s in favour of new connection from %s" msgstr "" -#: src/protocol.c:398 +#: src/protocol.c:437 #, fuzzy, c-format msgid "Connection with %s (%s) activated" msgstr "Activada la conexión con %s." -#: src/protocol.c:438 +#: src/protocol.c:477 #, fuzzy, c-format msgid "Got bad ADD_SUBNET from %s (%s)" msgstr "recibí una petición ADD_HOST incorrecta: %s" -#: src/protocol.c:447 +#: src/protocol.c:486 #, fuzzy, c-format msgid "Got bad ADD_SUBNET from %s (%s): invalid identity name" msgstr "recibí una petición ADD_HOST incorrecta: %s" -#: src/protocol.c:456 +#: src/protocol.c:495 #, fuzzy, c-format msgid "Got bad ADD_SUBNET from %s (%s): invalid subnet string" msgstr "recibí una petición ADD_HOST incorrecta: %s" -#: src/protocol.c:467 +#: src/protocol.c:506 #, c-format msgid "Warning: got ADD_SUBNET from %s (%s) for ourself, restarting" msgstr "" -#: src/protocol.c:478 +#: src/protocol.c:517 #, c-format msgid "Got ADD_SUBNET for %s from %s (%s) which is not in our connection list" msgstr "" -#: src/protocol.c:506 +#: src/protocol.c:545 #, fuzzy, c-format msgid "Got bad DEL_SUBNET from %s (%s)" msgstr "recibí una petición DEL_HOST incorrecta: %s" -#: src/protocol.c:515 +#: src/protocol.c:554 #, fuzzy, c-format msgid "Got bad DEL_SUBNET from %s (%s): invalid identity name" msgstr "recibí una petición DEL_HOST incorrecta: %s" -#: src/protocol.c:524 +#: src/protocol.c:563 #, fuzzy, c-format msgid "Got bad DEL_SUBNET from %s (%s): invalid subnet string" msgstr "recibí una petición DEL_HOST incorrecta: %s" -#: src/protocol.c:535 +#: src/protocol.c:574 #, c-format msgid "Warning: got DEL_SUBNET from %s (%s) for ourself, restarting" msgstr "" -#: src/protocol.c:546 +#: src/protocol.c:585 #, c-format msgid "Got DEL_SUBNET for %s from %s (%s) which is not in our connection list" msgstr "" -#: src/protocol.c:577 +#: src/protocol.c:616 #, fuzzy, c-format msgid "Got bad ADD_HOST from %s (%s)" msgstr "recibí una petición ADD_HOST incorrecta: %s" -#: src/protocol.c:585 +#: src/protocol.c:624 #, fuzzy, c-format msgid "Got bad ADD_HOST from %s (%s): invalid identity name" msgstr "recibí una petición ADD_HOST incorrecta: %s" -#: src/protocol.c:594 +#: src/protocol.c:633 #, c-format msgid "Warning: got ADD_HOST from %s (%s) for ourself, restarting" msgstr "" -#: src/protocol.c:604 +#: src/protocol.c:643 #, c-format msgid "Warning: got ADD_HOST from %s (%s) from ourself, restarting" msgstr "" -#: src/protocol.c:614 +#: src/protocol.c:653 #, c-format msgid "" "Got ADD_HOST from %s (%s) with origin %s which is not in our connection list" msgstr "" -#: src/protocol.c:633 +#: src/protocol.c:672 #, c-format msgid "Got duplicate ADD_HOST for %s (%s) from %s (%s)" msgstr "" -#: src/protocol.c:640 +#: src/protocol.c:679 #, c-format msgid "Removing old entry for %s (%s)" msgstr "" -#: src/protocol.c:683 +#: src/protocol.c:722 #, fuzzy, c-format msgid "Got bad DEL_HOST from %s (%s)" msgstr "recibí una petición DEL_HOST incorrecta: %s" -#: src/protocol.c:692 +#: src/protocol.c:731 #, fuzzy, c-format msgid "Got bad DEL_HOST from %s (%s): invalid identity name" msgstr "recibí una petición DEL_HOST incorrecta: %s" -#: src/protocol.c:701 +#: src/protocol.c:740 #, c-format msgid "Warning: got DEL_HOST from %s (%s) for ourself, restarting" msgstr "" -#: src/protocol.c:712 +#: src/protocol.c:751 #, c-format msgid "Warning: got DEL_HOST from %s (%s) from ourself, restarting" msgstr "" -#: src/protocol.c:722 +#: src/protocol.c:761 #, c-format msgid "" "Got DEL_HOST from %s (%s) with origin %s which is not in our connection list" msgstr "" -#: src/protocol.c:734 +#: src/protocol.c:773 #, c-format msgid "Got DEL_HOST from %s (%s) for %s which is not in our connection list" msgstr "" -#: src/protocol.c:744 +#: src/protocol.c:783 #, fuzzy, c-format msgid "Got DEL_HOST from %s (%s) for %s which doesn't match" msgstr "recibí una petición DEL_HOST incorrecta: %s" -#: src/protocol.c:776 +#: src/protocol.c:815 #, fuzzy, c-format msgid "Got bad STATUS from %s (%s)" msgstr "recibí una petición ANS_KEY incorrecta: %s" -#: src/protocol.c:783 +#: src/protocol.c:822 #, fuzzy, c-format msgid "Status message from %s (%s): %s: %s" msgstr "He recibido una petición: %s" -#: src/protocol.c:807 +#: src/protocol.c:846 #, fuzzy, c-format msgid "Got bad ERROR from %s (%s)" msgstr "recibí una petición DEL_HOST incorrecta: %s" -#: src/protocol.c:814 +#: src/protocol.c:853 #, fuzzy, c-format msgid "Error message from %s (%s): %s: %s" msgstr "He recibido una petición: %s" -#: src/protocol.c:892 +#: src/protocol.c:931 #, fuzzy, c-format msgid "Got bad KEY_CHANGED from %s (%s)" msgstr "recibí KEY_CHANGED de " -#: src/protocol.c:899 +#: src/protocol.c:938 #, c-format msgid "" "Got KEY_CHANGED from %s (%s) origin %s which does not exist in our " "connection list" msgstr "" -#: src/protocol.c:929 +#: src/protocol.c:968 #, fuzzy, c-format msgid "Got bad REQ_KEY from %s (%s)" msgstr "recibí REQ_KEY de " -#: src/protocol.c:936 +#: src/protocol.c:975 #, c-format msgid "" "Got REQ_KEY from %s (%s) origin %s which does not exist in our connection " "list" msgstr "" -#: src/protocol.c:952 +#: src/protocol.c:991 #, c-format msgid "" "Got REQ_KEY from %s (%s) destination %s which does not exist in our " "connection list" msgstr "" -#: src/protocol.c:980 +#: src/protocol.c:1019 #, fuzzy, c-format msgid "Got bad ANS_KEY from %s (%s)" msgstr "recibí una petición ANS_KEY incorrecta: %s" -#: src/protocol.c:987 +#: src/protocol.c:1026 #, c-format msgid "" "Got ANS_KEY from %s (%s) origin %s which does not exist in our connection " "list" msgstr "" -#: src/protocol.c:1003 +#: src/protocol.c:1042 #, fuzzy, c-format msgid "Got bad ANS_KEY from %s (%s) origin %s: invalid key" msgstr "recibí una petición ANS_KEY incorrecta: %s" -#: src/protocol.c:1016 +#: src/protocol.c:1055 #, c-format msgid "" "Got ANS_KEY from %s (%s) destination %s which does not exist in our " "connection list" msgstr "" -#: src/tincd.c:94 +#: src/tincd.c:99 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Pruebe `%s --help' para más información.\n" -#: src/tincd.c:97 +#: src/tincd.c:102 #, c-format msgid "" "Usage: %s [option]...\n" @@ -692,7 +693,7 @@ msgstr "" "Modo de empleo: %s [opción]...\n" "\n" -#: src/tincd.c:98 +#: src/tincd.c:103 #, fuzzy msgid "" " -c, --config=DIR Read configuration options from DIR.\n" @@ -700,7 +701,6 @@ msgid "" " -d Increase debug level.\n" " -k, --kill Attempt to kill a running tincd and exit.\n" " -n, --net=NETNAME Connect to net NETNAME.\n" -" -t, --timeout=TIMEOUT Seconds to wait before giving a timeout.\n" msgstr "" " -c, --config=FICHERO Lee opciones de configuración del FICHERO.\n" " -D, --no-detach No hagas fork() y liberes la terminal.\n" @@ -710,8 +710,10 @@ msgstr "" " -t, --timeout=TIEMPO Segundos a esperar antes de cancelar una " "trasmisión.\n" -#: src/tincd.c:104 +#: src/tincd.c:108 +#, fuzzy msgid "" +" -K, --keygen[=BITS] Generate public/private RSA keypair.\n" " --help Display this help and exit.\n" " --version Output version information and exit.\n" "\n" @@ -720,72 +722,99 @@ msgstr "" " --version Muestra información de la versión y termina.\n" "\n" -#: src/tincd.c:106 +#: src/tincd.c:111 msgid "Report bugs to tinc@nl.linux.org.\n" msgstr "Comunicar `bugs' a tinc@nl.linux.org.\n" -#: src/tincd.c:144 -#, c-format -msgid "Invalid timeout value `%s'.\n" -msgstr "Valor de `timeout' no válido `%s'.\n" +#: src/tincd.c:152 +msgid "Invalid argument! BITS must be a number equal to or greater than 512.\n" +msgstr "" + +#: src/tincd.c:207 +msgid "" +"Seeding the PRNG: please press some keys or move\n" +"the mouse if this program seems to have halted...\n" +msgstr "" + +#. OpenSSL PRNG state apparently uses 1024 bytes, but it seems pretty sufficient anyway :) +#: src/tincd.c:210 +#, fuzzy, c-format +msgid "Generating %d bits keys:\n" +msgstr "Generando claves de %d bits." + +#: src/tincd.c:214 +msgid "Error during key generation!" +msgstr "" + +#: src/tincd.c:218 +#, fuzzy +msgid "Done.\n" +msgstr ": hecho.\n" -#: src/tincd.c:158 +#: src/tincd.c:220 +msgid "" +"Please copy the private key to tinc.conf and the\n" +"public key to your host configuration file:\n" +"\n" +msgstr "" + +#: src/tincd.c:230 #, fuzzy, c-format msgid "Memory exhausted (last is %s:%d) (couldn't allocate %d bytes), exiting." msgstr "" "Memoria agotada (la última es %s:%d) (no pude asignar %d bytes); terminando." -#: src/tincd.c:213 +#: src/tincd.c:285 #, fuzzy, c-format msgid "tincd %s (%s %s) starting, debug level %d" msgstr "tincd %s (%s %s) comenzando, nivel de depuración %d." -#: src/tincd.c:216 +#: src/tincd.c:288 #, fuzzy, c-format msgid "tincd %s starting" msgstr "tincd %s comenzando, nivel de depuración %d." -#: src/tincd.c:231 +#: src/tincd.c:303 #, fuzzy, c-format msgid "Total bytes written: tap %d, socket %d; bytes read: tap %d, socket %d" msgstr "" "Total de bytes escritos: tap %d, socket %d; bytes leidos: tap %d, socket %d." -#: src/tincd.c:249 +#: src/tincd.c:321 #, c-format msgid "A tincd is already running for net `%s' with pid %d.\n" msgstr "" "Un tincd está actualmente en ejecución para la red `%s' con el pid %d.\n" -#: src/tincd.c:252 +#: src/tincd.c:324 #, c-format msgid "A tincd is already running with pid %d.\n" msgstr "Un tincd está actualmente en ejecución con el pid %d.\n" -#: src/tincd.c:273 +#: src/tincd.c:345 #, c-format msgid "No other tincd is running for net `%s'.\n" msgstr "No hay ningún otro tincd en ejecución para la red `%s'.\n" -#: src/tincd.c:275 +#: src/tincd.c:347 msgid "No other tincd is running.\n" msgstr "No hay ningún otro tincd en ejecución.\n" -#: src/tincd.c:282 +#: src/tincd.c:354 msgid "Removing stale lock file.\n" msgstr "Borrando fichero de bloqueo en desuso.\n" #. Do some intl stuff right now -#: src/tincd.c:325 +#: src/tincd.c:397 msgid "unknown" msgstr "" -#: src/tincd.c:331 +#: src/tincd.c:403 #, c-format msgid "%s version %s (built %s %s, protocol %d)\n" msgstr "" -#: src/tincd.c:332 +#: src/tincd.c:404 #, fuzzy msgid "" "Copyright (C) 1998,1999,2000 Ivo Timmermans, Guus Sliepen and others.\n" @@ -802,66 +831,75 @@ msgstr "" "y puede ser redistribuido bajo ciertas condiciones;\n" "vea el fichero COPYING para los detalles.\n" -#: src/tincd.c:346 +#: src/tincd.c:418 #, fuzzy msgid "You must be root to run this program. Sorry.\n" msgstr "" "Usted debe ser el superusuario para ejecutar este programa. Lo siento.\n" -#: src/tincd.c:377 +#: src/tincd.c:452 msgid "Unrecoverable error" msgstr "" -#: src/tincd.c:382 +#: src/tincd.c:457 #, c-format msgid "Restarting in %d seconds!" msgstr "" -#: src/tincd.c:387 src/tincd.c:433 +#: src/tincd.c:462 src/tincd.c:508 msgid "Aieee! Not restarting." msgstr "" -#: src/tincd.c:397 +#: src/tincd.c:472 msgid "Got TERM signal" msgstr "Recibí la señal TERM" -#: src/tincd.c:405 +#: src/tincd.c:480 msgid "Got QUIT signal" msgstr "Recibí la señal QUIT" -#: src/tincd.c:412 +#: src/tincd.c:487 msgid "Got another SEGV signal: not restarting" msgstr "Recibí otra señal SEGV: no reinicio" -#: src/tincd.c:419 +#: src/tincd.c:494 #, fuzzy msgid "Got SEGV signal" msgstr "Recibí la señal TERM" -#: src/tincd.c:424 +#: src/tincd.c:499 #, fuzzy msgid "Trying to re-execute in 5 seconds..." msgstr "Intento re-establecer la conexión saliente en 5 segundos." -#: src/tincd.c:442 +#: src/tincd.c:517 msgid "Got HUP signal, rereading configuration and restarting" msgstr "" -#: src/tincd.c:450 +#: src/tincd.c:525 #, fuzzy msgid "Got INT signal, exiting" msgstr "Recibí la señal INT" -#: src/tincd.c:464 +#: src/tincd.c:539 #, fuzzy msgid "Got USR2 signal, forcing new key generation" msgstr "Forzando generación de una nueva clave" -#: src/tincd.c:473 +#: src/tincd.c:548 #, fuzzy, c-format msgid "Got unexpected signal %d (%s)" msgstr "Recibí una señal inesperada (%d)." +#~ msgid "Usage: %s bits\n" +#~ msgstr "Uso: %s bits\n" + +#~ msgid "Illegal number: %s\n" +#~ msgstr "Número ilegal: %s\n" + +#~ msgid "Invalid timeout value `%s'.\n" +#~ msgstr "Valor de `timeout' no válido `%s'.\n" + #~ msgid "Illegal passphrase in %s; size would be %d" #~ msgstr "Frase de paso ilegal en %s; el tamaño debe ser %d" diff --git a/po/nl.po b/po/nl.po index 44e097f3..82820328 100644 --- a/po/nl.po +++ b/po/nl.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: tinc 1.0pre3\n" -"POT-Creation-Date: 2000-10-15 02:53+0200\n" +"POT-Creation-Date: 2000-10-20 18:35+0200\n" "PO-Revision-Date: 2000-05-31 20:14+02:00\n" "Last-Translator: Guus Sliepen \n" "Language-Team: Dutch \n" @@ -39,36 +39,6 @@ msgstr "" "Ongeldige waarde voor variabele op regel %d tijdens het lezen van " "configuratie bestand %s" -#: src/genauth.c:78 -#, c-format -msgid "Usage: %s bits\n" -msgstr "Gebruik: %s bits\n" - -#: src/genauth.c:89 -#, c-format -msgid "Illegal number: %s\n" -msgstr "Ongeldig nummer: %s\n" - -#. Align to bytes for easy mallocing and reading -#: src/genauth.c:95 -#, c-format -msgid "Generating %d bits keys:\n" -msgstr "Bezig met genereren van een %d bits sleutel:\n" - -#: src/genauth.c:99 -msgid "Done.\n" -msgstr "Klaar.\n" - -#: src/genauth.c:101 -#, c-format -msgid "Public key: %s\n" -msgstr "Publieke sleutel: %s\n" - -#: src/genauth.c:102 -#, c-format -msgid "Private key: %s\n" -msgstr "Privé sleutel: %s\n" - #: src/meta.c:42 #, c-format msgid "Sending %d bytes of metadata to %s (%s): %s" @@ -79,7 +49,7 @@ msgstr "Verzending %d bytes metadata naar %s (%s): %s" msgid "Sending meta data to %s (%s) failed: %m" msgstr "Fout tijdens verzenden metadata naar %s (%s): %m" -#: src/meta.c:85 src/net.c:773 +#: src/meta.c:85 src/net.c:847 #, c-format msgid "This is a bug: %s:%d: %d:%m %s (%s)" msgstr "Dit is een programmeerfout: %s:%d: %d:%m %s (%s)" @@ -109,274 +79,296 @@ msgstr "Kreeg verzoek van %s (%s): %s" msgid "Metadata read buffer overflow for %s (%s)" msgstr "Metadata leesbuffer overvol voor %s (%s)" -#: src/net.c:106 +#: src/net.c:107 #, c-format msgid "Sending packet of %d bytes to %s (%s)" msgstr "Verzending pakket van %d bytes naar %s (%s)" -#: src/net.c:115 +#: src/net.c:116 #, c-format msgid "Error sending packet to %s (%s): %m" msgstr "Fout tijdens verzenden pakket naar %s (%s): %m" -#: src/net.c:129 +#: src/net.c:130 #, c-format msgid "Receiving packet of %d bytes" msgstr "Ontvangst pakket van %d bytes" -#: src/net.c:142 +#: src/net.c:143 #, c-format msgid "Can't write to tap device: %m" msgstr "Kan niet naar tap apparaat schrijven: %m" -#: src/net.c:242 +#: src/net.c:243 msgid "Queue flushed" msgstr "Wachtrij leeggemaakt" -#: src/net.c:257 +#: src/net.c:258 #, c-format msgid "Flushing send queue for %s (%s)" msgstr "Legen van verzend-wachtrij voor %s (%s)" -#: src/net.c:265 +#: src/net.c:266 #, c-format msgid "Flushing receive queue for %s (%s)" msgstr "Legen van de ontvangst-wachtrij voor %s (%s)" -#: src/net.c:283 +#: src/net.c:284 #, c-format msgid "Trying to look up %d.%d.%d.%d in connection list failed!" msgstr "Poging tot opzoeken %d.%d.%d.%d in verbindingslijst mislukte!" -#: src/net.c:297 +#: src/net.c:298 #, c-format msgid "Could not open UDP connection to %s (%s)" msgstr "Kon geen UDP verbinding openen naar %s (%s)" -#: src/net.c:305 +#: src/net.c:306 #, c-format msgid "No valid key known yet for %s (%s), queueing packet" msgstr "" "Nog geen geldige sleutel bekend voor %s (%s), pakket wordt in de wachtrij " "gezet" -#: src/net.c:316 +#: src/net.c:317 #, c-format msgid "%s (%s) is not ready, queueing packet" msgstr "%s (%s) is niet gereed, pakket wordt in de wachtrij gezet" -#: src/net.c:344 +#: src/net.c:352 #, c-format msgid "Could not open %s: %m" msgstr "Kon %s niet openen: %m" -#: src/net.c:360 +#: src/net.c:370 #, c-format msgid "%s is a new style tun/tap device" msgstr "%s is een nieuwe stijl tun/tap apparaat" -#: src/net.c:362 +#: src/net.c:373 msgid "tun/tap device will be left unconfigured" msgstr "tun/tap apparaat wordt ongeconfigureerd gelaten" -#: src/net.c:384 +#: src/net.c:396 #, c-format msgid "Creating metasocket failed: %m" msgstr "Aanmaak van metasocket mislukt: %m" -#: src/net.c:390 src/net.c:396 src/net.c:458 +#: src/net.c:402 src/net.c:408 src/net.c:470 #, c-format msgid "setsockopt: %m" msgstr "setsockopt: %m" -#: src/net.c:403 src/net.c:465 +#: src/net.c:415 src/net.c:477 #, c-format msgid "fcntl: %m" msgstr "fcntl: %m" -#: src/net.c:411 +#: src/net.c:423 #, c-format msgid "Unable to bind listen socket to interface %s: %m" msgstr "Kon luistersocket niet binden aan interface %s: %m" -#: src/net.c:427 +#: src/net.c:439 #, c-format msgid "Can't bind to port %hd/tcp: %m" msgstr "Kan niet aan poort %hd/tcp binden: %m" -#: src/net.c:433 +#: src/net.c:445 #, c-format msgid "listen: %m" msgstr "listen: %m" -#: src/net.c:452 +#: src/net.c:464 #, c-format msgid "Creating socket failed: %m" msgstr "Aanmaak socket mislukte: %m" -#: src/net.c:476 +#: src/net.c:488 #, c-format msgid "Can't bind to port %hd/udp: %m" msgstr "Kan niet aan poort %hd/udp binden: %m" -#: src/net.c:493 +#: src/net.c:505 #, c-format msgid "Trying to connect to %s" msgstr "Poging tot verbinding met %s" -#: src/net.c:503 +#: src/net.c:515 #, c-format msgid "Creating socket for %s port %d failed: %m" msgstr "Aanmaken socket voor %s poort %d mislukt: %m" -#: src/net.c:514 +#: src/net.c:526 #, c-format msgid "%s port %hd: %m" msgstr "%s poort %hd: %m" -#: src/net.c:521 +#: src/net.c:533 #, c-format msgid "fcntl for %s port %d: %m" msgstr "fcntl voor %s poort %d: %m" -#: src/net.c:527 +#: src/net.c:539 #, c-format msgid "Connected to %s port %hd" msgstr "Verbonden met %s poort %hd" -#: src/net.c:547 +#: src/net.c:562 +msgid "Invalid name for outgoing connection" +msgstr "Ongelige naam voor uitgaande verbinding" + +#: src/net.c:571 +#, c-format +msgid "Error reading host configuration file for %s" +msgstr "Fout tijdens lezen host configuratie bestand voor %s" + +#: src/net.c:578 +#, c-format +msgid "No address specified for %s" +msgstr "Geen adres gespecificeerd voor %s" + +#: src/net.c:585 #, c-format msgid "Error looking up `%s': %m" msgstr "Fout bij het opzoeken van `%s': %m" -#: src/net.c:557 +#: src/net.c:595 #, c-format msgid "Could not set up a meta connection to %s" msgstr "Kon geen metaverbinding aangaan met %s" -#: src/net.c:586 +#: src/net.c:629 msgid "Name for tinc daemon required!" msgstr "Naam voor tinc daemon verplicht!" -#: src/net.c:594 +#: src/net.c:637 msgid "Invalid name for myself!" msgstr "Ongelige naam voor mijzelf!" -#: src/net.c:600 +#: src/net.c:643 +msgid "Private key for tinc daemon required!" +msgstr "Privé sleutel voor tinc daemon verplicht!" + +#: src/net.c:655 msgid "Cannot open host configuration file for myself!" msgstr "Kan host configuratie bestand voor mijzelf niet openen!" -#: src/net.c:619 +#: src/net.c:661 +msgid "Public key for tinc daemon required!" +msgstr "Publieke sleutel voor tinc daemon verplicht!" + +#: src/net.c:690 msgid "Unable to set up a listening socket!" msgstr "Kon geen luistersocket aanmaken!" -#: src/net.c:625 +#: src/net.c:696 msgid "Unable to set up an incoming vpn data socket!" msgstr "Kon geen socket maken voor inkomend vpn verkeer!" -#: src/net.c:632 +#: src/net.c:703 #, c-format msgid "Ready: listening on port %hd" msgstr "Gereed: luisterend op poort %hd" -#: src/net.c:660 +#: src/net.c:734 #, c-format msgid "Still failed to connect to other, will retry in %d seconds" msgstr "Wederom niet verbonden met de ander, nieuwe poging over %d seconden" -#: src/net.c:698 +#: src/net.c:772 #, c-format msgid "Trying to re-establish outgoing connection in %d seconds" msgstr "Poging tot herstellen van uitgaande verbinding over %d seconden" -#: src/net.c:736 +#: src/net.c:810 msgid "Terminating" msgstr "Beëindigen" -#: src/net.c:750 +#: src/net.c:824 #, c-format msgid "Opening UDP socket to %s" msgstr "Bezig met openen UDP socket naar %s" -#: src/net.c:755 +#: src/net.c:829 #, c-format msgid "Creating UDP socket failed: %m" msgstr "Aanmaak UDP socket mislukte: %m" -#: src/net.c:765 +#: src/net.c:839 #, c-format msgid "Connecting to %s port %d failed: %m" msgstr "Verbinding naar %s poort %d mislukt: %m" -#: src/net.c:798 +#: src/net.c:872 #, c-format msgid "Error: getpeername: %m" msgstr "Fout: getpeername: %m" -#: src/net.c:813 +#: src/net.c:887 #, c-format msgid "Connection from %s port %d" msgstr "Verbinding van %s poort %d" -#: src/net.c:861 +#: src/net.c:931 #, c-format msgid "This is a bug: %s:%d: %d:%m" msgstr "Dit is een programmeerfout: %s:%d: %d:%m" -#: src/net.c:867 +#: src/net.c:937 #, c-format msgid "Incoming data socket error: %s" msgstr "Fout op socket voor inkomend verkeer: %s" -#: src/net.c:873 +#: src/net.c:943 #, c-format msgid "Receiving packet failed: %m" msgstr "Ontvangst pakket mislukt: %m" -#: src/net.c:894 +#: src/net.c:964 #, c-format msgid "Closing connection with %s (%s)" msgstr "Beëindigen verbinding met %s (%s)" -#: src/net.c:937 +#: src/net.c:1007 msgid "Trying to re-establish outgoing connection in 5 seconds" msgstr "Poging tot herstellen van uitgaande verbinding over 5 seconden" -#: src/net.c:967 +#: src/net.c:1037 #, c-format msgid "%s (%s) didn't respond to PING" msgstr "%s (%s) antwoordde niet op ping" -#: src/net.c:998 +#: src/net.c:1068 #, c-format msgid "Accepting a new connection failed: %m" msgstr "Aanname van nieuwe verbinding is mislukt: %m" -#: src/net.c:1006 +#: src/net.c:1076 msgid "Closed attempted connection" msgstr "Aangenomen verbinding verbroken" -#: src/net.c:1041 +#: src/net.c:1111 #, c-format msgid "Outgoing data socket error for %s (%s): %s" msgstr "Fout op socket voor uitgaand verkeer voor %s (%s): %s" -#: src/net.c:1077 +#: src/net.c:1150 src/net.c:1159 #, c-format msgid "Error while reading from tapdevice: %m" msgstr "Fout tijdens lezen van tap-apparaatbestand tijdens lezen: %m" -#: src/net.c:1087 +#: src/net.c:1171 #, c-format msgid "Non-IP ethernet frame %04x from %02x:%02x:%02x:%02x:%02x:%02x" msgstr "Niet-IP ethernet pakket %04x van %02x:%02x:%02x:%02x:%02x:%02x" -#: src/net.c:1094 +#: src/net.c:1178 #, c-format msgid "Dropping short packet from %02x:%02x:%02x:%02x:%02x:%02x" msgstr "Te kort pakket van %02x:%02x:%02x:%02x:%02x:%02x genegeerd" -#: src/net.c:1133 +#: src/net.c:1213 #, c-format msgid "Error while waiting for input: %m" msgstr "Fout tijdens wachten op invoer: %m" @@ -416,148 +408,158 @@ msgstr "Fout tijdens afhandelen %s van %s (%s)" msgid "Bogus data received from %s (%s)" msgstr "Onzinnige data ontvangen van %s (%s)" -#: src/protocol.c:167 +#: src/protocol.c:170 #, c-format msgid "Got bad ID from %s" msgstr "Kreeg ongeldige ID van %s" -#: src/protocol.c:175 +#: src/protocol.c:178 #, c-format msgid "Peer %s (%s) uses incompatible version %d" msgstr "Ander %s (%s) gebruikt een niet-compatibel protocol versie %d" -#: src/protocol.c:184 +#: src/protocol.c:187 #, c-format msgid "Peer %s uses invalid identity name" msgstr "Ander %s gebruikt een ongeldige identiteitsnaam" -#: src/protocol.c:192 +#: src/protocol.c:195 #, c-format msgid "Peer %s had unknown identity (%s)" msgstr "Ander %s heeft een onbekende identiteit (%s)" -#: src/protocol.c:207 +#: src/protocol.c:209 #, c-format msgid "Uplink %s (%s) is already in our connection list" msgstr "%s (%s) staat al in onze verbindingslijst" -#: src/protocol.c:253 +#: src/protocol.c:219 +#, c-format +msgid "No public key known for %s (%s)" +msgstr "Geen publieke sleutel bekend voor %s (%s)" + +#: src/protocol.c:258 src/protocol.c:312 +#, c-format +msgid "Error during encryption of challenge for %s (%s)" +msgstr "Fout tijdens versleuteling van uitdaging voor %s (%s)" + +#: src/protocol.c:284 #, c-format msgid "Got bad CHALLENGE from %s (%s)" msgstr "Kreeg ongeldige CHALLENGE van %s (%s)" -#: src/protocol.c:261 +#: src/protocol.c:294 #, c-format msgid "Intruder: wrong challenge length from %s (%s)" msgstr "Indringer: verkeerde lengte voor uitdaging van %s (%s)" -#: src/protocol.c:287 +#: src/protocol.c:330 #, c-format msgid "Trying to send CHAL_REPLY to %s (%s) without a valid CHALLENGE" msgstr "Poging tot zenden CHAL_REPLY naar %s (%s) zonder een geldige CHALLENGE" -#: src/protocol.c:318 +#: src/protocol.c:361 #, c-format msgid "Got bad CHAL_REPLY from %s (%s)" msgstr "Kreeg ongeldige CHAL_REPLY van %s (%s)" -#: src/protocol.c:327 +#: src/protocol.c:370 #, c-format msgid "Intruder: wrong challenge reply length from %s (%s)" msgstr "Indringer: verkeerde lengte van antwoord op uitdaging van %s (%s)" -#: src/protocol.c:344 +#: src/protocol.c:387 #, c-format msgid "Intruder: wrong challenge reply from %s (%s)" msgstr "Indringer: verkeerd antwoord op de uitdaging van %s (%s)" -#: src/protocol.c:386 +#: src/protocol.c:425 #, c-format msgid "Removing old entry for %s at %s in favour of new connection from %s" msgstr "" "Verwijdering oude verbinding voor %s op %s in voordeel van nieuwe verbinding " "van %s" -#: src/protocol.c:398 +#: src/protocol.c:437 #, c-format msgid "Connection with %s (%s) activated" msgstr "Verbinding met %s (%s) geactiveerd" -#: src/protocol.c:438 +#: src/protocol.c:477 #, c-format msgid "Got bad ADD_SUBNET from %s (%s)" msgstr "Kreeg ongeldige ADD_SUBNET van %s (%s)" -#: src/protocol.c:447 +#: src/protocol.c:486 #, c-format msgid "Got bad ADD_SUBNET from %s (%s): invalid identity name" msgstr "Kreeg ongeldige ADD_SUBNET van %s (%s): ongeldige identiteitsnaam" -#: src/protocol.c:456 +#: src/protocol.c:495 #, c-format msgid "Got bad ADD_SUBNET from %s (%s): invalid subnet string" msgstr "Kreeg ongeldige ADD_SUBNET van %s (%s): ongeldig subnet" -#: src/protocol.c:467 +#: src/protocol.c:506 #, c-format msgid "Warning: got ADD_SUBNET from %s (%s) for ourself, restarting" msgstr "Waarschuwing: kreeg ADD_SUBNET van %s (%s) voor onszelf, herstart" -#: src/protocol.c:478 +#: src/protocol.c:517 #, c-format msgid "Got ADD_SUBNET for %s from %s (%s) which is not in our connection list" msgstr "" "Kreeg DEL_SUBNET voor %d.%d.%d.%d van %s (%s) die niet voorkomt in onze " "verbindingslijst" -#: src/protocol.c:506 +#: src/protocol.c:545 #, c-format msgid "Got bad DEL_SUBNET from %s (%s)" msgstr "Kreeg ongeldige DEL_SUBNET van %s (%s)" -#: src/protocol.c:515 +#: src/protocol.c:554 #, c-format msgid "Got bad DEL_SUBNET from %s (%s): invalid identity name" msgstr "Kreeg ongeldige DEL_SUBNET van %s (%s): ongeldige identiteitsnaam" -#: src/protocol.c:524 +#: src/protocol.c:563 #, c-format msgid "Got bad DEL_SUBNET from %s (%s): invalid subnet string" msgstr "Kreeg ongeldige DEL_SUBNET van %s (%s): ongeldige identiteitsnaam" -#: src/protocol.c:535 +#: src/protocol.c:574 #, c-format msgid "Warning: got DEL_SUBNET from %s (%s) for ourself, restarting" msgstr "Waarschuwing: kreeg DEL_SUBNET van %s (%s) voor onszelf, herstart" -#: src/protocol.c:546 +#: src/protocol.c:585 #, c-format msgid "Got DEL_SUBNET for %s from %s (%s) which is not in our connection list" msgstr "" "Kreeg DEL_SUBNET voor %d.%d.%d.%d van %s (%s) die niet voorkomt in onze " "verbindingslijst" -#: src/protocol.c:577 +#: src/protocol.c:616 #, c-format msgid "Got bad ADD_HOST from %s (%s)" msgstr "Kreeg ongeldige ADD_HOST van %s (%s)" -#: src/protocol.c:585 +#: src/protocol.c:624 #, c-format msgid "Got bad ADD_HOST from %s (%s): invalid identity name" msgstr "Kreeg ongeldige ADD_HOST van %s (%s): ongeldige identiteitsnaam" -#: src/protocol.c:594 +#: src/protocol.c:633 #, c-format msgid "Warning: got ADD_HOST from %s (%s) for ourself, restarting" msgstr "Waarschuwing: kreeg ADD_HOST van %s (%s) voor onszelf, herstart" -#: src/protocol.c:604 +#: src/protocol.c:643 #, c-format msgid "Warning: got ADD_HOST from %s (%s) from ourself, restarting" msgstr "Waarschuwing: kreeg ADD_HOST van %s (%s) van onszelf, herstart" -#: src/protocol.c:614 +#: src/protocol.c:653 #, c-format msgid "" "Got ADD_HOST from %s (%s) with origin %s which is not in our connection list" @@ -565,37 +567,37 @@ msgstr "" "Kreeg ADD_HOST van %s (%s) met herkomst %s die niet in onze verbindingslijst " "voorkomt" -#: src/protocol.c:633 +#: src/protocol.c:672 #, c-format msgid "Got duplicate ADD_HOST for %s (%s) from %s (%s)" msgstr "Kreeg een tweede ADD_HOST voor %s (%s) van %s (%s)" -#: src/protocol.c:640 +#: src/protocol.c:679 #, c-format msgid "Removing old entry for %s (%s)" msgstr "Verwijdering oude verbinding voor %s (%s)" -#: src/protocol.c:683 +#: src/protocol.c:722 #, c-format msgid "Got bad DEL_HOST from %s (%s)" msgstr "Kreeg ongeldige DEL_HOST van %s (%s)" -#: src/protocol.c:692 +#: src/protocol.c:731 #, c-format msgid "Got bad DEL_HOST from %s (%s): invalid identity name" msgstr "Kreeg ongeldige DEL_HOST van %s (%s): ongeldige identiteitsnaam" -#: src/protocol.c:701 +#: src/protocol.c:740 #, c-format msgid "Warning: got DEL_HOST from %s (%s) for ourself, restarting" msgstr "Waarschuwing: kreeg DEL_HOST van %s (%s) voor onszelf, herstart" -#: src/protocol.c:712 +#: src/protocol.c:751 #, c-format msgid "Warning: got DEL_HOST from %s (%s) from ourself, restarting" msgstr "Waarschuwing: kreeg DEL_HOST van %s (%s) van onszelf, herstart" -#: src/protocol.c:722 +#: src/protocol.c:761 #, c-format msgid "" "Got DEL_HOST from %s (%s) with origin %s which is not in our connection list" @@ -603,43 +605,43 @@ msgstr "" "Kreeg DEL_HOST voor %s (%s) met herkomst %s die niet in onze " "verbindingslijst voorkomt" -#: src/protocol.c:734 +#: src/protocol.c:773 #, c-format msgid "Got DEL_HOST from %s (%s) for %s which is not in our connection list" msgstr "" "Kreeg DEL_HOST van %s (%s) voor %s die niet in onze verbindingslijst voorkomt" -#: src/protocol.c:744 +#: src/protocol.c:783 #, c-format msgid "Got DEL_HOST from %s (%s) for %s which doesn't match" msgstr "Kreeg DEL_HOST van %s (%s) voor %s wat niet overeenkomt" -#: src/protocol.c:776 +#: src/protocol.c:815 #, c-format msgid "Got bad STATUS from %s (%s)" msgstr "Kreeg ongeldige STATUS van %s (%s)" -#: src/protocol.c:783 +#: src/protocol.c:822 #, c-format msgid "Status message from %s (%s): %s: %s" msgstr "Ontving statusbericht van %s (%s): %s: %s" -#: src/protocol.c:807 +#: src/protocol.c:846 #, c-format msgid "Got bad ERROR from %s (%s)" msgstr "Kreeg ongeldige ERROR van %s (%s)" -#: src/protocol.c:814 +#: src/protocol.c:853 #, c-format msgid "Error message from %s (%s): %s: %s" msgstr "Ontving foutmelding van %s (%s): %s: %s" -#: src/protocol.c:892 +#: src/protocol.c:931 #, c-format msgid "Got bad KEY_CHANGED from %s (%s)" msgstr "Kreeg ongeldige KEY_CHANGED van %s (%s)" -#: src/protocol.c:899 +#: src/protocol.c:938 #, c-format msgid "" "Got KEY_CHANGED from %s (%s) origin %s which does not exist in our " @@ -648,12 +650,12 @@ msgstr "" "Kreeg KEY_CHANGED van %s (%s) met herkomst %s die niet in onze " "verbindingslijst voorkomt" -#: src/protocol.c:929 +#: src/protocol.c:968 #, c-format msgid "Got bad REQ_KEY from %s (%s)" msgstr "Kreeg ongeldige REQ_KEY van %s (%s)" -#: src/protocol.c:936 +#: src/protocol.c:975 #, c-format msgid "" "Got REQ_KEY from %s (%s) origin %s which does not exist in our connection " @@ -662,7 +664,7 @@ msgstr "" "Kreeg REQ_KEY van %s (%s) herkomst %s die niet in onze verbindingslijst " "voorkomt" -#: src/protocol.c:952 +#: src/protocol.c:991 #, c-format msgid "" "Got REQ_KEY from %s (%s) destination %s which does not exist in our " @@ -670,12 +672,12 @@ msgid "" msgstr "" "Kreeg REQ_KEY van %s (%s) doel %s die niet in onze verbindingslijst voorkomt" -#: src/protocol.c:980 +#: src/protocol.c:1019 #, c-format msgid "Got bad ANS_KEY from %s (%s)" msgstr "Kreeg ongeldige ANS_KEY van %s (%s)" -#: src/protocol.c:987 +#: src/protocol.c:1026 #, c-format msgid "" "Got ANS_KEY from %s (%s) origin %s which does not exist in our connection " @@ -684,12 +686,12 @@ msgstr "" "Kreeg ANS_KEY van %s (%s) met herkomst %s die niet in onze verbindingslijst " "voorkomt" -#: src/protocol.c:1003 +#: src/protocol.c:1042 #, c-format msgid "Got bad ANS_KEY from %s (%s) origin %s: invalid key" msgstr "Kreeg ongeldige ANS_KEY van %s (%s) herkomst %s: ongeldige sleutel" -#: src/protocol.c:1016 +#: src/protocol.c:1055 #, c-format msgid "" "Got ANS_KEY from %s (%s) destination %s which does not exist in our " @@ -697,12 +699,12 @@ msgid "" msgstr "" "Kreeg ANS_KEY van %s (%s) doel %s die niet in onze verbindingslijst voorkomt" -#: src/tincd.c:94 +#: src/tincd.c:99 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Probeer `%s --help' voor meer informatie.\n" -#: src/tincd.c:97 +#: src/tincd.c:102 #, c-format msgid "" "Usage: %s [option]...\n" @@ -711,100 +713,132 @@ msgstr "" "Gebruik: %s [optie]...\n" "\n" -#: src/tincd.c:98 +#: src/tincd.c:103 msgid "" " -c, --config=DIR Read configuration options from DIR.\n" " -D, --no-detach Don't fork and detach.\n" " -d Increase debug level.\n" " -k, --kill Attempt to kill a running tincd and exit.\n" " -n, --net=NETNAME Connect to net NETNAME.\n" -" -t, --timeout=TIMEOUT Seconds to wait before giving a timeout.\n" msgstr "" " -c, --config=MAP Lees configuratie uit MAP.\n" " -D, --no-detach Start geen nieuw proces.\n" " -d Verhoog debugniveau.\n" " -k, --kill Poging tot doden van lopende tincd en beëindig.\n" " -n, --net=NETNAAM Verbind met net NETNAAM.\n" -" -t, --timeout=TIMEOUT Seconden wachten op timeout.\n" -#: src/tincd.c:104 +#: src/tincd.c:108 msgid "" +" -K, --keygen[=BITS] Generate public/private RSA keypair.\n" " --help Display this help and exit.\n" " --version Output version information and exit.\n" "\n" msgstr "" +" -K, --keygen[=BITS] Genereer publiek/privé RSA sleutelpaar.\n" " --help Geef deze hulp en beëindig.\n" " --version Geef versie informatie en beëindig.\n" "\n" -#: src/tincd.c:106 +#: src/tincd.c:111 msgid "Report bugs to tinc@nl.linux.org.\n" msgstr "" "Meld fouten in het programma aan tinc@nl.linux.org;\n" "Meld fouten in de vertaling aan vertaling@nl.linux.org.\n" -#: src/tincd.c:144 +#: src/tincd.c:152 +msgid "Invalid argument! BITS must be a number equal to or greater than 512.\n" +msgstr "" +"Ongeldig argument! BITS moet een nummer zijn gelijk aan of groter dan 512.\n" + +#: src/tincd.c:207 +msgid "" +"Seeding the PRNG: please press some keys or move\n" +"the mouse if this program seems to have halted...\n" +msgstr "" +"Initialisatie van PRNG: druk op de toetsen of beweeg\n" +"de muis als het programma gestopt lijkt te zijn...\n" + +#. OpenSSL PRNG state apparently uses 1024 bytes, but it seems pretty sufficient anyway :) +#: src/tincd.c:210 #, c-format -msgid "Invalid timeout value `%s'.\n" -msgstr "Ongeldige timeout waarde `%s'.\n" +msgid "Generating %d bits keys:\n" +msgstr "Bezig met genereren van een %d bits sleutel:\n" -#: src/tincd.c:158 +#: src/tincd.c:214 +msgid "Error during key generation!" +msgstr "Fout tijdens genereren sleutel!" + +#: src/tincd.c:218 +msgid "Done.\n" +msgstr "Klaar.\n" + +#: src/tincd.c:220 +msgid "" +"Please copy the private key to tinc.conf and the\n" +"public key to your host configuration file:\n" +"\n" +msgstr "" +"Copiëer de privé sleutel naar tinc.conf en de\n" +"publieke sleutel naar het host configuratie bestand:\n" +"\n" + +#: src/tincd.c:230 #, c-format msgid "Memory exhausted (last is %s:%d) (couldn't allocate %d bytes), exiting." msgstr "" "Geheugen is vol (laatste %s:%d) (kon geen %d bytes vrijmaken), beëindigen." -#: src/tincd.c:213 +#: src/tincd.c:285 #, c-format msgid "tincd %s (%s %s) starting, debug level %d" msgstr "tincd %s (%s %s) gestart, debugniveau %d" -#: src/tincd.c:216 +#: src/tincd.c:288 #, c-format msgid "tincd %s starting" msgstr "tincd %s gestart" -#: src/tincd.c:231 +#: src/tincd.c:303 #, c-format msgid "Total bytes written: tap %d, socket %d; bytes read: tap %d, socket %d" msgstr "" "Totaal aantal bytes geschreven: tap %d, socket %d; bytes gelezen: top %d, " "socket %d." -#: src/tincd.c:249 +#: src/tincd.c:321 #, c-format msgid "A tincd is already running for net `%s' with pid %d.\n" msgstr "Een tincd voor net `%s' draait al met procesnummer %d.\n" -#: src/tincd.c:252 +#: src/tincd.c:324 #, c-format msgid "A tincd is already running with pid %d.\n" msgstr "Een tincd draait al met procesnummer %d.\n" -#: src/tincd.c:273 +#: src/tincd.c:345 #, c-format msgid "No other tincd is running for net `%s'.\n" msgstr "Geen andere tincd gevonden voor net `%s'.\n" -#: src/tincd.c:275 +#: src/tincd.c:347 msgid "No other tincd is running.\n" msgstr "Geen andere tincd gevonden.\n" -#: src/tincd.c:282 +#: src/tincd.c:354 msgid "Removing stale lock file.\n" msgstr "Ongebruikt vergrendelingsbestand verwijderd.\n" #. Do some intl stuff right now -#: src/tincd.c:325 +#: src/tincd.c:397 msgid "unknown" msgstr "onbekend" -#: src/tincd.c:331 +#: src/tincd.c:403 #, c-format msgid "%s version %s (built %s %s, protocol %d)\n" msgstr "%s versie %s (gemaakt %s %s, protocol %d)\n" -#: src/tincd.c:332 +#: src/tincd.c:404 msgid "" "Copyright (C) 1998,1999,2000 Ivo Timmermans, Guus Sliepen and others.\n" "See the AUTHORS file for a complete list.\n" @@ -821,61 +855,70 @@ msgstr "" "en je bent welkom om het te distribueren onder bepaalde voorwaarden;\n" "zie het bestand COPYING voor details.\n" -#: src/tincd.c:346 +#: src/tincd.c:418 msgid "You must be root to run this program. Sorry.\n" msgstr "" "Je moet systeembeheerder zijn om dit programma te kunnen draaien. Sorry.\n" -#: src/tincd.c:377 +#: src/tincd.c:452 msgid "Unrecoverable error" msgstr "Onherstelbare fout" -#: src/tincd.c:382 +#: src/tincd.c:457 #, c-format msgid "Restarting in %d seconds!" msgstr "Herstart in %d seconden!" -#: src/tincd.c:387 src/tincd.c:433 +#: src/tincd.c:462 src/tincd.c:508 msgid "Aieee! Not restarting." msgstr "Waaah! Geen herstart." -#: src/tincd.c:397 +#: src/tincd.c:472 msgid "Got TERM signal" msgstr "Kreeg TERM signaal" -#: src/tincd.c:405 +#: src/tincd.c:480 msgid "Got QUIT signal" msgstr "Kreeg QUIT signaal" -#: src/tincd.c:412 +#: src/tincd.c:487 msgid "Got another SEGV signal: not restarting" msgstr "Kreeg nog een SEGV signaal: niet herstarten" -#: src/tincd.c:419 +#: src/tincd.c:494 msgid "Got SEGV signal" msgstr "Kreeg SEGV signaal" -#: src/tincd.c:424 +#: src/tincd.c:499 msgid "Trying to re-execute in 5 seconds..." msgstr "Poging tot herstaren over 5 seconden..." -#: src/tincd.c:442 +#: src/tincd.c:517 msgid "Got HUP signal, rereading configuration and restarting" msgstr "Kreeg HUP signaal, herlezen configuratie en herstarten" -#: src/tincd.c:450 +#: src/tincd.c:525 msgid "Got INT signal, exiting" msgstr "Kreeg INT signaal, beëindigen" -#: src/tincd.c:464 +#: src/tincd.c:539 msgid "Got USR2 signal, forcing new key generation" msgstr "Kreeg USR2 signaal, nieuwe sleutels geforceerd" -#: src/tincd.c:473 +#: src/tincd.c:548 #, c-format msgid "Got unexpected signal %d (%s)" msgstr "Kreeg onverwacht signaal %d (%s)" +#~ msgid "Usage: %s bits\n" +#~ msgstr "Gebruik: %s bits\n" + +#~ msgid "Illegal number: %s\n" +#~ msgstr "Ongeldig nummer: %s\n" + +#~ msgid "Invalid timeout value `%s'.\n" +#~ msgstr "Ongeldige timeout waarde `%s'.\n" + #~ msgid "Illegal passphrase in %s; size would be %d" #~ msgstr "Ongeldig wachtwoord in %s; grootte zou %d zijn" diff --git a/src/Makefile.am b/src/Makefile.am index 9755bae8..81e57974 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,9 +1,8 @@ ## Produce this file with automake to get Makefile.in -# $Id: Makefile.am,v 1.4.4.2 2000/10/11 10:35:15 guus Exp $ +# $Id: Makefile.am,v 1.4.4.3 2000/10/20 16:49:20 guus Exp $ -sbin_PROGRAMS = tincd genauth +sbin_PROGRAMS = tincd -genauth_SOURCES = genauth.c tincd_SOURCES = conf.c connlist.c meta.c net.c netutl.c protocol.c subnet.c tincd.c INCLUDES = -I$(top_builddir) -I$(top_srcdir)/cipher -I$(top_srcdir)/lib -I$(top_srcdir)/intl diff --git a/src/genauth.c b/src/genauth.c deleted file mode 100644 index 78c567d0..00000000 --- a/src/genauth.c +++ /dev/null @@ -1,113 +0,0 @@ -/* - genauth.c -- generate public/private keypairs - Copyright (C) 1998,1999,2000 Ivo Timmermans - 2000 Guus Sliepen - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - $Id: genauth.c,v 1.7.4.4 2000/10/20 15:34:35 guus Exp $ -*/ - -#include "config.h" - -#include -#include -#include -#include -#include - -#include - -#include "system.h" - -#define RSA_PUBLIC_EXPONENT 65535 - -void indicator(int a, int b, void *p) -{ - switch(a) - { - case 0: - fprintf(stderr, "."); - break; - case 1: - fprintf(stderr, "+"); - break; - case 2: - fprintf(stderr, "-"); - break; - case 3: - switch(b) - { - case 0: - fprintf(stderr, " p\n"); - break; - case 1: - fprintf(stderr, " q\n"); - break; - default: - fprintf(stderr, "?"); - } - break; - default: - fprintf(stderr, "?"); - } -} - -int main(int argc, char **argv) -{ - int bits; - RSA *key; - - setlocale (LC_ALL, ""); - bindtextdomain (PACKAGE, LOCALEDIR); - textdomain (PACKAGE); - - if(argc > 2 || (argc == 2 && (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help")))) - { - fprintf(stderr, _("Usage: %s bits\n"), argv[0]); - return 1; - } - - if(!argv[1]) - argv[1] = "1024"; - - bits = atol(argv[1]); - - if(bits<32) - { - fprintf(stderr, _("Illegal number: %s\n"), argv[1]); - return 1; - } - - bits = ((bits - 1) | 7) + 1; /* Align to bytes for easy mallocing and reading */ - - fprintf(stderr, _("Seeding the PRNG: please press some keys or move\nthe mouse if this program seems to have halted...\n")); - - RAND_load_file("/dev/random", 1024); /* OpenSSL PRNG state apparently uses 1024 bytes */ - - fprintf(stderr, _("Generating %d bits keys:\n"), bits); - - key = RSA_generate_key(bits, RSA_PUBLIC_EXPONENT, indicator, NULL); - - fprintf(stderr, _("Done.\n")); - - printf(_("Public key: %s\n"), BN_bn2hex(key->n)); - printf(_("Private key: %s\n"), BN_bn2hex(key->d)); - printf(_("Public exp: %s\n"), BN_bn2hex(key->e)); - - fflush(stdin); /* Flush any input caused by random keypresses */ - - return 0; -} diff --git a/src/tincd.c b/src/tincd.c index 0536d96f..f0072522 100644 --- a/src/tincd.c +++ b/src/tincd.c @@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: tincd.c,v 1.10.4.12 2000/10/15 00:59:37 guus Exp $ + $Id: tincd.c,v 1.10.4.13 2000/10/20 16:49:20 guus Exp $ */ #include "config.h" @@ -31,6 +31,8 @@ #include #include #include +#include +#include #ifdef HAVE_SYS_IOCTL_H # include @@ -63,6 +65,9 @@ static int kill_tincd = 0; /* If zero, don't detach from the terminal. */ static int do_detach = 1; +/* If nonzero, generate public/private keypair for this host/net. */ +static int generate_keys = 0; + char *identname; /* program name for syslog */ char *pidfilename; /* pid file location */ static pid_t ppid; /* pid of non-detached part */ @@ -80,10 +85,10 @@ static struct option const long_options[] = { { "kill", no_argument, NULL, 'k' }, { "net", required_argument, NULL, 'n' }, - { "timeout", required_argument, NULL, 'p' }, { "help", no_argument, &show_help, 1 }, { "version", no_argument, &show_version, 1 }, { "no-detach", no_argument, &do_detach, 0 }, + { "keygen", optional_argument, NULL, 'K'}, { NULL, 0, NULL, 0 } }; @@ -99,9 +104,9 @@ usage(int status) " -D, --no-detach Don't fork and detach.\n" " -d Increase debug level.\n" " -k, --kill Attempt to kill a running tincd and exit.\n" - " -n, --net=NETNAME Connect to net NETNAME.\n" - " -t, --timeout=TIMEOUT Seconds to wait before giving a timeout.\n")); - printf(_(" --help Display this help and exit.\n" + " -n, --net=NETNAME Connect to net NETNAME.\n")); + printf(_(" -K, --keygen[=BITS] Generate public/private RSA keypair.\n" + " --help Display this help and exit.\n" " --version Output version information and exit.\n\n")); printf(_("Report bugs to tinc@nl.linux.org.\n")); } @@ -115,7 +120,7 @@ parse_options(int argc, char **argv, char **envp) int option_index = 0; config_t *p; - while((r = getopt_long(argc, argv, "c:Ddkn:t:", long_options, &option_index)) != EOF) + while((r = getopt_long(argc, argv, "c:Ddkn:K::", long_options, &option_index)) != EOF) { switch(r) { @@ -138,12 +143,19 @@ parse_options(int argc, char **argv, char **envp) netname = xmalloc(strlen(optarg)+1); strcpy(netname, optarg); break; - case 't': /* timeout */ - if(!(p = add_config_val(&config, TYPE_INT, optarg))) - { - printf(_("Invalid timeout value `%s'.\n"), optarg); - usage(1); - } + case 'K': /* generate public/private keypair */ + if(optarg) + { + generate_keys = atoi(optarg); + if(generate_keys < 512) + { + fprintf(stderr, _("Invalid argument! BITS must be a number equal to or greater than 512.\n")); + usage(1); + } + generate_keys &= ~7; /* Round it to bytes */ + } + else + generate_keys = 1024; break; case '?': usage(1); @@ -153,6 +165,66 @@ parse_options(int argc, char **argv, char **envp) } } +/* This function prettyprints the key generation process */ + +void indicator(int a, int b, void *p) +{ + switch(a) + { + case 0: + fprintf(stderr, "."); + break; + case 1: + fprintf(stderr, "+"); + break; + case 2: + fprintf(stderr, "-"); + break; + case 3: + switch(b) + { + case 0: + fprintf(stderr, " p\n"); + break; + case 1: + fprintf(stderr, " q\n"); + break; + default: + fprintf(stderr, "?"); + } + break; + default: + fprintf(stderr, "?"); + } +} + +/* Generate a public/private RSA keypair, and possibly store it into the configuration file. */ + +int keygen(int bits) +{ + RSA *rsa_key; + + fprintf(stderr, _("Seeding the PRNG: please press some keys or move\nthe mouse if this program seems to have halted...\n")); + RAND_load_file("/dev/random", 1024); /* OpenSSL PRNG state apparently uses 1024 bytes, but it seems pretty sufficient anyway :) */ + + fprintf(stderr, _("Generating %d bits keys:\n"), bits); + rsa_key = RSA_generate_key(bits, 0xFFFF, indicator, NULL); + if(!rsa_key) + { + fprintf(stderr, _("Error during key generation!")); + return -1; + } + else + fprintf(stderr, _("Done.\n")); + + fprintf(stderr, _("Please copy the private key to tinc.conf and the\npublic key to your host configuration file:\n\n")); + printf("PublicKey = %s\n", BN_bn2hex(rsa_key->n)); + printf("PrivateKey = %s\n", BN_bn2hex(rsa_key->d)); + + fflush(stdin); + return 0; +} + void memory_full(int size) { syslog(LOG_ERR, _("Memory exhausted (last is %s:%d) (couldn't allocate %d bytes), exiting."), cp_file, cp_line, size); @@ -351,6 +423,9 @@ main(int argc, char **argv, char **envp) make_names(); + if(generate_keys) + exit(keygen(generate_keys)); + if(kill_tincd) exit(kill_other());