Files
neko-rooms/internal/policies/firefox/generator.go
T
Miroslav Šedivý a6169da135 interface{} to any.
2023-11-25 22:54:35 +01:00

74 lines
1.6 KiB
Go

package firefox
// https://github.com/mozilla/policy-templates/blob/master/README.md#homepage
import (
_ "embed"
"encoding/json"
"github.com/m1k1o/neko-rooms/internal/types"
)
//go:embed policies.json
var policiesJson string
func Generate(policies types.BrowserPolicyContent) (string, error) {
policiesTmpl := struct {
Policies map[string]any `json:"policies"`
}{}
if err := json.Unmarshal([]byte(policiesJson), &policiesTmpl); err != nil {
return "", err
}
//
// Extensions
//
ExtensionSettings := map[string]any{}
ExtensionSettings["*"] = map[string]any{
"installation_mode": "blocked",
}
for _, e := range policies.Extensions {
ExtensionSettings[e.ID] = map[string]any{
"install_url": e.URL,
"installation_mode": "force_installed",
}
}
policiesTmpl.Policies["ExtensionSettings"] = ExtensionSettings
//
// Developer Tools
//
policiesTmpl.Policies["DisableDeveloperTools"] = !policies.DeveloperTools
//
// Persistent Data
//
Preferences := policiesTmpl.Policies["Preferences"].(map[string]any)
Preferences["browser.urlbar.suggest.history"] = policies.PersistentData
Preferences["places.history.enabled"] = policies.PersistentData
policiesTmpl.Policies["Preferences"] = Preferences
policiesTmpl.Policies["SanitizeOnShutdown"] = !policies.PersistentData
if policies.PersistentData {
policiesTmpl.Policies["Homepage"] = map[string]any{
"StartPage": "previous-session",
}
} else {
policiesTmpl.Policies["Homepage"] = map[string]any{
"StartPage": "homepage",
}
}
data, err := json.MarshalIndent(policiesTmpl, "", " ")
if err != nil {
return "", err
}
return string(data), nil
}