From 86738de9acbcb9e8870a21edf5052d5e1e905a12 Mon Sep 17 00:00:00 2001 From: Administrator Date: Wed, 11 Oct 2023 19:08:09 +0300 Subject: [PATCH] deny for development --- .deploy/deploy-dev.yaml | 2 ++ .deploy/deploy-prod.yaml | 2 ++ daemons/bot.py | 26 ++++++++++++++++++++++++++ settings.py | 2 ++ 4 files changed, 32 insertions(+) diff --git a/.deploy/deploy-dev.yaml b/.deploy/deploy-dev.yaml index 1e2fbb5..e8a781e 100644 --- a/.deploy/deploy-dev.yaml +++ b/.deploy/deploy-dev.yaml @@ -7,8 +7,10 @@ services: image: mathwave/sprint-repo:ruz-bot environment: MONGO_HOST: "mongo.develop.sprinthub.ru" + STAGE: "development" MONGO_PASSWORD: $MONGO_PASSWORD_DEV TELEGRAM_TOKEN: $TELEGRAM_TOKEN_DEV + PLATFORM_SECURITY_TOKEN: $PLATFORM_SECURITY_TOKEN command: bot deploy: mode: replicated diff --git a/.deploy/deploy-prod.yaml b/.deploy/deploy-prod.yaml index 807a604..c84df0f 100644 --- a/.deploy/deploy-prod.yaml +++ b/.deploy/deploy-prod.yaml @@ -7,8 +7,10 @@ services: image: mathwave/sprint-repo:ruz-bot environment: MONGO_HOST: "mongo.sprinthub.ru" + STAGE: "production" MONGO_PASSWORD: $MONGO_PASSWORD_PROD TELEGRAM_TOKEN: $TELEGRAM_TOKEN_PROD + PLATFORM_SECURITY_TOKEN: $PLATFORM_SECURITY_TOKEN DEBUG: "false" command: bot deploy: diff --git a/daemons/bot.py b/daemons/bot.py index 973d718..27ae9ea 100644 --- a/daemons/bot.py +++ b/daemons/bot.py @@ -1,13 +1,37 @@ import os import telebot +from cachetools import TTLCache +from requests import get from telebot.types import Message +import settings from helpers.mongo import mongo bot = telebot.TeleBot(os.getenv("TELEGRAM_TOKEN")) +STAFF_CACHE = TTLCache(100, 60) + + +def is_staff(telegram_id): + print('there') + staff_data = STAFF_CACHE.get(telegram_id) + if staff_data is None: + staff_data = get( + 'https://platform.sprinthub.ru/is_staff', + headers={'X-Security-Token': settings.PLATFORM_SECURITY_TOKEN}, + params={ + 'telegram_id': telegram_id + } + ) + if staff_data.status_code != 200: + return False + staff_data = staff_data.json()['is_staff'] + STAFF_CACHE[telegram_id] = staff_data + return staff_data + + @bot.message_handler(commands=['start']) def on_start(message: Message): mongo.users_collection.delete_many({"chat_id": message.chat.id}) @@ -16,5 +40,7 @@ def on_start(message: Message): @bot.message_handler() def do_action(message: Message): + if settings.STAGE == 'development' and not is_staff(message.chat.id): + return from helpers.answer import Answer Answer(message).process() diff --git a/settings.py b/settings.py index 1716cb3..95fe0e0 100644 --- a/settings.py +++ b/settings.py @@ -6,6 +6,8 @@ MONGO_USER = os.getenv("MONGO_USER", "mongo") MONGO_PASSWORD = os.getenv("MONGO_PASSWORD", "password") MONGO_HOST = os.getenv("MONGO_HOST", "localhost") DEBUG = os.getenv("DEBUG", "true") == "true" +STAGE = os.getenv("STAGE", None) +PLATFORM_SECURITY_TOKEN = os.getenv('PLATFORM_SECURITY_TOKEN', None) RUZ_API = "https://api.hseapp.ru/" MOSCOW_TIMEZONE = zoneinfo.ZoneInfo("Europe/Moscow")