#!/bin/bash # Elevate script if [ ! "$UID" -eq 0 ] then exec sudo bash "$0" "$USER" fi # Prepare apt install -y wget unzip jq apt-transport-https curl curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg arch=amd64] https://brave-browser-apt-release.s3.brave.com/ stable main" | tee /etc/apt/sources.list.d/brave-browser-release.list # Install Brave apt update apt install -y brave-browser # 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 | shasum -a 256 | 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