#!/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