From 1326e71d39606e61778f918f11485a2db70662b5 Mon Sep 17 00:00:00 2001 From: Shtekovski Date: Fri, 21 Apr 2023 11:43:44 +0300 Subject: [PATCH 1/2] telegram_server_cheker: adding telegram bot --- moonspeak/docker-compose.yml | 11 +++++++++++ moonspeak/telegram_server_cheker/Dockerfile | 9 +++++++++ moonspeak/telegram_server_cheker/README.txt | 1 + .../telegram_server_cheker/backend/main.py | 18 ++++++++++++++++++ .../backend/requirements.txt | 1 + 5 files changed, 40 insertions(+) create mode 100644 moonspeak/telegram_server_cheker/Dockerfile create mode 100644 moonspeak/telegram_server_cheker/README.txt create mode 100644 moonspeak/telegram_server_cheker/backend/main.py create mode 100644 moonspeak/telegram_server_cheker/backend/requirements.txt diff --git a/moonspeak/docker-compose.yml b/moonspeak/docker-compose.yml index 49fa8061..626461b4 100644 --- a/moonspeak/docker-compose.yml +++ b/moonspeak/docker-compose.yml @@ -18,6 +18,17 @@ networks: services: #=================================== + telegram_server_cheker: + image: "temachpool/moonspeak-telegram_server_cheker:${TAG:-latest}" + environment: + MOONSPEAK_TGBOT_TOKEN: "${MOONSPEAK_TGBOT_TOKEN}" + MOONSPEAK_ADMIN_ID_0: "${MOONSPEAK_ADMIN_ID_0}" + MOONSPEAK_ADMIN_ID_1: "${MOONSPEAK_ADMIN_ID_1}" + networks: + - moonspeaknet + build: + context: ./telegram_server_cheker + gateway: image: "temachpool/moonspeak-gateway:${TAG:-latest}" volumes: diff --git a/moonspeak/telegram_server_cheker/Dockerfile b/moonspeak/telegram_server_cheker/Dockerfile new file mode 100644 index 00000000..c865cd30 --- /dev/null +++ b/moonspeak/telegram_server_cheker/Dockerfile @@ -0,0 +1,9 @@ +FROM python +WORKDIR /opt/moonspeak/telegram_server_cheker + +COPY backend/requirements.txt requirements.txt +COPY backend/main.py backend/main.py + +RUN pip install -r requirements.txt +WORKDIR /opt/moonspeak/telegram_server_cheker/backend +CMD ["python", "main.py"] \ No newline at end of file diff --git a/moonspeak/telegram_server_cheker/README.txt b/moonspeak/telegram_server_cheker/README.txt new file mode 100644 index 00000000..7e933609 --- /dev/null +++ b/moonspeak/telegram_server_cheker/README.txt @@ -0,0 +1 @@ +Telegram bot to check server status \ No newline at end of file diff --git a/moonspeak/telegram_server_cheker/backend/main.py b/moonspeak/telegram_server_cheker/backend/main.py new file mode 100644 index 00000000..6e782b30 --- /dev/null +++ b/moonspeak/telegram_server_cheker/backend/main.py @@ -0,0 +1,18 @@ +import telebot +import os + +bot = telebot.TeleBot(os.getenv('MOONSPEAK_TGBOT_TOKEN')) + +#Список доверенных id +admin_ids = [os.getenv('MOONSPEAK_ADMIN_ID_0'),os.getenv('MOONSPEAK_ADMIN_ID_1')] + +#Достаем user_id +@bot.message_handler(commands=['start']) +def start(message): + user_id = message.from_user.id + if str(user_id) in admin_ids: + bot.send_message(message.chat.id,"Привет, админ!") + else: + bot.send_message(message.chat.id,"У вас нет доступа к даным бота") +print('Started') +bot.infinity_polling() diff --git a/moonspeak/telegram_server_cheker/backend/requirements.txt b/moonspeak/telegram_server_cheker/backend/requirements.txt new file mode 100644 index 00000000..7dbaae61 --- /dev/null +++ b/moonspeak/telegram_server_cheker/backend/requirements.txt @@ -0,0 +1 @@ +pyTelegramBotAPI==4.10 \ No newline at end of file From 9bca464320a719fed92808f154656cbadbe89f15 Mon Sep 17 00:00:00 2001 From: Shtekovski Date: Sat, 20 May 2023 14:06:00 +0300 Subject: [PATCH 2/2] telegram_server_cheker: Add funcion Add funcion to view containers --- moonspeak/docker-compose.yml | 2 + moonspeak/telegram_server_cheker/Dockerfile | 2 +- .../telegram_server_cheker/backend/main.py | 52 ++++++++++++++++--- .../backend/requirements.txt | 3 +- 4 files changed, 51 insertions(+), 8 deletions(-) diff --git a/moonspeak/docker-compose.yml b/moonspeak/docker-compose.yml index ab654ed1..ab4c7192 100644 --- a/moonspeak/docker-compose.yml +++ b/moonspeak/docker-compose.yml @@ -28,6 +28,8 @@ services: - moonspeaknet build: context: ./telegram_server_cheker + volumes: + - /var/run/docker.sock:/var/run/docker.sock gateway: image: "temachpool/moonspeak-gateway:${TAG:-latest}" diff --git a/moonspeak/telegram_server_cheker/Dockerfile b/moonspeak/telegram_server_cheker/Dockerfile index c865cd30..44fa9b34 100644 --- a/moonspeak/telegram_server_cheker/Dockerfile +++ b/moonspeak/telegram_server_cheker/Dockerfile @@ -2,8 +2,8 @@ FROM python WORKDIR /opt/moonspeak/telegram_server_cheker COPY backend/requirements.txt requirements.txt +RUN pip install -r requirements.txt COPY backend/main.py backend/main.py -RUN pip install -r requirements.txt WORKDIR /opt/moonspeak/telegram_server_cheker/backend CMD ["python", "main.py"] \ No newline at end of file diff --git a/moonspeak/telegram_server_cheker/backend/main.py b/moonspeak/telegram_server_cheker/backend/main.py index 6e782b30..32196d13 100644 --- a/moonspeak/telegram_server_cheker/backend/main.py +++ b/moonspeak/telegram_server_cheker/backend/main.py @@ -1,18 +1,58 @@ import telebot import os +import docker bot = telebot.TeleBot(os.getenv('MOONSPEAK_TGBOT_TOKEN')) -#Список доверенных id +#list of trust id admin_ids = [os.getenv('MOONSPEAK_ADMIN_ID_0'),os.getenv('MOONSPEAK_ADMIN_ID_1')] -#Достаем user_id +#return information about the docker containers + +# using docker client +client = docker.from_env() + + +def docker_information(): + + #return containers list + containers = client.containers.list() + + # forming a dictionary with information + containers_name = [] + for container in containers: + containers_name.append(client.containers.get(container.id).name) + + docker_information = {} + docker_information['containers_len'] = len(containers) + docker_information['containers_name'] = containers_name + + return docker_information + + +#bot @bot.message_handler(commands=['start']) def start(message): + #user_id_checking user_id = message.from_user.id - if str(user_id) in admin_ids: - bot.send_message(message.chat.id,"Привет, админ!") - else: - bot.send_message(message.chat.id,"У вас нет доступа к даным бота") + + if str(user_id) not in admin_ids: + bot.send_message(message.chat.id,"No access!") + return + + #using def + docker_info = docker_information() + + bot.send_message(message.chat.id,"Running containers - {containers_len}".format (containers_len= docker_info['containers_len'])) + + #forming string from the list + i=0 + while i < len(docker_info['containers_name']): + docker_info['containers_name'][i] = '- '+docker_info['containers_name'][i]+'\n' + i+=1 + container_names = ''.join(docker_info['containers_name']) + bot.send_message(message.chat.id,'Containers:\n'+container_names) + + print('Started') bot.infinity_polling() diff --git a/moonspeak/telegram_server_cheker/backend/requirements.txt b/moonspeak/telegram_server_cheker/backend/requirements.txt index 7dbaae61..0d467e71 100644 --- a/moonspeak/telegram_server_cheker/backend/requirements.txt +++ b/moonspeak/telegram_server_cheker/backend/requirements.txt @@ -1 +1,2 @@ -pyTelegramBotAPI==4.10 \ No newline at end of file +pyTelegramBotAPI==4.10 +docker==6.1.0