From be14c7282d3e1972b1ebf4a093af2c6054c9e927 Mon Sep 17 00:00:00 2001
From: Pavel Kirilin <win10@list.ru>
Date: Thu, 20 Feb 2020 03:49:14 +0400
Subject: [PATCH] New proxies and interace. Description: - Added new proxies; -
 Added /help command; - "meme admin" trigger changed to "sys admin".

Signed-off-by: Pavel Kirilin <win10@list.ru>
---
 .env.docker                        |  2 +-
 src/actions/basic_actions.py       | 31 ++++++++++++++++++------------
 src/actions/docker.py              | 10 +++++-----
 src/actions/interactive_session.py |  6 +++---
 src/actions/permissions.py         |  6 +++---
 src/actions/scp.py                 |  6 +++---
 src/actions/server_management.py   | 10 +++++-----
 src/actions/stats.py               |  8 ++++----
 src/actions/systemctl.py           | 12 ++++++------
 src/utils/debug_mode.py            |  2 +-
 10 files changed, 50 insertions(+), 43 deletions(-)

diff --git a/.env.docker b/.env.docker
index e111f8c..cf5d02e 100644
--- a/.env.docker
+++ b/.env.docker
@@ -1,2 +1,2 @@
 IDLE_TIMEOUT=10
-PROXY_PASS=socks5://47.74.251.84:80
+PROXY_PASS=socks5://104.238.97.215:3399
diff --git a/src/actions/basic_actions.py b/src/actions/basic_actions.py
index dcec527..519330a 100644
--- a/src/actions/basic_actions.py
+++ b/src/actions/basic_actions.py
@@ -12,24 +12,31 @@ from src.utils.server_utils import get_server_by_alias
 from src.utils.ssh import run_ssh_command
 
 
-@bot_action(r'meme admin( help)?$')
+@settings.dispatcher.message_handler(commands=["help"])
+async def help_command(message: Message):
+    await settings.dispatcher.bot.send_message(message.chat.id,
+                                               "Send `sys admin` to me to view full help.",
+                                               ParseMode.MARKDOWN)
+
+
+@bot_action(r'sys admin( help)?$')
 async def overall_help(message: Message, state=None):
     await message.reply(
         '```\n'
-        '* meme admin help - Show this message\n\n'
-        '* meme admin servers - Manage your servers\n\n'
-        '* meme admin permissions - Manage servers permissions\n\n'
-        # '* meme admin commands - Manage stored commands\n\n'
-        '* meme admin exec {alias} {command} - Execute single command\n\n'
-        '* meme admin docker - Manage docker on remote server\n\n'
-        '* meme admin sys - Manage systemctl on remote server\n\n'
-        '* meme admin stats - See server statistics\n\n'
+        '* sys admin help - Show this message\n\n'
+        '* sys admin servers - Manage your servers\n\n'
+        '* sys admin permissions - Manage servers permissions\n\n'
+        # '* sys admin commands - Manage stored commands\n\n'
+        '* sys admin exec {alias} {command} - Execute single command\n\n'
+        '* sys admin docker - Manage docker on remote server\n\n'
+        '* sys admin sys - Manage systemctl on remote server\n\n'
+        '* sys admin stats - See server statistics\n\n'
         '```',
         parse_mode=ParseMode.MARKDOWN
     )
 
 
-@bot_action(trigger_str='meme admin exec',
+@bot_action(trigger_str='sys admin exec',
             params=[
                 BotParam('alias', r'[\w\d]+'),
                 BotParam('command', r'(.*)')
@@ -41,7 +48,7 @@ async def bot_run_code(message: Message, alias: str, command: str, state=None):
         await message.reply(f'```\n{res}```', parse_mode=ParseMode.MARKDOWN)
 
 
-@bot_action(trigger_str='meme admin toggle debug')
+@bot_action(trigger_str='sys admin toggle debug')
 async def debug_mode_toggle(message: Message, state=None):
     if settings.app_mode != 'dev':
         await message.reply('Debug mode is unavailable in production.')
@@ -54,7 +61,7 @@ async def debug_mode_toggle(message: Message, state=None):
         await message.reply('Entering debug mode')
 
 
-@bot_action(trigger_str='meme admin info')
+@bot_action(trigger_str='sys admin info')
 async def bot_info(message: Message, state):
     if settings.app_mode == 'prod':
         with open('app.info') as f:
diff --git a/src/actions/docker.py b/src/actions/docker.py
index d99fc49..a34b3ca 100644
--- a/src/actions/docker.py
+++ b/src/actions/docker.py
@@ -12,7 +12,7 @@ from src.utils.server_utils import get_server_by_alias
 from src.utils.ssh import run_ssh_command
 
 
-@bot_action(r'meme admin docker( help)?$')
+@bot_action(r'sys admin docker( help)?$')
 async def overall_help(message: Message, state=None):
     await message.reply(
         '```\n'
@@ -26,7 +26,7 @@ async def overall_help(message: Message, state=None):
     )
 
 
-@bot_action(r'meme admin docker ls',
+@bot_action(r'sys admin docker ls',
             params=[
                 BotParam('alias', r'[\w\d]+')
             ])
@@ -59,7 +59,7 @@ async def docker_ls(message: Message, alias, state=None):
         await message.reply(res, parse_mode=ParseMode.MARKDOWN)
 
 
-@bot_action(r'meme admin docker clean',
+@bot_action(r'sys admin docker clean',
             params=[
                 BotParam('alias', r'[\w\d]+')
             ])
@@ -77,7 +77,7 @@ async def docker_clean(message: Message, alias, state=None):
     )
 
 
-@bot_action(r'meme admin docker rm',
+@bot_action(r'sys admin docker rm',
             params=[
                 BotParam('alias', r'[\w\d]+'),
                 BotParam('containers', r'.*')
@@ -96,7 +96,7 @@ async def docker_rm(message: Message, alias, containers, state=None):
     )
 
 
-@bot_action(r'meme admin docker stop',
+@bot_action(r'sys admin docker stop',
             params=[
                 BotParam('alias', r'[\w\d]+'),
                 BotParam('containers', r'.*')
diff --git a/src/actions/interactive_session.py b/src/actions/interactive_session.py
index bb18489..0b69775 100644
--- a/src/actions/interactive_session.py
+++ b/src/actions/interactive_session.py
@@ -31,7 +31,7 @@ class UserStates(StatesGroup):
     interactive = State()
 
 
-@bot_action('meme admin interactive')
+@bot_action('sys admin interactive')
 async def start_interactive_mode(message: Message, state=None):
     available_servers = await fn_get_server(settings.engine, chat_id=str(message.chat.id))
     if not available_servers:
@@ -80,12 +80,12 @@ async def choose_server(message: Message, state: FSMContext):
     await message.reply(
         f'Interactive session created for {server_alias}.\n'
         f'All your messages will be treated as commands, until you send:\n'
-        f'`meme admin stop interactive`',
+        f'`sys admin stop interactive`',
         parse_mode=ParseMode.MARKDOWN,
         reply_markup=ReplyKeyboardRemove())
 
 
-@bot_action('meme admin stop interactive', filter_state='*')
+@bot_action('sys admin stop interactive', filter_state='*')
 async def exit_session(message: Message, state: FSMContext):
     if state is None:
         return
diff --git a/src/actions/permissions.py b/src/actions/permissions.py
index 2a71282..6fa0df5 100644
--- a/src/actions/permissions.py
+++ b/src/actions/permissions.py
@@ -15,7 +15,7 @@ from src.utils.server_utils import get_server_by_alias
 logger = logging.getLogger(__name__)
 
 
-@bot_action(r'meme admin permissions( help)?$')
+@bot_action(r'sys admin permissions( help)?$')
 async def permissions_help(message: Message, state=None):
     await message.reply(
         '```\n'
@@ -26,14 +26,14 @@ async def permissions_help(message: Message, state=None):
     )
 
 
-@bot_action('meme admin permissions ls')
+@bot_action('sys admin permissions ls')
 async def list_permissions(message: Message, state=None):
     permissions = '\n\n'.join([f'* {perm.name}: {perm.__doc__}' for perm in ServerPermissions])
     await message.reply(f'Available permissions levels:\n ```\n{permissions}```',
                         parse_mode=ParseMode.MARKDOWN)
 
 
-@bot_action(trigger_str=r'meme admin permissions grant',
+@bot_action(trigger_str=r'sys admin permissions grant',
             params=[
                 BotParam('server_alias', r'[\w\d]+'),
                 BotParam('permission', r'\w+')
diff --git a/src/actions/scp.py b/src/actions/scp.py
index cd0f7f9..d8d6004 100644
--- a/src/actions/scp.py
+++ b/src/actions/scp.py
@@ -20,7 +20,7 @@ class UploadingStates(StatesGroup):
     start_uploading = State()
 
 
-@bot_action(r'meme admin scp( help)?$')
+@bot_action(r'sys admin scp( help)?$')
 async def scp_help(message: Message, state=None):
     await message.reply(
         '```\n'
@@ -32,7 +32,7 @@ async def scp_help(message: Message, state=None):
     )
 
 
-@bot_action(r'meme admin scp download',
+@bot_action(r'sys admin scp download',
             params=[
                 BotParam('alias', r'[\w\d]+'),
                 BotParam('file_path', r'\.?[\/\w\-\d\.]+'),
@@ -47,7 +47,7 @@ async def download(message: Message, alias, file_path, user: str, state=None):
         await message.reply_document(InputFile(downloaded_file, filename=filename), file_path)
 
 
-@bot_action(r'meme admin scp upload',
+@bot_action(r'sys admin scp upload',
             params=[
                 BotParam('alias', r'[\w\d]+'),
                 BotParam('file_path', r'\.?[\/\w\-\d\.]+'),
diff --git a/src/actions/server_management.py b/src/actions/server_management.py
index 084505e..1863cd5 100644
--- a/src/actions/server_management.py
+++ b/src/actions/server_management.py
@@ -20,7 +20,7 @@ from src.utils.server_utils import get_server_by_alias
 logger = logging.getLogger(__name__)
 
 
-@bot_action(f'meme admin servers( help)?$')
+@bot_action(f'sys admin servers( help)?$')
 async def servers_help(message: Message, state=None):
     await message.reply(
         '```\n'
@@ -33,7 +33,7 @@ async def servers_help(message: Message, state=None):
     )
 
 
-@bot_action(trigger_str=r'meme admin servers add',
+@bot_action(trigger_str=r'sys admin servers add',
             params=[
                 BotParam('address', r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(\:(?P<port>\d+))?'),
                 BotParam('alias', r'[\w\d]+')
@@ -62,7 +62,7 @@ async def add_server(message: Message, address, alias, port, state=None):
                                                parse_mode=ParseMode.MARKDOWN)
 
 
-@bot_action(trigger_str=r'meme admin servers rename',
+@bot_action(trigger_str=r'sys admin servers rename',
             params=[
                 BotParam('old_alias', r'[\w\d]+'),
                 BotParam('new_alias', r'[\w\d]+')
@@ -85,7 +85,7 @@ async def rename_server(message: Message, old_alias, new_alias, state=None):
     await message.reply(f'Server {old_alias} successfully renamed to {new_alias}')
 
 
-@bot_action(trigger_str=r'meme admin servers delete',
+@bot_action(trigger_str=r'sys admin servers delete',
             params=[
                 BotParam('server_alias', r'[\w\d]+')
             ])
@@ -106,7 +106,7 @@ async def delete_server(message: Message, server_alias, state=None):
     await message.reply(f'Server `{server_alias}` deleted successfully', parse_mode=ParseMode.MARKDOWN)
 
 
-@bot_action(trigger_str='meme admin servers ls')
+@bot_action(trigger_str='sys admin servers ls')
 async def list_servers(message: Message, state=None):
     chat_servers = await fn_get_server(settings.engine,
                                        chat_id=str(message.chat.id))
diff --git a/src/actions/stats.py b/src/actions/stats.py
index 94a38b6..0af4912 100644
--- a/src/actions/stats.py
+++ b/src/actions/stats.py
@@ -13,7 +13,7 @@ from src.utils.ssh import run_ssh_command
 logger = logging.getLogger(__name__)
 
 
-@bot_action(r'meme admin stats( help)?$')
+@bot_action(r'sys admin stats( help)?$')
 async def overall_help(message: Message, state=None):
     await message.reply(
         '```\n'
@@ -25,7 +25,7 @@ async def overall_help(message: Message, state=None):
     )
 
 
-@bot_action(r'meme admin stats cpu',
+@bot_action(r'sys admin stats cpu',
             params=[
                 BotParam('alias', r'[\w\d]+')
             ])
@@ -63,7 +63,7 @@ async def cpu_usage(message: Message, alias: str, state=None):
     )
 
 
-@bot_action(r'meme admin stats ram',
+@bot_action(r'sys admin stats ram',
             params=[
                 BotParam('alias', r'[\w\d]+')
             ])
@@ -95,7 +95,7 @@ async def ram_usage(message: Message, alias: str, state=None):
     )
 
 
-@bot_action(r'meme admin stats mem',
+@bot_action(r'sys admin stats mem',
             params=[
                 BotParam('alias', r'[\w\d]+')
             ])
diff --git a/src/actions/systemctl.py b/src/actions/systemctl.py
index 14dc904..d13c537 100644
--- a/src/actions/systemctl.py
+++ b/src/actions/systemctl.py
@@ -15,7 +15,7 @@ from src.utils.ssh import run_ssh_command
 logger = logging.getLogger(__name__)
 
 
-@bot_action(r'meme admin sys( help)?$')
+@bot_action(r'sys admin sys( help)?$')
 async def overall_help(message: Message, state=None):
     await message.reply(
         '```\n'
@@ -29,7 +29,7 @@ async def overall_help(message: Message, state=None):
     )
 
 
-@bot_action(r'meme admin sys stats',
+@bot_action(r'sys admin sys stats',
             params=[
                 BotParam('alias', r'[\w\d]+'),
                 BotParam('service', r'[\w\d]+\.service')
@@ -56,7 +56,7 @@ async def status(message: Message, alias, service, state):
     await message.reply(res_message, parse_mode=ParseMode.MARKDOWN)
 
 
-@bot_action(r'meme admin sys start',
+@bot_action(r'sys admin sys start',
             params=[
                 BotParam('alias', r'[\w\d]+'),
                 BotParam('service', r'[\w\d]+\.service')
@@ -69,7 +69,7 @@ async def start(message: Message, alias, service, state):
     await message.reply("Service started")
 
 
-@bot_action(r'meme admin sys stop',
+@bot_action(r'sys admin sys stop',
             params=[
                 BotParam('alias', r'[\w\d]+'),
                 BotParam('service', r'[\w\d]+\.service')
@@ -82,7 +82,7 @@ async def stop(message: Message, alias, service, state):
     await message.reply("Service stopped")
 
 
-@bot_action(r'meme admin sys restart',
+@bot_action(r'sys admin sys restart',
             params=[
                 BotParam('alias', r'[\w\d]+'),
                 BotParam('service', r'[\w\d]+\.service')
@@ -95,7 +95,7 @@ async def restart(message: Message, alias, service, state):
     await message.reply("Service restarted")
 
 
-@bot_action(r'meme admin sys cat',
+@bot_action(r'sys admin sys cat',
             params=[
                 BotParam('alias', r'[\w\d]+'),
                 BotParam('service', r'[\w\d]+\.service')
diff --git a/src/utils/debug_mode.py b/src/utils/debug_mode.py
index 8855a36..979b965 100644
--- a/src/utils/debug_mode.py
+++ b/src/utils/debug_mode.py
@@ -11,7 +11,7 @@ async def debug_message(message: Message, text: str):
     """
     Show to users in chat some useful debug info
     if debug mode is on.
-    To toggle debug mode just call `meme admin toggle debug`
+    To toggle debug mode just call `sys admin toggle debug`
 
     :param message:
     :param text:
-- 
GitLab