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