AndreyKaBelka / CovidTEST

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Генератор тестовых COVID-19 QR-кодов

Генерируемые тестовые QR-коды подходят для проверки только на тестовом стенде. Данное приложение не генерирует рабочие QR-коды. Созданными QR-кодами пользоваться запрещено!

Сервис поддерживает дополнительно работу Telegram бота — это опционально, не требуется для работы основного демо-стенда.

Настройка

Основные настройки сайта

Для запуска демо-стенда требуются следующие переменные окружения:

  • FLASK_APP — указывается местоположение скрипта сервера, необходимо указать: app/main
  • FLASK_ENV — устанавливается значение окружения, требуется для работы в среде разработки, указывается development, по умолчанию ставится production.
  • FLASK_DEBUG — для включения отладочного режима необходимо включить, указав 1.
  • REDIS_URL — указывается полный адрес подключения к Redis, например: redis://localhost:6379/0

Основные настройки Telegram бота

Для работы Telegram бота необходимо предварительно зарегистрировать бота в @BotFather. Процедуру регистрации можно найти на просторах Интернета.

  • TG_BOT_TOKEN — токен вашего Telegram бота полученный после регистрации.
  • TG_BOT_QR_HOST — хост вашего сайта на котором работает основной сайт для тестирования кодов. Поддерживаются IDNA домены.
  • REDIS_URL — указывается полный адрес подключения к Redis, например: redis://localhost:6379/0

Redis

Для хранения временных данных используется Redis. Все временные данные сохраняются на срок от 10 минут до 1 часа.

Суперпользователи

По умолчанию задан пользователь admin с паролем password. Для создания собственных пользователей необходимо использовать следующие переменные окружения:

  • ADMIN_USERS — кол-во суперпользователей.
  • USER_<N>_USERNAME — логин суперпользователя на сайте.
  • USER_<N>_PASSWORD — пароль суперпользователя на сайте.
  • USER_<N>_FIRST_NAME — имя суперпользователя, подставляется автоматически в поле «Имя».
  • USER_<N>_LAST_NAME — фамилия суперпользователя, подставляется автоматически в поле «Фамилия».
  • USER_<N>_SECOND_NAME — отчество суперпользователя, подставляется автоматически в поле «Отчество».
  • USER_<N>_B_DAY — день рождения суперпользователя, подставляется автоматически в поле «День рождения».
  • USER_<N>_SERIES — первые 2 цифры серии паспорта суперпользователя, подставляется автоматически в поле «Серия паспорта».
  • USER_<N>_NUMBER — последние 3 цифры номера паспорта суперпользователя, подставляется автоматически в поле «Номер паспорта».
  • USER_<N>_TG_CHAT_ID — ID пользователя Telegram, используется для автоматической авторизации пользователя в Telegram.
  • USER_<N>_TIMEZONEназвание часового пояса, используется для автоматической генерации даты и времени валидации тестового QR-кода в указанном часовом поясе пользователя.

Где <N> — это цифры от 0 до указанного кол-ва суперпользователей в переменной ADMIN_USERS, 0 — это 1-ый пользователь.

Запуск

Запустить проект можно несколькими способами:

Без использования Docker

Для данного запуска необходимо предварительно позаботиться о предварительно запущенном сервере Redis.

Укажите полный адрес сервера Redis в переменной окружения REDIS_URL.

Создайте виртуальное окружение Python 3.9 командой:

$ python3 -m venv venv

Активируйте виртуальное окружение:

$ source ./venv/bin/active

Обновите пакетный менеджер pip до последней версии:

$ pip insttall --upgrade pip

Установите зависимые пакеты:

$ pip install -r requirements.txt

Запустите web-сервер

$ flask run

Для запуска телеграм бота необходимо указать токен вашего бота в переменной TG_BOT_TOKEN, после запустить командой:

$ python app/bot.py

С частичным использованием Docker

Этот способ от предыдущего отличается только тем, что Redis можно запустить воспользовавшись Docker. Redis с помощью Docker можно запустить 2 способами:

  1. С использованием Docker Compose (рекомендуется).
  2. Без использования Docker Compose.

Первый вариант делается командой:

$ docker-compose up redis -d 

Второй вариант:

$ docker run --name redis -d redis -p 6379:6379

Далее необходимо выполнить все шаги описанные в предыдущем варианте запуска.

Полностью используя Docker

Этот способ самый лёгкий для запуска проекта, но требуется заранее установленного Docker и docker-compose.

Для запуска проекта выполните команду:

$ docker-compose up -d --build

Эксплуатация

Сайт

Для формирования QR-кода с тестовыми данными перейдите по ссылке: http://localhost:5000/qr-gen и авторизуйтесь под суперпользователем.

Введите тестовые данные и нажмите кнопку «Создать тестовый QR-код». Справа появится созданные QR-код с тестовыми данными. Можно перейти по нему воспользовавшись любым QR сканером.

ВНИМАНИЕ! Для тестирования с нескольких устройств необходимо запускать сервис либо на действующем домене, либо полностью используя Docker, при этом вместо localhost в адресе надо будет указать IP-адрес вашей машины внутри локальной сети.

Telegram бот

После запуска соответствующего контейнера (см. инструкцию выше), найдите своего Telegram бота, и нажмите на кнопку «Start/Начать» или введите команду /start. В ответ вы получите сообщение:

Username, извиняйте, но вашего ID (<ваш ID в Telegram>) нет в системе.

После этого необходимо добавить этот ID в переменную окружения, для настройки суперпользователя и перезапустить контейнер с Telegram ботом.

После перезапуска контейнера, снова выполните команду /start. Вы должны получить сообщение с данными указанными в переменных окружения для суперпользователей с запросом на подтверждение: подтвердите эти данные.

Следующий шаг будет про время валидности QR-кода. Выберите любой из вариантов.

После выбора времени валидности тестового QR-кода вы получите тестовый QR-код с указанием даты и времени до которого действителен данный код.

About

License:MIT License


Languages

Language:HTML 67.8%Language:Python 29.6%Language:CSS 1.7%Language:JavaScript 0.9%