confserver revamp #88
2 changed files with 120 additions and 86 deletions
|
|
@ -47,18 +47,19 @@ class ConfServer:
|
||||||
self.app = None
|
self.app = None
|
||||||
self.site = None
|
self.site = None
|
||||||
self.runner = None
|
self.runner = None
|
||||||
|
self.excludelogging = ["base", "remove-bot", "remove-client", "restart-service"]
|
||||||
|
|
||||||
def get_milli_time(self, timetoconvert):
|
def get_milli_time(self, timetoconvert):
|
||||||
return int(round(timetoconvert * 1000))
|
return int(round(timetoconvert * 1000))
|
||||||
|
|
||||||
def confserver_app(self):
|
def confserver_app(self):
|
||||||
self.app = web.Application(loop=asyncio.get_event_loop())#, middlewares=[self.log_all_requests])
|
self.app = web.Application(loop=asyncio.get_event_loop(), middlewares=[self.log_all_requests])
|
||||||
aiohttp_jinja2.setup(self.app, loader=jinja2.FileSystemLoader(os.path.join(bumper.data_dir, "web","templates")))
|
aiohttp_jinja2.setup(self.app, loader=jinja2.FileSystemLoader(os.path.join(bumper.data_dir, "web","templates")))
|
||||||
|
|
||||||
self.app.add_routes(
|
self.app.add_routes(
|
||||||
[
|
[
|
||||||
|
|
||||||
web.get("", self.handle_base),
|
web.get("", self.handle_base, name="base"),
|
||||||
web.get("/bot/remove/{did}", self.handle_RemoveBot, name='remove-bot'),
|
web.get("/bot/remove/{did}", self.handle_RemoveBot, name='remove-bot'),
|
||||||
web.get("/client/remove/{resource}", self.handle_RemoveClient, name='remove-client'),
|
web.get("/client/remove/{resource}", self.handle_RemoveClient, name='remove-client'),
|
||||||
web.get("/restart_{service}", self.handle_RestartService, name='restart-service'),
|
web.get("/restart_{service}", self.handle_RestartService, name='restart-service'),
|
||||||
|
|
@ -241,6 +242,8 @@ class ConfServer:
|
||||||
@web.middleware
|
@web.middleware
|
||||||
async def log_all_requests(self, request, handler):
|
async def log_all_requests(self, request, handler):
|
||||||
|
|
||||||
|
if request._match_info.route.name not in self.excludelogging:
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if request.content_length:
|
if request.content_length:
|
||||||
if request.content_type == "application/x-www-form-urlencoded":
|
if request.content_type == "application/x-www-form-urlencoded":
|
||||||
|
|
@ -329,6 +332,9 @@ class ConfServer:
|
||||||
confserverlog.debug(json.dumps(requestlog))
|
confserverlog.debug(json.dumps(requestlog))
|
||||||
return e
|
return e
|
||||||
|
|
||||||
|
else:
|
||||||
|
return await handler(request)
|
||||||
|
|
||||||
async def restart_Helper(self):
|
async def restart_Helper(self):
|
||||||
|
|
||||||
await bumper.mqtt_helperbot.Client.disconnect()
|
await bumper.mqtt_helperbot.Client.disconnect()
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,9 @@ import pytest_aiohttp
|
||||||
import pytest_asyncio
|
import pytest_asyncio
|
||||||
import datetime, time
|
import datetime, time
|
||||||
from aiohttp import web
|
from aiohttp import web
|
||||||
|
import logging
|
||||||
|
from testfixtures import LogCapture
|
||||||
|
from unittest.mock import MagicMock
|
||||||
|
|
||||||
|
|
||||||
def create_confserver():
|
def create_confserver():
|
||||||
|
|
@ -37,6 +40,31 @@ async def test_confserver_ssl():
|
||||||
conf_server.confserver_app()
|
conf_server.confserver_app()
|
||||||
asyncio.create_task(conf_server.start_server())
|
asyncio.create_task(conf_server.start_server())
|
||||||
|
|
||||||
|
async def test_confserver_exceptions():
|
||||||
|
with LogCapture() as l:
|
||||||
|
|
||||||
|
conf_server = bumper.ConfServer(("127.0.0.1", 8007), usessl=True)
|
||||||
|
conf_server.confserver_app()
|
||||||
|
conf_server.site = web.TCPSite
|
||||||
|
|
||||||
|
#bind permission
|
||||||
|
conf_server.site.start = mock.Mock(side_effect=OSError(1, "error while attempting to bind on address ('127.0.0.1', 8007): permission denied"))
|
||||||
|
await conf_server.start_server()
|
||||||
|
|
||||||
|
#asyncio Cancel
|
||||||
|
conf_server.site = web.TCPSite
|
||||||
|
conf_server.site.start = mock.Mock(side_effect=asyncio.CancelledError)
|
||||||
|
await conf_server.start_server()
|
||||||
|
|
||||||
|
#general exception
|
||||||
|
conf_server.site = web.TCPSite
|
||||||
|
conf_server.site.start = mock.Mock(side_effect=Exception(1, "general"))
|
||||||
|
await conf_server.start_server()
|
||||||
|
|
||||||
|
l.check_present(
|
||||||
|
("confserver", "ERROR", "error while attempting to bind on address ('127.0.0.1', 8007): permission denied")
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
async def test_confserver_no_ssl():
|
async def test_confserver_no_ssl():
|
||||||
conf_server = bumper.ConfServer(("127.0.0.1", 111111), usessl=False)
|
conf_server = bumper.ConfServer(("127.0.0.1", 111111), usessl=False)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue