mirror of
https://github.com/caronc/apprise.git
synced 2024-11-07 08:44:17 +01:00
m.login.token support for Matrix
This commit is contained in:
parent
09cd2b6de6
commit
a6d4e727e5
@ -189,9 +189,11 @@ class NotifyMatrix(NotifyBase):
|
||||
'{schema}://{token}',
|
||||
'{schema}://{user}@{token}',
|
||||
|
||||
# Disabled webhook
|
||||
# Matrix Server
|
||||
'{schema}://{user}:{password}@{host}/{targets}',
|
||||
'{schema}://{user}:{password}@{host}:{port}/{targets}',
|
||||
'{schema}://{token}@{host}/{targets}',
|
||||
'{schema}://{token}@{host}:{port}/{targets}',
|
||||
|
||||
# Webhook mode
|
||||
'{schema}://{user}:{token}@{host}/{targets}',
|
||||
@ -864,32 +866,40 @@ class NotifyMatrix(NotifyBase):
|
||||
# Login not required; silently skip-over
|
||||
return True
|
||||
|
||||
if not (self.user and self.password):
|
||||
if (self.user and self.password):
|
||||
# Prepare our Authentication Payload
|
||||
if self.version == MatrixVersion.V3:
|
||||
payload = {
|
||||
'type': 'm.login.password',
|
||||
'identifier': {
|
||||
'type': 'm.id.user',
|
||||
'user': self.user,
|
||||
},
|
||||
'password': self.password,
|
||||
}
|
||||
|
||||
else:
|
||||
payload = {
|
||||
'type': 'm.login.password',
|
||||
'user': self.user,
|
||||
'password': self.password,
|
||||
}
|
||||
|
||||
elif self.password:
|
||||
# token
|
||||
payload = {
|
||||
'type': 'm.login.token',
|
||||
'token': self.password,
|
||||
}
|
||||
|
||||
else:
|
||||
# It's not possible to register since we need these 2 values to
|
||||
# make the action possible.
|
||||
self.logger.warning(
|
||||
'Failed to login to Matrix server: '
|
||||
'user/pass combo is missing.')
|
||||
'token or user/pass combo is missing.')
|
||||
return False
|
||||
|
||||
# Prepare our Authentication Payload
|
||||
if self.version == MatrixVersion.V3:
|
||||
payload = {
|
||||
'type': 'm.login.password',
|
||||
'identifier': {
|
||||
'type': 'm.id.user',
|
||||
'user': self.user,
|
||||
},
|
||||
'password': self.password,
|
||||
}
|
||||
|
||||
else:
|
||||
payload = {
|
||||
'type': 'm.login.password',
|
||||
'user': self.user,
|
||||
'password': self.password,
|
||||
}
|
||||
|
||||
# Build our URL
|
||||
postokay, response = self._fetch('/login', payload=payload)
|
||||
if not (postokay and isinstance(response, dict)):
|
||||
@ -1442,9 +1452,10 @@ class NotifyMatrix(NotifyBase):
|
||||
safe=''),
|
||||
)
|
||||
|
||||
elif self.user:
|
||||
auth = '{user}@'.format(
|
||||
user=NotifyMatrix.quote(self.user, safe=''),
|
||||
elif self.user or self.password:
|
||||
auth = '{value}@'.format(
|
||||
value=NotifyMatrix.quote(
|
||||
self.user if self.user else self.password, safe=''),
|
||||
)
|
||||
|
||||
default_port = 443 if self.secure else 80
|
||||
@ -1522,6 +1533,11 @@ class NotifyMatrix(NotifyBase):
|
||||
if 'token' in results['qsd'] and len(results['qsd']['token']):
|
||||
results['password'] = NotifyMatrix.unquote(results['qsd']['token'])
|
||||
|
||||
elif not results['password'] and results['user']:
|
||||
# swap
|
||||
results['password'] = results['user']
|
||||
results['user'] = None
|
||||
|
||||
# Support the use of the version= or v= keyword
|
||||
if 'version' in results['qsd'] and len(results['qsd']['version']):
|
||||
results['version'] = \
|
||||
|
Loading…
Reference in New Issue
Block a user