From fd424375f6f8369334fe7d2285dfb37b1df633e3 Mon Sep 17 00:00:00 2001 From: Lorenz Steinert <lorenz@steinerts.de> Date: Fri, 30 Aug 2019 00:14:46 +0200 Subject: [PATCH] remove submodule --- gitlab | 1 - gitlab/__init__.py | 58 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) delete mode 160000 gitlab create mode 100644 gitlab/__init__.py diff --git a/gitlab b/gitlab deleted file mode 160000 index 5643b7a..0000000 --- a/gitlab +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5643b7a5ec9b514603b4e7ba173607f7c0b4defd diff --git a/gitlab/__init__.py b/gitlab/__init__.py new file mode 100644 index 0000000..cc044c5 --- /dev/null +++ b/gitlab/__init__.py @@ -0,0 +1,58 @@ +from typing import Type + +from aiohttp import web + +from mautrix.types import EventType + +from mautrix.util.config import BaseProxyConfig, ConfigUpdateHelper + +from maubot import Plugin, MessageEvent + +from maubot.handlers import event + + +class Config(BaseProxyConfig): + def do_update(self, helper: ConfigUpdateHelper) -> None: + helper.copy("path") + helper.copy("port") + helper.copy("secret") + helper.copy("base_command") + + +class Gitlab(Plugin): + + routes = web.RouteTableDef() + + async def post_handler(self, request): + if not request.headers['X-Gitlab-Token'] == self.config['secret']: + self.log.warn('unauthorised access') + return web.Response() + self.log.debug(str(request)) + self.log.debug(str(request.query['room'])) + await self.client.send_text(request.query['room'], str(request)) + return web.Response() + + async def start(self) -> None: + self.config.load_and_update() + + self.app = web.Application() + self.app.add_routes([web.post(self.config['path'], self.post_handler)]) + + self.runner = web.AppRunner(self.app) + await self.runner.setup() + await self.runner.setup() + site = web.TCPSite(self.runner, '0.0.0.0', self.config['port']) + await site.start() + + async def stop(self) -> None: + await self.runner.cleanup() + + @event.on(EventType.ROOM_MESSAGE) + async def handler(self, event: MessageEvent) -> None: + if event.sender != self.client.mxid: + for ii in ['path', 'port', 'secret', 'base_command']: + await self.client.send_text(event.room_id, str(self.config[ii])) + + @classmethod + def get_config_class(cls) -> Type[BaseProxyConfig]: + return Config -- GitLab