62 lines
1.5 KiB
Python
62 lines
1.5 KiB
Python
|
|
||
|
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/<string:powerbar>/<int:outlet>/<string:action>')
|
||
|
|
||
|
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"
|
||
|
|