nixys / nxs-chat-srv

Nixys chat bot that integrates Telegram and Redmine
GNU General Public License v3.0
35 stars 10 forks source link

внезапно перестал работать #10

Closed denchru closed 3 years ago

denchru commented 6 years ago

запросы через API работают, сообщения приходят через бот

https://api.telegram.org/botXXX:XXX/sendMessage?chat_id=455384214^XXX

запрос curl -k -H "X-Redmine-API-Key: YOUR_REDMINE_API_KEY" "https://YOUR_REDMINE_HOST/projects.json?limit=100&offset=0"

тоже отрабатывает.

Однако если обращаться к боту , то ответа нет, в логах запросы какие либо отсутствуют

borisershov commented 6 years ago

Здравствуйте!

А если в Redmine ответить в задачу, то приходят ли сообщения в Telegram и есть ли при этом вообще какие-либо записи в логах бота?

borisershov commented 6 years ago

И ещё покажите, пожалуйста, вывод команды:

openssl s_client -connect YOUR_BOT_IP:YOUR_BOT_PORT -tlsextdebug 2>/dev/null | openssl x509 -noout -dates 2>/dev/null

Есть подозрение, что у Вас истёк SSL-сертификат.

denchru commented 6 years ago

действительно так и было, истек сертификат, сгенерировал новый:

[15.04.2018 14:47:05.999944] (2521) INFO: [nxs-chat-srv]: set webhook to tlgrm: success (result: true, error code: 200, description: "Webhook was set", using silf-signed certificate: true)

в логах ошибок нет.

А если в Redmine ответить в задачу, то приходят ли сообщения в Telegram Да, приходят,

Единственные странные записи в логах

[15.04.2018 15:08:20.082648] (26925) DEBUG: [queue-worker]: db last issues put: success (tlgrm userid: 455384214, rdmn last issue id: 99) [15.04.2018 15:08:20.082973] (26925) DEBUG: [queue-worker]: labels warn: can't find label text for specified key (label key: Нормальный, specified lang: ru, default lang: ru) [15.04.2018 15:08:20.082989] (26925) DEBUG: [queue-worker]: labels warn: can't find label text for specified key (label key: Новая, specified lang: ru, default lang: ru)

borisershov commented 6 years ago

Добрый день!

в логах ошибок нет.

Это корректное поведение, ошибок и не будет. Поскольку сертификат не валидный - клиент (в данном случае Телеграм), не устанавливает соединение с ботом (сервром). Т.е. бот просто не может зафиксировать такие подключения.

А если в Redmine ответить в задачу, то приходят ли сообщения в Telegram Да, приходят,

Это, видимо, по тому, что у Вас в настройках плагина Redmine стоит галочка Отключить верификацию SSL. По этому Redmine будет работать с ботом даже если у того не валидные сертрификаты. Но это не очень безопасно, по этому использовать эту опцию не рекомендуется.

Единственные странные записи в логах

[15.04.2018 15:08:20.082648] (26925) DEBUG: [queue-worker]: db last issues put: success (tlgrm userid: 455384214, rdmn last issue id: 99) [15.04.2018 15:08:20.082973] (26925) DEBUG: [queue-worker]: labels warn: can't find label text for specified key (label key: Нормальный, specified lang: ru, default lang: ru) [15.04.2018 15:08:20.082989] (26925) DEBUG: [queue-worker]: labels warn: can't find label text for specified key (label key: Новая, specified lang: ru, default lang: ru)

Это нормальная запись. Для поддержки ботом мультиязычности - он для всех служебных слов из Redmine (я говорю про такие, как названия трекеров, статусов и прочее) пытается найти соответствие (перевод) в соответствующем языковом файле в директории, указанной в опции labels.labels_path. Т.е. так он может переводить сообщения, отправляемые в Telegram на английский язык, имея русский интерфейс Redmine. А т.к. не все служебные слова Redmine указаны в этих файлах - выдются подобные сообщения и чтобы не отвлекать внимание - они идут с уровнем debug.

Скажите, пожалуйста, по данной задаче у Вас ещё остались какие-либо вопросы?

denchru commented 6 years ago

хм, сертификат уже новый, но все по прежнему. Попробую проверить все ли корректно.

borisershov commented 6 years ago

А Вы используете доверенный SSL-сертификат или самоподписанный?

Если самоподписанный, то после создания нового сертификата необходимо запустить бота в режиме инициализации с указанной опцией set_webhook_self_signed_certificate. Т.е.: nxs-chat-srv -i set_webhook_self_signed_certificate. Это позволит отправить в Telegram новый сертификат (требуется, в случае использования самоподписанных SSL).

Если доверенный, то попробуйте проверить валидность сертификата, обратившись к боту из браузера. Т.е. по тому значению, что указано в опции telegram.webhook_host (только проследите, чтобы обращение произошло к тому же узлу, к которому обращается Telegram). Будет ли ругаться браузер на сертификат?

denchru commented 6 years ago

Да, самоподписный. И проблема была в том, что я криво его сгенерировал. Но в тоже время ПО не ругалось на него.

Тикет можно закрывать.