mirror of
https://github.com/bsedin/matrix-webhook.git
synced 2026-04-09 11:25:40 +00:00
Merge pull request #67 from ananace/access-token
Add support for using predefined access tokens
This commit is contained in:
@@ -6,6 +6,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
- Add support for using predefined access tokens
|
||||||
|
in [#67](https://github.com/nim65s/matrix-webhook/pull/67)
|
||||||
|
by [@ananace](https://github.com/ananace)
|
||||||
|
|
||||||
## [v3.6.0] - 2023-03-07
|
## [v3.6.0] - 2023-03-07
|
||||||
|
|
||||||
- update docker to python 3.11
|
- update docker to python 3.11
|
||||||
|
|||||||
@@ -35,12 +35,11 @@ docker run --rm -it nim65s/matrix-webhook -h
|
|||||||
```
|
```
|
||||||
|
|
||||||
```
|
```
|
||||||
usage: python -m matrix_webhook [-h] [-H HOST] [-P PORT] [-u MATRIX_URL] -i MATRIX_ID -p MATRIX_PW -k API_KEY [-v]
|
usage: python -m matrix_webhook [-h] [-H HOST] [-P PORT] [-u MATRIX_URL] -i MATRIX_ID (-p MATRIX_PW | -t MATRIX_TOKEN) -k API_KEY [-v]
|
||||||
|
|
||||||
Configuration for Matrix Webhook.
|
Configuration for Matrix Webhook.
|
||||||
|
|
||||||
|
options:
|
||||||
optional arguments:
|
|
||||||
-h, --help show this help message and exit
|
-h, --help show this help message and exit
|
||||||
-H HOST, --host HOST host to listen to. Default: `''`. Environment variable: `HOST`
|
-H HOST, --host HOST host to listen to. Default: `''`. Environment variable: `HOST`
|
||||||
-P PORT, --port PORT port to listed to. Default: 4785. Environment variable: `PORT`
|
-P PORT, --port PORT port to listed to. Default: 4785. Environment variable: `PORT`
|
||||||
@@ -49,7 +48,9 @@ optional arguments:
|
|||||||
-i MATRIX_ID, --matrix-id MATRIX_ID
|
-i MATRIX_ID, --matrix-id MATRIX_ID
|
||||||
matrix user-id. Required. Environment variable: `MATRIX_ID`
|
matrix user-id. Required. Environment variable: `MATRIX_ID`
|
||||||
-p MATRIX_PW, --matrix-pw MATRIX_PW
|
-p MATRIX_PW, --matrix-pw MATRIX_PW
|
||||||
matrix password. Required. Environment variable: `MATRIX_PW`
|
matrix password. Either this or token required. Environment variable: `MATRIX_PW`
|
||||||
|
-t MATRIX_TOKEN, --matrix-token MATRIX_TOKEN
|
||||||
|
matrix access token. Either this or password required. Environment variable: `MATRIX_TOKEN`
|
||||||
-k API_KEY, --api-key API_KEY
|
-k API_KEY, --api-key API_KEY
|
||||||
shared secret to use this service. Required. Environment variable: `API_KEY`
|
shared secret to use this service. Required. Environment variable: `API_KEY`
|
||||||
-v, --verbose increment verbosity level
|
-v, --verbose increment verbosity level
|
||||||
|
|||||||
@@ -17,8 +17,12 @@ async def main(event):
|
|||||||
|
|
||||||
matrix client login & start web server
|
matrix client login & start web server
|
||||||
"""
|
"""
|
||||||
|
if conf.MATRIX_PW:
|
||||||
LOGGER.info(f"Log in {conf.MATRIX_ID=} on {conf.MATRIX_URL=}")
|
LOGGER.info(f"Log in {conf.MATRIX_ID=} on {conf.MATRIX_URL=}")
|
||||||
await utils.CLIENT.login(conf.MATRIX_PW)
|
await utils.CLIENT.login(conf.MATRIX_PW)
|
||||||
|
else:
|
||||||
|
LOGGER.info(f"Restoring log in {conf.MATRIX_ID=} on {conf.MATRIX_URL=}")
|
||||||
|
utils.CLIENT.access_token = conf.MATRIX_TOKEN
|
||||||
|
|
||||||
server = web.Server(handler.matrix_webhook)
|
server = web.Server(handler.matrix_webhook)
|
||||||
runner = web.ServerRunner(server)
|
runner = web.ServerRunner(server)
|
||||||
|
|||||||
@@ -33,15 +33,22 @@ parser.add_argument(
|
|||||||
else {"required": True}
|
else {"required": True}
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
auth = parser.add_mutually_exclusive_group(
|
||||||
|
required=all(v not in os.environ for v in ["MATRIX_PW", "MATRIX_TOKEN"])
|
||||||
|
)
|
||||||
|
auth.add_argument(
|
||||||
"-p",
|
"-p",
|
||||||
"--matrix-pw",
|
"--matrix-pw",
|
||||||
help="matrix password. Required. Environment variable: `MATRIX_PW`",
|
help="matrix password. Either this or token required. "
|
||||||
**(
|
"Environment variable: `MATRIX_PW`",
|
||||||
{"default": os.environ["MATRIX_PW"]}
|
**({"default": os.environ["MATRIX_PW"]} if "MATRIX_PW" in os.environ else {}),
|
||||||
if "MATRIX_PW" in os.environ
|
)
|
||||||
else {"required": True}
|
auth.add_argument(
|
||||||
),
|
"-t",
|
||||||
|
"--matrix-token",
|
||||||
|
help="matrix access token. Either this or password required. "
|
||||||
|
"Environment variable: `MATRIX_TOKEN`",
|
||||||
|
**({"default": os.environ["MATRIX_TOKEN"]} if "MATRIX_TOKEN" in os.environ else {}),
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"-k",
|
"-k",
|
||||||
@@ -63,5 +70,6 @@ SERVER_ADDRESS = (args.host, args.port)
|
|||||||
MATRIX_URL = args.matrix_url
|
MATRIX_URL = args.matrix_url
|
||||||
MATRIX_ID = args.matrix_id
|
MATRIX_ID = args.matrix_id
|
||||||
MATRIX_PW = args.matrix_pw
|
MATRIX_PW = args.matrix_pw
|
||||||
|
MATRIX_TOKEN = args.matrix_token
|
||||||
API_KEY = args.api_key
|
API_KEY = args.api_key
|
||||||
VERBOSE = args.verbose
|
VERBOSE = args.verbose
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ async def join_room(room_id):
|
|||||||
if isinstance(resp, JoinError):
|
if isinstance(resp, JoinError):
|
||||||
if resp.status_code == "M_UNKNOWN_TOKEN":
|
if resp.status_code == "M_UNKNOWN_TOKEN":
|
||||||
LOGGER.warning("Reconnecting")
|
LOGGER.warning("Reconnecting")
|
||||||
|
if conf.MATRIX_PW:
|
||||||
await CLIENT.login(conf.MATRIX_PW)
|
await CLIENT.login(conf.MATRIX_PW)
|
||||||
else:
|
else:
|
||||||
return create_json_response(error_map(resp), resp.message)
|
return create_json_response(error_map(resp), resp.message)
|
||||||
@@ -67,6 +68,7 @@ async def send_room_message(room_id, content):
|
|||||||
if isinstance(resp, RoomSendError):
|
if isinstance(resp, RoomSendError):
|
||||||
if resp.status_code == "M_UNKNOWN_TOKEN":
|
if resp.status_code == "M_UNKNOWN_TOKEN":
|
||||||
LOGGER.warning("Reconnecting")
|
LOGGER.warning("Reconnecting")
|
||||||
|
if conf.MATRIX_PW:
|
||||||
await CLIENT.login(conf.MATRIX_PW)
|
await CLIENT.login(conf.MATRIX_PW)
|
||||||
else:
|
else:
|
||||||
return create_json_response(error_map(resp), resp.message)
|
return create_json_response(error_map(resp), resp.message)
|
||||||
|
|||||||
Reference in New Issue
Block a user