From 1bd0f272bbdd204afea9b650ae76d38be5fe92c4 Mon Sep 17 00:00:00 2001 From: Jacob Henry Date: Fri, 14 Sep 2018 00:30:02 -0400 Subject: [PATCH] Moved admin stuff to its own file, thus priveledging reboot --- main.py | 20 +++++--------------- management_commands.py | 31 +++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 15 deletions(-) create mode 100644 management_commands.py diff --git a/main.py b/main.py index 1e42442..aff3350 100644 --- a/main.py +++ b/main.py @@ -9,6 +9,7 @@ import identifier import re import channel_util import job_nagger +import management_commands from dummy import FakeClient # Read api token from file @@ -16,11 +17,6 @@ api_file = open("apitoken.txt", 'r') SLACK_API = next(api_file).strip() api_file.close() -# Read kill switch from file -kill_switch_file = open("killswitch.txt", 'r') -kill_switch = next(kill_switch_file).strip() -kill_switch_file.close() - # Enable to use dummy DEBUG_MODE = False @@ -47,24 +43,18 @@ def main(): wrapper.add_hook(job_nagger.nag_pattern, job_nagger.nag_callback) # Add kill switch - wrapper.add_hook(kill_switch, die) + wrapper.add_hook(management_commands.reboot_pattern, management_commands.reboot_callback) # Add help - def list_hooks(slack, msg, match): - slack_util.reply(slack, msg, "\n".join(wrapper.hooks.keys())) - wrapper.add_hook("bot help", list_hooks) + help_callback = management_commands.list_hooks_callback_gen(wrapper.hooks.keys()) + wrapper.add_hook(management_commands.bot_help_pattern, help_callback) wrapper.listen() + # Callback to list command hooks -# Callback to die -def die(*args): - print("Got kill switch") - exit() - - class ClientWrapper(object): def __init__(self): # Init slack diff --git a/management_commands.py b/management_commands.py new file mode 100644 index 0000000..f969c47 --- /dev/null +++ b/management_commands.py @@ -0,0 +1,31 @@ +import identifier +import scroll_util +import slack_util +import google_api +import channel_util + +bot_help_pattern = r"bot help" + + +def list_hooks_callback_gen(hook_strings): + def callback(slack, msg, match): + slack_util.reply(slack, msg, "\n".join(hook_strings)) + + return callback + + +# Gracefully reboot to reload code changes +reboot_pattern = r"reboot" + + +def reboot_callback(slack, msg, match): + if msg["channel"] != channel_util.COMMAND_CENTER_ID: + response = channel_util.NOT_ALLOWED_HERE + reboot = False + else: + response = "Ok. Rebooting..." + reboot = True + + slack_util.reply(slack, msg, response) + if reboot: + exit(0)