Skip to main content

A telegram bot to generate OTPs

Project description

License: MIT PyPI version Python code style

Yet Another OTP Bot

@yaotpbot : A Telegram Bot to generate OTPs.

Disclaimer: This project is intended as a toy project and should not be used for serious or production purposes. The author does not recommend using this for any critical applications.

Architecture

flowchart LR;

T[Telegram Server]

D[Dynamo DB]

subgraph K[Kubernetes Cluster]
    direction TB
    Y[Yaotpbot]
    GO[Gitlab Operator]
    GO -->|Deploy and sync| Y
end

subgraph G[GitLab]
    direction TB
    R[Repository]
    RE[Container Registry]
    R -->|CI| RE

end

K -.->|Poll update| T
D <---> |Store and retrieve| K
K -.-> |Watch and sync| G

Software

Yaotpbot is written in Python and use telegram-bot-api to interact with Telegram.

Infrastructure

A DynamoDB table it's used to store the identifiers of the chats and all the related seeds, needed to generate OTPs. All those information are stored encrypted and just decrpyted at runtime, using dynamodb-encryption-sdk library with AES encryption.

Deployment

CI/CD is automated with GitOps. in particular:

  • The pipeline
  • The operator deploys and keep synced the manifests created on a local k3s cluster.

Installation and usage

The bot can either be used as a container (registry) or installed directly with pip running

pip3 install --upgrade yaotpbot 

Note that following environment variables must be set:

Name Description
TELEGRAM_API_TOKEN Telegram Api Token of your bot needed to interact with Telegram. You always get a new one when creating a new bot.
LOCALSTACK_ENDPOINT A localstack endpoint to use when not using AWS. By default the bot looks for a table called yaotpbot-table and use sts to verify the connection.
DYNAMO_AES_SIGN_KEY Key used to sign encrypted data stored on DynamoDB. Can be generated running python scrips/keys.py
DYNAMO_AES_ENCRYPTION_KEY Key used to encrypt data stored on DynamoDB. Can be generated running python scrips/keys.py
AWS_ACCESS_KEY_ID AWS access key id. Used with AWS_SECRET_ACCESS_KEY to interact with DynamoDB.
AWS_SECRET_ACCESS_KEY AWS secret access key. Used with AWS_ACCESS_KEY_ID to interact with DynamoDB.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yaotpbot-0.1.0.tar.gz (10.1 kB view details)

Uploaded Source

Built Distribution

yaotpbot-0.1.0-py3-none-any.whl (13.9 kB view details)

Uploaded Python 3

File details

Details for the file yaotpbot-0.1.0.tar.gz.

File metadata

  • Download URL: yaotpbot-0.1.0.tar.gz
  • Upload date:
  • Size: 10.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for yaotpbot-0.1.0.tar.gz
Algorithm Hash digest
SHA256 19a6be8dd1801016cefa8cd6d6c7df489676fdb8823fb4c92ed4f8b18ed22b7b
MD5 099932299849002857d7bbd7f23125f3
BLAKE2b-256 c77b79034857d91820db8ace70f7cf74b3b3d29b81b94c7da3f45d9569b28815

See more details on using hashes here.

File details

Details for the file yaotpbot-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: yaotpbot-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 13.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for yaotpbot-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9609d1d23d365d2e8506e3424d2beb19ddb358a7622a009e8e65946fad9272ec
MD5 b7b07c24190b5f00d1da17344c19ff92
BLAKE2b-256 bed0731c124eb1bd96eb6af2a10b0c8a02d2a285ef4d8d82fa733ddb203b6ccd

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page