From d992ab993c319074a9c67782bcd03011a73397f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20=C5=A0ediv=C3=BD?= Date: Fri, 14 Apr 2023 23:21:32 +0200 Subject: [PATCH] wip: add install extensions to policy. --- internal/policies/chromium/generator.go | 9 ++++++++- internal/policies/chromium/parser.go | 8 ++++++++ internal/policies/firefox/generator.go | 11 ++++++++++- internal/policies/firefox/parser.go | 7 +++++++ 4 files changed, 33 insertions(+), 2 deletions(-) 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 }