daef7ea190
Helper functions (matrix-mas capability group): - mas_client_register_bash_infra: register/sync OAuth clients via mas-cli - mas_syn2mas_migration_bash_infra: dry-run + apply user migration to MAS - synapse_msc3861_enable_go_infra: edit homeserver.yaml MSC3861 block (with diff) - wellknown_oidc_patch_go_infra: patch well-known JSON with msc2965.authentication - synapse_login_flows_check_go_infra: health-check post-migration login flows Flows + issues for custom Matrix clients (PC + Android): - 0010 matrix-client-pc: Wails + React+Mantine (issues 0147-0153) - 0011 matrix-client-android: Kotlin + Compose (issues 0154-0161) - 0162 enable MAS as auth provider (Synapse delegate) — EXECUTED on VPS - 0163 custom admin panel propio (sustituye synapse-admin) Production state (organic-machine.com): - Synapse migrated SQLite -> Postgres - MSC3861 active, password_config disabled - 21 users + 41 access_tokens migrated via syn2mas - 4 MAS clients registered (element, matrix_pc, matrix_android, admin_panel) - synapse-admin container removed + Coolify route deleted - well-known patched with org.matrix.msc2965.authentication Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.8 KiB
3.8 KiB
name, kind, lang, domain, version, purity, signature, description, tags, params, output, uses_functions, uses_types, returns, returns_optional, error_type, imports, tested, tests, test_file_path, file_path
| name | kind | lang | domain | version | purity | signature | description | tags | params | output | uses_functions | uses_types | returns | returns_optional | error_type | imports | tested | tests | test_file_path | file_path | ||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| synapse_msc3861_enable | function | go | infra | 0.1.0 | impure | func SynapseMsc3861Enable(cfg SynapseMsc3861Config) (SynapseMsc3861Result, error) | Edita homeserver.yaml de Synapse activando el bloque matrix_authentication_service (MSC3861/MAS), asegura experimental_features.msc3861.enabled=true y password_config.enabled=false. Preserva comentarios con yaml.v3 Node API. Hace backup automático previo y devuelve diff unified. |
|
|
SynapseMsc3861Result con BackupPath (vacío si DryRun), LinesAdded, LinesRemoved y Diff (unified diff string) |
|
false | error_go_core |
|
true |
|
functions/infra/synapse_msc3861_enable_test.go | functions/infra/synapse_msc3861_enable.go |
Ejemplo
cfg := SynapseMsc3861Config{
HomeserverYamlPath: "/tmp/synapse_data/homeserver.yaml",
MasEndpoint: "http://mas:8080/",
MasSecret: "5506f8b2f3fbb50413244e7197599e26477b179ec4917787f352d090fb7c7eb2",
BackupDir: "/tmp/synapse_backups",
DryRun: true,
}
res, err := SynapseMsc3861Enable(cfg)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Diff:\n%s\n", res.Diff)
fmt.Printf("Lines added: %d, removed: %d\n", res.LinesAdded, res.LinesRemoved)
// Para aplicar los cambios: DryRun: false
// res.BackupPath contiene la ruta del backup creado.
Cuando usarla
Paso 3 de la migración 0162 (Synapse → MAS auth provider): después de copiar homeserver.yaml del VPS a disco local con scp, antes de copiarlo de vuelta con scp y hacer systemctl restart matrix-synapse. Usar DryRun: true primero para revisar el diff antes de escribir.
Gotchas
- yaml.v3 Node API obligatorio: el YAML de Synapse contiene comentarios críticos de configuración. Usar
yaml.Unmarshalplano los elimina. Esta función usa la API de nodos para la secciónexperimental_featuresy edición line-level para los bloquesmatrix_authentication_serviceypassword_config. - MasSecret debe ser exacto: debe coincidir byte a byte con
mas/config.yaml::matrix.secret. Un carácter diferente hace que Synapse rechace todas las peticiones MAS con 401. - Nunca editar in-place en el VPS activo: editar el archivo mientras Synapse lo lee puede producir YAML corrupto en memoria. El flujo correcto es:
scp vps:/etc/matrix-synapse/homeserver.yaml /tmp/→SynapseMsc3861Enable(DryRun: false)→scp /tmp/homeserver.yaml vps:/etc/matrix-synapse/→systemctl restart matrix-synapse. - MasSecret formato: exactamente 64 caracteres hexadecimales en minúsculas (32 bytes). La validación rechaza mayúsculas y longitudes incorrectas.
- Idempotencia: aplicar la función dos veces sobre el mismo archivo produce el mismo resultado final (el segundo pase actualiza valores ya existentes).