Imported Upstream version 2.5
Abhijith PA
7 years ago
10 | 10 | # do not wish to do so, delete this exception statement from your |
11 | 11 | # version. If you delete this exception statement from all source |
12 | 12 | # files in the program, then also delete it here. |
13 | # $Revision: 278 $ | |
14 | 13 | |
15 | 14 | -include makefile.inc |
16 | 15 | |
55 | 54 | ARCHIVE=/bin/tar cf - |
56 | 55 | COMPRESS=/bin/gzip -9 |
57 | 56 | |
58 | TRANSLATIONS=nl.mo | |
57 | TRANSLATIONS=nl.mo ru.mo | |
59 | 58 | |
60 | 59 | OBJS=gen.o http.o io.o error.o utils.o main.o tcp.o res.o socks5.o kalman.o cookies.o help.o colors.o |
61 | 60 | |
62 | 61 | MAN_EN=httping.1 |
63 | 62 | MAN_NL=httping-nl.1 |
63 | MAN_RU=httping-ru.1 | |
64 | 64 | |
65 | 65 | DOCS=license.txt license.OpenSSL readme.txt |
66 | 66 | |
110 | 110 | $(INSTALLMAN) $(MAN_EN) $(DESTDIR)/$(MANDIR)/man1 |
111 | 111 | $(INSTALLDIR) $(DESTDIR)/$(MANDIR)/nl/man1 |
112 | 112 | $(INSTALLMAN) $(MAN_NL) $(DESTDIR)/$(MANDIR)/nl/man1 |
113 | $(INSTALLDIR) $(DESTDIR)/$(MANDIR)/ru/man1 | |
114 | $(INSTALLMAN) $(MAN_RU) $(DESTDIR)/$(MANDIR)/ru/man1 | |
113 | 115 | $(INSTALLDIR) $(DESTDIR)/$(DOCDIR) |
114 | 116 | $(INSTALLDOC) $(DOCS) $(DESTDIR)/$(DOCDIR) |
115 | 117 | ifneq ($(DEBUG),yes) |
117 | 119 | endif |
118 | 120 | mkdir -p $(DESTDIR)/$(PREFIX)/share/locale/nl/LC_MESSAGES |
119 | 121 | cp nl.mo $(DESTDIR)/$(PREFIX)/share/locale/nl/LC_MESSAGES/httping.mo |
122 | mkdir -p $(DESTDIR)/$(PREFIX)/share/locale/ru/LC_MESSAGES | |
123 | cp ru.mo $(DESTDIR)/$(PREFIX)/share/locale/ru/LC_MESSAGES/httping.mo | |
124 | ||
120 | 125 | |
121 | 126 | makefile.inc: |
122 | 127 | ./configure |
123 | 128 | |
124 | 129 | nl.mo: nl.po |
125 | 130 | msgfmt -o nl.mo nl.po |
131 | ru.mo: ru.po | |
132 | msgfmt -o ru.mo ru.po | |
133 | ||
126 | 134 | |
127 | 135 | clean: |
128 | 136 | $(RMDIR) $(OBJS) $(TARGET) *~ core cov-int *.mo |
134 | 142 | # source package |
135 | 143 | $(RMDIR) $(PACKAGE)* |
136 | 144 | $(MKDIR) $(PACKAGE) |
137 | $(INSTALLDOC) *.c *.h configure Makefile *.po version $(MAN_EN) $(MAN_NL) $(DOCS) $(PACKAGE) | |
145 | $(INSTALLDOC) *.c *.h configure Makefile *.po version $(MAN_EN) $(MAN_NL) $(MAN_RU) $(DOCS) $(PACKAGE) | |
138 | 146 | $(INSTALLBIN) configure $(PACKAGE) |
139 | 147 | $(ARCHIVE) $(PACKAGE) | $(COMPRESS) > $(PACKAGE).tgz |
140 | 148 | $(RMDIR) $(PACKAGE) |
2 | 2 | FILE=`mktemp` |
3 | 3 | FILE2=`mktemp` |
4 | 4 | |
5 | echo \*\*\* HTTPing v`grep VERSION version | cut -d = -f 2` \(`echo $Revision$ | awk '{ print $2; }'`\) configure script \*\*\* | |
5 | echo \*\*\* HTTPing v`grep VERSION version | cut -d = -f 2` configure script \*\*\* | |
6 | 6 | echo |
7 | 7 | |
8 | 8 | if [ -z "$CC" ] |
57 | 57 | TFO="" |
58 | 58 | fi |
59 | 59 | |
60 | $CC -O0 -lncursesw -o $FILE test_ncurses.c 2> $FILE2 | |
60 | $CC -O0 -o $FILE test_ncurses.c -lncursesw 2> $FILE2 | |
61 | 61 | if [ $? -eq 0 ] || [ $F_NC -eq 1 ] ; then |
62 | 62 | echo \+ system has ncurses development libraries |
63 | 63 | NC="NC=yes" |
66 | 66 | NC="" |
67 | 67 | fi |
68 | 68 | |
69 | $CC -O0 -lssl -lcrypto -o $FILE test_openssl.c 2> $FILE2 | |
69 | $CC -O0 -o $FILE test_openssl.c -lssl -lcrypto 2> $FILE2 | |
70 | 70 | if [ $? -eq 0 ] || [ $F_OS -eq 1 ] ; then |
71 | 71 | echo \+ system has OpenSSL development libraries |
72 | 72 | SSL="SSL=yes" |
75 | 75 | SSL="SSL=no" |
76 | 76 | fi |
77 | 77 | |
78 | $CC -O0 -lfftw3 -o $FILE test_fftw3.c 2> $FILE2 | |
78 | $CC -O0 -o $FILE test_fftw3.c -lfftw3 2> $FILE2 | |
79 | 79 | if [ $? -eq 0 ] || [ $F_FW -eq 1 ] ; then |
80 | 80 | echo \+ system has FFTW3 development libraries |
81 | 81 | FW="FW=yes" |
0 | /* Released under GPLv2 with exception for the OpenSSL library. See license.txt */ | |
1 | /* $Revision$ */ | |
0 | /* Released under AGPL v3 with exception for the OpenSSL library. See license.txt */ | |
2 | 1 | |
3 | 2 | #include <libintl.h> |
4 | 3 | #include <errno.h> |
0 | /* Released under GPLv2 with exception for the OpenSSL library. See license.txt */ | |
1 | /* $Revision$ */ | |
0 | /* Released under AGPL v3 with exception for the OpenSSL library. See license.txt */ | |
2 | 1 | |
3 | 2 | void error_exit(const char *format, ...); |
4 | 3 | void set_error(const char *str, ...); |
0 | /* $Revision$ */ | |
1 | 0 | void fft_init(int sample_rate_in); |
2 | 1 | void fft_free(void); |
3 | 2 | void fft_do(double *in, double *output_mag, double *output_phase); |
0 | /* Released under GPLv2 with exception for the OpenSSL library. See license.txt */ | |
1 | /* $Revision$ */ | |
0 | /* Released under AGPL v3 with exception for the OpenSSL library. See license.txt */ | |
2 | 1 | |
3 | 2 | #ifndef __GEN_H__ |
4 | 3 | #define __GEN_H__ |
73 | 73 | |
74 | 74 | void version(void) |
75 | 75 | { |
76 | fprintf(stderr, gettext("HTTPing v" VERSION ", (C) 2003-2013 folkert@vanheusden.com\n")); | |
76 | fprintf(stderr, gettext("HTTPing v" VERSION ", (C) 2003-2016 folkert@vanheusden.com\n")); | |
77 | 77 | #ifndef NO_SSL |
78 | 78 | fprintf(stderr, gettext(" * SSL support included (-l)\n")); |
79 | 79 | #endif |
209 | 209 | format_help(NULL, "--divert-connect", gettext("connect to a different host than in the URL given")); |
210 | 210 | format_help(NULL, "--keep-cookies", gettext("return the cookies given by the HTTP server in the following request(s)")); |
211 | 211 | format_help(NULL, "--no-host-header", gettext("do not add \"Host:\"-line to the request headers")); |
212 | format_help("-Q", "--persistent-connections", gettext("use a persistent connection. adds a 'C' to the output if httping had to reconnect")); | |
212 | format_help("-Q", "--persistent-connections", gettext("use a persistent connection, i.e. reuse the same TCP connection for multiple HTTP requests. usually possible when 'Connection: Keep-Alive' is sent by server. adds a 'C' to the output if httping had to reconnect")); | |
213 | 213 | format_help("-I x", "--user-agent", gettext("use 'x' for the UserAgent header")); |
214 | 214 | format_help("-R x", "--referer", gettext("use 'x' for the Referer header")); |
215 | 215 | format_help(NULL, "--header", gettext("adds an extra request-header")); |
270 | 270 | format_help("-q", "--quiet", gettext("quiet, only returncode")); |
271 | 271 | format_help("-m", "--parseable-output", gettext("give machine parseable output (see also -o and -e)")); |
272 | 272 | format_help("-M", NULL, gettext("json output, cannot be combined with -m")); |
273 | format_help("-o rc,rc,...", "--ok-result-codes", gettext("what http results codes indicate 'ok' comma seperated WITHOUT spaces inbetween default is 200, use with -e")); | |
273 | format_help("-o rc,rc,...", "--ok-result-codes", gettext("what http results codes indicate 'ok' comma separated WITHOUT spaces inbetween default is 200, use with -e")); | |
274 | 274 | format_help("-e x", "--result-string", gettext("string to display when http result code doesn't match")); |
275 | 275 | format_help("-n warn,crit", "--nagios-mode-1 / --nagios-mode-2", gettext("Nagios-mode: return 1 when avg. response time >= warn, 2 if >= crit, otherwhise return 0")); |
276 | 276 | format_help("-N x", NULL, gettext("Nagios mode 2: return 0 when all fine, 'x' when anything failes")); |
0 | /* Released under GPLv2 with exception for the OpenSSL library. See license.txt */ | |
1 | /* $Revision$ */ | |
0 | /* Released under AGPL v3 with exception for the OpenSSL library. See license.txt */ | |
2 | 1 | |
3 | 2 | #include <assert.h> |
4 | 3 | #include <stdio.h> |
0 | /* Released under GPLv2 with exception for the OpenSSL library. See license.txt */ | |
1 | /* $Revision$ */ | |
0 | /* Released under AGPL v3 with exception for the OpenSSL library. See license.txt */ | |
2 | 1 | |
3 | 2 | int get_HTTP_headers(int socket_h, SSL *ssl_h, char **headers, int *overflow, double timeout); |
4 | 3 | int dumb_get_HTTP_headers(int socket_h, char **headers, double timeout); |
0 | .\" Copyright Folkert van Heusden, 2003-2013 | |
0 | .\" Copyright Folkert van Heusden, 2003-2016 | |
1 | 1 | .\" |
2 | 2 | .\" This file may be copied under the conditions described |
3 | 3 | .\" in the GNU GENERAL PUBLIC LICENSE, version 2 |
4 | 4 | .\" that can be found on the website of the free software |
5 | 5 | .\" foundation. |
6 | 6 | .\" |
7 | .TH HTTPING 1 2013-03 "httping" | |
7 | .TH HTTPING 1 2016-09 "httping" | |
8 | 8 | .SH NAME |
9 | 9 | httping - meten van de latency en doorvoorsnelheid van een http server |
10 | 10 | .SH SAMENVATTING |
72 | 72 | Gebruik de ncurses gebruikers interface. |
73 | 73 | .TP |
74 | 74 | .B "\-L x" |
75 | In combinatie met -G zet dit een limiet op hoeveel data er binnengehaald wordt. | |
75 | In combinatie met \-G zet dit een limiet op hoeveel data er binnengehaald wordt. | |
76 | 76 | .TP |
77 | 77 | .B "\-l" |
78 | 78 | Maak een SSL verbinding. Dit vereist een https-URL. |
92 | 92 | .B "\-p portnumber" |
93 | 93 | Gebruik dit on combinatie met h. Het zet het port-nummer om te pingen. |
94 | 94 | .TP |
95 | .B "\-Q" | |
96 | Gebruik een blijvende verbinding, dat wil zeggen hergebruiken dezelfde TCP-verbinding voor meerdere HTTP-verzoeken. Meestal mogelijk wanneer 'Connection: Keep-Alive' is verzonden door de server. Als het bestemmingssysteem de verbinding verbroken heeft, dan zal HTTPing een \"C\" toevoegen aan de uitvoer. | |
97 | .TP | |
95 | 98 | .B "\-q" |
96 | 99 | Geef geen uitvoer, alleen een teruggave code. |
97 | 100 | .TP |
198 | 201 | Toon metingen alleen als ze hoger dan x zijn. |
199 | 202 | .TP |
200 | 203 | .B "\-\-timestamp" or "\-\-ts" |
201 | Voeg een een tijdstempel toe aan de uitvoer. Gebruik -v om ook een datum te zien en \-vv om ook microseconden te zien. | |
204 | Voeg een een tijdstempel toe aan de uitvoer. Gebruik \-v om ook een datum te zien en \-vv om ook microseconden te zien. | |
202 | 205 | .TP |
203 | 206 | .B "\-\-tx-buffer x" |
204 | 207 | Configureer de grootte van de zend-buffer. |
207 | 210 | Toon versie informatie. |
208 | 211 | |
209 | 212 | .SH UITVOER |
210 | In de -S mode zal iets als "tijd=0.08+24.09+23.17+15.64+0.02=62.98 ms" getoond worden. De eerste waarde is hoe lang het duurde om de systeem naam te vertalen, de 2e waarde hoe lang het duurde om te verbinden, de 3e waarde geeft aan hoe lang het duurde om het verzoek te verzenden en de 4e waarde is hoelang het duurde voordat de http-server een antwoord formuleerde en terugzond. de 5e waarde geeft aan hoelang het duurde om de socket te sluiten. | |
213 | In de \-S mode zal iets als "tijd=0.08+24.09+23.17+15.64+0.02=62.98 ms" getoond worden. De eerste waarde is hoe lang het duurde om de systeem naam te vertalen, de 2e waarde hoe lang het duurde om te verbinden, de 3e waarde geeft aan hoe lang het duurde om het verzoek te verzenden en de 4e waarde is hoelang het duurde voordat de http-server een antwoord formuleerde en terugzond. de 5e waarde geeft aan hoelang het duurde om de socket te sluiten. | |
211 | 214 | |
212 | 215 | .SH GRAFIEK |
213 | De grafiek in ncurses mode gebruikt een aantal kleuren. Groen: de waarde is minder dan de ondergrens. Rood: de waarde is hoger dan de bovengrens. Blauw: de waarde is gelimiteerd door '--graph-limit'. Cyaan: er is geen meetwaarde. | |
216 | De grafiek in ncurses mode gebruikt een aantal kleuren. Groen: de waarde is minder dan de ondergrens. Rood: de waarde is hoger dan de bovengrens. Blauw: de waarde is gelimiteerd door '\-\-graph\-limit'. Cyaan: er is geen meetwaarde. | |
214 | 217 | |
215 | 218 | .SH TOETSEN |
216 | 219 | Druk <CTRL> + <c> om het programma af te breken. Er zal dan een samenvatting getoond worden. |
235 | 238 | Deze man-page beschrijft |
236 | 239 | .B httping |
237 | 240 | versie 2.3: andere versies kunnen iets of wat verschillen. |
238 | Stuur a.u.b. correcties, toevingen en foutraporten naar folkert@vanheusden.com | |
241 | Stuur a.u.b. correcties, toevingen en foutraporten naar mail@vanheusden.com | |
239 | 242 | Wanneer u een donatie wilt doen, dan kunt u Bitcoins sturen naar: 1N5Sn4jny4xVwTwSYLnf7WnFQEGoVRmTQF |
0 | .\" Copyright Folkert van Heusden, 2003-2016 | |
1 | .\" | |
2 | .\" This file may be copied under the conditions described | |
3 | .\" in the GNU GENERAL PUBLIC LICENSE, version 2 | |
4 | .\" that can be found on the website of the free software | |
5 | .\" foundation. | |
6 | .\" | |
7 | .TH HTTPING 1 2016-09 "httping" | |
8 | .SH ИМЯ | |
9 | httping - измеряет задержку и пропускную способность веб-сервера | |
10 | .SH СИНТАКСИС | |
11 | .BI "httping [" опции "] | |
12 | .sp | |
13 | опции: | |
14 | .BI "[\-g url] [\-h имя_хоста] [\-p номер_порта] [\-x прокси_хост:порт] [\-c число] [\-i интервал] [\-t тайм-аут] [\-s] [\-G] [\-b] [\-L предел_передачи] [\-X] [\-l] [\-z] [\-f] [\-m] [\-o ко,...] [\-e строка]" | |
15 | .BI "[\-I UserAgent строка] [\-R Referer строка] [\-r] [\-n warn,crit] [\-N режим] [\-q] [\-V]" | |
16 | .SH ОПИСАНИЕ | |
17 | Утилита | |
18 | .B httping | |
19 | позволяет измерять задержку веб-сервера. Начиная с версии 1.0.6 также есть возможность измерять пропускную способность. | |
20 | .PP | |
21 | .SH ОПЦИИ | |
22 | .TP | |
23 | .B "\-5" | |
24 | Выбранный прокси-сервер — это SOCKS5 сервер. | |
25 | .TP | |
26 | .B "\-6" | |
27 | Включить режим IPv6. По умолчанию IPv4. | |
28 | .TP | |
29 | .B "\-a" | |
30 | Слышимый пинг | |
31 | .TP | |
32 | .B "\-b" | |
33 | Используйте этот переключатель вместе с '-\G'. Когда эта опция используется, показывается пропускная способность (в КБ/с). | |
34 | .TP | |
35 | .B "\-B" | |
36 | Используйте этот переключатель вместе с '-\G'. Просит HTTP сервер сжимать возвращаемые данные: это позволит уменьшить важность пропускной способности вашего соединения, увеличивая важность вычислительной мощности HTTP сервера. | |
37 | .TP | |
38 | .B "\-c число" | |
39 | Сколько проб отправить перед тем как выйти. | |
40 | .TP | |
41 | .B "\-D" | |
42 | Не рисовать графики в режиме ncurses (-\K). | |
43 | .TP | |
44 | .B "\-e строка" | |
45 | Когда код ответа отличается от указанных в '\-o', отображать данную строку. | |
46 | .TP | |
47 | .B "\-E" | |
48 | Получить настройки прокси-сервера из переменных окружения ('http_proxy' и 'https_proxy'). | |
49 | .TP | |
50 | .B "\-F" | |
51 | Попытаться использовать TCP Fast Open подключаясь к серверу (для Linux ядра версии 3.7 и более) | |
52 | .TP | |
53 | .B "\-f" | |
54 | Флуд пинг: не сидеть сложа руки между каждым пингом, а пинговать быстро, насколько компьютер и сеть позволит вам. | |
55 | .TP | |
56 | .B "\-G" | |
57 | Делать GET запрос вместо HEAD запроса: это значит, что полная страница/файл будет передан. Обратите внимание, в данном случае вы больше не измеряете задержку! | |
58 | .TP | |
59 | .B "\-g URL" | |
60 | Устанавливает URL для проб. К примеру: http://localhost/ | |
61 | .TP | |
62 | .B "\-h имя_хоста" | |
63 | Вместо '\-g' вы можете также использовать '\-h' чтобы установить имя хоста, к примеру: \-h localhost | |
64 | .TP | |
65 | .B "\-I строка" | |
66 | UserAgent строка для отправки веб-серверу (по умолчанию 'HTTPing <версия>'). | |
67 | .TP | |
68 | .B "\-i interval" | |
69 | Сколько секунд между отправкой каждой пробы. | |
70 | .TP | |
71 | .B "\-K" | |
72 | Включить пользовательский интерфейс ncurses. | |
73 | .TP | |
74 | .B "\-L x" | |
75 | Используйте этот переключатель вместе с '\-G'. Ограничивает объем передаваемых данных значением 'х'. Обратите внимание, это влияет только на содержание страницы/файла, а не на заголовки. | |
76 | .TP | |
77 | .B "\-l" | |
78 | Подключаться с помощью SSL: чтобы это работало вы должны задать 'https' URL или номер порта 443. | |
79 | .TP | |
80 | .B "\-m" | |
81 | Показывать машиночитаемый вывод (смотрите также '\-o' и '\-e'). | |
82 | .TP | |
83 | .B "\-N x" | |
84 | Переключает HTTPing в режим 2 Nagios плагина: возвращает 0, когда все хорошо, "х", когда что-то не так. Т.е.: 1 => Nagios состояние warning, 2 => Nagios состояние critical. | |
85 | .TP | |
86 | .B "\-n warn,crit" | |
87 | Переключает HTTPing в режим 1 Nagios плагина: возвращает код выхода '1', когда среднее время отклика больше "warn", и возвращает код выхода '2', когда время на средний отклик больше "crit". Во всех остальных случаях возвращает код выхода '0'. | |
88 | .TP | |
89 | .B "\-o x,x,..." | |
90 | Устанавливает HTTP-коды, которые рассматриваются как ОК-состояния (только с '\-m'). | |
91 | .TP | |
92 | .B "\-p portnumber" | |
93 | \-p может быть использован вместе с \-h. \-p выбирает номер_порта для пробы. | |
94 | .TP | |
95 | .B "\-q" | |
96 | Без подробностей, возвращать только код выхода. | |
97 | .TP | |
98 | .B "\-R строка" | |
99 | Referer строка для отправки на веб-сервер. | |
100 | .TP | |
101 | .B "\-Q" | |
102 | Использовать постоянное соединение, т.е. переиспользовать то же самое TCP соединение для нескольких HTTP запросов. обычно возможно когда 'Connection: Keep-Alive' отправлено сервером. добавляет 'C' в вывод если httping был вынужден переподключиться | |
103 | .TP | |
104 | .B "\-r" | |
105 | Резолвить имя хоста только раз: это убирает резолвинг из цикла, так что латентность DNS не измеряется. Также полезно когда вы хотите измерить только 1 веб-сервер, а DNS возвращает новый IP-адрес на каждом резолве ('round robin'). | |
106 | .TP | |
107 | .B "\-S" | |
108 | Разделяет измеряемую задержку на время для подключения и на время обмена запросом с HTTP сервером. | |
109 | .TP | |
110 | .B "\-s" | |
111 | Когда транзакция успешна завершена, показывать HTTP код ответа (200, 404 и т.д.). | |
112 | .TP | |
113 | .B "\-T x" | |
114 | Читать пароль для аутентификации веб-сайта из файла 'х' (вместо ввода его в командной строке). | |
115 | .TP | |
116 | .B "\-t тайм-аут" | |
117 | Как долго ждать ответа с другой стороны. | |
118 | .TP | |
119 | .B "\-U" | |
120 | Включить аутентификацию для веб-сайта. Устанавливайте имя пользователя с помощью \-U, пароль с помощью \-P (или используйте \-T, чтобы прочитать пароль из файла). | |
121 | .TP | |
122 | .B "\-v" | |
123 | Увеличить уровень подробностей. Покажет в выводе стандартное отклонение и даты. | |
124 | .TP | |
125 | .B "\-W" | |
126 | Не прерывать программу если резолвинг не удался. | |
127 | .TP | |
128 | .B "\-X" | |
129 | Используйте этот переключатель вместе с '\-G'. Для каждого пинга показывать количество переданных данных (за исключением заголовков). | |
130 | .TP | |
131 | .B "\-x прокси_хост[:порт] | |
132 | Совершать пробу с помощью прокси сервера. Обратите внимание, вы также измеряете задержку работы с прокси сервером! | |
133 | .TP | |
134 | .B "\-Y" | |
135 | Включить цвета | |
136 | .TP | |
137 | .B "\-z" | |
138 | При подключении с помощью SSL, показывать фингерпринт X509 сертификата(ов) пиров. | |
139 | .TP | |
140 | .B "\-\-abbreviate" | |
141 | Сокращать значения больше, чем тысяча, миллион, миллиард, и т.д. | |
142 | .TP | |
143 | .B "\-\-adaptive-interval" или "\-\-ai" | |
144 | (Пытается) исполнять пинг на одном интервале. Например, если интервал установлен в 1.0 секунду и t[n] от пинга до пинга является 500s с длительностью 250 мс, то следующий пинг (t[n+1]) произойдет на 501 секунде, а не на 501.25 секунде. Конечно, когда длительность пинга > больше, чем интервал, пинг будет "пропущен" (не в буквальном смысле: последовательный номер продолжится) и t[n+1] будет на 502-й секунде вместо ожидаемой 501-й. Это полезно, например, в режиме вывода библиотеки, где FFT вычисляется по длительности пинга. | |
145 | .TP | |
146 | .B "\-\-aggregates x[,y[,z[,т.д.]]]" | |
147 | Показывать совокупный результат каждые x[,y[,z[,т.д.]]] секунд. | |
148 | .TP | |
149 | .B "\-\-divert\-connect x" | |
150 | Не обращать внимания на имя хоста в URL и вместо этого подключаться к 'х'. Данный ранее URL будет запрошен у 'х'. | |
151 | .TP | |
152 | .B "\-\-draw-phase" | |
153 | Рисовать не только величину преобразования Фурье, но также и фазу. | |
154 | .TP | |
155 | .B "\-\-graph\-limit x" | |
156 | Если измеренные значения больше, чем х, то ограничить их х. | |
157 | .TP | |
158 | .B "\-\-header x" | |
159 | Добавить дополнительный заголовок запроса 'х'. | |
160 | .TP | |
161 | .B "\-\-keep\-cookies" | |
162 | Когда сервер отправляет куки, оно будет отправлено назад в следующем запросе. | |
163 | .TP | |
164 | .B "\-\-max\-mtu x" | |
165 | Максимальное значение MTU для использования. Не может быть больше, чем MTU сетевого интерфейса. | |
166 | .TP | |
167 | .B "\-\-no\-host\-header" | |
168 | Не ставить "Host:" заголовок в заголовки запроса. | |
169 | .TP | |
170 | .B "\-\-no\-tcp\-nodelay" | |
171 | Не отключать "задержку TCP" (Naggle). | |
172 | .TP | |
173 | .B "\-\-priority x" | |
174 | Установить приоритет пакетов. | |
175 | .TP | |
176 | .B "\-\-tos x" | |
177 | Установить тип сервиса. | |
178 | .TP | |
179 | .B "\-\-proxy\-user x" | |
180 | Использовать имя пользователя 'х' для аутентификации на прокси-сервере (http/socks5) (опционально). | |
181 | .TP | |
182 | .B "\-\-proxy\-password x" | |
183 | Использовать пароль 'х' для аутентификации на прокси-сервере (http/socks5) (опционально). | |
184 | .TP | |
185 | .B "\-\-proxy\-password-file x" | |
186 | Читать пароль из файла 'х' для аутентификации на прокси-сервере (http/socks5) (опционально). | |
187 | .TP | |
188 | .B "\-\-recv-buffer x" | |
189 | Установить размер буфера приема (в байтах). | |
190 | .TP | |
191 | .B "\-\-slow\-log x" | |
192 | Когда длительность больше или равна x, показывать строку пинга в окне медленного журнала (среднее окно). | |
193 | .TP | |
194 | .B "\-\-threshold\-red x" | |
195 | Если измеренный пинг выше, чем х (и \-Y установлен), то показываемое значение будет покрашено в красный. Если вы также используете \-\-threshold\-yellow, то это значение должно быть больше. | |
196 | .TP | |
197 | .B "\-\-threshold\-yellow x" | |
198 | Если измеренный пинг выше, чем х (и \-Y установлен), то показываемое значение будет покрашено в желтый. | |
199 | .TP | |
200 | .B "\-\-threshold\-show x" | |
201 | Если измеренный пинг выше, чем х, то результат будет отображен (по умолчанию отображается всегда). Значение х в мс. | |
202 | .TP | |
203 | .B "\-\-timestamp" or "\-\-ts" | |
204 | Показывать таймстамп перед строками с результатами. Используйте опцию \-v, чтобы показывать также и дату. | |
205 | .TP | |
206 | .B "\-\-tx-buffer x" | |
207 | Установить размер буфера передачи (в байтах). | |
208 | .TP | |
209 | .B "\-V" | |
210 | Показать версию и выйти. | |
211 | ||
212 | .SH ВЫВОД | |
213 | В режиме разделения экрана (\-S) вы увидите что-то вроде "время=0.08+24.09+23.17+15.64+0.02=62.98 мс". Первое значение — это время, которое потребовалось, чтобы зарезолвить имя хоста (или 'Н/Д', если оно не резолвилось на этой итерации, например, в режиме "резолвить один раз" (\-r)), затем время, которое потребовалось для подключения (Или \-1 в, например, постоянных соединениях (\-Q, HTTP v1.1)), после этого время, которое потребовалось, чтобы произвести операцию записи, затем, то время, которое потребовалось для HTTP сервера, чтобы обработать запрос и отправить его обратно и, наконец, время, которое потребовалось, чтобы закрыть соединение. | |
214 | ||
215 | .SH ГРАФИК | |
216 | График в ncurses использует цвета для кодирования смысла. Зеленый: значение меньше, чем 1 блок. Красный: значение не укладывается в график. Синий: значение было ограничено опцией -\-\-graph\-limit. Бирюзовый: нет измерения для этого момента времени. | |
217 | ||
218 | .SH КЛАВИШИ | |
219 | Нажмите <Ctrl> + <c>, чтобы выйти из программы. Это отобразит краткую информацию о том, что было измерено. | |
220 | В графическом интерфейсе ncurses, нажмите клавишу <Ctrl> + <l> для принудительной перерисовки экрана. Нажмите 'H', чтобы остановить графики (и снова, чтобы продолжить). Нажмите 'q', чтобы остановить программу (или <Ctrl> + <c>). | |
221 | ||
222 | .SH ПРИМЕРЫ | |
223 | .TP | |
224 | .B "httping \-g http://localhost/" | |
225 | Исполнить пинг к веб-серверу на хосте "localhost". | |
226 | .TP | |
227 | .B "httping \-h localhost \-p 1000" | |
228 | Исполнить пинг к веб-серверу на хосте "localhost" с номером порта 1000. | |
229 | .TP | |
230 | .B "httping \-l \-g https://localhost/" | |
231 | Исполнить пинг к веб-серверу на хосте "localhost" с помощью соединения SSL. | |
232 | .TP | |
233 | .B "httping \-g http://localhost/ -U username -P password" | |
234 | Исполнить пинг к веб-серверу на хосте "localhost", используя HTTP Basic Authentication.. | |
235 | .SH БАГИ | |
236 | Нету. В этой программе полностью отсутствуют баги. | |
237 | ||
238 | .SH "СМОТРИТЕ ТАКЖЕ" | |
239 | .BR http://www.vanheusden.com/httping/ | |
240 | ||
241 | .SH ЗАМЕТКИ | |
242 | Эта страница описывает | |
243 | .B httping | |
244 | , который содержится в пакете httping-2.3; другие версии могут немного отличаться. | |
245 | Пожалуйста, отправляйте исправления и дополнения на mail@vanheusden.com. | |
246 | Сообщить об ошибках в программе можно по адресу mail@vanheusden.com. | |
247 | Пожалуйста, рассмотрите возможность отправки Биткоинов по адресу 1N5Sn4jny4xVwTwSYLnf7WnFQEGoVRmTQF |
0 | .\" Copyright Folkert van Heusden, 2003-2013 | |
0 | .\" Copyright Folkert van Heusden, 2003-2016 | |
1 | 1 | .\" |
2 | 2 | .\" This file may be copied under the conditions described |
3 | 3 | .\" in the GNU GENERAL PUBLIC LICENSE, version 2 |
4 | 4 | .\" that can be found on the website of the free software |
5 | 5 | .\" foundation. |
6 | 6 | .\" |
7 | .TH HTTPING 1 2013-07 "httping" | |
7 | .TH HTTPING 1 2016-09 "httping" | |
8 | 8 | .SH NAME |
9 | 9 | httping - measure the latency and throughput of a webserver |
10 | 10 | .SH SYNOPSIS |
60 | 60 | This selects the url to probe. E.g.: http://localhost/ |
61 | 61 | .TP |
62 | 62 | .B "\-h hostname" |
63 | Instead of '\-g' one can also set a hostname to probe with -h: -h localhost | |
63 | Instead of '\-g' one can also set a hostname to probe with \-h: \-h localhost | |
64 | 64 | .TP |
65 | 65 | .B "\-I str" |
66 | 66 | UserAgent-string to send to the webserver (instead of 'HTTPing <version>'). |
90 | 90 | This selects the HTTP status-codes which are regarded as an OK-state (only with '\-m'). |
91 | 91 | .TP |
92 | 92 | .B "\-p portnumber" |
93 | -p can be used together with \-h. \-p selects the portnumber to probe. | |
93 | \-p can be used together with \-h. \-p selects the portnumber to probe. | |
94 | 94 | .TP |
95 | 95 | .B "\-q" |
96 | 96 | Be quiet, only return an exit-code. |
98 | 98 | .B "\-R str" |
99 | 99 | Referer-string to send to the webserver. |
100 | 100 | .TP |
101 | .B "\-Q" | |
102 | Use a persistent connection, i.e. reuse the same TCP connection for multiple HTTP requests. Usually possible when 'Connection: Keep-Alive' is sent by server. Adds a 'C' to the output if httping had to reconnect. | |
103 | .TP | |
101 | 104 | .B "\-r" |
102 | 105 | Only resolve the hostname once: this takes the resolving out of the loop so that the latency of the DNS is not measured. Also useful when you want to measure only 1 webserver while the DNS returns a different ip-address for each resolve ('roundrobin'). |
103 | 106 | .TP |
123 | 126 | Do not abort program if resolving fails. |
124 | 127 | .TP |
125 | 128 | .B "\-X" |
126 | Use this switch together with '-G'. For each "ping" show the amount of data transferred (excluding the headers). | |
129 | Use this switch together with '\-G'. For each "ping" show the amount of data transferred (excluding the headers). | |
127 | 130 | .TP |
128 | 131 | .B "\-x proxyhost[:port] |
129 | 132 | Probe using a proxyserver. Note that you're also measuring the latency of the proxyserver! |
162 | 165 | Maximum MTU to use. Cannot be larger than network interface MTU. |
163 | 166 | .TP |
164 | 167 | .B "\-\-no\-host\-header" |
165 | Do not put a "Host:"-header in the request header. | |
168 | Do not put a "Host:"\-header in the request header. | |
166 | 169 | .TP |
167 | 170 | .B "\-\-no\-tcp\-nodelay" |
168 | 171 | Do not disable "tcp delay" (Naggle). |
189 | 192 | When the duration is x or more, show ping line in the slow log window (the middle window). |
190 | 193 | .TP |
191 | 194 | .B "\-\-threshold\-red x" |
192 | If the measured threshold is higher than x (and -Y is given), then the shown value is colored red. If you also use --threshold-yellow, then this value must be bigger. | |
195 | If the measured threshold is higher than x (and \-Y is given), then the shown value is colored red. If you also use \-\-threshold\-yellow, then this value must be bigger. | |
193 | 196 | .TP |
194 | 197 | .B "\-\-threshold\-yellow x" |
195 | If the measured threshold is higher than x (and -Y is given), then the shown value is colored yellow. | |
198 | If the measured threshold is higher than x (and \-Y is given), then the shown value is colored yellow. | |
196 | 199 | .TP |
197 | 200 | .B "\-\-threshold\-show x" |
198 | 201 | If the measured threshold is higher than x, then the result is shown (default is show always). The value x is in ms. |
199 | 202 | .TP |
200 | 203 | .B "\-\-timestamp" or "\-\-ts" |
201 | Put a timestamp before the result-lines. Use -v to also show a date. | |
204 | Put a timestamp before the result-lines. Use \-v to also show a date. | |
202 | 205 | .TP |
203 | 206 | .B "\-\-tx-buffer x" |
204 | 207 | Set the size of the transmit buffer (in bytes). |
207 | 210 | Show the version and exit. |
208 | 211 | |
209 | 212 | .SH OUTPUT |
210 | In split mode (-S) something like "time=0.08+24.09+23.17+15.64+0.02=62.98 ms" is shown. The first value is the time it took to resolve the hostname (or 'n/a' if it did not resolve in this iteration, e.g. in "resolve once" (-r) mode), then the time it took to connect (or -1 for example in persistent connection (-Q, HTTP v1.1), after that the time it took to put the request on the wire, then the time it took for the HTTP server to process the request and send it back and lastly the time it took to close the connection. | |
213 | In split mode (\-S) something like "time=0.08+24.09+23.17+15.64+0.02=62.98 ms" is shown. The first value is the time it took to resolve the hostname (or 'n/a' if it did not resolve in this iteration, e.g. in "resolve once" (\-r) mode), then the time it took to connect (or \-1 for example in persistent connection (\-Q, HTTP v1.1), after that the time it took to put the request on the wire, then the time it took for the HTTP server to process the request and send it back and lastly the time it took to close the connection. | |
211 | 214 | |
212 | 215 | .SH GRAPH |
213 | The graph in the ncurses uses colors to encode a meaning. Green: value is less than 1 block. Red: the value did not fit in the graph. Blue: the value was limitted by --graph-limit. Cyan: no measurement for that point in time. | |
216 | The graph in the ncurses uses colors to encode a meaning. Green: value is less than 1 block. Red: the value did not fit in the graph. Blue: the value was limitted by \-\-graph\-limit. Cyan: no measurement for that point in time. | |
214 | 217 | |
215 | 218 | .SH KEYS |
216 | 219 | Press <CTRL> + <c> to exit the program. It will display a summary of what was measured. |
239 | 242 | This page describes |
240 | 243 | .B httping |
241 | 244 | as found in the httping-2.3 package; other versions may differ slightly. |
242 | Please mail corrections and additions to folkert@vanheusden.com. | |
243 | Report bugs in the program to folkert@vanheusden.com. | |
245 | Please mail corrections and additions to mail@vanheusden.com. | |
246 | Report bugs in the program to mail@vanheusden.com. | |
244 | 247 | Please consider sending bitcoins to 1N5Sn4jny4xVwTwSYLnf7WnFQEGoVRmTQF |
0 | /* Released under GPLv2 with exception for the OpenSSL library. See license.txt */ | |
1 | /* $Revision$ */ | |
0 | /* Released under AGPL v3 with exception for the OpenSSL library. See license.txt */ | |
2 | 1 | |
3 | 2 | #include <errno.h> |
4 | 3 | #include <libintl.h> |
39 | 38 | if (errno == EINTR) |
40 | 39 | return RC_CTRLC; |
41 | 40 | |
42 | set_error(gettext("myread::select failed: %s"), strerror(errno)); | |
41 | set_error(gettext("read_to::select failed: %s"), strerror(errno)); | |
43 | 42 | |
44 | 43 | return RC_SHORTREAD; |
45 | 44 | } |
0 | /* Released under GPLv2 with exception for the OpenSSL library. See license.txt */ | |
1 | /* $Revision$ */ | |
0 | /* Released under AGPL v3 with exception for the OpenSSL library. See license.txt */ | |
2 | 1 | |
3 | 2 | ssize_t read_to(int fd, char *whereto, size_t len, double timeout); |
4 | 3 | ssize_t myread(int fd, char *whereto, size_t len, double timeout); |
0 | HTTPing is (C) 2003-2013 by folkert@vanheusden.com | |
0 | HTTPing is (C) 2003-2016 by folkert@vanheusden.com | |
1 | 1 | |
2 | The GPL version 2 applies to this program. That document can be found | |
2 | The AGPL version 3 applies to this program. That document can be found | |
3 | 3 | on the website of the free software foundation. |
4 | 4 | |
5 | 5 | In addition, as a special exception, the copyright holder gives |
0 | /* Released under GPLv2 with exception for the OpenSSL library. See license.txt */ | |
1 | /* $Revision: 278 $ */ | |
0 | /* Released under AGPL v3 with exception for the OpenSSL library. See license.txt */ | |
2 | 1 | |
3 | 2 | #define _GNU_SOURCE |
4 | 3 | #include <sys/ioctl.h> |
638 | 637 | struct tm tm; |
639 | 638 | memset(&tm, 0x00, sizeof tm); |
640 | 639 | |
641 | /* 22 Feb 2013 09:13:56 */ | |
640 | /* 22 Feb 2015 09:13:56 */ | |
642 | 641 | if (strptime(komma + 1, "%d %b %Y %H:%M:%S %Z", &tm)) |
643 | 642 | return mktime(&tm); |
644 | 643 | } |
659 | 658 | struct tm tm; |
660 | 659 | memset(&tm, 0x00, sizeof tm); |
661 | 660 | |
662 | /* 22 Feb 2013 09:13:56 */ | |
661 | /* 22 Feb 2015 09:13:56 */ | |
663 | 662 | if (strptime(komma + 1, "%d %b %Y %H:%M:%S %Z", &tm)) |
664 | 663 | age = their_ts - mktime(&tm); |
665 | 664 | } |
1035 | 1034 | bps.Bps_avg = 0; |
1036 | 1035 | |
1037 | 1036 | setlocale(LC_ALL, ""); |
1038 | bindtextdomain("HTTPing", LOCALEDIR); | |
1039 | textdomain("HTTPing"); | |
1037 | bindtextdomain("httping", LOCALEDIR); | |
1038 | textdomain("httping"); | |
1040 | 1039 | |
1041 | 1040 | init_statst(&t_resolve); |
1042 | 1041 | init_statst(&t_connect); |
1414 | 1413 | if (!(get_instead_of_head || use_ssl) && show_Bps) |
1415 | 1414 | error_exit(gettext("-b/-B can only be used when also using -G (GET instead of HEAD) or -l (use SSL)\n")); |
1416 | 1415 | |
1417 | if (use_tfo && use_ssl) | |
1418 | error_exit(gettext("TCP Fast open and SSL not supported together\n")); | |
1419 | ||
1420 | 1416 | if (colors) |
1421 | 1417 | set_colors(ncurses_mode); |
1422 | 1418 | |
1445 | 1441 | #ifdef NC |
1446 | 1442 | if (ncurses_mode) |
1447 | 1443 | { |
1448 | slow_log(gettext("\nAuto enabling SSL due to https-URL")); | |
1444 | slow_log(gettext("\nAuto enabling SSL due to https-URL\n")); | |
1449 | 1445 | update_terminal(); |
1450 | 1446 | } |
1451 | 1447 | else |
1452 | 1448 | #endif |
1453 | 1449 | { |
1454 | fprintf(stderr, gettext("Auto enabling SSL due to https-URL")); | |
1455 | } | |
1456 | } | |
1450 | fprintf(stderr, gettext("Auto enabling SSL due to https-URL\n")); | |
1451 | } | |
1452 | } | |
1453 | ||
1454 | if (use_tfo && use_ssl) | |
1455 | error_exit(gettext("TCP Fast open and SSL not supported together\n")); | |
1457 | 1456 | |
1458 | 1457 | if (verbose) |
1459 | 1458 | { |
1750 | 1749 | if (fd >= 0) |
1751 | 1750 | { |
1752 | 1751 | /* set fd blocking */ |
1753 | if (set_fd_blocking(fd) == -1) | |
1752 | if (set_fd_blocking(fd) == -1) /* FIXME redundant? already in connect_to etc? */ | |
1754 | 1753 | { |
1755 | 1754 | stats_close(&fd, &t_close, 1); |
1756 | 1755 | break; |
1805 | 1804 | |
1806 | 1805 | #ifndef NO_SSL |
1807 | 1806 | if (use_ssl) |
1808 | rc = WRITE_SSL(ssl_h, request, req_len); | |
1807 | rc = WRITE_SSL(ssl_h, request, req_len, timeout); | |
1809 | 1808 | else |
1810 | 1809 | #endif |
1811 | 1810 | { |
1819 | 1818 | e.g. until the transmitbuffers are empty and the data was |
1820 | 1819 | sent to the next hop |
1821 | 1820 | */ |
1821 | #ifndef __CYGWIN__ | |
1822 | 1822 | for(;;) |
1823 | 1823 | { |
1824 | 1824 | int bytes_left = 0; |
1837 | 1837 | */ |
1838 | 1838 | usleep(write_sleep); |
1839 | 1839 | } |
1840 | #endif | |
1840 | 1841 | |
1841 | 1842 | dafter_write_complete = get_ts(); |
1842 | 1843 |
0 | 0 | extern volatile int stop; |
1 | extern volatile char got_sigquit; | |
1 | 2 | extern int max_x, max_y; |
2 | 3 | |
3 | 4 | void determine_terminal_size(int *max_y, int *max_x); |
0 | /* Released under GPLv2 with exception for the OpenSSL library. See license.txt */ | |
1 | /* $Revision$ */ | |
2 | ||
0 | /* Released under AGPL v3 with exception for the OpenSSL library. See license.txt */ | |
3 | 1 | #include <errno.h> |
4 | 2 | #include <libintl.h> |
5 | 3 | #include <string.h> |
25 | 23 | #include "io.h" |
26 | 24 | #include "http.h" |
27 | 25 | #include "utils.h" |
26 | #include "main.h" | |
28 | 27 | |
29 | 28 | BIO *bio_err = NULL; |
30 | 29 | |
41 | 40 | CRYPTO_cleanup_all_ex_data(); |
42 | 41 | } |
43 | 42 | |
44 | char close_ssl_connection(SSL *ssl_h) | |
43 | int close_ssl_connection(SSL *const ssl_h) | |
45 | 44 | { |
46 | 45 | int rc = SSL_shutdown(ssl_h); |
47 | 46 | |
62 | 61 | return 0; |
63 | 62 | } |
64 | 63 | |
65 | int READ_SSL(SSL *ssl_h, char *whereto, int len) | |
66 | { | |
67 | int cnt=len; | |
68 | ||
69 | while(len>0) | |
70 | { | |
71 | int rc; | |
64 | int READ_SSL(SSL *const ssl_h, char *whereto, int len, const double timeout) | |
65 | { | |
66 | const int cnt = len; | |
67 | const int fd = SSL_get_rfd(ssl_h); | |
68 | double end = get_ts() + timeout; | |
69 | ||
70 | while(len > 0 && !got_sigquit) | |
71 | { | |
72 | int rc = -1; | |
73 | fd_set rfds, wfds; | |
74 | struct timeval tv; | |
75 | double now = get_ts(), left = end - now; | |
76 | ||
77 | if (left <= 0.0) | |
78 | { | |
79 | set_error(gettext("Time-out on SSL connection")); | |
80 | return -1; | |
81 | } | |
82 | ||
83 | FD_ZERO(&rfds); | |
84 | FD_SET(fd, &rfds); | |
85 | FD_ZERO(&wfds); /* yes, see openssl */ | |
86 | FD_SET(fd, &wfds); | |
87 | ||
88 | tv.tv_sec = left; | |
89 | tv.tv_usec = (left - tv.tv_sec) * 1000000; | |
90 | ||
91 | rc = select(fd + 1, &rfds, &wfds, NULL, &tv); | |
92 | ||
93 | if (rc == -1) | |
94 | { | |
95 | if (errno != EINTR && errno != EAGAIN) | |
96 | set_error(gettext("READ_SSL: io-error: %s"), strerror(errno)); | |
97 | ||
98 | return -1; | |
99 | } | |
100 | ||
101 | if (rc == 0) | |
102 | { | |
103 | set_error(gettext("Time-out on SSL connection (READ)")); | |
104 | return -1; | |
105 | } | |
72 | 106 | |
73 | 107 | rc = SSL_read(ssl_h, whereto, len); |
74 | 108 | if (rc == -1) |
75 | 109 | { |
76 | 110 | if (errno != EINTR && errno != EAGAIN) |
77 | { | |
78 | 111 | set_error(gettext("READ_SSL: io-error: %s"), strerror(errno)); |
79 | return -1; | |
80 | } | |
81 | } | |
82 | else if (rc == 0) | |
83 | { | |
112 | ||
113 | return -1; | |
114 | } | |
115 | ||
116 | if (rc == 0) | |
84 | 117 | return 0; |
85 | } | |
86 | else | |
87 | { | |
88 | whereto += rc; | |
89 | len -= rc; | |
90 | } | |
118 | ||
119 | whereto += rc; | |
120 | len -= rc; | |
91 | 121 | } |
92 | 122 | |
93 | 123 | return cnt; |
94 | 124 | } |
95 | 125 | |
96 | int WRITE_SSL(SSL *ssl_h, const char *wherefrom, int len) | |
97 | { | |
98 | int cnt=len; | |
99 | ||
100 | while(len>0) | |
101 | { | |
102 | int rc; | |
126 | int WRITE_SSL(SSL *const ssl_h, const char *wherefrom, int len, const double timeout) | |
127 | { | |
128 | const int cnt = len; | |
129 | const int fd = SSL_get_wfd(ssl_h); | |
130 | double end = get_ts() + timeout; | |
131 | ||
132 | while(len > 0 && !got_sigquit) | |
133 | { | |
134 | int rc = -1; | |
135 | fd_set rfds, wfds; | |
136 | struct timeval tv; | |
137 | double now = get_ts(), left = end - now; | |
138 | ||
139 | if (left <= 0.0) | |
140 | { | |
141 | set_error(gettext("Time-out on SSL connection")); | |
142 | return -1; | |
143 | } | |
144 | ||
145 | FD_ZERO(&rfds); /* yes, that's correct */ | |
146 | FD_SET(fd, &rfds); | |
147 | FD_ZERO(&wfds); | |
148 | FD_SET(fd, &wfds); | |
149 | ||
150 | tv.tv_sec = left; | |
151 | tv.tv_usec = (left - tv.tv_sec) * 1000000; | |
152 | ||
153 | rc = select(fd + 1, &rfds, &wfds, NULL, &tv); | |
154 | ||
155 | if (rc == -1) | |
156 | { | |
157 | if (errno != EINTR && errno != EAGAIN) | |
158 | set_error(gettext("WRITE_SSL: io-error: %s"), strerror(errno)); | |
159 | ||
160 | return -1; | |
161 | } | |
162 | ||
163 | if (rc == 0) | |
164 | { | |
165 | set_error(gettext("Time-out on SSL connection (write)")); | |
166 | return -1; | |
167 | } | |
103 | 168 | |
104 | 169 | rc = SSL_write(ssl_h, wherefrom, len); |
105 | 170 | if (rc == -1) |
106 | 171 | { |
107 | 172 | if (errno != EINTR && errno != EAGAIN) |
108 | { | |
109 | 173 | set_error(gettext("WRITE_SSL: io-error: %s"), strerror(errno)); |
110 | return -1; | |
111 | } | |
112 | } | |
113 | else if (rc == 0) | |
114 | { | |
174 | return -1; | |
175 | } | |
176 | ||
177 | if (rc == 0) | |
115 | 178 | return 0; |
116 | } | |
117 | else | |
118 | { | |
119 | wherefrom += rc; | |
120 | len -= rc; | |
121 | } | |
179 | ||
180 | wherefrom += rc; | |
181 | len -= rc; | |
122 | 182 | } |
123 | 183 | |
124 | 184 | return cnt; |
125 | 185 | } |
126 | 186 | |
127 | int connect_ssl(int fd, SSL_CTX *client_ctx, SSL **ssl_h, BIO **s_bio, double timeout, double *ssl_handshake) | |
128 | { | |
129 | int dummy = -1; | |
187 | int connect_ssl(const int fd, SSL_CTX *const client_ctx, SSL **const ssl_h, BIO **const s_bio, const double timeout, double *const ssl_handshake) | |
188 | { | |
130 | 189 | double dstart = get_ts(); |
190 | double end = get_ts() + timeout; | |
131 | 191 | |
132 | 192 | struct timeval tv; |
133 | 193 | tv.tv_sec = (long)(timeout / 1000.0); |
152 | 212 | *s_bio = BIO_new_socket(fd, BIO_NOCLOSE); |
153 | 213 | SSL_set_bio(*ssl_h, *s_bio, *s_bio); |
154 | 214 | |
155 | dummy = SSL_connect(*ssl_h); | |
156 | if (dummy <= 0) | |
157 | { | |
158 | set_error(gettext("problem starting SSL connection: %d"), SSL_get_error(*ssl_h, dummy)); | |
215 | if (set_fd_nonblocking(fd) == -1) | |
216 | return RC_INVAL; | |
217 | ||
218 | do | |
219 | { | |
220 | int rc = SSL_connect(*ssl_h); | |
221 | ||
222 | if (rc <= 0) | |
223 | { | |
224 | int err = SSL_get_error(*ssl_h, rc); | |
225 | ||
226 | if (err == SSL_ERROR_WANT_CONNECT || err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE) | |
227 | { | |
228 | struct timeval tv; | |
229 | fd_set fds; | |
230 | double left = end - get_ts(); | |
231 | ||
232 | if (left <= 0) | |
233 | { | |
234 | set_error(gettext("Time-out during SSL handshake")); | |
235 | return -1; | |
236 | } | |
237 | ||
238 | tv.tv_sec = left; | |
239 | tv.tv_usec = (left - tv.tv_sec) * 1000000; | |
240 | ||
241 | FD_ZERO(&fds); | |
242 | FD_SET(fd, &fds); | |
243 | ||
244 | if (err == SSL_ERROR_WANT_READ) | |
245 | rc = select(fd + 1, &fds, NULL, NULL, &tv); | |
246 | else | |
247 | rc = select(fd + 1, NULL, &fds, NULL, &tv); | |
248 | } | |
249 | else | |
250 | { | |
251 | set_error(gettext("SSL handshake error: %s"), SSL_get_error(*ssl_h, err)); | |
252 | return -1; | |
253 | } | |
254 | } | |
255 | } | |
256 | while (!SSL_is_init_finished(*ssl_h) && !got_sigquit); | |
257 | ||
258 | if (got_sigquit) | |
159 | 259 | return -1; |
160 | } | |
161 | 260 | |
162 | 261 | *ssl_handshake = get_ts() - dstart; |
163 | 262 | |
263 | if (set_fd_blocking(fd) == -1) | |
264 | return -1; | |
265 | ||
164 | 266 | return 0; |
165 | 267 | } |
166 | 268 | |
167 | SSL_CTX * initialize_ctx(char ask_compression) | |
269 | SSL_CTX * initialize_ctx(const char ask_compression) | |
168 | 270 | { |
169 | 271 | const SSL_METHOD *meth = NULL; |
170 | 272 | SSL_CTX *ctx = NULL; |
191 | 293 | return ctx; |
192 | 294 | } |
193 | 295 | |
194 | char * get_fingerprint(SSL *ssl_h) | |
296 | char * get_fingerprint(SSL *const ssl_h) | |
195 | 297 | { |
196 | 298 | char *string = NULL; |
197 | 299 | |
227 | 329 | return string; |
228 | 330 | } |
229 | 331 | |
230 | int connect_ssl_proxy(int fd, struct addrinfo *ai, double timeout, const char *proxy_user, const char *proxy_password, const char *hostname, int portnr, char *tfo) | |
332 | int connect_ssl_proxy(const int fd, struct addrinfo *const ai, const double timeout, const char *const proxy_user, const char *const proxy_password, const char *const hostname, const int portnr, char *const tfo) | |
231 | 333 | { |
232 | 334 | int rc = -1; |
233 | 335 | char request_headers[4096] = { 0 }; |
238 | 340 | request_headers_len = snprintf(request_headers, sizeof request_headers, "CONNECT %s:%d HTTP/1.1\r\nUser-Agent: HTTPing v" VERSION \ |
239 | 341 | "\r\nProxy-Connection: keep-alive\r\nConnection: keep-alive\r\nHost: %s\r\n", hostname, portnr, hostname); |
240 | 342 | |
241 | if (proxy_user) | |
242 | { | |
243 | char ppa_string[256] = { 0 }; | |
244 | char b64_ppa_string[512] = { 0 }; | |
245 | ||
246 | sprintf(ppa_string, "%s:%s", proxy_user, proxy_password); | |
247 | enc_b64(ppa_string, strlen(ppa_string), b64_ppa_string); | |
248 | request_headers_len += snprintf(&request_headers[request_headers_len], sizeof request_headers - request_headers_len, "Proxy-Authorization: Basic %s\r\n", b64_ppa_string); | |
249 | } | |
343 | if (proxy_user) | |
344 | { | |
345 | char ppa_string[256] = { 0 }; | |
346 | char b64_ppa_string[512] = { 0 }; | |
347 | ||
348 | sprintf(ppa_string, "%s:%s", proxy_user, proxy_password); | |
349 | enc_b64(ppa_string, strlen(ppa_string), b64_ppa_string); | |
350 | request_headers_len += snprintf(&request_headers[request_headers_len], sizeof request_headers - request_headers_len, "Proxy-Authorization: Basic %s\r\n", b64_ppa_string); | |
351 | } | |
250 | 352 | |
251 | 353 | request_headers_len += snprintf(&request_headers[request_headers_len], sizeof request_headers - request_headers_len, "\r\n"); |
252 | 354 | |
253 | if ((rc = connect_to(fd, ai, timeout, tfo, request_headers, request_headers_len, &rh_sent)) < 0) | |
355 | if ((rc = connect_to(fd, ai, timeout, tfo, request_headers, request_headers_len, &rh_sent)) == -1) | |
254 | 356 | return rc; |
255 | 357 | |
256 | 358 | if (!rh_sent) |
0 | /* Released under GPLv2 with exception for the OpenSSL library. See license.txt */ | |
1 | /* $Revision$ */ | |
0 | /* Released under AGPL v3 with exception for the OpenSSL library. See license.txt */ | |
2 | 1 | |
3 | 2 | #include <netdb.h> |
4 | 3 | #include <netinet/in.h> |
6 | 5 | #include <arpa/inet.h> |
7 | 6 | |
8 | 7 | void shutdown_ssl(void); |
9 | char close_ssl_connection(SSL *ssl_h); | |
10 | int READ_SSL(SSL *ssl_h, char *whereto, int len); | |
11 | int WRITE_SSL(SSL *ssl_h, const char *whereto, int len); | |
12 | int connect_ssl(int fd, SSL_CTX *client_ctx, SSL **ssl_h, BIO **s_bio, double timeout, double *ssl_handshake); | |
13 | SSL_CTX * initialize_ctx(char ask_compression); | |
14 | char * get_fingerprint(SSL *ssl_h); | |
15 | int connect_ssl_proxy(int fd, struct addrinfo *ai, double timeout, const char *proxy_user, const char *proxy_password, const char *hostname, int portnr, char *tfo); | |
8 | int close_ssl_connection(SSL *const ssl_h); | |
9 | int READ_SSL(SSL *const ssl_h, char *whereto, int len, const double timeout); | |
10 | int WRITE_SSL(SSL *const ssl_h, const char *whereto, int len, const double timeout); | |
11 | int connect_ssl(const int fd, SSL_CTX *const client_ctx, SSL **const ssl_h, BIO **const s_bio, const double timeout, double *const ssl_handshake); | |
12 | SSL_CTX * initialize_ctx(const char ask_compression); | |
13 | char * get_fingerprint(SSL *const ssl_h); | |
14 | int connect_ssl_proxy(const int fd, struct addrinfo *const ai, const double timeout, const char *const proxy_user, const char *const proxy_password, const char *const hostname, const int portnr, char *const tfo); |
0 | 0 | # Dutch translations for HTTPing package. |
1 | # Copyright (C) 2013 folkert van heusden | |
1 | # Copyright (C) 2016 folkert van heusden | |
2 | 2 | # This file is distributed under the same license as the HTTPing package. |
3 | # folkert van heusden <folkert@vanheusden.com>, 2013. | |
3 | # folkert van heusden <mail@vanheusden.com>, 2016. | |
4 | 4 | # Translated by Joris Zwart - http://joriszwart.nl/ |
5 | 5 | # |
6 | 6 | msgid "" |
7 | 7 | msgstr "" |
8 | 8 | "Project-Id-Version: HTTPing\n" |
9 | 9 | "Report-Msgid-Bugs-To: \n" |
10 | "POT-Creation-Date: 2013-05-04 15:29+0200\n" | |
11 | "PO-Revision-Date: 2013-05-04 18:41+0100\n" | |
10 | "POT-Creation-Date: 2015-05-04 15:29+0200\n" | |
11 | "PO-Revision-Date: 2015-05-04 18:41+0100\n" | |
12 | 12 | "Last-Translator: Joris Zwart <hallo@joriszwart.nl>\n" |
13 | 13 | "Language-Team: Dutch\n" |
14 | 14 | "Language: nl\n" |
186 | 186 | msgstr "voeg geen \"Host:\"-regel in het verbindingsverzoek" |
187 | 187 | |
188 | 188 | #: help.c:212 |
189 | msgid "use a persistent connection. adds a 'C' to the output if httping had to reconnect" | |
190 | msgstr "gebruik een blijvende verbinding. als het bestemmingssysteem de verbinding verbroken heeft, dan zal HTTPing een \"C\" toevoegen aan de uitvoer" | |
189 | msgid "use a persistent connection, i.e. reuse the same TCP connection for multiple HTTP requests. usually possible when 'Connection: Keep-Alive' is sent by server. adds a 'C' to the output if httping had to reconnect" | |
190 | msgstr "gebruik een blijvende verbinding, dat wil zeggen hergebruiken dezelfde TCP-verbinding voor meerdere HTTP-verzoeken. meestal mogelijk wanneer 'Connection: Keep-Alive' is verzonden door de server. als het bestemmingssysteem de verbinding verbroken heeft, dan zal HTTPing een \"C\" toevoegen aan de uitvoer" | |
191 | 191 | |
192 | 192 | #: help.c:213 |
193 | 193 | msgid "use 'x' for the UserAgent header" |
347 | 347 | msgstr "json uitvoer, kan niet met -m gecombineerd worden" |
348 | 348 | |
349 | 349 | #: help.c:270 |
350 | msgid "what http results codes indicate 'ok' comma seperated WITHOUT spaces inbetween default is 200, use with -e" | |
350 | msgid "what http results codes indicate 'ok' comma separated WITHOUT spaces inbetween default is 200, use with -e" | |
351 | 351 | msgstr "welke HTTP statuscodes als 'ok' te beschouwen. dit moet een met komma gescheiden lijst (geen spaties) zijn. de standaard waarde is 200. gebruik deze instelling ism -e" |
352 | 352 | |
353 | 353 | #: help.c:271 |
40 | 40 | |
41 | 41 | |
42 | 42 | For everything more or less related to 'httping', please feel free |
43 | to contact me on: folkert@vanheusden.com | |
43 | to contact me on: mail@vanheusden.com | |
44 | 44 | |
45 | 45 | Please support my opensource development: http://www.vanheusden.com/wishlist.php |
46 | 46 | Or send any surplus bitcoins to 1N5Sn4jny4xVwTwSYLnf7WnFQEGoVRmTQF |
0 | /* Released under GPLv2 with exception for the OpenSSL library. See license.txt */ | |
1 | /* $Revision$ */ | |
0 | /* Released under AGPL v3 with exception for the OpenSSL library. See license.txt */ | |
2 | 1 | |
3 | 2 | #include <sys/types.h> |
4 | 3 | #include <sys/time.h> |
0 | /* Released under GPLv2 with exception for the OpenSSL library. See license.txt */ | |
1 | /* $Revision$ */ | |
0 | /* Released under AGPL v3 with exception for the OpenSSL library. See license.txt */ | |
2 | 1 | |
3 | 2 | #define incopy(a) *((struct in_addr *)a) |
4 | 3 |
0 | # Russian translation for HTTPing package. | |
1 | # Copyright (C) 2016 folkert van heusden | |
2 | # This file is distributed under the same license as the HTTPing package. | |
3 | # folkert van heusden <mail@vanheusden.com>, 2016. | |
4 | # Translated by Way, No - http://noway421.github.io/ | |
5 | # | |
6 | msgid "" | |
7 | msgstr "" | |
8 | "Project-Id-Version: HTTPing\n" | |
9 | "Report-Msgid-Bugs-To: \n" | |
10 | "POT-Creation-Date: 2015-05-04 15:29+0200\n" | |
11 | "PO-Revision-Date: 2016-07-13 16:00+1100\n" | |
12 | "Last-Translator: Way, No <noway@2ch.hk>\n" | |
13 | "Language-Team: Russian\n" | |
14 | "Language: ru\n" | |
15 | "MIME-Version: 1.0\n" | |
16 | "Content-Type: text/plain; charset=UTF-8\n" | |
17 | "Content-Transfer-Encoding: 8bit\n" | |
18 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11) ? 0 : ((n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20)) ? 1 : 2);\n" | |
19 | "X-Poedit-Language: Russian\n" | |
20 | "X-Poedit-Country: RUSSIAN FEDERATION\n" | |
21 | ||
22 | #: error.c:23 | |
23 | #, c-format | |
24 | msgid "" | |
25 | "\n" | |
26 | "\n" | |
27 | "errno=%d which means %s (if applicable)\n" | |
28 | msgstr "" | |
29 | "\n" | |
30 | "\n" | |
31 | "errno=%d что значит: %s (если применимо)\n" | |
32 | ||
33 | #: error.c:39 | |
34 | #, c-format | |
35 | msgid "Error message '%s' truncated" | |
36 | msgstr "Сообщение об ошибке '%s' урезано." | |
37 | ||
38 | #: fft.c:21 | |
39 | msgid "failed allocating memory for fft (1)" | |
40 | msgstr "не удалось выделить память для fft (1)." | |
41 | ||
42 | #: fft.c:25 | |
43 | msgid "failed allocating memory for fft (2)" | |
44 | msgstr "не удалось выделить память для fft (2)." | |
45 | ||
46 | #: fft.c:30 | |
47 | msgid "failed calculating plan for fft" | |
48 | msgstr "не удалось вычислить план для fft." | |
49 | ||
50 | #: help.c:77 | |
51 | #, c-format | |
52 | msgid "HTTPing v" | |
53 | msgstr "HTTPing версия" | |
54 | ||
55 | msgid "adds an extra request-header" | |
56 | msgstr "добавляет дополнительный заголовок запроса" | |
57 | ||
58 | #: help.c:79 | |
59 | #, c-format | |
60 | msgid " * SSL support included (-l)\n" | |
61 | msgstr " * SSL поддержка включена (-l)\n" | |
62 | ||
63 | #: help.c:84 | |
64 | #, c-format | |
65 | msgid " * ncurses interface with FFT included (-K)\n" | |
66 | msgstr " * ncurses интерфейс с FFT включен (-K)\n" | |
67 | ||
68 | #: help.c:86 | |
69 | #, c-format | |
70 | msgid " * ncurses interface included (-K)\n" | |
71 | msgstr " * ncurses интерфейс включен (-K)\n" | |
72 | ||
73 | #: help.c:91 | |
74 | #, c-format | |
75 | msgid " * TFO (TCP fast open) support included (-F)\n" | |
76 | msgstr " * TFO (TCP fast open) поддержка включена' (-F)\n" | |
77 | ||
78 | #: help.c:93 | |
79 | #: help.c:293 | |
80 | #, c-format | |
81 | msgid "\n" | |
82 | msgstr "\n" | |
83 | ||
84 | #: help.c:176 | |
85 | #, c-format | |
86 | msgid " *** where to connect to ***\n" | |
87 | msgstr " *** куда подключаться ***\n" | |
88 | ||
89 | #: help.c:177 | |
90 | msgid "URL to ping (e.g. -g http://localhost/)" | |
91 | msgstr "URL для пинга (к примеру, -g http://localhost/)" | |
92 | ||
93 | #: help.c:178 | |
94 | msgid "hostname to ping (e.g. localhost) - use either -g or -h" | |
95 | msgstr "имя хоста для пинга (к примеру, localhost) - используйте -g или -h" | |
96 | ||
97 | #: help.c:179 | |
98 | msgid "portnumber (e.g. 80) - use with -h" | |
99 | msgstr "номер порта (к примеру, 80), используется с -h" | |
100 | ||
101 | #: help.c:180 | |
102 | msgid "use IPv6 when resolving/connecting" | |
103 | msgstr "использовать IPv6 для резолва/подключения" | |
104 | ||
105 | #: help.c:182 | |
106 | msgid "connect using SSL. pinging an https URL automatically enables this setting" | |
107 | msgstr "подключаться с SSL. при пинге https URL эта опция включается автоматически" | |
108 | ||
109 | #: help.c:187 | |
110 | #, c-format | |
111 | msgid " *** proxy settings ***\n" | |
112 | msgstr " *** настройки proxy ***\n" | |
113 | ||
114 | #: help.c:188 | |
115 | msgid "x should be \"host:port\" which are the network settings of the http/https proxy server. ipv6 ip-address should be \"[ip:address]:port\"" | |
116 | msgstr "x должен быть \"host:port\", т.е. сетевыми настройками http/https прокси сервера. ipv6 адрес должен быть в формате \"[ip:address]:port\"" | |
117 | ||
118 | #: help.c:189 | |
119 | msgid "fetch proxy settings from environment variables" | |
120 | msgstr "читать настройки прокси из переменных окружения" | |
121 | ||
122 | #: help.c:190 | |
123 | msgid "username for authentication against proxy" | |
124 | msgstr "имя пользователя для прокси аутентификации" | |
125 | ||
126 | #: help.c:191 | |
127 | msgid "password for authentication against proxy" | |
128 | msgstr "пароль для прокси аутентификации" | |
129 | ||
130 | #: help.c:192 | |
131 | msgid "read password for proxy authentication from file x" | |
132 | msgstr "читать пароль для прокси аутентификации из файла x" | |
133 | ||
134 | #: help.c:193 | |
135 | msgid "proxy is a socks5 server" | |
136 | msgstr "прокси является socks5 сервером" | |
137 | ||
138 | #: help.c:194 | |
139 | msgid "adds \"&x=[random value]\" to the request URL" | |
140 | msgstr "добавляет \"&x=[случайное значение]\" к URL запроса" | |
141 | ||
142 | #: help.c:198 | |
143 | #, c-format | |
144 | msgid " *** timing settings ***\n" | |
145 | msgstr " *** настройки времени ***\n" | |
146 | ||
147 | #: help.c:199 | |
148 | msgid "how many times to ping" | |
149 | msgstr "сколько раз исполнять пинг" | |
150 | ||
151 | #: help.c:200 | |
152 | msgid "delay between each ping" | |
153 | msgstr "задержка между каждым пингом" | |
154 | ||
155 | #: help.c:201 | |
156 | msgid "timeout (default: 30s)" | |
157 | msgstr "тайм-аут (по умолчанию: 30 секунд)" | |
158 | ||
159 | #: help.c:202 | |
160 | msgid "execute pings at multiples of interval relative to start, automatically enabled in ncurses output mode" | |
161 | msgstr "выполнять пинги пропорционально интервалам относительно начала, автоматически включено в ncurses режиме вывода" | |
162 | ||
163 | #: help.c:203 | |
164 | msgid "flood connect (no delays)" | |
165 | msgstr "подключение в режиме флуда (без задержек)" | |
166 | ||
167 | #: help.c:207 | |
168 | #, c-format | |
169 | msgid " *** HTTP settings ***\n" | |
170 | msgstr " *** HTTP настройки ***\n" | |
171 | ||
172 | #: help.c:208 | |
173 | msgid "ask any proxies on the way not to cache the requests" | |
174 | msgstr "просить все прокси по пути не кэшировать запросы" | |
175 | ||
176 | #: help.c:209 | |
177 | msgid "connect to a different host than in the URL given" | |
178 | msgstr "подключиться к другому хосту, отличному от данного в URL" | |
179 | ||
180 | #: help.c:210 | |
181 | msgid "return the cookies given by the HTTP server in the following request(s)" | |
182 | msgstr "возвращать куки выданные HTTP сервером в следующем запросе(ах)" | |
183 | ||
184 | #: help.c:211 | |
185 | msgid "do not add \"Host:\"-line to the request headers" | |
186 | msgstr "не добавлять \"Host:\" строку к заголовку запроса" | |
187 | ||
188 | #: help.c:212 | |
189 | msgid "use a persistent connection, i.e. reuse the same TCP connection for multiple HTTP requests. usually possible when 'Connection: Keep-Alive' is sent by server. adds a 'C' to the output if httping had to reconnect" | |
190 | msgstr "использовать постоянное соединение, т.е. переиспользовать то же самое TCP соединение для нескольких HTTP запросов. обычно возможно когда 'Connection: Keep-Alive' отправлено сервером. добавляет 'C' в вывод если httping был вынужден переподключиться" | |
191 | ||
192 | #: help.c:213 | |
193 | msgid "use 'x' for the UserAgent header" | |
194 | msgstr "использовать 'x' в качестве заголовка UserAgent" | |
195 | ||
196 | #: help.c:214 | |
197 | msgid "use 'x' for the Referer header" | |
198 | msgstr "использовать 'x' в качестве заголовка Referer" | |
199 | ||
200 | #: help.c:218 | |
201 | #, c-format | |
202 | msgid " *** networking settings ***\n" | |
203 | msgstr " *** настройки сети ***\n" | |
204 | ||
205 | #: help.c:219 | |
206 | msgid "limit the MTU size" | |
207 | msgstr "ограничивать размер MTU" | |
208 | ||
209 | #: help.c:220 | |
210 | msgid "do not disable Naggle" | |
211 | msgstr "не отключать алгоритм Naggle" | |
212 | ||
213 | #: help.c:221 | |
214 | msgid "receive buffer size" | |
215 | msgstr "размер буфера приема" | |
216 | ||
217 | #: help.c:222 | |
218 | msgid "transmit buffer size" | |
219 | msgstr "размер буфера передачи" | |
220 | ||
221 | #: help.c:223 | |
222 | msgid "resolve hostname only once (useful when pinging roundrobin DNS: also takes the first DNS lookup out of the loop so that the first measurement is also correct)" | |
223 | msgstr "резолвить имя хоста только один раз (полезно, когда пингуется round robin DNS: также берется первый DNS ответ из цикла таким образом, что первое измерение тоже корректно)" | |
224 | ||
225 | #: help.c:224 | |
226 | msgid "do not abort the program if resolving failed: keep retrying" | |
227 | msgstr "не выходить из программы если резолвинг не удался: продолжать попытки" | |
228 | ||
229 | #: help.c:225 | |
230 | msgid "bind to an ip-address (and thus interface) with an optional port" | |
231 | msgstr "биндиться на ip адрес (и, соответственно, интерфейс), опционально на порт" | |
232 | ||
233 | #: help.c:227 | |
234 | msgid "\"TCP fast open\" (TFO), reduces the latency of TCP connects" | |
235 | msgstr "\"TCP fast open\" (TFO), уменьшает задержку TCP подключений" | |
236 | ||
237 | #: help.c:229 | |
238 | msgid "set priority of packets" | |
239 | msgstr "устанавливать приоритет пакетов" | |
240 | ||
241 | #: help.c:230 | |
242 | msgid "set TOS (type of service)" | |
243 | msgstr "устанавливать TOS (тип сервиса)" | |
244 | ||
245 | #: help.c:234 | |
246 | #, c-format | |
247 | msgid " *** HTTP authentication ***\n" | |
248 | msgstr " *** HTTP аутентификация ***\n" | |
249 | ||
250 | #: help.c:235 | |
251 | msgid "activate (\"basic\") authentication" | |
252 | msgstr "активировать (\"basic\") аутентификацию" | |
253 | ||
254 | #: help.c:236 | |
255 | msgid "username for authentication" | |
256 | msgstr "имя пользователя для аутентификации" | |
257 | ||
258 | #: help.c:237 | |
259 | msgid "password for authentication" | |
260 | msgstr "пароль для аутентификации" | |
261 | ||
262 | #: help.c:238 | |
263 | msgid "read the password fom the file 'x' (replacement for -P)" | |
264 | msgstr "читать пароль из файла 'x' (замена -P)" | |
265 | ||
266 | #: help.c:242 | |
267 | #, c-format | |
268 | msgid " *** output settings ***\n" | |
269 | msgstr " *** настройки вывода ***\n" | |
270 | ||
271 | #: help.c:243 | |
272 | msgid "show statuscodes" | |
273 | msgstr "показывать коды ответа" | |
274 | ||
275 | #: help.c:244 | |
276 | msgid "split measured time in its individual components (resolve, connect, send, etc." | |
277 | msgstr "разделять замеренное время на индивидуальные составляющие (резолв, подключение, отправка и т.п.)" | |
278 | ||
279 | #: help.c:245 | |
280 | msgid "from what ping value to show the value in red (must be bigger than yellow), only in color mode (-Y)" | |
281 | msgstr "начиная от какого значения пинга показывать значение красным (должно быть больше, чем желтое), только в цветном режиме (-Y)" | |
282 | ||
283 | #: help.c:246 | |
284 | msgid "from what ping value to show the value in yellow" | |
285 | msgstr "начиная от какого значения пинга показывать значение желтым" | |
286 | ||
287 | #: help.c:247 | |
288 | msgid "from what ping value to show the results" | |
289 | msgstr "начиная от какого значения пинга показывать результаты" | |
290 | ||
291 | #: help.c:248 | |
292 | msgid "put a timestamp before the measured values, use -v to include the date and -vv to show in microseconds" | |
293 | msgstr "показывать таймстамп перед измеренными значениями, используйте -v, чтобы включить дату и -vv, чтобы показывать микросекунды" | |
294 | ||
295 | #: help.c:249 | |
296 | msgid "show an aggregate each x[/y[/z[/etc]]] seconds" | |
297 | msgstr "показывать совокупный результат каждые x[/y[/z[/т.д.]]] секунд" | |
298 | ||
299 | #: help.c:251 | |
300 | msgid "show fingerprint (SSL)" | |
301 | msgstr "показывать фингерпринт (SSL)" | |
302 | ||
303 | #: help.c:253 | |
304 | msgid "verbose mode" | |
305 | msgstr "показывать подробности (verbose)" | |
306 | ||
307 | #: help.c:257 | |
308 | #, c-format | |
309 | msgid " *** \"GET\" (instead of HTTP \"HEAD\") settings ***\n" | |
310 | msgstr " *** \"GET\" (вместо HTTP \"HEAD\") настройки ***\n" | |
311 | ||
312 | #: help.c:258 | |
313 | msgid "do a GET request instead of HEAD (read the contents of the page as well)" | |
314 | msgstr "делать GET запрос вместо HEAD запроса (читать содержимое страницы в том числе)" | |
315 | ||
316 | #: help.c:259 | |
317 | msgid "show transfer speed in KB/s (use with -G)" | |
318 | msgstr "показывать скорость передачи в КБ/с (используется с -G)" | |
319 | ||
320 | #: help.c:260 | |
321 | msgid "like -b but use compression if available" | |
322 | msgstr "как и -b но использовать сжатие если доступно" | |
323 | ||
324 | #: help.c:261 | |
325 | msgid "limit the amount of data transferred (for -b) to 'x' (in bytes)" | |
326 | msgstr "ограничить количество переданных данных (для -b) до 'x' байт" | |
327 | ||
328 | #: help.c:262 | |
329 | msgid "show the number of KB transferred (for -b)" | |
330 | msgstr "показывать количество переданных данных в КБ (для -b)" | |
331 | ||
332 | #: help.c:266 | |
333 | #, c-format | |
334 | msgid " *** output mode settings ***\n" | |
335 | msgstr " *** настройки режима вывода ***\n" | |
336 | ||
337 | #: help.c:267 | |
338 | msgid "quiet, only returncode" | |
339 | msgstr "тихий режим, возвращать только код возврата" | |
340 | ||
341 | #: help.c:268 | |
342 | msgid "give machine parseable output (see also -o and -e)" | |
343 | msgstr "выдавать машиночитаемый вывод (смотрите также -o и -e)" | |
344 | ||
345 | #: help.c:269 | |
346 | msgid "json output, cannot be combined with -m" | |
347 | msgstr "json вывод, не может быть использовано вместе с -m" | |
348 | ||
349 | #: help.c:270 | |
350 | msgid "what http results codes indicate 'ok' comma separated WITHOUT spaces inbetween default is 200, use with -e" | |
351 | msgstr "какие HTTP коды ответа считать за 'ok'. разделять запятыми БЕЗ пробелов, по умолчанию 200, использовать вместе с -e" | |
352 | ||
353 | #: help.c:271 | |
354 | msgid "string to display when http result code doesn't match" | |
355 | msgstr "строка для показа когда код ответа HTTP не совпадает" | |
356 | ||
357 | #: help.c:272 | |
358 | msgid "Nagios-mode: return 1 when avg. response time >= warn, 2 if >= crit, otherwhise return 0" | |
359 | msgstr "Nagios-mode 1: возвращать 1 когда сред. времени ответа >= \"warn\", 2 когда оно >= \"crit\", в остальных случаях возвращать 0" | |
360 | ||
361 | #: help.c:273 | |
362 | msgid "Nagios mode 2: return 0 when all fine, 'x' when anything failes" | |
363 | msgstr "Nagios mode 2: возвращать 0 когда все в порядке, 'x' когда что-то идет не так" | |
364 | ||
365 | #: help.c:274 | |
366 | msgid "add a cookie to the request" | |
367 | msgstr "добавлять куки к запросу" | |
368 | ||
369 | #: help.c:275 | |
370 | msgid "add colors" | |
371 | msgstr "добавлять цвета" | |
372 | ||
373 | #: help.c:276 | |
374 | msgid "audible ping" | |
375 | msgstr "слышимый пинг" | |
376 | ||
377 | #: help.c:281 | |
378 | #, c-format | |
379 | msgid " *** GUI/ncurses mode settings ***\n" | |
380 | msgstr " *** Настройки режима GUI/ncurses ***\n" | |
381 | ||
382 | #: help.c:282 | |
383 | msgid "ncurses/GUI mode" | |
384 | msgstr "ncurses/GUI режим" | |
385 | ||
386 | #: help.c:284 | |
387 | msgid "draw phase (fourier transform) in gui" | |
388 | msgstr "рисовать фазу (преобразование Фурье) в GUI" | |
389 | ||
390 | #: help.c:286 | |
391 | msgid "when the duration is x or more, show ping line in the slow log window (the middle window)" | |
392 | msgstr "когда длительность больше или равна x, показывать строку пинга в окне медленного журнала (среднее окно)" | |
393 | ||
394 | #: help.c:287 | |
395 | msgid "do not scale to values above x" | |
396 | msgstr "не масштабировать значения больше 'x'" | |
397 | ||
398 | #: help.c:288 | |
399 | msgid "do not show graphs (in ncurses/GUI mode)" | |
400 | msgstr "не показывать графики (в ncurses/GUI режиме)" | |
401 | ||
402 | #: help.c:292 | |
403 | msgid "show the version" | |
404 | msgstr "показывать версию" | |
405 | ||
406 | #: help.c:305 | |
407 | #, c-format | |
408 | msgid "Voorbeeld:\n" | |
409 | msgstr "Пример:\n" | |
410 | ||
411 | #: io.c:43 | |
412 | #: io.c:78 | |
413 | #, c-format | |
414 | msgid "myread::select failed: %s" | |
415 | msgstr "myread::select потерпел неудачу: %s" | |
416 | ||
417 | #: io.c:94 | |
418 | #, c-format | |
419 | msgid "myread::read failed: %s" | |
420 | msgstr "myread::read потерпел неудачу: %s" | |
421 | ||
422 | #: io.c:138 | |
423 | #, c-format | |
424 | msgid "mywrite::select failed: %s" | |
425 | msgstr "mywrite::select потерпел неудачу: %s" | |
426 | ||
427 | #: io.c:152 | |
428 | #, c-format | |
429 | msgid "mywrite::write failed: %s" | |
430 | msgstr "mywrite::write потерпел неудачу: %s" | |
431 | ||
432 | #: io.c:174 | |
433 | #, c-format | |
434 | msgid "set_fd_nonblocking failed! (%s)\n" | |
435 | msgstr "set_fd_nonblocking потерпел неудачу! (%s)\n" | |
436 | ||
437 | #: io.c:187 | |
438 | #, c-format | |
439 | msgid "set_fd_blocking failed! (%s)\n" | |
440 | msgstr "set_fd_blocking потерпел неудачу! (%s)\n" | |
441 | ||
442 | #: main.c:109 | |
443 | #: main.c:108 | |
444 | #, c-format | |
445 | msgid "%s, run time: %.3fs, press ctrl + c to stop" | |
446 | msgstr "%s, время работы: %.3fs, нажмите ctrl + c, чтобы остановить" | |
447 | ||
448 | #: main.c:244 | |
449 | #: main.c:243 | |
450 | #, c-format | |
451 | msgid "Got signal %d\n" | |
452 | msgstr "Есть сигнал %d\n" | |
453 | ||
454 | #: main.c:255 | |
455 | #: main.c:254 | |
456 | #, c-format | |
457 | msgid "Cannot open password-file %s" | |
458 | msgstr "Не получается открыть файл пароля %s" | |
459 | ||
460 | #: main.c:258 | |
461 | #: main.c:257 | |
462 | #, c-format | |
463 | msgid "Problem reading password from file %s" | |
464 | msgstr "Проблема чтения пароля из файла %s" | |
465 | ||
466 | #: main.c:365 | |
467 | #: main.c:364 | |
468 | #, c-format | |
469 | msgid "URL too big, HTTPing has a %d bytes limit" | |
470 | msgstr "URL слишком длинный, HTTPing имеет лимит %d байт" | |
471 | ||
472 | #: main.c:384 | |
473 | #: main.c:383 | |
474 | msgid "using \"http://\" with SSL enabled (-l)" | |
475 | msgstr "Используем \"http://\" с включенным SSL (-l)" | |
476 | ||
477 | #: main.c:519 | |
478 | #: main.c:518 | |
479 | #, c-format | |
480 | msgid "AGG[%d]: %d values, min/avg/max%s = %.1f/%.1f/%.1f" | |
481 | msgstr "СВКПН[%d]: %d значений, мин/сред/макс%s = %.1f/%.1f/%.1f" | |
482 | ||
483 | #: main.c:519 | |
484 | #: main.c:2294 | |
485 | #: main.c:518 | |
486 | #: main.c:2289 | |
487 | msgid "/sd" | |
488 | msgstr "/sd" | |
489 | ||
490 | #: main.c:576 | |
491 | #: main.c:575 | |
492 | msgid "-n: missing parameter\n" | |
493 | msgstr "-n: отсутствующий параметр\n" | |
494 | ||
495 | #: main.c:594 | |
496 | #: main.c:603 | |
497 | #: main.c:593 | |
498 | #: main.c:602 | |
499 | #, c-format | |
500 | msgid "cannot convert ip address '%s' (for -y)\n" | |
501 | msgstr "не получается конвертировать IP адрес '%s' (для -y)\n" | |
502 | ||
503 | #: main.c:710 | |
504 | #: main.c:709 | |
505 | #, c-format | |
506 | msgid "CRITICAL - connecting failed: %s" | |
507 | msgstr "КРИТИЧНО - подключение не удалось: %s" | |
508 | ||
509 | #: main.c:715 | |
510 | #: main.c:714 | |
511 | #, c-format | |
512 | msgid "CRITICAL - average httping-time is %.1f\n" | |
513 | msgstr "КРИТИЧНО - среднее httping-время %.1f\n" | |
514 | ||
515 | #: main.c:720 | |
516 | #: main.c:719 | |
517 | #, c-format | |
518 | msgid "WARNING - average httping-time is %.1f\n" | |
519 | msgstr "ПРЕДУПРЕЖДЕНИЕ - среднее httping-время %.1f\n" | |
520 | ||
521 | #: main.c:724 | |
522 | #: main.c:723 | |
523 | #, c-format | |
524 | msgid "OK - average httping-time is %.1f (%s)|ping=%f\n" | |
525 | msgstr "OK - среднее httping-время %.1f (%s)|ping=%f\n" | |
526 | ||
527 | #: main.c:734 | |
528 | #: main.c:733 | |
529 | #, c-format | |
530 | msgid "OK - all fine, avg httping time is %.1f|ping=%f\n" | |
531 | msgstr "OK - все в порядке, сред httping время %.1f|ping=%f\n" | |
532 | ||
533 | #: main.c:738 | |
534 | #: main.c:737 | |
535 | #, c-format | |
536 | msgid "%s: - failed: %s" | |
537 | msgstr "%s: - не удалось: %s" | |
538 | ||
539 | #: main.c:1025 | |
540 | #: main.c:1020 | |
541 | #, c-format | |
542 | msgid "" | |
543 | "\n" | |
544 | " *** -A is no longer required ***\n" | |
545 | "\n" | |
546 | msgstr "" | |
547 | "\n" | |
548 | " *** -A больше не требуется ***\n" | |
549 | "\n" | |
550 | ||
551 | #: main.c:1170 | |
552 | #: main.c:1165 | |
553 | msgid "-i cannot have a value smaller than zero" | |
554 | msgstr "-i не может иметь значение меньше нуля" | |
555 | ||
556 | #: main.c:1224 | |
557 | #: main.c:1232 | |
558 | #: main.c:1219 | |
559 | #: main.c:1227 | |
560 | msgid "-n and -N are mutual exclusive\n" | |
561 | msgstr "-n и -N являются взаимоисключающими\n" | |
562 | ||
563 | #: main.c:1253 | |
564 | #: main.c:1248 | |
565 | #, c-format | |
566 | msgid "Warning: TCP TFO is not supported. Disabling.\n" | |
567 | msgstr "Предупреждение: TCP TFO не поддерживается. Отключаем.\n" | |
568 | ||
569 | #: main.c:1269 | |
570 | #: main.c:1264 | |
571 | #, c-format | |
572 | msgid "" | |
573 | "\n" | |
574 | "\n" | |
575 | "Please run:\n" | |
576 | "\t%s --help\n" | |
577 | "to see a list of options.\n" | |
578 | "\n" | |
579 | msgstr "" | |
580 | "\n" | |
581 | "\n" | |
582 | "Пожалуйста выполните:\n" | |
583 | "\t%s --help\n" | |
584 | "чтобы посмотреть список опций.\n" | |
585 | "\n" | |
586 | ||
587 | #: main.c:1281 | |
588 | #, c-format | |
589 | msgid "" | |
590 | "No URL/host to ping given\n" | |
591 | "\n" | |
592 | msgstr "" | |
593 | "Никакого URL/хоста для пинга не дано\n" | |
594 | "\n" | |
595 | ||
596 | #: main.c:1291 | |
597 | #: main.c:1286 | |
598 | msgid "Cannot combine -m, -M and -K" | |
599 | msgstr "Нельзя совместить -m, -M и -K" | |
600 | ||
601 | #: main.c:1294 | |
602 | #: main.c:1289 | |
603 | msgid "Aggregates can only be used in non-machine/json-output mode" | |
604 | msgstr "Вывод совокупностей может быть только использован в немашиночитаемом/json-вывод режиме" | |
605 | ||
606 | #: main.c:1299 | |
607 | #: main.c:1294 | |
608 | msgid "-b/-B can only be used when also using -G (GET instead of HEAD) or -l (use SSL)\n" | |
609 | msgstr "-b/-B может быть использован только при использовании -G (GET вместо HEAD) или -l (использовать SSL)\n" | |
610 | ||
611 | #: main.c:1302 | |
612 | #: main.c:1297 | |
613 | msgid "TCP Fast open and SSL not supported together\n" | |
614 | msgstr "TCP Fast open и SSL не поддерживаются вместе\n" | |
615 | ||
616 | #: main.c:1332 | |
617 | #: main.c:1327 | |
618 | msgid "" | |
619 | "\n" | |
620 | "Auto enabling SSL due to https-URL" | |
621 | msgstr "" | |
622 | "\n" | |
623 | "Автоматически включаем SSL ввиду https URL" | |
624 | ||
625 | #: main.c:1338 | |
626 | #: main.c:1333 | |
627 | #, c-format | |
628 | msgid "Auto enabling SSL due to https-URL" | |
629 | msgstr "Автоматически включаем SSL ввиду https-URL" | |
630 | ||
631 | #: main.c:1347 | |
632 | #: main.c:1342 | |
633 | #, c-format | |
634 | msgid "" | |
635 | "\n" | |
636 | "Connecting to host %s, port %d and requesting file %s" | |
637 | msgstr "" | |
638 | "\n" | |
639 | "Подключаемся к хосту %s, порт %d и запрашиваем файл %s" | |
640 | ||
641 | #: main.c:1350 | |
642 | #: main.c:1345 | |
643 | #, c-format | |
644 | msgid "" | |
645 | "\n" | |
646 | "Using proxyserver: %s:%d" | |
647 | msgstr "" | |
648 | "\n" | |
649 | "Используем прокси сервер: %s:%d" | |
650 | ||
651 | #: main.c:1355 | |
652 | #: main.c:1350 | |
653 | #, c-format | |
654 | msgid "" | |
655 | "Connecting to host %s, port %d and requesting file %s\n" | |
656 | "\n" | |
657 | msgstr "" | |
658 | "Подключаемся к хосту %s, порт %d и запрашиваем файл %s\n" | |
659 | "\n" | |
660 | ||
661 | #: main.c:1358 | |
662 | #: main.c:1353 | |
663 | #, c-format | |
664 | msgid "Using proxyserver: %s:%d\n" | |
665 | msgstr "Используем прокси сервер: %s:%d\n" | |
666 | ||
667 | #: main.c:1369 | |
668 | #: main.c:1364 | |
669 | msgid "problem creating SSL context" | |
670 | msgstr "Проблема при создании SSL контекста" | |
671 | ||
672 | #: main.c:1389 | |
673 | #: main.c:1384 | |
674 | msgid "Interval must be > 0 when using adaptive interval" | |
675 | msgstr "Интервал должен быть больше нуля при использовании адаптивного интервала" | |
676 | ||
677 | #: main.c:1417 | |
678 | #: main.c:1435 | |
679 | #: main.c:1519 | |
680 | #: main.c:1412 | |
681 | #: main.c:1430 | |
682 | #: main.c:1514 | |
683 | #, c-format | |
684 | msgid "" | |
685 | "\n" | |
686 | "Resolving hostname %s" | |
687 | msgstr "" | |
688 | "\n" | |
689 | "Резолвим имя хоста %s" | |
690 | ||
691 | #: main.c:1427 | |
692 | #: main.c:1452 | |
693 | #: main.c:1545 | |
694 | #: main.c:1422 | |
695 | #: main.c:1447 | |
696 | #: main.c:1540 | |
697 | #, c-format | |
698 | msgid "No valid IPv4 or IPv6 address found for %s" | |
699 | msgstr "Валидный IPv4 или IPv6 адрес не найден для %s" | |
700 | ||
701 | #: main.c:1579 | |
702 | #: main.c:1574 | |
703 | msgid "Will no longer inform about request headers too large." | |
704 | msgstr "Больше не сообщать о слишком больших заголовках запроса." | |
705 | ||
706 | #: main.c:1581 | |
707 | #: main.c:1576 | |
708 | #, c-format | |
709 | msgid "Request headers > 4KB! (%d bytes) This may give failures with some HTTP servers." | |
710 | msgstr "Заголовок запроса > 4КБ! (%d байт) Это может привести к ошибке на некоторых HTTP серверах." | |
711 | ||
712 | #: main.c:1685 | |
713 | #: main.c:1680 | |
714 | msgid "timeout connecting to host" | |
715 | msgstr "тайм-аут при подключении к хосту" | |
716 | ||
717 | #: main.c:1748 | |
718 | #: main.c:1743 | |
719 | msgid "error sending request to host" | |
720 | msgstr "ошибка при отправке запроса к хосту" | |
721 | ||
722 | #: main.c:1750 | |
723 | #: main.c:1800 | |
724 | #: main.c:1745 | |
725 | #: main.c:1795 | |
726 | msgid "timeout sending to host" | |
727 | msgstr "тайм-аут при отправке к хосту" | |
728 | ||
729 | #: main.c:1752 | |
730 | #: main.c:1747 | |
731 | msgid "retrieved invalid data from host" | |
732 | msgstr "получены неправильные данные от хоста" | |
733 | ||
734 | #: main.c:1756 | |
735 | #: main.c:1751 | |
736 | msgid "connection prematurely closed by peer" | |
737 | msgstr "подключение преждевременно закрыто пиром" | |
738 | ||
739 | #: main.c:1790 | |
740 | #: main.c:1785 | |
741 | msgid "" | |
742 | "\n" | |
743 | "No longer emitting message about \"still data in transit\"" | |
744 | msgstr "" | |
745 | "\n" | |
746 | "Больше не выводить сообщение о \"данных еще в пути\"" | |
747 | ||
748 | #: main.c:1792 | |
749 | #: main.c:1787 | |
750 | #, c-format | |
751 | msgid "" | |
752 | "\n" | |
753 | "HTTP server started sending data with %d bytes still in transit" | |
754 | msgstr "" | |
755 | "\n" | |
756 | "HTTP начал отправлять данные в то время как %d байт еще в пути" | |
757 | ||
758 | #: main.c:1813 | |
759 | #: main.c:1808 | |
760 | msgid "failed to obtain TOS info" | |
761 | msgstr "ошибка при получении TOS информации" | |
762 | ||
763 | #: main.c:1827 | |
764 | #: main.c:1822 | |
765 | msgid "" | |
766 | "\n" | |
767 | "No longer emitting message about \"more data than response headers\"" | |
768 | msgstr "" | |
769 | "\n" | |
770 | "Больше не выводить сообщение о \"больше данных сверх заголовков ответа\"" | |
771 | ||
772 | #: main.c:1829 | |
773 | #: main.c:1824 | |
774 | msgid "" | |
775 | "\n" | |
776 | "HTTP server sent more data than just the response headers" | |
777 | msgstr "" | |
778 | "\n" | |
779 | "HTTP сервер отправил больше данных сверх заголовков ответа" | |
780 | ||
781 | #: main.c:1878 | |
782 | #: main.c:1873 | |
783 | msgid "'Content-Length'-header missing!" | |
784 | msgstr "'Content-Length' заголовок отсутствует!" | |
785 | ||
786 | #: main.c:1910 | |
787 | #: main.c:1905 | |
788 | msgid "short read during receiving reply-headers from host" | |
789 | msgstr "короткое чтение во время получения заголовков ответа от хоста" | |
790 | ||
791 | #: main.c:1912 | |
792 | #: main.c:1907 | |
793 | msgid "timeout while receiving reply-headers from host" | |
794 | msgstr "тайм-аут при получении заголовков ответа от хоста" | |
795 | ||
796 | #: main.c:1945 | |
797 | #: main.c:1940 | |
798 | msgid "read of response body dataa failed" | |
799 | msgstr "неудача при чтении тела ответа" | |
800 | ||
801 | #: main.c:1980 | |
802 | #: main.c:1975 | |
803 | msgid "error shutting down ssl" | |
804 | msgstr "ошибка при завершении SSL" | |
805 | ||
806 | #: main.c:2026 | |
807 | #: main.c:2087 | |
808 | #: main.c:2021 | |
809 | #: main.c:2082 | |
810 | #, c-format | |
811 | msgid "getnameinfo() failed: %d (%s)" | |
812 | msgstr "getnameinfo() не удался: %d (%s)" | |
813 | ||
814 | #: main.c:2061 | |
815 | #: main.c:2056 | |
816 | msgid "connected to" | |
817 | msgstr "подключено к" | |
818 | ||
819 | #: main.c:2061 | |
820 | #: main.c:2056 | |
821 | msgid "pinged host" | |
822 | msgstr "пингуемый хост" | |
823 | ||
824 | #: main.c:2105 | |
825 | #: main.c:2100 | |
826 | #, c-format | |
827 | msgid "%s%s%s%s%s:%s%d%s (%d/%d bytes), seq=%s%d%s " | |
828 | msgstr "%s%s%s%s%s:%s%d%s (%d/%d байт), поряд.н.=%s%d%s " | |
829 | ||
830 | #: main.c:2107 | |
831 | #: main.c:2102 | |
832 | #, c-format | |
833 | msgid "%s%s%s%s%s:%s%d%s (%d bytes), seq=%s%d%s " | |
834 | msgstr "%s%s%s%s%s:%s%d%s (%d bytes), поряд.н.=%s%d%s " | |
835 | ||
836 | #: main.c:2113 | |
837 | #: main.c:2114 | |
838 | #: nc.c:721 | |
839 | #: main.c:2108 | |
840 | #: main.c:2109 | |
841 | msgid " n/a" | |
842 | msgstr " н/д" | |
843 | ||
844 | #: main.c:2119 | |
845 | #: main.c:2114 | |
846 | #, c-format | |
847 | msgid "time=%s+%s+%s+%s+%s%s=%s%s%s%s ms %s%s%s" | |
848 | msgstr "время=%s+%s+%s+%s+%s%s=%s%s%s%s мс %s%s%s" | |
849 | ||
850 | #: main.c:2129 | |
851 | #: main.c:2124 | |
852 | #, c-format | |
853 | msgid "time=%s%s%s ms %s%s%s" | |
854 | msgstr "время=%s%s%s мс %s%s%s" | |
855 | ||
856 | #: main.c:2149 | |
857 | #: main.c:2144 | |
858 | msgid "not " | |
859 | msgstr "не " | |
860 | ||
861 | #: main.c:2150 | |
862 | #: main.c:2145 | |
863 | msgid "compressed)" | |
864 | msgstr "сжатый)" | |
865 | ||
866 | #: main.c:2162 | |
867 | #: main.c:2157 | |
868 | #, c-format | |
869 | msgid " toff=%d" | |
870 | msgstr " t сдвиг=%d" | |
871 | ||
872 | #: main.c:2166 | |
873 | #: main.c:2161 | |
874 | #, c-format | |
875 | msgid " age=%d" | |
876 | msgstr " возраст=%d" | |
877 | ||
878 | #: main.c:2282 | |
879 | #: main.c:2277 | |
880 | #, c-format | |
881 | msgid "--- %s ping statistics ---\n" | |
882 | msgstr "--- %s статистика пинга ---\n" | |
883 | ||
884 | #: main.c:2285 | |
885 | #: main.c:2280 | |
886 | #, c-format | |
887 | msgid "internal error! (curncount)\n" | |
888 | msgstr "внутренняя ошибка! (curncount)\n" | |
889 | ||
890 | #: main.c:2290 | |
891 | #: main.c:2285 | |
892 | #, c-format | |
893 | msgid "%s%d%s connects, %s%d%s ok, %s%3.2f%%%s failed, time %s%s%.0fms%s\n" | |
894 | msgstr "%s%d%s подключений, %s%d%s ok, %s%3.2f%%%s неудавшихся, время %s%s%.0fмс%s\n" | |
895 | ||
896 | #: main.c:2294 | |
897 | #: main.c:2289 | |
898 | #, c-format | |
899 | msgid "round-trip min/avg/max%s = %s%.1f%s/%s%.1f%s/%s%.1f%s" | |
900 | msgstr "туда-сюда мин/сред/макс%s = %s%.1f%s/%s%.1f%s/%s%.1f%s" | |
901 | ||
902 | #: main.c:2305 | |
903 | #: main.c:2300 | |
904 | #, c-format | |
905 | msgid "Transfer speed: min/avg/max = %s%f%s/%s%f%s/%s%f%s KB\n" | |
906 | msgstr "Скорость передачи: мин/сред/макс = %s%f%s/%s%f%s/%s%f%s КБ\n" | |
907 | ||
908 | #: mssl.c:79 | |
909 | #, c-format | |
910 | msgid "READ_SSL: io-error: %s" | |
911 | msgstr "SSL чтение, I/O ошибка: %s" | |
912 | ||
913 | #: mssl.c:110 | |
914 | #, c-format | |
915 | msgid "WRITE_SSL: io-error: %s" | |
916 | msgstr "SSL запись, I/O ошибка: %s" | |
917 | ||
918 | #: mssl.c:141 | |
919 | #, c-format | |
920 | msgid "problem setting receive timeout (%s)" | |
921 | msgstr "проблема при установке тайм-аута приема (%s)" | |
922 | ||
923 | #: mssl.c:147 | |
924 | #, c-format | |
925 | msgid "problem setting transmit timeout (%s)" | |
926 | msgstr "проблема при установке тайм-аута передачи (%s)" | |
927 | ||
928 | #: mssl.c:159 | |
929 | #, c-format | |
930 | msgid "problem starting SSL connection: %d" | |
931 | msgstr "проблема при старте SSL соединения: %d" | |
932 | ||
933 | #: mssl.c:259 | |
934 | msgid "Problem sending request to proxy" | |
935 | msgstr "Проблема при отправке запроса к прокси" | |
936 | ||
937 | #: mssl.c:268 | |
938 | msgid "Problem retrieving proxy response" | |
939 | msgstr "Проблема при получении ответа от прокси" | |
940 | ||
941 | #: mssl.c:282 | |
942 | msgid "Invalid proxy response headers" | |
943 | msgstr "Неверные заголовки ответа от прокси" | |
944 | ||
945 | #: mssl.c:289 | |
946 | #, c-format | |
947 | msgid "Proxy indicated error: %s" | |
948 | msgstr "Proxy сообщила об ошибке: %s" | |
949 | ||
950 | #: nc.c:57 | |
951 | msgid "realloc issue" | |
952 | msgstr "realloc проблема" | |
953 | ||
954 | #: nc.c:542 | |
955 | #, c-format | |
956 | msgid "highest: %6.2fHz, avg: %6.2fHz" | |
957 | msgstr "наибольшее: %6.2fHz, сред: %6.2fHz" | |
958 | ||
959 | #: nc.c:668 | |
960 | #, c-format | |
961 | msgid "graph range: %7.2fms - %7.2fms " | |
962 | msgstr "диапазон графика: %7.2fмс - %7.2fмс " | |
963 | ||
964 | #: nc.c:732 | |
965 | #, c-format | |
966 | msgid "%s: n/a" | |
967 | msgstr "%s: н/д" | |
968 | ||
969 | #: nc.c:749 | |
970 | msgid "latest" | |
971 | msgstr "последний" | |
972 | ||
973 | #: nc.c:749 | |
974 | #: nc.c:769 | |
975 | msgid "min" | |
976 | msgstr "мин" | |
977 | ||
978 | #: nc.c:749 | |
979 | #: nc.c:769 | |
980 | msgid "avg" | |
981 | msgstr "сред" | |
982 | ||
983 | #: nc.c:749 | |
984 | #: nc.c:769 | |
985 | msgid "max" | |
986 | msgstr "макс" | |
987 | ||
988 | #: nc.c:749 | |
989 | #: nc.c:769 | |
990 | msgid "sd" | |
991 | msgstr "sd" | |
992 | ||
993 | #: nc.c:750 | |
994 | msgid "resolve" | |
995 | msgstr "резолвить" | |
996 | ||
997 | #: nc.c:751 | |
998 | msgid "connect" | |
999 | msgstr "подключаться" | |
1000 | ||
1001 | #: nc.c:752 | |
1002 | msgid "ssl " | |
1003 | msgstr "ssl " | |
1004 | ||
1005 | #: nc.c:753 | |
1006 | msgid "send " | |
1007 | msgstr "отправлять " | |
1008 | ||
1009 | #: nc.c:754 | |
1010 | msgid "request" | |
1011 | msgstr "запрос" | |
1012 | ||
1013 | #: nc.c:755 | |
1014 | msgid "close " | |
1015 | msgstr "закрыть" | |
1016 | ||
1017 | #: nc.c:756 | |
1018 | msgid "total " | |
1019 | msgstr "всего " | |
1020 | ||
1021 | #: nc.c:760 | |
1022 | #, c-format | |
1023 | msgid "ok: %3d, fail: %3d%s, scc: %s, kalman: %s" | |
1024 | msgstr "ОК: %2d, неудача: %2d%s, scc: %s, Kalman: %s" | |
1025 | ||
1026 | #: nc.c:760 | |
1027 | msgid ", with TFO" | |
1028 | msgstr ", с TFO" | |
1029 | ||
1030 | #: nc.c:769 | |
1031 | msgid "cur" | |
1032 | msgstr "тек." | |
1033 | ||
1034 | #: nc.c:770 | |
1035 | msgid "t offst" | |
1036 | msgstr "t сдвиг" | |
1037 | ||
1038 | #: nc.c:773 | |
1039 | msgid "tcp rtt" | |
1040 | msgstr "TCP RTT" | |
1041 | ||
1042 | #: nc.c:775 | |
1043 | msgid "headers" | |
1044 | msgstr "заголовки" | |
1045 | ||
1046 | #: nc.c:782 | |
1047 | #, c-format | |
1048 | msgid "# cookies: %d" | |
1049 | msgstr "# куки: %d" | |
1050 | ||
1051 | #: nc.c:784 | |
1052 | #, c-format | |
1053 | msgid "trend: %c%6.2f%%, re-tx: %2d, pmtu: %5d, TOS: %02x" | |
1054 | msgstr "тренд: %c%6.2f%%, re-tx: %2d, pmtu: %5d, TOS: %02x" | |
1055 | ||
1056 | #: nc.c:787 | |
1057 | #, c-format | |
1058 | msgid "HTTP rc: %s, SSL fp: %s" | |
1059 | msgstr "HTTP rc: %s, SSL fp: %s" | |
1060 | ||
1061 | #: nc.c:787 | |
1062 | msgid "n/a" | |
1063 | msgstr "Н/Д" | |
1064 | ||
1065 | #: nc.c:795 | |
1066 | #, c-format | |
1067 | msgid "http result code: %s" | |
1068 | msgstr "HTTP код ответа: %s" | |
1069 | ||
1070 | #: nc.c:799 | |
1071 | #, c-format | |
1072 | msgid "" | |
1073 | "\n" | |
1074 | "SSL fingerprint: %s" | |
1075 | msgstr "" | |
1076 | "\n" | |
1077 | "SSL фингерпринт: %s" | |
1078 | ||
1079 | #: res.c:36 | |
1080 | #, c-format | |
1081 | msgid "Resolving %s %sfailed: %s" | |
1082 | msgstr "Резолв %s %sне удался: %s" | |
1083 | ||
1084 | #: res.c:36 | |
1085 | msgid "(IPv6) " | |
1086 | msgstr "(IPv6) " | |
1087 | ||
1088 | #: res.c:71 | |
1089 | #, c-format | |
1090 | msgid "Problem resolving %s (IPv4): %s" | |
1091 | msgstr "Проблема при резолве %s (IPv4): %s" | |
1092 | ||
1093 | #: socks5.c:56 | |
1094 | #, c-format | |
1095 | msgid "socks5connect: reply with requested authentication method does not say version 5 (%02x)" | |
1096 | msgstr "socks5connect: ответ с запрошенным аутентификационным методом не выдает версию 5 (%02x)" | |
1097 | ||
1098 | #: socks5.c:70 | |
1099 | #, c-format | |
1100 | msgid "socks5connect: socks5 refuses our authentication methods: %02x" | |
1101 | msgstr "socks5connect: socks5 отказывается от наших аутентификационных методов: %02x" | |
1102 | ||
1103 | #: socks5.c:81 | |
1104 | msgid "socks5connect: socks5 server requests username/password authentication" | |
1105 | msgstr "socks5connect: socks5 сервер запрашивает аутентификацию основанную на имени пользователя/пароле" | |
1106 | ||
1107 | #: socks5.c:90 | |
1108 | msgid "socks5connect: failed transmitting username/password to socks5 server" | |
1109 | msgstr "socks5connect: не удалось передать имя пользователя/пароль socks5 серверу" | |
1110 | ||
1111 | #: socks5.c:96 | |
1112 | msgid "socks5connect: failed receiving authentication reply" | |
1113 | msgstr "socks5connect: не удалось получить ответ аутентификации" | |
1114 | ||
1115 | #: socks5.c:102 | |
1116 | msgid "socks5connect: password authentication failed" | |
1117 | msgstr "socks5connect: аутентификация по паролю не удалась" | |
1118 | ||
1119 | #: socks5.c:116 | |
1120 | #, c-format | |
1121 | msgid "Cannot resolve %s" | |
1122 | msgstr "Не получается резолв %s" | |
1123 | ||
1124 | #: socks5.c:133 | |
1125 | msgid "socks5connect: failed to transmit associate request" | |
1126 | msgstr "socks5connect: не удалось передать associate запрос" | |
1127 | ||
1128 | #: socks5.c:139 | |
1129 | msgid "socks5connect: command reply receive failure" | |
1130 | msgstr "socks5connect: ошибка при получение command ответа" | |
1131 | ||
1132 | #: socks5.c:146 | |
1133 | #, c-format | |
1134 | msgid "socks5connect: bind request replies with version other than 0x05 (%02x)" | |
1135 | msgstr "socks5connect: bind запрос отвечает с версией отличной от 0x05 (%02x)" | |
1136 | ||
1137 | #: socks5.c:152 | |
1138 | #, c-format | |
1139 | msgid "socks5connect: failed to connect (%02x)" | |
1140 | msgstr "socks5connect: не удалось подключиться (%02x)" | |
1141 | ||
1142 | #: socks5.c:158 | |
1143 | #, c-format | |
1144 | msgid "socks5connect: only accepting bind-replies with IPv4 address (%02x)" | |
1145 | msgstr "socks5connect: только принимаем bind ответы с IPv4 адресом (%02x)" | |
1146 | ||
1147 | #: tcp.c:31 | |
1148 | #: tcp.c:42 | |
1149 | #, c-format | |
1150 | msgid "could not set TCP_NODELAY on socket (%s)" | |
1151 | msgstr "не удалось установить TCP_NODELAY на сокет (%s)" | |
1152 | ||
1153 | #: tcp.c:57 | |
1154 | #, c-format | |
1155 | msgid "problem creating socket (%s)" | |
1156 | msgstr "проблема при создании сокета (%s)" | |
1157 | ||
1158 | #: tcp.c:69 | |
1159 | #, c-format | |
1160 | msgid "error setting sockopt to interface (%s)" | |
1161 | msgstr "проблема при установке sockopt на интерфейс (%s)" | |
1162 | ||
1163 | #: tcp.c:75 | |
1164 | #, c-format | |
1165 | msgid "error binding to interface (%s)" | |
1166 | msgstr "проблема при биндинге к интерфейсу (%s)" | |
1167 | ||
1168 | #: tcp.c:84 | |
1169 | #, c-format | |
1170 | msgid "error setting MTU size (%s)" | |
1171 | msgstr "ошибка при установке размера MTU (%s)" | |
1172 | ||
1173 | #: tcp.c:101 | |
1174 | #, c-format | |
1175 | msgid "error setting transmit buffer size (%s)" | |
1176 | msgstr "ошибка при установке размера буфера передачи (%s)" | |
1177 | ||
1178 | #: tcp.c:110 | |
1179 | #, c-format | |
1180 | msgid "error setting receive buffer size (%s)" | |
1181 | msgstr "ошибка при установке размера буфера приема (%s)" | |
1182 | ||
1183 | #: tcp.c:119 | |
1184 | #, c-format | |
1185 | msgid "error setting priority (%s)" | |
1186 | msgstr "ошибка при установке приоритета (%s)" | |
1187 | ||
1188 | #: tcp.c:128 | |
1189 | msgid "failed to set TOS info" | |
1190 | msgstr "не удалось установить TOS информацию" | |
1191 | ||
1192 | #: tcp.c:165 | |
1193 | #, c-format | |
1194 | msgid "TCP TFO Not Supported. Please check if \"/proc/sys/net/ipv4/tcp_fastopen\" is 1. Disabling TFO for now.\n" | |
1195 | msgstr "TCP TFO не поддерживается. Пожалуйста проверьте равняется ли \"/proc/sys/net/ipv4/tcp_fastopen\" единице. Пока что, отключаем TFO. \n" | |
1196 | ||
1197 | #: tcp.c:195 | |
1198 | #, c-format | |
1199 | msgid "problem connecting to host: %s" | |
1200 | msgstr "проблема при подключении к хосту: %s" | |
1201 | ||
1202 | #: tcp.c:208 | |
1203 | msgid "connect time out" | |
1204 | msgstr "тайм-аут при подключении" | |
1205 | ||
1206 | #: tcp.c:216 | |
1207 | #, c-format | |
1208 | msgid "select() failed: %s" | |
1209 | msgstr "select() не удался: %s" | |
1210 | ||
1211 | #: tcp.c:228 | |
1212 | #, c-format | |
1213 | msgid "getsockopt failed (%s)" | |
1214 | msgstr "getsockopt не удался (%s)" | |
1215 | ||
1216 | #: tcp.c:240 | |
1217 | #, c-format | |
1218 | msgid "could not connect (%s)" | |
1219 | msgstr "не смог подключиться (%s)" | |
1220 | ||
1221 | #: utils.c:25 | |
1222 | msgid "gettimeofday failed" | |
1223 | msgstr "gettimeofday не удался" | |
1224 | ||
1225 | #~ #: main.c:1276 main.c:1271 | |
1226 | ||
1227 | #~ msgid "Cannot combine maximum MTU size setting with proxy connections or SSL" | |
1228 | #~ msgstr "Нельзя совмещать настройку максимального размера MTU с прокси соединениями или SSL" |
0 | /* $Revision$ */ | |
1 | 0 | #include <libintl.h> |
2 | 1 | #include <unistd.h> |
3 | 2 | #include <stdio.h> |
23 | 22 | unsigned char io_buffer[256] = { 0 }; |
24 | 23 | int io_len = 0, rc = -1; |
25 | 24 | |
26 | if ((rc = connect_to(fd, ai, timeout, NULL, NULL, 0, NULL)) < 0) | |
25 | if ((rc = connect_to(fd, ai, timeout, NULL, NULL, 0, NULL)) == -1) | |
27 | 26 | return rc; |
28 | 27 | |
29 | 28 | /* inform socks server about the auth. methods we support */ |
0 | /* $Revision$ */ | |
1 | 0 | int socks5connect(int fd, struct addrinfo *ai, double timeout, const char *socks5_username, const char *socks5_password, const char *host, int port, char abort_on_resolve_failure); |
0 | /* Released under GPLv2 with exception for the OpenSSL library. See license.txt */ | |
1 | /* $Revision$ */ | |
0 | /* Released under AGPL v3 with exception for the OpenSSL library. See license.txt */ | |
2 | 1 | |
3 | 2 | #include <sys/types.h> |
4 | 3 | #include <sys/time.h> |
36 | 35 | { |
37 | 36 | int flag = 1; |
38 | 37 | |
39 | if (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (char *)&flag, sizeof(int)) < 0) | |
38 | if (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (char *)&flag, sizeof(int)) == -1) | |
40 | 39 | { |
41 | 40 | set_error(gettext("could not set TCP_NODELAY on socket (%s)"), strerror(errno)); |
42 | 41 | return -1; |
0 | /* Released under GPLv2 with exception for the OpenSSL library. See license.txt */ | |
1 | /* $Revision$ */ | |
0 | /* Released under AGPL v3 with exception for the OpenSSL library. See license.txt */ | |
2 | 1 | |
3 | 2 | int create_socket(struct sockaddr *bind_to, struct addrinfo *ai, int recv_buffer_size, int tx_buffer_size, int max_mtu, char use_no_delay, int priority, int tos); |
4 | 3 | int connect_to(int fd, struct addrinfo *ai, double timeout, char *tfo, char *msg, int msg_len, char *msg_accepted); |
0 | /* $Revision$ */ | |
1 | 0 | #include <stdio.h> |
1 | #include <string.h> | |
2 | #include <errno.h> | |
3 | #include <stdlib.h> | |
4 | ||
2 | 5 | #include <sys/types.h> |
3 | 6 | #include <sys/socket.h> |
7 | #include <netinet/in.h> | |
8 | #include <netinet/tcp.h> | |
4 | 9 | |
5 | int main(int argc, char *argv[]) | |
6 | { | |
7 | int qlen = 5; | |
10 | int main(void) { | |
11 | int sfd = 0; | |
12 | int qlen = 5; | |
8 | 13 | |
9 | setsockopt(sfd, SOL_TCP, TCP_FASTOPEN, &qlen, sizeof(qlen)); | |
14 | if ((sfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) { | |
15 | fprintf(stderr, "socket(): %s\n", strerror(errno)); | |
16 | exit(EXIT_FAILURE); | |
17 | } | |
10 | 18 | |
11 | return 0; | |
19 | #ifdef TCP_FASTOPEN | |
20 | if (setsockopt(sfd, SOL_TCP, TCP_FASTOPEN, &qlen, sizeof(qlen)) == -1) { | |
21 | fprintf(stderr, "setsockopt(): %s\n", strerror(errno)); | |
22 | exit(EXIT_FAILURE); | |
23 | } | |
24 | #else | |
25 | fprintf(stderr, "TCP_FASTOPEN: undefined\n"); | |
26 | return EXIT_FAILURE; | |
27 | #endif | |
28 | return EXIT_SUCCESS; | |
12 | 29 | } |
0 | /* Released under GPLv2 with exception for the OpenSSL library. See license.txt */ | |
1 | /* $Revision$ */ | |
0 | /* Released under AGPL v3 with exception for the OpenSSL library. See license.txt */ | |
2 | 1 | |
3 | 2 | #include <stdio.h> |
4 | 3 | #include <openssl/bio.h> |
0 | /* Released under GPLv2 with exception for the OpenSSL library. See license.txt */ | |
1 | /* $Revision$ */ | |
0 | /* Released under AGPL v3 with exception for the OpenSSL library. See license.txt */ | |
2 | 1 | |
3 | 2 | #define _GNU_SOURCE |
4 | 3 | #include <errno.h> |