irc: add support of SASL mechanisms SCRAM-SHA-1, SCRAM-SHA-256 and SCRAM-SHA-512 (closes #1628)

This commit is contained in:
Sébastien Helleu 2021-06-01 20:45:11 +02:00
parent 5cffb7179f
commit e365e66eeb
32 changed files with 1483 additions and 597 deletions

View File

@ -36,6 +36,7 @@ New features::
* api: add info "weechat_daemon"
* buflist: add option buflist.format.tls_version
* fifo: change default value of option fifo.file.path to "${weechat_runtime_dir}/weechat_fifo_${info:pid}"
* irc: add support of SASL mechanisms SCRAM-SHA-1, SCRAM-SHA-256 and SCRAM-SHA-512 (issue #1628)
* irc: add variable "${target}" (target nick) in commands /kick and /kickban
* irc: add bar item "tls_version", add options irc.color.item_tls_version_ok, irc.color.item_tls_version_deprecated and irc.color.item_tls_version_insecure (issue #1622)
* irc: evaluate server options "sasl_key" and "ssl_cert"

View File

@ -233,6 +233,10 @@ _hook_connect_   (pointer, hdata: "hook") +
_hook_fd_   (pointer, hdata: "hook") +
_hook_timer_connection_   (pointer, hdata: "hook") +
_hook_timer_sasl_   (pointer, hdata: "hook") +
_sasl_scram_client_first_   (string) +
_sasl_scram_salted_pwd_   (other) +
_sasl_scram_salted_pwd_size_   (integer) +
_sasl_scram_auth_message_   (string) +
_is_connected_   (integer) +
_ssl_connected_   (integer) +
_disconnected_   (integer) +

View File

@ -2779,9 +2779,9 @@
** Standardwert: `+""+`
* [[option_irc.server_default.sasl_mechanism]] *irc.server_default.sasl_mechanism*
** Beschreibung: pass:none[Verfahren welches bei einer SASL Authentifizierung angewandt werden soll: "plain" Passwort wird im Klartext gesendet, "ecdsa-nist256p-challenge" für öffentlich/private Schlüsselmethode, "external" SSL Zertifikat welches auf Client Seite vorliegt wird verwendet, "dh-blowfish" Passwort wird mittels blowfish verschlüsselt (unsicher, wird nicht empfohlen), "dh-aes" Passwort wird mittels AES verschlüsselt (unsicher, wird nicht empfohlen)]
** Beschreibung: pass:none[mechanism for SASL authentication: "plain" for plain text password, "scram-sha-1" for SCRAM authentication with SHA-1 algorithm, "scram-sha-256" for SCRAM authentication with SHA-256 algorithm, "scram-sha-512" for SCRAM authentication with SHA-512 algorithm, "ecdsa-nist256p-challenge" for key-based challenge authentication, "external" for authentication using client side SSL cert, "dh-blowfish" for blowfish crypted password (insecure, not recommended), "dh-aes" for AES crypted password (insecure, not recommended)]
** Typ: integer
** Werte: plain, ecdsa-nist256p-challenge, external, dh-blowfish, dh-aes
** Werte: plain, scram-sha-1, scram-sha-256, scram-sha-512, ecdsa-nist256p-challenge, external, dh-blowfish, dh-aes
** Standardwert: `+plain+`
* [[option_irc.server_default.sasl_password]] *irc.server_default.sasl_password*

View File

@ -233,6 +233,10 @@ _hook_connect_   (pointer, hdata: "hook") +
_hook_fd_   (pointer, hdata: "hook") +
_hook_timer_connection_   (pointer, hdata: "hook") +
_hook_timer_sasl_   (pointer, hdata: "hook") +
_sasl_scram_client_first_   (string) +
_sasl_scram_salted_pwd_   (other) +
_sasl_scram_salted_pwd_size_   (integer) +
_sasl_scram_auth_message_   (string) +
_is_connected_   (integer) +
_ssl_connected_   (integer) +
_disconnected_   (integer) +

View File

@ -2779,9 +2779,9 @@
** default value: `+""+`
* [[option_irc.server_default.sasl_mechanism]] *irc.server_default.sasl_mechanism*
** description: pass:none[mechanism for SASL authentication: "plain" for plain text password, "ecdsa-nist256p-challenge" for key-based challenge authentication, "external" for authentication using client side SSL cert, "dh-blowfish" for blowfish crypted password (insecure, not recommended), "dh-aes" for AES crypted password (insecure, not recommended)]
** description: pass:none[mechanism for SASL authentication: "plain" for plain text password, "scram-sha-1" for SCRAM authentication with SHA-1 algorithm, "scram-sha-256" for SCRAM authentication with SHA-256 algorithm, "scram-sha-512" for SCRAM authentication with SHA-512 algorithm, "ecdsa-nist256p-challenge" for key-based challenge authentication, "external" for authentication using client side SSL cert, "dh-blowfish" for blowfish crypted password (insecure, not recommended), "dh-aes" for AES crypted password (insecure, not recommended)]
** type: integer
** values: plain, ecdsa-nist256p-challenge, external, dh-blowfish, dh-aes
** values: plain, scram-sha-1, scram-sha-256, scram-sha-512, ecdsa-nist256p-challenge, external, dh-blowfish, dh-aes
** default value: `+plain+`
* [[option_irc.server_default.sasl_password]] *irc.server_default.sasl_password*

View File

@ -233,6 +233,10 @@ _hook_connect_   (pointer, hdata: "hook") +
_hook_fd_   (pointer, hdata: "hook") +
_hook_timer_connection_   (pointer, hdata: "hook") +
_hook_timer_sasl_   (pointer, hdata: "hook") +
_sasl_scram_client_first_   (string) +
_sasl_scram_salted_pwd_   (other) +
_sasl_scram_salted_pwd_size_   (integer) +
_sasl_scram_auth_message_   (string) +
_is_connected_   (integer) +
_ssl_connected_   (integer) +
_disconnected_   (integer) +

View File

@ -2779,9 +2779,9 @@
** valeur par défaut: `+""+`
* [[option_irc.server_default.sasl_mechanism]] *irc.server_default.sasl_mechanism*
** description: pass:none[mécanisme pour l'authentification SASL : "plain" pour un mot de passe en clair, "ecdsa-nist256p-challenge" pour une authentification par challenge avec clé, "external" pour une authentification en utilisant un certificat SSL côté client, "dh-blowfish" pour un mot de passe chiffré avec blowfish (non sûr, non recommandé), "dh-aes" pour un mot de passe chiffré avec AES (non sûr, non recommandé)]
** description: pass:none[mécanisme pour l'authentification SASL : "plain" pour un mot de passe en clair, "scram-sha-1" pour une authentification SCRAM avec algorithme SHA-1, "scram-sha-256" pour une authentification SCRAM avec algorithme SHA-256, "scram-sha-512" pour une authentification SCRAM avec algorithme SHA-512, "ecdsa-nist256p-challenge" pour une authentification par challenge avec clé, "external" pour une authentification en utilisant un certificat SSL côté client, "dh-blowfish" pour un mot de passe chiffré avec blowfish (non sûr, non recommandé), "dh-aes" pour un mot de passe chiffré avec AES (non sûr, non recommandé)]
** type: entier
** valeurs: plain, ecdsa-nist256p-challenge, external, dh-blowfish, dh-aes
** valeurs: plain, scram-sha-1, scram-sha-256, scram-sha-512, ecdsa-nist256p-challenge, external, dh-blowfish, dh-aes
** valeur par défaut: `+plain+`
* [[option_irc.server_default.sasl_password]] *irc.server_default.sasl_password*

View File

@ -233,6 +233,10 @@ _hook_connect_   (pointer, hdata: "hook") +
_hook_fd_   (pointer, hdata: "hook") +
_hook_timer_connection_   (pointer, hdata: "hook") +
_hook_timer_sasl_   (pointer, hdata: "hook") +
_sasl_scram_client_first_   (string) +
_sasl_scram_salted_pwd_   (other) +
_sasl_scram_salted_pwd_size_   (integer) +
_sasl_scram_auth_message_   (string) +
_is_connected_   (integer) +
_ssl_connected_   (integer) +
_disconnected_   (integer) +

View File

@ -2779,9 +2779,9 @@
** valore predefinito: `+""+`
* [[option_irc.server_default.sasl_mechanism]] *irc.server_default.sasl_mechanism*
** descrizione: pass:none[mechanism for SASL authentication: "plain" for plain text password, "ecdsa-nist256p-challenge" for key-based challenge authentication, "external" for authentication using client side SSL cert, "dh-blowfish" for blowfish crypted password (insecure, not recommended), "dh-aes" for AES crypted password (insecure, not recommended)]
** descrizione: pass:none[mechanism for SASL authentication: "plain" for plain text password, "scram-sha-1" for SCRAM authentication with SHA-1 algorithm, "scram-sha-256" for SCRAM authentication with SHA-256 algorithm, "scram-sha-512" for SCRAM authentication with SHA-512 algorithm, "ecdsa-nist256p-challenge" for key-based challenge authentication, "external" for authentication using client side SSL cert, "dh-blowfish" for blowfish crypted password (insecure, not recommended), "dh-aes" for AES crypted password (insecure, not recommended)]
** tipo: intero
** valori: plain, ecdsa-nist256p-challenge, external, dh-blowfish, dh-aes
** valori: plain, scram-sha-1, scram-sha-256, scram-sha-512, ecdsa-nist256p-challenge, external, dh-blowfish, dh-aes
** valore predefinito: `+plain+`
* [[option_irc.server_default.sasl_password]] *irc.server_default.sasl_password*

View File

@ -233,6 +233,10 @@ _hook_connect_   (pointer, hdata: "hook") +
_hook_fd_   (pointer, hdata: "hook") +
_hook_timer_connection_   (pointer, hdata: "hook") +
_hook_timer_sasl_   (pointer, hdata: "hook") +
_sasl_scram_client_first_   (string) +
_sasl_scram_salted_pwd_   (other) +
_sasl_scram_salted_pwd_size_   (integer) +
_sasl_scram_auth_message_   (string) +
_is_connected_   (integer) +
_ssl_connected_   (integer) +
_disconnected_   (integer) +

View File

@ -2779,9 +2779,9 @@
** デフォルト値: `+""+`
* [[option_irc.server_default.sasl_mechanism]] *irc.server_default.sasl_mechanism*
** 説明: pass:none[SASL 認証メカニズム: "plain" は平文パスワード、"ecdsa-nist256p-challenge" は鍵を使ったチャレンジ認証、"external" はクライアント側の SSL 証明書を利用した認証<、"dh-blowfish" は blowfish 暗号化パスワード (危険、非推奨)、"dh-aes" は AES 暗号化パスワード (危険、非推奨)]
** 説明: pass:none[mechanism for SASL authentication: "plain" for plain text password, "scram-sha-1" for SCRAM authentication with SHA-1 algorithm, "scram-sha-256" for SCRAM authentication with SHA-256 algorithm, "scram-sha-512" for SCRAM authentication with SHA-512 algorithm, "ecdsa-nist256p-challenge" for key-based challenge authentication, "external" for authentication using client side SSL cert, "dh-blowfish" for blowfish crypted password (insecure, not recommended), "dh-aes" for AES crypted password (insecure, not recommended)]
** タイプ: 整数
** 値: plain, ecdsa-nist256p-challenge, external, dh-blowfish, dh-aes
** 値: plain, scram-sha-1, scram-sha-256, scram-sha-512, ecdsa-nist256p-challenge, external, dh-blowfish, dh-aes
** デフォルト値: `+plain+`
* [[option_irc.server_default.sasl_password]] *irc.server_default.sasl_password*

View File

@ -233,6 +233,10 @@ _hook_connect_   (pointer, hdata: "hook") +
_hook_fd_   (pointer, hdata: "hook") +
_hook_timer_connection_   (pointer, hdata: "hook") +
_hook_timer_sasl_   (pointer, hdata: "hook") +
_sasl_scram_client_first_   (string) +
_sasl_scram_salted_pwd_   (other) +
_sasl_scram_salted_pwd_size_   (integer) +
_sasl_scram_auth_message_   (string) +
_is_connected_   (integer) +
_ssl_connected_   (integer) +
_disconnected_   (integer) +

View File

@ -2779,9 +2779,9 @@
** domyślna wartość: `+""+`
* [[option_irc.server_default.sasl_mechanism]] *irc.server_default.sasl_mechanism*
** opis: pass:none[mechanizm autentykacji SASL: "plain" dla hasła w czystym tekście, "ecdsa-nist256p-challenge" uwierzytelnianie na podstawie pary kluczy, "external" dla uwierzytelnienia za pomocą certyfikatu SSL po stronie klienta", "dh-blowfish" dla hasła szyfrowanego za pomocą blowfish (mało bezpieczne, niepolecane), "dh-aes" dla hasła szyfrowanego za pomocą AES (mało bezpieczne, niepolecane)]
** opis: pass:none[mechanism for SASL authentication: "plain" for plain text password, "scram-sha-1" for SCRAM authentication with SHA-1 algorithm, "scram-sha-256" for SCRAM authentication with SHA-256 algorithm, "scram-sha-512" for SCRAM authentication with SHA-512 algorithm, "ecdsa-nist256p-challenge" for key-based challenge authentication, "external" for authentication using client side SSL cert, "dh-blowfish" for blowfish crypted password (insecure, not recommended), "dh-aes" for AES crypted password (insecure, not recommended)]
** typ: liczba
** wartości: plain, ecdsa-nist256p-challenge, external, dh-blowfish, dh-aes
** wartości: plain, scram-sha-1, scram-sha-256, scram-sha-512, ecdsa-nist256p-challenge, external, dh-blowfish, dh-aes
** domyślna wartość: `+plain+`
* [[option_irc.server_default.sasl_password]] *irc.server_default.sasl_password*

View File

@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-05-30 15:18+0200\n"
"POT-Creation-Date: 2021-06-01 20:39+0200\n"
"PO-Revision-Date: 2021-05-25 18:28+0200\n"
"Last-Translator: Ondřej Súkup <mimi.vx@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@ -8020,10 +8020,13 @@ msgstr ""
msgid ""
"mechanism for SASL authentication: \"plain\" for plain text password, "
"\"ecdsa-nist256p-challenge\" for key-based challenge authentication, "
"\"external\" for authentication using client side SSL cert, \"dh-blowfish\" "
"for blowfish crypted password (insecure, not recommended), \"dh-aes\" for "
"AES crypted password (insecure, not recommended)"
"\"scram-sha-1\" for SCRAM authentication with SHA-1 algorithm, \"scram-"
"sha-256\" for SCRAM authentication with SHA-256 algorithm, \"scram-sha-512\" "
"for SCRAM authentication with SHA-512 algorithm, \"ecdsa-nist256p-challenge"
"\" for key-based challenge authentication, \"external\" for authentication "
"using client side SSL cert, \"dh-blowfish\" for blowfish crypted password "
"(insecure, not recommended), \"dh-aes\" for AES crypted password (insecure, "
"not recommended)"
msgstr ""
#, fuzzy
@ -9094,12 +9097,12 @@ msgstr "%s%s%s%s vykopnul %s%s%s"
msgid "%s%s%s%s has unidentified"
msgstr "Limit pro zdroj \"%s\" byl nastaven na %s"
#, c-format
msgid ""
"%s%s: error building answer for SASL authentication, using mechanism \"%s\""
#, fuzzy, c-format
msgid "%s%s: SASL error: %s"
msgstr "%s%s: chyba: %s"
msgid "internal error"
msgstr ""
"%s%s: chyba vytváření odpovědi pro SASL autentizaci, použitý mechanismus \"%s"
"\""
#, fuzzy, c-format
msgid "%s%s: client capability, requesting: %s"
@ -9511,26 +9514,30 @@ msgstr ""
msgid "%s%s: server \"%s\" not found for redirect"
msgstr "%s%s: server \"%s\" pro přesměrování nenalezen"
#, fuzzy, c-format
msgid "%s%s: unable to read private key in file \"%s\""
msgstr "%s%s: nemohu číst lokální soubor"
#, fuzzy
msgid "unable to validate server signature"
msgstr "%s%s: nemohu přidat server"
#, fuzzy, c-format
msgid "%sgnutls: invalid private key file: error %d %s"
msgstr "%sgnutls: nevalidní certifikát \"%s\", chyba: %s"
#, fuzzy
msgid "memory error"
msgstr "chyba"
msgid "base64 decode error"
msgstr ""
msgid "base64 encode error"
msgstr ""
msgid "cryptography error"
msgstr ""
msgid "protocol error"
msgstr ""
#, c-format
msgid "%s%s: signing the challenge with ECC public key: %s"
msgstr ""
#, fuzzy, c-format
msgid "%sgnutls: unable to import the private key: error %d %s"
msgstr "%s%s: nemohu vytvořit rouru"
#, fuzzy, c-format
msgid "%sgnutls: unable to sign the hashed data: error %d %s"
msgstr "%s%s: nemohu vytvořit rouru"
#, c-format
msgid ""
"%sgnutls: version >= 3.0.21 is required for SASL \"ecdsa-nist256p-challenge\""
@ -13143,5 +13150,29 @@ msgstr "%s%s: vypršel časový limit \"%s\" pro %s"
msgid "%s%s: unable to connect: unexpected error (%d)"
msgstr "%s%s: nemohu se připojit\" neočekávaná chyba (%d)"
#, c-format
#~ msgid ""
#~ "%s%s: error building answer for SASL authentication, using mechanism \"%s"
#~ "\""
#~ msgstr ""
#~ "%s%s: chyba vytváření odpovědi pro SASL autentizaci, použitý mechanismus "
#~ "\"%s\""
#, fuzzy, c-format
#~ msgid "%s%s: unable to read private key in file \"%s\""
#~ msgstr "%s%s: nemohu číst lokální soubor"
#, fuzzy, c-format
#~ msgid "%sgnutls: invalid private key file: error %d %s"
#~ msgstr "%sgnutls: nevalidní certifikát \"%s\", chyba: %s"
#, fuzzy, c-format
#~ msgid "%sgnutls: unable to import the private key: error %d %s"
#~ msgstr "%s%s: nemohu vytvořit rouru"
#, fuzzy, c-format
#~ msgid "%sgnutls: unable to sign the hashed data: error %d %s"
#~ msgstr "%s%s: nemohu vytvořit rouru"
#~ msgid "bar size in chars (0 = auto size)"
#~ msgstr "velikost pole ve znacích (0 = automatická velikost)"

View File

@ -24,7 +24,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-05-30 15:18+0200\n"
"POT-Creation-Date: 2021-06-01 20:39+0200\n"
"PO-Revision-Date: 2021-05-30 19:02+0200\n"
"Last-Translator: Nils Görs <weechatter@arcor.de>\n"
"Language-Team: German <kde-i18n-de@kde.org>\n"
@ -9874,12 +9874,16 @@ msgstr ""
"(siehe /help cap um eine Liste von Fähigkeiten zu erhalten die von WeeChat "
"unterstützt werden) (Beispiel: \"away-notify,multi-prefix\")"
#, fuzzy
msgid ""
"mechanism for SASL authentication: \"plain\" for plain text password, "
"\"ecdsa-nist256p-challenge\" for key-based challenge authentication, "
"\"external\" for authentication using client side SSL cert, \"dh-blowfish\" "
"for blowfish crypted password (insecure, not recommended), \"dh-aes\" for "
"AES crypted password (insecure, not recommended)"
"\"scram-sha-1\" for SCRAM authentication with SHA-1 algorithm, \"scram-"
"sha-256\" for SCRAM authentication with SHA-256 algorithm, \"scram-sha-512\" "
"for SCRAM authentication with SHA-512 algorithm, \"ecdsa-nist256p-challenge"
"\" for key-based challenge authentication, \"external\" for authentication "
"using client side SSL cert, \"dh-blowfish\" for blowfish crypted password "
"(insecure, not recommended), \"dh-aes\" for AES crypted password (insecure, "
"not recommended)"
msgstr ""
"Verfahren welches bei einer SASL Authentifizierung angewandt werden soll: "
"\"plain\" Passwort wird im Klartext gesendet, \"ecdsa-nist256p-challenge\" "
@ -11166,12 +11170,12 @@ msgstr "%s%s%s%s wurde identifiziert als %s"
msgid "%s%s%s%s has unidentified"
msgstr "%s%s%s%s hat sich nicht identifiziert"
#, c-format
msgid ""
"%s%s: error building answer for SASL authentication, using mechanism \"%s\""
#, fuzzy, c-format
msgid "%s%s: SASL error: %s"
msgstr "%s%s: Fehler: %s"
msgid "internal error"
msgstr ""
"%s%s: Fehler beim Erstellen der Antwort für die SASL-Authentifizierung. \"%s"
"\" Mechanismus wurde verwendet"
#, c-format
msgid "%s%s: client capability, requesting: %s"
@ -11587,28 +11591,30 @@ msgstr ""
msgid "%s%s: server \"%s\" not found for redirect"
msgstr "%s%s: Server \"%s\" für eine Weiterleitung wurde nicht gefunden"
#, c-format
msgid "%s%s: unable to read private key in file \"%s\""
msgstr "%s%s: privater Schlüssel kann nicht aus Datei gelesen werden \"%s\""
#, fuzzy
msgid "unable to validate server signature"
msgstr "%s%s: Server kann nicht anlegt werden"
#, c-format
msgid "%sgnutls: invalid private key file: error %d %s"
msgstr "%sgnutls: ungültige private Schlüsseldatei: Fehler %d %s"
#, fuzzy
msgid "memory error"
msgstr "Fork-Fehler"
msgid "base64 decode error"
msgstr ""
msgid "base64 encode error"
msgstr ""
msgid "cryptography error"
msgstr ""
msgid "protocol error"
msgstr ""
#, c-format
msgid "%s%s: signing the challenge with ECC public key: %s"
msgstr "%s%s: signiere mittels ECC öffentlichem Schlüssel: %s"
#, c-format
msgid "%sgnutls: unable to import the private key: error %d %s"
msgstr ""
"%sgnutls: privater Schlüssel kann nicht importiert werden: Fehler %d %s"
#, c-format
msgid "%sgnutls: unable to sign the hashed data: error %d %s"
msgstr ""
"%sgnutls: die gehashten Daten können nicht signiert werden : Fehler %d %s"
#, c-format
msgid ""
"%sgnutls: version >= 3.0.21 is required for SASL \"ecdsa-nist256p-challenge\""
@ -15684,5 +15690,31 @@ msgid "%s%s: unable to connect: unexpected error (%d)"
msgstr ""
"%s%s: Verbindung konnte nicht hergestellt werden: unerwarteter Fehler (%d)"
#, c-format
#~ msgid ""
#~ "%s%s: error building answer for SASL authentication, using mechanism \"%s"
#~ "\""
#~ msgstr ""
#~ "%s%s: Fehler beim Erstellen der Antwort für die SASL-Authentifizierung. "
#~ "\"%s\" Mechanismus wurde verwendet"
#, c-format
#~ msgid "%s%s: unable to read private key in file \"%s\""
#~ msgstr "%s%s: privater Schlüssel kann nicht aus Datei gelesen werden \"%s\""
#, c-format
#~ msgid "%sgnutls: invalid private key file: error %d %s"
#~ msgstr "%sgnutls: ungültige private Schlüsseldatei: Fehler %d %s"
#, c-format
#~ msgid "%sgnutls: unable to import the private key: error %d %s"
#~ msgstr ""
#~ "%sgnutls: privater Schlüssel kann nicht importiert werden: Fehler %d %s"
#, c-format
#~ msgid "%sgnutls: unable to sign the hashed data: error %d %s"
#~ msgstr ""
#~ "%sgnutls: die gehashten Daten können nicht signiert werden : Fehler %d %s"
#~ msgid "bar size in chars (0 = auto size)"
#~ msgstr "Größe der Infobar, in Zeichen (0 = automatische Anpassung)"

View File

@ -22,7 +22,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-05-30 15:18+0200\n"
"POT-Creation-Date: 2021-06-01 20:39+0200\n"
"PO-Revision-Date: 2021-05-25 18:28+0200\n"
"Last-Translator: Elián Hanisch <lambdae2@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@ -8259,10 +8259,13 @@ msgstr ""
#, fuzzy
msgid ""
"mechanism for SASL authentication: \"plain\" for plain text password, "
"\"ecdsa-nist256p-challenge\" for key-based challenge authentication, "
"\"external\" for authentication using client side SSL cert, \"dh-blowfish\" "
"for blowfish crypted password (insecure, not recommended), \"dh-aes\" for "
"AES crypted password (insecure, not recommended)"
"\"scram-sha-1\" for SCRAM authentication with SHA-1 algorithm, \"scram-"
"sha-256\" for SCRAM authentication with SHA-256 algorithm, \"scram-sha-512\" "
"for SCRAM authentication with SHA-512 algorithm, \"ecdsa-nist256p-challenge"
"\" for key-based challenge authentication, \"external\" for authentication "
"using client side SSL cert, \"dh-blowfish\" for blowfish crypted password "
"(insecure, not recommended), \"dh-aes\" for AES crypted password (insecure, "
"not recommended)"
msgstr ""
"mecanismo de autenticación SASL: \"plain\" para contraseñas en texto plano, "
"\"dh-blowfish\" para contraseña encriptada, \"external\" para autentificar "
@ -9397,12 +9400,12 @@ msgstr "%s%s%s%s ha expulsado %s%s%s"
msgid "%s%s%s%s has unidentified"
msgstr "%s: servidor %s%s%s borrado"
#, c-format
msgid ""
"%s%s: error building answer for SASL authentication, using mechanism \"%s\""
#, fuzzy, c-format
msgid "%s%s: SASL error: %s"
msgstr "%s%s: error: %s"
msgid "internal error"
msgstr ""
"%s%s: error al construir la respuesta para la autenticación SASL, usando el "
"mecanismo \"%s\""
#, c-format
msgid "%s%s: client capability, requesting: %s"
@ -9809,26 +9812,30 @@ msgstr ""
msgid "%s%s: server \"%s\" not found for redirect"
msgstr "%s%s: servidor \"%s\" no encontrado para la redirección"
#, fuzzy, c-format
msgid "%s%s: unable to read private key in file \"%s\""
msgstr "%s%s: no es posible leer el archivo \"%s\""
#, fuzzy
msgid "unable to validate server signature"
msgstr "%s%s: no es posible crear el servidor"
#, fuzzy, c-format
msgid "%sgnutls: invalid private key file: error %d %s"
msgstr "%sgnutls: certificado \"%s\" inválido, error: %s"
#, fuzzy
msgid "memory error"
msgstr "error"
msgid "base64 decode error"
msgstr ""
msgid "base64 encode error"
msgstr ""
msgid "cryptography error"
msgstr ""
msgid "protocol error"
msgstr ""
#, c-format
msgid "%s%s: signing the challenge with ECC public key: %s"
msgstr ""
#, fuzzy, c-format
msgid "%sgnutls: unable to import the private key: error %d %s"
msgstr "%s%s: no es posible crear la tubería"
#, fuzzy, c-format
msgid "%sgnutls: unable to sign the hashed data: error %d %s"
msgstr "%s%s: no es posible crear la tubería"
#, c-format
msgid ""
"%sgnutls: version >= 3.0.21 is required for SASL \"ecdsa-nist256p-challenge\""
@ -13403,5 +13410,29 @@ msgstr "%s%s: tiempo de espera máximo para \"%s\" con %s"
msgid "%s%s: unable to connect: unexpected error (%d)"
msgstr "%s%s: no es posible conectarse al transmisor"
#, c-format
#~ msgid ""
#~ "%s%s: error building answer for SASL authentication, using mechanism \"%s"
#~ "\""
#~ msgstr ""
#~ "%s%s: error al construir la respuesta para la autenticación SASL, usando "
#~ "el mecanismo \"%s\""
#, fuzzy, c-format
#~ msgid "%s%s: unable to read private key in file \"%s\""
#~ msgstr "%s%s: no es posible leer el archivo \"%s\""
#, fuzzy, c-format
#~ msgid "%sgnutls: invalid private key file: error %d %s"
#~ msgstr "%sgnutls: certificado \"%s\" inválido, error: %s"
#, fuzzy, c-format
#~ msgid "%sgnutls: unable to import the private key: error %d %s"
#~ msgstr "%s%s: no es posible crear la tubería"
#, fuzzy, c-format
#~ msgid "%sgnutls: unable to sign the hashed data: error %d %s"
#~ msgstr "%s%s: no es posible crear la tubería"
#~ msgid "bar size in chars (0 = auto size)"
#~ msgstr "tamaño de la barra en caracteres (0 = tamaño automático)"

View File

@ -21,8 +21,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-05-30 15:18+0200\n"
"PO-Revision-Date: 2021-05-30 15:19+0200\n"
"POT-Creation-Date: 2021-06-01 20:39+0200\n"
"PO-Revision-Date: 2021-06-01 20:42+0200\n"
"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: fr\n"
@ -9697,17 +9697,23 @@ msgstr ""
msgid ""
"mechanism for SASL authentication: \"plain\" for plain text password, "
"\"ecdsa-nist256p-challenge\" for key-based challenge authentication, "
"\"external\" for authentication using client side SSL cert, \"dh-blowfish\" "
"for blowfish crypted password (insecure, not recommended), \"dh-aes\" for "
"AES crypted password (insecure, not recommended)"
"\"scram-sha-1\" for SCRAM authentication with SHA-1 algorithm, \"scram-"
"sha-256\" for SCRAM authentication with SHA-256 algorithm, \"scram-sha-512\" "
"for SCRAM authentication with SHA-512 algorithm, \"ecdsa-nist256p-challenge"
"\" for key-based challenge authentication, \"external\" for authentication "
"using client side SSL cert, \"dh-blowfish\" for blowfish crypted password "
"(insecure, not recommended), \"dh-aes\" for AES crypted password (insecure, "
"not recommended)"
msgstr ""
"mécanisme pour l'authentification SASL : \"plain\" pour un mot de passe en "
"clair, \"ecdsa-nist256p-challenge\" pour une authentification par challenge "
"avec clé, \"external\" pour une authentification en utilisant un certificat "
"SSL côté client, \"dh-blowfish\" pour un mot de passe chiffré avec blowfish "
"(non sûr, non recommandé), \"dh-aes\" pour un mot de passe chiffré avec AES "
"(non sûr, non recommandé)"
"clair, \"scram-sha-1\" pour une authentification SCRAM avec algorithme "
"SHA-1, \"scram-sha-256\" pour une authentification SCRAM avec algorithme "
"SHA-256, \"scram-sha-512\" pour une authentification SCRAM avec algorithme "
"SHA-512, \"ecdsa-nist256p-challenge\" pour une authentification par "
"challenge avec clé, \"external\" pour une authentification en utilisant un "
"certificat SSL côté client, \"dh-blowfish\" pour un mot de passe chiffré "
"avec blowfish (non sûr, non recommandé), \"dh-aes\" pour un mot de passe "
"chiffré avec AES (non sûr, non recommandé)"
msgid ""
"username for SASL authentication; this option is not used for mechanism "
@ -10930,11 +10936,11 @@ msgid "%s%s%s%s has unidentified"
msgstr "%s%s%s%s n'est plus identifié"
#, c-format
msgid ""
"%s%s: error building answer for SASL authentication, using mechanism \"%s\""
msgstr ""
"%s%s : erreur de construction de la réponse pour l'authentification SASL, en "
"utilisant le mécanisme \"%s\""
msgid "%s%s: SASL error: %s"
msgstr "%s%s : erreur SASL : %s"
msgid "internal error"
msgstr "erreur interne"
#, c-format
msgid "%s%s: client capability, requesting: %s"
@ -11342,26 +11348,28 @@ msgstr ""
msgid "%s%s: server \"%s\" not found for redirect"
msgstr "%s%s : serveur \"%s\" non trouvé pour la redirection"
#, c-format
msgid "%s%s: unable to read private key in file \"%s\""
msgstr "%s%s : impossible de lire la clé privée dans le fichier \"%s\""
msgid "unable to validate server signature"
msgstr "impossible de vérifier la signature du serveur"
#, c-format
msgid "%sgnutls: invalid private key file: error %d %s"
msgstr "%sgnutls : fichier de clé privée invalide : erreur %d %s"
msgid "memory error"
msgstr "erreur de mémoire"
msgid "base64 decode error"
msgstr "erreur de décodage base64"
msgid "base64 encode error"
msgstr "erreur d'encodage base64"
msgid "cryptography error"
msgstr "erreur de cryptographie"
msgid "protocol error"
msgstr "erreur de protocole"
#, c-format
msgid "%s%s: signing the challenge with ECC public key: %s"
msgstr "%s%s : signature du challenge avec la clé publique ECC : %s"
#, c-format
msgid "%sgnutls: unable to import the private key: error %d %s"
msgstr "%sgnutls : impossible d'importer la clé privée : erreur %d %s"
#, c-format
msgid "%sgnutls: unable to sign the hashed data: error %d %s"
msgstr "%sgnutls : impossible de signer les données hachées : erreur %d %s"
#, c-format
msgid ""
"%sgnutls: version >= 3.0.21 is required for SASL \"ecdsa-nist256p-challenge\""
@ -15378,5 +15386,29 @@ msgstr "%s%s : délai d'attente dépassé pour \"%s\" avec %s"
msgid "%s%s: unable to connect: unexpected error (%d)"
msgstr "%s%s : impossible de se connecter : erreur inattendue (%d)"
#, c-format
#~ msgid ""
#~ "%s%s: error building answer for SASL authentication, using mechanism \"%s"
#~ "\""
#~ msgstr ""
#~ "%s%s : erreur de construction de la réponse pour l'authentification SASL, "
#~ "en utilisant le mécanisme \"%s\""
#, c-format
#~ msgid "%s%s: unable to read private key in file \"%s\""
#~ msgstr "%s%s : impossible de lire la clé privée dans le fichier \"%s\""
#, c-format
#~ msgid "%sgnutls: invalid private key file: error %d %s"
#~ msgstr "%sgnutls : fichier de clé privée invalide : erreur %d %s"
#, c-format
#~ msgid "%sgnutls: unable to import the private key: error %d %s"
#~ msgstr "%sgnutls : impossible d'importer la clé privée : erreur %d %s"
#, c-format
#~ msgid "%sgnutls: unable to sign the hashed data: error %d %s"
#~ msgstr "%sgnutls : impossible de signer les données hachées : erreur %d %s"
#~ msgid "bar size in chars (0 = auto size)"
#~ msgstr "taille de la barre en caractères (0 = taille automatique)"

View File

@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-05-30 15:18+0200\n"
"POT-Creation-Date: 2021-06-01 20:39+0200\n"
"PO-Revision-Date: 2021-05-25 18:28+0200\n"
"Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@ -7625,10 +7625,13 @@ msgstr ""
msgid ""
"mechanism for SASL authentication: \"plain\" for plain text password, "
"\"ecdsa-nist256p-challenge\" for key-based challenge authentication, "
"\"external\" for authentication using client side SSL cert, \"dh-blowfish\" "
"for blowfish crypted password (insecure, not recommended), \"dh-aes\" for "
"AES crypted password (insecure, not recommended)"
"\"scram-sha-1\" for SCRAM authentication with SHA-1 algorithm, \"scram-"
"sha-256\" for SCRAM authentication with SHA-256 algorithm, \"scram-sha-512\" "
"for SCRAM authentication with SHA-512 algorithm, \"ecdsa-nist256p-challenge"
"\" for key-based challenge authentication, \"external\" for authentication "
"using client side SSL cert, \"dh-blowfish\" for blowfish crypted password "
"(insecure, not recommended), \"dh-aes\" for AES crypted password (insecure, "
"not recommended)"
msgstr ""
#, fuzzy
@ -8667,9 +8670,11 @@ msgstr "%s%s%s kirúgta %s%s%s-t a(z) %s%s szobából"
msgid "%s%s%s%s has unidentified"
msgstr "A %s%s%s szerver törölve\n"
#, c-format
msgid ""
"%s%s: error building answer for SASL authentication, using mechanism \"%s\""
#, fuzzy, c-format
msgid "%s%s: SASL error: %s"
msgstr "%sSzerver: %s%s\n"
msgid "internal error"
msgstr ""
#, fuzzy, c-format
@ -9068,26 +9073,30 @@ msgstr ""
msgid "%s%s: server \"%s\" not found for redirect"
msgstr "%s a \"%s\" szerver nem található\n"
#, fuzzy, c-format
msgid "%s%s: unable to read private key in file \"%s\""
msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
#, fuzzy
msgid "unable to validate server signature"
msgstr "%s nem sikerült a szervert létrehozni\n"
#, fuzzy, c-format
msgid "%sgnutls: invalid private key file: error %d %s"
msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
#, fuzzy
msgid "memory error"
msgstr "%sSzerver: %s%s\n"
msgid "base64 decode error"
msgstr ""
msgid "base64 encode error"
msgstr ""
msgid "cryptography error"
msgstr ""
msgid "protocol error"
msgstr ""
#, c-format
msgid "%s%s: signing the challenge with ECC public key: %s"
msgstr ""
#, fuzzy, c-format
msgid "%sgnutls: unable to import the private key: error %d %s"
msgstr "%s DCC: nem sikerült a csövet létrehozni\n"
#, fuzzy, c-format
msgid "%sgnutls: unable to sign the hashed data: error %d %s"
msgstr "%s DCC: nem sikerült a csövet létrehozni\n"
#, c-format
msgid ""
"%sgnutls: version >= 3.0.21 is required for SASL \"ecdsa-nist256p-challenge\""
@ -12572,3 +12581,19 @@ msgstr "%s hiányzó argumentum a(z) \"%s\" opciónak\n"
#, fuzzy, c-format
msgid "%s%s: unable to connect: unexpected error (%d)"
msgstr "%s DCC: nem sikerült kapcsolódni a küldőhöz\n"
#, fuzzy, c-format
#~ msgid "%s%s: unable to read private key in file \"%s\""
#~ msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
#, fuzzy, c-format
#~ msgid "%sgnutls: invalid private key file: error %d %s"
#~ msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
#, fuzzy, c-format
#~ msgid "%sgnutls: unable to import the private key: error %d %s"
#~ msgstr "%s DCC: nem sikerült a csövet létrehozni\n"
#, fuzzy, c-format
#~ msgid "%sgnutls: unable to sign the hashed data: error %d %s"
#~ msgstr "%s DCC: nem sikerült a csövet létrehozni\n"

View File

@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-05-30 15:18+0200\n"
"POT-Creation-Date: 2021-06-01 20:39+0200\n"
"PO-Revision-Date: 2021-05-25 18:28+0200\n"
"Last-Translator: Esteban I. Ruiz Moreno <exio4.com@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@ -8401,10 +8401,13 @@ msgstr ""
#, fuzzy
msgid ""
"mechanism for SASL authentication: \"plain\" for plain text password, "
"\"ecdsa-nist256p-challenge\" for key-based challenge authentication, "
"\"external\" for authentication using client side SSL cert, \"dh-blowfish\" "
"for blowfish crypted password (insecure, not recommended), \"dh-aes\" for "
"AES crypted password (insecure, not recommended)"
"\"scram-sha-1\" for SCRAM authentication with SHA-1 algorithm, \"scram-"
"sha-256\" for SCRAM authentication with SHA-256 algorithm, \"scram-sha-512\" "
"for SCRAM authentication with SHA-512 algorithm, \"ecdsa-nist256p-challenge"
"\" for key-based challenge authentication, \"external\" for authentication "
"using client side SSL cert, \"dh-blowfish\" for blowfish crypted password "
"(insecure, not recommended), \"dh-aes\" for AES crypted password (insecure, "
"not recommended)"
msgstr ""
"meccanismo per l'autenticazione SASL: \"plain\" per le password in chiaro, "
"\"dh-blowfish\" per le password cifrate in blowfish, \"dh-aes\" per le "
@ -9558,12 +9561,12 @@ msgstr "%s%s%s%s ha cacciato %s%s%s"
msgid "%s%s%s%s has unidentified"
msgstr "%s: Il server %s%s%s è stato eliminato"
#, c-format
msgid ""
"%s%s: error building answer for SASL authentication, using mechanism \"%s\""
#, fuzzy, c-format
msgid "%s%s: SASL error: %s"
msgstr "%s%s: errore: %s"
msgid "internal error"
msgstr ""
"%s%s: errore nella costruzione della risposta per l'autenticazione SASL, "
"usando il meccanismo \"%s\""
#, c-format
msgid "%s%s: client capability, requesting: %s"
@ -9969,26 +9972,30 @@ msgstr ""
msgid "%s%s: server \"%s\" not found for redirect"
msgstr "%s%s: server \"%s\" non trovato per la redirezione"
#, fuzzy, c-format
msgid "%s%s: unable to read private key in file \"%s\""
msgstr "%s%s: impossibile leggere il file \"%s\""
#, fuzzy
msgid "unable to validate server signature"
msgstr "%s%s: impossibile creare il server"
#, fuzzy, c-format
msgid "%sgnutls: invalid private key file: error %d %s"
msgstr "%sgnutls: certificato \"%s\" non valido, errore: %s"
#, fuzzy
msgid "memory error"
msgstr "errore"
msgid "base64 decode error"
msgstr ""
msgid "base64 encode error"
msgstr ""
msgid "cryptography error"
msgstr ""
msgid "protocol error"
msgstr ""
#, c-format
msgid "%s%s: signing the challenge with ECC public key: %s"
msgstr ""
#, fuzzy, c-format
msgid "%sgnutls: unable to import the private key: error %d %s"
msgstr "%s%s: impossibile creare la pipe: errore %d %s"
#, fuzzy, c-format
msgid "%sgnutls: unable to sign the hashed data: error %d %s"
msgstr "%s%s: impossibile creare la pipe: errore %d %s"
#, c-format
msgid ""
"%sgnutls: version >= 3.0.21 is required for SASL \"ecdsa-nist256p-challenge\""
@ -13586,5 +13593,29 @@ msgstr "%s%s: timeout per \"%s\" con %s"
msgid "%s%s: unable to connect: unexpected error (%d)"
msgstr "%s%s: impossibile connettersi al mittente"
#, c-format
#~ msgid ""
#~ "%s%s: error building answer for SASL authentication, using mechanism \"%s"
#~ "\""
#~ msgstr ""
#~ "%s%s: errore nella costruzione della risposta per l'autenticazione SASL, "
#~ "usando il meccanismo \"%s\""
#, fuzzy, c-format
#~ msgid "%s%s: unable to read private key in file \"%s\""
#~ msgstr "%s%s: impossibile leggere il file \"%s\""
#, fuzzy, c-format
#~ msgid "%sgnutls: invalid private key file: error %d %s"
#~ msgstr "%sgnutls: certificato \"%s\" non valido, errore: %s"
#, fuzzy, c-format
#~ msgid "%sgnutls: unable to import the private key: error %d %s"
#~ msgstr "%s%s: impossibile creare la pipe: errore %d %s"
#, fuzzy, c-format
#~ msgid "%sgnutls: unable to sign the hashed data: error %d %s"
#~ msgstr "%s%s: impossibile creare la pipe: errore %d %s"
#~ msgid "bar size in chars (0 = auto size)"
#~ msgstr "dimensione barra in caratteri (0 = dimensione automatica)"

View File

@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-05-30 15:18+0200\n"
"POT-Creation-Date: 2021-06-01 20:39+0200\n"
"PO-Revision-Date: 2021-05-25 18:28+0200\n"
"Last-Translator: AYANOKOUZI, Ryuunosuke <i38w7i3@yahoo.co.jp>\n"
"Language-Team: Japanese <https://github.com/l/weechat/tree/master/"
@ -9232,12 +9232,16 @@ msgstr ""
"ト (WeeChat がサポートする機能のリストは /help cap を参照してください) (例: "
"\"away-notify,multi-prefix\")"
#, fuzzy
msgid ""
"mechanism for SASL authentication: \"plain\" for plain text password, "
"\"ecdsa-nist256p-challenge\" for key-based challenge authentication, "
"\"external\" for authentication using client side SSL cert, \"dh-blowfish\" "
"for blowfish crypted password (insecure, not recommended), \"dh-aes\" for "
"AES crypted password (insecure, not recommended)"
"\"scram-sha-1\" for SCRAM authentication with SHA-1 algorithm, \"scram-"
"sha-256\" for SCRAM authentication with SHA-256 algorithm, \"scram-sha-512\" "
"for SCRAM authentication with SHA-512 algorithm, \"ecdsa-nist256p-challenge"
"\" for key-based challenge authentication, \"external\" for authentication "
"using client side SSL cert, \"dh-blowfish\" for blowfish crypted password "
"(insecure, not recommended), \"dh-aes\" for AES crypted password (insecure, "
"not recommended)"
msgstr ""
"SASL 認証メカニズム: \"plain\" は平文パスワード、\"ecdsa-nist256p-challenge"
"\" は鍵を使ったチャレンジ認証、\"external\" はクライアント側の SSL 証明書を利"
@ -10416,10 +10420,12 @@ msgstr "%s%s%s%s が %s%s%s をキック"
msgid "%s%s%s%s has unidentified"
msgstr "%s: サーバ %s%s%s を削除しました"
#, c-format
msgid ""
"%s%s: error building answer for SASL authentication, using mechanism \"%s\""
msgstr "%s%s: SASL 認証の応答を作成中にエラー、\"%s\" メカニズムを使用"
#, fuzzy, c-format
msgid "%s%s: SASL error: %s"
msgstr "%s%s: エラー: %s"
msgid "internal error"
msgstr ""
#, c-format
msgid "%s%s: client capability, requesting: %s"
@ -10831,26 +10837,30 @@ msgstr ""
msgid "%s%s: server \"%s\" not found for redirect"
msgstr "%s%s: リダイレクトサーバ \"%s\" が見つかりません"
#, c-format
msgid "%s%s: unable to read private key in file \"%s\""
msgstr "%s%s: ファイル \"%s\" の秘密鍵を読み込めません"
#, fuzzy
msgid "unable to validate server signature"
msgstr "%s%s: サーバの追加に失敗"
#, c-format
msgid "%sgnutls: invalid private key file: error %d %s"
msgstr "%sgnutls: 無効な秘密鍵ファイルです: エラー %d %s"
#, fuzzy
msgid "memory error"
msgstr "フォークエラー"
msgid "base64 decode error"
msgstr ""
msgid "base64 encode error"
msgstr ""
msgid "cryptography error"
msgstr ""
msgid "protocol error"
msgstr ""
#, c-format
msgid "%s%s: signing the challenge with ECC public key: %s"
msgstr "%s%s: ECC 公開鍵を使ってチャンレンジに署名しています: %s"
#, c-format
msgid "%sgnutls: unable to import the private key: error %d %s"
msgstr "%sgnutls: 秘密鍵をインポートできません: エラー %d %s"
#, c-format
msgid "%sgnutls: unable to sign the hashed data: error %d %s"
msgstr "%sgnutls: ハッシュ化されたデータを署名できません: エラー %d %s"
#, c-format
msgid ""
"%sgnutls: version >= 3.0.21 is required for SASL \"ecdsa-nist256p-challenge\""
@ -14659,5 +14669,27 @@ msgstr "%s%s: \"%s\" のタイムアウト %s"
msgid "%s%s: unable to connect: unexpected error (%d)"
msgstr "%s%s: 接続できません: 未定義のエラー (%d)"
#, c-format
#~ msgid ""
#~ "%s%s: error building answer for SASL authentication, using mechanism \"%s"
#~ "\""
#~ msgstr "%s%s: SASL 認証の応答を作成中にエラー、\"%s\" メカニズムを使用"
#, c-format
#~ msgid "%s%s: unable to read private key in file \"%s\""
#~ msgstr "%s%s: ファイル \"%s\" の秘密鍵を読み込めません"
#, c-format
#~ msgid "%sgnutls: invalid private key file: error %d %s"
#~ msgstr "%sgnutls: 無効な秘密鍵ファイルです: エラー %d %s"
#, c-format
#~ msgid "%sgnutls: unable to import the private key: error %d %s"
#~ msgstr "%sgnutls: 秘密鍵をインポートできません: エラー %d %s"
#, c-format
#~ msgid "%sgnutls: unable to sign the hashed data: error %d %s"
#~ msgstr "%sgnutls: ハッシュ化されたデータを署名できません: エラー %d %s"
#~ msgid "bar size in chars (0 = auto size)"
#~ msgstr "文字数単位のバーのサイズ (0 = 自動サイズ)"

View File

@ -22,7 +22,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-05-30 15:18+0200\n"
"POT-Creation-Date: 2021-06-01 20:39+0200\n"
"PO-Revision-Date: 2021-05-25 18:28+0200\n"
"Last-Translator: Krzysztof Korościk <soltys@soltys.info>\n"
"Language-Team: Polish <kde-i18n-doc@kde.org>\n"
@ -9473,12 +9473,16 @@ msgstr ""
"są dostępne (zobacz /help cap żeby poznać listę opcji wspieranych przez "
"WeeChat) (przykład: \"away-notify,multi-prefix\")"
#, fuzzy
msgid ""
"mechanism for SASL authentication: \"plain\" for plain text password, "
"\"ecdsa-nist256p-challenge\" for key-based challenge authentication, "
"\"external\" for authentication using client side SSL cert, \"dh-blowfish\" "
"for blowfish crypted password (insecure, not recommended), \"dh-aes\" for "
"AES crypted password (insecure, not recommended)"
"\"scram-sha-1\" for SCRAM authentication with SHA-1 algorithm, \"scram-"
"sha-256\" for SCRAM authentication with SHA-256 algorithm, \"scram-sha-512\" "
"for SCRAM authentication with SHA-512 algorithm, \"ecdsa-nist256p-challenge"
"\" for key-based challenge authentication, \"external\" for authentication "
"using client side SSL cert, \"dh-blowfish\" for blowfish crypted password "
"(insecure, not recommended), \"dh-aes\" for AES crypted password (insecure, "
"not recommended)"
msgstr ""
"mechanizm autentykacji SASL: \"plain\" dla hasła w czystym tekście, \"ecdsa-"
"nist256p-challenge\" uwierzytelnianie na podstawie pary kluczy, \"external\" "
@ -10685,12 +10689,12 @@ msgstr "%s%s%s%s zidentyfikował się jako %s"
msgid "%s%s%s%s has unidentified"
msgstr "%s%s%s%s został niezidentyfikowany"
#, c-format
msgid ""
"%s%s: error building answer for SASL authentication, using mechanism \"%s\""
#, fuzzy, c-format
msgid "%s%s: SASL error: %s"
msgstr "%s%s: błąd: %s"
msgid "internal error"
msgstr ""
"%s%s: błąd podczas tworzenia odpowiedzi dla uwierzytelniania SASL, używając "
"mechanizmu \"%s\""
#, c-format
msgid "%s%s: client capability, requesting: %s"
@ -11099,26 +11103,30 @@ msgstr ""
msgid "%s%s: server \"%s\" not found for redirect"
msgstr "%s%s: serwer \"%s\" nie został znaleziony dla przekierowania"
#, c-format
msgid "%s%s: unable to read private key in file \"%s\""
msgstr "%s%s: nie można odczytać klucza prywatnego z pliku \"%s\""
#, fuzzy
msgid "unable to validate server signature"
msgstr "%s%s: nie można dodać serwera"
#, c-format
msgid "%sgnutls: invalid private key file: error %d %s"
msgstr "%sgnutls: niepoprawny plik klucza prywatnego: błąd %d %s"
#, fuzzy
msgid "memory error"
msgstr "nie udało się utworzyć procesu"
msgid "base64 decode error"
msgstr ""
msgid "base64 encode error"
msgstr ""
msgid "cryptography error"
msgstr ""
msgid "protocol error"
msgstr ""
#, c-format
msgid "%s%s: signing the challenge with ECC public key: %s"
msgstr "%s%s: podpisuje wyzwanie za pomocą klucza publicnzego ECC: %s"
#, c-format
msgid "%sgnutls: unable to import the private key: error %d %s"
msgstr "%sgnutls: nie można zaimportować klucza prywatnego: błąd %d %s"
#, c-format
msgid "%sgnutls: unable to sign the hashed data: error %d %s"
msgstr "%sgnutls: nie można podpisać zakodowanych danych: błąd %d %s"
#, c-format
msgid ""
"%sgnutls: version >= 3.0.21 is required for SASL \"ecdsa-nist256p-challenge\""
@ -15035,5 +15043,29 @@ msgstr "%s%s: przekroczono czas na \"%s\" z %s"
msgid "%s%s: unable to connect: unexpected error (%d)"
msgstr "%s%s: nie można połączyć: niespodziewany błąd (%d)"
#, c-format
#~ msgid ""
#~ "%s%s: error building answer for SASL authentication, using mechanism \"%s"
#~ "\""
#~ msgstr ""
#~ "%s%s: błąd podczas tworzenia odpowiedzi dla uwierzytelniania SASL, "
#~ "używając mechanizmu \"%s\""
#, c-format
#~ msgid "%s%s: unable to read private key in file \"%s\""
#~ msgstr "%s%s: nie można odczytać klucza prywatnego z pliku \"%s\""
#, c-format
#~ msgid "%sgnutls: invalid private key file: error %d %s"
#~ msgstr "%sgnutls: niepoprawny plik klucza prywatnego: błąd %d %s"
#, c-format
#~ msgid "%sgnutls: unable to import the private key: error %d %s"
#~ msgstr "%sgnutls: nie można zaimportować klucza prywatnego: błąd %d %s"
#, c-format
#~ msgid "%sgnutls: unable to sign the hashed data: error %d %s"
#~ msgstr "%sgnutls: nie można podpisać zakodowanych danych: błąd %d %s"
#~ msgid "bar size in chars (0 = auto size)"
#~ msgstr "rozmiar paska w znakach (0 = automatyczny rozmiar)"

View File

@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-05-30 15:18+0200\n"
"POT-Creation-Date: 2021-06-01 20:39+0200\n"
"PO-Revision-Date: 2021-05-25 18:28+0200\n"
"Last-Translator: Vasco Almeida <vascomalmeida@sapo.pt>\n"
"Language-Team: Portuguese <>\n"
@ -9020,12 +9020,16 @@ msgstr ""
"servidor se estiverem disponíveis (ver /help cap para obter uma lista de "
"capacidades suportadas pelo WeeChat) (exemplo: \"away-notify,multi-prefix\")"
#, fuzzy
msgid ""
"mechanism for SASL authentication: \"plain\" for plain text password, "
"\"ecdsa-nist256p-challenge\" for key-based challenge authentication, "
"\"external\" for authentication using client side SSL cert, \"dh-blowfish\" "
"for blowfish crypted password (insecure, not recommended), \"dh-aes\" for "
"AES crypted password (insecure, not recommended)"
"\"scram-sha-1\" for SCRAM authentication with SHA-1 algorithm, \"scram-"
"sha-256\" for SCRAM authentication with SHA-256 algorithm, \"scram-sha-512\" "
"for SCRAM authentication with SHA-512 algorithm, \"ecdsa-nist256p-challenge"
"\" for key-based challenge authentication, \"external\" for authentication "
"using client side SSL cert, \"dh-blowfish\" for blowfish crypted password "
"(insecure, not recommended), \"dh-aes\" for AES crypted password (insecure, "
"not recommended)"
msgstr ""
"mecanismo de autenticação SASL: \"plain\" para palavra-passe em texto "
"simples, \"ecdsa-nist256p-challenge\" para autenticação por desafio com "
@ -10237,12 +10241,12 @@ msgstr "%s%s%s%s expulsou %s%s%s"
msgid "%s%s%s%s has unidentified"
msgstr "%s: o servidor %s%s%s foi eliminado"
#, c-format
msgid ""
"%s%s: error building answer for SASL authentication, using mechanism \"%s\""
#, fuzzy, c-format
msgid "%s%s: SASL error: %s"
msgstr "%s%s: erro: %s"
msgid "internal error"
msgstr ""
"%s%s: erro ao construir resposta para a autenticação SASL, usando o "
"mecanismo \"%s\""
#, c-format
msgid "%s%s: client capability, requesting: %s"
@ -10647,26 +10651,30 @@ msgstr ""
msgid "%s%s: server \"%s\" not found for redirect"
msgstr "%s%s: servidor \"%s\" não encontrado para redirecionar"
#, c-format
msgid "%s%s: unable to read private key in file \"%s\""
msgstr "%s%s: não foi possível ler a chave privada no ficheiro \"%s\""
#, fuzzy
msgid "unable to validate server signature"
msgstr "%s%s: não é possível adicionar servidor"
#, c-format
msgid "%sgnutls: invalid private key file: error %d %s"
msgstr "%sgnutls: ficheiro de chave privada inválido: erro %d %s"
#, fuzzy
msgid "memory error"
msgstr "erro"
msgid "base64 decode error"
msgstr ""
msgid "base64 encode error"
msgstr ""
msgid "cryptography error"
msgstr ""
msgid "protocol error"
msgstr ""
#, c-format
msgid "%s%s: signing the challenge with ECC public key: %s"
msgstr "%s%s: a assinar o desafio com a chave ECC pública: %s"
#, c-format
msgid "%sgnutls: unable to import the private key: error %d %s"
msgstr "%sgnutls: não foi possível importar a chave privada: erro %d %s"
#, c-format
msgid "%sgnutls: unable to sign the hashed data: error %d %s"
msgstr "%sgnutls: não foi possível assinar o resumo dos dados: erro %d %s"
#, c-format
msgid ""
"%sgnutls: version >= 3.0.21 is required for SASL \"ecdsa-nist256p-challenge\""
@ -14512,5 +14520,29 @@ msgstr "%s%s: tempo limite de \"%s\" com %s"
msgid "%s%s: unable to connect: unexpected error (%d)"
msgstr "%s%s: não foi possível conectar: erro inesperado (%d)"
#, c-format
#~ msgid ""
#~ "%s%s: error building answer for SASL authentication, using mechanism \"%s"
#~ "\""
#~ msgstr ""
#~ "%s%s: erro ao construir resposta para a autenticação SASL, usando o "
#~ "mecanismo \"%s\""
#, c-format
#~ msgid "%s%s: unable to read private key in file \"%s\""
#~ msgstr "%s%s: não foi possível ler a chave privada no ficheiro \"%s\""
#, c-format
#~ msgid "%sgnutls: invalid private key file: error %d %s"
#~ msgstr "%sgnutls: ficheiro de chave privada inválido: erro %d %s"
#, c-format
#~ msgid "%sgnutls: unable to import the private key: error %d %s"
#~ msgstr "%sgnutls: não foi possível importar a chave privada: erro %d %s"
#, c-format
#~ msgid "%sgnutls: unable to sign the hashed data: error %d %s"
#~ msgstr "%sgnutls: não foi possível assinar o resumo dos dados: erro %d %s"
#~ msgid "bar size in chars (0 = auto size)"
#~ msgstr "tamanho da barra em carateres (0 = tamanho automático)"

View File

@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-05-30 15:18+0200\n"
"POT-Creation-Date: 2021-06-01 20:39+0200\n"
"PO-Revision-Date: 2021-05-25 18:28+0200\n"
"Last-Translator: Érico Nogueira <ericonr@disroot.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@ -8067,10 +8067,13 @@ msgstr ""
msgid ""
"mechanism for SASL authentication: \"plain\" for plain text password, "
"\"ecdsa-nist256p-challenge\" for key-based challenge authentication, "
"\"external\" for authentication using client side SSL cert, \"dh-blowfish\" "
"for blowfish crypted password (insecure, not recommended), \"dh-aes\" for "
"AES crypted password (insecure, not recommended)"
"\"scram-sha-1\" for SCRAM authentication with SHA-1 algorithm, \"scram-"
"sha-256\" for SCRAM authentication with SHA-256 algorithm, \"scram-sha-512\" "
"for SCRAM authentication with SHA-512 algorithm, \"ecdsa-nist256p-challenge"
"\" for key-based challenge authentication, \"external\" for authentication "
"using client side SSL cert, \"dh-blowfish\" for blowfish crypted password "
"(insecure, not recommended), \"dh-aes\" for AES crypted password (insecure, "
"not recommended)"
msgstr ""
#, fuzzy
@ -9099,12 +9102,12 @@ msgstr "%s%s%s%s se identificou como %s"
msgid "%s%s%s%s has unidentified"
msgstr "%s%s%s%s removeu sua identificação"
#, c-format
msgid ""
"%s%s: error building answer for SASL authentication, using mechanism \"%s\""
#, fuzzy, c-format
msgid "%s%s: SASL error: %s"
msgstr "%s%s: erro: %s"
msgid "internal error"
msgstr ""
"%s%s: erro ao construir resposta para autenticação SASL, utilizando "
"mecanismo \"%s\""
#, c-format
msgid "%s%s: client capability, requesting: %s"
@ -9505,26 +9508,30 @@ msgstr ""
msgid "%s%s: server \"%s\" not found for redirect"
msgstr "%s%s: servidor \"%s\" não encontrado para redirecionamento"
#, c-format
msgid "%s%s: unable to read private key in file \"%s\""
msgstr "%s%s: não foi possível ler a chave privada no arquivo \"%s\""
#, fuzzy
msgid "unable to validate server signature"
msgstr "%s%s: não foi possível redirecionar saída de erro (stderr)"
#, c-format
msgid "%sgnutls: invalid private key file: error %d %s"
msgstr "%sgnutls: arquivo de chave privada inválido: erro %d %s"
#, fuzzy
msgid "memory error"
msgstr "%s%s: erro: %s"
msgid "base64 decode error"
msgstr ""
msgid "base64 encode error"
msgstr ""
msgid "cryptography error"
msgstr ""
msgid "protocol error"
msgstr ""
#, c-format
msgid "%s%s: signing the challenge with ECC public key: %s"
msgstr ""
#, fuzzy, c-format
msgid "%sgnutls: unable to import the private key: error %d %s"
msgstr "%s%s: não foi possível criar pipe"
#, fuzzy, c-format
msgid "%sgnutls: unable to sign the hashed data: error %d %s"
msgstr "%s%s: não foi possível criar pipe"
#, c-format
msgid ""
"%sgnutls: version >= 3.0.21 is required for SASL \"ecdsa-nist256p-challenge\""
@ -13055,5 +13062,29 @@ msgstr "%s%s: tempo esgotado para \"%s\" com %s"
msgid "%s%s: unable to connect: unexpected error (%d)"
msgstr "%s%s: não foi possível conectar ao remetente"
#, c-format
#~ msgid ""
#~ "%s%s: error building answer for SASL authentication, using mechanism \"%s"
#~ "\""
#~ msgstr ""
#~ "%s%s: erro ao construir resposta para autenticação SASL, utilizando "
#~ "mecanismo \"%s\""
#, c-format
#~ msgid "%s%s: unable to read private key in file \"%s\""
#~ msgstr "%s%s: não foi possível ler a chave privada no arquivo \"%s\""
#, c-format
#~ msgid "%sgnutls: invalid private key file: error %d %s"
#~ msgstr "%sgnutls: arquivo de chave privada inválido: erro %d %s"
#, fuzzy, c-format
#~ msgid "%sgnutls: unable to import the private key: error %d %s"
#~ msgstr "%s%s: não foi possível criar pipe"
#, fuzzy, c-format
#~ msgid "%sgnutls: unable to sign the hashed data: error %d %s"
#~ msgstr "%s%s: não foi possível criar pipe"
#~ msgid "bar size in chars (0 = auto size)"
#~ msgstr "tamanho da barra em caracteres (0 = tamanho automático)"

View File

@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-05-30 15:18+0200\n"
"POT-Creation-Date: 2021-06-01 20:39+0200\n"
"PO-Revision-Date: 2021-05-25 18:28+0200\n"
"Last-Translator: Aleksey V Zapparov AKA ixti <ixti@member.fsf.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@ -7655,10 +7655,13 @@ msgstr ""
msgid ""
"mechanism for SASL authentication: \"plain\" for plain text password, "
"\"ecdsa-nist256p-challenge\" for key-based challenge authentication, "
"\"external\" for authentication using client side SSL cert, \"dh-blowfish\" "
"for blowfish crypted password (insecure, not recommended), \"dh-aes\" for "
"AES crypted password (insecure, not recommended)"
"\"scram-sha-1\" for SCRAM authentication with SHA-1 algorithm, \"scram-"
"sha-256\" for SCRAM authentication with SHA-256 algorithm, \"scram-sha-512\" "
"for SCRAM authentication with SHA-512 algorithm, \"ecdsa-nist256p-challenge"
"\" for key-based challenge authentication, \"external\" for authentication "
"using client side SSL cert, \"dh-blowfish\" for blowfish crypted password "
"(insecure, not recommended), \"dh-aes\" for AES crypted password (insecure, "
"not recommended)"
msgstr ""
#, fuzzy
@ -8704,9 +8707,11 @@ msgstr "%s%s%s выкинул %s%s%s с канала %s%s"
msgid "%s%s%s%s has unidentified"
msgstr "Сервер %s%s%s удалён\n"
#, c-format
msgid ""
"%s%s: error building answer for SASL authentication, using mechanism \"%s\""
#, fuzzy, c-format
msgid "%s%s: SASL error: %s"
msgstr "%sСервер: %s%s\n"
msgid "internal error"
msgstr ""
#, fuzzy, c-format
@ -9110,26 +9115,30 @@ msgstr ""
msgid "%s%s: server \"%s\" not found for redirect"
msgstr "%s сервер \"%s\" не найден\n"
#, fuzzy, c-format
msgid "%s%s: unable to read private key in file \"%s\""
msgstr "Не могу записать лог-файл \"%s\"\n"
#, fuzzy
msgid "unable to validate server signature"
msgstr "%s не могу создать сервер\n"
#, fuzzy, c-format
msgid "%sgnutls: invalid private key file: error %d %s"
msgstr "Не могу записать лог-файл \"%s\"\n"
#, fuzzy
msgid "memory error"
msgstr "%sСервер: %s%s\n"
msgid "base64 decode error"
msgstr ""
msgid "base64 encode error"
msgstr ""
msgid "cryptography error"
msgstr ""
msgid "protocol error"
msgstr ""
#, c-format
msgid "%s%s: signing the challenge with ECC public key: %s"
msgstr ""
#, fuzzy, c-format
msgid "%sgnutls: unable to import the private key: error %d %s"
msgstr "%s DCC: не могу создать pipe\n"
#, fuzzy, c-format
msgid "%sgnutls: unable to sign the hashed data: error %d %s"
msgstr "%s DCC: не могу создать pipe\n"
#, c-format
msgid ""
"%sgnutls: version >= 3.0.21 is required for SASL \"ecdsa-nist256p-challenge\""
@ -12606,3 +12615,19 @@ msgstr "%s нет аргумента для параметра \"%s\"\n"
#, fuzzy, c-format
msgid "%s%s: unable to connect: unexpected error (%d)"
msgstr "%s DCC: не могу соединиться с отправителем\n"
#, fuzzy, c-format
#~ msgid "%s%s: unable to read private key in file \"%s\""
#~ msgstr "Не могу записать лог-файл \"%s\"\n"
#, fuzzy, c-format
#~ msgid "%sgnutls: invalid private key file: error %d %s"
#~ msgstr "Не могу записать лог-файл \"%s\"\n"
#, fuzzy, c-format
#~ msgid "%sgnutls: unable to import the private key: error %d %s"
#~ msgstr "%s DCC: не могу создать pipe\n"
#, fuzzy, c-format
#~ msgid "%sgnutls: unable to sign the hashed data: error %d %s"
#~ msgstr "%s DCC: не могу создать pipe\n"

View File

@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-05-30 15:18+0200\n"
"POT-Creation-Date: 2021-06-01 20:39+0200\n"
"PO-Revision-Date: 2021-05-25 18:28+0200\n"
"Last-Translator: Emir SARI <bitigchi@me.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@ -7334,10 +7334,13 @@ msgstr ""
msgid ""
"mechanism for SASL authentication: \"plain\" for plain text password, "
"\"ecdsa-nist256p-challenge\" for key-based challenge authentication, "
"\"external\" for authentication using client side SSL cert, \"dh-blowfish\" "
"for blowfish crypted password (insecure, not recommended), \"dh-aes\" for "
"AES crypted password (insecure, not recommended)"
"\"scram-sha-1\" for SCRAM authentication with SHA-1 algorithm, \"scram-"
"sha-256\" for SCRAM authentication with SHA-256 algorithm, \"scram-sha-512\" "
"for SCRAM authentication with SHA-512 algorithm, \"ecdsa-nist256p-challenge"
"\" for key-based challenge authentication, \"external\" for authentication "
"using client side SSL cert, \"dh-blowfish\" for blowfish crypted password "
"(insecure, not recommended), \"dh-aes\" for AES crypted password (insecure, "
"not recommended)"
msgstr ""
msgid ""
@ -8254,9 +8257,11 @@ msgstr "%s%s%s%s, %s olarak kimliği tanımlandı"
msgid "%s%s%s%s has unidentified"
msgstr "%s%s%s%s kimliği belirsiz"
#, c-format
msgid ""
"%s%s: error building answer for SASL authentication, using mechanism \"%s\""
#, fuzzy, c-format
msgid "%s%s: SASL error: %s"
msgstr "%s%s: hata: %s"
msgid "internal error"
msgstr ""
#, c-format
@ -8642,26 +8647,30 @@ msgstr ""
msgid "%s%s: server \"%s\" not found for redirect"
msgstr ""
#, c-format
msgid "%s%s: unable to read private key in file \"%s\""
msgstr "%s%s: \"%s\" dosyasındaki özel anahtar okunamıyor"
#, fuzzy
msgid "unable to validate server signature"
msgstr "%s%s: sunucu eklenemiyor"
#, c-format
msgid "%sgnutls: invalid private key file: error %d %s"
msgstr "%sgnutls: Geçersiz özel anahtar dosyası: hata %d %s"
#, fuzzy
msgid "memory error"
msgstr "çatal hatası"
msgid "base64 decode error"
msgstr ""
msgid "base64 encode error"
msgstr ""
msgid "cryptography error"
msgstr ""
msgid "protocol error"
msgstr ""
#, c-format
msgid "%s%s: signing the challenge with ECC public key: %s"
msgstr ""
#, c-format
msgid "%sgnutls: unable to import the private key: error %d %s"
msgstr ""
#, c-format
msgid "%sgnutls: unable to sign the hashed data: error %d %s"
msgstr ""
#, c-format
msgid ""
"%sgnutls: version >= 3.0.21 is required for SASL \"ecdsa-nist256p-challenge\""
@ -11897,3 +11906,11 @@ msgstr "%s%s: \"%s\" için %s ile zaman aşımı"
#, c-format
msgid "%s%s: unable to connect: unexpected error (%d)"
msgstr "%s%s: Bağlanılamıyor: Beklenmedik hata (%d)"
#, c-format
#~ msgid "%s%s: unable to read private key in file \"%s\""
#~ msgstr "%s%s: \"%s\" dosyasındaki özel anahtar okunamıyor"
#, c-format
#~ msgid "%sgnutls: invalid private key file: error %d %s"
#~ msgstr "%sgnutls: Geçersiz özel anahtar dosyası: hata %d %s"

View File

@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2021-05-30 15:18+0200\n"
"POT-Creation-Date: 2021-06-01 20:39+0200\n"
"PO-Revision-Date: 2014-08-16 10:27+0200\n"
"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@ -6809,10 +6809,13 @@ msgstr ""
msgid ""
"mechanism for SASL authentication: \"plain\" for plain text password, "
"\"ecdsa-nist256p-challenge\" for key-based challenge authentication, "
"\"external\" for authentication using client side SSL cert, \"dh-blowfish\" "
"for blowfish crypted password (insecure, not recommended), \"dh-aes\" for "
"AES crypted password (insecure, not recommended)"
"\"scram-sha-1\" for SCRAM authentication with SHA-1 algorithm, \"scram-"
"sha-256\" for SCRAM authentication with SHA-256 algorithm, \"scram-sha-512\" "
"for SCRAM authentication with SHA-512 algorithm, \"ecdsa-nist256p-challenge"
"\" for key-based challenge authentication, \"external\" for authentication "
"using client side SSL cert, \"dh-blowfish\" for blowfish crypted password "
"(insecure, not recommended), \"dh-aes\" for AES crypted password (insecure, "
"not recommended)"
msgstr ""
msgid ""
@ -7727,8 +7730,10 @@ msgid "%s%s%s%s has unidentified"
msgstr ""
#, c-format
msgid ""
"%s%s: error building answer for SASL authentication, using mechanism \"%s\""
msgid "%s%s: SASL error: %s"
msgstr ""
msgid "internal error"
msgstr ""
#, c-format
@ -8120,26 +8125,28 @@ msgstr ""
msgid "%s%s: server \"%s\" not found for redirect"
msgstr ""
#, c-format
msgid "%s%s: unable to read private key in file \"%s\""
msgid "unable to validate server signature"
msgstr ""
#, c-format
msgid "%sgnutls: invalid private key file: error %d %s"
msgid "memory error"
msgstr ""
msgid "base64 decode error"
msgstr ""
msgid "base64 encode error"
msgstr ""
msgid "cryptography error"
msgstr ""
msgid "protocol error"
msgstr ""
#, c-format
msgid "%s%s: signing the challenge with ECC public key: %s"
msgstr ""
#, c-format
msgid "%sgnutls: unable to import the private key: error %d %s"
msgstr ""
#, c-format
msgid "%sgnutls: unable to sign the hashed data: error %d %s"
msgstr ""
#, c-format
msgid ""
"%sgnutls: version >= 3.0.21 is required for SASL \"ecdsa-nist256p-challenge\""

View File

@ -1859,6 +1859,12 @@ irc_config_server_new_option (struct t_config_file *config_file,
option_name, "integer",
N_("mechanism for SASL authentication: "
"\"plain\" for plain text password, "
"\"scram-sha-1\" for SCRAM authentication with SHA-1 "
"algorithm, "
"\"scram-sha-256\" for SCRAM authentication with SHA-256 "
"algorithm, "
"\"scram-sha-512\" for SCRAM authentication with SHA-512 "
"algorithm, "
"\"ecdsa-nist256p-challenge\" for key-based "
"challenge authentication, "
"\"external\" for authentication using client side SSL "
@ -1867,7 +1873,8 @@ irc_config_server_new_option (struct t_config_file *config_file,
"(insecure, not recommended), "
"\"dh-aes\" for AES crypted password "
"(insecure, not recommended)"),
"plain|ecdsa-nist256p-challenge|external|dh-blowfish|dh-aes",
"plain|scram-sha-1|scram-sha-256|scram-sha-512|"
"ecdsa-nist256p-challenge|external|dh-blowfish|dh-aes",
0, 0,
default_value, value,
null_value_allowed,

View File

@ -408,65 +408,89 @@ IRC_PROTOCOL_CALLBACK(account)
IRC_PROTOCOL_CALLBACK(authenticate)
{
int sasl_mechanism;
char *sasl_username, *sasl_password, *answer;
char *sasl_username, *sasl_password, *answer, *sasl_error;
const char *sasl_key;
IRC_PROTOCOL_MIN_ARGS(2);
if (irc_server_sasl_enabled (server))
if (!irc_server_sasl_enabled (server))
return WEECHAT_RC_OK;
sasl_mechanism = IRC_SERVER_OPTION_INTEGER(
server, IRC_SERVER_OPTION_SASL_MECHANISM);
sasl_username = irc_server_eval_expression (
server,
IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_SASL_USERNAME));
sasl_password = irc_server_eval_expression (
server,
IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_SASL_PASSWORD));
sasl_key = IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_SASL_KEY);
answer = NULL;
sasl_error = NULL;
switch (sasl_mechanism)
{
sasl_mechanism = IRC_SERVER_OPTION_INTEGER(
server, IRC_SERVER_OPTION_SASL_MECHANISM);
sasl_username = irc_server_eval_expression (
server,
IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_SASL_USERNAME));
sasl_password = irc_server_eval_expression (
server,
IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_SASL_PASSWORD));
sasl_key = IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_SASL_KEY);
answer = NULL;
switch (sasl_mechanism)
{
case IRC_SASL_MECHANISM_PLAIN:
answer = irc_sasl_mechanism_plain (sasl_username,
sasl_password);
break;
case IRC_SASL_MECHANISM_ECDSA_NIST256P_CHALLENGE:
answer = irc_sasl_mechanism_ecdsa_nist256p_challenge (
server, argv[1], sasl_username, sasl_key);
break;
case IRC_SASL_MECHANISM_EXTERNAL:
answer = strdup ("+");
break;
case IRC_SASL_MECHANISM_DH_BLOWFISH:
answer = irc_sasl_mechanism_dh_blowfish (
argv[1], sasl_username, sasl_password);
break;
case IRC_SASL_MECHANISM_DH_AES:
answer = irc_sasl_mechanism_dh_aes (
argv[1], sasl_username, sasl_password);
break;
}
if (answer)
{
irc_server_sendf (server, 0, NULL, "AUTHENTICATE %s", answer);
free (answer);
}
else
{
weechat_printf (
server->buffer,
_("%s%s: error building answer for SASL authentication, "
"using mechanism \"%s\""),
weechat_prefix ("error"), IRC_PLUGIN_NAME,
irc_sasl_mechanism_string[IRC_SERVER_OPTION_INTEGER(server, IRC_SERVER_OPTION_SASL_MECHANISM)]);
irc_server_sendf (server, 0, NULL, "CAP END");
}
if (sasl_username)
free (sasl_username);
if (sasl_password)
free (sasl_password);
case IRC_SASL_MECHANISM_PLAIN:
answer = irc_sasl_mechanism_plain (sasl_username, sasl_password);
break;
case IRC_SASL_MECHANISM_SCRAM_SHA_1:
answer = irc_sasl_mechanism_scram (
server, "sha1", argv[1], sasl_username, sasl_password,
&sasl_error);
break;
case IRC_SASL_MECHANISM_SCRAM_SHA_256:
answer = irc_sasl_mechanism_scram (
server, "sha256", argv[1], sasl_username, sasl_password,
&sasl_error);
break;
case IRC_SASL_MECHANISM_SCRAM_SHA_512:
answer = irc_sasl_mechanism_scram (
server, "sha512", argv[1], sasl_username, sasl_password,
&sasl_error);
break;
case IRC_SASL_MECHANISM_ECDSA_NIST256P_CHALLENGE:
answer = irc_sasl_mechanism_ecdsa_nist256p_challenge (
server, argv[1], sasl_username, sasl_key, &sasl_error);
break;
case IRC_SASL_MECHANISM_EXTERNAL:
answer = strdup ("+");
break;
case IRC_SASL_MECHANISM_DH_BLOWFISH:
answer = irc_sasl_mechanism_dh_blowfish (
argv[1], sasl_username, sasl_password, &sasl_error);
break;
case IRC_SASL_MECHANISM_DH_AES:
answer = irc_sasl_mechanism_dh_aes (
argv[1], sasl_username, sasl_password, &sasl_error);
break;
}
if (answer)
{
if (sasl_error)
{
weechat_printf (server->buffer,
_("%s%s: SASL error: %s"),
weechat_prefix ("error"),
IRC_PLUGIN_NAME,
sasl_error);
}
irc_server_sendf (server, 0, NULL, "AUTHENTICATE %s", answer);
free (answer);
}
else
{
weechat_printf (server->buffer,
_("%s%s: SASL error: %s"),
weechat_prefix ("error"),
IRC_PLUGIN_NAME,
(sasl_error) ? sasl_error : _("internal error"));
irc_server_sendf (server, 0, NULL, "CAP END");
}
if (sasl_username)
free (sasl_username);
if (sasl_password)
free (sasl_password);
if (sasl_error)
free (sasl_error);
return WEECHAT_RC_OK;
}
@ -6335,6 +6359,8 @@ IRC_PROTOCOL_CALLBACK(900)
argv[3],
IRC_COLOR_CHAT_DELIMITERS);
irc_server_free_sasl_data (server);
return WEECHAT_RC_OK;
}
@ -6391,6 +6417,8 @@ IRC_PROTOCOL_CALLBACK(sasl_end_ok)
if (!server->is_connected)
irc_server_sendf (server, 0, NULL, "CAP END");
irc_server_free_sasl_data (server);
return WEECHAT_RC_OK;
}
@ -6428,6 +6456,8 @@ IRC_PROTOCOL_CALLBACK(sasl_end_fail)
if (!server->is_connected)
irc_server_sendf (server, 0, NULL, "CAP END");
irc_server_free_sasl_data (server);
return WEECHAT_RC_OK;
}

View File

@ -42,7 +42,8 @@
* valid values for the AUTHENTICATE command (example: "AUTHENTICATE PLAIN")
*/
char *irc_sasl_mechanism_string[IRC_NUM_SASL_MECHANISMS] =
{ "plain", "ecdsa-nist256p-challenge", "external", "dh-blowfish", "dh-aes" };
{ "plain", "scram-sha-1", "scram-sha-256", "scram-sha-512",
"ecdsa-nist256p-challenge", "external", "dh-blowfish", "dh-aes" };
/*
@ -54,7 +55,7 @@ char *irc_sasl_mechanism_string[IRC_NUM_SASL_MECHANISMS] =
char *
irc_sasl_mechanism_plain (const char *sasl_username, const char *sasl_password)
{
char *string, *answer_base64;
char *answer_base64, *string;
int length_username, length;
answer_base64 = NULL;
@ -85,6 +86,373 @@ irc_sasl_mechanism_plain (const char *sasl_username, const char *sasl_password)
return answer_base64;
}
/*
* Builds answer for SASL authentication, using mechanism
* "SCRAM-SHA-1", "SCRAM-SHA-256" or "SCRAM-SHA-512".
*
* If an error is received from the server and sasl_error is not NULL,
* *sasl_error is set to the error and must be freed after use.
*
* Note: result must be freed after use.
*/
char *
irc_sasl_mechanism_scram (struct t_irc_server *server,
const char *hash_algo,
const char *data_base64,
const char *sasl_username,
const char *sasl_password,
char **sasl_error)
{
char *answer_base64, *string, *username, *username2, *data, **attrs, *error;
char nonce_client[18], nonce_client_base64[24 + 1], *nonce_server;
char *salt_base64, *salt, *verifier_base64, *verifier, *attr_error;
char *auth_no_proof, *auth_message;
char salted_password[512 / 8], client_key[512 / 8], stored_key[512 / 8];
char client_signature[512 / 8], client_proof[512 / 8];
char client_proof_base64[((512 / 8) * 4) + 1], server_key[512 / 8];
char server_signature[512 / 8];
int i, length, num_attrs, iterations, salt_size, salted_password_size;
int client_key_size, stored_key_size, client_signature_size;
int server_key_size, server_signature_size, verifier_size;
long number;
answer_base64 = NULL;
string = NULL;
length = 0;
username = NULL;
username2 = NULL;
data = NULL;
attrs = NULL;
nonce_server = NULL;
salt_base64 = NULL;
salt = NULL;
salt_size = 0;
iterations = 0;
verifier_base64 = NULL;
verifier = NULL;
verifier_size = 0;
attr_error = NULL;
auth_no_proof = NULL;
auth_message = NULL;
if (strcmp (data_base64, "+") == 0)
{
/* send username and nonce with form: "n,,n=username,r=nonce" */
gcry_create_nonce (nonce_client, sizeof (nonce_client));
length = weechat_string_base_encode (
64,
nonce_client, sizeof (nonce_client),
nonce_client_base64);
if (length != sizeof (nonce_client_base64) - 1)
goto base64_encode_error;
username = weechat_string_replace (sasl_username, "=", "=3D");
if (!username)
goto memory_error;
username2 = weechat_string_replace (username, ",", "=2C");
if (!username2)
goto memory_error;
length = 5 + strlen (username2) + 3 + sizeof (nonce_client_base64) - 1;
string = malloc (length + 1);
if (string)
{
snprintf (string, length + 1, "n,,n=%s,r=%s",
username2, nonce_client_base64);
if (server->sasl_scram_client_first)
free (server->sasl_scram_client_first);
server->sasl_scram_client_first = strdup (string + 3);
}
}
else
{
/* decode SCRAM attributes sent by the server */
data = malloc (strlen (data_base64) + 1);
if (!data)
goto memory_error;
if (weechat_string_base_decode (64, data_base64, data) <= 0)
goto base64_decode_error;
/* split attributes */
attrs = weechat_string_split (data, ",", NULL,
WEECHAT_STRING_SPLIT_STRIP_LEFT
| WEECHAT_STRING_SPLIT_STRIP_RIGHT
| WEECHAT_STRING_SPLIT_COLLAPSE_SEPS,
0, &num_attrs);
if (!attrs)
goto proto_error;
for (i = 0; i < num_attrs; i++)
{
if (strncmp (attrs[i], "r=", 2) == 0)
{
if (nonce_server)
free (nonce_server);
nonce_server = strdup (attrs[i] + 2);
}
else if (strncmp (attrs[i], "s=", 2) == 0)
{
if (salt_base64)
free (salt_base64);
salt_base64 = strdup (attrs[i] + 2);
}
else if (strncmp (attrs[i], "i=", 2) == 0)
{
error = NULL;
number = strtol (attrs[i] + 2, &error, 10);
if (error && !error[0])
iterations = (int)number;
}
else if (strncmp (attrs[i], "v=", 2) == 0)
{
if (verifier_base64)
free (verifier_base64);
verifier_base64 = strdup (attrs[i] + 2);
}
else if (strncmp (attrs[i], "e=", 2) == 0)
{
if (attr_error)
free (attr_error);
attr_error = strdup (attrs[i] + 2);
}
}
if (attr_error)
{
if (sasl_error)
*sasl_error = strdup (attr_error);
goto end;
}
else if (verifier_base64)
{
/* last exchange: we verify the server signature */
if (!server->sasl_scram_salted_pwd
|| (server->sasl_scram_salted_pwd_size <= 0)
|| !server->sasl_scram_auth_message)
{
goto proto_error;
}
verifier = malloc (strlen (verifier_base64) + 1);
if (!verifier)
goto memory_error;
verifier_size = weechat_string_base_decode (64, verifier_base64,
verifier);
if (verifier_size <= 0)
goto base64_decode_error;
/* RFC: ServerKey := HMAC(SaltedPassword, "Server Key") */
if (!weechat_crypto_hmac (server->sasl_scram_salted_pwd,
server->sasl_scram_salted_pwd_size,
IRC_SASL_SCRAM_SERVER_KEY,
strlen (IRC_SASL_SCRAM_SERVER_KEY),
hash_algo,
server_key,
&server_key_size))
goto crypto_error;
/* RFC: ServerSignature := HMAC(ServerKey, AuthMessage) */
if (!weechat_crypto_hmac (server_key,
server_key_size,
server->sasl_scram_auth_message,
strlen (server->sasl_scram_auth_message),
hash_algo,
server_signature,
&server_signature_size))
goto crypto_error;
if (verifier_size != server_signature_size)
goto crypto_error;
if (memcmp (verifier, server_signature, verifier_size) != 0)
{
if (sasl_error)
{
*sasl_error = strdup (
_("unable to validate server signature"));
}
string = strdup ("*");
if (!string)
goto memory_error;
length = strlen (string);
goto end;
}
string = strdup ("+");
if (!string)
goto memory_error;
length = strlen (string);
}
else
{
if (!server->sasl_scram_client_first || !nonce_server
|| !salt_base64 || (iterations <= 0))
{
goto proto_error;
}
/* decode salt */
salt = malloc (strlen (salt_base64) + 1);
if (!salt)
goto memory_error;
salt_size = weechat_string_base_decode (64, salt_base64, salt);
if (salt_size <= 0)
goto base64_decode_error;
/* RFC: SaltedPassword := Hi(Normalize(password), salt, i) */
if (!weechat_crypto_hash_pbkdf2 (sasl_password,
strlen (sasl_password),
hash_algo,
salt, salt_size,
iterations,
salted_password,
&salted_password_size))
goto crypto_error;
if (server->sasl_scram_salted_pwd)
free (server->sasl_scram_salted_pwd);
server->sasl_scram_salted_pwd = malloc (salted_password_size);
if (!server->sasl_scram_salted_pwd)
goto memory_error;
memcpy (server->sasl_scram_salted_pwd, salted_password,
salted_password_size);
server->sasl_scram_salted_pwd_size = salted_password_size;
/* RFC: ClientKey := HMAC(SaltedPassword, "Client Key") */
if (!weechat_crypto_hmac (salted_password,
salted_password_size,
IRC_SASL_SCRAM_CLIENT_KEY,
strlen (IRC_SASL_SCRAM_CLIENT_KEY),
hash_algo,
client_key,
&client_key_size))
goto crypto_error;
/* RFC: StoredKey := H(ClientKey) */
if (!weechat_crypto_hash (client_key, client_key_size,
hash_algo,
stored_key,
&stored_key_size))
goto crypto_error;
/*
* RFC: AuthMessage := client-first-message-bare + "," +
* server-first-message + "," +
* client-final-message-without-proof
*/
length = strlen (nonce_server) + 64 + 1;
auth_no_proof = malloc (length);
if (!auth_no_proof)
goto memory_error;
/* "biws" is "n,," encoded to base64 */
snprintf (auth_no_proof, length, "c=biws,r=%s",
nonce_server);
length = strlen (server->sasl_scram_client_first) + 1
+ strlen (data) + 1 + strlen (auth_no_proof) + 1;
auth_message = malloc (length);
if (!auth_message)
goto memory_error;
snprintf (auth_message, length, "%s,%s,%s",
server->sasl_scram_client_first,
data,
auth_no_proof);
if (server->sasl_scram_auth_message)
free (server->sasl_scram_auth_message);
server->sasl_scram_auth_message = strdup (auth_message);
/* RFC: ClientSignature := HMAC(StoredKey, AuthMessage) */
if (!weechat_crypto_hmac (stored_key,
stored_key_size,
auth_message,
strlen (auth_message),
hash_algo,
client_signature,
&client_signature_size))
goto crypto_error;
if (client_key_size != client_signature_size)
goto crypto_error;
/* RFC: ClientProof := ClientKey XOR ClientSignature */
for (i = 0; i < client_key_size; i++)
{
client_proof[i] = ((unsigned char)client_key[i] ^
(unsigned char)client_signature[i]);
}
if (weechat_string_base_encode (64, client_proof, client_key_size,
client_proof_base64) < 0)
goto base64_encode_error;
/* final message: auth_no_proof + "," + proof */
length = strlen (auth_no_proof) + 3 + strlen (client_proof_base64);
string = malloc (length + 1);
snprintf (string, length + 1, "%s,p=%s",
auth_no_proof,
client_proof_base64);
}
}
goto end;
memory_error:
if (sasl_error)
*sasl_error = strdup (_("memory error"));
goto end;
base64_decode_error:
if (sasl_error)
*sasl_error = strdup (_("base64 decode error"));
goto end;
base64_encode_error:
if (sasl_error)
*sasl_error = strdup (_("base64 encode error"));
goto end;
crypto_error:
if (sasl_error)
*sasl_error = strdup (_("cryptography error"));
goto end;
proto_error:
if (sasl_error)
*sasl_error = strdup (_("protocol error"));
goto end;
end:
if (string && (length > 0))
{
if ((strcmp (string, "+") == 0) || (strcmp (string, "*") == 0))
{
answer_base64 = strdup (string);
}
else
{
answer_base64 = malloc ((length + 1) * 4);
if (answer_base64)
{
if (weechat_string_base_encode (64, string, length,
answer_base64) < 0)
{
free (answer_base64);
answer_base64 = NULL;
if (sasl_error)
*sasl_error = strdup (_("base64 encode error"));
}
}
}
}
if (string)
free (string);
if (username)
free (username);
if (username2)
free (username2);
if (data)
free (data);
if (attrs)
weechat_string_free_split (attrs);
if (nonce_server)
free (nonce_server);
if (salt_base64)
free (salt_base64);
if (salt)
free (salt);
if (verifier_base64)
free (verifier_base64);
if (verifier)
free (verifier);
if (attr_error)
free (attr_error);
if (auth_no_proof)
free (auth_no_proof);
if (auth_message)
free (auth_message);
return answer_base64;
}
/*
* Returns the content of file with SASL key.
*
@ -92,9 +460,9 @@ irc_sasl_mechanism_plain (const char *sasl_username, const char *sasl_password)
*/
char *
irc_sasl_get_key_content (struct t_irc_server *server, const char *sasl_key)
irc_sasl_get_key_content (const char *sasl_key, char **sasl_error)
{
char *key_path, *content;
char *key_path, *content, str_error[4096];
struct t_hashtable *options;
if (!sasl_key)
@ -116,14 +484,12 @@ irc_sasl_get_key_content (struct t_irc_server *server, const char *sasl_key)
if (key_path)
content = weechat_file_get_content (key_path);
if (!content)
if (!content && sasl_error)
{
weechat_printf (
server->buffer,
_("%s%s: unable to read private key in file \"%s\""),
weechat_prefix ("error"),
IRC_PLUGIN_NAME,
key_path);
snprintf (str_error, sizeof (str_error),
"unable to read private key in file \"%s\"",
key_path);
*sasl_error = strdup (str_error);
}
if (key_path)
@ -143,10 +509,11 @@ char *
irc_sasl_mechanism_ecdsa_nist256p_challenge (struct t_irc_server *server,
const char *data_base64,
const char *sasl_username,
const char *sasl_key)
const char *sasl_key,
char **sasl_error)
{
#if LIBGNUTLS_VERSION_NUMBER >= 0x030015 /* 3.0.21 */
char *data, *string, *answer_base64;
char *answer_base64, *string, *data, str_error[4096];
int length_data, length_username, length, ret;
char *str_privkey;
gnutls_x509_privkey_t x509_privkey;
@ -160,11 +527,11 @@ irc_sasl_mechanism_ecdsa_nist256p_challenge (struct t_irc_server *server,
answer_base64 = NULL;
string = NULL;
length = 0;
if (strcmp (data_base64, "+") == 0)
{
/* send "username" + '\0' + "username" */
answer_base64 = NULL;
length_username = strlen (sasl_username);
length = length_username + 1 + length_username;
string = malloc (length + 1);
@ -185,7 +552,7 @@ irc_sasl_mechanism_ecdsa_nist256p_challenge (struct t_irc_server *server,
length_data = weechat_string_base_decode (64, data_base64, data);
/* read file with private key */
str_privkey = irc_sasl_get_key_content (server, sasl_key);
str_privkey = irc_sasl_get_key_content (sasl_key, sasl_error);
if (!str_privkey)
{
free (data);
@ -202,12 +569,14 @@ irc_sasl_mechanism_ecdsa_nist256p_challenge (struct t_irc_server *server,
free (str_privkey);
if (ret != GNUTLS_E_SUCCESS)
{
weechat_printf (
server->buffer,
_("%sgnutls: invalid private key file: error %d %s"),
weechat_prefix ("error"),
ret,
gnutls_strerror (ret));
if (sasl_error)
{
snprintf (str_error, sizeof (str_error),
"invalid private key file: error %d %s",
ret,
gnutls_strerror (ret));
*sasl_error = strdup (str_error);
}
gnutls_x509_privkey_deinit (x509_privkey);
gnutls_privkey_deinit (privkey);
free (data);
@ -253,12 +622,14 @@ irc_sasl_mechanism_ecdsa_nist256p_challenge (struct t_irc_server *server,
ret = gnutls_privkey_import_x509 (privkey, x509_privkey, 0); /* gnutls >= 2.11.0 */
if (ret != GNUTLS_E_SUCCESS)
{
weechat_printf (
server->buffer,
_("%sgnutls: unable to import the private key: error %d %s"),
weechat_prefix ("error"),
ret,
gnutls_strerror (ret));
if (sasl_error)
{
snprintf (str_error, sizeof (str_error),
"unable to import the private key: error %d %s",
ret,
gnutls_strerror (ret));
*sasl_error = strdup (str_error);
}
gnutls_x509_privkey_deinit (x509_privkey);
gnutls_privkey_deinit (privkey);
free (data);
@ -271,12 +642,14 @@ irc_sasl_mechanism_ecdsa_nist256p_challenge (struct t_irc_server *server,
&decoded_data, &signature);
if (ret != GNUTLS_E_SUCCESS)
{
weechat_printf (
server->buffer,
_("%sgnutls: unable to sign the hashed data: error %d %s"),
weechat_prefix ("error"),
ret,
gnutls_strerror (ret));
if (sasl_error)
{
snprintf (str_error, sizeof (str_error),
"unable to sign the hashed data: error %d %s",
ret,
gnutls_strerror (ret));
*sasl_error = strdup (str_error);
}
gnutls_x509_privkey_deinit (x509_privkey);
gnutls_privkey_deinit (privkey);
free (data);
@ -308,8 +681,6 @@ irc_sasl_mechanism_ecdsa_nist256p_challenge (struct t_irc_server *server,
answer_base64 = NULL;
}
}
free (string);
string = NULL;
}
if (string)
@ -324,10 +695,12 @@ irc_sasl_mechanism_ecdsa_nist256p_challenge (struct t_irc_server *server,
(void) sasl_username;
(void) sasl_key;
weechat_printf (server->buffer,
_("%sgnutls: version >= 3.0.21 is required for SASL "
"\"ecdsa-nist256p-challenge\""),
weechat_prefix ("error"));
if (sasl_error)
{
*sasl_error = strdup (
_("%sgnutls: version >= 3.0.21 is required for SASL "
"\"ecdsa-nist256p-challenge\""));
}
return NULL;
#endif /* LIBGNUTLS_VERSION_NUMBER >= 0x030015 */
@ -344,7 +717,7 @@ irc_sasl_mechanism_ecdsa_nist256p_challenge (struct t_irc_server *server,
int
irc_sasl_dh (const char *data_base64,
unsigned char **public_bin, unsigned char **secret_bin,
int *length_key)
int *length_key, char **sasl_error)
{
char *data;
unsigned char *ptr_data;
@ -366,7 +739,7 @@ irc_sasl_dh (const char *data_base64,
/* decode data */
data = malloc (strlen (data_base64) + 1);
if (!data)
goto dhend;
goto memory_error;
length_data = weechat_string_base_decode (64, data_base64, data);
ptr_data = (unsigned char *)data;
@ -375,12 +748,12 @@ irc_sasl_dh (const char *data_base64,
ptr_data += 2;
length_data -= 2;
if (size > length_data)
goto dhend;
goto crypto_error;
data_prime_number = gcry_mpi_new (size * 8);
gcry_mpi_scan (&data_prime_number, GCRYMPI_FMT_USG, ptr_data, size, NULL);
num_bits_prime_number = gcry_mpi_get_nbits (data_prime_number);
if (num_bits_prime_number == 0 || INT_MAX - 7 < num_bits_prime_number)
goto dhend;
goto crypto_error;
ptr_data += size;
length_data -= size;
@ -389,7 +762,7 @@ irc_sasl_dh (const char *data_base64,
ptr_data += 2;
length_data -= 2;
if (size > length_data)
goto dhend;
goto crypto_error;
data_generator_number = gcry_mpi_new (size * 8);
gcry_mpi_scan (&data_generator_number, GCRYMPI_FMT_USG, ptr_data, size, NULL);
ptr_data += size;
@ -400,7 +773,7 @@ irc_sasl_dh (const char *data_base64,
ptr_data += 2;
length_data -= 2;
if (size > length_data)
goto dhend;
goto crypto_error;
data_server_pub_key = gcry_mpi_new (size * 8);
gcry_mpi_scan (&data_server_pub_key, GCRYMPI_FMT_USG, ptr_data, size, NULL);
@ -426,7 +799,19 @@ irc_sasl_dh (const char *data_base64,
&num_written, pub_key);
rc = 1;
dhend:
goto end;
memory_error:
if (sasl_error)
*sasl_error = strdup (_("memory error"));
goto end;
crypto_error:
if (sasl_error)
*sasl_error = strdup (_("cryptography error"));
goto end;
end:
if (data)
free (data);
if (data_prime_number)
@ -460,7 +845,8 @@ dhend:
char *
irc_sasl_mechanism_dh_blowfish (const char *data_base64,
const char *sasl_username,
const char *sasl_password)
const char *sasl_password,
char **sasl_error)
{
char *answer, *ptr_answer, *answer_base64;
unsigned char *password_clear, *password_crypted;
@ -475,8 +861,11 @@ irc_sasl_mechanism_dh_blowfish (const char *data_base64,
secret_bin = NULL;
public_bin = NULL;
if (!irc_sasl_dh (data_base64, &public_bin, &secret_bin, &length_key))
goto bfend;
if (!irc_sasl_dh (data_base64, &public_bin, &secret_bin, &length_key,
sasl_error))
{
goto end;
}
/* create password buffers (clear and crypted) */
length_password = strlen (sasl_password) +
@ -488,13 +877,13 @@ irc_sasl_mechanism_dh_blowfish (const char *data_base64,
/* crypt password using blowfish */
if (gcry_cipher_open (&gcrypt_handle, GCRY_CIPHER_BLOWFISH,
GCRY_CIPHER_MODE_ECB, 0) != 0)
goto bfend;
goto crypto_error;
if (gcry_cipher_setkey (gcrypt_handle, secret_bin, length_key) != 0)
goto bfend;
goto crypto_error;
if (gcry_cipher_encrypt (gcrypt_handle,
password_crypted, length_password,
password_clear, length_password) != 0)
goto bfend;
goto crypto_error;
gcry_cipher_close (gcrypt_handle);
@ -529,7 +918,14 @@ irc_sasl_mechanism_dh_blowfish (const char *data_base64,
}
}
bfend:
goto end;
crypto_error:
if (sasl_error)
*sasl_error = strdup (_("cryptography error"));
goto end;
end:
if (secret_bin)
free (secret_bin);
if (public_bin)
@ -559,7 +955,8 @@ bfend:
char *
irc_sasl_mechanism_dh_aes (const char *data_base64,
const char *sasl_username,
const char *sasl_password)
const char *sasl_password,
char **sasl_error)
{
char *answer, *ptr_answer, *answer_base64;
unsigned char *ptr_userpass, *userpass_clear, *userpass_crypted;
@ -577,8 +974,11 @@ irc_sasl_mechanism_dh_aes (const char *data_base64,
secret_bin = NULL;
public_bin = NULL;
if (irc_sasl_dh (data_base64, &public_bin, &secret_bin, &length_key) == 0)
goto aesend;
if (!irc_sasl_dh (data_base64, &public_bin, &secret_bin, &length_key,
sasl_error))
{
goto end;
}
/* Select cipher algorithm: key length * 8 = cipher bit size */
switch (length_key)
@ -594,7 +994,7 @@ irc_sasl_mechanism_dh_aes (const char *data_base64,
break;
default:
/* Invalid bit length */
goto aesend;
goto end;
}
/* Generate the IV */
@ -615,15 +1015,15 @@ irc_sasl_mechanism_dh_aes (const char *data_base64,
/* crypt password using AES in CBC mode */
if (gcry_cipher_open (&gcrypt_handle, cipher_algo,
GCRY_CIPHER_MODE_CBC, 0) != 0)
goto aesend;
goto crypto_error;
if (gcry_cipher_setkey (gcrypt_handle, secret_bin, length_key) != 0)
goto aesend;
goto crypto_error;
if (gcry_cipher_setiv (gcrypt_handle, iv, sizeof (iv)) != 0)
goto aesend;
goto crypto_error;
if (gcry_cipher_encrypt (gcrypt_handle,
userpass_crypted, length_userpass,
userpass_clear, length_userpass) != 0)
goto aesend;
goto crypto_error;
gcry_cipher_close (gcrypt_handle);
@ -657,7 +1057,14 @@ irc_sasl_mechanism_dh_aes (const char *data_base64,
}
}
aesend:
goto end;
crypto_error:
if (sasl_error)
*sasl_error = strdup (_("cryptography error"));
goto end;
end:
if (secret_bin)
free (secret_bin);
if (public_bin)

View File

@ -20,6 +20,9 @@
#ifndef WEECHAT_PLUGIN_IRC_SASL_H
#define WEECHAT_PLUGIN_IRC_SASL_H
#define IRC_SASL_SCRAM_CLIENT_KEY "Client Key"
#define IRC_SASL_SCRAM_SERVER_KEY "Server Key"
struct t_irc_server;
/* SASL authentication mechanisms */
@ -27,6 +30,9 @@ struct t_irc_server;
enum t_irc_sasl_mechanism
{
IRC_SASL_MECHANISM_PLAIN = 0,
IRC_SASL_MECHANISM_SCRAM_SHA_1,
IRC_SASL_MECHANISM_SCRAM_SHA_256,
IRC_SASL_MECHANISM_SCRAM_SHA_512,
IRC_SASL_MECHANISM_ECDSA_NIST256P_CHALLENGE,
IRC_SASL_MECHANISM_EXTERNAL,
IRC_SASL_MECHANISM_DH_BLOWFISH,
@ -39,15 +45,24 @@ extern char *irc_sasl_mechanism_string[];
extern char *irc_sasl_mechanism_plain (const char *sasl_username,
const char *sasl_password);
extern char *irc_sasl_mechanism_scram (struct t_irc_server *server,
const char *hash_algo,
const char *data_base64,
const char *sasl_username,
const char *sasl_password,
char **sasl_error);
extern char *irc_sasl_mechanism_ecdsa_nist256p_challenge (struct t_irc_server *server,
const char *data_base64,
const char *sasl_username,
const char *sasl_key);
const char *sasl_key,
char **sasl_error);
extern char *irc_sasl_mechanism_dh_blowfish (const char *data_base64,
const char *sasl_username,
const char *sasl_password);
const char *sasl_password,
char **sasl_error);
extern char *irc_sasl_mechanism_dh_aes (const char *data_base64,
const char *sasl_username,
const char *sasl_password);
const char *sasl_password,
char **sasl_error);
#endif /* WEECHAT_PLUGIN_IRC_SASL_H */

View File

@ -1464,6 +1464,10 @@ irc_server_alloc (const char *name)
new_server->hook_fd = NULL;
new_server->hook_timer_connection = NULL;
new_server->hook_timer_sasl = NULL;
new_server->sasl_scram_client_first = NULL;
new_server->sasl_scram_salted_pwd = NULL;
new_server->sasl_scram_salted_pwd_size = 0;
new_server->sasl_scram_auth_message = NULL;
new_server->is_connected = 0;
new_server->ssl_connected = 0;
new_server->disconnected = 0;
@ -1943,6 +1947,31 @@ irc_server_outqueue_free_all (struct t_irc_server *server, int priority)
}
}
/*
* Frees SASL data in server.
*/
void
irc_server_free_sasl_data (struct t_irc_server *server)
{
if (server->sasl_scram_client_first)
{
free (server->sasl_scram_client_first);
server->sasl_scram_client_first = NULL;
}
if (server->sasl_scram_salted_pwd)
{
free (server->sasl_scram_salted_pwd);
server->sasl_scram_salted_pwd = NULL;
}
server->sasl_scram_salted_pwd_size = 0;
if (server->sasl_scram_auth_message)
{
free (server->sasl_scram_auth_message);
server->sasl_scram_auth_message = NULL;
}
}
/*
* Frees server data.
*/
@ -1997,6 +2026,7 @@ irc_server_free_data (struct t_irc_server *server)
weechat_unhook (server->hook_timer_connection);
if (server->hook_timer_sasl)
weechat_unhook (server->hook_timer_sasl);
irc_server_free_sasl_data (server);
if (server->unterminated_message)
free (server->unterminated_message);
if (server->nicks_array)
@ -3708,6 +3738,7 @@ irc_server_close_connection (struct t_irc_server *server)
weechat_unhook (server->hook_timer_sasl);
server->hook_timer_sasl = NULL;
}
irc_server_free_sasl_data (server);
if (server->hook_fd)
{
@ -5879,6 +5910,10 @@ irc_server_hdata_server_cb (const void *pointer, void *data,
WEECHAT_HDATA_VAR(struct t_irc_server, hook_fd, POINTER, 0, NULL, "hook");
WEECHAT_HDATA_VAR(struct t_irc_server, hook_timer_connection, POINTER, 0, NULL, "hook");
WEECHAT_HDATA_VAR(struct t_irc_server, hook_timer_sasl, POINTER, 0, NULL, "hook");
WEECHAT_HDATA_VAR(struct t_irc_server, sasl_scram_client_first, STRING, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_irc_server, sasl_scram_salted_pwd, OTHER, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_irc_server, sasl_scram_salted_pwd_size, INTEGER, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_irc_server, sasl_scram_auth_message, STRING, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_irc_server, is_connected, INTEGER, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_irc_server, ssl_connected, INTEGER, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_irc_server, disconnected, INTEGER, 0, NULL, NULL);
@ -6218,383 +6253,387 @@ irc_server_print_log ()
weechat_log_printf ("[server %s (addr:0x%lx)]", ptr_server->name, ptr_server);
/* addresses */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_ADDRESSES]))
weechat_log_printf (" addresses. . . . . . : null ('%s')",
weechat_log_printf (" addresses . . . . . . . . : null ('%s')",
IRC_SERVER_OPTION_STRING(ptr_server, IRC_SERVER_OPTION_ADDRESSES));
else
weechat_log_printf (" addresses. . . . . . : '%s'",
weechat_log_printf (" addresses . . . . . . . . : '%s'",
weechat_config_string (ptr_server->options[IRC_SERVER_OPTION_ADDRESSES]));
/* proxy */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_PROXY]))
weechat_log_printf (" proxy. . . . . . . . : null ('%s')",
weechat_log_printf (" proxy . . . . . . . . . . : null ('%s')",
IRC_SERVER_OPTION_STRING(ptr_server, IRC_SERVER_OPTION_PROXY));
else
weechat_log_printf (" proxy. . . . . . . . : '%s'",
weechat_log_printf (" proxy . . . . . . . . . . : '%s'",
weechat_config_string (ptr_server->options[IRC_SERVER_OPTION_PROXY]));
/* ipv6 */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_IPV6]))
weechat_log_printf (" ipv6 . . . . . . . . : null (%s)",
weechat_log_printf (" ipv6. . . . . . . . . . . : null (%s)",
(IRC_SERVER_OPTION_BOOLEAN(ptr_server, IRC_SERVER_OPTION_IPV6)) ?
"on" : "off");
else
weechat_log_printf (" ipv6 . . . . . . . . : %s",
weechat_log_printf (" ipv6. . . . . . . . . . . : %s",
(weechat_config_boolean (ptr_server->options[IRC_SERVER_OPTION_IPV6])) ?
"on" : "off");
/* ssl */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_SSL]))
weechat_log_printf (" ssl. . . . . . . . . : null (%s)",
weechat_log_printf (" ssl . . . . . . . . . . . : null (%s)",
(IRC_SERVER_OPTION_BOOLEAN(ptr_server, IRC_SERVER_OPTION_SSL)) ?
"on" : "off");
else
weechat_log_printf (" ssl. . . . . . . . . : %s",
weechat_log_printf (" ssl . . . . . . . . . . . : %s",
(weechat_config_boolean (ptr_server->options[IRC_SERVER_OPTION_SSL])) ?
"on" : "off");
/* ssl_cert */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_SSL_CERT]))
weechat_log_printf (" ssl_cert . . . . . . : null ('%s')",
weechat_log_printf (" ssl_cert. . . . . . . . . : null ('%s')",
IRC_SERVER_OPTION_STRING(ptr_server, IRC_SERVER_OPTION_SSL_CERT));
else
weechat_log_printf (" ssl_cert . . . . . . : '%s'",
weechat_log_printf (" ssl_cert. . . . . . . . . : '%s'",
weechat_config_string (ptr_server->options[IRC_SERVER_OPTION_SSL_CERT]));
/* ssl_password */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_SSL_PASSWORD]))
weechat_log_printf (" ssl_password . . . . : null");
weechat_log_printf (" ssl_password. . . . . . . : null");
else
weechat_log_printf (" ssl_password . . . . : (hidden)");
weechat_log_printf (" ssl_password. . . . . . . : (hidden)");
/* ssl_priorities */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_SSL_PRIORITIES]))
weechat_log_printf (" ssl_priorities . . . : null ('%s')",
weechat_log_printf (" ssl_priorities. . . . . . : null ('%s')",
IRC_SERVER_OPTION_STRING(ptr_server, IRC_SERVER_OPTION_SSL_PRIORITIES));
else
weechat_log_printf (" ssl_priorities . . . : '%s'",
weechat_log_printf (" ssl_priorities. . . . . . : '%s'",
weechat_config_string (ptr_server->options[IRC_SERVER_OPTION_SSL_PRIORITIES]));
/* ssl_dhkey_size */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_SSL_DHKEY_SIZE]))
weechat_log_printf (" ssl_dhkey_size . . . : null ('%d')",
weechat_log_printf (" ssl_dhkey_size. . . . . . : null ('%d')",
IRC_SERVER_OPTION_INTEGER(ptr_server, IRC_SERVER_OPTION_SSL_DHKEY_SIZE));
else
weechat_log_printf (" ssl_dhkey_size . . . : '%d'",
weechat_log_printf (" ssl_dhkey_size. . . . . . : '%d'",
weechat_config_integer (ptr_server->options[IRC_SERVER_OPTION_SSL_DHKEY_SIZE]));
/* ssl_fingerprint */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_SSL_FINGERPRINT]))
weechat_log_printf (" ssl_fingerprint. . . : null ('%s')",
weechat_log_printf (" ssl_fingerprint . . . . . : null ('%s')",
IRC_SERVER_OPTION_STRING(ptr_server, IRC_SERVER_OPTION_SSL_FINGERPRINT));
else
weechat_log_printf (" ssl_fingerprint. . . : '%s'",
weechat_log_printf (" ssl_fingerprint . . . . . : '%s'",
weechat_config_string (ptr_server->options[IRC_SERVER_OPTION_SSL_FINGERPRINT]));
/* ssl_verify */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_SSL_VERIFY]))
weechat_log_printf (" ssl_verify . . . . . : null (%s)",
weechat_log_printf (" ssl_verify. . . . . . . . : null (%s)",
(IRC_SERVER_OPTION_BOOLEAN(ptr_server, IRC_SERVER_OPTION_SSL_VERIFY)) ?
"on" : "off");
else
weechat_log_printf (" ssl_verify . . . . . : %s",
weechat_log_printf (" ssl_verify. . . . . . . . : %s",
(weechat_config_boolean (ptr_server->options[IRC_SERVER_OPTION_SSL_VERIFY])) ?
"on" : "off");
/* password */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_PASSWORD]))
weechat_log_printf (" password . . . . . . : null");
weechat_log_printf (" password. . . . . . . . . : null");
else
weechat_log_printf (" password . . . . . . : (hidden)");
weechat_log_printf (" password. . . . . . . . . : (hidden)");
/* client capabilities */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_CAPABILITIES]))
weechat_log_printf (" capabilities . . . . : null ('%s')",
weechat_log_printf (" capabilities. . . . . . . : null ('%s')",
IRC_SERVER_OPTION_STRING(ptr_server, IRC_SERVER_OPTION_CAPABILITIES));
else
weechat_log_printf (" capabilities . . . . : '%s'",
weechat_log_printf (" capabilities. . . . . . . : '%s'",
weechat_config_string (ptr_server->options[IRC_SERVER_OPTION_CAPABILITIES]));
/* sasl_mechanism */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_SASL_MECHANISM]))
weechat_log_printf (" sasl_mechanism . . . : null ('%s')",
weechat_log_printf (" sasl_mechanism. . . . . . : null ('%s')",
irc_sasl_mechanism_string[IRC_SERVER_OPTION_INTEGER(ptr_server, IRC_SERVER_OPTION_SASL_MECHANISM)]);
else
weechat_log_printf (" sasl_mechanism . . . : '%s'",
weechat_log_printf (" sasl_mechanism. . . . . . : '%s'",
irc_sasl_mechanism_string[weechat_config_integer (ptr_server->options[IRC_SERVER_OPTION_SASL_MECHANISM])]);
/* sasl_username */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_SASL_USERNAME]))
weechat_log_printf (" sasl_username. . . . : null ('%s')",
weechat_log_printf (" sasl_username . . . . . . : null ('%s')",
IRC_SERVER_OPTION_STRING(ptr_server, IRC_SERVER_OPTION_SASL_USERNAME));
else
weechat_log_printf (" sasl_username. . . . : '%s'",
weechat_log_printf (" sasl_username . . . . . . : '%s'",
weechat_config_string (ptr_server->options[IRC_SERVER_OPTION_SASL_USERNAME]));
/* sasl_password */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_SASL_PASSWORD]))
weechat_log_printf (" sasl_password. . . . : null");
weechat_log_printf (" sasl_password . . . . . . : null");
else
weechat_log_printf (" sasl_password. . . . : (hidden)");
weechat_log_printf (" sasl_password . . . . . . : (hidden)");
/* sasl_key */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_SASL_KEY]))
weechat_log_printf (" sasl_key. . . . . . : null ('%s')",
weechat_log_printf (" sasl_key. . . . . . . . . : null ('%s')",
IRC_SERVER_OPTION_STRING(ptr_server, IRC_SERVER_OPTION_SASL_KEY));
else
weechat_log_printf (" sasl_key. . . . . . : '%s'",
weechat_log_printf (" sasl_key. . . . . . . . . : '%s'",
weechat_config_string (ptr_server->options[IRC_SERVER_OPTION_SASL_KEY]));
/* sasl_fail */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_SASL_FAIL]))
weechat_log_printf (" sasl_fail. . . . . . : null ('%s')",
weechat_log_printf (" sasl_fail . . . . . . . . : null ('%s')",
irc_server_sasl_fail_string[IRC_SERVER_OPTION_INTEGER(ptr_server, IRC_SERVER_OPTION_SASL_FAIL)]);
else
weechat_log_printf (" sasl_fail. . . . . . : '%s'",
weechat_log_printf (" sasl_fail . . . . . . . . : '%s'",
irc_server_sasl_fail_string[weechat_config_integer (ptr_server->options[IRC_SERVER_OPTION_SASL_FAIL])]);
/* autoconnect */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_AUTOCONNECT]))
weechat_log_printf (" autoconnect. . . . . : null (%s)",
weechat_log_printf (" autoconnect . . . . . . . : null (%s)",
(IRC_SERVER_OPTION_BOOLEAN(ptr_server, IRC_SERVER_OPTION_AUTOCONNECT)) ?
"on" : "off");
else
weechat_log_printf (" autoconnect. . . . . : %s",
weechat_log_printf (" autoconnect . . . . . . . : %s",
(weechat_config_boolean (ptr_server->options[IRC_SERVER_OPTION_AUTOCONNECT])) ?
"on" : "off");
/* autoreconnect */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_AUTORECONNECT]))
weechat_log_printf (" autoreconnect. . . . : null (%s)",
weechat_log_printf (" autoreconnect . . . . . . : null (%s)",
(IRC_SERVER_OPTION_BOOLEAN(ptr_server, IRC_SERVER_OPTION_AUTORECONNECT)) ?
"on" : "off");
else
weechat_log_printf (" autoreconnect. . . . : %s",
weechat_log_printf (" autoreconnect . . . . . . : %s",
(weechat_config_boolean (ptr_server->options[IRC_SERVER_OPTION_AUTORECONNECT])) ?
"on" : "off");
/* autoreconnect_delay */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_AUTORECONNECT_DELAY]))
weechat_log_printf (" autoreconnect_delay. : null (%d)",
weechat_log_printf (" autoreconnect_delay . . . : null (%d)",
IRC_SERVER_OPTION_INTEGER(ptr_server, IRC_SERVER_OPTION_AUTORECONNECT_DELAY));
else
weechat_log_printf (" autoreconnect_delay. : %d",
weechat_log_printf (" autoreconnect_delay . . . : %d",
weechat_config_integer (ptr_server->options[IRC_SERVER_OPTION_AUTORECONNECT_DELAY]));
/* nicks */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_NICKS]))
weechat_log_printf (" nicks. . . . . . . . : null ('%s')",
weechat_log_printf (" nicks . . . . . . . . . . : null ('%s')",
IRC_SERVER_OPTION_STRING(ptr_server, IRC_SERVER_OPTION_NICKS));
else
weechat_log_printf (" nicks. . . . . . . . : '%s'",
weechat_log_printf (" nicks . . . . . . . . . . : '%s'",
weechat_config_string (ptr_server->options[IRC_SERVER_OPTION_NICKS]));
/* nicks_alternate */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_NICKS_ALTERNATE]))
weechat_log_printf (" nicks_alternate. . . : null (%s)",
weechat_log_printf (" nicks_alternate . . . . . : null (%s)",
(IRC_SERVER_OPTION_BOOLEAN(ptr_server, IRC_SERVER_OPTION_NICKS_ALTERNATE)) ?
"on" : "off");
else
weechat_log_printf (" nicks_alternate. . . : %s",
weechat_log_printf (" nicks_alternate . . . . . : %s",
(weechat_config_boolean (ptr_server->options[IRC_SERVER_OPTION_NICKS_ALTERNATE])) ?
"on" : "off");
/* username */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_USERNAME]))
weechat_log_printf (" username . . . . . . : null ('%s')",
weechat_log_printf (" username. . . . . . . . . : null ('%s')",
IRC_SERVER_OPTION_STRING(ptr_server, IRC_SERVER_OPTION_USERNAME));
else
weechat_log_printf (" username . . . . . . : '%s'",
weechat_log_printf (" username. . . . . . . . . : '%s'",
weechat_config_string (ptr_server->options[IRC_SERVER_OPTION_USERNAME]));
/* realname */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_REALNAME]))
weechat_log_printf (" realname . . . . . . : null ('%s')",
weechat_log_printf (" realname. . . . . . . . . : null ('%s')",
IRC_SERVER_OPTION_STRING(ptr_server, IRC_SERVER_OPTION_REALNAME));
else
weechat_log_printf (" realname . . . . . . : '%s'",
weechat_log_printf (" realname. . . . . . . . . : '%s'",
weechat_config_string (ptr_server->options[IRC_SERVER_OPTION_REALNAME]));
/* local_hostname */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_LOCAL_HOSTNAME]))
weechat_log_printf (" local_hostname . . . : null ('%s')",
weechat_log_printf (" local_hostname. . . . . . : null ('%s')",
IRC_SERVER_OPTION_STRING(ptr_server, IRC_SERVER_OPTION_LOCAL_HOSTNAME));
else
weechat_log_printf (" local_hostname . . . : '%s'",
weechat_log_printf (" local_hostname. . . . . . : '%s'",
weechat_config_string (ptr_server->options[IRC_SERVER_OPTION_LOCAL_HOSTNAME]));
/* usermode */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_USERMODE]))
weechat_log_printf (" usermode . . . . . . : null ('%s')",
weechat_log_printf (" usermode. . . . . . . . . : null ('%s')",
IRC_SERVER_OPTION_STRING(ptr_server, IRC_SERVER_OPTION_USERMODE));
else
weechat_log_printf (" usermode . . . . . . : '%s'",
weechat_log_printf (" usermode. . . . . . . . . : '%s'",
weechat_config_string (ptr_server->options[IRC_SERVER_OPTION_USERMODE]));
/* command */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_COMMAND]))
weechat_log_printf (" command. . . . . . . : null");
weechat_log_printf (" command . . . . . . . . . : null");
else
weechat_log_printf (" command. . . . . . . : (hidden)");
weechat_log_printf (" command . . . . . . . . . : (hidden)");
/* command_delay */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_COMMAND_DELAY]))
weechat_log_printf (" command_delay. . . . : null (%d)",
weechat_log_printf (" command_delay . . . . . . : null (%d)",
IRC_SERVER_OPTION_INTEGER(ptr_server, IRC_SERVER_OPTION_COMMAND_DELAY));
else
weechat_log_printf (" command_delay. . . . : %d",
weechat_log_printf (" command_delay . . . . . . : %d",
weechat_config_integer (ptr_server->options[IRC_SERVER_OPTION_COMMAND_DELAY]));
/* autojoin */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_AUTOJOIN]))
weechat_log_printf (" autojoin . . . . . . : null ('%s')",
weechat_log_printf (" autojoin. . . . . . . . . : null ('%s')",
IRC_SERVER_OPTION_STRING(ptr_server, IRC_SERVER_OPTION_AUTOJOIN));
else
weechat_log_printf (" autojoin . . . . . . : '%s'",
weechat_log_printf (" autojoin. . . . . . . . . : '%s'",
weechat_config_string (ptr_server->options[IRC_SERVER_OPTION_AUTOJOIN]));
/* autorejoin */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_AUTOREJOIN]))
weechat_log_printf (" autorejoin . . . . . : null (%s)",
weechat_log_printf (" autorejoin. . . . . . . . : null (%s)",
(IRC_SERVER_OPTION_BOOLEAN(ptr_server, IRC_SERVER_OPTION_AUTOREJOIN)) ?
"on" : "off");
else
weechat_log_printf (" autorejoin . . . . . : %s",
weechat_log_printf (" autorejoin. . . . . . . . : %s",
(weechat_config_boolean (ptr_server->options[IRC_SERVER_OPTION_AUTOREJOIN])) ?
"on" : "off");
/* autorejoin_delay */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_AUTOREJOIN_DELAY]))
weechat_log_printf (" autorejoin_delay . . : null (%d)",
weechat_log_printf (" autorejoin_delay. . . . . : null (%d)",
IRC_SERVER_OPTION_INTEGER(ptr_server, IRC_SERVER_OPTION_AUTOREJOIN_DELAY));
else
weechat_log_printf (" autorejoin_delay . . : %d",
weechat_log_printf (" autorejoin_delay. . . . . : %d",
weechat_config_integer (ptr_server->options[IRC_SERVER_OPTION_AUTOREJOIN_DELAY]));
/* connection_timeout */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_CONNECTION_TIMEOUT]))
weechat_log_printf (" connection_timeout . : null (%d)",
weechat_log_printf (" connection_timeout. . . . : null (%d)",
IRC_SERVER_OPTION_INTEGER(ptr_server, IRC_SERVER_OPTION_CONNECTION_TIMEOUT));
else
weechat_log_printf (" connection_timeout . : %d",
weechat_log_printf (" connection_timeout. . . . : %d",
weechat_config_integer (ptr_server->options[IRC_SERVER_OPTION_CONNECTION_TIMEOUT]));
/* anti_flood_prio_high */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_ANTI_FLOOD_PRIO_HIGH]))
weechat_log_printf (" anti_flood_prio_high : null (%d)",
weechat_log_printf (" anti_flood_prio_high. . . : null (%d)",
IRC_SERVER_OPTION_INTEGER(ptr_server, IRC_SERVER_OPTION_ANTI_FLOOD_PRIO_HIGH));
else
weechat_log_printf (" anti_flood_prio_high : %d",
weechat_log_printf (" anti_flood_prio_high. . . : %d",
weechat_config_integer (ptr_server->options[IRC_SERVER_OPTION_ANTI_FLOOD_PRIO_HIGH]));
/* anti_flood_prio_low */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_ANTI_FLOOD_PRIO_LOW]))
weechat_log_printf (" anti_flood_prio_low. : null (%d)",
weechat_log_printf (" anti_flood_prio_low . . . : null (%d)",
IRC_SERVER_OPTION_INTEGER(ptr_server, IRC_SERVER_OPTION_ANTI_FLOOD_PRIO_LOW));
else
weechat_log_printf (" anti_flood_prio_low. : %d",
weechat_log_printf (" anti_flood_prio_low . . . : %d",
weechat_config_integer (ptr_server->options[IRC_SERVER_OPTION_ANTI_FLOOD_PRIO_LOW]));
/* away_check */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_AWAY_CHECK]))
weechat_log_printf (" away_check . . . . . : null (%d)",
weechat_log_printf (" away_check. . . . . . . . : null (%d)",
IRC_SERVER_OPTION_INTEGER(ptr_server, IRC_SERVER_OPTION_AWAY_CHECK));
else
weechat_log_printf (" away_check . . . . . : %d",
weechat_log_printf (" away_check. . . . . . . . : %d",
weechat_config_integer (ptr_server->options[IRC_SERVER_OPTION_AWAY_CHECK]));
/* away_check_max_nicks */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_AWAY_CHECK_MAX_NICKS]))
weechat_log_printf (" away_check_max_nicks : null (%d)",
weechat_log_printf (" away_check_max_nicks. . . : null (%d)",
IRC_SERVER_OPTION_INTEGER(ptr_server, IRC_SERVER_OPTION_AWAY_CHECK_MAX_NICKS));
else
weechat_log_printf (" away_check_max_nicks : %d",
weechat_log_printf (" away_check_max_nicks. . . : %d",
weechat_config_integer (ptr_server->options[IRC_SERVER_OPTION_AWAY_CHECK_MAX_NICKS]));
/* msg_kick */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_MSG_KICK]))
weechat_log_printf (" msg_kick . . . . . . : null ('%s')",
weechat_log_printf (" msg_kick. . . . . . . . . : null ('%s')",
IRC_SERVER_OPTION_STRING(ptr_server, IRC_SERVER_OPTION_MSG_KICK));
else
weechat_log_printf (" msg_kick . . . . . . : '%s'",
weechat_log_printf (" msg_kick. . . . . . . . . : '%s'",
weechat_config_string (ptr_server->options[IRC_SERVER_OPTION_MSG_KICK]));
/* msg_part */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_MSG_PART]))
weechat_log_printf (" msg_part . . . . . . : null ('%s')",
weechat_log_printf (" msg_part. . . . . . . . . : null ('%s')",
IRC_SERVER_OPTION_STRING(ptr_server, IRC_SERVER_OPTION_MSG_PART));
else
weechat_log_printf (" msg_part . . . . . . : '%s'",
weechat_log_printf (" msg_part. . . . . . . . . : '%s'",
weechat_config_string (ptr_server->options[IRC_SERVER_OPTION_MSG_PART]));
/* msg_quit */
if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_MSG_QUIT]))
weechat_log_printf (" msg_quit . . . . . . : null ('%s')",
weechat_log_printf (" msg_quit. . . . . . . . . : null ('%s')",
IRC_SERVER_OPTION_STRING(ptr_server, IRC_SERVER_OPTION_MSG_QUIT));
else
weechat_log_printf (" msg_quit . . . . . . : '%s'",
weechat_log_printf (" msg_quit. . . . . . . . . : '%s'",
weechat_config_string (ptr_server->options[IRC_SERVER_OPTION_MSG_QUIT]));
/* other server variables */
weechat_log_printf (" temp_server. . . . . : %d", ptr_server->temp_server);
weechat_log_printf (" fake_server. . . . . : %d", ptr_server->fake_server);
weechat_log_printf (" reloading_from_config: %d", ptr_server->reloaded_from_config);
weechat_log_printf (" reloaded_from_config : %d", ptr_server->reloaded_from_config);
weechat_log_printf (" addresses_eval . . . : '%s'", ptr_server->addresses_eval);
weechat_log_printf (" addresses_count. . . : %d", ptr_server->addresses_count);
weechat_log_printf (" addresses_array. . . : 0x%lx", ptr_server->addresses_array);
weechat_log_printf (" ports_array. . . . . : 0x%lx", ptr_server->ports_array);
weechat_log_printf (" retry_array. . . . . : 0x%lx", ptr_server->retry_array);
weechat_log_printf (" index_current_address: %d", ptr_server->index_current_address);
weechat_log_printf (" current_address. . . : '%s'", ptr_server->current_address);
weechat_log_printf (" current_ip . . . . . : '%s'", ptr_server->current_ip);
weechat_log_printf (" current_port . . . . : %d", ptr_server->current_port);
weechat_log_printf (" current_retry. . . . : %d", ptr_server->current_retry);
weechat_log_printf (" sock . . . . . . . . : %d", ptr_server->sock);
weechat_log_printf (" hook_connect . . . . : 0x%lx", ptr_server->hook_connect);
weechat_log_printf (" hook_fd. . . . . . . : 0x%lx", ptr_server->hook_fd);
weechat_log_printf (" hook_timer_connection: 0x%lx", ptr_server->hook_timer_connection);
weechat_log_printf (" hook_timer_sasl. . . : 0x%lx", ptr_server->hook_timer_sasl);
weechat_log_printf (" is_connected . . . . : %d", ptr_server->is_connected);
weechat_log_printf (" ssl_connected. . . . : %d", ptr_server->ssl_connected);
weechat_log_printf (" disconnected . . . . : %d", ptr_server->disconnected);
weechat_log_printf (" gnutls_sess. . . . . : 0x%lx", ptr_server->gnutls_sess);
weechat_log_printf (" unterminated_message : '%s'", ptr_server->unterminated_message);
weechat_log_printf (" nicks_count. . . . . : %d", ptr_server->nicks_count);
weechat_log_printf (" nicks_array. . . . . : 0x%lx", ptr_server->nicks_array);
weechat_log_printf (" nick_first_tried . . : %d", ptr_server->nick_first_tried);
weechat_log_printf (" nick_alternate_number: %d", ptr_server->nick_alternate_number);
weechat_log_printf (" nick . . . . . . . . : '%s'", ptr_server->nick);
weechat_log_printf (" nick_modes . . . . . : '%s'", ptr_server->nick_modes);
weechat_log_printf (" host . . . . . . . . : '%s'", ptr_server->host);
weechat_log_printf (" checking_cap_ls. . . : %d", ptr_server->checking_cap_ls);
weechat_log_printf (" cap_ls . . . . . . . : 0x%lx (hashtable: '%s')",
weechat_log_printf (" temp_server . . . . . . . : %d", ptr_server->temp_server);
weechat_log_printf (" fake_server . . . . . . . : %d", ptr_server->fake_server);
weechat_log_printf (" reloading_from_config . . : %d", ptr_server->reloaded_from_config);
weechat_log_printf (" reloaded_from_config. . . : %d", ptr_server->reloaded_from_config);
weechat_log_printf (" addresses_eval. . . . . . : '%s'", ptr_server->addresses_eval);
weechat_log_printf (" addresses_count . . . . . : %d", ptr_server->addresses_count);
weechat_log_printf (" addresses_array . . . . . : 0x%lx", ptr_server->addresses_array);
weechat_log_printf (" ports_array . . . . . . . : 0x%lx", ptr_server->ports_array);
weechat_log_printf (" retry_array . . . . . . . : 0x%lx", ptr_server->retry_array);
weechat_log_printf (" index_current_address . . : %d", ptr_server->index_current_address);
weechat_log_printf (" current_address . . . . . : '%s'", ptr_server->current_address);
weechat_log_printf (" current_ip. . . . . . . . : '%s'", ptr_server->current_ip);
weechat_log_printf (" current_port. . . . . . . : %d", ptr_server->current_port);
weechat_log_printf (" current_retry . . . . . . : %d", ptr_server->current_retry);
weechat_log_printf (" sock. . . . . . . . . . . : %d", ptr_server->sock);
weechat_log_printf (" hook_connect. . . . . . . : 0x%lx", ptr_server->hook_connect);
weechat_log_printf (" hook_fd . . . . . . . . . : 0x%lx", ptr_server->hook_fd);
weechat_log_printf (" hook_timer_connection . . : 0x%lx", ptr_server->hook_timer_connection);
weechat_log_printf (" hook_timer_sasl . . . . . : 0x%lx", ptr_server->hook_timer_sasl);
weechat_log_printf (" sasl_scram_client_first . : '%s'", ptr_server->sasl_scram_client_first);
weechat_log_printf (" sasl_scram_salted_pwd . . : (hidden)");
weechat_log_printf (" sasl_scram_salted_pwd_size: %d", ptr_server->sasl_scram_salted_pwd_size);
weechat_log_printf (" sasl_scram_auth_message . : (hidden)");
weechat_log_printf (" is_connected. . . . . . . : %d", ptr_server->is_connected);
weechat_log_printf (" ssl_connected . . . . . . : %d", ptr_server->ssl_connected);
weechat_log_printf (" disconnected. . . . . . . : %d", ptr_server->disconnected);
weechat_log_printf (" gnutls_sess . . . . . . . : 0x%lx", ptr_server->gnutls_sess);
weechat_log_printf (" unterminated_message. . . : '%s'", ptr_server->unterminated_message);
weechat_log_printf (" nicks_count . . . . . . . : %d", ptr_server->nicks_count);
weechat_log_printf (" nicks_array . . . . . . . : 0x%lx", ptr_server->nicks_array);
weechat_log_printf (" nick_first_tried. . . . . : %d", ptr_server->nick_first_tried);
weechat_log_printf (" nick_alternate_number . . : %d", ptr_server->nick_alternate_number);
weechat_log_printf (" nick. . . . . . . . . . . : '%s'", ptr_server->nick);
weechat_log_printf (" nick_modes. . . . . . . . : '%s'", ptr_server->nick_modes);
weechat_log_printf (" host. . . . . . . . . . . : '%s'", ptr_server->host);
weechat_log_printf (" checking_cap_ls . . . . . : %d", ptr_server->checking_cap_ls);
weechat_log_printf (" cap_ls. . . . . . . . . . : 0x%lx (hashtable: '%s')",
ptr_server->cap_ls,
weechat_hashtable_get_string (ptr_server->cap_ls, "keys_values"));
weechat_log_printf (" checking_cap_list. . : %d", ptr_server->checking_cap_list);
weechat_log_printf (" cap_list . . . . . . : 0x%lx (hashtable: '%s')",
weechat_log_printf (" checking_cap_list . . . . : %d", ptr_server->checking_cap_list);
weechat_log_printf (" cap_list. . . . . . . . . : 0x%lx (hashtable: '%s')",
ptr_server->cap_list,
weechat_hashtable_get_string (ptr_server->cap_list, "keys_values"));
weechat_log_printf (" isupport . . . . . . : '%s'", ptr_server->isupport);
weechat_log_printf (" prefix_modes . . . . : '%s'", ptr_server->prefix_modes);
weechat_log_printf (" prefix_chars . . . . : '%s'", ptr_server->prefix_chars);
weechat_log_printf (" nick_max_length. . . : %d", ptr_server->nick_max_length);
weechat_log_printf (" user_max_length. . . : %d", ptr_server->user_max_length);
weechat_log_printf (" host_max_length. . . : %d", ptr_server->host_max_length);
weechat_log_printf (" casemapping. . . . . : %d (%s)",
weechat_log_printf (" isupport. . . . . . . . . : '%s'", ptr_server->isupport);
weechat_log_printf (" prefix_modes. . . . . . . : '%s'", ptr_server->prefix_modes);
weechat_log_printf (" prefix_chars. . . . . . . : '%s'", ptr_server->prefix_chars);
weechat_log_printf (" nick_max_length . . . . . : %d", ptr_server->nick_max_length);
weechat_log_printf (" user_max_length . . . . . : %d", ptr_server->user_max_length);
weechat_log_printf (" host_max_length . . . . . : %d", ptr_server->host_max_length);
weechat_log_printf (" casemapping . . . . . . . : %d (%s)",
ptr_server->casemapping,
irc_server_casemapping_string[ptr_server->casemapping]);
weechat_log_printf (" utf8mapping. . . . . : %d (%s)",
weechat_log_printf (" utf8mapping . . . . . . . : %d (%s)",
ptr_server->utf8mapping,
irc_server_utf8mapping_string[ptr_server->utf8mapping]);
weechat_log_printf (" chantypes. . . . . . : '%s'", ptr_server->chantypes);
weechat_log_printf (" chanmodes. . . . . . : '%s'", ptr_server->chanmodes);
weechat_log_printf (" monitor. . . . . . . : %d", ptr_server->monitor);
weechat_log_printf (" monitor_time . . . . : %lld", (long long)ptr_server->monitor_time);
weechat_log_printf (" reconnect_delay. . . : %d", ptr_server->reconnect_delay);
weechat_log_printf (" reconnect_start. . . : %lld", (long long)ptr_server->reconnect_start);
weechat_log_printf (" command_time . . . . : %lld", (long long)ptr_server->command_time);
weechat_log_printf (" reconnect_join . . . : %d", ptr_server->reconnect_join);
weechat_log_printf (" disable_autojoin . . : %d", ptr_server->disable_autojoin);
weechat_log_printf (" is_away. . . . . . . : %d", ptr_server->is_away);
weechat_log_printf (" away_message . . . . : '%s'", ptr_server->away_message);
weechat_log_printf (" away_time. . . . . . : %lld", (long long)ptr_server->away_time);
weechat_log_printf (" lag. . . . . . . . . : %d", ptr_server->lag);
weechat_log_printf (" lag_displayed. . . . : %d", ptr_server->lag_displayed);
weechat_log_printf (" lag_check_time . . . : tv_sec:%d, tv_usec:%d",
weechat_log_printf (" chantypes . . . . . . . . : '%s'", ptr_server->chantypes);
weechat_log_printf (" chanmodes . . . . . . . . : '%s'", ptr_server->chanmodes);
weechat_log_printf (" monitor . . . . . . . . . : %d", ptr_server->monitor);
weechat_log_printf (" monitor_time. . . . . . . : %lld", (long long)ptr_server->monitor_time);
weechat_log_printf (" reconnect_delay . . . . . : %d", ptr_server->reconnect_delay);
weechat_log_printf (" reconnect_start . . . . . : %lld", (long long)ptr_server->reconnect_start);
weechat_log_printf (" command_time. . . . . . . : %lld", (long long)ptr_server->command_time);
weechat_log_printf (" reconnect_join. . . . . . : %d", ptr_server->reconnect_join);
weechat_log_printf (" disable_autojoin. . . . . : %d", ptr_server->disable_autojoin);
weechat_log_printf (" is_away . . . . . . . . . : %d", ptr_server->is_away);
weechat_log_printf (" away_message. . . . . . . : '%s'", ptr_server->away_message);
weechat_log_printf (" away_time . . . . . . . . : %lld", (long long)ptr_server->away_time);
weechat_log_printf (" lag . . . . . . . . . . . : %d", ptr_server->lag);
weechat_log_printf (" lag_displayed . . . . . . : %d", ptr_server->lag_displayed);
weechat_log_printf (" lag_check_time. . . . . . : tv_sec:%d, tv_usec:%d",
ptr_server->lag_check_time.tv_sec,
ptr_server->lag_check_time.tv_usec);
weechat_log_printf (" lag_next_check . . . : %lld", (long long)ptr_server->lag_next_check);
weechat_log_printf (" lag_last_refresh . . : %lld", (long long)ptr_server->lag_last_refresh);
weechat_log_printf (" cmd_list_regexp. . . : 0x%lx", ptr_server->cmd_list_regexp);
weechat_log_printf (" last_user_message. . : %lld", (long long)ptr_server->last_user_message);
weechat_log_printf (" last_away_check. . . : %lld", (long long)ptr_server->last_away_check);
weechat_log_printf (" last_data_purge. . . : %lld", (long long)ptr_server->last_data_purge);
weechat_log_printf (" lag_next_check. . . . . . : %lld", (long long)ptr_server->lag_next_check);
weechat_log_printf (" lag_last_refresh. . . . . : %lld", (long long)ptr_server->lag_last_refresh);
weechat_log_printf (" cmd_list_regexp . . . . . : 0x%lx", ptr_server->cmd_list_regexp);
weechat_log_printf (" last_user_message . . . . : %lld", (long long)ptr_server->last_user_message);
weechat_log_printf (" last_away_check . . . . . : %lld", (long long)ptr_server->last_away_check);
weechat_log_printf (" last_data_purge . . . . . : %lld", (long long)ptr_server->last_data_purge);
for (i = 0; i < IRC_SERVER_NUM_OUTQUEUES_PRIO; i++)
{
weechat_log_printf (" outqueue[%02d] . . . . : 0x%lx", i, ptr_server->outqueue[i]);
weechat_log_printf (" last_outqueue[%02d]. . : 0x%lx", i, ptr_server->last_outqueue[i]);
weechat_log_printf (" outqueue[%02d]. . . . . . . : 0x%lx", i, ptr_server->outqueue[i]);
weechat_log_printf (" last_outqueue[%02d] . . . . : 0x%lx", i, ptr_server->last_outqueue[i]);
}
weechat_log_printf (" redirects. . . . . . : 0x%lx", ptr_server->redirects);
weechat_log_printf (" last_redirect. . . . : 0x%lx", ptr_server->last_redirect);
weechat_log_printf (" notify_list. . . . . : 0x%lx", ptr_server->notify_list);
weechat_log_printf (" last_notify. . . . . : 0x%lx", ptr_server->last_notify);
weechat_log_printf (" notify_count . . . . : %d", ptr_server->notify_count);
weechat_log_printf (" join_manual. . . . . : 0x%lx (hashtable: '%s')",
weechat_log_printf (" redirects . . . . . . . . : 0x%lx", ptr_server->redirects);
weechat_log_printf (" last_redirect . . . . . . : 0x%lx", ptr_server->last_redirect);
weechat_log_printf (" notify_list . . . . . . . : 0x%lx", ptr_server->notify_list);
weechat_log_printf (" last_notify . . . . . . . : 0x%lx", ptr_server->last_notify);
weechat_log_printf (" notify_count. . . . . . . : %d", ptr_server->notify_count);
weechat_log_printf (" join_manual . . . . . . . : 0x%lx (hashtable: '%s')",
ptr_server->join_manual,
weechat_hashtable_get_string (ptr_server->join_manual, "keys_values"));
weechat_log_printf (" join_channel_key . . : 0x%lx (hashtable: '%s')",
weechat_log_printf (" join_channel_key. . . . . : 0x%lx (hashtable: '%s')",
ptr_server->join_channel_key,
weechat_hashtable_get_string (ptr_server->join_channel_key, "keys_values"));
weechat_log_printf (" join_noswitch. . . . : 0x%lx (hashtable: '%s')",
weechat_log_printf (" join_noswitch . . . . . . : 0x%lx (hashtable: '%s')",
ptr_server->join_noswitch,
weechat_hashtable_get_string (ptr_server->join_noswitch, "keys_values"));
weechat_log_printf (" buffer . . . . . . . : 0x%lx", ptr_server->buffer);
weechat_log_printf (" buffer_as_string . . : 0x%lx", ptr_server->buffer_as_string);
weechat_log_printf (" channels . . . . . . : 0x%lx", ptr_server->channels);
weechat_log_printf (" last_channel . . . . : 0x%lx", ptr_server->last_channel);
weechat_log_printf (" prev_server. . . . . : 0x%lx", ptr_server->prev_server);
weechat_log_printf (" next_server. . . . . : 0x%lx", ptr_server->next_server);
weechat_log_printf (" buffer. . . . . . . . . . : 0x%lx", ptr_server->buffer);
weechat_log_printf (" buffer_as_string. . . . . : 0x%lx", ptr_server->buffer_as_string);
weechat_log_printf (" channels. . . . . . . . . : 0x%lx", ptr_server->channels);
weechat_log_printf (" last_channel. . . . . . . : 0x%lx", ptr_server->last_channel);
weechat_log_printf (" prev_server . . . . . . . : 0x%lx", ptr_server->prev_server);
weechat_log_printf (" next_server . . . . . . . : 0x%lx", ptr_server->next_server);
irc_redirect_print_log (ptr_server);

View File

@ -193,6 +193,10 @@ struct t_irc_server
struct t_hook *hook_fd; /* hook for server socket */
struct t_hook *hook_timer_connection; /* timer for connection */
struct t_hook *hook_timer_sasl; /* timer for SASL authentication */
char *sasl_scram_client_first; /* first message sent for SASL SCRAM */
char *sasl_scram_salted_pwd; /* salted password for SASL SCRAM */
int sasl_scram_salted_pwd_size; /* size of salted password for SASL SCRAM*/
char *sasl_scram_auth_message; /* auth message for SASL SCRAM */
int is_connected; /* 1 if WeeChat is connected to server */
int ssl_connected; /* = 1 if connected with SSL */
int disconnected; /* 1 if server has been disconnected */
@ -388,6 +392,7 @@ extern void irc_server_switch_address (struct t_irc_server *server,
extern void irc_server_disconnect (struct t_irc_server *server,
int switch_address, int reconnect);
extern void irc_server_disconnect_all ();
extern void irc_server_free_sasl_data (struct t_irc_server *server);
extern void irc_server_free (struct t_irc_server *server);
extern int irc_server_xfer_send_ready_cb (const void *pointer, void *data,
const char *signal,