fixed authorization issue
This commit is contained in:
parent
1b52ceb881
commit
e52703fe44
1 changed files with 36 additions and 31 deletions
|
|
@ -32,7 +32,7 @@ except FileNotFoundError:
|
|||
|
||||
# Load the authorized users
|
||||
try:
|
||||
authorized_users = [line.strip() for line in open(auth_users_path, 'r').readlines()]
|
||||
authorized_users = [str(line.strip()) for line in open(auth_users_path, 'r').readlines()]
|
||||
except FileNotFoundError:
|
||||
logging.error('Authorized users file not found. Exiting...')
|
||||
exit(1)
|
||||
|
|
@ -72,7 +72,7 @@ def get_service_status(service):
|
|||
subprocess.run(['sudo', 'systemctl', 'is-active', '--quiet', service], check=True)
|
||||
return f'{service} is active'
|
||||
except subprocess.CalledProcessError:
|
||||
return f'{service} is inactive'
|
||||
return f'{service} is inactive/not present'
|
||||
|
||||
# Function to ping a Tailscale node
|
||||
def ping_node(node, hostname):
|
||||
|
|
@ -150,40 +150,45 @@ def reboot():
|
|||
logging.info('Rebooting system...')
|
||||
subprocess.run(['sudo', 'reboot'], check=True)
|
||||
|
||||
# Populate teh variables on first start
|
||||
get_system_info()
|
||||
|
||||
# Message handlers
|
||||
@bot.message_handler(commands=['start', 'help', 'status', 'restart', 'reboot', 'ping'])
|
||||
def handle(message):
|
||||
user_id = str(message.from_user.id)
|
||||
if message.text == '/start':
|
||||
bot.reply_to(message, 'lainmonitor v1.0 --- standing by...')
|
||||
elif message.text == '/help':
|
||||
bot.reply_to(message, 'commands: /start, /help, /status, /restart, /reboot, /ping')
|
||||
bot.reply_to(message, 'commands: /start, /help, /status, /restart, /reboot, /ping')
|
||||
elif message.text == '/status':
|
||||
get_system_info()
|
||||
status_message = (
|
||||
f'hostname: {hostname}\n'
|
||||
f'system status: {status}\n'
|
||||
f'uptime: {uptime}\n'
|
||||
f'zerotier: {zerotier}\n'
|
||||
f'prosody: {prosody}\n'
|
||||
f'postgres: {postgres}\n'
|
||||
f'tailscale: {tailscale}\n'
|
||||
f'nginx: {nginx}'
|
||||
)
|
||||
bot.reply_to(message, status_message)
|
||||
bot.reply_to(message, f'Filesystem info for {hostname}:\n\n{disk}')
|
||||
elif message.text == f'/restart {hostname}' and user_id in authorized_users:
|
||||
bot.send_message(message.chat.id, 'Select a service to restart:', reply_markup=restart_menu())
|
||||
elif message.text == f'/reboot {hostname}' and user_id in authorized_users:
|
||||
bot.reply_to(message, f'Rebooting {hostname}...')
|
||||
reboot()
|
||||
elif message.text == '/ping' and user_id in authorized_users:
|
||||
reach = check_tailscale_nodes()
|
||||
bot.reply_to(message, f'Ping status:\n\n{"\n".join(reach)}')
|
||||
else:
|
||||
if user_id not in authorized_users:
|
||||
bot.reply_to(message, 'You are not authorized for this action')
|
||||
|
||||
else:
|
||||
if message.text == '/start':
|
||||
bot.reply_to(message, 'lainmonitor v1.0 --- standing by...')
|
||||
elif message.text == '/help':
|
||||
bot.reply_to(message, 'commands: /start, /help, /status, /restart, /reboot, /ping')
|
||||
bot.reply_to(message, 'commands: /start, /help, /status, /restart, /reboot, /ping')
|
||||
elif message.text == '/status':
|
||||
get_system_info()
|
||||
status_message = (
|
||||
f'hostname: {hostname}\n'
|
||||
f'system status: {status}\n'
|
||||
f'uptime: {uptime}\n'
|
||||
f'zerotier: {zerotier}\n'
|
||||
f'prosody: {prosody}\n'
|
||||
f'postgres: {postgres}\n'
|
||||
f'tailscale: {tailscale}\n'
|
||||
f'nginx: {nginx}'
|
||||
)
|
||||
bot.reply_to(message, status_message)
|
||||
bot.reply_to(message, f'Filesystem info for {hostname}:\n\n{disk}')
|
||||
elif message.text == f'/restart {hostname}':
|
||||
bot.send_message(message.chat.id, 'Select a service to restart:', reply_markup=restart_menu())
|
||||
elif message.text == f'/reboot {hostname}':
|
||||
bot.reply_to(message, f'Rebooting {hostname}...')
|
||||
reboot()
|
||||
elif message.text == '/ping':
|
||||
reach = check_tailscale_nodes()
|
||||
bot.reply_to(message, f'Ping status:\n\n{"\n".join(reach)}')
|
||||
else:
|
||||
pass
|
||||
# Polling with timeout and error handling
|
||||
try:
|
||||
bot.polling(none_stop=True, timeout=60, long_polling_timeout=60)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue