diff --git a/moonspeak/docker-compose.yml b/moonspeak/docker-compose.yml index 4cd75d87..ab4c7192 100644 --- a/moonspeak/docker-compose.yml +++ b/moonspeak/docker-compose.yml @@ -18,6 +18,19 @@ 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 + volumes: + - /var/run/docker.sock:/var/run/docker.sock + 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..44fa9b34 --- /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 +RUN pip install -r requirements.txt +COPY backend/main.py backend/main.py + +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..32196d13 --- /dev/null +++ b/moonspeak/telegram_server_cheker/backend/main.py @@ -0,0 +1,58 @@ +import telebot +import os +import docker + +bot = telebot.TeleBot(os.getenv('MOONSPEAK_TGBOT_TOKEN')) + +#list of trust id +admin_ids = [os.getenv('MOONSPEAK_ADMIN_ID_0'),os.getenv('MOONSPEAK_ADMIN_ID_1')] + +#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) 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 new file mode 100644 index 00000000..0d467e71 --- /dev/null +++ b/moonspeak/telegram_server_cheker/backend/requirements.txt @@ -0,0 +1,2 @@ +pyTelegramBotAPI==4.10 +docker==6.1.0