From a4e087aa41d947ff5eca0c83f3d945d273e17258 Mon Sep 17 00:00:00 2001 From: Huan Truong Date: Mon, 8 Jun 2026 12:42:06 -0500 Subject: [PATCH] QA-367 fix firefox on alpine --- src/alpine/install/firefox/install_firefox.sh | 49 +++++++++++++------ 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/src/alpine/install/firefox/install_firefox.sh b/src/alpine/install/firefox/install_firefox.sh index 7d58c90..227ca66 100644 --- a/src/alpine/install/firefox/install_firefox.sh +++ b/src/alpine/install/firefox/install_firefox.sh @@ -18,32 +18,46 @@ for LANG in ${LANGS}; do ${RELEASE_URL}${LANG} done +# Firefox 147+ introduced XDG base dir support, so profile paths will vary and need to be handled appropriately +FIREFOX_VERSION=$(firefox --version | awk '{print $3}') +FIREFOX_MAJOR=$(echo "$FIREFOX_VERSION" | cut -d. -f1) +if [[ "${FIREFOX_MAJOR:-0}" -ge 147 ]]; then + FIREFOX_PROFILE_BASE="$HOME/.config/mozilla/firefox" +else + FIREFOX_PROFILE_BASE="$HOME/.mozilla/firefox" +fi +FIREFOX_PROFILE_PATH="$FIREFOX_PROFILE_BASE/kasm" +FIREFOX_PROFILES_INI="$FIREFOX_PROFILE_BASE/profiles.ini" + # Creating a default profile -firefox -headless -CreateProfile "kasm $HOME/.mozilla/firefox/kasm" +firefox -headless -CreateProfile "kasm $FIREFOX_PROFILE_PATH" # For alpine 3.20 and later, firefox version shows a security nag. Silence it.. -if [ "$(printf '%s\n' 3.20 $(cat /etc/alpine-release) | sort -V | head -n 1)" = "3.20" ]; then - echo 'user_pref("security.sandbox.warn_unprivileged_namespaces", false);' > $HOME/.mozilla/firefox/kasm/user.js - chown 1000:1000 $HOME/.mozilla/firefox/kasm/user.js +if [[ "$(printf '%s\n' 3.20 $(cat /etc/alpine-release) | sort -V | head -n 1)" = "3.20" ]]; then + echo 'user_pref("security.sandbox.warn_unprivileged_namespaces", false);' > "$FIREFOX_PROFILE_PATH/user.js" + chown 1000:1000 "$FIREFOX_PROFILE_PATH/user.js" +fi + +if [[ "${FIREFOX_MAJOR:-0}" -ge 147 ]]; then + ROOT_CERTDB_BASE="/root/.config/mozilla" +else + ROOT_CERTDB_BASE="/root/.mozilla" fi - - -# Generate a certdb to be detected on squid start HOME=/root firefox --headless & -mkdir -p /root/.mozilla -CERTDB=$(find /root/.mozilla* -name "cert9.db") -while [ -z "${CERTDB}" ] ; do +mkdir -p "$ROOT_CERTDB_BASE" +CERTDB=$(find "$ROOT_CERTDB_BASE" -name "cert9.db") +while [[ -z "${CERTDB}" ]] ; do sleep 1 echo "waiting for certdb" - CERTDB=$(find /root/.mozilla* -name "cert9.db") + CERTDB=$(find "$ROOT_CERTDB_BASE" -name "cert9.db") done sleep 2 kill $(pgrep firefox) CERTDIR=$(dirname ${CERTDB}) -mv ${CERTDB} $HOME/.mozilla/firefox/kasm/ -rm -Rf /root/.mozilla +mv ${CERTDB} $FIREFOX_PROFILE_PATH/ +rm -Rf "$ROOT_CERTDB_BASE" -cat >>$HOME/.mozilla/firefox/profiles.ini <>"$FIREFOX_PROFILES_INI" <