mirror of
https://github.com/UNITRONIX/BetterDesk.git
synced 2026-09-10 17:45:42 +00:00
898fcf7b88
Store unattended presets AES-256-GCM in org_peer_credentials (main DB), admin Set/Clear in Organizations Address Book, runtime inject into GET /api/ab and Web Remote connect-password auto-fill. Secrets never persist in shared AB JSON. Refs #367 Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
34 lines
692 B
Go
34 lines
692 B
Go
package api
|
|
|
|
import (
|
|
"encoding/json"
|
|
)
|
|
|
|
// stripSecretsFromOrgAddressBook removes password/hash fields before persisting
|
|
// org shared AB JSON so secrets stay only in org_peer_credentials (#367).
|
|
func stripSecretsFromOrgAddressBook(data string) string {
|
|
ab := parseAddressBookMap(data)
|
|
peers := toPeerSlice(ab["peers"])
|
|
changed := false
|
|
for i, p := range peers {
|
|
if _, ok := p["password"]; ok {
|
|
delete(p, "password")
|
|
changed = true
|
|
}
|
|
if _, ok := p["hash"]; ok {
|
|
delete(p, "hash")
|
|
changed = true
|
|
}
|
|
peers[i] = p
|
|
}
|
|
if !changed {
|
|
return data
|
|
}
|
|
ab["peers"] = peersToAny(peers)
|
|
out, err := json.Marshal(ab)
|
|
if err != nil {
|
|
return data
|
|
}
|
|
return string(out)
|
|
}
|