Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
93 changes: 22 additions & 71 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -1,78 +1,29 @@
# This is a basic workflow to help you get started with Actions
name: Docker Build Action

# Controls when the workflow will run
name: Build and publish a Docker image to ghcr.io
on:
# Triggers the workflow on push or pull request events but only for the master and develop branch
workflow_dispatch:
push:
branches:
- 'master'
- 'develop'
tags:
- 'v*.*.*'
pull_request:
branches:
- 'master'
- 'develop'

permissions:
contents: read
packages: write
# publish on releases, e.g. v2.1.13 (image tagged as "2.1.13" - "v" prefix is removed)
release:
types: [ published ]

# publish on pushes to the main branch (image tagged as "latest")
push:
branches:
- master

jobs:
build:
runs-on: ubuntu-latest
env:
DOCKER_IMAGE_NAME: asfbot
docker_publish:
runs-on: "ubuntu-20.04"

steps:
- name: Checkout
uses: actions/checkout@v2
- name: Sets env vars for tag latest
run: |
echo "DOCKER_IMAGE_TAG=:latest" >> $GITHUB_ENV
if: github.ref_name == 'master' && github.event_name != 'pull_request'
- name: Sets env vars for other branches
run: |
echo "DOCKER_IMAGE_TAG=:$GITHUB_REF_NAME" >> $GITHUB_ENV
if: github.ref_name != 'master' && github.event_name != 'pull_request'
# https://github.com/docker/setup-qemu-action
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
# https://github.com/docker/setup-buildx-action
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v2
- name: Login to GHCR
if: github.event_name != 'pull_request'
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to DockerHub
if: github.event_name != 'pull_request'
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push
id: docker_build_GHCR
uses: docker/build-push-action@v3
with:
context: .
platforms: linux/amd64,linux/arm64,linux/arm/v7
push: ${{ github.event_name != 'pull_request' }}
file: Dockerfile
tags: |
ghcr.io/${{ github.repository_owner }}/${{ env.DOCKER_IMAGE_NAME }}${{ env.DOCKER_IMAGE_TAG }}
${{ github.repository_owner }}/${{ env.DOCKER_IMAGE_NAME }}${{ env.DOCKER_IMAGE_TAG }}
- name: Docker Hub Description
if: github.event_name != 'pull_request' && github.ref_name == 'master'
uses: peter-evans/dockerhub-description@v3
- uses: actions/checkout@v2

# https://github.com/marketplace/actions/push-to-ghcr
- name: Build and publish a Docker image for ${{ github.repository }}
uses: macbre/push-to-ghcr@master
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
repository: ${{ secrets.DOCKER_USERNAME }}/${{ env.DOCKER_IMAGE_NAME }}
readme-filepath: ./README.md
image_name: ${{ github.repository }} # it will be lowercased internally
github_token: ${{ secrets.GITHUB_TOKEN }}
# optionally push to the Docker Hub (docker.io)
# docker_io_token: ${{ secrets.DOCKER_IO_ACCESS_TOKEN }} # see https://hub.docker.com/settings/security
# customize the username to be used when pushing to the Docker Hub
# docker_io_user: foobar # see https://github.com/macbre/push-to-ghcr/issues/14
26 changes: 13 additions & 13 deletions bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
_REGEX_COMMAND_RAW = r'^[/!](?P<input>(?P<command>\w+).*)'
_REGEX_COMMAND = r'^[/!]\w+\s*(?P<bot>\w+)?'
_ENV_TELEGRAM_BOT_TOKEN = "TELEGRAM_BOT_TOKEN"
_ENV_TELEGRAM_USER_ALIAS = "TELEGRAM_USER_ALIAS"
_ENV_TELEGRAM_USER_ID = "TELEGRAM_USER_ID"
_ENV_TELEGRAM_PROXY = "TELEGRAM_PROXY"
_ENV_ASF_IPC_HOST = "ASF_IPC_HOST"
_ENV_ASF_IPC_PORT = "ASF_IPC_PORT"
Expand All @@ -36,7 +36,7 @@
parser.add_argument("--proxy", help="Use a proxy to connect to Telegram. Format: "
"<protocol>://<host>:<port>. For example: http://192.168.1.1:7890"
, default=None)
parser.add_argument("--alias", type=str, help="Telegram alias of the bot owner.", default=None)
parser.add_argument("--user_id", type=int, help="Telegram ID of the bot owner.", default=None)
args = parser.parse_args()

logger.set_level(args.verbosity)
Expand All @@ -52,12 +52,13 @@
exit(1)

try:
args.alias = os.environ[_ENV_TELEGRAM_USER_ALIAS]
user_id = 1
args.user_id = int(os.getenv('TELEGRAM_USER_ID',user_id))
except KeyError as key_error:
if not args.alias:
if not args.user_id:
LOG.critical(
"No telegram user alias provided. Please do so using --alias argument or %s environment variable.",
_ENV_TELEGRAM_USER_ALIAS)
"No telegram user ID provided. Please do so using --user_id argument or %s environment variable.",
_ENV_TELEGRAM_USER_ID)
exit(1)
try:
args.proxy = os.environ[_ENV_TELEGRAM_PROXY]
Expand All @@ -81,7 +82,7 @@
pass

args.token = args.token.strip()
args.alias = [alias.replace('@', '').strip() for alias in args.alias.split(',')]
args.user_id = args.user_id
args.host = args.host.strip()
args.port = args.port.strip()
if args.password:
Expand All @@ -93,7 +94,7 @@
LOG.info("Starting up bot...")
LOG.debug("Telegram token: %s", args.token)
LOG.debug("Telegram Proxy %s", args.proxy)
LOG.debug("User alias: %s", args.alias)
LOG.debug("User ID: %s", args.user_id)
LOG.debug("ASF IPC host: %s", args.host)
LOG.debug("ASF IPC port: %s", args.port)

Expand Down Expand Up @@ -122,9 +123,8 @@


def is_user_message(message):
""" Returns if a message is from the owner of the bot comparing it to the user alias provided on startup. """
username = message.chat.username
return username in args.alias
""" Returns if a message is from the owner of the bot comparing it to the user id provided on startup. """
return message.chat.id == args.user_id


@bot.message_handler(func=is_user_message, commands=['status'])
Expand Down Expand Up @@ -199,8 +199,8 @@ def check_for_cdkeys(message):
response = asf_connector.bot_redeem('ASF', cdkeys)
reply_to(message, "<code>" + str(response) + "</code>")
else:
LOG.debug("Bypassed message: %s \n from user alias %s.",
message.text, message.chat.username)
LOG.debug("Bypassed message: %s \n from user ID %s.",
message.text, message.chat.id)


def reply_to(message, text, sanitize=False, **kwargs):
Expand Down