sync: update from private repo (2336949a)
CI / build-and-test (push) Canceled after 0s

This commit is contained in:
oss-sync
2026-09-17 11:29:31 +00:00
parent 28f74c4e37
commit 57702b4f34
2139 changed files with 321270 additions and 17494 deletions
+77
View File
@@ -0,0 +1,77 @@
#!/usr/bin/env bash
#
# noVNC の画面で触られたくないブラウザの機能を止める管理ポリシーを入れる (issue #1148)。
#
# 入れているのは 2 つ。
#
# AllowFileSelectionDialogs=false ファイル選択の画面を出させない(下の説明)
# IncognitoModeAvailability=1 シークレット窓を開かせない
#
# シークレット窓を止める理由。**遮断が効かないからではない。**
# 実測ではこうなる。launchPersistentContext で立ち上げると、人が Ctrl+Shift+N で
# 開いたシークレット窓は既定の入れ物のページとして Playwright に見え、
# 既定の入れ物に掛けた遮断がそのまま効く(127.0.0.1 への遷移が
# ERR_BLOCKED_BY_CLIENT で断たれることを確認済み)。つまり今の Playwright では、
# このポリシーが無くても穴は開いていない。
#
# それでも止めるのは保険。「シークレット窓が既定の入れ物のページとして見える」のは
# Playwright の内部の振る舞いで、版が変われば変わりうる。変わった瞬間に
# 遮断の掛からない窓が生まれるので、その手前で開けなくしておく。
# エージェント側の入れ物づくり(browser.newContext)はこのポリシーの影響を
# 受けない(実機で確認済み)。
#
# noVNC の画面(CAPTCHA を人が解く画面)は、ブラウザの中身がそのまま人に触れる。
# ファイルを選ぶボタンを押すと OS のファイル選択画面が開き、サーバー上のファイルを
# 選んで持ち出せてしまう。Chromium 系の管理ポリシー AllowFileSelectionDialogs を
# false にすると、押しても何も起きなくなる。
#
# エージェント側は壊れない。**エージェントがブラウザへファイルを送る経路が
# そもそも無い**(src/ に filechooser も setInputFiles も 1 か所も無い。
# ui/e2e/ にあるのは UI の E2E テストが画面を操作するためのもので、
# エージェントの経路ではない)。
# 将来ファイル送信を足すときは setInputFiles(内部は CDP の
# DOM.setFileInputFiles)を使うこと。あれは選択画面を通らないので
# このポリシーの影響を受けない。
#
# 置き場所はブラウザの銘柄ごとに違う。Playwright 同梱のものは
# 「Google Chrome for Testing」なので /etc/opt/chrome_for_testing/policies/managed。
# config.yaml の browser.channel で本家 Chrome / Chromium に差し替えられるので、
# 3 か所すべてに置く。
# msedge は未対応。Edge の置き場所は裏が取れていないので、推測で足さない
# (browser.channel: msedge を選ぶと、このポリシーは効かない)。
#
# 使い方: sudo scripts/install-browser-policy.sh
set -euo pipefail
SRC="$(cd "$(dirname "$0")/.." && pwd)/deploy/browser-policy/agent-orchestrator.json"
if [ ! -f "$SRC" ]; then
echo "ERROR: ポリシーファイルが見つかりません: $SRC" >&2
exit 1
fi
SUDO=""
if [ "$(id -u)" -ne 0 ]; then
if command -v sudo > /dev/null 2>&1; then
SUDO="sudo"
else
echo "ERROR: root 権限が必要です(sudo も見つかりません)" >&2
exit 1
fi
fi
POLICY_DIRS=(
/etc/opt/chrome_for_testing/policies/managed
/etc/opt/chrome/policies/managed
/etc/chromium/policies/managed
)
for dir in "${POLICY_DIRS[@]}"; do
$SUDO mkdir -p "$dir"
$SUDO cp "$SRC" "$dir/agent-orchestrator.json"
$SUDO chmod 644 "$dir/agent-orchestrator.json"
echo " ✓ $dir/agent-orchestrator.json"
done
echo "ファイル選択の画面とシークレット窓を禁じるポリシーを入れました。"
echo "既に動いているブラウザには効きません。反映するには再起動してください(scripts/server.sh restart)。"