|
ibec_http
|
|||
---|---|---|---|
#18+
Добрый день. Нигде не могу найти, как правильно устанавливать http-заголовки, при вызове функции ibec_http_Post(), например? Функции типа ibec_http_SetHeader() или чего-то похожего не нашел, пробовал разные вариации установки заголовков в ibec_http_OpenSession(), но не снискал счастья. Нашел на форуме один пример по передаче xml методом ibec_http_Post(), но там заголовки не устанавливаются при вызове. Помогите, будьте так добры, кто пользовался этими замечательными функциями, как правильно построить запрос с нужными http-заголовками? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 11:42 |
|
ibec_http
|
|||
---|---|---|---|
#18+
Что за заголовки? Поясни на простом примере. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2019, 12:03 |
|
ibec_http
|
|||
---|---|---|---|
#18+
Добрый день. Шаблон POST-запроса для передачи JSON на регистратор выбытия системы маркировки лекарственный препаратов. POST /v1/requests HTTP/1.1 Authorization: Basic {Base64Str} Content-Type: application/json; charset=UTF-8 Accept: application/json Content-Length: BodyLen {JSON Body} То бишь мне надо HTTP-серверу рассказать в хидере, чего именно я ему буду передавать, ну и авторизоваться тоже надо. Вот эти самые хидеры как ставить? P.S. Например если я через WinHTTPRequest делаю запрос на HTTP-сервер. Я значала делаю Open() затем setRequestHeader() <- тут как раз прописываю заголовок затем Send(POSTBody) <- отправка запроса ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 09:03 |
|
ibec_http
|
|||
---|---|---|---|
#18+
OrsoF1 То бишь мне надо HTTP-серверу рассказать в хидере, чего именно я ему буду передавать, ну и авторизоваться тоже надо. Вот эти самые хидеры как ставить? Часть автоматом генерируется. User/Pass для Authorization берется из URL. Content-Length тоже автоматом выставляется по размеру данных в ibec_http_post. В общем, как я понял, нужна возможность задать произвольный заголовок перед POST. В принципе, это не сложно, вроде бы. Завтра попробую. ЗЫ. Я правильно понимаю, что в работу идет последний заголовок с одним и тем же именем? Т.е., если в заголовках прописано Content-Length: 123 Content-Length: 321 то сервер будет смотреть на последний?? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 18:17 |
|
ibec_http
|
|||
---|---|---|---|
#18+
Доброе утро. IBExpert ...В общем, как я понял, нужна возможность задать произвольный заголовок перед POST... Ну не только перед POST, перед GET тоже. IBExpert ...то сервер будет смотреть на последний? Заголовки с одинаковыми названиями параметров, но разными значениями могут объединяться в один, но только если значение есть список, разделенный запятыми. Во всех остальных случаях значения более дальних заголовков перекрывают предыдущие. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 05:22 |
|
ibec_http
|
|||
---|---|---|---|
#18+
Можешь попробовать в свежей версии ibec_http_SetHeader. После ее вызова в заголовках будет только то, что ты в нее передал. А перед POST/GET там еще автогенерация заголовков есть, она вставит свое ПЕРЕД твоими. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 10:36 |
|
ibec_http
|
|||
---|---|---|---|
#18+
IBExpert Можешь попробовать в свежей версии ibec_http_SetHeader. После ее вызова в заголовках будет только то, что ты в нее передал. А перед POST/GET там еще автогенерация заголовков есть, она вставит свое ПЕРЕД твоими. Чутка бы подробностей по использованию, как правильно то передавать туда параметры и значения? Вызывать функцию последовательно, или всё в одной строке? Я попробовал так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Мне возвращается 500 от сервера, т.е. он не может переварить данный запрос. Ровно такой же в точности запрос через WinHTTPRequest возвращает мне корректный JSON с описанием препарата. Что делаю не так? P.S. К сожалению токен, указанный в авторизации моего запроса, живет только 30 минут ибо таковы настройки http-сервера ИС МДЛП, он на данный момент действующий, но... P.P.S Кстати, а что происходит при вызове ibec_http_OpenSession()? Чудится мне (глядя на пример с проверкой последней версии IBExpert через ibec_http_xxx), там сразу же идет GET к серверу? Или я ошибаюсь? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 11:48 |
|
ibec_http
|
|||
---|---|---|---|
#18+
OrsoF1 Чутка бы подробностей по использованию, как правильно то передавать туда параметры и значения? Вызывать функцию последовательно, или всё в одной строке? Я попробовал так: Все в одной строке, правильно сформатированное. Т.е., после каждого заголовка должен быть перевод строки или что там должно быть. А как ты пробовал, так в заголовках останется только то, что в последнем вызове было. Думал, это очевидно, ведь ibec_http_GetHeader возвращает тебе заголовки именно одной строкой. Вот так же их и нужно скармливать ibec_http_SetHeader. OrsoF1 P.P.S Кстати, а что происходит при вызове ibec_http_OpenSession()? Чудится мне (глядя на пример с проверкой последней версии IBExpert через ibec_http_xxx), там сразу же идет GET к серверу? Или я ошибаюсь? Ничего там еще не происходит, кроме разбора переданных опций. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 12:13 |
|
ibec_http
|
|||
---|---|---|---|
#18+
OrsoF1, ну ты на стороне сервера заголовки логируй. Увидишь что не так ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 12:15 |
|
ibec_http
|
|||
---|---|---|---|
#18+
Симонов Денис OrsoF1, ну ты на стороне сервера заголовки логируй. Увидишь что не так Ну на серверах ИС МДЛП федерального проекта маркировки лекарственных препаратов, мне хрен кто даст чего логировать )) Потестирую завтра на своем web-сервере, отпишусь, что будет получаться... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 13:06 |
|
ibec_http
|
|||
---|---|---|---|
#18+
OrsoF1, ах эти... маркировшики сочувствую. Тоже боремся ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 13:22 |
|
ibec_http
|
|||
---|---|---|---|
#18+
Ну и? Результаты-то какие?? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:06 |
|
ibec_http
|
|||
---|---|---|---|
#18+
Добрый день. Добрался наконец до протестировать на своем web-сервере, есть у меня небольшой сервис с моим api для обмена данными с мед. организациями, так вот передаю на него xml-пакет авторизации вот так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
На сервере ловлю заголовки, и смотрю ответ сервера: *********************************************************** REQUEST_URI:/testapi/v1/test_auth CONTENT_TYPE:Application/octet-stream, text/xml CONTENT_LENGTH:394 REQUEST_METHOD:POST API_METHOD:test_auth Auth OK *********************************************************** Что вижу, запрос отработал, аутентификация прошла и сервер вернул на клиента токен в ответном xml, тут всё ок. По заголовкам: при попытке самостоятельно установить content-length на сервер прилетает конструкция вида: content-length: 394, 394 и т.к. данный параметр не может иметь ряд значений, сервер ругается. Т.е. видимо, при вызове ibec_http_Post(), устанавливаются автоматические заголовки, при этом не проверяется, можно ли для данного заголовка передавать ряд значений через запятую, или нет. Далее, как видно в content-type к тому заголовку, что я передаю явно 'text/xml', добавился так же 'Application/octet-stream'. В принципе это не критично, если сервер, который будет обрабатывать заголовки, не делает строгих проверок на конкретно заданный content-type. Например мой сервер как раз таки эту проверку делал и не пропускал запрос, пока я не переделал проверку на вхождение нужного мне типа контента в заголовок content-type, а не на полное соответствие заголовка нужному типу. Насколько я понимаю ряд заголовков устанавливается автоматически при вызове ibec_http_Post(). Например, тот же content-length явно раньше установить негде ибо тело запроса только тут появляется. Предложение: если какой-либо заголовок был установлен функцией ibec_http_SetHeader(), то нигде дальше данный заголовок не нужно дополнять/изменять/удалять, корректность данного заголовка должна оставаться на совести кодера, который его поставил. Таким образом избегаем неоднозначности при прописывании заголовков, кодер будет уверен, что в заголовке именно то, что он прописал, и это не изменится, а если какой-то необходимый заголовок вручную установлен не был, опять же content-length, то прописывать его автоматически как сейчас и происходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 05:01 |
|
ibec_http
|
|||
---|---|---|---|
#18+
В дополнение к предыдущему сообщению: запрос на сервер ИС МДЛП отправить так и не удалось. При установке всех заголовков ровно так же, как делаю при обращении через WinHTTPRequest, сервер возвращает 500, видимо какой-то заголовок таки он не может правильно переварить, но где и почему точно сказать не могу т.к., понятно, что на их серверах заголовки не залогировать. В связи с этим, думаю, что предложенное в предыдущем сообщении поведение при работе с заголовками, будет верным. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 05:48 |
|
ibec_http
|
|||
---|---|---|---|
#18+
OrsoF1 По заголовкам: при попытке самостоятельно установить content-length на сервер прилетает конструкция вида: content-length: 394, 394 А зачем ты его самостоятельно устанавливаешь? OrsoF1 Предложение: если какой-либо заголовок был установлен функцией ibec_http_SetHeader(), то нигде дальше данный заголовок не нужно дополнять/изменять/удалять Это уже совсем не на пять минут работа, нужно лезть в потроха компонентов и ковырять их. Но для начала хотелось бы понять, зачем тот же content-length нужно извне задавать. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 06:31 |
|
ibec_http
|
|||
---|---|---|---|
#18+
В свежей версии после post вызови ibec_http_GetProperty: sHdr = ibec_http_GetProperty(sess, 'LastSentHeaders'); Она вернет тебе текст заголовков, отправленных на сервер. У себя я, кстати, не вижу никаких "content-length: 394, 394". Если я устанавливаю свой content-length, то он идет в списке заголовков отдельной строкой и после такого же автозаголовка. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 07:06 |
|
ibec_http
|
|||
---|---|---|---|
#18+
Выполняю такой скрипт Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
в ibec_ShowMessage(:lHeaders); получаю пустое сообщение. IBExpert В свежей версии после post вызови ibec_http_GetProperty: sHdr = ibec_http_GetProperty(sess, 'LastSentHeaders'); Она вернет тебе текст заголовков, отправленных на сервер. У себя я, кстати, не вижу никаких "content-length: 394, 394". Если я устанавливаю свой content-length, то он идет в списке заголовков отдельной строкой и после такого же автозаголовка. А как сервер будет интерпретировать два одинаковых заголовка с разными значениями? Вот и я думаю, что он преобразует это в один заголовок со списком значений через запятую... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 07:51 |
|
ibec_http
|
|||
---|---|---|---|
#18+
OrsoF1 в ibec_ShowMessage(:lHeaders); получаю пустое сообщение. Ты точно обновил свой эксперт? У меня все работает, я проверял. OrsoF1 А как сервер будет интерпретировать два одинаковых заголовка с разными значениями? Я не знаю, поэтому и спрашивал тебя об этом в начале темы. Сейчас надо понять, в чем именно проблема, а потом уже думать, как ее решать. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 08:19 |
|
ibec_http
|
|||
---|---|---|---|
#18+
Обновил. Сейчас версия 2019.12.10.1, я так понимаю это сегодняшняя? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 08:23 |
|
ibec_http
|
|||
---|---|---|---|
#18+
OrsoF1 Обновил. Сейчас версия 2019.12.10.1, я так понимаю это сегодняшняя? Ну да, все верно. Тогда странно... A, вот на твоем примере у меня тоже пусто выдает. Сейчас посмотрю, в чем там дело. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 08:27 |
|
ibec_http
|
|||
---|---|---|---|
#18+
В общем, там до post дело и не доходит, на коннекте к серверу все заканчивается. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 08:29 |
|
ibec_http
|
|||
---|---|---|---|
#18+
Короче, я не знаю, почему он обламывается на коннекте, и сервер выдает 500. Думал, может поддержка HTTPS отвалилась, так нет, на другом скрипте все работает. Да и на твоем веб-сервере вроде ОК все? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 09:04 |
|
ibec_http
|
|||
---|---|---|---|
#18+
IBExpert, да, на моем всё хорошо через https. А у тебя ibec_http_xxx() функции это обертка для чего-то виндозного, или ты там полностью сам протокол реализуешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 09:27 |
|
ibec_http
|
|||
---|---|---|---|
#18+
OrsoF1 А у тебя ibec_http_xxx() функции это обертка для чего-то виндозного, или ты там полностью сам протокол реализуешь? Это обертка над Synapse http://www.ararat.cz/synapse/ Обламывается оно с установкой ssl-соединения с сервером, возвращает ошибку 10091. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 09:41 |
|
ibec_http
|
|||
---|---|---|---|
#18+
IBExpert, ну тут, вполне вероятно, особенности работы сервера ИС МДЛП. Дело в том, что для доступа к нему должен использоваться TLS1.2 если для Synapse не включена поддержка, то будет ошибка. Тут наткнулся на форум, может поможет? http://www.cyberforum.ru/delphi-networks/thread2114727.html ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 10:02 |
|
ibec_http
|
|||
---|---|---|---|
#18+
Судя по всему, у меня устаревшая версия. Поддержки TLS1.2 в ней нет. Сейчас попробую актуальную версию прикрутить. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 12:03 |
|
ibec_http
|
|||
---|---|---|---|
#18+
Собрал на актуальных исходниках - все то же самое. Стал рыть глубже... С принудительным заданием LT_TLSv1_2/LT_TLSv1_1 получаем отлуп: 'error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number' С принудительным заданием LT_SSLv3 получаем отлуп: 'error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure' Куда еще рыть - я не знаю. Дело в том, что для доступа к нему должен использоваться TLS1.2 Это точно? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 13:23 |
|
ibec_http
|
|||
---|---|---|---|
#18+
IBExpert, ну судя по их документации по их API ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 17:27 |
|
ibec_http
|
|||
---|---|---|---|
#18+
Хм, сейчас поднял документацию, есть публичное ТЗ на разработку регистраторов выбытия с описанием их API, у меня по началу были проблемы с интеграцией моего ПО с этими железяками на осях до Windows 8. Вендоры (их по сути два - Атол и Штрих-М) однозначно ответили, что подключение к их железу по https возможно только с использванием TLS1.2 и после настроек в реестре Win7 на использование по-умолчанию протокола TLS1.2, проблема решилась. Так вот http-сервера на этих устройствах, по требованию ТЗ, должны быть разработаны максимально близко к http-серверу ИС МДЛП. Однако вот тут https://честныйзнак.рф/upload/iblock/57b/API.Protokol-obmena-interfeysnogo-urovnya.pdf на стр. 32 есть такой абзац: Используемые протоколы и шифры для соединения (ssl шифры были выбраны с учетом требований к информационной безопасности по предоставлению публичного API для доступа к государственной информационной системе): ssl_protocols: TLSv1 ssl_ciphers: GOST2012-GOST8912-GOST8912 Поэтому сейчас я ужо не уверен, что нужно юзать TLS1.2. Возможно стоит попробовать TLS1.0? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 17:41 |
|
ibec_http
|
|||
---|---|---|---|
#18+
Я пробовал и WinHttpRequest: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8.
и смотрел Wireshark'ом пакеты. Так вот оно тоже обламывается на handshake и возвращает alert handshake failure. Может, ему еще что-то надо? Сертификаты там какие? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 17:51 |
|
ibec_http
|
|||
---|---|---|---|
#18+
И еще вот отсюда https://indy.fulgan.com/SSL/openssl-1.0.2t-i386-win32.zip возьми свежие ssleay32.dll и libeay32.dll и положи их рядом с экзешниками эксперта. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 17:56 |
|
ibec_http
|
|||
---|---|---|---|
#18+
10.12.2019 17:56, IBExpert пишет: > возьми свежие ssleay32.dll и libeay32.dll и положи их рядом с экзешниками эксперта. ты собираешь Эксперта с распоследними Инди? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 18:04 |
|
ibec_http
|
|||
---|---|---|---|
#18+
Мимопроходящий 10.12.2019 17:56, IBExpert пишет: > возьми свежие ssleay32.dll и libeay32.dll и положи их рядом с экзешниками эксперта. ты собираешь Эксперта с распоследними Инди? Не, я только эти две либы оттуда беру. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 18:25 |
|
ibec_http
|
|||
---|---|---|---|
#18+
10.12.2019 18:25, IBExpert пишет: > > Не, я только эти две либы оттуда беру. напрасно. у этих "одарённых личностей" всё пришито белыми нитками. конкретная версия Инди совместима только со вполне конкретными версиями ssleay32.dll и libeay32.dll Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 18:28 |
|
ibec_http
|
|||
---|---|---|---|
#18+
Мимопроходящий напрасно. у этих "одарённых личностей" всё пришито белыми нитками. конкретная версия Инди совместима только со вполне конкретными версиями ssleay32.dll и libeay32.dll Мне Инди-то сама по себе не нужна. А где же еще брать эти либы? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 18:33 |
|
ibec_http
|
|||
---|---|---|---|
#18+
10.12.2019 18:33, IBExpert пишет: > Мне Инди-то сама по себе не нужна. а, ну тогда всё Ок. я думал ты Инди пользуешь. зы: учитывай, что в ssleay32.dll и libeay32.dll от версии к версии меняются декларации и параметры функций. оголтелый волюнтаризм... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 18:42 |
|
ibec_http
|
|||
---|---|---|---|
#18+
Взял, свежие либы libeay32.dll и ssleay32.dll по твоей ссылке, слил в папку рядом с IBExpert.exe, далее пробую авторизоваться на сервере маркировки: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
Отпечаток серта получаю, JSON формирую, заголовки ставлю, результат тот же - ошибка 500. Хрен знает, ровно с тем же JSON с этой же машины, с этой же ЭП из своей ТУС авторизуюсь нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2019, 12:44 |
|
ibec_http
|
|||
---|---|---|---|
#18+
OrsoF1, а ручками через curl пробовал? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2019, 16:01 |
|
ibec_http
|
|||
---|---|---|---|
#18+
Симонов Денис, Да, через Curl и WinHTTPRequest норм. В своей ТУС использую WinHTTPRequest через com. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 06:01 |
|
ibec_http
|
|||
---|---|---|---|
#18+
В сегодняшней версии после post вызови ibec_http_GetProperty: sErr = ibec_http_GetProperty(sess, 'SSLErrors'); Чего оно там кажет? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 09:21 |
|
ibec_http
|
|||
---|---|---|---|
#18+
Ctrl+C в окнах сообщений должно работать. Ну вот у меня такая же фигня. Что сие означает и как лечить - я не знаю. А поскольку у меня и сертификата нужного нет, то и тыкаться вслепую я до посинения могу. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 10:33 |
|
ibec_http
|
|||
---|---|---|---|
#18+
IBExpert, а какая-нибудь УКЭП есть? Можно попробовать дать временный доступ по твоему серту. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 10:36 |
|
ibec_http
|
|||
---|---|---|---|
#18+
Даже не знаю, что такое УКЭП. Темный я :) Еще осталось на свежих synapse попробовать, с ручным заданием версии TLS. Но это уже завтра, скорее всего. И вот это вот все, кстати говоря, происходит еще до отправки всяких хидеров, на установке соединения. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 10:42 |
|
ibec_http
|
|||
---|---|---|---|
#18+
IBExpert, усиленная квалифицированная электронная подпись ) Ладно, тогда ждем еще результата следующей пробы... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 10:44 |
|
ibec_http
|
|||
---|---|---|---|
#18+
Сделайте воспроизводимый УДАЧНЫЙ коннект с помощью утилиты openssl И команду успешную сюда покажите. Александру будет немного понятнее разобраться, с какими необходимыми параметрами вам удаётся соединиться с сервером. Отдайте ему в личку, в конце концов, сертификат и эту удачную команду. Думаю, неразглашение-то Александр гарантирует. Всё ж общее дело делается. На благо. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 11:26 |
|
ibec_http
|
|||
---|---|---|---|
#18+
Сборка на свежих synapse и с новыми ftp-функциями: www.ibexpert.com/rus/ibe_sfx_ssl.exe Указываешь тип SSL: dvURL = 'URL=https://api.mdlp.crpt.ru/api/v1/auth; SSLType=AUTO '; Возможные значения: AUTO | SSL2 | SSL3 | TLS1 | TLS1.1 | TLS 1.2 Смотришь результат: sErr = ibec_http_GetProperty(sess, 'SSLErrors'); Если не заведется, то есть еще последний китайский вариант: самому взять synapse и попробовать их завести. Там вроде ничего сложного нет. Ну это если на паскале (дельфи/лазарус) пишешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 06:52 |
|
|
start [/forum/topic.php?all=1&fid=42&tid=1598691]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
152ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
75ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 284ms |
0 / 0 |