소스 검색

fix: Download links (#1035)

Kroese 4 달 전
부모
커밋
faa7c58366
4개의 변경된 파일11개의 추가작업 그리고 344개의 파일을 삭제
  1. 1 1
      Dockerfile
  2. 1 75
      src/define.sh
  3. 5 2
      src/install.sh
  4. 4 266
      src/mido.sh

+ 1 - 1
Dockerfile

@@ -1,7 +1,7 @@
 ARG VERSION_ARG="latest"
 FROM scratch AS build-amd64
 
-COPY --from=qemux/qemu-docker:6.14 / /
+COPY --from=qemux/qemu-docker:6.15 / /
 
 ARG DEBCONF_NOWARNINGS="yes"
 ARG DEBIAN_FRONTEND="noninteractive"

+ 1 - 75
src/define.sh

@@ -5,6 +5,7 @@ set -Eeuo pipefail
 : "${HEIGHT:=""}"
 : "${VERIFY:=""}"
 : "${REGION:=""}"
+: "${EDITION:=""}"
 : "${MANUAL:=""}"
 : "${REMOVE:=""}"
 : "${VERSION:=""}"
@@ -1110,66 +1111,12 @@ isESD() {
   return 1
 }
 
-isMG() {
-
-  local id="$1"
-  local lang="$2"
-
-  case "${id,,}" in
-    "win11${PLATFORM,,}" )
-      return 0
-      ;;
-    "win11${PLATFORM,,}-enterprise" | "win11${PLATFORM,,}-enterprise-eval" )
-      return 0
-      ;;
-    "win11${PLATFORM,,}-ltsc" | "win11${PLATFORM,,}-enterprise-ltsc-eval" )
-      return 0
-      ;;
-    "win11${PLATFORM,,}-iot" | "win11${PLATFORM,,}-enterprise-iot-eval" )
-      return 0
-      ;;
-    "win10${PLATFORM,,}" )
-      return 0
-      ;;
-    "win10${PLATFORM,,}-enterprise" | "win10${PLATFORM,,}-enterprise-eval" )
-      return 0
-      ;;
-    "win10${PLATFORM,,}-ltsc" | "win10${PLATFORM,,}-enterprise-ltsc-eval" )
-      return 0
-      ;;
-    "win10${PLATFORM,,}-iot" | "win10${PLATFORM,,}-enterprise-iot-eval" )
-      return 0
-      ;;
-    "win81${PLATFORM,,}-enterprise" | "win81${PLATFORM,,}-enterprise-eval" )
-      return 0
-      ;;
-    "win2025" | "win2025-eval" | "win2022" | "win2022-eval" | "win2019" | "win2019-eval" )
-      return 0
-      ;;
-    "win2016" | "win2016-eval" | "win2012r2" | "win2012r2-eval" | "win2008r2" | "win2008r2-eval" )
-      return 0
-      ;;
-    "win7x64" | "win7x64-enterprise" | "win7x64-ultimate" | "win7x86" | "win7x86-enterprise" | "win7x86-ultimate" )
-      return 0
-      ;;
-    "winvistax64" | "winvistax64-enterprise" | "winvistax64-ultimate" | "winvistax86" | "winvistax86-enterprise" | "winvistax86-ultimate" )
-      return 0
-      ;;
-    "winxpx86" | "winxpx64" )
-      return 0
-      ;;
-  esac
-
-  return 1
-}
-
 validVersion() {
 
   local id="$1"
   local lang="$2"
   local url
 
-  isMG "$id" "$lang" && return 0
   isESD "$id" "$lang" && return 0
   isMido "$id" "$lang" && return 0
 
@@ -1207,27 +1154,6 @@ addFolder() {
   return 0
 }
 
-migrateFiles() {
-
-  local base="$1"
-  local version="$2"
-  local file=""
-
-  [ -f "$base" ] && return 0
-
-  [[ "${version,,}" == "tiny10" ]] && file="tiny10_x64_23h2.iso"
-  [[ "${version,,}" == "tiny11" ]] && file="tiny11_2311_x64.iso"
-  [[ "${version,,}" == "core11" ]] && file="tiny11_core_x64_beta_1.iso"
-  [[ "${version,,}" == "winxpx86" ]] && file="en_windows_xp_professional_with_service_pack_3_x86_cd_x14-80428.iso"
-  [[ "${version,,}" == "winvistax64" ]] && file="en_windows_vista_sp2_x64_dvd_342267.iso"
-  [[ "${version,,}" == "win7x64" ]] && file="en_windows_7_enterprise_with_sp1_x64_dvd_u_677651.iso"
-
-  [ ! -f "$STORAGE/$file" ] && return 0
-  mv -f "$STORAGE/$file" "$base" || return 1
-
-  return 0
-}
-
 prepareInstall() {
 
   local dir="$2"

+ 5 - 2
src/install.sh

@@ -76,8 +76,6 @@ startInstall() {
 
     BOOT="$STORAGE/$file"
 
-    ! migrateFiles "$BOOT" "$VERSION" && error "Migration failed!" && exit 57
-
   fi
 
   skipInstall "$BOOT" && return 1
@@ -668,6 +666,11 @@ updateXML() {
     sed -z "s/<AdministratorPassword>...............<Value \/>/<AdministratorPassword>\n              <Value>$admin<\/Value>/g" -i "$asset"
   fi
 
+  if [ -n "$EDITION" ]; then
+    [[ "${EDITION^^}" == "CORE" ]] && EDITION="STANDARDCORE"
+    sed -i "s/SERVERSTANDARD<\/Value>/SERVER${EDITION^^}<\/Value>/g" "$asset"
+  fi
+
   return 0
 }
 

+ 4 - 266
src/mido.sh

@@ -242,10 +242,10 @@ download_windows_eval() {
 
   [[ "$DEBUG" == [Yy1]* ]] && echo "Getting download link.."
 
-  if [[ "$enterprise_type" == "iot" ]]; then
-    filter="https://go.microsoft.com/fwlink/?linkid=[0-9]\+&clcid=0x[0-9a-z]\+&culture=${culture,,}&country=${country^^}"
-  else
-    filter="https://go.microsoft.com/fwlink/p/?LinkID=[0-9]\+&clcid=0x[0-9a-z]\+&culture=${culture,,}&country=${country^^}"
+  filter="https://go.microsoft.com/fwlink/?linkid=[0-9]\+&clcid=0x[0-9a-z]\+&culture=${culture,,}&country=${country,,}"
+
+  if ! echo "$iso_download_page_html" | grep -io "$filter" > /dev/null; then
+    filter="https://go.microsoft.com/fwlink/p/?linkid=[0-9]\+&clcid=0x[0-9a-z]\+&culture=${culture,,}&country=${country,,}"
   fi
 
   iso_download_links=$(echo "$iso_download_page_html" | grep -io "$filter") || {
@@ -429,243 +429,6 @@ getCatalog() {
   return 0
 }
 
-getMG() {
-
-  local version="$1"
-  local lang="$2"
-  local desc="$3"
-
-  local locale=""
-  local culture=""
-  local language=""
-  local user_agent=""
-
-  user_agent=$(get_agent)
-  language=$(getLanguage "$lang" "desc")
-  culture=$(getLanguage "$lang" "culture")
-
-  local msg="Requesting download link from massgrave.dev..."
-  info "$msg" && html "$msg"
-
-  local pattern=""
-  local locale="${culture,,}"
-  local platform="${PLATFORM,,}"
-  local url="https://massgrave.dev/"
-
-  if [[ "${PLATFORM,,}" != "arm64" ]]; then
-
-    case "${version,,}" in
-      "win11${PLATFORM,,}" )
-        url+="windows_11_links"
-        pattern="consumer"
-        ;;
-      "win11${PLATFORM,,}-enterprise" | "win11${PLATFORM,,}-enterprise-eval" )
-        url+="windows_11_links"
-        pattern="business"
-        ;;
-      "win11${PLATFORM,,}-ltsc" | "win11${PLATFORM,,}-enterprise-ltsc-eval" )
-        url+="windows_ltsc_links"
-        pattern="11_enterprise_ltsc"
-        ;;
-      "win11${PLATFORM,,}-iot" | "win11${PLATFORM,,}-enterprise-iot-eval" )
-        url+="windows_ltsc_links"
-        pattern="11_iot"
-        ;;
-      "win10${PLATFORM,,}" )
-        url+="windows_10_links"
-        pattern="consumer"
-        ;;
-      "win10${PLATFORM,,}-enterprise" | "win10${PLATFORM,,}-enterprise-eval" )
-        url+="windows_10_links"
-        pattern="business"
-        ;;
-      "win10${PLATFORM,,}-ltsc" | "win10${PLATFORM,,}-enterprise-ltsc-eval" )
-        url+="windows_ltsc_links"
-        pattern="10_enterprise_ltsc"
-        ;;
-      "win10${PLATFORM,,}-iot" | "win10${PLATFORM,,}-enterprise-iot-eval" )
-        url+="windows_ltsc_links"
-        pattern="10_iot"
-        ;;
-      "win81${PLATFORM,,}-enterprise" | "win81${PLATFORM,,}-enterprise-eval" )
-        url+="windows_8.1_links"
-        pattern="8.1_enterprise"
-        locale=$(getLanguage "$lang" "code")
-        [[ "$locale" == "sr" ]] && locale="sr-latn"
-        ;;
-      "win2025" | "win2025-eval" )
-        url+="windows_server_links"
-        pattern="server_2025"
-        ;;
-      "win2022" | "win2022-eval" )
-        url+="windows_server_links"
-        pattern="server_2022"
-        ;;
-      "win2019" | "win2019-eval" )
-        url+="windows_server_links"
-        pattern="server_2019"
-        ;;
-      "win2016" | "win2016-eval" )
-        url+="windows_server_links"
-        pattern="server_2016"
-        locale=$(getLanguage "$lang" "code")
-        [[ "$locale" == "hk" ]] && locale="ct"
-        [[ "$locale" == "tw" ]] && locale="ct"
-        ;;
-      "win2012r2" | "win2012r2-eval" )
-        url+="windows_server_links"
-        pattern="server_2012_r2"
-        locale=$(getLanguage "$lang" "code")
-        ;;
-      "win2008r2" | "win2008r2-eval" )
-        url+="windows_server_links"
-        pattern="server_2008_r2"
-        locale=$(getLanguage "$lang" "code")
-        ;;
-      "win7x64" | "win7x64-enterprise" )
-        url+="windows_7_links"
-        pattern="enterprise"
-        locale=$(getLanguage "$lang" "code")
-        ;;
-      "win7x64-ultimate" )
-        url+="windows_7_links"
-        pattern="ultimate"
-        locale=$(getLanguage "$lang" "code")
-        ;;
-      "win7x86" | "win7x86-enterprise" )
-        platform="x86"
-        url+="windows_7_links"
-        pattern="enterprise"
-        locale=$(getLanguage "$lang" "code")
-        ;;
-      "win7x86-ultimate" )
-        platform="x86"
-        url+="windows_7_links"
-        pattern="ultimate"
-        locale=$(getLanguage "$lang" "code")
-        ;;
-      "winvistax64" | "winvistax64-enterprise" )
-        url+="windows_vista_links"
-        pattern="enterprise"
-        locale=$(getLanguage "$lang" "code")
-        ;;
-      "winvistax64-ultimate" )
-        url+="windows_vista_links"
-        pattern="sp2"
-        locale=$(getLanguage "$lang" "code")
-        ;;
-      "winvistax86" | "winvistax86-enterprise" )
-        platform="x86"
-        url+="windows_vista_links"
-        pattern="enterprise"
-        locale=$(getLanguage "$lang" "code")
-        ;;
-      "winvistax86-ultimate" )
-        platform="x86"
-        url+="windows_vista_links"
-        pattern="sp2"
-        locale=$(getLanguage "$lang" "code")
-        ;;
-      "winxpx86" )
-        platform="x86"
-        url+="windows_xp_links"
-        pattern="xp"
-        locale=$(getLanguage "$lang" "code")
-        [[ "$locale" == "pt" ]] && locale="pt-br"
-        [[ "$locale" == "pp" ]] && locale="pt-pt"
-        [[ "$locale" == "cn" ]] && locale="zh-hans"
-        [[ "$locale" == "hk" ]] && locale="zh-hk"
-        [[ "$locale" == "tw" ]] && locale="zh-tw"
-        ;;
-      "winxpx64" )
-        url+="windows_xp_links"
-        pattern="xp"
-        locale=$(getLanguage "$lang" "code")
-        ;;
-    esac
-
-  else
-
-    case "${version,,}" in
-      "win11${PLATFORM,,}" | "win11${PLATFORM,,}-enterprise" | "win11${PLATFORM,,}-enterprise-eval" )
-        url+="windows_arm_links"
-        pattern="11_business"
-        ;;
-      "win11${PLATFORM,,}-ltsc" | "win11${PLATFORM,,}-enterprise-ltsc-eval" )
-        url+="windows_arm_links"
-        pattern="11_iot_enterprise_ltsc"
-        ;;
-      "win10${PLATFORM,,}" | "win10${PLATFORM,,}-enterprise" | "win10${PLATFORM,,}-enterprise-eval" )
-        url+="windows_arm_links"
-        pattern="Pro_10"
-        locale="$language"
-        [[ "$locale" == "Chinese" ]] && locale="ChnSimp"
-        [[ "$locale" == "Chinese HK" ]] && locale="ChnTrad"
-        [[ "$locale" == "Chinese TW" ]] && locale="ChnTrad"
-        ;;
-      "win10${PLATFORM,,}-ltsc" | "win10${PLATFORM,,}-enterprise-ltsc-eval" )
-        url+="windows_arm_links"
-        pattern="10_iot_enterprise_ltsc"
-        ;;
-    esac
-
-  fi
-
-  local body=""
-
-  [[ "$DEBUG" == [Yy1]* ]] && echo "Parsing product page: ${url}"
-  body=$(curl --silent --max-time 30 --user-agent "$user_agent" --location --max-filesize 1M --fail --proto =https --tlsv1.2 --http1.1 -- "$url") || {
-    handle_curl_error "$?" "Massgrave"
-    return $?
-  }
-
-  local list=""
-  list=$(echo "$body" | xmllint --html --nonet --xpath "//a[contains(text(), '.iso')]" - 2>/dev/null)
-
-  local result=""
-  result=$(echo "$list" | grep -i "${platform}" | grep "${pattern}" | grep -i -m 1 "${locale,,}_")
-  result=$(echo "$result" | sed -r 's/.*href="([^"]+).*/\1/g')
-  local page="$result"
-
-  if [ -z "$page" ]; then
-    if [[ "${lang,,}" != "en" ]] && [[ "${lang,,}" != "en-"* ]]; then
-      error "No download in the $language language available for $desc!"
-    else
-      error "Failed to parse download link for $desc! Please report this at $SUPPORT/issues."
-    fi
-    return 1
-  fi
-
-  [[ "$DEBUG" == [Yy1]* ]] && echo "Parsing download page: ${page}"
-  result=$(curl --silent --max-time 30 --request GET --user-agent "$user_agent" --referer "$url" --head --proto =https --tlsv1.2 --http1.1 -- "$page") || {
-    handle_curl_error "$?" "Massgrave"
-    return $?
-  }
-
-  if [[ "${result,,}" == *"content-type: text"* ]]; then
-    body=$(curl --silent --max-time 30 --user-agent "$user_agent" --referer "$url" --location --max-filesize 1M --fail --proto =https --tlsv1.2 --http1.1 -- "$page") || {
-      handle_curl_error "$?" "Massgrave"
-      return $?
-    }
-
-    list=$(echo "$body" | xmllint --html --nonet --xpath "//a[contains(@href, '.iso')]" - 2>/dev/null)
-    list=$(echo "$list" | sed -r 's/.*href="([^"]+).*/\1/g')
-    page=$(echo "$list" | sed 's/&amp;/\&/g;')
-
-    if [ -z "$page" ]; then
-      if [[ "${lang,,}" != "en" ]] && [[ "${lang,,}" != "en-"* ]]; then
-        error "No download in the $language language available for $desc!"
-      else
-        error "Failed to parse download link for $desc! Please report this at $SUPPORT/issues."
-      fi
-      return 1
-    fi
-  fi
-
-  MG_URL="$page"
-  return 0
-}
-
 getESD() {
 
   local dir="$1"
@@ -950,31 +713,6 @@ downloadImage() {
 
   done
 
-  if isMG "$version" "$lang"; then
-
-    if [[ "$tried" != "n" ]]; then
-      info "Failed to download $desc, will try a diferent method now..."
-    fi
-
-    tried="y"
-    success="n"
-
-    if getMG "$version" "$lang" "$desc"; then
-      success="y"
-    else
-      info "$msg" && html "$msg" && sleep "$delay"
-      getMG "$version" "$lang" "$desc" && success="y"
-    fi
-
-    if [[ "$success" == "y" ]]; then
-      downloadFile "$iso" "$MG_URL" "" "" "$lang" "$desc" && return 0
-      info "$msg" && html "$msg" && sleep "$delay"
-      downloadFile "$iso" "$MG_URL" "" "" "$lang" "$desc" && return 0
-      rm -f "$iso"
-    fi
-
-  fi
-
   return 1
 }