from flask import render_template, Blueprint, make_response from app.settings import powerbars from flask import abort import telnetlib routes = Blueprint('routes', __name__) def vaild_power_bar(powerbar): if powerbar in powerbars: return True else: return False def vaild_outlet (powerbar, outlet): if outlet in powerbars[powerbar]['outlets']: return True else: return False @routes.route('/') def home(): print(powerbars) return "hello world" @routes.route('/powerbar_control///') def powerbar_control(powerbar, outlet, action): if not action in ['on', 'off', 'cycle']: abort(404) if not vaild_power_bar(powerbar): abort(404) if not vaild_outlet(powerbar, outlet): abort(404) if action == 'on': # Telnet to powerbar and send command try: tn = telnetlib.Telnet(powerbars[powerbar]['host'], powerbars[powerbar]['port']) tn.write(f"on {outlet}\r\n".encode('ascii')) tn.close() except Exception as e: print(f"Telnet error: {e}") abort(500) if action == 'off': # Telnet to powerbar and send command try: tn = telnetlib.Telnet(powerbars[powerbar]['host'], powerbars[powerbar]['port']) tn.write(f"off {outlet}\r\n".encode('ascii')) tn.close() except Exception as e: print(f"Telnet error: {e}") abort(500) return "yay"