79 lines
2.6 KiB
Python
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") |