PortValhalla/scripts/Common/Config/Chromium/install-extension.sh

43 lines
1.5 KiB
Bash
Executable file

#!/bin/bash
EXTENSION_NAME="${EXTENSION_NAME}";
UNPACKED_EXTENSION="${UNPACKED_EXTENSION}";
EXTENSION_DIR="${EXTENSION_DIR}";
EXTENSION_POLICY_DIR="${EXTENSION_POLICY_DIR}";
# Elevate script
if [ ! "$UID" -eq 0 ]
then
EXTENSION_NAME="${EXTENSION_NAME}" \
UNPACKED_EXTENSION="${UNPACKED_EXTENSION}" \
EXTENSION_DIR="${EXTENSION_DIR}" \
EXTENSION_POLICY_DIR="${EXTENSION_POLICY_DIR}" \
sudo bash "$BASH_SOURCE" "$USER";
else
keyFile="$UNPACKED_EXTENSION.pem";
extensionFile="$UNPACKED_EXTENSION.crx";
manifestFile="$UNPACKED_EXTENSION/manifest.json";
destination="$EXTENSION_DIR/$EXTENSION_NAME.crx";
# Tamper manifest file
manifest="$(cat "$manifestFile" | jq ". + {key: "'"'"$(openssl rsa -in "$keyFile" -pubout -outform DER | openssl base64 -A)"'"'"}")";
echo "$manifest" | sudo -u "$1" tee "$manifestFile";
# Pack extension
extensionID="$(openssl rsa -in "$keyFile" -pubout -outform DER | shasum -a 256 | head -c32 | tr 0-9a-f a-p)";
extensionVersion="$(cat "$manifestFile" | jq -r '.version')";
sudo -u "$1" chromium --pack-extension="$extensionDir" --pack-extension-key="$keyFile";
# Install extension and preinstall it
cp "$extensionFile" "$EXTENSION_DIR";
chmod -R a+rx "$extensionRoot";
chmod -R u+w "$extensionRoot";
mkdir -p "$EXTENSION_POLICY_DIR";
{
echo "{";
echo ' "external_crx": "'"$destination"'",';
echo ' "external_version": "'"$extensionVersion"'"';
echo "}";
} | tee "$EXTENSION_POLICY_DIR/$extensionID.json";
fi