Update quickget

This commit is contained in:
zenobit 2023-09-02 03:25:36 +02:00 committed by GitHub
parent 62a51945e0
commit f3bfd314f4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 214 additions and 203 deletions

417
quickget
View File

@ -52,6 +52,7 @@ function pretty_name() {
gabeeos) PRETTY_NAME="gabeeOS Linux";; gabeeos) PRETTY_NAME="gabeeOS Linux";;
garuda) PRETTY_NAME="Garuda Linux";; garuda) PRETTY_NAME="Garuda Linux";;
ghostbsd) PRETTY_NAME="GhostBSD";; ghostbsd) PRETTY_NAME="GhostBSD";;
holoiso) PRETTY_NAME="HoloISO";;
kdeneon) PRETTY_NAME="KDE Neon";; kdeneon) PRETTY_NAME="KDE Neon";;
kolibrios) PRETTY_NAME="KolibriOS";; kolibrios) PRETTY_NAME="KolibriOS";;
linuxmint) PRETTY_NAME="Linux Mint";; linuxmint) PRETTY_NAME="Linux Mint";;
@ -64,6 +65,7 @@ function pretty_name() {
nixos) PRETTY_NAME="NixOS";; nixos) PRETTY_NAME="NixOS";;
macos) PRETTY_NAME="macOS";; macos) PRETTY_NAME="macOS";;
openbsd) PRETTY_NAME="OpenBSD";; openbsd) PRETTY_NAME="OpenBSD";;
openindiana) PRETTY_NAME="OpenIndiana";;
opensuse) PRETTY_NAME="openSUSE";; opensuse) PRETTY_NAME="openSUSE";;
oraclelinux) PRETTY_NAME="Oracle Linux";; oraclelinux) PRETTY_NAME="Oracle Linux";;
popos) PRETTY_NAME="Pop!_OS";; popos) PRETTY_NAME="Pop!_OS";;
@ -71,15 +73,16 @@ function pretty_name() {
rebornos) PRETTY_NAME="RebornOS";; rebornos) PRETTY_NAME="RebornOS";;
rockylinux) PRETTY_NAME="Rocky Linux";; rockylinux) PRETTY_NAME="Rocky Linux";;
slitaz) PRETTY_NAME="SliTaz GNU/Linux";; slitaz) PRETTY_NAME="SliTaz GNU/Linux";;
steamos) PRETTY_NAME="SteamOS HoloISO";;
truenas-core) PRETTY_NAME="TrueNAS Core";; truenas-core) PRETTY_NAME="TrueNAS Core";;
truenas-scale) PRETTY_NAME="TrueNAS Scale";; truenas-scale) PRETTY_NAME="TrueNAS Scale";;
ubuntu-budgie) PRETTY_NAME="Ubuntu Budgie";; ubuntu-budgie) PRETTY_NAME="Ubuntu Budgie";;
ubuntucinnamon) PRETTY_NAME="Ubuntu Cinnamon";; ubuntucinnamon) PRETTY_NAME="Ubuntu Cinnamon";;
ubuntukylin) PRETTY_NAME="Ubuntu Kylin";; ubuntukylin) PRETTY_NAME="Ubuntu Kylin";;
ubuntu-mate) PRETTY_NAME="Ubuntu MATE";; ubuntu-mate) PRETTY_NAME="Ubuntu MATE";;
ubuntu-server) PRETTY_NAME="Ubuntu Server";;
ubuntustudio) PRETTY_NAME="Ubuntu Studio";; ubuntustudio) PRETTY_NAME="Ubuntu Studio";;
ubuntu-unity) PRETTY_NAME="Ubuntu Unity";; ubuntu-unity) PRETTY_NAME="Ubuntu Unity";;
vanillaos) PRETTY_NAME="Vanilla OS";;
ventoy) PRETTY_NAME="Ventoy";; ventoy) PRETTY_NAME="Ventoy";;
void) PRETTY_NAME="Void Linux";; void) PRETTY_NAME="Void Linux";;
voidpup) PRETTY_NAME="Void Puppy";; voidpup) PRETTY_NAME="Void Puppy";;
@ -98,6 +101,7 @@ function validate_release() {
DISPLAY_NAME="$(pretty_name "${OS}")" DISPLAY_NAME="$(pretty_name "${OS}")"
case ${OS} in case ${OS} in
*ubuntu-server*) RELEASE_GENERATOR="releases_ubuntu-server";;
*ubuntu*) RELEASE_GENERATOR="releases_ubuntu";; *ubuntu*) RELEASE_GENERATOR="releases_ubuntu";;
*) RELEASE_GENERATOR="${1}";; *) RELEASE_GENERATOR="${1}";;
esac esac
@ -153,7 +157,9 @@ function list_csv() {
for RELEASE in $("releases_${FUNC}"); do for RELEASE in $("releases_${FUNC}"); do
if [ "${OS}" == "macos" ]; then if [ "${OS}" == "macos" ]; then
DOWNLOADER="macrecovery" DOWNLOADER="macrecovery"
elif [ "${OS}" == "ubuntu" ] && [ "${RELEASE}" == "canary" ] && [ ${HAS_ZSYNC} -eq 1 ]; then elif [ "${OS}" == "ubuntu" ] && [ "${RELEASE}" == "daily-canary" ] && [ ${HAS_ZSYNC} -eq 1 ]; then
DOWNLOADER="zsync"
elif [ "${OS}" == "ubuntu" ] && [ "${RELEASE}" == "daily-legacy" ] && [ ${HAS_ZSYNC} -eq 1 ]; then
DOWNLOADER="zsync" DOWNLOADER="zsync"
elif [[ "${OS}" == *"ubuntu"* ]] && [ "${RELEASE}" == "devel" ] && [ ${HAS_ZSYNC} -eq 1 ]; then elif [[ "${OS}" == *"ubuntu"* ]] && [ "${RELEASE}" == "devel" ] && [ ${HAS_ZSYNC} -eq 1 ]; then
DOWNLOADER="zsync" DOWNLOADER="zsync"
@ -208,6 +214,7 @@ function os_support() {
gentoo \ gentoo \
ghostbsd \ ghostbsd \
haiku \ haiku \
holoiso \
kali \ kali \
kdeneon \ kdeneon \
kolibrios \ kolibrios \
@ -224,6 +231,7 @@ function os_support() {
lubuntu \ lubuntu \
macos \ macos \
openbsd \ openbsd \
openindiana \
opensuse \ opensuse \
oraclelinux \ oraclelinux \
popos \ popos \
@ -234,7 +242,6 @@ function os_support() {
slackware \ slackware \
slitaz \ slitaz \
solus \ solus \
steamos \
tails \ tails \
truenas-core \ truenas-core \
truenas-scale \ truenas-scale \
@ -243,8 +250,10 @@ function os_support() {
ubuntucinnamon \ ubuntucinnamon \
ubuntukylin \ ubuntukylin \
ubuntu-mate \ ubuntu-mate \
ubuntu-server \
ubuntustudio \ ubuntustudio \
ubuntu-unity \ ubuntu-unity \
vanillaos \
ventoy \ ventoy \
void \ void \
voidpup \ voidpup \
@ -304,15 +313,21 @@ function releases_batocera() {
} }
function releases_blendos() { function releases_blendos() {
curl -s https://api.github.com/repos/blend-os/blendOS/releases |grep tag_name | grep -o -E '[[:digit:]]+\.[[:digit:]]+' local RLIST
RLIST=$(curl -s https://api.github.com/repos/blend-os/blendOS/releases |grep tag_name | grep -o -E '[[:digit:]]+\.[[:digit:]]+' | tr ' \r\n' ' ')
echo ${RLIST}
}
function editions_blendos() {
echo gnome kde
} }
function releases_cachyos() { function releases_cachyos() {
echo latest echo 2300305
} }
function editions_cachyos() { function editions_cachyos() {
echo kde gnome cli echo kde gnome
} }
function releases_centos-stream() { function releases_centos-stream() {
@ -394,6 +409,7 @@ function releases_fedora() {
function editions_fedora() { function editions_fedora() {
echo Workstation \ echo Workstation \
Budgie \
Cinnamon \ Cinnamon \
i3 \ i3 \
KDE \ KDE \
@ -402,6 +418,9 @@ function editions_fedora() {
Mate \ Mate \
Xfce \ Xfce \
Silverblue \ Silverblue \
Sericea \
Kinoite \
Sway \
Server Server
} }
@ -463,6 +482,10 @@ function editions_haiku() {
echo x86_64 x86_gcc2h echo x86_64 x86_gcc2h
} }
function releases_holoiso() {
echo 4.0
}
function releases_kali() { function releases_kali() {
echo current kali-weekly echo current kali-weekly
} }
@ -539,7 +562,7 @@ function releases_netbsd() {
} }
function releases_nixos(){ function releases_nixos(){
echo 21.05 21.11 22.05 22.11 echo 21.05 21.11 22.05 22.11 23.05
} }
function editions_nixos(){ function editions_nixos(){
@ -551,6 +574,14 @@ function releases_openbsd(){
echo ${OBSD_RELEASES} echo ${OBSD_RELEASES}
} }
function releases_openindiana(){
echo 20230421
}
function editions_openindiana(){
echo gui text minimal
}
function releases_opensuse(){ function releases_opensuse(){
echo 15.0 15.1 15.2 15.3 15.4 microos tumbleweed echo 15.0 15.1 15.2 15.3 15.4 microos tumbleweed
} }
@ -582,13 +613,11 @@ function get_rebornos() {
} }
function releases_rockylinux() { function releases_rockylinux() {
echo 8.3 8.4 8.5 9.0 9.1 echo 8.3 8.4 8.5 8.6 8.7 9.0 9.1
} }
# Rocky have renamed dvd1 -> dvd at 9.0
function editions_rockylinux() { function editions_rockylinux() {
echo minimal \ echo minimal dvd boot
"dvd (dvd1 prior to 9.0)"
} }
function releases_siduction() { function releases_siduction() {
@ -615,10 +644,6 @@ function editions_solus() {
echo Budgie GNOME MATE Plasma echo Budgie GNOME MATE Plasma
} }
function releases_steamos() {
echo 4.0
}
function releases_tails() { function releases_tails() {
echo stable echo stable
} }
@ -640,7 +665,7 @@ function releases_truenas-scale() {
function releases_ubuntu() { function releases_ubuntu() {
local LTS_SUPPORT="14.04 16.04 18.04 20.04 22.04" local LTS_SUPPORT="14.04 16.04 18.04 20.04 22.04"
local INTERIM_SUPPORT="22.10 23.04" local INTERIM_SUPPORT="23.04"
case "${OS}" in case "${OS}" in
kubuntu|lubuntu|ubuntukylin|\ kubuntu|lubuntu|ubuntukylin|\
@ -656,11 +681,10 @@ function releases_ubuntu() {
INTERIM_SUPPORT="${INTERIM_SUPPORT}" INTERIM_SUPPORT="${INTERIM_SUPPORT}"
;; ;;
ubuntucinnamon) ubuntucinnamon)
INTERIM_SUPPORT="${INTERIM_SUPPORT/22.10 /}" INTERIM_SUPPORT="${INTERIM_SUPPORT}"
;; ;;
esac esac
#INTERIM_SUPPORT="${INTERIM_SUPPORT/22.10 /}"
if [ "${OS}" == "ubuntu-unity" ] || [ "${OS}" == "ubuntucinnamon" ]; then if [ "${OS}" == "ubuntu-unity" ] || [ "${OS}" == "ubuntucinnamon" ]; then
echo ${INTERIM_SUPPORT} \ echo ${INTERIM_SUPPORT} \
@ -674,6 +698,7 @@ function releases_ubuntu() {
jammy-daily \ jammy-daily \
daily-live \ daily-live \
daily-canary \ daily-canary \
daily-legacy \
eol-4.10 \ eol-4.10 \
eol-5.04 \ eol-5.04 \
eol-5.10 \ eol-5.10 \
@ -713,20 +738,28 @@ function releases_ubuntu() {
fi fi
} }
function releases_ubuntu-server() {
local LTS_SUPPORT="18.04 20.04 22.04"
local INTERIM_SUPPORT="23.04"
echo ${LTS_SUPPORT} \
${INTERIM_SUPPORT} \
daily-live
}
function releases_vanillaos() {
echo 22.10
}
function releases_ventoy() { function releases_ventoy() {
echo latest echo latest
} }
function releases_void() { function releases_void() {
echo current 20221001 20210316 20210930 20210218 20191109 20190526 20190217 20181111 20171007 20170825 20170220 echo current
} }
function editions_void() { function editions_void() {
echo base base-musl cinnamon cinnamon-musl enlightenment enlightenment-musl gnome gnome-musl lxde lxde-musl lxqt lxqt-musl mate mate-musl xfce xfce-musl echo glibc musl xfce-glibc xfce-musl
}
function releases_voidpup() {
echo latest
} }
function releases_vxlinux() { function releases_vxlinux() {
@ -738,48 +771,7 @@ function editions_vxlinux() {
} }
function releases_windows() { function releases_windows() {
echo 8 10 11 echo 10 11
}
function languages_windows() {
LANGS=(Arabic
"Brazilian Portuguese"
Bulgarian
"Chinese (Simplified)"
"Chinese (Traditional)"
Croatian
Czech
Danish
Dutch
English
"English International"
Estonian
Finnish
French
"French Canadian"
German
Greek
Hebrew
Hungarian
Italian
Japanese
Korean
Latvian
Lithuanian
Norwegian
Polish
Portuguese
Romanian
Russian
"Serbian Latin"
Slovak
Slovenian
Spanish
"Spanish (Mexico)"
Swedish
Thai
Turkish
Ukrainian)
} }
function releases_xerolinux() { function releases_xerolinux() {
@ -838,7 +830,7 @@ function web_get() {
fi fi
if command -v aria2c &>/dev/null; then if command -v aria2c &>/dev/null; then
if ! aria2c --stderr -x16 --continue=true --summary-interval=0 --download-result=hide --console-log-level=error "${URL}" -o "${DIR}/${FILE}"; then if ! aria2c --stderr -x16 --continue=true --summary-interval=0 --download-result=hide --console-log-level=error "${URL}" --dir "${DIR}" -o "${FILE}"; then
echo #Necessary as aria2c in suppressed mode does not have new lines echo #Necessary as aria2c in suppressed mode does not have new lines
echo "ERROR! Failed to download ${URL} with aria2c. Try running 'quickget' again." echo "ERROR! Failed to download ${URL} with aria2c. Try running 'quickget' again."
exit 1 exit 1
@ -927,6 +919,9 @@ function make_vm_config() {
openbsd) openbsd)
GUEST="openbsd" GUEST="openbsd"
IMAGE_TYPE="iso";; IMAGE_TYPE="iso";;
openindiana)
GUEST="solaris"
IMAGE_TYPE="iso";;
reactos) reactos)
GUEST="reactos" GUEST="reactos"
IMAGE_TYPE="iso";; IMAGE_TYPE="iso";;
@ -963,7 +958,10 @@ EOF
# OS specific tweaks # OS specific tweaks
case ${OS} in case ${OS} in
alma|centos-stream|endless|oraclelinux|popos|rockylinux|nixos) alma|centos-stream|endless|nixos|oraclelinux|popos|rockylinux)
echo "disk_size=\"32G\"" >> "${CONF_FILE}";;
openindiana)
echo "boot=\"legacy\"" >> "${CONF_FILE}"
echo "disk_size=\"32G\"" >> "${CONF_FILE}";; echo "disk_size=\"32G\"" >> "${CONF_FILE}";;
batocera) batocera)
echo "disk_size=\"8G\"" >> "${CONF_FILE}";; echo "disk_size=\"8G\"" >> "${CONF_FILE}";;
@ -994,13 +992,25 @@ EOF
echo "ram=\"512M\"" >> "${CONF_FILE}" echo "ram=\"512M\"" >> "${CONF_FILE}"
;; ;;
truenas-scale|truenas-core) truenas-scale|truenas-core)
echo
echo "boot=\"legacy\"" >> "${CONF_FILE}" echo "boot=\"legacy\"" >> "${CONF_FILE}"
# the rest is non-functional # the rest is non-functional
# echo "bootdrive_size=\"5G\"" >> "${CONF_FILE}" # boot drive # echo "bootdrive_size=\"5G\"" >> "${CONF_FILE}" # boot drive
# echo "1stdrive_size=\"20G\"" >> "${CONF_FILE}" # for testing # echo "1stdrive_size=\"20G\"" >> "${CONF_FILE}" # for testing
# echo "2nddrive_size=\"20G\"" >> "${CONF_FILE}" # again, for testing # echo "2nddrive_size=\"20G\"" >> "${CONF_FILE}" # again, for testing
;; ;;
ubuntu-server)
# 22.04+ fails on LVM build if disk size is < 10G
# 22.04.1 fails on auto-install if TPM is disabled
echo "disk_size=\"10G\"" >> "${CONF_FILE}"
echo "ram=\"4G\"" >> "${CONF_FILE}"
if [[ "${RELEASE}" == *"22.04"* ]]; then
echo "tpm=\"on\"" >> "${CONF_FILE}"
fi
;;
vanillaos)
## Minimum 50G for abroot
echo "disk_size=\"64G\"" >> "${CONF_FILE}"
;;
zorin) zorin)
case ${EDITION} in case ${EDITION} in
education64|edulite64) education64|edulite64)
@ -1021,6 +1031,10 @@ EOF
;; ;;
esac esac
if [ "${OS}" == "ubuntu" ] && [[ ${RELEASE} == *"daily"* ]]; then
# wont install lobster testing with less than 18GB
echo "disk_size=\"32G\"" >> "${CONF_FILE}"
fi
# Enable TPM for Windows 11 # Enable TPM for Windows 11
if [ "${OS}" == "windows" ] && [ "${RELEASE}" -ge 11 ]; then if [ "${OS}" == "windows" ] && [ "${RELEASE}" -ge 11 ]; then
echo "tpm=\"on\"" >> "${CONF_FILE}" echo "tpm=\"on\"" >> "${CONF_FILE}"
@ -1067,7 +1081,7 @@ function get_alma() {
local EDITION="${1:-}" local EDITION="${1:-}"
local HASH="" local HASH=""
local ISO="AlmaLinux-${RELEASE}-x86_64-${EDITION}.iso" local ISO="AlmaLinux-${RELEASE}-x86_64-${EDITION}.iso"
local URL="http://lon.mirror.rackspace.com/almalinux/${RELEASE/beta-1/beta}/isos/x86_64/" local URL="https://mirror.rackspace.com/almalinux/${RELEASE/beta-1/beta}/isos/x86_64/"
HASH="$(wget -q -O- "${URL}/CHECKSUM" | grep "(${ISO}" | cut -d' ' -f4)" HASH="$(wget -q -O- "${URL}/CHECKSUM" | grep "(${ISO}" | cut -d' ' -f4)"
echo "${URL}/${ISO} ${HASH}" echo "${URL}/${ISO} ${HASH}"
} }
@ -1139,9 +1153,41 @@ function get_arcolinux() {
} }
function get_blendos() { function get_blendos() {
local EDITION="${1:-}"
local HASH="" local HASH=""
local URL="$(curl -s https://api.github.com/repos/blend-os/blendOS/releases |grep 'browser_download_url'|grep ${RELEASE} | grep -o '\"http.*\.iso\"'| cut -d\" -f 2| head -1)" local URL=""
HASH=$(curl -s "${URL}.sha256sum" | cut -d' ' -f1) case ${RELEASE} in
23.01)
URL="$(curl -s https://api.github.com/repos/blend-os/blendOS/releases |grep 'browser_download_url'|grep ${RELEASE} | grep -o '\"http.*\.iso\"'| cut -d\" -f 2| head -1)"
HASH=$(curl -s "${URL}.sha256sum" | cut -d' ' -f1)
;;
23.04)
case ${EDITION} in
gnome)
TMPURL=$(wget -q -S -O- --max-redirect=0 "https://sourceforge.net/projects/blendos/files/23.04-1/${EDITION^^}/blendOS-2023.04.22-x86_64-${EDITION,,}.iso/download" 2>&1 | grep -i Location | cut -d' ' -f4)
URL=${TMPURL%\?*}
HASH=$(curl -s https://sourceforge.net/projects/blendos/files/${RELEASE}-1/${EDITION:-GNOME}/|grep -o -E '\"sha1\":\".*\"'|cut -d\" -f4)
;;
kde|plasma)
local ED_DE="Plasma"
TMPURL=$(wget -q -S -O- --max-redirect=0 "https://sourceforge.net/projects/blendos/files/23.04-1/${ED_DE^}/blendOS-2023.04.22-x86_64-${ED_DE,,}.iso/download" 2>&1 | grep -i Location | cut -d' ' -f4)
URL=${TMPURL%\?*}
HASH=$(curl -s https://sourceforge.net/projects/blendos/files/${RELEASE}-1/Plasma/|grep -o -E '\"sha1\":\".*\"'|cut -d\" -f4)
;;
esac
;;
esac
echo "${URL} ${HASH}"
}
function get_vanillaos() {
# maybe use github api and dynamism for R2.0 but for 22.10 just
# hit their CDN
#
# https://cdn.vanillaos.org/assets/ISO/22.10-r8/VanillaOS-22.10-all.20230226.md5.txt
# https://cdn.vanillaos.org/assets/ISO/22.10-r8/VanillaOS-22.10-all.20230226.sha256.txt
local HASH=$(curl -s "https://cdn.vanillaos.org/assets/ISO/22.10-r8/VanillaOS-22.10-all.20230226.sha256.txt" | cut -d' ' -f1)
local URL="https://cdn.vanillaos.org/assets/ISO/22.10-r8/VanillaOS-22.10-all.20230226.iso"
echo "${URL} ${HASH}" echo "${URL} ${HASH}"
} }
@ -1380,7 +1426,7 @@ function get_fedora() {
local VARIANT="" local VARIANT=""
case ${EDITION} in case ${EDITION} in
Server|Silverblue|Workstation) VARIANT="${EDITION}";; Server|Kinoite|Silverblue|Sericea|Workstation) VARIANT="${EDITION}";;
*) VARIANT="Spins";; *) VARIANT="Spins";;
esac esac
@ -1458,7 +1504,7 @@ function get_garuda() {
ISO=${EDITION}/latest.iso ISO=${EDITION}/latest.iso
HASH="$(wget -q -O- "${URL}/${ISO}.sha256" | cut -d' ' -f1)" HASH="$(wget -q -O- "${URL}/${ISO}.sha256" | cut -d' ' -f1)"
echo "${URL} ${HASH}" echo "${URL}/${ISO} ${HASH}"
} }
function get_gentoo() { function get_gentoo() {
@ -1549,7 +1595,7 @@ function get_macos() {
local CWD="" local CWD=""
local MACRECOVERY="" local MACRECOVERY=""
local MLB="00000000000000000" local MLB="00000000000000000"
local OS_TYPE="latest" local OS_TYPE="default"
case ${RELEASE} in case ${RELEASE} in
lion) #10.7 lion) #10.7
@ -1608,8 +1654,8 @@ function get_macos() {
# Get firmware # Get firmware
web_get "https://github.com/kholia/OSX-KVM/raw/master/OpenCore/OpenCore.qcow2" "${VM_PATH}" web_get "https://github.com/kholia/OSX-KVM/raw/master/OpenCore/OpenCore.qcow2" "${VM_PATH}"
web_get "https://github.com/kholia/OSX-KVM/raw/master/OVMF_CODE.fd" "${VM_PATH}" web_get "https://github.com/kholia/OSX-KVM/raw/master/OVMF_CODE.fd" "${VM_PATH}"
if [ ! -e "${VM_PATH}/OVMF_VARS-1024x768.fd" ]; then if [ ! -e "${VM_PATH}/OVMF_VARS-1920x1080.fd" ]; then
web_get "https://github.com/kholia/OSX-KVM/raw/master/OVMF_VARS-1024x768.fd" "${VM_PATH}" web_get "https://github.com/kholia/OSX-KVM/raw/master/OVMF_VARS-1920x1080.fd" "${VM_PATH}"
fi fi
if [ ! -e "${VM_PATH}/RecoveryImage.chunklist" ]; then if [ ! -e "${VM_PATH}/RecoveryImage.chunklist" ]; then
@ -1711,6 +1757,16 @@ function get_openbsd() {
echo "${URL}/${ISO} ${HASH}" echo "${URL}/${ISO} ${HASH}"
} }
function get_openindiana(){
local HASH=""
local ISO=""
local URL=""
URL="https://dlc.openindiana.org/isos/hipster/${RELEASE}"
ISO="OI-hipster-${EDITION}-${RELEASE}.iso"
HASH=$(wget -q -O- "${URL}/${ISO}.sha256" |cut -d' ' -f1)
echo "${URL}/${ISO} ${HASH}"
}
function get_opensuse() { function get_opensuse() {
local HASH="" local HASH=""
local ISO="" local ISO=""
@ -1776,13 +1832,18 @@ function get_rebornos() {
function get_rockylinux() { function get_rockylinux() {
local EDITION="${1:-}" local EDITION="${1:-}"
if [[ "${RELEASE}" =~ ^8. ]] && [[ "${EDITION}" == "dvd" ]]
then
EDITION="dvd1"
fi
local HASH="" local HASH=""
local ISO="Rocky-${RELEASE}-x86_64-${EDITION}.iso" local ISO="Rocky-${RELEASE}-x86_64-${EDITION}.iso"
local URL="" local URL=""
case ${RELEASE} in case ${RELEASE} in
9.1) URL="https://download.rockylinux.org/pub/rocky/${RELEASE}/isos/x86_64";; 9.1) URL="https://download.rockylinux.org/pub/rocky/9/isos/x86_64";;
*) URL="http://dl.rockylinux.org/vault/rocky/${RELEASE}/isos/x86_64/";; 8.7) URL="https://download.rockylinux.org/pub/rocky/8/isos/x86_64";;
*) URL="http://dl.rockylinux.org/vault/rocky/${RELEASE}/isos/x86_64";;
esac esac
HASH=$(wget -q -O- "${URL}/CHECKSUM" | grep "SHA256" | grep "${ISO})" | cut -d' ' -f4) HASH=$(wget -q -O- "${URL}/CHECKSUM" | grep "SHA256" | grep "${ISO})" | cut -d' ' -f4)
echo "${URL}/${ISO} ${HASH}" echo "${URL}/${ISO} ${HASH}"
@ -1830,7 +1891,7 @@ function get_solus() {
echo "${URL}/${ISO} ${HASH}" echo "${URL}/${ISO} ${HASH}"
} }
function get_steamos() { function get_holoiso() {
local HASH="" local HASH=""
local DATE="20221211" local DATE="20221211"
local ISO="HoloISO_${RELEASE}_OfflineInstaller-${DATE}_1636-x86_64.iso" local ISO="HoloISO_${RELEASE}_OfflineInstaller-${DATE}_1636-x86_64.iso"
@ -1875,6 +1936,33 @@ function get_truenas-core() {
echo "${URL} ${HASH}" echo "${URL} ${HASH}"
} }
function get_ubuntu-server() {
local HASH=""
local ISO=""
local URL="https://releases.ubuntu.com/${RELEASE}"
if wget -q --spider "${URL}/SHA256SUMS"; then
ISO=$(wget -q -O- "${URL}/SHA256SUMS" | grep 'live-server' | grep amd64 | grep iso | cut -d'*' -f2)
HASH=$(wget -q -O- "${URL}/SHA256SUMS" | grep 'live-server' | grep amd64 | grep iso |cut -d' ' -f1)
else
ISO=$(wget -q -O- "${URL}/MD5SUMS" | grep 'live-server' | grep amd64 | grep iso | cut -d' ' -f3)
HASH=$(wget -q -O- "${URL}/MD5SUMS" | grep 'live-server' | grep amd64 | grep iso | cut -d' ' -f1)
fi
if [[ "${RELEASE}" == *"daily"* ]] || [ "${RELEASE}" == "dvd" ]; then
URL="https://cdimage.ubuntu.com/${OS}/${RELEASE}/current"
ISO=$(wget -q -O- "${URL}/SHA256SUMS" | grep 'live-server' | grep amd64 | grep iso | cut -d'*' -f2)
HASH=$(wget -q -O- "${URL}/SHA256SUMS" | grep 'live-server' | grep amd64 | grep iso |cut -d' ' -f1)
zsync_get "${URL}/${ISO}" "${VM_PATH}" "${OS}-devel.iso"
make_vm_config "${OS}-devel.iso"
else
web_get "${URL}/${ISO}" "${VM_PATH}"
check_hash "${ISO}" "${HASH}"
make_vm_config "${ISO}"
fi
}
function get_ubuntu() { function get_ubuntu() {
local ISO="" local ISO=""
local HASH="" local HASH=""
@ -1886,6 +1974,9 @@ function get_ubuntu() {
elif [ "${RELEASE}" == "daily-canary" ] && [ "${OS}" != "ubuntu" ]; then elif [ "${RELEASE}" == "daily-canary" ] && [ "${OS}" != "ubuntu" ]; then
# daily-canary is only available for Ubuntu, switch flavours to daily-live # daily-canary is only available for Ubuntu, switch flavours to daily-live
RELEASE="daily-live" RELEASE="daily-live"
elif [ "${RELEASE}" == "daily-legacy" ] && [ "${OS}" != "ubuntu" ]; then
# daily-legacy is only available for Ubuntu, switch flavours to daily-live
RELEASE="daily-live"
fi fi
if [[ "${RELEASE}" == "eol-"* ]]; then if [[ "${RELEASE}" == "eol-"* ]]; then
@ -1893,10 +1984,12 @@ function get_ubuntu() {
elif [[ "${RELEASE}" == "jammy-daily" ]]; then elif [[ "${RELEASE}" == "jammy-daily" ]]; then
URL="https://cdimage.ubuntu.com/${OS}/jammy/daily-live/current" URL="https://cdimage.ubuntu.com/${OS}/jammy/daily-live/current"
VM_PATH="${OS}-jammy-live" VM_PATH="${OS}-jammy-live"
elif [[ "${RELEASE}" == "daily-legacy" ]]; then
URL="https://cdimage.ubuntu.com/${RELEASE}/current"
VM_PATH="${OS}-${RELEASE}"
elif [[ "${RELEASE}" == *"daily"* ]] || [ "${RELEASE}" == "dvd" ]; then elif [[ "${RELEASE}" == *"daily"* ]] || [ "${RELEASE}" == "dvd" ]; then
URL="https://cdimage.ubuntu.com/${OS}/${RELEASE}/current" URL="https://cdimage.ubuntu.com/${OS}/${RELEASE}/current"
VM_PATH="${OS}-daily-live" VM_PATH="${OS}-${RELEASE}"
elif [ "${OS}" == "ubuntu" ]; then elif [ "${OS}" == "ubuntu" ]; then
URL="https://releases.ubuntu.com/${RELEASE}" URL="https://releases.ubuntu.com/${RELEASE}"
else else
@ -1910,7 +2003,6 @@ function get_ubuntu() {
ISO=$(wget -q -O- "${URL}/MD5SUMS" | grep 'desktop\|dvd\|install' | grep amd64 | grep iso | cut -d' ' -f3) ISO=$(wget -q -O- "${URL}/MD5SUMS" | grep 'desktop\|dvd\|install' | grep amd64 | grep iso | cut -d' ' -f3)
HASH=$(wget -q -O- "${URL}/MD5SUMS" | grep 'desktop\|dvd\|install' | grep amd64 | grep iso | cut -d' ' -f1) HASH=$(wget -q -O- "${URL}/MD5SUMS" | grep 'desktop\|dvd\|install' | grep amd64 | grep iso | cut -d' ' -f1)
fi fi
#echo "${URL}/${ISO} ${HASH}"
if [[ "${RELEASE}" == *"daily"* ]] || [ "${RELEASE}" == "dvd" ]; then if [[ "${RELEASE}" == *"daily"* ]] || [ "${RELEASE}" == "dvd" ]; then
zsync_get "${URL}/${ISO}" "${VM_PATH}" "${OS}-devel.iso" zsync_get "${URL}/${ISO}" "${VM_PATH}" "${OS}-devel.iso"
@ -1935,35 +2027,15 @@ function get_void() {
local EDITION="${1:-}" local EDITION="${1:-}"
local HASH="" local HASH=""
local ISO="" local ISO=""
local URL="https://alpha.de.repo.voidlinux.org/live/${RELEASE}" local URL="https://alpha.de.repo.voidlinux.org/live/current"
if [[ "${RELEASE}" == "current" ]]; then
DATE=$(wget -q -O- "${URL}/sha256sum.txt" | head -n1 | cut -d'.' -f1 | cut -d'-' -f4) DATE=$(wget -q -O- "${URL}/sha256sum.txt" | head -n1 | cut -d'.' -f1 | cut -d'-' -f4)
case ${EDITION} in case ${EDITION} in
base) ISO="void-live-x86_64-${DATE}-base.iso";; glibc) ISO="void-live-x86_64-${DATE}-base.iso";;
base-musl) ISO="void-live-x86_64-musl-${DATE}-base.iso";; musl) ISO="void-live-x86_64-musl-${DATE}-base.iso";;
xfce) ISO="void-live-x86_64-${DATE}-xfce.iso";; xfce-glibc) ISO="void-live-x86_64-${DATE}-xfce.iso";;
xfce-musl) ISO="void-live-x86_64-musl-${DATE}-xfce.iso";; xfce-musl) ISO="void-live-x86_64-musl-${DATE}-xfce.iso";;
esac esac
else
case ${EDITION} in
cinnamon) ISO="void-live-x86_64-${RELEASE}-cinnamon.iso";;
cinnamon-musl) ISO="void-live-x86_64-musl-${RELEASE}-cinnamon.iso";;
enlightenment) ISO="void-live-x86_64-${RELEASE}-enlightenment.iso";;
enlightenment-musl) ISO="void-live-x86_64-musl-${RELEASE}-enlightenment.iso";;
gnome) ISO="void-live-x86_64-${RELEASE}-gnome.iso";;
gnome-musl) ISO="void-live-x86_64-musl-${RELEASE}-gnome.iso";;
lxde) ISO="void-live-x86_64-${RELEASE}-lxde.iso";;
lxde-musl) ISO="void-live-x86_64-musl-${RELEASE}-lxde.iso";;
lxqt) ISO="void-live-x86_64-${RELEASE}-lxqt.iso";;
lxqt-musl) ISO="void-live-x86_64-musl-${RELEASE}-lxqt.iso";;
mate) ISO="void-live-x86_64-${RELEASE}-mate.iso";;
mate-musl) ISO="void-live-x86_64-musl-${RELEASE}-mate.iso";;
xfce) ISO="void-live-x86_64-${RELEASE}-xfce.iso";;
xfce-musl) ISO="void-live-x86_64-musl-${RELEASE}-xfce.iso";;
base) ISO="void-live-x86_64-${RELEASE}.iso";;
base-musl) ISO="void-live-x86_64-musl-${RELEASE}.iso";;
esac
fi
HASH="$(wget -q -O- "${URL}/sha256sum.txt" | grep "${ISO}" | cut -d' ' -f4)" HASH="$(wget -q -O- "${URL}/sha256sum.txt" | grep "${ISO}" | cut -d' ' -f4)"
echo "${URL}/${ISO} ${HASH}" echo "${URL}/${ISO} ${HASH}"
} }
@ -2297,92 +2369,35 @@ function unattended_windows() {
EOF EOF
} }
function dbg_windows() {
local DEBUG=0
if [ ${DEBUG} -eq 1 ]; then
echo "${1}"
fi
}
# Adapted from https://gist.github.com/hongkongkiwi/15a5bf16437315df256c118c163607cb
function get_windows() { function get_windows() {
# Use the API to automatically download a Windows .iso image # Use the iTechtics CDN to download the ISOs.
# The API we were using is unmaintained and not currently functional # - https://www.itechtics.com/windows-10-download-iso/
# - https://www.itechtics.com/windows-11-download-iso/
# 0 : Prompt for a manual ISO download # 0 : Prompt for a manual ISO download
# 1 : Use the API for automated download # 1 : Download automatically
local API_GUIDED_DOWNLOAD=0 local AUTO_DOWNLOAD=1
local ARCH="x64"
local INDEX=0
local LANG_CODE="en"
local LANG_EDITION="${1}"
local LATEST_WINDOWS_VERSION=""
local WINDOWS_NAME=""
local WINDOWS_ISO_URL=""
local VERSION_ID=""
local EDITION_ID=""
local LANGUAGE_ID=""
local FILE_NAME=""
local ARCH_ID=""
local DOWNLOAD_INFO=""
local DOWNLOAD_ID=""
local DOWNLOAD_URL="" local DOWNLOAD_URL=""
if [ ${API_GUIDED_DOWNLOAD} -eq 1 ]; then if [ ${AUTO_DOWNLOAD} -eq 1 ]; then
# Ignore the most recent Windows 10 release for now. # Ignore the most recent Windows 10 release for now.
case ${RELEASE} in case ${RELEASE} in
10) INDEX=0;; 10) DOWNLOAD_URL="https://www.itechtics.com/?dl_id=173"
11) INDEX=0;; EDITION="22H2"
FILE_NAME="Win${RELEASE}_${EDITION}_EnglishInternational_x64v1.iso"
FILE_HASH="dc3982ad27e2d4e03b680630c28f824cb78bcd47"
;;
11) DOWNLOAD_URL="https://www.itechtics.com/?dl_id=168"
EDITION="22H2"
FILE_NAME="Win${RELEASE}_${EDITION}_English_x64v1.iso"
FILE_HASH="c5341ba26e420684468fa4d4ab434823c9d1b61f"
;;
esac esac
echo "Getting Windows ${RELEASE} URL..." echo "Downloading Windows ${RELEASE} ${EDITION}..."
WINDOWS_VERSIONS=$(wget -4 -q -O- "https://tb.rg-adguard.net/php/get_version.php?type_id=1" | jq '.versions | sort_by(-(.version_id | tonumber))')
dbg_windows "${WINDOWS_VERSIONS}"
LATEST_WINDOWS_VERSION=$(echo "${WINDOWS_VERSIONS}" | jq -c 'map(select(.name | contains("Windows '"${RELEASE}"'")))['${INDEX}']')
dbg_windows "${LATEST_WINDOWS_VERSION}"
WINDOWS_NAME=$(echo "${LATEST_WINDOWS_VERSION}" | jq -r .name)
dbg_windows "${WINDOWS_NAME}"
VERSION_ID=$(echo "${LATEST_WINDOWS_VERSION}" | jq -r .version_id)
dbg_windows "${VERSION_ID}"
case ${RELEASE} in
8) EDITION_ID=$(wget -4 -q -O- "https://tb.rg-adguard.net/php/get_edition.php?version_id=${VERSION_ID}&lang=name_${LANG_CODE}" | jq -r '.editions[] | select(.name_'${LANG_CODE}'=="Windows 8.1 Pro + Core").edition_id');;
10|11) EDITION_ID=$(wget -4 -q -O- "https://tb.rg-adguard.net/php/get_edition.php?version_id=${VERSION_ID}&lang=name_${LANG_CODE}" | jq -r '.editions[] | select(.name_'${LANG_CODE}'=="Windows '"${RELEASE}"'").edition_id');;
esac
dbg_windows "${EDITION_ID}"
LANGUAGE_ID=$(wget -4 -q -O- "https://tb.rg-adguard.net/php/get_language.php?edition_id=${EDITION_ID}&lang=name_${LANG_CODE}" | jq -r '.languages[] | select(.name_'${LANG_CODE}'=="'"${LANG_EDITION}"'").language_id')
dbg_windows "${LANGUAGE_ID}"
ARCH_INFO=$(wget -4 -q -O- "https://tb.rg-adguard.net/php/get_arch.php?language_id=${LANGUAGE_ID}")
dbg_windows "${ARCH_INFO}"
FILE_NAME=$(echo "${ARCH_INFO}" | jq -r '.archs[] | select(.name | contains("'${ARCH}'")).name')
dbg_windows "${FILE_NAME}"
ARCH_ID=$(echo "${ARCH_INFO}" | jq -r '.archs[] | select(.name | contains("'${ARCH}'")).arch_id')
dbg_windows "${ARCH_ID}"
DOWNLOAD_INFO=$(wget -4 -q -O- "https://tb.rg-adguard.net/dl.php?fileName=${ARCH_ID}&lang=en")
dbg_windows "${DOWNLOAD_INFO}"
DOWNLOAD_SHA1=$(echo "${DOWNLOAD_INFO}" | sed -e 's/<[^>]*>//g' | grep -o -P '(?<=SHA1: ).*(?= expire)' | sed 's/Link//')
dbg_windows "${DOWNLOAD_SHA1}"
DOWNLOAD_ID=$(echo "${DOWNLOAD_INFO}" | grep -oP '(?<=https:\/\/tb\.rg-adguard\.net/dl\.php\?go=)[0-9a-z]+')
dbg_windows "${DOWNLOAD_ID}"
REDIRECT_URL="https://tb.rg-adguard.net/dl.php?go=${DOWNLOAD_ID}"
dbg_windows "${REDIRECT_URL}"
DOWNLOAD_URL=$(curl --head --silent --write-out "%{redirect_url}\n" --output /dev/null "${REDIRECT_URL}")
dbg_windows "${DOWNLOAD_URL}"
MS_BASE_URL="https://software.download.prss.microsoft.com/"
if [[ ! ${DOWNLOAD_URL} =~ ^${MS_BASE_URL} ]]; then
echo "Download URL not leading to Microsoft CDN"
exit 1
fi
echo "Downloading ${WINDOWS_NAME}..."
web_get "${DOWNLOAD_URL}" "${VM_PATH}" "${FILE_NAME}" web_get "${DOWNLOAD_URL}" "${VM_PATH}" "${FILE_NAME}"
# Windows 10 doesn't include a SHA1, so only check the integrity if the SHA1 is available. check_hash "${FILE_NAME}" "${FILE_HASH}"
if [ -n "${DOWNLOAD_SHA1}" ]; then
check_hash "${FILE_NAME}" "${DOWNLOAD_SHA1}"
fi
else else
case ${RELEASE} in case ${RELEASE} in
10) WINDOWS_ISO_URL="https://www.microsoft.com/software-download/windows10";; 10) WINDOWS_ISO_URL="https://www.microsoft.com/software-download/windows10";;
@ -2411,7 +2426,7 @@ function get_windows() {
;; ;;
esac esac
case "${API_GUIDED_DOWNLOAD}" in case "${AUTO_DOWNLOAD}" in
0) make_vm_config "windows-${RELEASE}.iso" "virtio-win.iso";; 0) make_vm_config "windows-${RELEASE}.iso" "virtio-win.iso";;
1) make_vm_config "${FILE_NAME}" "virtio-win.iso";; 1) make_vm_config "${FILE_NAME}" "virtio-win.iso";;
esac esac
@ -2470,7 +2485,6 @@ if ((BASH_VERSINFO[0] < 4)); then
fi fi
LANGS=() LANGS=()
languages_windows
if [ -n "${1}" ]; then if [ -n "${1}" ]; then
OS="${1,,}" OS="${1,,}"
@ -2599,6 +2613,11 @@ if [ -n "${2}" ]; then
# macOS doesn't use create_vm() # macOS doesn't use create_vm()
validate_release releases_macos validate_release releases_macos
get_macos get_macos
elif [[ "${OS}" == *"ubuntu-server"* ]]; then
# (Comes before regular Ubuntu, or the code tries to download the desktop) #
# Ubuntu doesn't use create_vm()
validate_release releases_ubuntu-server
get_ubuntu-server
elif [[ "${OS}" == *"ubuntu"* ]]; then elif [[ "${OS}" == *"ubuntu"* ]]; then
# Ubuntu doesn't use create_vm() # Ubuntu doesn't use create_vm()
validate_release releases_ubuntu validate_release releases_ubuntu
@ -2608,20 +2627,9 @@ if [ -n "${2}" ]; then
validate_release releases_deepin validate_release releases_deepin
get_deepin get_deepin
elif [ "${OS}" == "windows" ]; then elif [ "${OS}" == "windows" ]; then
LANG="English International"
if [ -n "${3}" ]; then
LANG="${3}"
if [[ ! ${LANGS[*]} =~ "${LANG}" ]]; then
echo -e "ERROR! ${LANG} is not a supported Windows language:\n"
for LANG in "${LANGS[@]}"; do
echo -n "${LANG} "
done
exit 1
fi
fi
# Windows doesn't use create_vm() # Windows doesn't use create_vm()
validate_release releases_windows validate_release releases_windows
get_windows "${LANG}" get_windows
else else
validate_release "releases_${OS}" validate_release "releases_${OS}"
create_vm "$("get_${OS}")" create_vm "$("get_${OS}")"
@ -2629,6 +2637,10 @@ if [ -n "${2}" ]; then
else else
echo "ERROR! You must specify a release." echo "ERROR! You must specify a release."
case ${OS} in case ${OS} in
*ubuntu-server*)
echo -n " - Releases: "
releases_ubuntu-server | sed -Ee 's/eol-\S+//g' # hide eol releases
;;
*ubuntu*) *ubuntu*)
echo -n " - Releases: " echo -n " - Releases: "
releases_ubuntu | sed -Ee 's/eol-\S+//g' # hide eol releases releases_ubuntu | sed -Ee 's/eol-\S+//g' # hide eol releases
@ -2647,4 +2659,3 @@ else
fi fi
# vim:tabstop=4:shiftwidth=4:expandtab # vim:tabstop=4:shiftwidth=4:expandtab