mirror of
https://github.com/dockur/windows.git
synced 2024-09-29 22:13:47 +00:00
Update mido.sh
This commit is contained in:
parent
9e1fb816ff
commit
1708edd80b
1 changed files with 59 additions and 8 deletions
67
src/mido.sh
67
src/mido.sh
|
@ -39,7 +39,9 @@ handle_curl_error() {
|
||||||
|
|
||||||
download_windows() {
|
download_windows() {
|
||||||
|
|
||||||
local HASH=""
|
local id="$1"
|
||||||
|
local language="$2"
|
||||||
|
local checksum=""
|
||||||
local session_id=""
|
local session_id=""
|
||||||
local iso_download_page_html=""
|
local iso_download_page_html=""
|
||||||
local product_edition_id=""
|
local product_edition_id=""
|
||||||
|
@ -121,11 +123,13 @@ download_windows() {
|
||||||
return $?
|
return $?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[ -z "$language" ] && language="English (United States)"
|
||||||
|
|
||||||
# Limit untrusted size for input validation
|
# Limit untrusted size for input validation
|
||||||
language_skuid_table_html="$(echo "$language_skuid_table_html" | head -c 10240)"
|
language_skuid_table_html="$(echo "$language_skuid_table_html" | head -c 10240)"
|
||||||
|
|
||||||
# tr: Filter for only alphanumerics or "-" to prevent HTTP parameter injection
|
# tr: Filter for only alphanumerics or "-" to prevent HTTP parameter injection
|
||||||
sku_id="$(echo "$language_skuid_table_html" | grep "${I18N}" | sed 's/"//g' | cut -d ',' -f 1 | cut -d ':' -f 2 | tr -cd '[:alnum:]-' | head -c 16)"
|
sku_id="$(echo "$language_skuid_table_html" | grep "${language}" | sed 's/"//g' | cut -d ',' -f 1 | cut -d ':' -f 2 | tr -cd '[:alnum:]-' | head -c 16)"
|
||||||
echo "$sku_id"
|
echo "$sku_id"
|
||||||
|
|
||||||
echo " - Getting ISO download link..."
|
echo " - Getting ISO download link..."
|
||||||
|
@ -145,6 +149,13 @@ download_windows() {
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
local hash=$(echo "$iso_download_link_html" | sed 's/<tr><td>/\n<tr><td>/g' | grep "$language 64-bit" | grep -o -P '(?<=</td><td>).*(?=</td></tr>)')
|
||||||
|
checksum=$(getMido "$id" "sum")
|
||||||
|
|
||||||
|
if [[ "$hash" != "$checksum" ]]; then
|
||||||
|
warn "download has an unexpected SHA256 checksum: $hash , while expected value was: $checksum. Please report this at $SUPPORT/issues"
|
||||||
|
fi
|
||||||
|
|
||||||
# Filter for 64-bit ISO download URL
|
# Filter for 64-bit ISO download URL
|
||||||
# sed: HTML decode "&" character
|
# sed: HTML decode "&" character
|
||||||
# tr: Filter for only alphanumerics or punctuation
|
# tr: Filter for only alphanumerics or punctuation
|
||||||
|
@ -163,6 +174,7 @@ download_windows() {
|
||||||
download_windows_eval() {
|
download_windows_eval() {
|
||||||
|
|
||||||
local id="$1"
|
local id="$1"
|
||||||
|
local language="$2"
|
||||||
local windows_version=""
|
local windows_version=""
|
||||||
local enterprise_type=""
|
local enterprise_type=""
|
||||||
|
|
||||||
|
@ -228,6 +240,42 @@ download_windows_eval() {
|
||||||
local COUNTRY="US"
|
local COUNTRY="US"
|
||||||
local CULTURE="en-us"
|
local CULTURE="en-us"
|
||||||
|
|
||||||
|
case "$language" in
|
||||||
|
"English (Great Britain)")
|
||||||
|
CULTURE="en-gb"
|
||||||
|
COUNTRY="GB";;
|
||||||
|
"Chinese (Simplified)")
|
||||||
|
CULTURE="zh-cn"
|
||||||
|
COUNTRY="CN";;
|
||||||
|
"Chinese (Traditional)")
|
||||||
|
CULTURE="zh-tw"
|
||||||
|
COUNTRY="TW";;
|
||||||
|
"French")
|
||||||
|
CULTURE="fr-fr"
|
||||||
|
COUNTRY="FR";;
|
||||||
|
"German")
|
||||||
|
CULTURE="de-de"
|
||||||
|
COUNTRY="DE";;
|
||||||
|
"Italian")
|
||||||
|
CULTURE="it-it"
|
||||||
|
COUNTRY="IT";;
|
||||||
|
"Japanese")
|
||||||
|
CULTURE="ja-jp"
|
||||||
|
COUNTRY="JP";;
|
||||||
|
"Korean")
|
||||||
|
CULTURE="ko-kr"
|
||||||
|
COUNTRY="KR";;
|
||||||
|
"Portuguese (Brazil)")
|
||||||
|
CULTURE="pt-br"
|
||||||
|
COUNTRY="BR";;
|
||||||
|
"Spanish")
|
||||||
|
CULTURE="es-es"
|
||||||
|
COUNTRY="ES";;
|
||||||
|
"Russian")
|
||||||
|
CULTURE="ru-ru"
|
||||||
|
COUNTRY="RU";;
|
||||||
|
esac
|
||||||
|
|
||||||
echo " - Getting download link.."
|
echo " - Getting download link.."
|
||||||
iso_download_links="$(echo "$iso_download_page_html" | grep -o "https://go.microsoft.com/fwlink/p/?LinkID=[0-9]\+&clcid=0x[0-9a-z]\+&culture=${CULTURE}&country=${COUNTRY}")" || {
|
iso_download_links="$(echo "$iso_download_page_html" | grep -o "https://go.microsoft.com/fwlink/p/?LinkID=[0-9]\+&clcid=0x[0-9a-z]\+&culture=${CULTURE}&country=${COUNTRY}")" || {
|
||||||
# This should only happen if there's been some change to the download endpoint web address
|
# This should only happen if there's been some change to the download endpoint web address
|
||||||
|
@ -265,22 +313,23 @@ download_windows_eval() {
|
||||||
getWindows() {
|
getWindows() {
|
||||||
|
|
||||||
local id="$1"
|
local id="$1"
|
||||||
|
local language="$2"
|
||||||
|
|
||||||
MIDO_URL=""
|
MIDO_URL=""
|
||||||
info "Downloading Windows media from official Microsoft servers..."
|
info "Downloading Windows media from official Microsoft servers..."
|
||||||
|
|
||||||
case "${id,,}" in
|
case "${id,,}" in
|
||||||
"win81${PLATFORM,,}" | "win10${PLATFORM,,}" | "win11${PLATFORM,,}" )
|
"win81${PLATFORM,,}" | "win10${PLATFORM,,}" | "win11${PLATFORM,,}" )
|
||||||
download_windows "$id" && return 0
|
download_windows "$id" "$language" && return 0
|
||||||
;;
|
;;
|
||||||
"win11${PLATFORM,,}-enterprise-eval" )
|
"win11${PLATFORM,,}-enterprise-eval" )
|
||||||
download_windows_eval "$id" && return 0
|
download_windows_eval "$id" "$language" && return 0
|
||||||
;;
|
;;
|
||||||
"win10${PLATFORM,,}-enterprise-eval" | "win10${PLATFORM,,}-enterprise-ltsc-eval" )
|
"win10${PLATFORM,,}-enterprise-eval" | "win10${PLATFORM,,}-enterprise-ltsc-eval" )
|
||||||
download_windows_eval "$id" && return 0
|
download_windows_eval "$id" "$language" && return 0
|
||||||
;;
|
;;
|
||||||
"win2022-eval" | "win2019-eval" | "win2016-eval" | "win2012r2-eval" )
|
"win2022-eval" | "win2019-eval" | "win2016-eval" | "win2012r2-eval" )
|
||||||
download_windows_eval "$id" && return 0
|
download_windows_eval "$id" "$language" && return 0
|
||||||
;;
|
;;
|
||||||
"win81${PLATFORM,,}-enterprise-eval" )
|
"win81${PLATFORM,,}-enterprise-eval" )
|
||||||
info "Downloading Windows 8.1 Enterprise Evaluation..."
|
info "Downloading Windows 8.1 Enterprise Evaluation..."
|
||||||
|
@ -431,6 +480,7 @@ getESD() {
|
||||||
|
|
||||||
local dir="$1"
|
local dir="$1"
|
||||||
local version="$2"
|
local version="$2"
|
||||||
|
local language="$3"
|
||||||
local editionName
|
local editionName
|
||||||
local winCatalog size
|
local winCatalog size
|
||||||
|
|
||||||
|
@ -502,6 +552,7 @@ downloadImage() {
|
||||||
local iso="$1"
|
local iso="$1"
|
||||||
local version="$2"
|
local version="$2"
|
||||||
local tried="n"
|
local tried="n"
|
||||||
|
local language="English (United States)"
|
||||||
local url sum size base desc
|
local url sum size base desc
|
||||||
|
|
||||||
if [[ "${version,,}" == "http"* ]]; then
|
if [[ "${version,,}" == "http"* ]]; then
|
||||||
|
@ -519,7 +570,7 @@ downloadImage() {
|
||||||
|
|
||||||
if isMido "$version"; then
|
if isMido "$version"; then
|
||||||
tried="y"
|
tried="y"
|
||||||
if getWindows "$version"; then
|
if getWindows "$version" "$language"; then
|
||||||
echo "MIDO_URL=$MIDO_URL"
|
echo "MIDO_URL=$MIDO_URL"
|
||||||
exit 33
|
exit 33
|
||||||
size=$(getMido "$version" "size")
|
size=$(getMido "$version" "size")
|
||||||
|
@ -538,7 +589,7 @@ downloadImage() {
|
||||||
|
|
||||||
tried="y"
|
tried="y"
|
||||||
|
|
||||||
if getESD "$TMP/esd" "$version"; then
|
if getESD "$TMP/esd" "$version" "$language"; then
|
||||||
ISO="${ISO%.*}.esd"
|
ISO="${ISO%.*}.esd"
|
||||||
downloadFile "$ISO" "$ESD" "$ESD_SUM" "$ESD_SIZE" "$desc" && return 0
|
downloadFile "$ISO" "$ESD" "$ESD_SUM" "$ESD_SIZE" "$desc" && return 0
|
||||||
ISO="$iso"
|
ISO="$iso"
|
||||||
|
|
Loading…
Reference in a new issue