50 lines
1.9 KiB
Bash
Executable file
50 lines
1.9 KiB
Bash
Executable file
#!/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
|