powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / telegram webhook
12 сообщений из 112, страница 5 из 5
telegram webhook
    #40024934
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дальше проверяю getWebhookInfo

получаю
Код: plaintext
{"ok":true,"result":{"url":" https://xx.xx:8443/test/pagebot","has_custom_certificate":false,"pending_update_count":0,"last_error_date":1607191491,"last_error_message":"SSL  error {error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed}","max_connections":40,"ip_address":"........."}}

он пытается получить сертификат?
...
Рейтинг: 0 / 0
telegram webhook
    #40024943
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда сертификат создавал, какой-то домен же указывал? Вот этот домен при регистрации и указывать.
Я бы сделал сертификат на IP-адрес, и при регистрации хука указывал бы URL в виде IP-адреса.

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

Ну и наверное HTTPS на твоей стороне должен быть с этим сертификатом. Иначе становится не понятно зачем вся эта байда.
...
Рейтинг: 0 / 0
telegram webhook
    #40024960
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak
Ты уже должен был отдать сертификат при регистрации вебхука. Никакого сертификата отдельно запрашивать не должно. Это я так пытаюсь логически рассуждать.
Сертификат как отдаешь? Там какие-то замечания насчет того, как его отдавать.

Ну и наверное HTTPS на твоей стороне должен быть с этим сертификатом. Иначе становится не понятно зачем вся эта байда.
всё так , вот только не могу понять, что не так....
вот нашёл
Код: plaintext
если генерировать сертификат openssl'ем, то при указании названия организации указываем IP адрес и тогда все ок

но только
Код: plaintext
routines:SSL_CTX_check_private_key:no certificate assigned
openssl одного не достаточно...
типа этого https://coderoad.ru/33932007/Telegram-бота-API-веб-перехватчиков-самоподписанный-сертификат
...
Рейтинг: 0 / 0
telegram webhook
    #40025064
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделал сертификаты как написано
https://core.telegram.org/bots/self-signed#openssl
https://core.telegram.org/bots/self-signed#java-keystore
открываю страницу в мозиле (ругается что-то сертификат левый) -но сертификат просматривает

но вот телеграм ругается
Код: plaintext
"SSL error {error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed}"

что ему надо?
...
Рейтинг: 0 / 0
telegram webhook
    #40025079
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как такое
curl -F "url=https://xxx.xxx.xxx.xxx:8443/test/pagebot" -F "certificate=@xcv.pem" " https://api.telegram.org/botTOKEN/setwebhook"

заменить эквивалентом на java
ключ -F Данный параметр позволяет curl эмулировать заполненной формы, в которой пользователь нажал кнопку "отправить". Программа вызывает метод POST, используя Content-Type multipart/form-data в соответствии с RFC 2388, что дает возможность в том чисел и загрузить бинарные файлы.
Для принудительного использования части содержимого из файла перед именем файла используйте префикс '@'. Для загрузки поля из файла нужно использовать префикс '<'. Отличие '@' от '<' в том, что '@' делает присоединение файла (attachment), а '<' берет содержимое файла и вставляет его в поле.
...
Рейтинг: 0 / 0
telegram webhook
    #40025096
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот это
curl -F "url=https://xxx.xxx.xxx.xxx:8443/test/pagebot" -F "certificate=@xcv.pem" " https://api.telegram.org/botTOKEN/setwebhook"
работает в консоли (т.е с сертификатами разобрался)

пытаюсь сделать в коде

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
            String[] commands =  new String[] {"curl", "-X", "POST", "-F", "\"url=https://xxx.xxx.xxx.xxx:8443/test/pagebot\"", "-F", "\"certificate=@xcv.pem\"", "\"https://api.telegram.org/botTOKEN/setwebhook\""};
            System.out.println(Arrays.toString(commands));
            Process process = Runtime.getRuntime().exec(commands);
            System.out.println( process.info().toString());
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            StringBuilder response = new StringBuilder();
            while ((line = reader.readLine()) != null) {
                response.append(line);
            }


отрабатывает, и даже выводит process.info().toString()...
но response - пустой, т.е. что и куда - вопрос открытый...
...
Рейтинг: 0 / 0
telegram webhook
    #40025103
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напиши шелловый скрипт для регистрации бота и не насилуй джаву.
...
Рейтинг: 0 / 0
telegram webhook
    #40025107
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak
Напиши шелловый скрипт для регистрации бота и не насилуй джаву.
это будет велосипед с квадратными колёсами
а это и так шеллл
Runtime.getRuntime().exec(commands);

отрабатывает вроде
Код: plaintext
[user: Optional[root], cmd: /usr/bin/curl, args: [-X, POST, -F "url=https://xx.xx.xx.xx:8443/test/pagebot", -F "certificate=/etc/apache2/ssl/@xcv.pem", " https://api.telegram.org/botNOKEN/setwebhook%22%5D]https://api.telegram.org/botNOKEN/setwebhook"],  startTime: Optional[2020-12-06T20:26:27.560Z], totalTime: Optional[PT0S]]
...
Рейтинг: 0 / 0
telegram webhook
    #40025120
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
под 10 окнами
curl из java отправляет и получает ответ (в отличии от debean)
при проверке
Код: plaintext
"SSL error {error:14095044:SSL routines:ssl3_read_n:internal error}"
...
Рейтинг: 0 / 0
telegram webhook
    #40025162
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот такое работает
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
            String[] commands =  new String[] {"curl",  "-F", "url=https://xx.xx.xx.xx:8443/test/pagebot", "-F", "certificate=@/etc/apache2/ssl/xcv.pem", "-F" ,"ip_address=xx.xx.xx.xx", "https://api.telegram.org/botTOKEN/setwebhook"};
            Process process = Runtime.getRuntime().exec(commands);
            System.out.println(process.info().toString());
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            StringBuilder response = new StringBuilder();
            while ((line = reader.readLine()) != null) {
                response.append(line);
            }
            System.out.println(response.toString());


надо обратить внимание на кавычки и @

и в сертификате надо прописать в параметре CN=xx.xx.xx.xx
...
Рейтинг: 0 / 0
telegram webhook
    #40025207
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя curl есть, по умолчанию, и в окнах , хочется решения и на чистой java.
к сожалению я не нашел...
такого что б понятно было ...
...
Рейтинг: 0 / 0
telegram webhook
    #40025278
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
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.
try {
            CloseableHttpClient httpClient = HttpClients.createDefault();
            HttpPost uploadFile = new HttpPost("https://api.telegram.org/botTOKEN/setwebhook");
            MultipartEntityBuilder builder = MultipartEntityBuilder.create();
            builder.addTextBody("url", "https://xx.xx.xx.xx:8443/test/pagebot", ContentType.TEXT_PLAIN);
            builder.addTextBody("ip_address", "xx.xx.xx.xx", ContentType.TEXT_PLAIN);

// This attaches the file to the POST:
            File f = new File(ph+"config/xcv.pem");
            builder.addBinaryBody("certificate", new FileInputStream(f), ContentType.APPLICATION_OCTET_STREAM, f.getName());
            HttpEntity multipart = builder.build();
            uploadFile.setEntity(multipart);
            CloseableHttpResponse response = httpClient.execute(uploadFile);
            HttpEntity responseEntity = response.getEntity();

            int ch;
            StringBuilder sb = new StringBuilder();
            while ((ch = responseEntity.getContent().read()) != -1) {
                sb.append((char) ch);
            }
            System.out.println(sb.toString());
        } catch (FileNotFoundException ex) {
            Logger.getLogger(sendFile.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(sendFile.class.getName()).log(Level.SEVERE, null, ex);
        }


для работы с telegram подойдёт
...
Рейтинг: 0 / 0
12 сообщений из 112, страница 5 из 5
Форумы / Java [игнор отключен] [закрыт для гостей] / telegram webhook
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]