From 82a8acf9ce1f74b67286843e9c257fdcd65e4d76 Mon Sep 17 00:00:00 2001 From: Sebastien Helleu Date: Tue, 16 Oct 2012 19:14:26 +0200 Subject: [PATCH] relay: add support of IPv6, new option relay.network.ipv6, add support of "ipv4." and/or "ipv6." before protocol name, to force IPv4/IPv6 (task #12270) --- ChangeLog | 4 +- NEWS | 8 +- doc/de/autogen/user/relay_commands.txt | 48 ++-- doc/de/autogen/user/relay_options.txt | 7 +- doc/en/autogen/user/relay_commands.txt | 14 +- doc/en/autogen/user/relay_options.txt | 7 +- doc/fr/autogen/user/relay_commands.txt | 14 +- doc/fr/autogen/user/relay_options.txt | 7 +- doc/it/autogen/user/relay_commands.txt | 48 ++-- doc/it/autogen/user/relay_options.txt | 7 +- doc/ja/autogen/user/relay_commands.txt | 48 ++-- doc/ja/autogen/user/relay_options.txt | 7 +- po/cs.po | 43 +++- po/de.po | 54 +++-- po/es.po | 53 ++-- po/fr.po | 80 ++++-- po/hu.po | 47 ++-- po/it.po | 54 +++-- po/ja.po | 54 +++-- po/pl.po | 50 ++-- po/pt_BR.po | 43 +++- po/ru.po | 47 ++-- po/weechat.pot | 43 +++- src/plugins/relay/relay-command.c | 25 +- src/plugins/relay/relay-completion.c | 9 +- src/plugins/relay/relay-config.c | 54 ++++- src/plugins/relay/relay-config.h | 1 + src/plugins/relay/relay-server.c | 321 +++++++++++++++++-------- src/plugins/relay/relay-server.h | 12 +- src/plugins/relay/relay.c | 3 +- 30 files changed, 840 insertions(+), 372 deletions(-) diff --git a/ChangeLog b/ChangeLog index 18681b1e0..1660a4e0d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,7 @@ WeeChat ChangeLog ================= Sébastien Helleu -v0.4.0-dev, 2012-10-14 +v0.4.0-dev, 2012-10-16 Version 0.4.0 (under dev!) @@ -18,6 +18,8 @@ Version 0.4.0 (under dev!) * irc: fix crash when message 352 has too few arguments (bug #37513) * irc: remove unneeded server disconnect when server buffer is closed and server is already disconnected +* relay: add support of IPv6, new option relay.network.ipv6, add support of + "ipv4." and/or "ipv6." before protocol name, to force IPv4/IPv6 (task #12270) * relay: add missing "ssl." in output of /relay listrelay * script: fix compilation on OS X diff --git a/NEWS b/NEWS index 410882117..29169009c 100644 --- a/NEWS +++ b/NEWS @@ -1,7 +1,7 @@ WeeChat Release Notes ===================== Sébastien Helleu -v0.4.0-dev, 2012-10-14 +v0.4.0-dev, 2012-10-16 Version 0.4.0 (under dev!) @@ -13,6 +13,12 @@ Important release notes: The option irc.server_default.ipv6 is now "on" by default. If IPv6 is not enabled or fails, IPv4 will be used. The "ipv6" option in server is now used to disable IPv6 and force IPv6 (if option is turned "off"). +* relay is now listening by default on an IPv6 socket (new option + relay.network.ipv6, on by default), so connections with IPv4 will have + IPv4-mapped IPv6 addresses, like: "::ffff:127.0.0.1" (for "127.0.0.1"); + check that value of option relay.network.allowed_ips supports this mapping, + or disable IPv6 in relay if you don't plan to use it at all: +** `/set relay.network.ipv6 off` Version 0.3.9 (2012-09-29) -------------------------- diff --git a/doc/de/autogen/user/relay_commands.txt b/doc/de/autogen/user/relay_commands.txt index 2b76ff6e5..31fb194d3 100644 --- a/doc/de/autogen/user/relay_commands.txt +++ b/doc/de/autogen/user/relay_commands.txt @@ -2,34 +2,42 @@ [command]*`relay`* Relay-Kontrolle:: ........................................ /relay list|listfull|listrelay - add - del + add [ipv4.][ipv6.][ssl.] + del [ipv4.][ipv6.][ssl.] raw sslcertkey - list: Auflistung der Relay-Clients (nur aktive Relays) - listfull: detaillierte Auflistung der Relay-Clients (alle Relays) - listrelay: Auflistung der Relays (Name und Port) - add: fügt ein Relay, für ein Protokoll + Name, hinzu - del: entfernt Relay für ein Protokoll + Name -protocol.name: Protokoll und Name des Relay: - - Protokoll "irc": und der Name des Servers welcher geteilt werden soll - - Protokoll "weechat" (Name wird nicht unterstützt) - Hinweis: Das SSL Protokoll kann durch voranstellen von "ssl." aktiviert werden - port: Port den das Relay nutzen soll - raw: öffnet Buffer mit RAW-Relay Daten - sslcertkey: setzt SSL Zertifikat/Schlüssel mittels Eintrag in Option relay.network.ssl_cert_key + list: list relay clients (only active relays) + listfull: list relay clients (verbose, all relays) + listrelay: list relays (name and port) + add: add relay for a protocol + name + del: remove relay for a protocol + name + ipv4: force use of IPv4 + ipv6: force use of IPv6 + ssl: enable SSL +protocol.name: protocol and name to relay: + - protocol "irc": name is the server to share + - protocol "weechat" (name is not used) + port: port used for relay + raw: open buffer with raw Relay data + sslcertkey: set SSL certificate/key using path in option relay.network.ssl_cert_key -Ohne Angabe von Argumenten werden alle Relay-Clients in einem neuen Buffer dargestellt. +Without argument, this command opens buffer with list of relay clients. -Beispiele: - IRC Proxy für Server "freenode": +Examples: + irc proxy, for server "freenode": /relay add irc.freenode 8000 - IRC Proxy, für Server "freenode", mit SSL: + irc proxy, for server "freenode", with SSL: /relay add ssl.irc.freenode 8001 - WeeChat Protokoll: + weechat protocol: /relay add weechat 9000 - WeeChat Protokoll, mit SSL: + weechat protocol with SSL: /relay add ssl.weechat 9001 + weechat protocol with SSL, using only IPv4: + /relay add ipv4.ssl.weechat 9001 + weechat protocol with SSL, using only IPv6: + /relay add ipv6.ssl.weechat 9001 + weechat protocol with SSL, using IPv4 + IPv6: + /relay add ipv4.ipv6.ssl.weechat 9001 ........................................ diff --git a/doc/de/autogen/user/relay_options.txt b/doc/de/autogen/user/relay_options.txt index 08347155e..0666e9eee 100644 --- a/doc/de/autogen/user/relay_options.txt +++ b/doc/de/autogen/user/relay_options.txt @@ -54,7 +54,7 @@ ** Werte: 0 .. 65535 (Standardwert: `256`) * [[option_relay.network.allowed_ips]] *relay.network.allowed_ips* -** Beschreibung: `regulärer Ausdruck für IP Adressen die auf das Relay zugreifen dürfen (zwischen Groß- und Kleinschreibung nicht dabei nicht unterschieden. Um zwischen Groß-und Kleinschreibung zu unterscheiden muss am Wortanfang "(?-i)" genutzt werden) , Beispiel: "^(123.45.67.89|192.160.*)$"` +** Beschreibung: `regular expression with IPs allowed to use relay (case insensitive, use "(?-i)" at beginning to make it case sensitive); if IPv6 is enabled and that connection is made using IPv4, it will be IPv4-mapped IPv6 address (like: "::ffff:127.0.0.1"), example: "^((::ffff:)?123.45.67.89|192.160.*)$"` ** Typ: Zeichenkette ** Werte: beliebige Zeichenkette (Standardwert: `""`) @@ -68,6 +68,11 @@ ** Typ: integer ** Werte: 0 .. 9 (Standardwert: `6`) +* [[option_relay.network.ipv6]] *relay.network.ipv6* +** Beschreibung: `listen on IPv6 socket by default (in addition to IPv4 which is default); protocols IPv4 and IPv6 can be forced (individually or together) in the protocol name (see /help relay)` +** Typ: boolesch +** Werte: on, off (Standardwert: `on`) + * [[option_relay.network.max_clients]] *relay.network.max_clients* ** Beschreibung: `maximale Anzahl an Clients die mit einem Port verbunden sein dürfen` ** Typ: integer diff --git a/doc/en/autogen/user/relay_commands.txt b/doc/en/autogen/user/relay_commands.txt index ff8cdef5c..4adae3435 100644 --- a/doc/en/autogen/user/relay_commands.txt +++ b/doc/en/autogen/user/relay_commands.txt @@ -2,8 +2,8 @@ [command]*`relay`* relay control:: ........................................ /relay list|listfull|listrelay - add - del + add [ipv4.][ipv6.][ssl.] + del [ipv4.][ipv6.][ssl.] raw sslcertkey @@ -12,10 +12,12 @@ listrelay: list relays (name and port) add: add relay for a protocol + name del: remove relay for a protocol + name + ipv4: force use of IPv4 + ipv6: force use of IPv6 + ssl: enable SSL protocol.name: protocol and name to relay: - protocol "irc": name is the server to share - protocol "weechat" (name is not used) - Note: the protocol can be prefixed by "ssl." to enable SSL port: port used for relay raw: open buffer with raw Relay data sslcertkey: set SSL certificate/key using path in option relay.network.ssl_cert_key @@ -31,5 +33,11 @@ Examples: /relay add weechat 9000 weechat protocol with SSL: /relay add ssl.weechat 9001 + weechat protocol with SSL, using only IPv4: + /relay add ipv4.ssl.weechat 9001 + weechat protocol with SSL, using only IPv6: + /relay add ipv6.ssl.weechat 9001 + weechat protocol with SSL, using IPv4 + IPv6: + /relay add ipv4.ipv6.ssl.weechat 9001 ........................................ diff --git a/doc/en/autogen/user/relay_options.txt b/doc/en/autogen/user/relay_options.txt index 60383fc62..237264a53 100644 --- a/doc/en/autogen/user/relay_options.txt +++ b/doc/en/autogen/user/relay_options.txt @@ -54,7 +54,7 @@ ** values: 0 .. 65535 (default value: `256`) * [[option_relay.network.allowed_ips]] *relay.network.allowed_ips* -** description: `regular expression with IPs allowed to use relay (case insensitive, use "(?-i)" at beginning to make it case sensitive), example: "^(123.45.67.89|192.160.*)$"` +** description: `regular expression with IPs allowed to use relay (case insensitive, use "(?-i)" at beginning to make it case sensitive); if IPv6 is enabled and that connection is made using IPv4, it will be IPv4-mapped IPv6 address (like: "::ffff:127.0.0.1"), example: "^((::ffff:)?123.45.67.89|192.160.*)$"` ** type: string ** values: any string (default value: `""`) @@ -68,6 +68,11 @@ ** type: integer ** values: 0 .. 9 (default value: `6`) +* [[option_relay.network.ipv6]] *relay.network.ipv6* +** description: `listen on IPv6 socket by default (in addition to IPv4 which is default); protocols IPv4 and IPv6 can be forced (individually or together) in the protocol name (see /help relay)` +** type: boolean +** values: on, off (default value: `on`) + * [[option_relay.network.max_clients]] *relay.network.max_clients* ** description: `maximum number of clients connecting to a port` ** type: integer diff --git a/doc/fr/autogen/user/relay_commands.txt b/doc/fr/autogen/user/relay_commands.txt index e21a58d5e..b67030b78 100644 --- a/doc/fr/autogen/user/relay_commands.txt +++ b/doc/fr/autogen/user/relay_commands.txt @@ -2,8 +2,8 @@ [command]*`relay`* contrôle du relai:: ........................................ /relay list|listfull|listrelay - add - del + add [ipv4.][ipv6.][ssl.] + [ipv4.][ipv6.][ssl.]del raw sslcertkey @@ -12,10 +12,12 @@ listrelay: lister les relais (nom et port) add: ajouter un relai pour un protocole + nom del: supprimer un relai pour un protocole + nom + ipv4: forcer l'utilisation d'IPv4 + ipv6: forcer l'utilisation d'IPv6 + ssl: activer SSL protocole.nom: protocole et nom à relayer: - protocole "irc": le nom est le serveur à partager - protocole "weechat" (le nom n'est pas utilisé) - Note: le protocole peut être préfixé par "ssl." pour activer le SSL port: port utilisé pour le relai raw: ouvrir le tampon avec les données brutes Relay sslcertkey: définir le certificat/clé SSL en utilisant le chemin de l'option relay.network.ssl_cert_key @@ -31,5 +33,11 @@ Exemples: /relay add weechat 9000 protocole weechat avec SSL: /relay add ssl.weechat 9001 + protocole weechat avec SSL, en utilisant seulement IPv4: + /relay add ipv4.ssl.weechat 9001 + protocole weechat avec SSL, en utilisant seulement IPv6: + /relay add ipv6.ssl.weechat 9001 + protocole weechat avec SSL, en utilisant IPv4 + IPv6: + /relay add ipv4.ipv6.ssl.weechat 9001 ........................................ diff --git a/doc/fr/autogen/user/relay_options.txt b/doc/fr/autogen/user/relay_options.txt index 74fef8e12..b39576eaa 100644 --- a/doc/fr/autogen/user/relay_options.txt +++ b/doc/fr/autogen/user/relay_options.txt @@ -54,7 +54,7 @@ ** valeurs: 0 .. 65535 (valeur par défaut: `256`) * [[option_relay.network.allowed_ips]] *relay.network.allowed_ips* -** description: `expression régulière avec les IPs autorisées pour le relai (insensible à la casse, utilisez "(?-i)" en début de chaîne pour la rendre sensible à la casse), exemple: "^(123.45.67.89|192.160.*)$"` +** description: `expression régulière avec les IPs autorisées pour le relai (insensible à la casse, utilisez "(?-i)" en début de chaîne pour la rendre sensible à la casse); si l'IPv6 est activé et qu'une connexion est faite en IPv4, il y aura une adresse IPv4 encapsulée dans une IPv6 (comme: "::ffff:127.0.0.1"), exemple: "^((::ffff:)?123.45.67.89|192.160.*)$"` ** type: chaîne ** valeurs: toute chaîne (valeur par défaut: `""`) @@ -68,6 +68,11 @@ ** type: entier ** valeurs: 0 .. 9 (valeur par défaut: `6`) +* [[option_relay.network.ipv6]] *relay.network.ipv6* +** description: `écouter en IPv6 sur la socket par défaut (en plus de l'IPv4 qui est par défaut); les protocoles IPv4 et IPv6 peuvent être forcés (individuellement ou ensemble) dans le nom du protocole (voir /help relay)` +** type: booléen +** valeurs: on, off (valeur par défaut: `on`) + * [[option_relay.network.max_clients]] *relay.network.max_clients* ** description: `nombre maximum de clients qui se connectent sur un port` ** type: entier diff --git a/doc/it/autogen/user/relay_commands.txt b/doc/it/autogen/user/relay_commands.txt index 2a37ee244..5dccc299e 100644 --- a/doc/it/autogen/user/relay_commands.txt +++ b/doc/it/autogen/user/relay_commands.txt @@ -2,34 +2,42 @@ [command]*`relay`* controllo relay:: ........................................ /relay list|listfull|listrelay - add - del + add [ipv4.][ipv6.][ssl.] + del [ipv4.][ipv6.][ssl.] raw sslcertkey - list: elenca i client relay (solo quelli attivi) - listfull: elenca i client relay (dettagliato, tutti i relay) - listrelay: elenca i relay (nome e porta) - add: aggiungi relay per un protocollo + nome - del: rimuovi relay per un protocollo + nome -protocollo.nome: protocollo e nome con cui effettuare il relay - - protocollo "irc": il nome è il server da condividere - - protocollo "weechat" (il nome non viene usato) - Nota: il protocollo può avere il prefisso "ssl." per abilitare SSL - porta: porta usata per il relay - raw: apre il buffer con dati raw Relay - sslcertkey: imposta chiave/certificato SSl usando un path nell'opzione relay.network.ssl_cert_key + list: list relay clients (only active relays) + listfull: list relay clients (verbose, all relays) + listrelay: list relays (name and port) + add: add relay for a protocol + name + del: remove relay for a protocol + name + ipv4: force use of IPv4 + ipv6: force use of IPv6 + ssl: enable SSL +protocol.name: protocol and name to relay: + - protocol "irc": name is the server to share + - protocol "weechat" (name is not used) + port: port used for relay + raw: open buffer with raw Relay data + sslcertkey: set SSL certificate/key using path in option relay.network.ssl_cert_key -Senza argomento, il comando apre i buffer con l'elenco dei client relay. +Without argument, this command opens buffer with list of relay clients. -Esempi: - proxy irc, per il server "freenode": +Examples: + irc proxy, for server "freenode": /relay add irc.freenode 8000 - irc proxy, per il server "freenode", con SSL: + irc proxy, for server "freenode", with SSL: /relay add ssl.irc.freenode 8001 - protocollo weechat: + weechat protocol: /relay add weechat 9000 - protocollo weechat con SSL: + weechat protocol with SSL: /relay add ssl.weechat 9001 + weechat protocol with SSL, using only IPv4: + /relay add ipv4.ssl.weechat 9001 + weechat protocol with SSL, using only IPv6: + /relay add ipv6.ssl.weechat 9001 + weechat protocol with SSL, using IPv4 + IPv6: + /relay add ipv4.ipv6.ssl.weechat 9001 ........................................ diff --git a/doc/it/autogen/user/relay_options.txt b/doc/it/autogen/user/relay_options.txt index 783cfb1d4..2953a3b3d 100644 --- a/doc/it/autogen/user/relay_options.txt +++ b/doc/it/autogen/user/relay_options.txt @@ -54,7 +54,7 @@ ** valori: 0 .. 65535 (valore predefinito: `256`) * [[option_relay.network.allowed_ips]] *relay.network.allowed_ips* -** descrizione: `espressione regolare con gli indirizzi IP a cui è consentito usare il relay, (non sensibile alle maiuscole, usare "(?-i)" all'inizio per renderla sensibile alle maiuscole), esempio: "^(123.45.67.89|192.160.*)$"` +** descrizione: `regular expression with IPs allowed to use relay (case insensitive, use "(?-i)" at beginning to make it case sensitive); if IPv6 is enabled and that connection is made using IPv4, it will be IPv4-mapped IPv6 address (like: "::ffff:127.0.0.1"), example: "^((::ffff:)?123.45.67.89|192.160.*)$"` ** tipo: stringa ** valori: qualsiasi stringa (valore predefinito: `""`) @@ -68,6 +68,11 @@ ** tipo: intero ** valori: 0 .. 9 (valore predefinito: `6`) +* [[option_relay.network.ipv6]] *relay.network.ipv6* +** descrizione: `listen on IPv6 socket by default (in addition to IPv4 which is default); protocols IPv4 and IPv6 can be forced (individually or together) in the protocol name (see /help relay)` +** tipo: bool +** valori: on, off (valore predefinito: `on`) + * [[option_relay.network.max_clients]] *relay.network.max_clients* ** descrizione: `numero massimo di client connessi ad una porta` ** tipo: intero diff --git a/doc/ja/autogen/user/relay_commands.txt b/doc/ja/autogen/user/relay_commands.txt index 9b75183cd..f6f36ad8b 100644 --- a/doc/ja/autogen/user/relay_commands.txt +++ b/doc/ja/autogen/user/relay_commands.txt @@ -2,34 +2,42 @@ [command]*`relay`* リレー管理:: ........................................ /relay list|listfull|listrelay - add - del + add [ipv4.][ipv6.][ssl.] + del [ipv4.][ipv6.][ssl.] raw sslcertkey - list: リレーするクライアントをリストアップ (アクティブなもののみ) - listfull: リレーするクライアントをリストアップ (詳細、全てのリレー) - listrelay: リレーをリストアップ (名前とポート番号) - add: プロトコル + 名前のリレーを追加 - del: プロトコル + 名前のリレーを削除 -protocol.name: リレーするプロトコルと名前: - - プロトコル "irc": 名前は共有するサーバ - - プロトコル "weechat" (名前は使われていない) - 注意: SSL を有効化するには "ssl." を protocol の最初に付ける - port: リレーに使うポート番号 - raw: 生 Relay データバッファを開く - sslcertkey: オプション relay.network.ssl_cert_key のパスを使って SSL 証明書/鍵を設定 + list: list relay clients (only active relays) + listfull: list relay clients (verbose, all relays) + listrelay: list relays (name and port) + add: add relay for a protocol + name + del: remove relay for a protocol + name + ipv4: force use of IPv4 + ipv6: force use of IPv6 + ssl: enable SSL +protocol.name: protocol and name to relay: + - protocol "irc": name is the server to share + - protocol "weechat" (name is not used) + port: port used for relay + raw: open buffer with raw Relay data + sslcertkey: set SSL certificate/key using path in option relay.network.ssl_cert_key -引数無しの場合、リレークライアントのリストを含むバッファを開く +Without argument, this command opens buffer with list of relay clients. -例: - サーバ "freenode" に対する irc プロキシを設定: +Examples: + irc proxy, for server "freenode": /relay add irc.freenode 8000 - サーバ "freenode" に対する SSL を有効化した irc プロキシを設定: + irc proxy, for server "freenode", with SSL: /relay add ssl.irc.freenode 8001 - weechat プロトコル: + weechat protocol: /relay add weechat 9000 - SSL を有効化した weechat プロトコル: + weechat protocol with SSL: /relay add ssl.weechat 9001 + weechat protocol with SSL, using only IPv4: + /relay add ipv4.ssl.weechat 9001 + weechat protocol with SSL, using only IPv6: + /relay add ipv6.ssl.weechat 9001 + weechat protocol with SSL, using IPv4 + IPv6: + /relay add ipv4.ipv6.ssl.weechat 9001 ........................................ diff --git a/doc/ja/autogen/user/relay_options.txt b/doc/ja/autogen/user/relay_options.txt index 79c3cae89..f6e383931 100644 --- a/doc/ja/autogen/user/relay_options.txt +++ b/doc/ja/autogen/user/relay_options.txt @@ -54,7 +54,7 @@ ** 値: 0 .. 65535 (デフォルト値: `256`) * [[option_relay.network.allowed_ips]] *relay.network.allowed_ips* -** 説明: `リレーに使用する IP アドレスの正規表現 (大文字小文字の区別無し、最初に "(?-i)" をつければ区別有り)、例: "^(123.45.67.89|192.160.*)$"` +** 説明: `regular expression with IPs allowed to use relay (case insensitive, use "(?-i)" at beginning to make it case sensitive); if IPv6 is enabled and that connection is made using IPv4, it will be IPv4-mapped IPv6 address (like: "::ffff:127.0.0.1"), example: "^((::ffff:)?123.45.67.89|192.160.*)$"` ** タイプ: 文字列 ** 値: 未制約文字列 (デフォルト値: `""`) @@ -68,6 +68,11 @@ ** タイプ: 整数 ** 値: 0 .. 9 (デフォルト値: `6`) +* [[option_relay.network.ipv6]] *relay.network.ipv6* +** 説明: `listen on IPv6 socket by default (in addition to IPv4 which is default); protocols IPv4 and IPv6 can be forced (individually or together) in the protocol name (see /help relay)` +** タイプ: ブール +** 値: on, off (デフォルト値: `on`) + * [[option_relay.network.max_clients]] *relay.network.max_clients* ** 説明: `ポートに接続するクライアントの最大数` ** タイプ: 整数 diff --git a/po/cs.po b/po/cs.po index b32c3392f..a83596ec6 100644 --- a/po/cs.po +++ b/po/cs.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.4.0-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2012-10-14 09:22+0200\n" +"POT-Creation-Date: 2012-10-16 13:26+0200\n" "PO-Revision-Date: 2012-09-29 11:42+0200\n" "Last-Translator: Jiri Golembiovsky \n" "Language-Team: weechat-dev \n" @@ -7552,7 +7552,7 @@ msgid "Listening on ports:" msgstr "Poslouchám na portech:" #, fuzzy, c-format -msgid " port %s%d%s, relay: %s%s%s%s%s%s, started on: %s" +msgid " port %s%d%s, relay: %s%s%s, %s, started on: %s" msgstr " port %s%d%s, přesměrování: %s%s.%s%s, spuštěno v: %s" msgid "No server for relay" @@ -7575,8 +7575,8 @@ msgstr "ovládání přesměrování" #, fuzzy msgid "" -"list|listfull|listrelay || add || del " -"|| raw || sslcertkey" +"list|listfull|listrelay || add [ipv4.][ipv6.][ssl.] || " +"del [ipv4.][ipv6.][ssl.] || raw || sslcertkey" msgstr "" "list|listfull|listrelay || add || del " "|| raw" @@ -7588,10 +7588,12 @@ msgid "" " listrelay: list relays (name and port)\n" " add: add relay for a protocol + name\n" " del: remove relay for a protocol + name\n" +" ipv4: force use of IPv4\n" +" ipv6: force use of IPv6\n" +" ssl: enable SSL\n" "protocol.name: protocol and name to relay:\n" " - protocol \"irc\": name is the server to share\n" " - protocol \"weechat\" (name is not used)\n" -" Note: the protocol can be prefixed by \"ssl.\" to enable SSL\n" " port: port used for relay\n" " raw: open buffer with raw Relay data\n" " sslcertkey: set SSL certificate/key using path in option relay.network." @@ -7607,7 +7609,13 @@ msgid "" " weechat protocol:\n" " /relay add weechat 9000\n" " weechat protocol with SSL:\n" -" /relay add ssl.weechat 9001" +" /relay add ssl.weechat 9001\n" +" weechat protocol with SSL, using only IPv4:\n" +" /relay add ipv4.ssl.weechat 9001\n" +" weechat protocol with SSL, using only IPv6:\n" +" /relay add ipv6.ssl.weechat 9001\n" +" weechat protocol with SSL, using IPv4 + IPv6:\n" +" /relay add ipv4.ipv6.ssl.weechat 9001" msgstr "" " list: seznam klientů přesměrování (pouze aktivní přesměrování)\n" " listfull: seznam klientů přesměrování (užvaněný, všechny přesměrování)\n" @@ -7698,8 +7706,9 @@ msgstr "barva textu pro status \"odpojen\"" msgid "" "regular expression with IPs allowed to use relay (case insensitive, use \"(?-" -"i)\" at beginning to make it case sensitive), example: \"^(123.45.67.89|" -"192.160.*)$\"" +"i)\" at beginning to make it case sensitive); if IPv6 is enabled and that " +"connection is made using IPv4, it will be IPv4-mapped IPv6 address (like: " +"\"::ffff:127.0.0.1\"), example: \"^((::ffff:)?123.45.67.89|192.160.*)$\"" msgstr "" msgid "" @@ -7715,6 +7724,12 @@ msgid "" "disable compression, 1 = low compression ... 9 = best compression)" msgstr "" +msgid "" +"listen on IPv6 socket by default (in addition to IPv4 which is default); " +"protocols IPv4 and IPv6 can be forced (individually or together) in the " +"protocol name (see /help relay)" +msgstr "" + msgid "maximum number of clients connecting to a port" msgstr "maximální počet klientů připojených k portu" @@ -7747,11 +7762,11 @@ msgid "Relay raw messages" msgstr "Přeposílat čisté zprávy" #, fuzzy, c-format -msgid "%s: socket closed for %s%s%s (port %d)" +msgid "%s: socket closed for %s (port %d)" msgstr "%s: soket pro %s.%s (port %d) uzavřen" #, fuzzy, c-format -msgid "%s%s: cannot accept client on port %d (%s%s%s)" +msgid "%s%s: cannot accept client on port %d (%s)" msgstr "%s%s: nemohu akceptovat klienta na portu %d (%s.%s)" #, fuzzy, c-format @@ -7766,16 +7781,20 @@ msgstr "%s%s: nemohu nastavit nastavení sketu \"SO_REUSEADDR\"" msgid "%s%s: cannot create socket" msgstr "%s%s nemohu vytvořit soket" +#, fuzzy, c-format +msgid "%s%s: cannot set socket option \"IPV6_V6ONLY\" to value %d" +msgstr "%s%s: nemohu nastavit nastavení soketu \"SO_KEEPALIVE\"" + #, c-format msgid "%s%s: cannot set socket option \"SO_KEEPALIVE\"" msgstr "%s%s: nemohu nastavit nastavení soketu \"SO_KEEPALIVE\"" #, fuzzy, c-format -msgid "%s%s: error with \"bind\" on port %d (%s%s%s)" +msgid "%s%s: error with \"bind\" on port %d (%s)" msgstr "%s%s: chyba s \"bind\" na portu %d (%s.%s)" #, fuzzy, c-format -msgid "%s: listening on port %d (relay: %s%s%s,%s max %d clients)" +msgid "%s: listening on port %d (relay: %s, %s, max %d clients)" msgstr "%s: poslouchám na portu %d (přesměrování %s.%s, maximálně %d klientů)" #, c-format diff --git a/po/de.po b/po/de.po index b649c9072..0c104354e 100644 --- a/po/de.po +++ b/po/de.po @@ -23,7 +23,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.4.0-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2012-10-14 09:22+0200\n" +"POT-Creation-Date: 2012-10-16 13:26+0200\n" "PO-Revision-Date: 2012-09-29 11:42+0200\n" "Last-Translator: Nils Görs \n" "Language-Team: German \n" @@ -8107,7 +8107,7 @@ msgid "Listening on ports:" msgstr "Lausche an Ports:" #, fuzzy, c-format -msgid " port %s%d%s, relay: %s%s%s%s%s%s, started on: %s" +msgid " port %s%d%s, relay: %s%s%s, %s, started on: %s" msgstr " Port %s%d%s, Relay: %s%s%s%s%s, gestartet am: %s" msgid "No server for relay" @@ -8128,23 +8128,27 @@ msgstr "%s%s: Relay \"%s\" nicht gefunden" msgid "relay control" msgstr "Relay-Kontrolle" +#, fuzzy msgid "" -"list|listfull|listrelay || add || del " -"|| raw || sslcertkey" +"list|listfull|listrelay || add [ipv4.][ipv6.][ssl.] || " +"del [ipv4.][ipv6.][ssl.] || raw || sslcertkey" msgstr "" "list|listfull|listrelay || add || del " "|| raw || sslcertkey" +#, fuzzy msgid "" " list: list relay clients (only active relays)\n" " listfull: list relay clients (verbose, all relays)\n" " listrelay: list relays (name and port)\n" " add: add relay for a protocol + name\n" " del: remove relay for a protocol + name\n" +" ipv4: force use of IPv4\n" +" ipv6: force use of IPv6\n" +" ssl: enable SSL\n" "protocol.name: protocol and name to relay:\n" " - protocol \"irc\": name is the server to share\n" " - protocol \"weechat\" (name is not used)\n" -" Note: the protocol can be prefixed by \"ssl.\" to enable SSL\n" " port: port used for relay\n" " raw: open buffer with raw Relay data\n" " sslcertkey: set SSL certificate/key using path in option relay.network." @@ -8160,7 +8164,13 @@ msgid "" " weechat protocol:\n" " /relay add weechat 9000\n" " weechat protocol with SSL:\n" -" /relay add ssl.weechat 9001" +" /relay add ssl.weechat 9001\n" +" weechat protocol with SSL, using only IPv4:\n" +" /relay add ipv4.ssl.weechat 9001\n" +" weechat protocol with SSL, using only IPv6:\n" +" /relay add ipv6.ssl.weechat 9001\n" +" weechat protocol with SSL, using IPv4 + IPv6:\n" +" /relay add ipv4.ipv6.ssl.weechat 9001" msgstr "" " list: Auflistung der Relay-Clients (nur aktive Relays)\n" " listfull: detaillierte Auflistung der Relay-Clients (alle Relays)\n" @@ -8258,10 +8268,12 @@ msgstr "Textfarbe für Status: \"Authentifizierung gescheitert\"" msgid "text color for \"disconnected\" status" msgstr "Textfarbe für Status: \"Verbindung getrennt\"" +#, fuzzy msgid "" "regular expression with IPs allowed to use relay (case insensitive, use \"(?-" -"i)\" at beginning to make it case sensitive), example: \"^(123.45.67.89|" -"192.160.*)$\"" +"i)\" at beginning to make it case sensitive); if IPv6 is enabled and that " +"connection is made using IPv4, it will be IPv4-mapped IPv6 address (like: " +"\"::ffff:127.0.0.1\"), example: \"^((::ffff:)?123.45.67.89|192.160.*)$\"" msgstr "" "regulärer Ausdruck für IP Adressen die auf das Relay zugreifen dürfen " "(zwischen Groß- und Kleinschreibung nicht dabei nicht unterschieden. Um " @@ -8284,6 +8296,12 @@ msgstr "" "gesendet werden sollen (0 = Kompression deaktiviert, 1 = niedrige " "Kompression ... 9 = stärkste Kompression)" +msgid "" +"listen on IPv6 socket by default (in addition to IPv4 which is default); " +"protocols IPv4 and IPv6 can be forced (individually or together) in the " +"protocol name (see /help relay)" +msgstr "" + msgid "maximum number of clients connecting to a port" msgstr "maximale Anzahl an Clients die mit einem Port verbunden sein dürfen" @@ -8317,12 +8335,12 @@ msgstr "%s%s: Initialisierung der Priorität für SSL fehlgeschlagen" msgid "Relay raw messages" msgstr "Relay RAW Nachrichten" -#, c-format -msgid "%s: socket closed for %s%s%s (port %d)" +#, fuzzy, c-format +msgid "%s: socket closed for %s (port %d)" msgstr "%s: Socket wurde für %s%s%s (Port %d) geschlossen" -#, c-format -msgid "%s%s: cannot accept client on port %d (%s%s%s)" +#, fuzzy, c-format +msgid "%s%s: cannot accept client on port %d (%s)" msgstr "%s%s: Der Client wird an dem Port %d (%s%s%s) nicht akzeptiert" #, c-format @@ -8337,16 +8355,20 @@ msgstr "%s%s Fehler beim Erstellen der Socket-Option \"SO_REUSEADDR\"" msgid "%s%s: cannot create socket" msgstr "%s%s: Socket konnte nicht angelegt werden" +#, fuzzy, c-format +msgid "%s%s: cannot set socket option \"IPV6_V6ONLY\" to value %d" +msgstr "%s%s Fehler beim Erstellen der Socket-Option \"SO_KEEPALIVE\"" + #, c-format msgid "%s%s: cannot set socket option \"SO_KEEPALIVE\"" msgstr "%s%s Fehler beim Erstellen der Socket-Option \"SO_KEEPALIVE\"" -#, c-format -msgid "%s%s: error with \"bind\" on port %d (%s%s%s)" +#, fuzzy, c-format +msgid "%s%s: error with \"bind\" on port %d (%s)" msgstr "%s%s: Fehler mit \"bind\" am Port %d (%s%s%s)" -#, c-format -msgid "%s: listening on port %d (relay: %s%s%s,%s max %d clients)" +#, fuzzy, c-format +msgid "%s: listening on port %d (relay: %s, %s, max %d clients)" msgstr "%s: Lausche am Port %d (Relay: %s%s%s,%s Max.: %d Clients)" #, c-format diff --git a/po/es.po b/po/es.po index 6fcf6792d..a2823f7c1 100644 --- a/po/es.po +++ b/po/es.po @@ -22,7 +22,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.4.0-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2012-10-14 09:22+0200\n" +"POT-Creation-Date: 2012-10-16 13:26+0200\n" "PO-Revision-Date: 2012-09-29 11:42+0200\n" "Last-Translator: Elián Hanisch \n" "Language-Team: weechat-dev \n" @@ -7800,7 +7800,7 @@ msgid "Listening on ports:" msgstr "Escuchando en los puertos:" #, fuzzy, c-format -msgid " port %s%d%s, relay: %s%s%s%s%s%s, started on: %s" +msgid " port %s%d%s, relay: %s%s%s, %s, started on: %s" msgstr " puerto %s%d%s, repetidor: %s%s%s%s%s, iniciado en: %s" msgid "No server for relay" @@ -7821,23 +7821,27 @@ msgstr "%s%s: repetidor \"%s\" no encontrado" msgid "relay control" msgstr "control de retransmisión" +#, fuzzy msgid "" -"list|listfull|listrelay || add || del " -"|| raw || sslcertkey" +"list|listfull|listrelay || add [ipv4.][ipv6.][ssl.] || " +"del [ipv4.][ipv6.][ssl.] || raw || sslcertkey" msgstr "" "list|listfull|listrelay || add || del || raw || sslcertkey" +#, fuzzy msgid "" " list: list relay clients (only active relays)\n" " listfull: list relay clients (verbose, all relays)\n" " listrelay: list relays (name and port)\n" " add: add relay for a protocol + name\n" " del: remove relay for a protocol + name\n" +" ipv4: force use of IPv4\n" +" ipv6: force use of IPv6\n" +" ssl: enable SSL\n" "protocol.name: protocol and name to relay:\n" " - protocol \"irc\": name is the server to share\n" " - protocol \"weechat\" (name is not used)\n" -" Note: the protocol can be prefixed by \"ssl.\" to enable SSL\n" " port: port used for relay\n" " raw: open buffer with raw Relay data\n" " sslcertkey: set SSL certificate/key using path in option relay.network." @@ -7853,7 +7857,13 @@ msgid "" " weechat protocol:\n" " /relay add weechat 9000\n" " weechat protocol with SSL:\n" -" /relay add ssl.weechat 9001" +" /relay add ssl.weechat 9001\n" +" weechat protocol with SSL, using only IPv4:\n" +" /relay add ipv4.ssl.weechat 9001\n" +" weechat protocol with SSL, using only IPv6:\n" +" /relay add ipv6.ssl.weechat 9001\n" +" weechat protocol with SSL, using IPv4 + IPv6:\n" +" /relay add ipv4.ipv6.ssl.weechat 9001" msgstr "" " list: lista clientes a retransmitir (solo retransmisiones activas)\n" " listfull: lista clientes a retransmitir (detallado, todas las " @@ -7957,10 +7967,12 @@ msgid "text color for \"disconnected\" status" msgstr "color para el estado \"desconectado\"" # why is case insensitive important? ips use numbers and urls are case insensible. +#, fuzzy msgid "" "regular expression with IPs allowed to use relay (case insensitive, use \"(?-" -"i)\" at beginning to make it case sensitive), example: \"^(123.45.67.89|" -"192.160.*)$\"" +"i)\" at beginning to make it case sensitive); if IPv6 is enabled and that " +"connection is made using IPv4, it will be IPv4-mapped IPv6 address (like: " +"\"::ffff:127.0.0.1\"), example: \"^((::ffff:)?123.45.67.89|192.160.*)$\"" msgstr "" "expresión regular con IPs permitidas en el repetidor, ejemplo: \"^" "(123.45.67.89|192.160.*)$\"" @@ -7980,6 +7992,12 @@ msgstr "" "nivel de compresión para paquetes enviados al cliente con el protocolo " "WeeChat (0 = sin compresión, 1 = baja compresión ... 9 = mejor compresión)" +msgid "" +"listen on IPv6 socket by default (in addition to IPv4 which is default); " +"protocols IPv4 and IPv6 can be forced (individually or together) in the " +"protocol name (see /help relay)" +msgstr "" + msgid "maximum number of clients connecting to a port" msgstr "número máximo de clientes conectados a un puerto" @@ -8011,12 +8029,12 @@ msgstr "%s%s: no ha sido posible inicializar %s" msgid "Relay raw messages" msgstr "Retransmitir mensajes en bruto" -#, c-format -msgid "%s: socket closed for %s%s%s (port %d)" +#, fuzzy, c-format +msgid "%s: socket closed for %s (port %d)" msgstr "%s: socket cerrado para %s%s%s (puerto %d)" -#, c-format -msgid "%s%s: cannot accept client on port %d (%s%s%s)" +#, fuzzy, c-format +msgid "%s%s: cannot accept client on port %d (%s)" msgstr "%s%s: no se puede aceptar el cliente en el puerto %d (%s%s%s)" #, c-format @@ -8032,17 +8050,22 @@ msgstr "" msgid "%s%s: cannot create socket" msgstr "%s%s: no ha sido posible crear el socket" +#, fuzzy, c-format +msgid "%s%s: cannot set socket option \"IPV6_V6ONLY\" to value %d" +msgstr "" +"%s%s: no ha sido posible configurar la opción del socket \"SO_KEEPALIVE\"" + #, c-format msgid "%s%s: cannot set socket option \"SO_KEEPALIVE\"" msgstr "" "%s%s: no ha sido posible configurar la opción del socket \"SO_KEEPALIVE\"" -#, c-format -msgid "%s%s: error with \"bind\" on port %d (%s%s%s)" +#, fuzzy, c-format +msgid "%s%s: error with \"bind\" on port %d (%s)" msgstr "%s%s: error con \"bind\" en el puerto %d (%s%s%s)" #, fuzzy, c-format -msgid "%s: listening on port %d (relay: %s%s%s,%s max %d clients)" +msgid "%s: listening on port %d (relay: %s, %s, max %d clients)" msgstr "%s: escuchando en el puerto %d (repetidor: %s%s%s, max %d clientes)" #, c-format diff --git a/po/fr.po b/po/fr.po index 146542f0a..d12cb6195 100644 --- a/po/fr.po +++ b/po/fr.po @@ -21,8 +21,8 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.4.0-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2012-10-14 09:22+0200\n" -"PO-Revision-Date: 2012-10-13 12:59+0200\n" +"POT-Creation-Date: 2012-10-16 13:26+0200\n" +"PO-Revision-Date: 2012-10-16 13:26+0200\n" "Last-Translator: Sebastien Helleu \n" "Language-Team: weechat-dev \n" "Language: French\n" @@ -7896,8 +7896,8 @@ msgid "Listening on ports:" msgstr "Ecoute sur les ports:" #, c-format -msgid " port %s%d%s, relay: %s%s%s%s%s%s, started on: %s" -msgstr " port %s%d%s, relai: %s%s%s%s%s%s, démarré le: %s" +msgid " port %s%d%s, relay: %s%s%s, %s, started on: %s" +msgstr " port %s%d%s, relai: %s%s%s, %s, démarré le: %s" msgid "No server for relay" msgstr "Pas de serveur pour le relai" @@ -7918,11 +7918,11 @@ msgid "relay control" msgstr "contrôle du relai" msgid "" -"list|listfull|listrelay || add || del " -"|| raw || sslcertkey" +"list|listfull|listrelay || add [ipv4.][ipv6.][ssl.] || " +"del [ipv4.][ipv6.][ssl.] || raw || sslcertkey" msgstr "" -"list|listfull|listrelay || add || del " -"|| raw || sslcertkey" +"list|listfull|listrelay || add [ipv4.][ipv6.][ssl.] || " +"[ipv4.][ipv6.][ssl.]del || raw || sslcertkey" msgid "" " list: list relay clients (only active relays)\n" @@ -7930,10 +7930,12 @@ msgid "" " listrelay: list relays (name and port)\n" " add: add relay for a protocol + name\n" " del: remove relay for a protocol + name\n" +" ipv4: force use of IPv4\n" +" ipv6: force use of IPv6\n" +" ssl: enable SSL\n" "protocol.name: protocol and name to relay:\n" " - protocol \"irc\": name is the server to share\n" " - protocol \"weechat\" (name is not used)\n" -" Note: the protocol can be prefixed by \"ssl.\" to enable SSL\n" " port: port used for relay\n" " raw: open buffer with raw Relay data\n" " sslcertkey: set SSL certificate/key using path in option relay.network." @@ -7949,18 +7951,25 @@ msgid "" " weechat protocol:\n" " /relay add weechat 9000\n" " weechat protocol with SSL:\n" -" /relay add ssl.weechat 9001" +" /relay add ssl.weechat 9001\n" +" weechat protocol with SSL, using only IPv4:\n" +" /relay add ipv4.ssl.weechat 9001\n" +" weechat protocol with SSL, using only IPv6:\n" +" /relay add ipv6.ssl.weechat 9001\n" +" weechat protocol with SSL, using IPv4 + IPv6:\n" +" /relay add ipv4.ipv6.ssl.weechat 9001" msgstr "" " list: lister les clients pour le relai\n" " listfull: lister les clients pour le relai (verbeux)\n" " listrelay: lister les relais (nom et port)\n" " add: ajouter un relai pour un protocole + nom\n" " del: supprimer un relai pour un protocole + nom\n" +" ipv4: forcer l'utilisation d'IPv4\n" +" ipv6: forcer l'utilisation d'IPv6\n" +" ssl: activer SSL\n" "protocole.nom: protocole et nom à relayer:\n" " - protocole \"irc\": le nom est le serveur à partager\n" " - protocole \"weechat\" (le nom n'est pas utilisé)\n" -" Note: le protocole peut être préfixé par \"ssl.\" pour " -"activer le SSL\n" " port: port utilisé pour le relai\n" " raw: ouvrir le tampon avec les données brutes Relay\n" " sslcertkey: définir le certificat/clé SSL en utilisant le chemin de " @@ -7977,7 +7986,13 @@ msgstr "" " protocole weechat:\n" " /relay add weechat 9000\n" " protocole weechat avec SSL:\n" -" /relay add ssl.weechat 9001" +" /relay add ssl.weechat 9001\n" +" protocole weechat avec SSL, en utilisant seulement IPv4:\n" +" /relay add ipv4.ssl.weechat 9001\n" +" protocole weechat avec SSL, en utilisant seulement IPv6:\n" +" /relay add ipv6.ssl.weechat 9001\n" +" protocole weechat avec SSL, en utilisant IPv4 + IPv6:\n" +" /relay add ipv4.ipv6.ssl.weechat 9001" msgid "all possible protocol.name for relay plugin" msgstr "tous les protocole.nom possible pour l'extension relay" @@ -8048,12 +8063,15 @@ msgstr "couleur du texte pour le statut \"déconnecté\"" msgid "" "regular expression with IPs allowed to use relay (case insensitive, use \"(?-" -"i)\" at beginning to make it case sensitive), example: \"^(123.45.67.89|" -"192.160.*)$\"" +"i)\" at beginning to make it case sensitive); if IPv6 is enabled and that " +"connection is made using IPv4, it will be IPv4-mapped IPv6 address (like: " +"\"::ffff:127.0.0.1\"), example: \"^((::ffff:)?123.45.67.89|192.160.*)$\"" msgstr "" "expression régulière avec les IPs autorisées pour le relai (insensible à la " "casse, utilisez \"(?-i)\" en début de chaîne pour la rendre sensible à la " -"casse), exemple: \"^(123.45.67.89|192.160.*)$\"" +"casse); si l'IPv6 est activé et qu'une connexion est faite en IPv4, il y " +"aura une adresse IPv4 encapsulée dans une IPv6 (comme: \"::" +"ffff:127.0.0.1\"), exemple: \"^((::ffff:)?123.45.67.89|192.160.*)$\"" msgid "" "address for bind (if empty, connection is possible on all interfaces, use " @@ -8071,6 +8089,15 @@ msgstr "" "WeeChat (0 = désactiver la compression, 1 = peu de compression ... 9 = " "meilleure compression)" +msgid "" +"listen on IPv6 socket by default (in addition to IPv4 which is default); " +"protocols IPv4 and IPv6 can be forced (individually or together) in the " +"protocol name (see /help relay)" +msgstr "" +"écouter en IPv6 sur la socket par défaut (en plus de l'IPv4 qui est par " +"défaut); les protocoles IPv4 et IPv6 peuvent être forcés (individuellement " +"ou ensemble) dans le nom du protocole (voir /help relay)" + msgid "maximum number of clients connecting to a port" msgstr "nombre maximum de clients qui se connectent sur un port" @@ -8105,12 +8132,12 @@ msgid "Relay raw messages" msgstr "Messages bruts Relay" #, c-format -msgid "%s: socket closed for %s%s%s (port %d)" -msgstr "%s: socket fermée pour %s%s%s (port %d)" +msgid "%s: socket closed for %s (port %d)" +msgstr "%s: socket fermée pour %s (port %d)" #, c-format -msgid "%s%s: cannot accept client on port %d (%s%s%s)" -msgstr "%s%s: impossible d'accepter le client sur le port %d (%s%s%s)" +msgid "%s%s: cannot accept client on port %d (%s)" +msgstr "%s%s: impossible d'accepter le client sur le port %d (%s)" #, c-format msgid "%s%s: IP address \"%s\" not allowed for relay" @@ -8124,17 +8151,22 @@ msgstr "%s%s: impossible d'activer l'option socket \"SO_REUSEADDR\"" msgid "%s%s: cannot create socket" msgstr "%s%s: impossible de créer la socket" +#, c-format +msgid "%s%s: cannot set socket option \"IPV6_V6ONLY\" to value %d" +msgstr "" +"%s%s: impossible d'activer l'option socket \"IPV6_V6ONLY\" à la valeur %d" + #, c-format msgid "%s%s: cannot set socket option \"SO_KEEPALIVE\"" msgstr "%s%s: impossible d'activer l'option socket \"SO_KEEPALIVE\"" #, c-format -msgid "%s%s: error with \"bind\" on port %d (%s%s%s)" -msgstr "%s%s: erreur avec le \"bind\" sur le port %d (%s%s%s)" +msgid "%s%s: error with \"bind\" on port %d (%s)" +msgstr "%s%s: erreur avec le \"bind\" sur le port %d (%s)" #, c-format -msgid "%s: listening on port %d (relay: %s%s%s,%s max %d clients)" -msgstr "%s: écoute sur le port %d (relai: %s%s%s,%s max %d clients)" +msgid "%s: listening on port %d (relay: %s, %s, max %d clients)" +msgstr "%s: écoute sur le port %d (relai: %s, %s, max %d clients)" #, c-format msgid "%s%s: not enough memory for listening on new port" diff --git a/po/hu.po b/po/hu.po index 20803e2d6..8b741b561 100644 --- a/po/hu.po +++ b/po/hu.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.4.0-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2012-10-14 09:22+0200\n" +"POT-Creation-Date: 2012-10-16 13:26+0200\n" "PO-Revision-Date: 2012-09-29 11:42+0200\n" "Last-Translator: Andras Voroskoi \n" "Language-Team: weechat-dev \n" @@ -7068,7 +7068,7 @@ msgid "Listening on ports:" msgstr "Aliaszok listája:\n" #, fuzzy, c-format -msgid " port %s%d%s, relay: %s%s%s%s%s%s, started on: %s" +msgid " port %s%d%s, relay: %s%s%s, %s, started on: %s" msgstr "%s%s%s távol: %s\n" #, fuzzy @@ -7091,8 +7091,8 @@ msgid "relay control" msgstr "" msgid "" -"list|listfull|listrelay || add || del " -"|| raw || sslcertkey" +"list|listfull|listrelay || add [ipv4.][ipv6.][ssl.] || " +"del [ipv4.][ipv6.][ssl.] || raw || sslcertkey" msgstr "" msgid "" @@ -7101,10 +7101,12 @@ msgid "" " listrelay: list relays (name and port)\n" " add: add relay for a protocol + name\n" " del: remove relay for a protocol + name\n" +" ipv4: force use of IPv4\n" +" ipv6: force use of IPv6\n" +" ssl: enable SSL\n" "protocol.name: protocol and name to relay:\n" " - protocol \"irc\": name is the server to share\n" " - protocol \"weechat\" (name is not used)\n" -" Note: the protocol can be prefixed by \"ssl.\" to enable SSL\n" " port: port used for relay\n" " raw: open buffer with raw Relay data\n" " sslcertkey: set SSL certificate/key using path in option relay.network." @@ -7120,7 +7122,13 @@ msgid "" " weechat protocol:\n" " /relay add weechat 9000\n" " weechat protocol with SSL:\n" -" /relay add ssl.weechat 9001" +" /relay add ssl.weechat 9001\n" +" weechat protocol with SSL, using only IPv4:\n" +" /relay add ipv4.ssl.weechat 9001\n" +" weechat protocol with SSL, using only IPv6:\n" +" /relay add ipv6.ssl.weechat 9001\n" +" weechat protocol with SSL, using IPv4 + IPv6:\n" +" /relay add ipv4.ipv6.ssl.weechat 9001" msgstr "" msgid "all possible protocol.name for relay plugin" @@ -7200,8 +7208,9 @@ msgstr "\"connecting\" dcc státusz színe" msgid "" "regular expression with IPs allowed to use relay (case insensitive, use \"(?-" -"i)\" at beginning to make it case sensitive), example: \"^(123.45.67.89|" -"192.160.*)$\"" +"i)\" at beginning to make it case sensitive); if IPv6 is enabled and that " +"connection is made using IPv4, it will be IPv4-mapped IPv6 address (like: " +"\"::ffff:127.0.0.1\"), example: \"^((::ffff:)?123.45.67.89|192.160.*)$\"" msgstr "" msgid "" @@ -7214,6 +7223,12 @@ msgid "" "disable compression, 1 = low compression ... 9 = best compression)" msgstr "" +msgid "" +"listen on IPv6 socket by default (in addition to IPv4 which is default); " +"protocols IPv4 and IPv6 can be forced (individually or together) in the " +"protocol name (see /help relay)" +msgstr "" + msgid "maximum number of clients connecting to a port" msgstr "" @@ -7246,11 +7261,11 @@ msgid "Relay raw messages" msgstr "hibakereső üzenetek megjelenítése" #, fuzzy, c-format -msgid "%s: socket closed for %s%s%s (port %d)" +msgid "%s: socket closed for %s (port %d)" msgstr "FIFO cső bezárva\n" #, fuzzy, c-format -msgid "%s%s: cannot accept client on port %d (%s%s%s)" +msgid "%s%s: cannot accept client on port %d (%s)" msgstr "%s nem sikerült a csatornát létrehozni\n" #, fuzzy, c-format @@ -7265,17 +7280,21 @@ msgstr "%s nem sikerült a \"SO_REUSEADDR\" csatornaopciót beállítani\n" msgid "%s%s: cannot create socket" msgstr "%s nem sikerült a csatornát létrehozni\n" +#, fuzzy, c-format +msgid "%s%s: cannot set socket option \"IPV6_V6ONLY\" to value %d" +msgstr "%s nem sikerült a \"SO_KEEPALIVE\" csatornaopciót beállítani\n" + #, fuzzy, c-format msgid "%s%s: cannot set socket option \"SO_KEEPALIVE\"" msgstr "%s nem sikerült a \"SO_KEEPALIVE\" csatornaopciót beállítani\n" #, fuzzy, c-format -msgid "%s%s: error with \"bind\" on port %d (%s%s%s)" +msgid "%s%s: error with \"bind\" on port %d (%s)" msgstr "%s nem sikerült a csatornát létrehozni\n" -#, c-format -msgid "%s: listening on port %d (relay: %s%s%s,%s max %d clients)" -msgstr "" +#, fuzzy, c-format +msgid "%s: listening on port %d (relay: %s, %s, max %d clients)" +msgstr "%s nem sikerült a csatornát létrehozni\n" #, fuzzy, c-format msgid "%s%s: not enough memory for listening on new port" diff --git a/po/it.po b/po/it.po index 687ddaffc..fa0e3bbcc 100644 --- a/po/it.po +++ b/po/it.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.4.0-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2012-10-14 09:22+0200\n" +"POT-Creation-Date: 2012-10-16 13:26+0200\n" "PO-Revision-Date: 2012-09-29 11:42+0200\n" "Last-Translator: Marco Paolone \n" "Language-Team: weechat-dev \n" @@ -7797,7 +7797,7 @@ msgid "Listening on ports:" msgstr "In ascolto sulle porte:" #, fuzzy, c-format -msgid " port %s%d%s, relay: %s%s%s%s%s%s, started on: %s" +msgid " port %s%d%s, relay: %s%s%s, %s, started on: %s" msgstr " porta %s%d%s, relay: %s%s%s%s%s, avviato il: %s" msgid "No server for relay" @@ -7818,23 +7818,27 @@ msgstr "%s%s: relay \"%s\" non trovato" msgid "relay control" msgstr "controllo relay" +#, fuzzy msgid "" -"list|listfull|listrelay || add || del " -"|| raw || sslcertkey" +"list|listfull|listrelay || add [ipv4.][ipv6.][ssl.] || " +"del [ipv4.][ipv6.][ssl.] || raw || sslcertkey" msgstr "" "list|listfull|listrelay || add || del || raw || sslcertkey" +#, fuzzy msgid "" " list: list relay clients (only active relays)\n" " listfull: list relay clients (verbose, all relays)\n" " listrelay: list relays (name and port)\n" " add: add relay for a protocol + name\n" " del: remove relay for a protocol + name\n" +" ipv4: force use of IPv4\n" +" ipv6: force use of IPv6\n" +" ssl: enable SSL\n" "protocol.name: protocol and name to relay:\n" " - protocol \"irc\": name is the server to share\n" " - protocol \"weechat\" (name is not used)\n" -" Note: the protocol can be prefixed by \"ssl.\" to enable SSL\n" " port: port used for relay\n" " raw: open buffer with raw Relay data\n" " sslcertkey: set SSL certificate/key using path in option relay.network." @@ -7850,7 +7854,13 @@ msgid "" " weechat protocol:\n" " /relay add weechat 9000\n" " weechat protocol with SSL:\n" -" /relay add ssl.weechat 9001" +" /relay add ssl.weechat 9001\n" +" weechat protocol with SSL, using only IPv4:\n" +" /relay add ipv4.ssl.weechat 9001\n" +" weechat protocol with SSL, using only IPv6:\n" +" /relay add ipv6.ssl.weechat 9001\n" +" weechat protocol with SSL, using IPv4 + IPv6:\n" +" /relay add ipv4.ipv6.ssl.weechat 9001" msgstr "" " list: elenca i client relay (solo quelli attivi)\n" " listfull: elenca i client relay (dettagliato, tutti i relay)\n" @@ -7945,10 +7955,12 @@ msgstr "colore del testo per lo status \"autenticazione fallita\"" msgid "text color for \"disconnected\" status" msgstr "colore del testo per lo status \"disconnesso\"" +#, fuzzy msgid "" "regular expression with IPs allowed to use relay (case insensitive, use \"(?-" -"i)\" at beginning to make it case sensitive), example: \"^(123.45.67.89|" -"192.160.*)$\"" +"i)\" at beginning to make it case sensitive); if IPv6 is enabled and that " +"connection is made using IPv4, it will be IPv4-mapped IPv6 address (like: " +"\"::ffff:127.0.0.1\"), example: \"^((::ffff:)?123.45.67.89|192.160.*)$\"" msgstr "" "espressione regolare con gli indirizzi IP a cui è consentito usare il relay, " "(non sensibile alle maiuscole, usare \"(?-i)\" all'inizio per renderla " @@ -7970,6 +7982,12 @@ msgstr "" "WeeChat (0 = disabilita compressione, 1 = compressione bassa ... 9 = " "compressione migliore)" +msgid "" +"listen on IPv6 socket by default (in addition to IPv4 which is default); " +"protocols IPv4 and IPv6 can be forced (individually or together) in the " +"protocol name (see /help relay)" +msgstr "" + msgid "maximum number of clients connecting to a port" msgstr "numero massimo di client connessi ad una porta" @@ -8003,12 +8021,12 @@ msgstr "%s%s: impossibile inizializzare la priorità per SSL" msgid "Relay raw messages" msgstr "messaggi raw Relay" -#, c-format -msgid "%s: socket closed for %s%s%s (port %d)" +#, fuzzy, c-format +msgid "%s: socket closed for %s (port %d)" msgstr "%s: socket chiuso per %s%s%s (porta %d)" -#, c-format -msgid "%s%s: cannot accept client on port %d (%s%s%s)" +#, fuzzy, c-format +msgid "%s%s: cannot accept client on port %d (%s)" msgstr "%s%s: impossibile accettare il client sulla porta %d (%s%s%s)" #, c-format @@ -8023,16 +8041,20 @@ msgstr "%s%s: impossibile impostare l'opzione del socket \"SO_REUSEADDR\"" msgid "%s%s: cannot create socket" msgstr "%s%s: impossibile creare il socket" +#, fuzzy, c-format +msgid "%s%s: cannot set socket option \"IPV6_V6ONLY\" to value %d" +msgstr "%s%s: impossibile impostare l'opzione del socket \"SO_KEEPALIVE\"" + #, c-format msgid "%s%s: cannot set socket option \"SO_KEEPALIVE\"" msgstr "%s%s: impossibile impostare l'opzione del socket \"SO_KEEPALIVE\"" -#, c-format -msgid "%s%s: error with \"bind\" on port %d (%s%s%s)" +#, fuzzy, c-format +msgid "%s%s: error with \"bind\" on port %d (%s)" msgstr "%s%s: errore con \"bind\" sulla porta %d (%s%s%s)" -#, c-format -msgid "%s: listening on port %d (relay: %s%s%s,%s max %d clients)" +#, fuzzy, c-format +msgid "%s: listening on port %d (relay: %s, %s, max %d clients)" msgstr "%s: in ascolto sulla porta %d (relay: %s%s%s,%s massimo %d client)" #, c-format diff --git a/po/ja.po b/po/ja.po index 31a4e76a2..69166c934 100644 --- a/po/ja.po +++ b/po/ja.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.4.0-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2012-10-14 09:22+0200\n" +"POT-Creation-Date: 2012-10-16 13:26+0200\n" "PO-Revision-Date: 2012-09-29 11:42+0200\n" "Last-Translator: AYANOKOUZI, Ryuunosuke \n" "Language-Team: Japanese \n" @@ -7620,7 +7620,7 @@ msgid "Listening on ports:" msgstr "リッスンポート:" #, fuzzy, c-format -msgid " port %s%d%s, relay: %s%s%s%s%s%s, started on: %s" +msgid " port %s%d%s, relay: %s%s%s, %s, started on: %s" msgstr " ポート %s%d%s、リレー: %s%s%s%s%s、開始日時: %s" msgid "No server for relay" @@ -7641,23 +7641,27 @@ msgstr "%s%s: リレー \"%s\" が見つかりません" msgid "relay control" msgstr "リレー管理" +#, fuzzy msgid "" -"list|listfull|listrelay || add || del " -"|| raw || sslcertkey" +"list|listfull|listrelay || add [ipv4.][ipv6.][ssl.] || " +"del [ipv4.][ipv6.][ssl.] || raw || sslcertkey" msgstr "" "list|listfull|listrelay || add || del " "|| raw || sslcertkey" +#, fuzzy msgid "" " list: list relay clients (only active relays)\n" " listfull: list relay clients (verbose, all relays)\n" " listrelay: list relays (name and port)\n" " add: add relay for a protocol + name\n" " del: remove relay for a protocol + name\n" +" ipv4: force use of IPv4\n" +" ipv6: force use of IPv6\n" +" ssl: enable SSL\n" "protocol.name: protocol and name to relay:\n" " - protocol \"irc\": name is the server to share\n" " - protocol \"weechat\" (name is not used)\n" -" Note: the protocol can be prefixed by \"ssl.\" to enable SSL\n" " port: port used for relay\n" " raw: open buffer with raw Relay data\n" " sslcertkey: set SSL certificate/key using path in option relay.network." @@ -7673,7 +7677,13 @@ msgid "" " weechat protocol:\n" " /relay add weechat 9000\n" " weechat protocol with SSL:\n" -" /relay add ssl.weechat 9001" +" /relay add ssl.weechat 9001\n" +" weechat protocol with SSL, using only IPv4:\n" +" /relay add ipv4.ssl.weechat 9001\n" +" weechat protocol with SSL, using only IPv6:\n" +" /relay add ipv6.ssl.weechat 9001\n" +" weechat protocol with SSL, using IPv4 + IPv6:\n" +" /relay add ipv4.ipv6.ssl.weechat 9001" msgstr "" " list: リレーするクライアントをリストアップ (アクティブなもののみ)\n" " listfull: リレーするクライアントをリストアップ (詳細、全てのリレー)\n" @@ -7767,10 +7777,12 @@ msgstr "\"認証失敗\" 状態のテキスト色" msgid "text color for \"disconnected\" status" msgstr "\"接続切断\" 状態のテキスト色" +#, fuzzy msgid "" "regular expression with IPs allowed to use relay (case insensitive, use \"(?-" -"i)\" at beginning to make it case sensitive), example: \"^(123.45.67.89|" -"192.160.*)$\"" +"i)\" at beginning to make it case sensitive); if IPv6 is enabled and that " +"connection is made using IPv4, it will be IPv4-mapped IPv6 address (like: " +"\"::ffff:127.0.0.1\"), example: \"^((::ffff:)?123.45.67.89|192.160.*)$\"" msgstr "" "リレーに使用する IP アドレスの正規表現 (大文字小文字の区別無し、最初に \"(?-" "i)\" をつければ区別有り)、例: \"^(123.45.67.89|192.160.*)$\"" @@ -7789,6 +7801,12 @@ msgstr "" "WeeChat プロトコルでクライアントに送信するパケットの圧縮レベル (0 = 圧縮しな" "い、1 = 低圧縮 ... 9 = 高圧縮)" +msgid "" +"listen on IPv6 socket by default (in addition to IPv4 which is default); " +"protocols IPv4 and IPv6 can be forced (individually or together) in the " +"protocol name (see /help relay)" +msgstr "" + msgid "maximum number of clients connecting to a port" msgstr "ポートに接続するクライアントの最大数" @@ -7820,12 +7838,12 @@ msgstr "%s%s: SSL 優先度の初期化に失敗" msgid "Relay raw messages" msgstr "Relay 生メッセージ" -#, c-format -msgid "%s: socket closed for %s%s%s (port %d)" +#, fuzzy, c-format +msgid "%s: socket closed for %s (port %d)" msgstr "%s: %s%s%s (ポート %d) のソケットが閉じられました" -#, c-format -msgid "%s%s: cannot accept client on port %d (%s%s%s)" +#, fuzzy, c-format +msgid "%s%s: cannot accept client on port %d (%s)" msgstr "%s%s: ポート %d (%s%s%s) ではクライアントを受け付けません" #, c-format @@ -7840,16 +7858,20 @@ msgstr "%s%s: ソケットオプション \"SO_REUSEADDR\" の設定に失敗" msgid "%s%s: cannot create socket" msgstr "%s%s: ソケットの作成に失敗" +#, fuzzy, c-format +msgid "%s%s: cannot set socket option \"IPV6_V6ONLY\" to value %d" +msgstr "%s%s: ソケットオプション \"SO_KEEPALIVE\" の設定に失敗" + #, c-format msgid "%s%s: cannot set socket option \"SO_KEEPALIVE\"" msgstr "%s%s: ソケットオプション \"SO_KEEPALIVE\" の設定に失敗" -#, c-format -msgid "%s%s: error with \"bind\" on port %d (%s%s%s)" +#, fuzzy, c-format +msgid "%s%s: error with \"bind\" on port %d (%s)" msgstr "%s%s: ポート %d (%s%s%s) での \"bind\" にエラー" -#, c-format -msgid "%s: listening on port %d (relay: %s%s%s,%s max %d clients)" +#, fuzzy, c-format +msgid "%s: listening on port %d (relay: %s, %s, max %d clients)" msgstr "" "%s: ポート %d をリッスンしています (リレー: %s%s%s、%s 最大 %d クライアント)" diff --git a/po/pl.po b/po/pl.po index 359d89dec..4dc35a18f 100644 --- a/po/pl.po +++ b/po/pl.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.4.0-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2012-10-14 09:22+0200\n" +"POT-Creation-Date: 2012-10-16 13:26+0200\n" "PO-Revision-Date: 2012-09-29 11:42+0200\n" "Last-Translator: Krzysztof Korościk \n" "Language-Team: weechat-dev \n" @@ -7742,7 +7742,7 @@ msgid "Listening on ports:" msgstr "Nasłuchuję na portach:" #, fuzzy, c-format -msgid " port %s%d%s, relay: %s%s%s%s%s%s, started on: %s" +msgid " port %s%d%s, relay: %s%s%s, %s, started on: %s" msgstr " port %s%d%s, relay:%s%s%s%s%s, uruchomiony: %s" msgid "No server for relay" @@ -7765,8 +7765,8 @@ msgstr "zarządzanie przesyłaniem" #, fuzzy msgid "" -"list|listfull|listrelay || add || del " -"|| raw || sslcertkey" +"list|listfull|listrelay || add [ipv4.][ipv6.][ssl.] || " +"del [ipv4.][ipv6.][ssl.] || raw || sslcertkey" msgstr "" "list|listfull|listrelay || add || del || raw" @@ -7778,10 +7778,12 @@ msgid "" " listrelay: list relays (name and port)\n" " add: add relay for a protocol + name\n" " del: remove relay for a protocol + name\n" +" ipv4: force use of IPv4\n" +" ipv6: force use of IPv6\n" +" ssl: enable SSL\n" "protocol.name: protocol and name to relay:\n" " - protocol \"irc\": name is the server to share\n" " - protocol \"weechat\" (name is not used)\n" -" Note: the protocol can be prefixed by \"ssl.\" to enable SSL\n" " port: port used for relay\n" " raw: open buffer with raw Relay data\n" " sslcertkey: set SSL certificate/key using path in option relay.network." @@ -7797,7 +7799,13 @@ msgid "" " weechat protocol:\n" " /relay add weechat 9000\n" " weechat protocol with SSL:\n" -" /relay add ssl.weechat 9001" +" /relay add ssl.weechat 9001\n" +" weechat protocol with SSL, using only IPv4:\n" +" /relay add ipv4.ssl.weechat 9001\n" +" weechat protocol with SSL, using only IPv6:\n" +" /relay add ipv6.ssl.weechat 9001\n" +" weechat protocol with SSL, using IPv4 + IPv6:\n" +" /relay add ipv4.ipv6.ssl.weechat 9001" msgstr "" " list: wyświetla klienty relay (tylko aktywne)\n" " listfull: wyświetla klienty relay (wszystkie)\n" @@ -7887,10 +7895,12 @@ msgstr "kolor statusu \"authentication failed\"" msgid "text color for \"disconnected\" status" msgstr "kolor statusu \"disconnected\"" +#, fuzzy msgid "" "regular expression with IPs allowed to use relay (case insensitive, use \"(?-" -"i)\" at beginning to make it case sensitive), example: \"^(123.45.67.89|" -"192.160.*)$\"" +"i)\" at beginning to make it case sensitive); if IPv6 is enabled and that " +"connection is made using IPv4, it will be IPv4-mapped IPv6 address (like: " +"\"::ffff:127.0.0.1\"), example: \"^((::ffff:)?123.45.67.89|192.160.*)$\"" msgstr "" "wyrażenie regularne zawierające adresy IP mogące używać relay (wielkość " "znaków nie ma znaczenia, użyj \"(?-i)\" na początku, aby wielkość znaków " @@ -7911,6 +7921,12 @@ msgstr "" "stopień kompresji pakietów wysyłanych do klienta za pomocą protokołu WeeChat " "(0 = kompresja wyłączona, 1 = niska kompresja ... 9 = najwyższa kompresja)" +msgid "" +"listen on IPv6 socket by default (in addition to IPv4 which is default); " +"protocols IPv4 and IPv6 can be forced (individually or together) in the " +"protocol name (see /help relay)" +msgstr "" + msgid "maximum number of clients connecting to a port" msgstr "maksymalna ilość klientów łączących się na port" @@ -7942,12 +7958,12 @@ msgstr "%s%s: nie można zainicjować %s" msgid "Relay raw messages" msgstr "Nieprzetworzone wiadomości relay" -#, c-format -msgid "%s: socket closed for %s%s%s (port %d)" +#, fuzzy, c-format +msgid "%s: socket closed for %s (port %d)" msgstr "%s: gniazdo zamknięte dla %s%s%s (port %d)" -#, c-format -msgid "%s%s: cannot accept client on port %d (%s%s%s)" +#, fuzzy, c-format +msgid "%s%s: cannot accept client on port %d (%s)" msgstr "%s%s: nie można zaakceptować klienta na porcie %d (%s%s%s)" #, c-format @@ -7962,16 +7978,20 @@ msgstr "%s%s: nie można ustawić opcji gniazda \"SO_REUSEADDR\"" msgid "%s%s: cannot create socket" msgstr "%s%s: nie można utworzyć gniazda" +#, fuzzy, c-format +msgid "%s%s: cannot set socket option \"IPV6_V6ONLY\" to value %d" +msgstr "%s%s: nie można ustawić opcji gniazda \"SO_KEEPALIVE\"" + #, c-format msgid "%s%s: cannot set socket option \"SO_KEEPALIVE\"" msgstr "%s%s: nie można ustawić opcji gniazda \"SO_KEEPALIVE\"" -#, c-format -msgid "%s%s: error with \"bind\" on port %d (%s%s%s)" +#, fuzzy, c-format +msgid "%s%s: error with \"bind\" on port %d (%s)" msgstr "%s%s: błąd podczas \"bind\" na porcie %d (%s%s%s)" #, fuzzy, c-format -msgid "%s: listening on port %d (relay: %s%s%s,%s max %d clients)" +msgid "%s: listening on port %d (relay: %s, %s, max %d clients)" msgstr "%s: nasłuchuję na porcie %d (relay: %s%s%s, max %d klientów)" #, c-format diff --git a/po/pt_BR.po b/po/pt_BR.po index 7da0a4098..22e4ef13e 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.4.0-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2012-10-14 09:22+0200\n" +"POT-Creation-Date: 2012-10-16 13:26+0200\n" "PO-Revision-Date: 2012-09-29 11:43+0200\n" "Last-Translator: Sergio Durigan Junior \n" "Language-Team: weechat-dev \n" @@ -7214,7 +7214,7 @@ msgid "Listening on ports:" msgstr "Escutando nas portas:" #, fuzzy, c-format -msgid " port %s%d%s, relay: %s%s%s%s%s%s, started on: %s" +msgid " port %s%d%s, relay: %s%s%s, %s, started on: %s" msgstr " porta %s%d%s, relay: %s%s.%s%s, iniciado em: %s" msgid "No server for relay" @@ -7236,8 +7236,8 @@ msgid "relay control" msgstr "" msgid "" -"list|listfull|listrelay || add || del " -"|| raw || sslcertkey" +"list|listfull|listrelay || add [ipv4.][ipv6.][ssl.] || " +"del [ipv4.][ipv6.][ssl.] || raw || sslcertkey" msgstr "" msgid "" @@ -7246,10 +7246,12 @@ msgid "" " listrelay: list relays (name and port)\n" " add: add relay for a protocol + name\n" " del: remove relay for a protocol + name\n" +" ipv4: force use of IPv4\n" +" ipv6: force use of IPv6\n" +" ssl: enable SSL\n" "protocol.name: protocol and name to relay:\n" " - protocol \"irc\": name is the server to share\n" " - protocol \"weechat\" (name is not used)\n" -" Note: the protocol can be prefixed by \"ssl.\" to enable SSL\n" " port: port used for relay\n" " raw: open buffer with raw Relay data\n" " sslcertkey: set SSL certificate/key using path in option relay.network." @@ -7265,7 +7267,13 @@ msgid "" " weechat protocol:\n" " /relay add weechat 9000\n" " weechat protocol with SSL:\n" -" /relay add ssl.weechat 9001" +" /relay add ssl.weechat 9001\n" +" weechat protocol with SSL, using only IPv4:\n" +" /relay add ipv4.ssl.weechat 9001\n" +" weechat protocol with SSL, using only IPv6:\n" +" /relay add ipv6.ssl.weechat 9001\n" +" weechat protocol with SSL, using IPv4 + IPv6:\n" +" /relay add ipv4.ipv6.ssl.weechat 9001" msgstr "" msgid "all possible protocol.name for relay plugin" @@ -7340,8 +7348,9 @@ msgstr "cor do texto para o status \"desconectado\"" #, fuzzy msgid "" "regular expression with IPs allowed to use relay (case insensitive, use \"(?-" -"i)\" at beginning to make it case sensitive), example: \"^(123.45.67.89|" -"192.160.*)$\"" +"i)\" at beginning to make it case sensitive); if IPv6 is enabled and that " +"connection is made using IPv4, it will be IPv4-mapped IPv6 address (like: " +"\"::ffff:127.0.0.1\"), example: \"^((::ffff:)?123.45.67.89|192.160.*)$\"" msgstr "" "expressão regular com IPs permitidos a usar o relay, por exemplo: \"^" "(123.45.67.89|192.160.*)$\"" @@ -7361,6 +7370,12 @@ msgstr "" "WeeChat (0 = desabilitar compressão, 1 = compressão baixa ... 9 = melhor " "compressão)" +msgid "" +"listen on IPv6 socket by default (in addition to IPv4 which is default); " +"protocols IPv4 and IPv6 can be forced (individually or together) in the " +"protocol name (see /help relay)" +msgstr "" + msgid "maximum number of clients connecting to a port" msgstr "número máximo de clientes conectando-se a uma porta" @@ -7393,11 +7408,11 @@ msgid "Relay raw messages" msgstr "" #, fuzzy, c-format -msgid "%s: socket closed for %s%s%s (port %d)" +msgid "%s: socket closed for %s (port %d)" msgstr "%s: socket fechado para %s.%s (porta %d)" #, fuzzy, c-format -msgid "%s%s: cannot accept client on port %d (%s%s%s)" +msgid "%s%s: cannot accept client on port %d (%s)" msgstr "%s%s: não foi possível aceitar o cliente na porta %d (%s.%s)" #, c-format @@ -7412,16 +7427,20 @@ msgstr "%s%s: não foi possível setar opção \"SO_REUSEADDR\" para o socket" msgid "%s%s: cannot create socket" msgstr "%s%s: não foi possível criar socket" +#, fuzzy, c-format +msgid "%s%s: cannot set socket option \"IPV6_V6ONLY\" to value %d" +msgstr "%s%s: não foi possível setar opção \"SO_KEEPALIVE\" para o socket" + #, c-format msgid "%s%s: cannot set socket option \"SO_KEEPALIVE\"" msgstr "%s%s: não foi possível setar opção \"SO_KEEPALIVE\" para o socket" #, fuzzy, c-format -msgid "%s%s: error with \"bind\" on port %d (%s%s%s)" +msgid "%s%s: error with \"bind\" on port %d (%s)" msgstr "%s%s: erro ao associar (\"bind\") na porta %d (%s.%s)" #, fuzzy, c-format -msgid "%s: listening on port %d (relay: %s%s%s,%s max %d clients)" +msgid "%s: listening on port %d (relay: %s, %s, max %d clients)" msgstr "%s: escutando na porta %d (relay: %s.%s, máximo de %d clientes)" #, c-format diff --git a/po/ru.po b/po/ru.po index c6c0a2226..a3e9ff2a8 100644 --- a/po/ru.po +++ b/po/ru.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.4.0-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2012-10-14 09:22+0200\n" +"POT-Creation-Date: 2012-10-16 13:26+0200\n" "PO-Revision-Date: 2012-09-29 11:43+0200\n" "Last-Translator: Aleksey V Zapparov AKA ixti \n" "Language-Team: weechat-dev \n" @@ -7092,7 +7092,7 @@ msgid "Listening on ports:" msgstr "Список сокращений:\n" #, fuzzy, c-format -msgid " port %s%d%s, relay: %s%s%s%s%s%s, started on: %s" +msgid " port %s%d%s, relay: %s%s%s, %s, started on: %s" msgstr "%s%s%s отсутствует: %s\n" #, fuzzy @@ -7115,8 +7115,8 @@ msgid "relay control" msgstr "" msgid "" -"list|listfull|listrelay || add || del " -"|| raw || sslcertkey" +"list|listfull|listrelay || add [ipv4.][ipv6.][ssl.] || " +"del [ipv4.][ipv6.][ssl.] || raw || sslcertkey" msgstr "" msgid "" @@ -7125,10 +7125,12 @@ msgid "" " listrelay: list relays (name and port)\n" " add: add relay for a protocol + name\n" " del: remove relay for a protocol + name\n" +" ipv4: force use of IPv4\n" +" ipv6: force use of IPv6\n" +" ssl: enable SSL\n" "protocol.name: protocol and name to relay:\n" " - protocol \"irc\": name is the server to share\n" " - protocol \"weechat\" (name is not used)\n" -" Note: the protocol can be prefixed by \"ssl.\" to enable SSL\n" " port: port used for relay\n" " raw: open buffer with raw Relay data\n" " sslcertkey: set SSL certificate/key using path in option relay.network." @@ -7144,7 +7146,13 @@ msgid "" " weechat protocol:\n" " /relay add weechat 9000\n" " weechat protocol with SSL:\n" -" /relay add ssl.weechat 9001" +" /relay add ssl.weechat 9001\n" +" weechat protocol with SSL, using only IPv4:\n" +" /relay add ipv4.ssl.weechat 9001\n" +" weechat protocol with SSL, using only IPv6:\n" +" /relay add ipv6.ssl.weechat 9001\n" +" weechat protocol with SSL, using IPv4 + IPv6:\n" +" /relay add ipv4.ipv6.ssl.weechat 9001" msgstr "" msgid "all possible protocol.name for relay plugin" @@ -7224,8 +7232,9 @@ msgstr "цвет \"соединения\" в окне DCC" msgid "" "regular expression with IPs allowed to use relay (case insensitive, use \"(?-" -"i)\" at beginning to make it case sensitive), example: \"^(123.45.67.89|" -"192.160.*)$\"" +"i)\" at beginning to make it case sensitive); if IPv6 is enabled and that " +"connection is made using IPv4, it will be IPv4-mapped IPv6 address (like: " +"\"::ffff:127.0.0.1\"), example: \"^((::ffff:)?123.45.67.89|192.160.*)$\"" msgstr "" msgid "" @@ -7238,6 +7247,12 @@ msgid "" "disable compression, 1 = low compression ... 9 = best compression)" msgstr "" +msgid "" +"listen on IPv6 socket by default (in addition to IPv4 which is default); " +"protocols IPv4 and IPv6 can be forced (individually or together) in the " +"protocol name (see /help relay)" +msgstr "" + msgid "maximum number of clients connecting to a port" msgstr "" @@ -7270,11 +7285,11 @@ msgid "Relay raw messages" msgstr "выводить отладочные сообщения" #, fuzzy, c-format -msgid "%s: socket closed for %s%s%s (port %d)" +msgid "%s: socket closed for %s (port %d)" msgstr "FIFO pipe закрыт\n" #, fuzzy, c-format -msgid "%s%s: cannot accept client on port %d (%s%s%s)" +msgid "%s%s: cannot accept client on port %d (%s)" msgstr "%s невозможно создать сокет\n" #, fuzzy, c-format @@ -7289,17 +7304,21 @@ msgstr "%s не могу установить настройку сокета \" msgid "%s%s: cannot create socket" msgstr "%s невозможно создать сокет\n" +#, fuzzy, c-format +msgid "%s%s: cannot set socket option \"IPV6_V6ONLY\" to value %d" +msgstr "%s не могу установить настройку сокета \"SO_KEEPALIVE\"\n" + #, fuzzy, c-format msgid "%s%s: cannot set socket option \"SO_KEEPALIVE\"" msgstr "%s не могу установить настройку сокета \"SO_KEEPALIVE\"\n" #, fuzzy, c-format -msgid "%s%s: error with \"bind\" on port %d (%s%s%s)" +msgid "%s%s: error with \"bind\" on port %d (%s)" msgstr "%s невозможно создать сокет\n" -#, c-format -msgid "%s: listening on port %d (relay: %s%s%s,%s max %d clients)" -msgstr "" +#, fuzzy, c-format +msgid "%s: listening on port %d (relay: %s, %s, max %d clients)" +msgstr "%s невозможно создать сокет\n" #, fuzzy, c-format msgid "%s%s: not enough memory for listening on new port" diff --git a/po/weechat.pot b/po/weechat.pot index a023dae2e..a7776906a 100644 --- a/po/weechat.pot +++ b/po/weechat.pot @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2012-10-14 09:22+0200\n" +"POT-Creation-Date: 2012-10-16 13:26+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -6198,7 +6198,7 @@ msgid "Listening on ports:" msgstr "" #, c-format -msgid " port %s%d%s, relay: %s%s%s%s%s%s, started on: %s" +msgid " port %s%d%s, relay: %s%s%s, %s, started on: %s" msgstr "" msgid "No server for relay" @@ -6220,8 +6220,8 @@ msgid "relay control" msgstr "" msgid "" -"list|listfull|listrelay || add || del " -"|| raw || sslcertkey" +"list|listfull|listrelay || add [ipv4.][ipv6.][ssl.] || " +"del [ipv4.][ipv6.][ssl.] || raw || sslcertkey" msgstr "" msgid "" @@ -6230,10 +6230,12 @@ msgid "" " listrelay: list relays (name and port)\n" " add: add relay for a protocol + name\n" " del: remove relay for a protocol + name\n" +" ipv4: force use of IPv4\n" +" ipv6: force use of IPv6\n" +" ssl: enable SSL\n" "protocol.name: protocol and name to relay:\n" " - protocol \"irc\": name is the server to share\n" " - protocol \"weechat\" (name is not used)\n" -" Note: the protocol can be prefixed by \"ssl.\" to enable SSL\n" " port: port used for relay\n" " raw: open buffer with raw Relay data\n" " sslcertkey: set SSL certificate/key using path in option relay.network." @@ -6249,7 +6251,13 @@ msgid "" " weechat protocol:\n" " /relay add weechat 9000\n" " weechat protocol with SSL:\n" -" /relay add ssl.weechat 9001" +" /relay add ssl.weechat 9001\n" +" weechat protocol with SSL, using only IPv4:\n" +" /relay add ipv4.ssl.weechat 9001\n" +" weechat protocol with SSL, using only IPv6:\n" +" /relay add ipv6.ssl.weechat 9001\n" +" weechat protocol with SSL, using IPv4 + IPv6:\n" +" /relay add ipv4.ipv6.ssl.weechat 9001" msgstr "" msgid "all possible protocol.name for relay plugin" @@ -6317,8 +6325,9 @@ msgstr "" msgid "" "regular expression with IPs allowed to use relay (case insensitive, use \"(?-" -"i)\" at beginning to make it case sensitive), example: \"^(123.45.67.89|" -"192.160.*)$\"" +"i)\" at beginning to make it case sensitive); if IPv6 is enabled and that " +"connection is made using IPv4, it will be IPv4-mapped IPv6 address (like: " +"\"::ffff:127.0.0.1\"), example: \"^((::ffff:)?123.45.67.89|192.160.*)$\"" msgstr "" msgid "" @@ -6331,6 +6340,12 @@ msgid "" "disable compression, 1 = low compression ... 9 = best compression)" msgstr "" +msgid "" +"listen on IPv6 socket by default (in addition to IPv4 which is default); " +"protocols IPv4 and IPv6 can be forced (individually or together) in the " +"protocol name (see /help relay)" +msgstr "" + msgid "maximum number of clients connecting to a port" msgstr "" @@ -6361,11 +6376,11 @@ msgid "Relay raw messages" msgstr "" #, c-format -msgid "%s: socket closed for %s%s%s (port %d)" +msgid "%s: socket closed for %s (port %d)" msgstr "" #, c-format -msgid "%s%s: cannot accept client on port %d (%s%s%s)" +msgid "%s%s: cannot accept client on port %d (%s)" msgstr "" #, c-format @@ -6380,16 +6395,20 @@ msgstr "" msgid "%s%s: cannot create socket" msgstr "" +#, c-format +msgid "%s%s: cannot set socket option \"IPV6_V6ONLY\" to value %d" +msgstr "" + #, c-format msgid "%s%s: cannot set socket option \"SO_KEEPALIVE\"" msgstr "" #, c-format -msgid "%s%s: error with \"bind\" on port %d (%s%s%s)" +msgid "%s%s: error with \"bind\" on port %d (%s)" msgstr "" #, c-format -msgid "%s: listening on port %d (relay: %s%s%s,%s max %d clients)" +msgid "%s: listening on port %d (relay: %s, %s, max %d clients)" msgstr "" #, c-format diff --git a/src/plugins/relay/relay-command.c b/src/plugins/relay/relay-command.c index 8a4bb4d7b..8de921e6e 100644 --- a/src/plugins/relay/relay-command.c +++ b/src/plugins/relay/relay-command.c @@ -149,16 +149,14 @@ relay_command_server_list () } weechat_printf (NULL, - _(" port %s%d%s, relay: %s%s%s%s%s%s, started on: %s"), + _(" port %s%d%s, relay: %s%s%s, %s, started on: %s"), RELAY_COLOR_CHAT_BUFFER, ptr_server->port, RELAY_COLOR_CHAT, RELAY_COLOR_CHAT_BUFFER, - (ptr_server->ssl) ? "ssl." : "", - relay_protocol_string[ptr_server->protocol], - (ptr_server->protocol_args) ? "." : "", - (ptr_server->protocol_args) ? ptr_server->protocol_args : "", + ptr_server->protocol_string, RELAY_COLOR_CHAT, + ((ptr_server->ipv4 && ptr_server->ipv6) ? "IPv4+6" : ((ptr_server->ipv6) ? "IPv6" : "IPv4")), date_start); i++; } @@ -315,8 +313,8 @@ relay_command_init () weechat_hook_command ("relay", N_("relay control"), N_("list|listfull|listrelay" - " || add " - " || del " + " || add [ipv4.][ipv6.][ssl.] " + " || del [ipv4.][ipv6.][ssl.]" " || raw" " || sslcertkey"), N_(" list: list relay clients (only active " @@ -326,13 +324,14 @@ relay_command_init () " listrelay: list relays (name and port)\n" " add: add relay for a protocol + name\n" " del: remove relay for a protocol + name\n" + " ipv4: force use of IPv4\n" + " ipv6: force use of IPv6\n" + " ssl: enable SSL\n" "protocol.name: protocol and name to relay:\n" " - protocol \"irc\": name is the " "server to share\n" " - protocol \"weechat\" (name is " "not used)\n" - " Note: the protocol can be prefixed " - "by \"ssl.\" to enable SSL\n" " port: port used for relay\n" " raw: open buffer with raw Relay data\n" " sslcertkey: set SSL certificate/key using path " @@ -347,7 +346,13 @@ relay_command_init () " weechat protocol:\n" " /relay add weechat 9000\n" " weechat protocol with SSL:\n" - " /relay add ssl.weechat 9001"), + " /relay add ssl.weechat 9001\n" + " weechat protocol with SSL, using only IPv4:\n" + " /relay add ipv4.ssl.weechat 9001\n" + " weechat protocol with SSL, using only IPv6:\n" + " /relay add ipv6.ssl.weechat 9001\n" + " weechat protocol with SSL, using IPv4 + IPv6:\n" + " /relay add ipv4.ipv6.ssl.weechat 9001"), "list %(relay_relays)" " || listfull %(relay_relays)" " || listrelay" diff --git a/src/plugins/relay/relay-completion.c b/src/plugins/relay/relay-completion.c index 9698de5f5..6e5874c6f 100644 --- a/src/plugins/relay/relay-completion.c +++ b/src/plugins/relay/relay-completion.c @@ -84,7 +84,6 @@ relay_completion_relays_cb (void *data, const char *completion_item, struct t_gui_completion *completion) { struct t_relay_server *ptr_server; - char protocol_name[512]; /* make C compiler happy */ (void) data; @@ -94,12 +93,8 @@ relay_completion_relays_cb (void *data, const char *completion_item, for (ptr_server = relay_servers; ptr_server; ptr_server = ptr_server->next_server) { - snprintf (protocol_name, sizeof (protocol_name), "%s%s%s%s", - (ptr_server->ssl) ? "ssl." : "", - relay_protocol_string[ptr_server->protocol], - (ptr_server->protocol_args) ? "." : "", - (ptr_server->protocol_args) ? ptr_server->protocol_args : ""); - weechat_hook_completion_list_add (completion, protocol_name, + weechat_hook_completion_list_add (completion, + ptr_server->protocol_string, 0, WEECHAT_LIST_POS_SORT); } diff --git a/src/plugins/relay/relay-config.c b/src/plugins/relay/relay-config.c index 5b6aaa862..33a14666e 100644 --- a/src/plugins/relay/relay-config.c +++ b/src/plugins/relay/relay-config.c @@ -55,6 +55,7 @@ struct t_config_option *relay_config_color_status[RELAY_NUM_STATUS]; struct t_config_option *relay_config_network_allowed_ips; struct t_config_option *relay_config_network_bind_address; struct t_config_option *relay_config_network_compression_level; +struct t_config_option *relay_config_network_ipv6; struct t_config_option *relay_config_network_max_clients; struct t_config_option *relay_config_network_password; struct t_config_option *relay_config_network_ssl_cert_key; @@ -119,8 +120,9 @@ relay_config_change_network_allowed_ips (void *data, } /* - * relay_config_change_network_bind_address_cb: callback called when user changes - * network bind address option + * relay_config_change_network_bind_address_cb: callback called when user + * changes network bind address + * option */ void @@ -141,6 +143,31 @@ relay_config_change_network_bind_address_cb (void *data, } } +/* + * relay_config_change_network_ipv6_cb: callback called when user changes ipv6 + * option + */ + +void +relay_config_change_network_ipv6_cb (void *data, struct t_config_option *option) +{ + struct t_relay_server *ptr_server; + + /* make C compiler happy */ + (void) data; + (void) option; + + for (ptr_server = relay_servers; ptr_server; + ptr_server = ptr_server->next_server) + { + relay_server_get_protocol_args (ptr_server->protocol_string, + &ptr_server->ipv4, &ptr_server->ipv6, + NULL, NULL, NULL); + relay_server_close_socket (ptr_server); + relay_server_create_socket (ptr_server); + } +} + /* * relay_config_change_network_ssl_cert_key: called when ssl_cert_key is changed */ @@ -238,7 +265,7 @@ relay_config_create_option_port (void *data, const char *option_name, const char *value) { - int rc, protocol_number, ssl; + int rc, protocol_number, ipv4, ipv6, ssl; char *error, *protocol, *protocol_args; long port; struct t_relay_server *ptr_server; @@ -251,8 +278,8 @@ relay_config_create_option_port (void *data, protocol_number = -1; port = -1; - relay_server_get_protocol_args (option_name, - &ssl, &protocol, &protocol_args); + relay_server_get_protocol_args (option_name, &ipv4, &ipv6, &ssl, + &protocol, &protocol_args); #ifndef HAVE_GNUTLS if (ssl) @@ -323,7 +350,8 @@ relay_config_create_option_port (void *data, if (rc != WEECHAT_CONFIG_OPTION_SET_ERROR) { - if (relay_server_new (protocol_number, protocol_args, port, ssl)) + if (relay_server_new (option_name, protocol_number, protocol_args, + port, ipv4, ipv6, ssl)) { /* create config option */ weechat_config_new_option ( @@ -479,8 +507,10 @@ relay_config_init () relay_config_file, ptr_section, "allowed_ips", "string", N_("regular expression with IPs allowed to use relay (case insensitive, " - "use \"(?-i)\" at beginning to make it case sensitive), example: " - "\"^(123.45.67.89|192.160.*)$\""), + "use \"(?-i)\" at beginning to make it case sensitive); if IPv6 is " + "enabled and that connection is made using IPv4, it will be " + "IPv4-mapped IPv6 address (like: \"::ffff:127.0.0.1\"), example: " + "\"^((::ffff:)?123.45.67.89|192.160.*)$\""), NULL, 0, 0, "", NULL, 0, NULL, NULL, &relay_config_change_network_allowed_ips, NULL, NULL, NULL); relay_config_network_bind_address = weechat_config_new_option ( @@ -499,6 +529,14 @@ relay_config_init () "compression)"), NULL, 0, 9, "6", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL); + relay_config_network_ipv6 = weechat_config_new_option ( + relay_config_file, ptr_section, + "ipv6", "boolean", + N_("listen on IPv6 socket by default (in addition to IPv4 which is " + "default); protocols IPv4 and IPv6 can be forced (individually or " + "together) in the protocol name (see /help relay)"), + NULL, 0, 0, "on", NULL, 0, NULL, NULL, + &relay_config_change_network_ipv6_cb, NULL, NULL, NULL); relay_config_network_max_clients = weechat_config_new_option ( relay_config_file, ptr_section, "max_clients", "integer", diff --git a/src/plugins/relay/relay-config.h b/src/plugins/relay/relay-config.h index 0576b36e9..8a54b75e1 100644 --- a/src/plugins/relay/relay-config.h +++ b/src/plugins/relay/relay-config.h @@ -39,6 +39,7 @@ extern struct t_config_option *relay_config_color_status[]; extern struct t_config_option *relay_config_network_allowed_ips; extern struct t_config_option *relay_config_network_bind_address; extern struct t_config_option *relay_config_network_compression_level; +extern struct t_config_option *relay_config_network_ipv6; extern struct t_config_option *relay_config_network_max_clients; extern struct t_config_option *relay_config_network_password; extern struct t_config_option *relay_config_network_ssl_cert_key; diff --git a/src/plugins/relay/relay-server.c b/src/plugins/relay/relay-server.c index cf1bc3694..19600fb39 100644 --- a/src/plugins/relay/relay-server.c +++ b/src/plugins/relay/relay-server.c @@ -45,35 +45,99 @@ struct t_relay_server *last_relay_server = NULL; /* - * relay_server_get_protocol_args: get protocol and arguments from a string - * with format "protocol.args" + * relay_server_get_protocol_args: get protocol, arguments and options + * from a string with format + * "options.protocol.args", examples: + * irc.freenode + * ssl.irc.freenode + * ipv4.irc.freenode + * ipv6.irc.freenode + * ipv4.ipv6.irc.freenode + * ipv6.ssl.irc.freenode + * weechat + * ssl.weechat + * ipv6.ssl.weechat * Note: *protocol and *protocol_args must be * freed after use */ void relay_server_get_protocol_args (const char *protocol_and_args, - int *ssl, char **protocol, char **protocol_args) + int *ipv4, int *ipv6, int *ssl, + char **protocol, char **protocol_args) { + int opt_ipv4, opt_ipv6, opt_ssl; char *pos; - *ssl = 0; - if (strncmp (protocol_and_args, "ssl.", 4) == 0) + opt_ipv4 = -1; + opt_ipv6 = -1; + opt_ssl = 0; + while (1) { - *ssl = 1; - protocol_and_args += 4; + if (strncmp (protocol_and_args, "ipv4.", 5) == 0) + { + opt_ipv4 = 1; + protocol_and_args += 5; + } + else if (strncmp (protocol_and_args, "ipv6.", 5) == 0) + { + opt_ipv6 = 1; + protocol_and_args += 5; + } + else if (strncmp (protocol_and_args, "ssl.", 4) == 0) + { + opt_ssl = 1; + protocol_and_args += 4; + } + else + break; } - pos = strchr (protocol_and_args, '.'); - if (pos) + if ((opt_ipv4 == -1) && (opt_ipv6 == -1)) { - *protocol = weechat_strndup (protocol_and_args, - pos - protocol_and_args); - *protocol_args = strdup (pos + 1); + /* + * no IPv4/IPv6 specified, then use defaults: + * - IPv4 enabled + * - IPv6 enabled if option relay.network.ipv6 is on + */ + opt_ipv4 = 1; + opt_ipv6 = weechat_config_boolean (relay_config_network_ipv6); } else { - *protocol = strdup (protocol_and_args); - *protocol_args = NULL; + if (opt_ipv4 == -1) + opt_ipv4 = 0; + if (opt_ipv6 == -1) + opt_ipv6 = 0; + } + if (!opt_ipv4 && !opt_ipv6) + { + /* both IPv4/IPv6 disabled (should never occur!) */ + opt_ipv4 = 1; + } + if (ipv4) + *ipv4 = opt_ipv4; + if (ipv6) + *ipv6 = opt_ipv6; + if (ssl) + *ssl = opt_ssl; + + pos = strchr (protocol_and_args, '.'); + if (pos) + { + if (protocol) + { + *protocol = weechat_strndup (protocol_and_args, + pos - protocol_and_args); + } + if (protocol_args) + *protocol_args = strdup (pos + 1); + } + else + { + if (protocol) + *protocol = strdup (protocol_and_args); + if (protocol_args) + *protocol_args = NULL; } } @@ -84,40 +148,16 @@ relay_server_get_protocol_args (const char *protocol_and_args, struct t_relay_server * relay_server_search (const char *protocol_and_args) { - int ssl; - char *protocol, *protocol_args; struct t_relay_server *ptr_server; - relay_server_get_protocol_args (protocol_and_args, - &ssl, &protocol, &protocol_args); - - ptr_server = NULL; - - if (protocol) + for (ptr_server = relay_servers; ptr_server; + ptr_server = ptr_server->next_server) { - for (ptr_server = relay_servers; ptr_server; - ptr_server = ptr_server->next_server) - { - if ((ptr_server->ssl == ssl) - && (strcmp (protocol, relay_protocol_string[ptr_server->protocol]) == 0)) - { - if (!protocol_args && !ptr_server->protocol_args) - break; - if (protocol_args && ptr_server->protocol_args - && (strcmp (protocol_args, ptr_server->protocol_args) == 0)) - { - break; - } - } - } + if (strcmp (protocol_and_args, ptr_server->protocol_string) == 0) + return ptr_server; } - if (protocol) - free (protocol); - if (protocol_args) - free (protocol_args); - - return ptr_server; + return NULL; } /* @@ -160,11 +200,8 @@ relay_server_close_socket (struct t_relay_server *server) if (!relay_signal_upgrade_received) { weechat_printf (NULL, - _("%s: socket closed for %s%s%s (port %d)"), - RELAY_PLUGIN_NAME, - relay_protocol_string[server->protocol], - (server->protocol_args) ? "." : "", - (server->protocol_args) ? server->protocol_args : "", + _("%s: socket closed for %s (port %d)"), + RELAY_PLUGIN_NAME, server->protocol_string, server->port); } } @@ -179,45 +216,67 @@ relay_server_sock_cb (void *data, int fd) { struct t_relay_server *server; struct sockaddr_in client_addr; - socklen_t client_length; + struct sockaddr_in6 client_addr6; + socklen_t client_addr_size; + void *ptr_addr; int client_fd, flags, set; - char ipv4_address[INET_ADDRSTRLEN + 1], *ptr_address; + char ipv4_address[INET_ADDRSTRLEN + 1], ipv6_address[INET6_ADDRSTRLEN + 1]; + char *ptr_ip_address; /* make C compiler happy */ (void) fd; server = (struct t_relay_server *)data; - client_length = sizeof (client_addr); - memset (&client_addr, 0, client_length); + if (server->ipv6) + { + ptr_addr = &client_addr6; + client_addr_size = sizeof (struct sockaddr_in6); + } + else + { + ptr_addr = &client_addr; + client_addr_size = sizeof (struct sockaddr_in); + } - client_fd = accept (server->sock, (struct sockaddr *) &client_addr, - &client_length); + memset (&client_addr, 0, client_addr_size); + + client_fd = accept (server->sock, (struct sockaddr *)ptr_addr, + &client_addr_size); if (client_fd < 0) { weechat_printf (NULL, - _("%s%s: cannot accept client on port %d (%s%s%s)"), - weechat_prefix ("error"), - RELAY_PLUGIN_NAME, - server->port, - relay_protocol_string[server->protocol], - (server->protocol_args) ? "." : "", - (server->protocol_args) ? server->protocol_args : ""); + _("%s%s: cannot accept client on port %d (%s)"), + weechat_prefix ("error"), RELAY_PLUGIN_NAME, + server->port, server->protocol_string); return WEECHAT_RC_OK; } - ptr_address = NULL; - if (inet_ntop (AF_INET, - &(client_addr.sin_addr), - ipv4_address, - INET_ADDRSTRLEN)) + ptr_ip_address = NULL; + if (server->ipv6) { - ptr_address = ipv4_address; + if (inet_ntop (AF_INET6, + &(client_addr6.sin6_addr), + ipv6_address, + INET6_ADDRSTRLEN)) + { + ptr_ip_address = ipv6_address; + } + } + else + { + if (inet_ntop (AF_INET, + &(client_addr.sin_addr), + ipv4_address, + INET_ADDRSTRLEN)) + { + ptr_ip_address = ipv4_address; + } } /* check if IP is allowed, if not, just close socket */ if (relay_config_regex_allowed_ips - && (regexec (relay_config_regex_allowed_ips, ptr_address, 0, NULL, 0) != 0)) + && (regexec (relay_config_regex_allowed_ips, ptr_ip_address, 0, NULL, 0) != 0)) { if (weechat_relay_plugin->debug >= 2) { @@ -225,7 +284,7 @@ relay_server_sock_cb (void *data, int fd) _("%s%s: IP address \"%s\" not allowed for relay"), weechat_prefix ("error"), RELAY_PLUGIN_NAME, - ptr_address); + ptr_ip_address); } close (client_fd); return WEECHAT_RC_OK; @@ -251,7 +310,7 @@ relay_server_sock_cb (void *data, int fd) } /* add the client */ - relay_client_new (client_fd, ptr_address, server); + relay_client_new (client_fd, ptr_ip_address, server); return WEECHAT_RC_OK; } @@ -263,10 +322,49 @@ relay_server_sock_cb (void *data, int fd) int relay_server_create_socket (struct t_relay_server *server) { - int set, max_clients; + int domain, set, max_clients, addr_size; struct sockaddr_in server_addr; + struct sockaddr_in6 server_addr6; + void *ptr_addr; - server->sock = socket (AF_INET, SOCK_STREAM, 0); + if (server->ipv6) + { + domain = AF_INET6; + memset (&server_addr6, 0, sizeof (struct sockaddr_in6)); + server_addr6.sin6_family = domain; + server_addr6.sin6_port = htons (server->port); + server_addr6.sin6_addr = in6addr_any; + ptr_addr = &server_addr6; + addr_size = sizeof (struct sockaddr_in6); + } + else + { + domain = AF_INET; + memset (&server_addr, 0, sizeof (struct sockaddr_in)); + server_addr.sin_family = domain; + server_addr.sin_port = htons (server->port); + if (weechat_config_string (relay_config_network_bind_address) + && weechat_config_string (relay_config_network_bind_address)[0]) + { + server_addr.sin_addr.s_addr = inet_addr (weechat_config_string (relay_config_network_bind_address)); + } + else + { + server_addr.sin_addr.s_addr = INADDR_ANY; + } + ptr_addr = &server_addr; + addr_size = sizeof (struct sockaddr_in); + } + if (weechat_config_string (relay_config_network_bind_address) + && weechat_config_string (relay_config_network_bind_address)[0]) + { + inet_pton (domain, + weechat_config_string (relay_config_network_bind_address), + ptr_addr); + } + + /* create socket */ + server->sock = socket (domain, SOCK_STREAM, 0); if (server->sock < 0) { weechat_printf (NULL, @@ -275,55 +373,59 @@ relay_server_create_socket (struct t_relay_server *server) return 0; } +#ifdef IPV6_V6ONLY + /* set option IPV6_V6ONLY to 0 or 1 */ + if (server->ipv6) + { + set = (server->ipv4) ? 0 : 1; + if (setsockopt (server->sock, IPPROTO_IPV6, IPV6_V6ONLY, + (void *) &set, sizeof (set)) < 0) + { + weechat_printf (NULL, + _("%s%s: cannot set socket option \"IPV6_V6ONLY\" " + "to value %d"), + weechat_prefix ("error"), RELAY_PLUGIN_NAME, + set); + close (server->sock); + server->sock = -1; + return 0; + } + } +#endif + + /* set option SO_REUSEADDR to 1 */ set = 1; if (setsockopt (server->sock, SOL_SOCKET, SO_REUSEADDR, (void *) &set, sizeof (set)) < 0) { weechat_printf (NULL, - _("%s%s: cannot set socket option " - "\"SO_REUSEADDR\""), + _("%s%s: cannot set socket option \"SO_REUSEADDR\""), weechat_prefix ("error"), RELAY_PLUGIN_NAME); close (server->sock); server->sock = -1; return 0; } + /* set option SO_KEEPALIVE to 1 */ set = 1; if (setsockopt (server->sock, SOL_SOCKET, SO_KEEPALIVE, (void *) &set, sizeof (set)) < 0) { weechat_printf (NULL, - _("%s%s: cannot set socket option " - "\"SO_KEEPALIVE\""), + _("%s%s: cannot set socket option \"SO_KEEPALIVE\""), weechat_prefix ("error"), RELAY_PLUGIN_NAME); close (server->sock); server->sock = -1; return 0; } - memset(&server_addr, 0, sizeof(struct sockaddr_in)); - server_addr.sin_family = AF_INET; - if (weechat_config_string (relay_config_network_bind_address) - && weechat_config_string (relay_config_network_bind_address)[0]) - { - server_addr.sin_addr.s_addr = inet_addr (weechat_config_string (relay_config_network_bind_address)); - } - else - { - server_addr.sin_addr.s_addr = INADDR_ANY; - } - server_addr.sin_port = htons (server->port); - - if (bind (server->sock, (struct sockaddr *) &server_addr, - sizeof (server_addr)) < 0) + /* bind */ + if (bind (server->sock, (struct sockaddr *)ptr_addr, addr_size) < 0) { weechat_printf (NULL, - _("%s%s: error with \"bind\" on port %d (%s%s%s)"), + _("%s%s: error with \"bind\" on port %d (%s)"), weechat_prefix ("error"), RELAY_PLUGIN_NAME, - server->port, - relay_protocol_string[server->protocol], - (server->protocol_args) ? "." : "", - (server->protocol_args) ? server->protocol_args : ""); + server->port, server->protocol_string); close (server->sock); server->sock = -1; return 0; @@ -334,13 +436,11 @@ relay_server_create_socket (struct t_relay_server *server) listen (server->sock, max_clients); weechat_printf (NULL, - _("%s: listening on port %d (relay: %s%s%s,%s max %d clients)"), + _("%s: listening on port %d (relay: %s, %s, max %d clients)"), RELAY_PLUGIN_NAME, server->port, - relay_protocol_string[server->protocol], - (server->protocol_args) ? "." : "", - (server->protocol_args) ? server->protocol_args : "", - (server->ssl) ? " SSL," : "", + server->protocol_string, + ((server->ipv4 && server->ipv6) ? "IPv4+6" : ((server->ipv6) ? "IPv6" : "IPv4")), max_clients); server->hook_fd = weechat_hook_fd (server->sock, @@ -358,12 +458,15 @@ relay_server_create_socket (struct t_relay_server *server) */ struct t_relay_server * -relay_server_new (enum t_relay_protocol protocol, - const char *protocol_args, - int port, int ssl) +relay_server_new (const char *protocol_string, enum t_relay_protocol protocol, + const char *protocol_args, int port, int ipv4, int ipv6, + int ssl) { struct t_relay_server *new_server; + if (!protocol_string) + return NULL; + if (relay_server_search_port (port)) { weechat_printf (NULL, _("%s%s: error: port \"%d\" is already used"), @@ -375,10 +478,13 @@ relay_server_new (enum t_relay_protocol protocol, new_server = malloc (sizeof (*new_server)); if (new_server) { + new_server->protocol_string = strdup (protocol_string); new_server->protocol = protocol; new_server->protocol_args = (protocol_args) ? strdup (protocol_args) : NULL; new_server->port = port; + new_server->ipv4 = ipv4; + new_server->ipv6 = ipv6; new_server->ssl = ssl; new_server->sock = -1; new_server->hook_fd = NULL; @@ -386,6 +492,8 @@ relay_server_new (enum t_relay_protocol protocol, if (!relay_server_create_socket (new_server)) { + if (new_server->protocol_string) + free (new_server->protocol_string); if (new_server->protocol_args) free (new_server->protocol_args); free (new_server); @@ -452,6 +560,8 @@ relay_server_free (struct t_relay_server *server) /* free data */ relay_server_close_socket (server); + if (server->protocol_string) + free (server->protocol_string); if (server->protocol_args) free (server->protocol_args); @@ -487,11 +597,14 @@ relay_server_print_log () { weechat_log_printf (""); weechat_log_printf ("[relay server (addr:0x%lx)]", ptr_server); + weechat_log_printf (" protocol_string . . : '%s'", ptr_server->protocol_string); weechat_log_printf (" protocol. . . . . . : %d (%s)", ptr_server->protocol, relay_protocol_string[ptr_server->protocol]); weechat_log_printf (" protocol_args . . . : '%s'", ptr_server->protocol_args); weechat_log_printf (" port. . . . . . . . : %d", ptr_server->port); + weechat_log_printf (" ipv4. . . . . . . . : %d", ptr_server->ipv4); + weechat_log_printf (" ipv6. . . . . . . . : %d", ptr_server->ipv6); weechat_log_printf (" ssl . . . . . . . . : %d", ptr_server->ssl); weechat_log_printf (" sock. . . . . . . . : %d", ptr_server->sock); weechat_log_printf (" hook_fd . . . . . . : 0x%lx", ptr_server->hook_fd); diff --git a/src/plugins/relay/relay-server.h b/src/plugins/relay/relay-server.h index 300671043..f4af777e8 100644 --- a/src/plugins/relay/relay-server.h +++ b/src/plugins/relay/relay-server.h @@ -26,10 +26,13 @@ struct t_relay_server { - enum t_relay_protocol protocol; /* protocol (irc,..) */ + char *protocol_string; /* example: "ipv6.ssl.irc.freenode" */ + enum t_relay_protocol protocol; /* protocol (irc/weechat) */ char *protocol_args; /* arguments used for protocol */ /* example: server for irc protocol */ int port; /* listening on this port */ + int ipv4; /* IPv4 protocol enabled */ + int ipv6; /* IPv6 protocol enabled */ int ssl; /* 1 if SSL is enabled */ int sock; /* socket for connection */ struct t_hook *hook_fd; /* hook for socket */ @@ -42,6 +45,7 @@ extern struct t_relay_server *relay_servers; extern struct t_relay_server *last_relay_server; extern void relay_server_get_protocol_args (const char *protocol_and_string, + int *ipv4, int *ipv6, int *ssl, char **protocol, char **protocol_args); @@ -49,9 +53,11 @@ extern struct t_relay_server *relay_server_search (const char *protocol_and_args extern struct t_relay_server *relay_server_search_port (int port); extern void relay_server_close_socket (struct t_relay_server *server); extern int relay_server_create_socket (struct t_relay_server *server); -extern struct t_relay_server *relay_server_new (enum t_relay_protocol protocol, +extern struct t_relay_server *relay_server_new (const char *protocol_string, + enum t_relay_protocol protocol, const char *protocol_args, - int port, int ssl); + int port, int ipv4, int ipv6, + int ssl); extern void relay_server_update_port (struct t_relay_server *server, int port); extern void relay_server_free (struct t_relay_server *server); extern void relay_server_free_all (); diff --git a/src/plugins/relay/relay.c b/src/plugins/relay/relay.c index 23e7dfdb4..5fa70ae7a 100644 --- a/src/plugins/relay/relay.c +++ b/src/plugins/relay/relay.c @@ -22,6 +22,7 @@ */ #include +#include #include "../weechat-plugin.h" #include "relay.h" @@ -65,7 +66,7 @@ relay_protocol_search (const char *name) for (i = 0; i < RELAY_NUM_PROTOCOLS; i++) { - if (weechat_strcasecmp (relay_protocol_string[i], name) == 0) + if (strcmp (relay_protocol_string[i], name) == 0) return i; }