feat(browser): apply_chromium_extension_policy soporta --keep id=update_url
Permite force-instalar extensiones self-hosted bajo managed policy indicando un update_url propio (p.ej. file:// a un update.xml local que apunta a un .crx). Necesario para cargar extensiones propias (como la de captura de web_proxy) cuando hay una managed policy activa y --load-extension queda desactivado en Chromium 137+. Forma simple '<id>' sigue usando el update_url por defecto.
This commit is contained in:
@@ -5,7 +5,7 @@ lang: bash
|
|||||||
domain: browser
|
domain: browser
|
||||||
version: "1.1.0"
|
version: "1.1.0"
|
||||||
purity: impure
|
purity: impure
|
||||||
signature: "apply_chromium_extension_policy [--keep <ext_id>]... [--block <ext_id>]... [--policy-path <path>] [--update-url <url>] [--dry-run]"
|
signature: "apply_chromium_extension_policy [--keep <ext_id[=update_url]>]... [--block <ext_id>]... [--policy-path <path>] [--update-url <url>] [--dry-run]"
|
||||||
description: "Escribe de forma idempotente la política managed de Chromium combinando ExtensionInstallForcelist (force-instala la whitelist --keep) y ExtensionInstallBlocklist (bloquea y desinstala la blocklist --block). No usa el comodín \"*\" blocked, por lo que NO afecta a las extensiones unpacked cargadas con --load-extension. Guarda backup fuera del directorio managed/ (que Chromium lee entero). Requiere sudo para escribir en /etc; en --dry-run no toca el sistema."
|
description: "Escribe de forma idempotente la política managed de Chromium combinando ExtensionInstallForcelist (force-instala la whitelist --keep) y ExtensionInstallBlocklist (bloquea y desinstala la blocklist --block). No usa el comodín \"*\" blocked, por lo que NO afecta a las extensiones unpacked cargadas con --load-extension. Guarda backup fuera del directorio managed/ (que Chromium lee entero). Requiere sudo para escribir en /etc; en --dry-run no toca el sistema."
|
||||||
tags: [chromium, extensions, policy, browser, navegator, managed-policy, idempotent]
|
tags: [chromium, extensions, policy, browser, navegator, managed-policy, idempotent]
|
||||||
uses_functions: []
|
uses_functions: []
|
||||||
@@ -15,8 +15,8 @@ returns_optional: false
|
|||||||
error_type: "error_go_core"
|
error_type: "error_go_core"
|
||||||
imports: []
|
imports: []
|
||||||
params:
|
params:
|
||||||
- name: "--keep <ext_id>"
|
- name: "--keep <ext_id[=update_url]>"
|
||||||
desc: "ID de extensión de Chrome Web Store a force-instalar (repetible). Va a ExtensionInstallForcelist. Ejemplo: ddkjiahejlhfcafbddmgiahcphecmpfh (uBlock Origin Lite)."
|
desc: "ID de extensión a force-instalar (repetible). Va a ExtensionInstallForcelist. Forma simple '<id>' usa el update_url por defecto (Web Store). Forma '<id>=<update_url>' fuerza una extensión self-hosted: por ejemplo '<id>=file:///home/u/.web_proxy/update.xml' instala un .crx local empaquetado bajo managed policy (necesario porque --load-extension queda desactivado cuando hay managed policy). Ejemplo Web Store: ddkjiahejlhfcafbddmgiahcphecmpfh (uBlock Origin Lite)."
|
||||||
- name: "--block <ext_id>"
|
- name: "--block <ext_id>"
|
||||||
desc: "ID de extensión a bloquear y desinstalar en cualquier perfil (repetible). Va a ExtensionInstallBlocklist. Solo afecta a los IDs listados; el resto de extensiones no se toca."
|
desc: "ID de extensión a bloquear y desinstalar en cualquier perfil (repetible). Va a ExtensionInstallBlocklist. Solo afecta a los IDs listados; el resto de extensiones no se toca."
|
||||||
- name: "--policy-path <path>"
|
- name: "--policy-path <path>"
|
||||||
@@ -85,5 +85,6 @@ sudo. `--keep` fuerza y fija las imprescindibles; `--block` elimina las molestas
|
|||||||
|
|
||||||
## Capability growth log
|
## Capability growth log
|
||||||
|
|
||||||
|
- v1.2.0 (2026-06-05) — `--keep` acepta `<id>=<update_url>` para force-instalar extensiones self-hosted (p.ej. un `.crx` local vía `file://` a un `update.xml`), que es la forma de cargar una extensión propia cuando hay managed policy y `--load-extension` está desactivado.
|
||||||
- v1.1.0 (2026-06-05) — añade `--block` (ExtensionInstallBlocklist); reemplaza el modo `ExtensionSettings "*": blocked` (rompía extensiones unpacked) por blocklist específica; mueve los backups fuera de `managed/` (Chromium lee todo el directorio y un `.bak` ahí reinyectaba extensiones).
|
- v1.1.0 (2026-06-05) — añade `--block` (ExtensionInstallBlocklist); reemplaza el modo `ExtensionSettings "*": blocked` (rompía extensiones unpacked) por blocklist específica; mueve los backups fuera de `managed/` (Chromium lee todo el directorio y un `.bak` ahí reinyectaba extensiones).
|
||||||
- v1.0.0 (2026-06-05) — baseline: ExtensionInstallForcelist con whitelist `--keep`.
|
- v1.0.0 (2026-06-05) — baseline: ExtensionInstallForcelist con whitelist `--keep`.
|
||||||
|
|||||||
@@ -73,9 +73,13 @@ apply_chromium_extension_policy() {
|
|||||||
local forcelist_json="[]" blocklist_json="[]"
|
local forcelist_json="[]" blocklist_json="[]"
|
||||||
if [[ ${#keep_ids[@]} -gt 0 ]]; then
|
if [[ ${#keep_ids[@]} -gt 0 ]]; then
|
||||||
local entries="" first=1
|
local entries="" first=1
|
||||||
for id in "${keep_ids[@]}"; do
|
for kid in "${keep_ids[@]}"; do
|
||||||
|
# Cada --keep puede ser "<id>" (usa el update_url por defecto, Web Store) o
|
||||||
|
# "<id>=<update_url>" para una extensión self-hosted (p.ej. file:// a un update.xml local).
|
||||||
|
local id="${kid%%=*}" url="$update_url"
|
||||||
|
[[ "$kid" == *=* ]] && url="${kid#*=}"
|
||||||
[[ $first -eq 0 ]] && entries+=","$'\n'
|
[[ $first -eq 0 ]] && entries+=","$'\n'
|
||||||
entries+=" \"${id};${update_url}\""
|
entries+=" \"${id};${url}\""
|
||||||
first=0
|
first=0
|
||||||
done
|
done
|
||||||
forcelist_json=$(printf '[\n%s\n ]' "$entries")
|
forcelist_json=$(printf '[\n%s\n ]' "$entries")
|
||||||
|
|||||||
Reference in New Issue
Block a user