diff --git a/internal/policies/chromium/generator.go b/internal/policies/chromium/generator.go index dd15f48..15e067d 100644 --- a/internal/policies/chromium/generator.go +++ b/internal/policies/chromium/generator.go @@ -46,7 +46,14 @@ func Generate(policies types.BrowserPolicyContent) (string, error) { policiesTmpl["ExtensionInstallForcelist"] = ExtensionInstallForcelist policiesTmpl["ExtensionInstallAllowlist"] = ExtensionInstallAllowlist - policiesTmpl["ExtensionInstallBlocklist"] = []interface{}{"*"} + + if policies.InstallExtensions { + // Allow installation of extensions + policiesTmpl["ExtensionInstallBlocklist"] = []interface{}{} + } else { + // Disallow installation of extensions + policiesTmpl["ExtensionInstallBlocklist"] = []interface{}{"*"} + } // // Developer Tools diff --git a/internal/policies/chromium/parser.go b/internal/policies/chromium/parser.go index 76adc4d..a1cd0ef 100644 --- a/internal/policies/chromium/parser.go +++ b/internal/policies/chromium/parser.go @@ -35,6 +35,14 @@ func Parse(policiesJson string) (*types.BrowserPolicyContent, error) { } } + // + // Install Extensions + // + + if val, ok := policiesTmpl["ExtensionInstallBlocklist"]; ok { + policies.InstallExtensions = len(val.([]interface{})) == 0 + } + // // Developer Tools // diff --git a/internal/policies/firefox/generator.go b/internal/policies/firefox/generator.go index 02bed06..28e9f2d 100644 --- a/internal/policies/firefox/generator.go +++ b/internal/policies/firefox/generator.go @@ -20,13 +20,22 @@ func Generate(policies types.BrowserPolicyContent) (string, error) { return "", err } + // + // Install Extensions + // + + installationMode := "blocked" + if policies.InstallExtensions { + installationMode = "allowed" + } + // // Extensions // ExtensionSettings := map[string]interface{}{} ExtensionSettings["*"] = map[string]interface{}{ - "installation_mode": "blocked", + "installation_mode": installationMode, } for _, e := range policies.Extensions { diff --git a/internal/policies/firefox/parser.go b/internal/policies/firefox/parser.go index a950764..43a036d 100644 --- a/internal/policies/firefox/parser.go +++ b/internal/policies/firefox/parser.go @@ -32,6 +32,13 @@ func Parse(policiesJson string) (*types.BrowserPolicyContent, error) { policies.Extensions = []types.BrowserPolicyExtension{} for id, val := range extensions.(map[string]interface{}) { if id == "*" { + // + // Install Extensions + // + + if val, ok := val.(map[string]interface{})["installation_mode"]; ok { + policies.InstallExtensions = val.(string) == "allowed" + } continue }