fix: admin-room fallback for matrix password reset when Synapse API absent
tuwunel 1.6.x does not implement the Synapse admin REST API. reset_user_password() now falls back to the Matrix admin room (#admins:<server>) when PUT /_synapse/admin/v2/users returns 404: 1. Discover admin room ID via #admins:<server> alias 2. Get current messages end-token (pagination anchor) 3. Send 'reset-password @<localpart>:<server>' as @hive admin user 4. Poll for bot response up to 5 x 1s; extract password from message 5. Persist the new password and return it The function signature changes from Result<()> to Result<String> so the caller can use the effective password (which may be server-generated on the admin-room path) for subsequent login calls. Closes #1267.
This commit is contained in:
parent
7e229889a6
commit
b2913bc656
2 changed files with 229 additions and 22 deletions
|
|
@ -495,6 +495,7 @@ async fn matrix_reset_password(name: &str) -> Result<()> {
|
|||
)
|
||||
.await
|
||||
.with_context(|| format!("matrix reset-password {name}"))?;
|
||||
// Password is persisted by reset_user_password (including admin-room path).
|
||||
let pw_path = PathBuf::from("/var/lib/hyperhive/matrix-creds").join(format!("{name}-password"));
|
||||
println!("matrix: password for @{name}:{server_name} reset");
|
||||
println!("password persisted at: {}", pw_path.display());
|
||||
|
|
|
|||
Loading…
Reference in a new issue