From 77f2c675402164c9dc5307343452f01bc6e07051 Mon Sep 17 00:00:00 2001 From: Struchkov Mark Date: Sun, 19 Mar 2023 19:28:11 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B2=D0=B5=D0=B1=D1=85=D1=83=D0=BA=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../quarkus/core/TelegramWebhookConnect.java | 3 ++- .../simple/core/TelegramWebhookConnect.java | 3 ++- .../telegram/domain/config/WebhookConfig.java | 10 ++-------- .../telegram/webhook/WebhookController.java | 18 +++++++++--------- 4 files changed, 15 insertions(+), 19 deletions(-) diff --git a/telegram-core/telegram-core-quarkus/src/main/java/dev/struchkov/godfather/telegram/quarkus/core/TelegramWebhookConnect.java b/telegram-core/telegram-core-quarkus/src/main/java/dev/struchkov/godfather/telegram/quarkus/core/TelegramWebhookConnect.java index 83af9c6..9d96ccf 100644 --- a/telegram-core/telegram-core-quarkus/src/main/java/dev/struchkov/godfather/telegram/quarkus/core/TelegramWebhookConnect.java +++ b/telegram-core/telegram-core-quarkus/src/main/java/dev/struchkov/godfather/telegram/quarkus/core/TelegramWebhookConnect.java @@ -21,7 +21,8 @@ public class TelegramWebhookConnect implements TelegramConnect { if (webhookConfig.isEnable()) { log.info("Инициализация webhook соединения. {}", telegramBotConfig.getWebhookConfig()); final SetWebhook setWebhook = SetWebhook.builder() - .url(webhookConfig.getRootUrl() + "/" + webhookConfig.getControllerPath() + "/" + webhookConfig.getPath() + "?webhookAccessKey=" + webhookConfig.getAccessKey()) + .secretToken(webhookConfig.getSecretToken()) + .url(webhookConfig.getUrl()) .build(); bot.setWebhook(setWebhook); webhookBot = bot; diff --git a/telegram-core/telegram-core-simple/src/main/java/dev/struchkov/godfather/telegram/simple/core/TelegramWebhookConnect.java b/telegram-core/telegram-core-simple/src/main/java/dev/struchkov/godfather/telegram/simple/core/TelegramWebhookConnect.java index 9b226ba..7255bce 100644 --- a/telegram-core/telegram-core-simple/src/main/java/dev/struchkov/godfather/telegram/simple/core/TelegramWebhookConnect.java +++ b/telegram-core/telegram-core-simple/src/main/java/dev/struchkov/godfather/telegram/simple/core/TelegramWebhookConnect.java @@ -25,7 +25,8 @@ public class TelegramWebhookConnect implements TelegramConnect { if (webhookConfig.isEnable()) { log.info("Инициализация webhook соединения. {}", telegramBotConfig.getWebhookConfig()); final SetWebhook setWebhook = SetWebhook.builder() - .url(webhookConfig.getRootUrl() + "/" + webhookConfig.getControllerPath() + "/" + webhookConfig.getPath() + "?webhookAccessKey=" + webhookConfig.getAccessKey()) + .secretToken(webhookConfig.getSecretToken()) + .url(webhookConfig.getUrl()) .build(); bot.setWebhook(setWebhook); webhookBot = bot; diff --git a/telegram-domain/telegram-domain-main/src/main/java/dev/struchkov/godfather/telegram/domain/config/WebhookConfig.java b/telegram-domain/telegram-domain-main/src/main/java/dev/struchkov/godfather/telegram/domain/config/WebhookConfig.java index 7bd9a3a..c943620 100644 --- a/telegram-domain/telegram-domain-main/src/main/java/dev/struchkov/godfather/telegram/domain/config/WebhookConfig.java +++ b/telegram-domain/telegram-domain-main/src/main/java/dev/struchkov/godfather/telegram/domain/config/WebhookConfig.java @@ -12,15 +12,9 @@ public class WebhookConfig { private boolean enable = false; @ToString.Exclude - private String rootUrl; + private String url; @ToString.Exclude - private String controllerPath; - - @ToString.Exclude - private String path; - - @ToString.Exclude - private String accessKey; + private String secretToken; } diff --git a/telegram-webhook/telegram-webhook-quarkus/src/main/java/dev/struchkov/godfather/telegram/webhook/WebhookController.java b/telegram-webhook/telegram-webhook-quarkus/src/main/java/dev/struchkov/godfather/telegram/webhook/WebhookController.java index 65642be..f1d48fc 100644 --- a/telegram-webhook/telegram-webhook-quarkus/src/main/java/dev/struchkov/godfather/telegram/webhook/WebhookController.java +++ b/telegram-webhook/telegram-webhook-quarkus/src/main/java/dev/struchkov/godfather/telegram/webhook/WebhookController.java @@ -8,11 +8,11 @@ import org.telegram.telegrambots.meta.api.objects.Update; import javax.ws.rs.Consumes; import javax.ws.rs.GET; +import javax.ws.rs.HeaderParam; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; @@ -20,29 +20,29 @@ import static dev.struchkov.haiti.context.exception.AccessException.accessExcept import static dev.struchkov.haiti.utils.Inspector.isTrue; @Slf4j +@Path("callback") public class WebhookController { public static final String ERROR_ACCESS = "В доступе отказано!"; - private final String pathKey; - private final String accessKey; + private final String pathKey = "bot"; + private final String secretToken; private final EventDistributor eventDistributor; public WebhookController(TelegramBotConfig telegramBotConfig, EventDistributor eventDistributor) { - this.accessKey = telegramBotConfig.getWebhookConfig().getAccessKey(); + this.secretToken = telegramBotConfig.getWebhookConfig().getSecretToken(); this.eventDistributor = eventDistributor; - this.pathKey = telegramBotConfig.getWebhookConfig().getPath(); } @POST @Path("{webhookPath}") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) - public Uni updateReceived(@PathParam("webhookPath") String botPath, @QueryParam("webhookAccessKey") String webhookAccessKey, Update update) { + public Uni updateReceived(@PathParam("webhookPath") String botPath, @HeaderParam("X-Telegram-Bot-Api-Secret-Token") String secretTokenFromTelegram, Update update) { return Uni.createFrom().voidItem() .invoke(() -> log.trace("Получено webhook событие")) .invoke(() -> { isTrue(pathKey.equals(botPath), accessException(ERROR_ACCESS)); - isTrue(accessKey.equals(webhookAccessKey), accessException(ERROR_ACCESS)); + isTrue(secretToken.equals(secretTokenFromTelegram), accessException(ERROR_ACCESS)); }) .onItem().ignore().andSwitchTo(() -> eventDistributor.processing(update)) .invoke(() -> log.trace("Webhook событие успешно обработано")) @@ -52,11 +52,11 @@ public class WebhookController { @GET @Path("{webhookPath}") @Produces(MediaType.APPLICATION_JSON) - public Uni testReceived(@PathParam("webhookPath") String botPath, @QueryParam("webhookAccessKey") String webhookAccessKey) { + public Uni testReceived(@PathParam("webhookPath") String botPath, @HeaderParam("X-Telegram-Bot-Api-Secret-Token") String secretTokenFromTelegram) { return Uni.createFrom().voidItem() .onItem().invoke(() -> { isTrue(pathKey.equals(botPath), accessException(ERROR_ACCESS)); - isTrue(accessKey.equals(webhookAccessKey), accessException(ERROR_ACCESS)); + isTrue(secretToken.equals(secretTokenFromTelegram), accessException(ERROR_ACCESS)); }) .onItem().transform(ignore -> "Hi there " + botPath + "!"); }