Add a separate script for installing extensions
This commit is contained in:
parent
afdc301ad9
commit
38b93422c7
4 changed files with 79 additions and 51 deletions
42
scripts/Common/Config/Chromium/install-extension.sh
Executable file
42
scripts/Common/Config/Chromium/install-extension.sh
Executable file
|
@ -0,0 +1,42 @@
|
|||
#!/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 | sha256sum | 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
|
32
scripts/Common/Config/Chromium/install-ytmusic-dl.sh
Executable file
32
scripts/Common/Config/Chromium/install-ytmusic-dl.sh
Executable file
|
@ -0,0 +1,32 @@
|
|||
#!/bin/bash
|
||||
pushd "${BASH_SOURCE%/*}" > /dev/null;
|
||||
|
||||
EXTENSION_DIR="${EXTENSION_DIR}";
|
||||
EXTENSION_POLICY_DIR="${EXTENSION_POLICY_DIR}";
|
||||
|
||||
archiveName="$(mktemp)";
|
||||
extensionDir="$(mktemp -d)";
|
||||
manifestFile="$extensionDir/manifest.json";
|
||||
chmod a+rwx "$extensionDir";
|
||||
# Download `youtube-music-dl`
|
||||
wget https://github.com/dougppaz/youtube-music-dl/releases/download/v1.2.1/youtube-music-dl.zip -O "$archiveName";
|
||||
|
||||
# Prepare extension
|
||||
mkdir -p "$extensionDir";
|
||||
sudo -u "$1" unzip "$archiveName" -d "$extensionDir";
|
||||
sudo -u "$1" chromium --pack-extension="$extensionDir";
|
||||
rm "$archiveName";
|
||||
|
||||
# Tamper manifest file
|
||||
manifest="$(echo "$manifest" | jq ".background.persistent = false")";
|
||||
echo "$manifest" > "$manifestFile";
|
||||
|
||||
EXTENSION_NAME="youtube-music-dl" \
|
||||
UNPACKED_EXTENSION="$extensionDir" \
|
||||
EXTENSION_DIR="${EXTENSION_DIR}" \
|
||||
EXTENSION_POLICY_DIR="${EXTENSION_POLICY_DIR}" \
|
||||
. ./install-extension.sh;
|
||||
|
||||
rm -rf "$extensionDir";
|
||||
|
||||
popd > /dev/null;
|
|
@ -1,50 +0,0 @@
|
|||
#!/bin/bash
|
||||
# Elevate script
|
||||
if [ ! "$UID" -eq 0 ]
|
||||
then
|
||||
sudo bash "$BASH_SOURCE" "$USER";
|
||||
else
|
||||
# Download and extract `youtube-music-dl`
|
||||
archiveName="$(sudo -u "$1" mktemp)";
|
||||
sudo -u "$1" wget https://github.com/dougppaz/youtube-music-dl/releases/download/v1.2.1/youtube-music-dl.zip -O "$archiveName";
|
||||
extensionName=youtube-music-dl;
|
||||
|
||||
contextRoot="$(sudo -u "$1" mktemp -d)";
|
||||
extensionDir="$contextRoot/$extensionName";
|
||||
keyFile="$extensionDir.pem";
|
||||
extensionFile="$extensionDir.crx";
|
||||
manifestFile="$extensionDir/manifest.json";
|
||||
|
||||
extensionRoot=/usr/share/brave-extensions;
|
||||
destination="$extensionRoot/$extensionName.crx";
|
||||
|
||||
# Prepare extension
|
||||
mkdir -p "$extensionRoot";
|
||||
sudo -u "$1" unzip "$archiveName" -d "$extensionDir";
|
||||
sudo -u "$1" brave-browser --pack-extension="$extensionDir";
|
||||
rm "$archiveName";
|
||||
|
||||
# Tamper manifest file
|
||||
manifest="$(cat "$manifestFile" | jq ". + {key: "'"'"$(openssl rsa -in "$keyFile" -pubout -outform DER | openssl base64 -A)"'"'"}")";
|
||||
manifest="$(echo "$manifest" | jq ".background.persistent = false")";
|
||||
echo "$manifest" | sudo -u "$1" tee "$manifestFile";
|
||||
|
||||
# Pack extension
|
||||
extensionID="$(openssl rsa -in "$keyFile" -pubout -outform DER | sha256sum | head -c32 | tr 0-9a-f a-p)";
|
||||
extensionVersion="$(cat "$manifestFile" | jq -r '.version')";
|
||||
sudo -u "$1" brave-browser --pack-extension="$extensionDir" --pack-extension-key="$keyFile";
|
||||
|
||||
# Install extension and preinstall it
|
||||
cp "$extensionFile" "$extensionRoot";
|
||||
configRoot=/opt/brave.com/brave/extensions/
|
||||
rm -rf "$contextRoot";
|
||||
chmod -R a+rx "$extensionRoot";
|
||||
chmod -R u+w "$extensionRoot";
|
||||
mkdir -p "$configRoot";
|
||||
{
|
||||
echo "{";
|
||||
echo ' "external_crx": "'"$destination"'",';
|
||||
echo ' "external_version": "'"$extensionVersion"'"';
|
||||
echo "}";
|
||||
} | tee "$configRoot/$extensionID.json";
|
||||
fi
|
|
@ -7,7 +7,11 @@ source "../../Debian/Software/rclone/install.sh";
|
|||
source "../../Debian/Software/Brave/install-stable.sh";
|
||||
source "../../Debian/Software/Brave/install-beta.sh";
|
||||
source "../../Debian/Software/Brave/install-nightly.sh";
|
||||
source "../../Debian/Software/Brave/install-extensions.sh";
|
||||
|
||||
EXTENSION_DIR=/usr/share/brave-extensions \
|
||||
EXTENSION_POLICY_DIR=/opt/brave.com/brave/extensions \
|
||||
source "../../Common/Config/Chromium/install-ytmusic-dl.sh";
|
||||
|
||||
source "../../Debian/Software/Google Chrome/install.sh";
|
||||
|
||||
# Install further software
|
||||
|
|
Loading…
Reference in a new issue