Tkabber

Check-in [434acd66d1]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Relaxed the strategy of replay attack prevention: don't add own JID but a recipient's JID, and don't add extra info to the presence updates. Removed the loginconf(sslkeyfile) option, so now if someone wants to use a client sertificate, he'll have to bundle the private key together with the certificate itself. Updated Russian and Ukrainian translations.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 434acd66d11f51075e3c1ddd896f6a6e8fd99e73
User & Date: sgolovan 2016-01-07 17:21:16
Context
2016-01-12
07:50
Read the logged messages not only for the JID which chat window is being opened, but also for all JIDs in a metacontact it belongs. This option is disabled by default. Since the metacontacts info isn't cached locally, this feature doesn't work for windows which open when saved state is restored on Tkabber start. check-in: 8fd4536226 user: sgolovan tags: trunk
2016-01-07
17:21
Relaxed the strategy of replay attack prevention: don't add own JID but a recipient's JID, and don't add extra info to the presence updates. Removed the loginconf(sslkeyfile) option, so now if someone wants to use a client sertificate, he'll have to bundle the private key together with the certificate itself. Updated Russian and Ukrainian translations. check-in: 434acd66d1 user: sgolovan tags: trunk
2016-01-06
20:06
Fixed interval between reconnections. check-in: 8c215baf06 user: sgolovan tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to ChangeLog.













1
2
3
4
5
6
7












2016-01-06  Sergei Golovan  <sgolovan@nes.ru>

	* login.tcl, tkabber.tcl: Use 'from' attribute when opening XMPP
	  streams.

	* login.tcl: Fixed interval between reconnections.

>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2016-01-07  Sergei Golovan  <sgolovan@nes.ru>

	* plugins/general/gpgme.tcl: Relaxed the strategy of replay attack
	  prevention: don't add own JID but a recipient's JID, and don't add
	  extra info to the presence updates.

	* login.tcl: Removed the loginconf(sslkeyfile) option, so now if
	  someone wants to use a client sertificate, he'll have to bundle the
	  private key together with the certificate itself.

	* msgs/ru.msg, msgs/uk.msg: Updated Russian and Ukrainian translations.

2016-01-06  Sergei Golovan  <sgolovan@nes.ru>

	* login.tcl, tkabber.tcl: Use 'from' attribute when opening XMPP
	  streams.

	* login.tcl: Fixed interval between reconnections.

Changes to login.tcl.

114
115
116
117
118
119
120

121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
        [::msgcat::mc "XMPP stream options when connecting to server."] \
        -group Login -type options \
        -values $values
}

if {$use_tls} {
    custom::defvar loginconf(sslcertfile) "" \

        [::msgcat::mc "SSL certificate file (optional)."] \
        -group Login -type file
    custom::defvar loginconf(sslcacertstore) "" \
        [::msgcat::mc "SSL certification authority file or\
                       directory (optional)."] \
        -group Login -type file
    custom::defvar loginconf(sslkeyfile) "" \
        [::msgcat::mc "SSL private key file (optional)."] \
        -group Login -type file
}

custom::defvar loginconf(usealtserver) 0 \
    [::msgcat::mc "Use explicitly-specified server address and port."] \
    -group Login -type boolean
custom::defvar loginconf(altserver) "" \
    [::msgcat::mc "Server name or IP-address."] \







>
|





<
<
<







114
115
116
117
118
119
120
121
122
123
124
125
126
127



128
129
130
131
132
133
134
        [::msgcat::mc "XMPP stream options when connecting to server."] \
        -group Login -type options \
        -values $values
}

if {$use_tls} {
    custom::defvar loginconf(sslcertfile) "" \
        [::msgcat::mc "SSL client certificate file bundled with private\
                       key (optional)."] \
        -group Login -type file
    custom::defvar loginconf(sslcacertstore) "" \
        [::msgcat::mc "SSL certification authority file or\
                       directory (optional)."] \
        -group Login -type file



}

custom::defvar loginconf(usealtserver) 0 \
    [::msgcat::mc "Use explicitly-specified server address and port."] \
    -group Login -type boolean
custom::defvar loginconf(altserver) "" \
    [::msgcat::mc "Server name or IP-address."] \
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
            }
            if {![catch ::tls::ciphers tls1.2]} {
                lappend args -tls1.2 1
            }
            lappend args -tls1          1 \
                         -certfile      $lc(sslcertfile) \
                         -castore       $lc(sslcacertstore) \
                         -keyfile       $lc(sslkeyfile) \
                         -verifycommand [list client:tls_callback $xlib] \
                         -infocommand   [list update_tls_info $xlib]
        }

        lappend args -transport $transport

        if {$lc(usealtserver)} {







<







643
644
645
646
647
648
649

650
651
652
653
654
655
656
            }
            if {![catch ::tls::ciphers tls1.2]} {
                lappend args -tls1.2 1
            }
            lappend args -tls1          1 \
                         -certfile      $lc(sslcertfile) \
                         -castore       $lc(sslcacertstore) \

                         -verifycommand [list client:tls_callback $xlib] \
                         -infocommand   [list update_tls_info $xlib]
        }

        lappend args -transport $transport

        if {$lc(usealtserver)} {
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
            lappend opts -tls1.2 1
        }
        ::xmpp::starttls::starttls $xlib {*}$opts \
                        -command       [list login_login2 $xlib $logindata] \
                        -tls1          1 \
                        -certfile      $lc(sslcertfile) \
                        -castore       $lc(sslcacertstore) \
                        -keyfile       $lc(sslkeyfile) \
                        -verifycommand [list client:tls_callback $xlib] \
                        -infocommand   [list update_tls_info $xlib]
    } elseif {!$lc(usebosh) && !$lc(usehttppoll) && \
            $have_compress && $lc(stream_options) == "compressed"} {
        ::xmpp::compress::compress $xlib \
                        -command     [list login_login2 $xlib $logindata]
    } else {







<







730
731
732
733
734
735
736

737
738
739
740
741
742
743
            lappend opts -tls1.2 1
        }
        ::xmpp::starttls::starttls $xlib {*}$opts \
                        -command       [list login_login2 $xlib $logindata] \
                        -tls1          1 \
                        -certfile      $lc(sslcertfile) \
                        -castore       $lc(sslcacertstore) \

                        -verifycommand [list client:tls_callback $xlib] \
                        -infocommand   [list update_tls_info $xlib]
    } elseif {!$lc(usebosh) && !$lc(usehttppoll) && \
            $have_compress && $lc(stream_options) == "compressed"} {
        ::xmpp::compress::compress $xlib \
                        -command     [list login_login2 $xlib $logindata]
    } else {

Changes to msgs/ru.msg.

148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
::msgcat::mcset ru "Add new item" "Добавить новый элемент"
::msgcat::mcset ru "Add new user..." "Добавить нового пользователя..."
::msgcat::mcset ru "Add proxy" "Добавить прокси"
::msgcat::mcset ru "Add roster group by JID regexp" "Добавить группу по\
        регулярному выражению для JID"
::msgcat::mcset ru "Add user to roster..." "Добавить пользователя в\
        контакты..."
::msgcat::mcset ru "Add your JID and timestamp to the GPG-signed outgoing\
        messages or presence updates. This prevents replay attacks, but shows\
        your JID in every message or presence status." "Добавлять ваш JID и\
        текущее время к сообщениям и присутствию, подписанным с помощью GPG.\
        Это позволяет предотвратить атаку повторного воспроизведения, но\
        показывает ваш реальный JID в каждом сообщении и обновлении статуса."
::msgcat::mcset ru "Added abbreviation:\n%s: %s" "Добавлено сокращение:\n%s:\
        %s"
::msgcat::mcset ru "Address" "Адрес"
::msgcat::mcset ru "Address 2" "Адрес 2"
::msgcat::mcset ru "Address 2:" "Адрес 2:"
::msgcat::mcset ru "Address Error" "Ошибка адреса"
::msgcat::mcset ru "Address type not supported" "Тип адреса не\
        поддерживается"
::msgcat::mcset ru "Address type not supported by SOCKS proxy" "Тип адреса не\
        поддерживается SOCKS5 прокси"
::msgcat::mcset ru "Address:" "Адрес:"
::msgcat::mcset ru "admin" "админ"
::msgcat::mcset ru "Admin tools" "Инструменты администратора"
::msgcat::mcset ru "Affiliation" "Ранг"
::msgcat::mcset ru "afraid" "испуганное"
::msgcat::mcset ru "Alexey Shchepin" "Алексей Щепин"
::msgcat::mcset ru "All" "Все"
::msgcat::mcset ru "All Files" "Все файлы"
::msgcat::mcset ru "All files" "Все файлы"
::msgcat::mcset ru "All items:" "Добавить элементы:"
::msgcat::mcset ru "All unread messages were forwarded to %s." "Все\
        непрочитанные сообщения были пересланы %s."
::msgcat::mcset ru "Allow downloading" "Разрешение загрузки"
::msgcat::mcset ru "Allow plaintext authentication mechanisms" "Разрешить\
        механизмы аутентификации, использующие открытый текст"







|
|
|
|
|
<

















<







148
149
150
151
152
153
154
155
156
157
158
159

160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176

177
178
179
180
181
182
183
::msgcat::mcset ru "Add new item" "Добавить новый элемент"
::msgcat::mcset ru "Add new user..." "Добавить нового пользователя..."
::msgcat::mcset ru "Add proxy" "Добавить прокси"
::msgcat::mcset ru "Add roster group by JID regexp" "Добавить группу по\
        регулярному выражению для JID"
::msgcat::mcset ru "Add user to roster..." "Добавить пользователя в\
        контакты..."
::msgcat::mcset ru "Add the recipient's JID and timestamp to the GPG-signed\
        or encrypted outgoing messages. This prevents replay attacks." \
        "Добавлять JID получателя и текущее время к сообщениям, подписанным\
        или зашифрованным с помощью GPG. Это позволяет предотвратить атаку\
        повторного воспроизведения."

::msgcat::mcset ru "Added abbreviation:\n%s: %s" "Добавлено сокращение:\n%s:\
        %s"
::msgcat::mcset ru "Address" "Адрес"
::msgcat::mcset ru "Address 2" "Адрес 2"
::msgcat::mcset ru "Address 2:" "Адрес 2:"
::msgcat::mcset ru "Address Error" "Ошибка адреса"
::msgcat::mcset ru "Address type not supported" "Тип адреса не\
        поддерживается"
::msgcat::mcset ru "Address type not supported by SOCKS proxy" "Тип адреса не\
        поддерживается SOCKS5 прокси"
::msgcat::mcset ru "Address:" "Адрес:"
::msgcat::mcset ru "admin" "админ"
::msgcat::mcset ru "Admin tools" "Инструменты администратора"
::msgcat::mcset ru "Affiliation" "Ранг"
::msgcat::mcset ru "afraid" "испуганное"
::msgcat::mcset ru "Alexey Shchepin" "Алексей Щепин"
::msgcat::mcset ru "All" "Все"

::msgcat::mcset ru "All files" "Все файлы"
::msgcat::mcset ru "All items:" "Добавить элементы:"
::msgcat::mcset ru "All unread messages were forwarded to %s." "Все\
        непрочитанные сообщения были пересланы %s."
::msgcat::mcset ru "Allow downloading" "Разрешение загрузки"
::msgcat::mcset ru "Allow plaintext authentication mechanisms" "Разрешить\
        механизмы аутентификации, использующие открытый текст"
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
::msgcat::mcset ru "Role:" "Должность:"
::msgcat::mcset ru "Room %s is successfully created" "Комната %s успешно\
        создана"
::msgcat::mcset ru "Room is created" "Комната создана"
::msgcat::mcset ru "Room is destroyed" "Комната удалена"
::msgcat::mcset ru "Room:" "Комната:"
::msgcat::mcset ru "Roster" "Контакты"
::msgcat::mcset ru "Roster Files" "Файлы контактов"
::msgcat::mcset ru "Roster files" "Файлы контактов"
::msgcat::mcset ru "Roster filter." "Фильтр контактов."
::msgcat::mcset ru "Roster group:" "Группа в контактах:"
::msgcat::mcset ru "Roster import for %s is completed" "Импорт контактов для\
        %s завершен"
::msgcat::mcset ru "Roster item may be dropped not only over group name but\
        also over any item in group." "При перетаскивании контакта из одной\







<







1709
1710
1711
1712
1713
1714
1715

1716
1717
1718
1719
1720
1721
1722
::msgcat::mcset ru "Role:" "Должность:"
::msgcat::mcset ru "Room %s is successfully created" "Комната %s успешно\
        создана"
::msgcat::mcset ru "Room is created" "Комната создана"
::msgcat::mcset ru "Room is destroyed" "Комната удалена"
::msgcat::mcset ru "Room:" "Комната:"
::msgcat::mcset ru "Roster" "Контакты"

::msgcat::mcset ru "Roster files" "Файлы контактов"
::msgcat::mcset ru "Roster filter." "Фильтр контактов."
::msgcat::mcset ru "Roster group:" "Группа в контактах:"
::msgcat::mcset ru "Roster import for %s is completed" "Импорт контактов для\
        %s завершен"
::msgcat::mcset ru "Roster item may be dropped not only over group name but\
        also over any item in group." "При перетаскивании контакта из одной\
1785
1786
1787
1788
1789
1790
1791



1792
1793
1794
1795
1796
1797
1798
::msgcat::mcset ru "Send message to %s" "Отправка сообщения %s"
::msgcat::mcset ru "Send message to all users in group..." "Отправить\
        сообщение всем пользователям в группе..."
::msgcat::mcset ru "Send message to group" "Отправка сообщения группе"
::msgcat::mcset ru "Send message to group %s" "Отправка сообщения группе %s"
::msgcat::mcset ru "Send message..." "Отправить сообщение..."
::msgcat::mcset ru "Send request to: " "Отправка запроса: "



::msgcat::mcset ru "Send subscription at %s" "Отправка запроса на подписку на\
        %s"
::msgcat::mcset ru "Send subscription request" "Отправка запроса на подписку"
::msgcat::mcset ru "Send subscription request to %s" "Отправка запроса на\
        подписку %s"
::msgcat::mcset ru "Send subscription to: " "Отправка запроса на подписку: "
::msgcat::mcset ru "Send to server" "Отправить на сервер"







>
>
>







1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
::msgcat::mcset ru "Send message to %s" "Отправка сообщения %s"
::msgcat::mcset ru "Send message to all users in group..." "Отправить\
        сообщение всем пользователям в группе..."
::msgcat::mcset ru "Send message to group" "Отправка сообщения группе"
::msgcat::mcset ru "Send message to group %s" "Отправка сообщения группе %s"
::msgcat::mcset ru "Send message..." "Отправить сообщение..."
::msgcat::mcset ru "Send request to: " "Отправка запроса: "
::msgcat::mcset ru "Select room %s participants for encrypting traffic to" \
        "Выберите участников конференции %s, для кого вы будете шифровать\
        сообщения"
::msgcat::mcset ru "Send subscription at %s" "Отправка запроса на подписку на\
        %s"
::msgcat::mcset ru "Send subscription request" "Отправка запроса на подписку"
::msgcat::mcset ru "Send subscription request to %s" "Отправка запроса на\
        подписку %s"
::msgcat::mcset ru "Send subscription to: " "Отправка запроса на подписку: "
::msgcat::mcset ru "Send to server" "Отправить на сервер"
2018
2019
2020
2021
2022
2023
2024
2025

2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
        "Указывает режим поиска в окнах разговора, протокола и обзора служб.\
        \"substring\" ищет подстроку, \"glob\" позволяет использовать\
        подстановочные символы, \"regexp\" использует регулярные выражения."
::msgcat::mcset ru "Speed:" "Скорость:"
::msgcat::mcset ru "Spell check options." "Параметры проверки правописания."
::msgcat::mcset ru "Spelling" "Орфография"
::msgcat::mcset ru "SSL & Compression" "SSL & Сжатие"
::msgcat::mcset ru "SSL certificate file (optional)." "Файл сертификата SSL\

        (необязательный параметр)."
::msgcat::mcset ru "SSL certificate:" "Сертификат SSL:"
::msgcat::mcset ru "SSL certification authority file or directory\
        (optional)." "Файл или директория центра сертификации (CA) SSL\
        (необязательный параметр)."
::msgcat::mcset ru "SSL Info" "Информация об SSL"
::msgcat::mcset ru "SSL private key file (optional)." "Файл секретного ключа\
        SSL ((необязательный параметр)."
::msgcat::mcset ru "Start chat" "Начать беседу"
::msgcat::mcset ru "Starting auto-away" "Устанавливается состояние \"Отошёл\"\
        (по бездействию)"
::msgcat::mcset ru "Starting login" "Начинается подключение"
::msgcat::mcset ru "STARTTLS aborted" "STARTTLS прерван"
::msgcat::mcset ru "STARTTLS failed" "STARTTLS не удался"
::msgcat::mcset ru "STARTTLS successful" "STARTTLS успешный"







|
>
|





<
<







2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032


2033
2034
2035
2036
2037
2038
2039
        "Указывает режим поиска в окнах разговора, протокола и обзора служб.\
        \"substring\" ищет подстроку, \"glob\" позволяет использовать\
        подстановочные символы, \"regexp\" использует регулярные выражения."
::msgcat::mcset ru "Speed:" "Скорость:"
::msgcat::mcset ru "Spell check options." "Параметры проверки правописания."
::msgcat::mcset ru "Spelling" "Орфография"
::msgcat::mcset ru "SSL & Compression" "SSL & Сжатие"
::msgcat::mcset ru "SSL client certificate file bundled with private key\
        (optional)." "Файл клиентского сертификата SSL вместе с закрытым\
        ключом (необязательный параметр)."
::msgcat::mcset ru "SSL certificate:" "Сертификат SSL:"
::msgcat::mcset ru "SSL certification authority file or directory\
        (optional)." "Файл или директория центра сертификации (CA) SSL\
        (необязательный параметр)."
::msgcat::mcset ru "SSL Info" "Информация об SSL"


::msgcat::mcset ru "Start chat" "Начать беседу"
::msgcat::mcset ru "Starting auto-away" "Устанавливается состояние \"Отошёл\"\
        (по бездействию)"
::msgcat::mcset ru "Starting login" "Начинается подключение"
::msgcat::mcset ru "STARTTLS aborted" "STARTTLS прерван"
::msgcat::mcset ru "STARTTLS failed" "STARTTLS не удался"
::msgcat::mcset ru "STARTTLS successful" "STARTTLS успешный"

Changes to msgs/uk.msg.

49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
::msgcat::mcset uk "Address 2:" "Адреса 2:"
::msgcat::mcset uk "Address Error" "Помилка адреси"
::msgcat::mcset uk "Address:" "Адреса:"
::msgcat::mcset uk "Admin tools" "Інструменти адміністратора"
::msgcat::mcset uk "Affiliation" "Ранг"
::msgcat::mcset uk "Alexey Shchepin" "Олексій Щєпін"
::msgcat::mcset uk "All" "Все"
::msgcat::mcset uk "All Files" "Всі файли"
::msgcat::mcset uk "All files" "Всі файли"
::msgcat::mcset uk "Allow downloading" "Дозволити завантаження"
::msgcat::mcset uk "Allow plaintext authentication mechanisms" "Дозволити\
        механізми авторизації, що використовують відкритий текст"
::msgcat::mcset uk "Allow plaintext authentication mechanisms (when password\
        is transmitted unencrypted)." "Дозволити механізми авторизації, що\
        використовують відкритий текст (при цьому пароль передається\







<







49
50
51
52
53
54
55

56
57
58
59
60
61
62
::msgcat::mcset uk "Address 2:" "Адреса 2:"
::msgcat::mcset uk "Address Error" "Помилка адреси"
::msgcat::mcset uk "Address:" "Адреса:"
::msgcat::mcset uk "Admin tools" "Інструменти адміністратора"
::msgcat::mcset uk "Affiliation" "Ранг"
::msgcat::mcset uk "Alexey Shchepin" "Олексій Щєпін"
::msgcat::mcset uk "All" "Все"

::msgcat::mcset uk "All files" "Всі файли"
::msgcat::mcset uk "Allow downloading" "Дозволити завантаження"
::msgcat::mcset uk "Allow plaintext authentication mechanisms" "Дозволити\
        механізми авторизації, що використовують відкритий текст"
::msgcat::mcset uk "Allow plaintext authentication mechanisms (when password\
        is transmitted unencrypted)." "Дозволити механізми авторизації, що\
        використовують відкритий текст (при цьому пароль передається\
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
::msgcat::mcset uk "Role" "Роль"
::msgcat::mcset uk "Role:" "Роль:"
::msgcat::mcset uk "Room %s is successfully created" "Кімната %s створена\
        успішно"
::msgcat::mcset uk "Room is created" "Кімната створена"
::msgcat::mcset uk "Room is destroyed" "Кімната видалена"
::msgcat::mcset uk "Roster" "Ростер"
::msgcat::mcset uk "Roster Files" "Файли ростерів"
::msgcat::mcset uk "Roster group:" "Група ростера"
::msgcat::mcset uk "Roster item may be dropped not only over group name but\
        also over any item in group." "При перетягуванні контакта з однієї\
        групи ростера в іншу, його можна відпустити не тільки над назвою\
        групи але й над будь-яким контактом в цій групі."
::msgcat::mcset uk "Roster Notes" "Примітки у контактах"
::msgcat::mcset uk "Roster options." "Параметри ростера."







<







1056
1057
1058
1059
1060
1061
1062

1063
1064
1065
1066
1067
1068
1069
::msgcat::mcset uk "Role" "Роль"
::msgcat::mcset uk "Role:" "Роль:"
::msgcat::mcset uk "Room %s is successfully created" "Кімната %s створена\
        успішно"
::msgcat::mcset uk "Room is created" "Кімната створена"
::msgcat::mcset uk "Room is destroyed" "Кімната видалена"
::msgcat::mcset uk "Roster" "Ростер"

::msgcat::mcset uk "Roster group:" "Група ростера"
::msgcat::mcset uk "Roster item may be dropped not only over group name but\
        also over any item in group." "При перетягуванні контакта з однієї\
        групи ростера в іншу, його можна відпустити не тільки над назвою\
        групи але й над будь-яким контактом в цій групі."
::msgcat::mcset uk "Roster Notes" "Примітки у контактах"
::msgcat::mcset uk "Roster options." "Параметри ростера."
1254
1255
1256
1257
1258
1259
1260
1261

1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
        disco windows. \"substring\" searches exact substring, \"glob\" uses\
        glob style matching, \"regexp\" allows to match regular expression."\
        "Вказує метод пошуку в вікнах чату, протоколу чи огляду служб.\
        \"substring\" шукає підрядок, \"glob\" дозволяє використовувати\
        підстановочні символи, \"regexp\" використовує регулярні вирази."
::msgcat::mcset uk "Spell check options." "Параметри перевірки правопису."
::msgcat::mcset uk "SSL & Compression" "SSL & Стиснення"
::msgcat::mcset uk "SSL certificate file (optional)." "Файл сертифіката SSL\

        (необов’язково)."
::msgcat::mcset uk "SSL certification authority file or directory\
        (optional)." "Файл чи тека центру сертифікації (CA) SSL\
        (необов’язковий параметр)."
::msgcat::mcset uk "SSL Info" "Інформація про SSL"
::msgcat::mcset uk "SSL private key file (optional)." "Файл секретного ключа\
        SSL (необов’язково)."
::msgcat::mcset uk "Start chat" "Розпочати розмову"
::msgcat::mcset uk "Starting auto-away" "Автоматичне встановлення стану\
        \"Відійшов\""
::msgcat::mcset uk "STARTTLS failed" "STARTTLS не вдався"
::msgcat::mcset uk "STARTTLS successful" "STARTTLS успішний"
::msgcat::mcset uk "State" "Стан"
::msgcat::mcset uk "State " "Область"







|
>
|




<
<







1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265


1266
1267
1268
1269
1270
1271
1272
        disco windows. \"substring\" searches exact substring, \"glob\" uses\
        glob style matching, \"regexp\" allows to match regular expression."\
        "Вказує метод пошуку в вікнах чату, протоколу чи огляду служб.\
        \"substring\" шукає підрядок, \"glob\" дозволяє використовувати\
        підстановочні символи, \"regexp\" використовує регулярні вирази."
::msgcat::mcset uk "Spell check options." "Параметри перевірки правопису."
::msgcat::mcset uk "SSL & Compression" "SSL & Стиснення"
::msgcat::mcset uk "SSL client certificate file bundled with private key\
        (optional)." "Файл клієнтського сертифікату SSL разом з секретним\
        ключем (необов’язковий параметр)."
::msgcat::mcset uk "SSL certification authority file or directory\
        (optional)." "Файл чи тека центру сертифікації (CA) SSL\
        (необов’язковий параметр)."
::msgcat::mcset uk "SSL Info" "Інформація про SSL"


::msgcat::mcset uk "Start chat" "Розпочати розмову"
::msgcat::mcset uk "Starting auto-away" "Автоматичне встановлення стану\
        \"Відійшов\""
::msgcat::mcset uk "STARTTLS failed" "STARTTLS не вдався"
::msgcat::mcset uk "STARTTLS successful" "STARTTLS успішний"
::msgcat::mcset uk "State" "Стан"
::msgcat::mcset uk "State " "Область"
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
::msgcat::mcset uk "Ispell options. See ispell manual for\
        details.\n\nExamples:\n  -d russian\n  -d german -T latin1\n  -C -d\
        english" "Параметри Ispell. Дивіться посібник для\
        деталей.\n\nНаприклад:\n  -d ukrainian\n  -d german -T latin1\n  -C\
        -d english"
::msgcat::mcset uk "Spelling" "Правопис"

# ./gpgme.tcl
::msgcat::mcset uk "%s purportedly signed by %s can't be verified: %s." "Те,\
        що %s підписано %s, неможливо перевірити: %s."
::msgcat::mcset uk "GPG error" "Помилка GPG"

# ./muc.tcl
::msgcat::mcset uk "%s has been assigned a new affiliation: %s" "%s було\
        надано новий ранг: %s"
::msgcat::mcset uk "%s has been assigned a new role: %s" "%s було надано нову\
        роль: %s"
::msgcat::mcset uk "%s has been assigned a new room position: %s/%s" "%s було\
        надано нову посаду в кімнаті: %s/%s"







<
<
<
<
<







1783
1784
1785
1786
1787
1788
1789





1790
1791
1792
1793
1794
1795
1796
::msgcat::mcset uk "Ispell options. See ispell manual for\
        details.\n\nExamples:\n  -d russian\n  -d german -T latin1\n  -C -d\
        english" "Параметри Ispell. Дивіться посібник для\
        деталей.\n\nНаприклад:\n  -d ukrainian\n  -d german -T latin1\n  -C\
        -d english"
::msgcat::mcset uk "Spelling" "Правопис"






# ./muc.tcl
::msgcat::mcset uk "%s has been assigned a new affiliation: %s" "%s було\
        надано новий ранг: %s"
::msgcat::mcset uk "%s has been assigned a new role: %s" "%s було надано нову\
        роль: %s"
::msgcat::mcset uk "%s has been assigned a new room position: %s/%s" "%s було\
        надано нову посаду в кімнаті: %s/%s"
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603













2604
2605
2606
2607
2608
2609
2610
        конференцію..."
::msgcat::mcset uk "Update list" "Поновити список"

# ./plugins/general/gpgme.tcl
::msgcat::mcset uk "%s purportedly signed by %s using key 0x%s can't be\
        verified: %s." "Те, що %s підписано %s з використанням ключа 0x%s,\
        неможливо перевірити: %s."
::msgcat::mcset uk "Add your JID and timestamp to the GPG-signed outgoing\
        messages or presence updates. This prevents replay attacks, but shows\
        your JID in every message or presence status." "Додавати ваш JID та\
        наявний час до повідомлень та поновлень присутності. Це дозволяє\
        запобігти атаці повторними повідомленнями, але показує ваш реальний\
        JID у кожному повідомленні та поновленні статусу."
::msgcat::mcset uk "Encrypt messages (when possible)" "Шифрувати повідомлення\
        (де можливо)"
::msgcat::mcset uk "GPG-sign outgoing groupchat messages." "Підписувати\
        вихідні повідомлення з допомогою GPG у конференціях."
::msgcat::mcset uk "GPG-sign outgoing personal messages." "Підписувати\
        особисті вихідні повідомлення з допомогою GPG."
::msgcat::mcset uk "GPG-sign outgoing presence updates." "Підписувати вихідні\
        поновлення присутності з допомогою GPG."
::msgcat::mcset uk "Sign presence updates" "Підписувати поновлення\
        присутності"
::msgcat::mcset uk "Toggle signing presence updates" "Ввімкн./вимкн. підпис\
        поновлень присутності"














# ./plugins/general/autoaway.tcl
::msgcat::mcset uk "Stored user priority while she's away." "Збережений\
        пріоритет користувача доки вона в стані \"відійшла\""
::msgcat::mcset uk "Stored user status while she's away." "Збережений статус\
        користувача доки вона в стані \"відійшла\""
::msgcat::mcset uk "Stored user text status while she's away." "Збережений\







|
|
<
|
|
<












>
>
>
>
>
>
>
>
>
>
>
>
>







2571
2572
2573
2574
2575
2576
2577
2578
2579

2580
2581

2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
        конференцію..."
::msgcat::mcset uk "Update list" "Поновити список"

# ./plugins/general/gpgme.tcl
::msgcat::mcset uk "%s purportedly signed by %s using key 0x%s can't be\
        verified: %s." "Те, що %s підписано %s з використанням ключа 0x%s,\
        неможливо перевірити: %s."
::msgcat::mcset uk "Add the recipient's JID and timestamp to the GPG-signed\
        or encrypted outgoing messages. This prevents replay attacks." \

        "Додавати JID отримувача та наявний час до повідомлень, підписаних\
        за допомогою GPG. Це дозволяє запобігти атаці повторними повідомленнями."

::msgcat::mcset uk "Encrypt messages (when possible)" "Шифрувати повідомлення\
        (де можливо)"
::msgcat::mcset uk "GPG-sign outgoing groupchat messages." "Підписувати\
        вихідні повідомлення з допомогою GPG у конференціях."
::msgcat::mcset uk "GPG-sign outgoing personal messages." "Підписувати\
        особисті вихідні повідомлення з допомогою GPG."
::msgcat::mcset uk "GPG-sign outgoing presence updates." "Підписувати вихідні\
        поновлення присутності з допомогою GPG."
::msgcat::mcset uk "Sign presence updates" "Підписувати поновлення\
        присутності"
::msgcat::mcset uk "Toggle signing presence updates" "Ввімкн./вимкн. підпис\
        поновлень присутності"
::msgcat::mcset uk "Select room %s participants for encrypting traffic to" \
        "Виберіть учасників коференції %s, для кого ви будете шифрувати\
        повідомлення"
::msgcat::mcset uk "not actually changed" "не змінився"
::msgcat::mcset uk "entirely new key" "зовсім новий ключ"
::msgcat::mcset uk "new user IDs" "нові ID користувача"
::msgcat::mcset uk "new signatures" "нові підписи"
::msgcat::mcset uk "new subkeys" "нові підключі"
::msgcat::mcset uk "contains private key" "містить закритий ключ"
::msgcat::mcset uk "%s purportedly signed by %s can't be verified: %s." "Те,\
        що %s підписано %s, неможливо перевірити: %s."
::msgcat::mcset uk "GPG error" "Помилка GPG"


# ./plugins/general/autoaway.tcl
::msgcat::mcset uk "Stored user priority while she's away." "Збережений\
        пріоритет користувача доки вона в стані \"відійшла\""
::msgcat::mcset uk "Stored user status while she's away." "Збережений статус\
        користувача доки вона в стані \"відійшла\""
::msgcat::mcset uk "Stored user text status while she's away." "Збережений\
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
# ./proxy.tcl
::msgcat::mcset uk "Currently active profile" "Поточний діючий профіль"
::msgcat::mcset uk "Default empty profile" "Порожній профіль за\
        замовчуванням"
::msgcat::mcset uk "Profile from config file" "Профіль з конфігураційного\
        файлу"

# ./plugins/general/gpgme.tcl
::msgcat::mcset uk "not actually changed" "не змінився"
::msgcat::mcset uk "entirely new key" "зовсім новий ключ"
::msgcat::mcset uk "new user IDs" "нові ID користувача"
::msgcat::mcset uk "new signatures" "нові підписи"
::msgcat::mcset uk "new subkeys" "нові підключі"
::msgcat::mcset uk "contains private key" "містить закритий ключ"

#==================================================================

namespace eval :: {
proc load_ukrainian_procs {} {
    rename format_time ""
    rename uk_format_time format_time
}







<
<
<
<
<
<
<
<







2677
2678
2679
2680
2681
2682
2683








2684
2685
2686
2687
2688
2689
2690
# ./proxy.tcl
::msgcat::mcset uk "Currently active profile" "Поточний діючий профіль"
::msgcat::mcset uk "Default empty profile" "Порожній профіль за\
        замовчуванням"
::msgcat::mcset uk "Profile from config file" "Профіль з конфігураційного\
        файлу"









#==================================================================

namespace eval :: {
proc load_ukrainian_procs {} {
    rename format_time ""
    rename uk_format_time format_time
}

Changes to plugins/general/gpgme.tcl.

111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
        -group GPG -type boolean

    custom::defvar options(encrypt-traffic) 0 \
        [::msgcat::mc "GPG-encrypt outgoing messages where possible."] \
        -group GPG -type boolean

    custom::defvar options(prevent-replay-attack) 1 \
        [::msgcat::mc "Add your JID and timestamp to the GPG-signed\
                       outgoing messages or presence updates. This\
                       prevents replay attacks, but shows your JID\
                       in every message or presence status."] \
        -group GPG -type boolean

    custom::defvar options(key) "" \
        [::msgcat::mc "Use specified key ID for signing and decrypting\
                       messages."] \
        -group GPG -type string








|
|
|
<







111
112
113
114
115
116
117
118
119
120

121
122
123
124
125
126
127
        -group GPG -type boolean

    custom::defvar options(encrypt-traffic) 0 \
        [::msgcat::mc "GPG-encrypt outgoing messages where possible."] \
        -group GPG -type boolean

    custom::defvar options(prevent-replay-attack) 1 \
        [::msgcat::mc "Add the recipient's JID and timestamp to the\
                       GPG-signed or encrypted outgoing messages. This\
                       prevents replay attacks."] \

        -group GPG -type boolean

    custom::defvar options(key) "" \
        [::msgcat::mc "Use specified key ID for signing and decrypting\
                       messages."] \
        -group GPG -type string

1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
    }
}

hook::add client_presence_hook ::ssj::check_signature

#############################################################################

proc ::ssj::add_timestamp_to_signature {varname xlib} {
    variable options
    upvar 2 $varname var

    if {!$options(prevent-replay-attack)} return

    if {![catch {signed:output $xlib $var} cdata] && $cdata ne ""} {
        set timestamp [clock format [clock seconds] \
                                    -format "%Y%m%dT%TZ" -gmt true]
        if {$var ne ""} {
            set var " $var"
        }
        set var "\[[::xmpp::jid::removeResource [connection_jid $xlib]],\
                 $timestamp\]$var"
    }
    return
}

hook::add rewrite_presence_status_hook ::ssj::add_timestamp_to_signature

proc ::ssj::make_signature {varname xlib status} {
    variable NS
    upvar 2 $varname var

    if {![catch {signed:output $xlib $status} cdata] && $cdata ne ""} {
        lappend var [::xmpp::xml::create x -xmlns $NS(signed) \
                                           -cdata $cdata]







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







1347
1348
1349
1350
1351
1352
1353




















1354
1355
1356
1357
1358
1359
1360
    }
}

hook::add client_presence_hook ::ssj::check_signature

#############################################################################





















proc ::ssj::make_signature {varname xlib status} {
    variable NS
    upvar 2 $varname var

    if {![catch {signed:output $xlib $status} cdata] && $cdata ne ""} {
        lappend var [::xmpp::xml::create x -xmlns $NS(signed) \
                                           -cdata $cdata]
1395
1396
1397
1398
1399
1400
1401
1402

1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
    upvar 2 $vbody body
    upvar 2 $vx x

    if {!$options(prevent-replay-attack)} return

    if {![info exists body]} return

    if {![catch {ssj::signed:output $xlib $body $to} cdata] && $cdata ne ""} {

        set timestamp [clock format [clock seconds] \
                                    -format "%Y%m%dT%TZ" -gmt true]
        if {$body ne ""} {
            set body " $body"
        }
        set body "\[[::xmpp::jid::removeResource [connection_jid $xlib]],\
                  $timestamp\]$body"
    }
    return
}

hook::add rewrite_outgoing_message_hook ::ssj::add_timestamp 5

proc ::ssj::sign_encrypt_body \







|
>





<
|







1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387

1388
1389
1390
1391
1392
1393
1394
1395
    upvar 2 $vbody body
    upvar 2 $vx x

    if {!$options(prevent-replay-attack)} return

    if {![info exists body]} return

    if {(![catch {ssj::signed:output $xlib $body $to} cdata] && $cdata ne "") || \
            (![catch {ssj::encrypted:output $xlib $body $to} cdata] && $cdata ne "")} {
        set timestamp [clock format [clock seconds] \
                                    -format "%Y%m%dT%TZ" -gmt true]
        if {$body ne ""} {
            set body " $body"
        }

        set body "\[To: [::xmpp::jid::removeResource $to], Date: $timestamp\]$body"
    }
    return
}

hook::add rewrite_outgoing_message_hook ::ssj::add_timestamp 5

proc ::ssj::sign_encrypt_body \