matrix-bot/src/main.py

79 lines
2.6 KiB
Python

import sys, coloredlogs, logging, os, time, asyncio
from urllib import response
from ldapHelper import LdapHelper
from matrixHelper import MatrixHelper
coloredlogs.install(level='INFO', fmt='%(asctime)s - [%(levelname)s] %(message)s')
class MlmMatrixBot:
def __init__(self) -> None:
self._config = self._readConfig()
self._ldapHelper = LdapHelper(self._config['LDAP_URI'], self._config['LDAP_BIND_DN'], self._config['LDAP_BIND_DN_PASSWORD'], self._config['LDAP_BASE_DN'])
self._matrixHelper = MatrixHelper(self._config['MATRIX_SERVER'], f"@{self._config['MATRIX_USERNAME']}:{self._config['MATRIX_DOMAIN']}", self._config['MATRIX_SPACE_ID'])
def __del__(self):
self._ldapHelper.unbind()
asyncio.run(self._matrixHelper.logout())
async def run(self):
if not self._ldapHelper.bind():
return False
print(self._ldapHelper.search("sophomorixType=project"))
if not await self._matrixHelper.login(self._config['MATRIX_PASSWORD']):
return False
room = await self._matrixHelper.createRoom("test11", "test11")
response = await self._matrixHelper._client.joined_rooms()
print(response.rooms)
print(await self._matrixHelper._client.room_invite(room.room_id, "@dozedler:makerchat.net"))
await self._matrixHelper._client.sync_forever()
pass
def _readConfig(self):
requiredConfigKeys = [
'MATRIX_BOT_LDAP_URI',
'MATRIX_BOT_LDAP_BASE_DN',
'MATRIX_BOT_LDAP_BIND_DN',
'MATRIX_BOT_LDAP_BIND_DN_PASSWORD',
'MATRIX_BOT_MATRIX_DOMAIN',
'MATRIX_BOT_MATRIX_SPACE_ID',
'MATRIX_BOT_MATRIX_SERVER',
'MATRIX_BOT_MATRIX_USERNAME',
'MATRIX_BOT_MATRIX_PASSWORD',
]
allowedConfigKeys = [
]
config = {
}
for configKey in requiredConfigKeys:
if configKey not in os.environ:
sys.exit (f"Required environment value {configKey} is not set")
config[configKey.replace('MATRIX_BOT_', '')] = os.environ[configKey]
for configKey in allowedConfigKeys:
if configKey in os.environ:
config[configKey.replace('MATRIX_BOT_', '')] = os.environ[configKey]
logging.info("CONFIG:")
for key, value in config.items():
logging.info(" * {:25}: {}".format(key, value))
return config
if __name__ == "__main__":
bot = MlmMatrixBot()
try:
asyncio.run(bot.run())
except KeyboardInterrupt:
logging.info("Bye")