mirror of
https://github.com/dockur/windows.git
synced 2026-01-13 14:35:27 +00:00
Compare commits
16 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1f0cdc9bd1 | ||
|
|
9654a945fb | ||
|
|
a4fdfbdf91 | ||
|
|
b84a2b60a9 | ||
|
|
a5b4d7760d | ||
|
|
2c4094b0f7 | ||
|
|
66f595d84a | ||
|
|
6919e36aee | ||
|
|
658c84c55f | ||
|
|
3aa2f6e128 | ||
|
|
da8bbdcb47 | ||
|
|
d7fcf9a5da | ||
|
|
bb0a0b47b8 | ||
|
|
7120584548 | ||
|
|
e292d18d32 | ||
|
|
d92ac18210 |
15
Dockerfile
15
Dockerfile
@@ -1,7 +1,8 @@
|
||||
ARG VERSION_ARG="latest"
|
||||
FROM scratch AS build-amd64
|
||||
COPY --from=qemux/qemu-docker:6.06 / /
|
||||
|
||||
ARG VERSION_ARG="0.0"
|
||||
COPY --from=qemux/qemu-docker:6.11 / /
|
||||
|
||||
ARG DEBCONF_NOWARNINGS="yes"
|
||||
ARG DEBIAN_FRONTEND="noninteractive"
|
||||
ARG DEBCONF_NONINTERACTIVE_SEEN="true"
|
||||
@@ -10,6 +11,7 @@ RUN set -eu && \
|
||||
apt-get update && \
|
||||
apt-get --no-install-recommends -y install \
|
||||
bc \
|
||||
jq \
|
||||
curl \
|
||||
7zip \
|
||||
wsdd \
|
||||
@@ -22,20 +24,21 @@ RUN set -eu && \
|
||||
libxml2-utils \
|
||||
libarchive-tools && \
|
||||
apt-get clean && \
|
||||
echo "$VERSION_ARG" > /run/version && \
|
||||
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||
|
||||
COPY --chmod=755 ./src /run/
|
||||
COPY --chmod=755 ./assets /run/assets
|
||||
|
||||
ADD --chmod=755 https://raw.githubusercontent.com/christgau/wsdd/v0.8/src/wsdd.py /usr/sbin/wsdd
|
||||
ADD --chmod=664 https://github.com/qemus/virtiso-whql/releases/download/v1.9.43-0/virtio-win-1.9.43.tar.xz /drivers.txz
|
||||
|
||||
FROM dockurr/windows-arm:2.21 AS build-arm64
|
||||
FROM dockurr/windows-arm:${VERSION_ARG} AS build-arm64
|
||||
FROM build-${TARGETARCH}
|
||||
|
||||
EXPOSE 8006 3389
|
||||
ARG VERSION_ARG="0.00"
|
||||
RUN echo "$VERSION_ARG" > /run/version
|
||||
|
||||
VOLUME /storage
|
||||
EXPOSE 8006 3389
|
||||
|
||||
ENV VERSION="11"
|
||||
ENV RAM_SIZE="4G"
|
||||
|
||||
@@ -6,6 +6,7 @@ services:
|
||||
VERSION: "11"
|
||||
devices:
|
||||
- /dev/kvm
|
||||
- /dev/net/tun
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
ports:
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: windows-pvc
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 64Gi
|
||||
@@ -16,59 +17,61 @@ metadata:
|
||||
labels:
|
||||
name: windows
|
||||
spec:
|
||||
terminationGracePeriodSeconds: 120 # the Kubernetes default is 30 seconds and it may be not enough
|
||||
containers:
|
||||
- name: windows
|
||||
image: dockurr/windows
|
||||
ports:
|
||||
- containerPort: 8006
|
||||
protocol: TCP
|
||||
- containerPort: 3389
|
||||
protocol: TCP
|
||||
- containerPort: 3389
|
||||
protocol: UDP
|
||||
securityContext:
|
||||
privileged: true
|
||||
env:
|
||||
- name: VERSION
|
||||
value: "11"
|
||||
- name: RAM_SIZE
|
||||
value: "4G"
|
||||
- name: CPU_CORES
|
||||
value: "2"
|
||||
- name: DISK_SIZE
|
||||
value: "64G"
|
||||
volumeMounts:
|
||||
- mountPath: /storage
|
||||
name: storage
|
||||
- mountPath: /dev/kvm
|
||||
name: dev-kvm
|
||||
- name: windows
|
||||
image: dockurr/windows
|
||||
env:
|
||||
- name: VERSION
|
||||
value: "11"
|
||||
- name: RAM_SIZE
|
||||
value: "4G"
|
||||
- name: CPU_CORES
|
||||
value: "2"
|
||||
- name: DISK_SIZE
|
||||
value: "64G"
|
||||
ports:
|
||||
- containerPort: 8006
|
||||
- containerPort: 3389
|
||||
- containerPort: 3389
|
||||
protocol: UDP
|
||||
securityContext:
|
||||
capabilities:
|
||||
add:
|
||||
- NET_ADMIN
|
||||
privileged: true
|
||||
volumeMounts:
|
||||
- mountPath: /storage
|
||||
name: storage
|
||||
- mountPath: /dev/kvm
|
||||
name: dev-kvm
|
||||
- mountPath: /dev/net/tun
|
||||
name: dev-tun
|
||||
terminationGracePeriodSeconds: 120
|
||||
volumes:
|
||||
- name: storage
|
||||
persistentVolumeClaim:
|
||||
claimName: windows-pvc
|
||||
- name: dev-kvm
|
||||
hostPath:
|
||||
path: /dev/kvm
|
||||
- name: storage
|
||||
persistentVolumeClaim:
|
||||
claimName: windows-pvc
|
||||
- hostPath:
|
||||
path: /dev/kvm
|
||||
name: dev-kvm
|
||||
- hostPath:
|
||||
path: /dev/net/tun
|
||||
type: CharDevice
|
||||
name: dev-tun
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: windows
|
||||
spec:
|
||||
type: NodePort
|
||||
ports:
|
||||
- name: tcp-8006
|
||||
port: 8006
|
||||
- name: tcp-3389
|
||||
port: 3389
|
||||
- name: udp-3389
|
||||
port: 3389
|
||||
protocol: UDP
|
||||
selector:
|
||||
name: windows
|
||||
ports:
|
||||
- name: tcp-8006
|
||||
protocol: TCP
|
||||
port: 8006
|
||||
targetPort: 8006
|
||||
- name: tcp-3389
|
||||
protocol: TCP
|
||||
port: 3389
|
||||
targetPort: 3389
|
||||
- name: udp-3389
|
||||
protocol: UDP
|
||||
port: 3389
|
||||
targetPort: 3389
|
||||
type: NodePort
|
||||
|
||||
36
readme.md
36
readme.md
@@ -37,6 +37,7 @@ services:
|
||||
VERSION: "11"
|
||||
devices:
|
||||
- /dev/kvm
|
||||
- /dev/net/tun
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
ports:
|
||||
@@ -49,15 +50,25 @@ services:
|
||||
Via Docker CLI:
|
||||
|
||||
```bash
|
||||
docker run -it --rm -p 8006:8006 --device=/dev/kvm --cap-add NET_ADMIN --stop-timeout 120 dockurr/windows
|
||||
docker run -it --rm -p 8006:8006 --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN --stop-timeout 120 dockurr/windows
|
||||
```
|
||||
|
||||
Via Kubernetes:
|
||||
|
||||
```shell
|
||||
kubectl apply -f kubernetes.yml
|
||||
kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/master/kubernetes.yml
|
||||
```
|
||||
|
||||
## Compatibility ⚙️
|
||||
|
||||
| **Product** | **Platform** | |
|
||||
|---|---|---|
|
||||
| Docker Engine | Linux| ✅ |
|
||||
| Docker Desktop | Linux | ❌ |
|
||||
| Docker Desktop | macOS | ❌ |
|
||||
| Docker Desktop | Windows 11 | ✅ |
|
||||
| Docker Desktop | Windows 10 | ❌ |
|
||||
|
||||
## FAQ 💬
|
||||
|
||||
### How do I use it?
|
||||
@@ -74,7 +85,7 @@ kubectl apply -f kubernetes.yml
|
||||
|
||||
### How do I select the Windows version?
|
||||
|
||||
By default, Windows 11 will be installed. But you can add the `VERSION` environment variable to your compose file, in order to specify an alternative Windows version to be downloaded:
|
||||
By default, Windows 11 Pro will be installed. But you can add the `VERSION` environment variable to your compose file, in order to specify an alternative Windows version to be downloaded:
|
||||
|
||||
```yaml
|
||||
environment:
|
||||
@@ -93,7 +104,6 @@ kubectl apply -f kubernetes.yml
|
||||
| `10l` | Windows 10 LTSC | 4.6 GB |
|
||||
| `10e` | Windows 10 Enterprise | 5.2 GB |
|
||||
||||
|
||||
| `8` | Windows 8.1 Pro | 4.0 GB |
|
||||
| `8e` | Windows 8.1 Enterprise | 3.7 GB |
|
||||
| `7e` | Windows 7 Enterprise | 3.0 GB |
|
||||
| `ve` | Windows Vista Enterprise | 3.0 GB |
|
||||
@@ -135,7 +145,7 @@ kubectl apply -f kubernetes.yml
|
||||
|
||||
### How do I share files with the host?
|
||||
|
||||
Open 'File Explorer' and click on the 'Network' section, you will see a computer called `host.lan`. Double-click it and it will show a folder called `Data`, which can be binded to any folder on your host via the compose file:
|
||||
Open 'File Explorer' and click on the 'Network' section, you will see a computer called `host.lan`. Double-click it and it will show a folder called `Data`, which can be bound to any folder on your host via the compose file:
|
||||
|
||||
```yaml
|
||||
volumes:
|
||||
@@ -220,7 +230,7 @@ kubectl apply -f kubernetes.yml
|
||||
LANGUAGE: "French"
|
||||
```
|
||||
|
||||
You can choose between: 🇦🇪 Arabic, 🇧🇬 Bulgarian, 🇨🇳 Chinese, 🇭🇷 Croatian, 🇨🇿 Czech, 🇩🇰 Danish, 🇳🇱 Dutch, 🇬🇧 English, 🇪🇪 Estionian, 🇫🇮 Finnish, 🇫🇷 French, 🇩🇪 German, 🇬🇷 Greek, 🇮🇱 Hebrew, 🇭🇺 Hungarian, 🇮🇹 Italian, 🇯🇵 Japanese, 🇰🇷 Korean, 🇱🇻 Latvian, 🇱🇹 Lithuanian, 🇳🇴 Norwegian, 🇵🇱 Polish, 🇵🇹 Portuguese, 🇷🇴 Romanian, 🇷🇺 Russian, 🇷🇸 Serbian, 🇸🇰 Slovak, 🇸🇮 Slovenian, 🇪🇸 Spanish, 🇸🇪 Swedish, 🇹🇭 Thai, 🇹🇷 Turkish and 🇺🇦 Ukrainian.
|
||||
You can choose between: 🇦🇪 Arabic, 🇧🇬 Bulgarian, 🇨🇳 Chinese, 🇭🇷 Croatian, 🇨🇿 Czech, 🇩🇰 Danish, 🇳🇱 Dutch, 🇬🇧 English, 🇪🇪 Estonian, 🇫🇮 Finnish, 🇫🇷 French, 🇩🇪 German, 🇬🇷 Greek, 🇮🇱 Hebrew, 🇭🇺 Hungarian, 🇮🇹 Italian, 🇯🇵 Japanese, 🇰🇷 Korean, 🇱🇻 Latvian, 🇱🇹 Lithuanian, 🇳🇴 Norwegian, 🇵🇱 Polish, 🇵🇹 Portuguese, 🇷🇴 Romanian, 🇷🇺 Russian, 🇷🇸 Serbian, 🇸🇰 Slovak, 🇸🇮 Slovenian, 🇪🇸 Spanish, 🇸🇪 Swedish, 🇹🇭 Thai, 🇹🇷 Turkish and 🇺🇦 Ukrainian.
|
||||
|
||||
### How do I select the keyboard layout?
|
||||
|
||||
@@ -340,24 +350,28 @@ kubectl apply -f kubernetes.yml
|
||||
|
||||
### How do I verify if my system supports KVM?
|
||||
|
||||
To verify that your system supports KVM, run the following commands:
|
||||
Only Linux and Windows 11 support KVM virtualization, macOS and Windows 10 do not unfortunately.
|
||||
|
||||
You can run the following commands in Linux to check your system:
|
||||
|
||||
```bash
|
||||
sudo apt install cpu-checker
|
||||
sudo kvm-ok
|
||||
```
|
||||
|
||||
If you receive an error from `kvm-ok` indicating that KVM acceleration can't be used, please check whether:
|
||||
If you receive an error from `kvm-ok` indicating that KVM cannot be used, please check whether:
|
||||
|
||||
- the virtualization extensions (`Intel VT-x` or `AMD SVM`) are enabled in your BIOS.
|
||||
|
||||
- you are running an operating system that supports them, like Linux or Windows 11 (macOS and Windows 10 do not unfortunately).
|
||||
|
||||
- you enabled "nested virtualization" if you are running the container inside a virtual machine.
|
||||
|
||||
- you are not using a cloud provider, as most of them do not allow nested virtualization for their VPS's.
|
||||
|
||||
If you didn't receive any error from `kvm-ok` at all, but the container still complains that `/dev/kvm` is missing, it might help to add `privileged: true` to your compose file (or `--privileged` to your `run` command), to rule out any permission issue.
|
||||
If you do not receive any error from `kvm-ok` but the container still complains about KVM, please check whether:
|
||||
|
||||
- you are not using "Docker Desktop for Linux" as it does not support KVM, instead make use of Docker Engine directly.
|
||||
|
||||
- it could help to add `privileged: true` to your compose file (or `sudo` to your `docker run` command), to rule out any permission issue.
|
||||
|
||||
### How do I run macOS in a container?
|
||||
|
||||
|
||||
733
src/define.sh
733
src/define.sh
@@ -1,8 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
set -Eeuo pipefail
|
||||
|
||||
: "${XRES:=""}"
|
||||
: "${YRES:=""}"
|
||||
: "${WIDTH:=""}"
|
||||
: "${HEIGHT:=""}"
|
||||
: "${VERIFY:=""}"
|
||||
: "${REGION:=""}"
|
||||
: "${MANUAL:=""}"
|
||||
@@ -14,7 +14,7 @@ set -Eeuo pipefail
|
||||
: "${USERNAME:=""}"
|
||||
: "${PASSWORD:=""}"
|
||||
|
||||
MIRRORS=4
|
||||
MIRRORS=3
|
||||
PLATFORM="x64"
|
||||
|
||||
parseVersion() {
|
||||
@@ -132,163 +132,203 @@ getLanguage() {
|
||||
local ret="$2"
|
||||
local lang=""
|
||||
local desc=""
|
||||
local short=""
|
||||
local culture=""
|
||||
|
||||
case "${id,,}" in
|
||||
"ar" | "ar-"* )
|
||||
short="ar"
|
||||
lang="Arabic"
|
||||
desc="$lang"
|
||||
culture="ar-SA" ;;
|
||||
"bg" | "bg-"* )
|
||||
short="bg"
|
||||
lang="Bulgarian"
|
||||
desc="$lang"
|
||||
culture="bg-BG" ;;
|
||||
"cs" | "cs-"* | "cz" | "cz-"* )
|
||||
short="cs"
|
||||
lang="Czech"
|
||||
desc="$lang"
|
||||
culture="cs-CZ" ;;
|
||||
"da" | "da-"* | "dk" | "dk-"* )
|
||||
short="da"
|
||||
lang="Danish"
|
||||
desc="$lang"
|
||||
culture="da-DK" ;;
|
||||
"de" | "de-"* )
|
||||
short="de"
|
||||
lang="German"
|
||||
desc="$lang"
|
||||
culture="de-DE" ;;
|
||||
"el" | "el-"* | "gr" | "gr-"* )
|
||||
short="el"
|
||||
lang="Greek"
|
||||
desc="$lang"
|
||||
culture="el-GR" ;;
|
||||
"gb" | "en-gb" )
|
||||
short="en-gb"
|
||||
lang="English International"
|
||||
desc="English"
|
||||
culture="en-GB" ;;
|
||||
"en" | "en-"* )
|
||||
lang="English (United States)"
|
||||
short="en"
|
||||
lang="English"
|
||||
desc="English"
|
||||
culture="en-US" ;;
|
||||
"mx" | "es-mx" )
|
||||
short="mx"
|
||||
lang="Spanish (Mexico)"
|
||||
desc="Spanish"
|
||||
culture="es-MX" ;;
|
||||
"es" | "es-"* )
|
||||
short="es"
|
||||
lang="Spanish"
|
||||
desc="$lang"
|
||||
culture="es-ES" ;;
|
||||
"et" | "et-"* )
|
||||
short="et"
|
||||
lang="Estonian"
|
||||
desc="$lang"
|
||||
culture="et-EE" ;;
|
||||
"fi" | "fi-"* )
|
||||
short="fi"
|
||||
lang="Finnish"
|
||||
desc="$lang"
|
||||
culture="fi-FI" ;;
|
||||
"ca" | "fr-ca" )
|
||||
short="ca"
|
||||
lang="French Canadian"
|
||||
desc="French"
|
||||
culture="fr-CA" ;;
|
||||
"fr" | "fr-"* )
|
||||
short="fr"
|
||||
lang="French"
|
||||
desc="$lang"
|
||||
culture="fr-FR" ;;
|
||||
"he" | "he-"* | "il" | "il-"* )
|
||||
short="he"
|
||||
lang="Hebrew"
|
||||
desc="$lang"
|
||||
culture="he-IL" ;;
|
||||
"hr" | "hr-"* | "cr" | "cr-"* )
|
||||
short="hr"
|
||||
lang="Croatian"
|
||||
desc="$lang"
|
||||
culture="hr-HR" ;;
|
||||
"hu" | "hu-"* )
|
||||
short="hu"
|
||||
lang="Hungarian"
|
||||
desc="$lang"
|
||||
culture="hu-HU" ;;
|
||||
"it" | "it-"* )
|
||||
short="it"
|
||||
lang="Italian"
|
||||
desc="$lang"
|
||||
culture="it-IT" ;;
|
||||
"ja" | "ja-"* | "jp" | "jp-"* )
|
||||
short="ja"
|
||||
lang="Japanese"
|
||||
desc="$lang"
|
||||
culture="ja-JP" ;;
|
||||
"ko" | "ko-"* | "kr" | "kr-"* )
|
||||
short="ko"
|
||||
lang="Korean"
|
||||
desc="$lang"
|
||||
culture="ko-KR" ;;
|
||||
"lt" | "lt-"* )
|
||||
short="lt"
|
||||
lang="Lithuanian"
|
||||
desc="$lang"
|
||||
culture="lv-LV" ;;
|
||||
culture="lt-LT" ;;
|
||||
"lv" | "lv-"* )
|
||||
short="lv"
|
||||
lang="Latvian"
|
||||
desc="$lang"
|
||||
culture="lt-LT" ;;
|
||||
culture="lv-LV" ;;
|
||||
"nb" | "nb-"* |"nn" | "nn-"* | "no" | "no-"* )
|
||||
short="no"
|
||||
lang="Norwegian"
|
||||
desc="$lang"
|
||||
culture="nb-NO" ;;
|
||||
"nl" | "nl-"* )
|
||||
short="nl"
|
||||
lang="Dutch"
|
||||
desc="$lang"
|
||||
culture="nl-NL" ;;
|
||||
"pl" | "pl-"* )
|
||||
short="pl"
|
||||
lang="Polish"
|
||||
desc="$lang"
|
||||
culture="pl-PL" ;;
|
||||
"br" | "pt-br" )
|
||||
short="pt"
|
||||
lang="Brazilian Portuguese"
|
||||
desc="Portuguese"
|
||||
culture="pt-BR" ;;
|
||||
"pt" | "pt-"* )
|
||||
short="pp"
|
||||
lang="Portuguese"
|
||||
desc="$lang"
|
||||
culture="pt-BR" ;;
|
||||
"ro" | "ro-"* )
|
||||
short="ro"
|
||||
lang="Romanian"
|
||||
desc="$lang"
|
||||
culture="ro-RO" ;;
|
||||
"ru" | "ru-"* )
|
||||
short="ru"
|
||||
lang="Russian"
|
||||
desc="$lang"
|
||||
culture="ru-RU" ;;
|
||||
"sk" | "sk-"* )
|
||||
short="sk"
|
||||
lang="Slovak"
|
||||
desc="$lang"
|
||||
culture="sk-SK" ;;
|
||||
"sl" | "sl-"* | "si" | "si-"* )
|
||||
short="sl"
|
||||
lang="Slovenian"
|
||||
desc="$lang"
|
||||
culture="sl-SI" ;;
|
||||
"sr" | "sr-"* )
|
||||
short="sr"
|
||||
lang="Serbian Latin"
|
||||
desc="Serbian"
|
||||
culture="sr-Latn-RS" ;;
|
||||
"sv" | "sv-"* | "se" | "se-"* )
|
||||
short="sv"
|
||||
lang="Swedish"
|
||||
desc="$lang"
|
||||
culture="sv-SE" ;;
|
||||
"th" | "th-"* )
|
||||
short="th"
|
||||
lang="Thai"
|
||||
desc="$lang"
|
||||
culture="th-TH" ;;
|
||||
"tr" | "tr-"* )
|
||||
short="tr"
|
||||
lang="Turkish"
|
||||
desc="$lang"
|
||||
culture="tr-TR" ;;
|
||||
"ua" | "ua-"* | "uk" | "uk-"* )
|
||||
short="uk"
|
||||
lang="Ukrainian"
|
||||
desc="$lang"
|
||||
culture="uk-UA" ;;
|
||||
"hk" | "zh-hk" | "cn-hk" )
|
||||
lang="Chinese Traditional"
|
||||
short="hk"
|
||||
lang="Chinese (Traditional)"
|
||||
desc="Chinese HK"
|
||||
culture="zh-TW" ;;
|
||||
"tw" | "zh-tw" | "cn-tw" )
|
||||
lang="Chinese Traditional"
|
||||
short="tw"
|
||||
lang="Chinese (Traditional)"
|
||||
desc="Chinese TW"
|
||||
culture="zh-TW" ;;
|
||||
"zh" | "zh-"* | "cn" | "cn-"* )
|
||||
lang="Chinese Simplified"
|
||||
short="cn"
|
||||
lang="Chinese (Simplified)"
|
||||
desc="Chinese"
|
||||
culture="zh-CN" ;;
|
||||
esac
|
||||
@@ -296,6 +336,7 @@ getLanguage() {
|
||||
case "${ret,,}" in
|
||||
"desc" ) echo "$desc" ;;
|
||||
"name" ) echo "$lang" ;;
|
||||
"code" ) echo "$short" ;;
|
||||
"culture" ) echo "$culture" ;;
|
||||
*) echo "$desc";;
|
||||
esac
|
||||
@@ -671,10 +712,6 @@ getMido() {
|
||||
size=4898582528
|
||||
sum="e4ab2e3535be5748252a8d5d57539a6e59be8d6726345ee10e7afd2cb89fefb5"
|
||||
;;
|
||||
"win81x64" )
|
||||
size=4320526336
|
||||
sum="d8333cf427eb3318ff6ab755eb1dd9d433f0e2ae43745312c1cd23e83ca1ce51"
|
||||
;;
|
||||
"win81x64-enterprise-eval" )
|
||||
size=3961473024
|
||||
sum="2dedd44c45646c74efc5a028f65336027e14a56f76686a4631cf94ffe37c72f2"
|
||||
@@ -766,6 +803,11 @@ getLink1() {
|
||||
sum="d8333cf427eb3318ff6ab755eb1dd9d433f0e2ae43745312c1cd23e83ca1ce51"
|
||||
url="8.x/8.1/en_windows_8.1_with_update_x64_dvd_6051480.iso"
|
||||
;;
|
||||
"win81x64-enterprise" | "win81x64-enterprise-eval" )
|
||||
size=4139163648
|
||||
sum="c3c604c03677504e8905090a8ce5bb1dde76b6fd58e10f32e3a25bef21b2abe1"
|
||||
url="8.x/8.1/en_windows_8.1_enterprise_with_update_x64_dvd_6054382.iso"
|
||||
;;
|
||||
"win2025" | "win2025-eval" )
|
||||
size=5307176960
|
||||
sum="2293897341febdcea599f5412300b470b5288c6fd2b89666a7b27d283e8d3cf3"
|
||||
@@ -948,605 +990,6 @@ getLink2() {
|
||||
|
||||
getLink3() {
|
||||
|
||||
# Fallbacks for users who cannot connect to the Microsoft servers
|
||||
|
||||
local id="$1"
|
||||
local lang="$2"
|
||||
local ret="$3"
|
||||
local url=""
|
||||
local sum=""
|
||||
local size=""
|
||||
local host="https://drive.massgrave.dev"
|
||||
|
||||
culture=$(getLanguage "$lang" "culture")
|
||||
|
||||
case "${id,,}" in
|
||||
"win11x64-ltsc" | "win11x64-enterprise-ltsc-eval" )
|
||||
case "${culture,,}" in
|
||||
"ar" | "ar-"* ) url="ar-sa_windows_11_enterprise_ltsc_2024_x64_dvd_8012f159.iso" ;;
|
||||
"bg" | "bg-"* ) url="bg-bg_windows_11_enterprise_ltsc_2024_x64_dvd_2778f4e8.iso" ;;
|
||||
"cs" | "cs-"* ) url="cs-cz_windows_11_enterprise_ltsc_2024_x64_dvd_d4ef05f2.iso" ;;
|
||||
"da" | "da-"* ) url="da-dk_windows_11_enterprise_ltsc_2024_x64_dvd_c231c267.iso" ;;
|
||||
"de" | "de-"* ) url="de-de_windows_11_enterprise_ltsc_2024_x64_dvd_4f136f69.iso" ;;
|
||||
"el" | "el-"* ) url="el-gr_windows_11_enterprise_ltsc_2024_x64_dvd_54eaabb2.iso" ;;
|
||||
"gb" | "en-gb" ) url="en-gb_windows_11_enterprise_ltsc_2024_x64_dvd_e2137661.iso" ;;
|
||||
"en" | "en-"* )
|
||||
size=5125844992
|
||||
sum="157d8365a517c40afeb3106fdd74d0836e1025debbc343f2080e1a8687607f51"
|
||||
url="en-us_windows_11_enterprise_ltsc_2024_x64_dvd_965cfb00.iso" ;;
|
||||
"mx" | "es-mx" ) url="es-mx_windows_11_enterprise_ltsc_2024_x64_dvd_3310c094.iso" ;;
|
||||
"es" | "es-"* ) url="es-es_windows_11_enterprise_ltsc_2024_x64_dvd_77392d61.iso" ;;
|
||||
"et" | "et-"* ) url="et-ee_windows_11_enterprise_ltsc_2024_x64_dvd_2dbd4bfe.iso" ;;
|
||||
"fi" | "fi-"* ) url="fi-fi_windows_11_enterprise_ltsc_2024_x64_dvd_998f5df6.iso" ;;
|
||||
"ca" | "fr-ca" ) url="fr-ca_windows_11_enterprise_ltsc_2024_x64_dvd_78732953.iso" ;;
|
||||
"fr" | "fr-"* ) url="fr-fr_windows_11_enterprise_ltsc_2024_x64_dvd_d66e386e.iso" ;;
|
||||
"he" | "he-"* ) url="he-il_windows_11_enterprise_ltsc_2024_x64_dvd_fae050ec.iso" ;;
|
||||
"hr" | "hr-"* ) url="hr-hr_windows_11_enterprise_ltsc_2024_x64_dvd_e3594411.iso" ;;
|
||||
"hu" | "hu-"* ) url="hu-hu_windows_11_enterprise_ltsc_2024_x64_dvd_8fea6034.iso" ;;
|
||||
"it" | "it-"* ) url="it-it_windows_11_enterprise_ltsc_2024_x64_dvd_1e8cabb6.iso" ;;
|
||||
"ja" | "ja-"* ) url="ja-jp_windows_11_enterprise_ltsc_2024_x64_dvd_e59ad418.iso" ;;
|
||||
"ko" | "ko-"* ) url="ko-kr_windows_11_enterprise_ltsc_2024_x64_dvd_b6b6eb18.iso" ;;
|
||||
"lt" | "lt-"* ) url="lt-lt_windows_11_enterprise_ltsc_2024_x64_dvd_145479e9.iso" ;;
|
||||
"lv" | "lv-"* ) url="lv-lv_windows_11_enterprise_ltsc_2024_x64_dvd_e0ebc53d.iso" ;;
|
||||
"nb" | "nb-"* ) url="nb-no_windows_11_enterprise_ltsc_2024_x64_dvd_d41eeb48.iso" ;;
|
||||
"nl" | "nl-"* ) url="nl-nl_windows_11_enterprise_ltsc_2024_x64_dvd_e3063aab.iso" ;;
|
||||
"pl" | "pl-"* ) url="pl-pl_windows_11_enterprise_ltsc_2024_x64_dvd_e00807a1.iso" ;;
|
||||
"br" | "pt-br" ) url="pt-br_windows_11_enterprise_ltsc_2024_x64_dvd_2bb6b75b.iso" ;;
|
||||
"pt" | "pt-"* ) url="pt-pt_windows_11_enterprise_ltsc_2024_x64_dvd_2f34bd6b.iso" ;;
|
||||
"ro" | "ro-"* ) url="ro-ro_windows_11_enterprise_ltsc_2024_x64_dvd_2eadb4df.iso" ;;
|
||||
"ru" | "ru-"* ) url="ru-ru_windows_11_enterprise_ltsc_2024_x64_dvd_f9af5773.iso" ;;
|
||||
"sk" | "sk-"* ) url="sk-sk_windows_11_enterprise_ltsc_2024_x64_dvd_03b916e7.iso" ;;
|
||||
"sl" | "sl-"* ) url="sl-si_windows_11_enterprise_ltsc_2024_x64_dvd_310b3a76.iso" ;;
|
||||
"sr" | "sr-"* ) url="sr-latn-rs_windows_11_enterprise_ltsc_2024_x64_dvd_3dfa5da5.iso" ;;
|
||||
"sv" | "sv-"* ) url="sv-se_windows_11_enterprise_ltsc_2024_x64_dvd_191cf991.iso" ;;
|
||||
"th" | "th-"* ) url="th-th_windows_11_enterprise_ltsc_2024_x64_dvd_47ce2c8a.iso" ;;
|
||||
"tr" | "tr-"* ) url="tr-tr_windows_11_enterprise_ltsc_2024_x64_dvd_27bdab81.iso" ;;
|
||||
"uk" | "uk-"* ) url="uk-ua_windows_11_enterprise_ltsc_2024_x64_dvd_b3f00872.iso" ;;
|
||||
"zh-hk" | "zh-tw" ) url="zh-tw_windows_11_enterprise_ltsc_2024_x64_dvd_6287d84d.iso" ;;
|
||||
"zh" | "zh-"* ) url="zh-cn_windows_11_enterprise_ltsc_2024_x64_dvd_cff9cd2d.iso" ;;
|
||||
esac
|
||||
;;
|
||||
"win11x64-iot" | "win11x64-enterprise-iot-eval" )
|
||||
[[ "${lang,,}" != "en" ]] && [[ "${lang,,}" != "en-us" ]] && return 0
|
||||
size=5144817664
|
||||
sum="4f59662a96fc1da48c1b415d6c369d08af55ddd64e8f1c84e0166d9e50405d7a"
|
||||
url="en-us_windows_11_iot_enterprise_ltsc_2024_x64_dvd_f6b14814.iso"
|
||||
;;
|
||||
"win10x64-ltsc" | "win10x64-enterprise-ltsc-eval" )
|
||||
case "${culture,,}" in
|
||||
"ar" | "ar-"* ) url="ar-sa_windows_10_enterprise_ltsc_2021_x64_dvd_60bc2a7a.iso" ;;
|
||||
"bg" | "bg-"* ) url="bg-bg_windows_10_enterprise_ltsc_2021_x64_dvd_b0887275.iso" ;;
|
||||
"cs" | "cs-"* ) url="cs-cz_windows_10_enterprise_ltsc_2021_x64_dvd_d624c653.iso" ;;
|
||||
"da" | "da-"* ) url="da-dk_windows_10_enterprise_ltsc_2021_x64_dvd_6ec511bb.iso" ;;
|
||||
"de" | "de-"* ) url="de-de_windows_10_enterprise_ltsc_2021_x64_dvd_71796d33.iso" ;;
|
||||
"el" | "el-"* ) url="el-gr_windows_10_enterprise_ltsc_2021_x64_dvd_c83eab34.iso" ;;
|
||||
"gb" | "en-gb" ) url="en-gb_windows_10_enterprise_ltsc_2021_x64_dvd_7fe51fe8.iso" ;;
|
||||
"en" | "en-"* )
|
||||
size=4899461120
|
||||
sum="c90a6df8997bf49e56b9673982f3e80745058723a707aef8f22998ae6479597d"
|
||||
url="en-us_windows_10_enterprise_ltsc_2021_x64_dvd_d289cf96.iso" ;;
|
||||
"mx" | "es-mx" ) url="es-mx_windows_10_enterprise_ltsc_2021_x64_dvd_f6aaf384.iso" ;;
|
||||
"es" | "es-"* ) url="es-es_windows_10_enterprise_ltsc_2021_x64_dvd_51d721ea.iso" ;;
|
||||
"et" | "et-"* ) url="et-ee_windows_10_enterprise_ltsc_2021_x64_dvd_012a5c50.iso" ;;
|
||||
"fi" | "fi-"* ) url="fi-fi_windows_10_enterprise_ltsc_2021_x64_dvd_551582d9.iso" ;;
|
||||
"ca" | "fr-ca" ) url="fr-ca_windows_10_enterprise_ltsc_2021_x64_dvd_2770e649.iso" ;;
|
||||
"fr" | "fr-"* ) url="fr-fr_windows_10_enterprise_ltsc_2021_x64_dvd_bda01eb0.iso" ;;
|
||||
"he" | "he-"* ) url="he-il_windows_10_enterprise_ltsc_2021_x64_dvd_3a55ecd6.iso" ;;
|
||||
"hr" | "hr-"* ) url="hr-hr_windows_10_enterprise_ltsc_2021_x64_dvd_f5085b75.iso" ;;
|
||||
"hu" | "hu-"* ) url="hu-hu_windows_10_enterprise_ltsc_2021_x64_dvd_d541ddb3.iso" ;;
|
||||
"it" | "it-"* ) url="it-it_windows_10_enterprise_ltsc_2021_x64_dvd_0c1aa034.iso" ;;
|
||||
"ja" | "ja-"* ) url="ja-jp_windows_10_enterprise_ltsc_2021_x64_dvd_ef58c6a1.iso" ;;
|
||||
"ko" | "ko-"* ) url="ko-kr_windows_10_enterprise_ltsc_2021_x64_dvd_6d26f398.iso" ;;
|
||||
"lt" | "lt-"* ) url="lt-lt_windows_10_enterprise_ltsc_2021_x64_dvd_9ffbbd5b.iso" ;;
|
||||
"lv" | "lv-"* ) url="lv-lv_windows_10_enterprise_ltsc_2021_x64_dvd_6c89d2e0.iso" ;;
|
||||
"nb" | "nb-"* ) url="nb-no_windows_10_enterprise_ltsc_2021_x64_dvd_c65c51a5.iso" ;;
|
||||
"nl" | "nl-"* ) url="nl-nl_windows_10_enterprise_ltsc_2021_x64_dvd_88f53466.iso" ;;
|
||||
"pl" | "pl-"* ) url="pl-pl_windows_10_enterprise_ltsc_2021_x64_dvd_eff40776.iso" ;;
|
||||
"br" | "pt-br" ) url="pt-br_windows_10_enterprise_ltsc_2021_x64_dvd_f318268e.iso" ;;
|
||||
"pt" | "pt-"* ) url="pt-pt_windows_10_enterprise_ltsc_2021_x64_dvd_f2e9b6a0.iso" ;;
|
||||
"ro" | "ro-"* ) url="ro-ro_windows_10_enterprise_ltsc_2021_x64_dvd_ae2284d6.iso" ;;
|
||||
"ru" | "ru-"* ) url="ru-ru_windows_10_enterprise_ltsc_2021_x64_dvd_5044a1e7.iso" ;;
|
||||
"sk" | "sk-"* ) url="sk-sk_windows_10_enterprise_ltsc_2021_x64_dvd_d6c64c5f.iso" ;;
|
||||
"sl" | "sl-"* ) url="sl-si_windows_10_enterprise_ltsc_2021_x64_dvd_ec090386.iso" ;;
|
||||
"sr" | "sr-"* ) url="sr-latn-rs_windows_10_enterprise_ltsc_2021_x64_dvd_2d2f8815.iso" ;;
|
||||
"sv" | "sv-"* ) url="sv-se_windows_10_enterprise_ltsc_2021_x64_dvd_9a28bb6b.iso" ;;
|
||||
"th" | "th-"* ) url="th-th_windows_10_enterprise_ltsc_2021_x64_dvd_b7ed34d6.iso" ;;
|
||||
"tr" | "tr-"* ) url="tr-tr_windows_10_enterprise_ltsc_2021_x64_dvd_e55b1896.iso" ;;
|
||||
"uk" | "uk-"* ) url="uk-ua_windows_10_enterprise_ltsc_2021_x64_dvd_816da3c3.iso" ;;
|
||||
"zh-hk" | "zh-tw" ) url="zh-tw_windows_10_enterprise_ltsc_2021_x64_dvd_80dba877.iso" ;;
|
||||
"zh" | "zh-"* ) url="zh-cn_windows_10_enterprise_ltsc_2021_x64_dvd_033b7312.iso" ;;
|
||||
esac
|
||||
;;
|
||||
"win10x64-iot" | "win10x64-enterprise-iot-eval" )
|
||||
[[ "${lang,,}" != "en" ]] && [[ "${lang,,}" != "en-us" ]] && return 0
|
||||
size=4851668992
|
||||
sum="a0334f31ea7a3e6932b9ad7206608248f0bd40698bfb8fc65f14fc5e4976c160"
|
||||
url="en-us_windows_10_iot_enterprise_ltsc_2021_x64_dvd_257ad90f.iso"
|
||||
;;
|
||||
"win81x64-enterprise" | "win81x64-enterprise-eval" )
|
||||
case "${culture,,}" in
|
||||
"ar" | "ar-"* ) url="ar_windows_8.1_enterprise_with_update_x64_dvd_6050360.iso" ;;
|
||||
"bg" | "bg-"* ) url="bg_windows_8.1_enterprise_with_update_x64_dvd_6050367.iso" ;;
|
||||
"cs" | "cs-"* ) url="cs_windows_8.1_enterprise_with_update_x64_dvd_6050393.iso" ;;
|
||||
"da" | "da-"* ) url="da_windows_8.1_enterprise_with_update_x64_dvd_6050394.iso" ;;
|
||||
"de" | "de-"* ) url="de_windows_8.1_enterprise_with_update_x64_dvd_6050501.iso" ;;
|
||||
"el" | "el-"* ) url="el_windows_8.1_enterprise_with_update_x64_dvd_6050503.iso" ;;
|
||||
"gb" | "en-gb" ) url="en-gb_windows_8.1_enterprise_with_update_x64_dvd_6054383.iso" ;;
|
||||
"en" | "en-"* )
|
||||
size=4139163648
|
||||
sum="c3c604c03677504e8905090a8ce5bb1dde76b6fd58e10f32e3a25bef21b2abe1"
|
||||
url="en_windows_8.1_enterprise_with_update_x64_dvd_6054382.iso" ;;
|
||||
"es" | "es-"* ) url="es_windows_8.1_enterprise_with_update_x64_dvd_6050578.iso" ;;
|
||||
"et" | "et-"* ) url="et_windows_8.1_enterprise_with_update_x64_dvd_6054384.iso" ;;
|
||||
"fi" | "fi-"* ) url="fi_windows_8.1_enterprise_with_update_x64_dvd_6050497.iso" ;;
|
||||
"fr" | "fr-"* ) url="fr_windows_8.1_enterprise_with_update_x64_dvd_6050499.iso" ;;
|
||||
"he" | "he-"* ) url="he_windows_8.1_enterprise_with_update_x64_dvd_6050504.iso" ;;
|
||||
"hr" | "hr-"* ) url="hr_windows_8.1_enterprise_with_update_x64_dvd_6050391.iso" ;;
|
||||
"hu" | "hu-"* ) url="hu_windows_8.1_enterprise_with_update_x64_dvd_6050505.iso" ;;
|
||||
"it" | "it-"* ) url="it_windows_8.1_enterprise_with_update_x64_dvd_6050507.iso" ;;
|
||||
"ja" | "ja-"* ) url="ja_windows_8.1_enterprise_with_update_x64_dvd_6050508.iso" ;;
|
||||
"ko" | "ko-"* ) url="ko_windows_8.1_enterprise_with_update_x64_dvd_6050509.iso" ;;
|
||||
"lt" | "lt-"* ) url="lt_windows_8.1_enterprise_with_update_x64_dvd_6050511.iso" ;;
|
||||
"lv" | "lv-"* ) url="lv_windows_8.1_enterprise_with_update_x64_dvd_6050510.iso" ;;
|
||||
"nb" | "nb-"* ) url="nb_windows_8.1_enterprise_with_update_x64_dvd_6050512.iso" ;;
|
||||
"nl" | "nl-"* ) url="nl_windows_8.1_enterprise_with_update_x64_dvd_6054381.iso" ;;
|
||||
"pl" | "pl-"* ) url="pl_windows_8.1_enterprise_with_update_x64_dvd_6050515.iso" ;;
|
||||
"br" | "pt-br" ) url="pt_windows_8.1_enterprise_with_update_x64_dvd_6050521.iso" ;;
|
||||
"pt" | "pt-"* ) url="pp_windows_8.1_enterprise_with_update_x64_dvd_6050526.iso" ;;
|
||||
"ro" | "ro-"* ) url="ro_windows_8.1_enterprise_with_update_x64_dvd_6050534.iso" ;;
|
||||
"ru" | "ru-"* ) url="ru_windows_8.1_enterprise_with_update_x64_dvd_6050542.iso" ;;
|
||||
"sk" | "sk-"* ) url="sk_windows_8.1_enterprise_with_update_x64_dvd_6050562.iso" ;;
|
||||
"sl" | "sl-"* ) url="sl_windows_8.1_enterprise_with_update_x64_dvd_6050570.iso" ;;
|
||||
"sr" | "sr-"* ) url="sr-latn_windows_8.1_enterprise_with_update_x64_dvd_6050553.iso" ;;
|
||||
"sv" | "sv-"* ) url="sv_windows_8.1_enterprise_with_update_x64_dvd_6050590.iso" ;;
|
||||
"th" | "th-"* ) url="th_windows_8.1_enterprise_with_update_x64_dvd_6050602.iso" ;;
|
||||
"tr" | "tr-"* ) url="tr_windows_8.1_enterprise_with_update_x64_dvd_6050609.iso" ;;
|
||||
"uk" | "uk-"* ) url="uk_windows_8.1_enterprise_with_update_x64_dvd_6050618.iso" ;;
|
||||
"zh-hk" ) url="hk_windows_8.1_enterprise_with_update_x64_dvd_6050380.iso" ;;
|
||||
"zh-tw" ) url="tw_windows_8.1_enterprise_with_update_x64_dvd_6050387.iso" ;;
|
||||
"zh" | "zh-"* ) url="cn_windows_8.1_enterprise_with_update_x64_dvd_6050374.iso" ;;
|
||||
esac
|
||||
;;
|
||||
"win2025" | "win2025-eval" )
|
||||
case "${culture,,}" in
|
||||
"cs" | "cs-"* ) url="cs-cz_windows_server_2025_preview_x64_dvd_8b1f5b49.iso" ;;
|
||||
"de" | "de-"* ) url="de-de_windows_server_2025_preview_x64_dvd_1c3dfe1c.iso" ;;
|
||||
"en" | "en-"* )
|
||||
size=5307176960
|
||||
sum="2293897341febdcea599f5412300b470b5288c6fd2b89666a7b27d283e8d3cf3"
|
||||
url="en-us_windows_server_2025_preview_x64_dvd_ce9eb1a5.iso" ;;
|
||||
"es" | "es-"* ) url="es-es_windows_server_2025_preview_x64_dvd_b07cc858.iso" ;;
|
||||
"fr" | "fr-"* ) url="fr-fr_windows_server_2025_preview_x64_dvd_036e8a78.iso" ;;
|
||||
"hu" | "hu-"* ) url="hu-hu_windows_server_2025_preview_x64_dvd_2d5d77e5.iso" ;;
|
||||
"it" | "it-"* ) url="it-it_windows_server_2025_preview_x64_dvd_eaccac73.iso" ;;
|
||||
"ja" | "ja-"* ) url="ja-jp_windows_server_2025_preview_x64_dvd_62f802be.iso" ;;
|
||||
"ko" | "ko-"* ) url="ko-kr_windows_server_2025_preview_x64_dvd_e2c3e8f0.iso" ;;
|
||||
"nl" | "nl-"* ) url="nl-nl_windows_server_2025_preview_x64_dvd_314b4ed1.iso" ;;
|
||||
"pl" | "pl-"* ) url="pl-pl_windows_server_2025_preview_x64_dvd_be4b099e.iso" ;;
|
||||
"br" | "pt-br" ) url="pt-br_windows_server_2025_preview_x64_dvd_993c803a.iso" ;;
|
||||
"pt" | "pt-"* ) url="pt-pt_windows_server_2025_preview_x64_dvd_869aa534.iso" ;;
|
||||
"ru" | "ru-"* ) url="ru-ru_windows_server_2025_preview_x64_dvd_5ada1817.iso" ;;
|
||||
"sv" | "sv-"* ) url="sv-se_windows_server_2025_preview_x64_dvd_5fafd4f7.iso" ;;
|
||||
"tr" | "tr-"* ) url="tr-tr_windows_server_2025_preview_x64_dvd_3aab7fda.iso" ;;
|
||||
"zh-hk" | "zh-tw" ) url="zh-tw_windows_server_2025_preview_x64_dvd_9b147dcd.iso" ;;
|
||||
"zh" | "zh-"* ) url="zh-cn_windows_server_2025_preview_x64_dvd_a12bb0bf.iso" ;;
|
||||
esac
|
||||
;;
|
||||
"win2019" | "win2019-eval" )
|
||||
case "${culture,,}" in
|
||||
"cs" | "cs-"* ) url="cs-cz_windows_server_2019_x64_dvd_3781c31c.iso" ;;
|
||||
"de" | "de-"* ) url="de-de_windows_server_2019_x64_dvd_132f7aa4.iso" ;;
|
||||
"en" | "en-"* )
|
||||
size=5651695616
|
||||
sum="ea247e5cf4df3e5829bfaaf45d899933a2a67b1c700a02ee8141287a8520261c"
|
||||
url="en-us_windows_server_2019_x64_dvd_f9475476.iso" ;;
|
||||
"es" | "es-"* ) url="es-es_windows_server_2019_x64_dvd_3ce0fd9e.iso" ;;
|
||||
"fr" | "fr-"* ) url="fr-fr_windows_server_2019_x64_dvd_f6f6acf6.iso" ;;
|
||||
"hu" | "hu-"* ) url="hu-hu_windows_server_2019_x64_dvd_1d834c46.iso" ;;
|
||||
"it" | "it-"* ) url="it-it_windows_server_2019_x64_dvd_454267de.iso" ;;
|
||||
"ja" | "ja-"* ) url="ja-jp_windows_server_2019_x64_dvd_3899c3a3.iso" ;;
|
||||
"ko" | "ko-"* ) url="ko-kr_windows_server_2019_x64_dvd_84101c0a.iso" ;;
|
||||
"nl" | "nl-"* ) url="nl-nl_windows_server_2019_x64_dvd_f69d914e.iso" ;;
|
||||
"pl" | "pl-"* ) url="pl-pl_windows_server_2019_x64_dvd_a50263e1.iso" ;;
|
||||
"br" | "pt-br" ) url="pt-br_windows_server_2019_x64_dvd_aee8c1c2.iso" ;;
|
||||
"pt" | "pt-"* ) url="pt-pt_windows_server_2019_x64_dvd_464373e8.iso" ;;
|
||||
"ru" | "ru-"* ) url="ru-ru_windows_server_2019_x64_dvd_e02b76ba.iso" ;;
|
||||
"sv" | "sv-"* ) url="sv-se_windows_server_2019_x64_dvd_48c1aeff.iso" ;;
|
||||
"tr" | "tr-"* ) url="tr-tr_windows_server_2019_x64_dvd_b51af600.iso" ;;
|
||||
"zh-hk" | "zh-tw" ) url="zh-tw_windows_server_2019_x64_dvd_a4c80409.iso" ;;
|
||||
"zh" | "zh-"* ) url="zh-cn_windows_server_2019_x64_dvd_19d65722.iso" ;;
|
||||
esac
|
||||
;;
|
||||
"win7x64" | "win7x64-enterprise" )
|
||||
case "${culture,,}" in
|
||||
"ar" | "ar-"* ) url="ar_windows_7_enterprise_with_sp1_x64_dvd_u_677643.iso" ;;
|
||||
"bg" | "bg-"* ) url="bg_windows_7_enterprise_with_sp1_x64_dvd_u_677644.iso" ;;
|
||||
"cs" | "cs-"* ) url="cs_windows_7_enterprise_with_sp1_x64_dvd_u_677646.iso" ;;
|
||||
"da" | "da-"* ) url="da_windows_7_enterprise_with_sp1_x64_dvd_u_677648.iso" ;;
|
||||
"de" | "de-"* ) url="de_windows_7_enterprise_with_sp1_x64_dvd_u_677649.iso" ;;
|
||||
"el" | "el-"* ) url="el_windows_7_enterprise_with_sp1_x64_dvd_u_677650.iso" ;;
|
||||
"en" | "en-"* )
|
||||
size=3182604288
|
||||
sum="ee69f3e9b86ff973f632db8e01700c5724ef78420b175d25bae6ead90f6805a7"
|
||||
url="en_windows_7_enterprise_with_sp1_x64_dvd_u_677651.iso" ;;
|
||||
"es" | "es-"* ) url="es_windows_7_enterprise_with_sp1_x64_dvd_u_677652.iso" ;;
|
||||
"et" | "et-"* ) url="et_windows_7_enterprise_with_sp1_x64_dvd_u_677653.iso" ;;
|
||||
"fi" | "fi-"* ) url="fi_windows_7_enterprise_with_sp1_x64_dvd_u_677655.iso" ;;
|
||||
"fr" | "fr-"* ) url="fr_windows_7_enterprise_with_sp1_x64_dvd_u_677656.iso" ;;
|
||||
"he" | "he-"* ) url="he_windows_7_enterprise_with_sp1_x64_dvd_u_677657.iso" ;;
|
||||
"hr" | "hr-"* ) url="hr_windows_7_enterprise_with_sp1_x64_dvd_u_677658.iso" ;;
|
||||
"hu" | "hu-"* ) url="hu_windows_7_enterprise_with_sp1_x64_dvd_u_677659.iso" ;;
|
||||
"it" | "it-"* ) url="it_windows_7_enterprise_with_sp1_x64_dvd_u_677660.iso" ;;
|
||||
"ja" | "ja-"* ) url="ja_windows_7_enterprise_with_sp1_x64_dvd_u_677662.iso" ;;
|
||||
"ko" | "ko-"* ) url="ko_windows_7_enterprise_k_with_sp1_x64_dvd_u_677728.iso" ;;
|
||||
"lt" | "lt-"* ) url="lt_windows_7_enterprise_with_sp1_x64_dvd_u_677663.iso" ;;
|
||||
"lv" | "lv-"* ) url="lv_windows_7_enterprise_with_sp1_x64_dvd_u_677664.iso" ;;
|
||||
"nb" | "nb-"* ) url="no_windows_7_enterprise_with_sp1_x64_dvd_u_677665.iso" ;;
|
||||
"nl" | "nl-"* ) url="nl_windows_7_enterprise_with_sp1_x64_dvd_u_677666.iso" ;;
|
||||
"pl" | "pl-"* ) url="pl_windows_7_enterprise_with_sp1_x64_dvd_u_677667.iso" ;;
|
||||
"br" | "pt-br" ) url="pt_windows_7_enterprise_with_sp1_x64_dvd_u_677668.iso" ;;
|
||||
"pt" | "pt-"* ) url="pp_windows_7_enterprise_with_sp1_x64_dvd_u_677669.iso" ;;
|
||||
"ro" | "ro-"* ) url="ro_windows_7_enterprise_with_sp1_x64_dvd_u_677670.iso" ;;
|
||||
"ru" | "ru-"* ) url="ru_windows_7_enterprise_with_sp1_x64_dvd_u_677671.iso" ;;
|
||||
"sk" | "sk-"* ) url="sk_windows_7_enterprise_with_sp1_x64_dvd_u_677673.iso" ;;
|
||||
"sl" | "sl-"* ) url="sl_windows_7_enterprise_with_sp1_x64_dvd_u_677674.iso" ;;
|
||||
"sr" | "sr-"* ) url="sr_windows_7_enterprise_with_sp1_x64_dvd_u_677675.iso" ;;
|
||||
"sv" | "sv-"* ) url="sv_windows_7_enterprise_with_sp1_x64_dvd_u_677676.iso" ;;
|
||||
"th" | "th-"* ) url="th_windows_7_enterprise_with_sp1_x64_dvd_u_677678.iso" ;;
|
||||
"tr" | "tr-"* ) url="tr_windows_7_enterprise_with_sp1_x64_dvd_u_677681.iso" ;;
|
||||
"uk" | "uk-"* ) url="uk_windows_7_enterprise_with_sp1_x64_dvd_u_677683.iso" ;;
|
||||
"zh-hk" ) url="hk_windows_7_enterprise_with_sp1_x64_dvd_u_677687.iso" ;;
|
||||
"zh-tw" ) url="tw_windows_7_enterprise_with_sp1_x64_dvd_u_677689.iso" ;;
|
||||
"zh" | "zh-"* ) url="cn_windows_7_enterprise_with_sp1_x64_dvd_u_677685.iso" ;;
|
||||
esac
|
||||
;;
|
||||
"win7x64-ultimate" )
|
||||
case "${culture,,}" in
|
||||
"ar" | "ar-"* ) url="ar_windows_7_ultimate_with_sp1_x64_dvd_u_677345.iso" ;;
|
||||
"bg" | "bg-"* ) url="bg_windows_7_ultimate_with_sp1_x64_dvd_u_677363.iso" ;;
|
||||
"cs" | "cs-"* ) url="cs_windows_7_ultimate_with_sp1_x64_dvd_u_677376.iso" ;;
|
||||
"da" | "da-"* ) url="da_windows_7_ultimate_with_sp1_x64_dvd_u_677294.iso" ;;
|
||||
"de" | "de-"* ) url="de_windows_7_ultimate_with_sp1_x64_dvd_u_677306.iso" ;;
|
||||
"el" | "el-"* ) url="el_windows_7_ultimate_with_sp1_x64_dvd_u_677318.iso" ;;
|
||||
"en" | "en-"* )
|
||||
size=3320903680
|
||||
sum="36f4fa2416d0982697ab106e3a72d2e120dbcdb6cc54fd3906d06120d0653808"
|
||||
url="en_windows_7_ultimate_with_sp1_x64_dvd_u_677332.iso" ;;
|
||||
"es" | "es-"* ) url="es_windows_7_ultimate_with_sp1_x64_dvd_u_677350.iso" ;;
|
||||
"et" | "et-"* ) url="et_windows_7_ultimate_with_sp1_x64_dvd_u_677368.iso" ;;
|
||||
"fi" | "fi-"* ) url="fi_windows_7_ultimate_with_sp1_x64_dvd_u_677378.iso" ;;
|
||||
"fr" | "fr-"* ) url="fr_windows_7_ultimate_with_sp1_x64_dvd_u_677299.iso" ;;
|
||||
"he" | "he-"* ) url="he_windows_7_ultimate_with_sp1_x64_dvd_u_677312.iso" ;;
|
||||
"hr" | "hr-"* ) url="hr_windows_7_ultimate_with_sp1_x64_dvd_u_677324.iso" ;;
|
||||
"hu" | "hu-"* ) url="hu_windows_7_ultimate_with_sp1_x64_dvd_u_677338.iso" ;;
|
||||
"it" | "it-"* ) url="it_windows_7_ultimate_with_sp1_x64_dvd_u_677356.iso" ;;
|
||||
"ja" | "ja-"* ) url="ja_windows_7_ultimate_with_sp1_x64_dvd_u_677372.iso" ;;
|
||||
"ko" | "ko-"* ) url="ko_windows_7_ultimate_k_with_sp1_x64_dvd_u_677502.iso" ;;
|
||||
"lt" | "lt-"* ) url="lt_windows_7_ultimate_with_sp1_x64_dvd_u_677379.iso" ;;
|
||||
"lv" | "lv-"* ) url="lv_windows_7_ultimate_with_sp1_x64_dvd_u_677302.iso" ;;
|
||||
"nb" | "nb-"* ) url="no_windows_7_ultimate_with_sp1_x64_dvd_u_677314.iso" ;;
|
||||
"nl" | "nl-"* ) url="nl_windows_7_ultimate_with_sp1_x64_dvd_u_677325.iso" ;;
|
||||
"pl" | "pl-"* ) url="pl_windows_7_ultimate_with_sp1_x64_dvd_u_677341.iso" ;;
|
||||
"br" | "pt-br" ) url="pt_windows_7_ultimate_with_sp1_x64_dvd_u_677358.iso" ;;
|
||||
"pt" | "pt-"* ) url="pp_windows_7_ultimate_with_sp1_x64_dvd_u_677373.iso" ;;
|
||||
"ro" | "ro-"* ) url="ro_windows_7_ultimate_with_sp1_x64_dvd_u_677380.iso" ;;
|
||||
"ru" | "ru-"* ) url="ru_windows_7_ultimate_with_sp1_x64_dvd_u_677391.iso" ;;
|
||||
"sk" | "sk-"* ) url="sk_windows_7_ultimate_with_sp1_x64_dvd_u_677393.iso" ;;
|
||||
"sl" | "sl-"* ) url="sl_windows_7_ultimate_with_sp1_x64_dvd_u_677396.iso" ;;
|
||||
"sr" | "sr-"* ) url="sr_windows_7_ultimate_with_sp1_x64_dvd_u_677398.iso" ;;
|
||||
"sv" | "sv-"* ) url="sv_windows_7_ultimate_with_sp1_x64_dvd_u_677400.iso" ;;
|
||||
"th" | "th-"* ) url="th_windows_7_ultimate_with_sp1_x64_dvd_u_677402.iso" ;;
|
||||
"tr" | "tr-"* ) url="tr_windows_7_ultimate_with_sp1_x64_dvd_u_677404.iso" ;;
|
||||
"uk" | "uk-"* ) url="uk_windows_7_ultimate_with_sp1_x64_dvd_u_677406.iso" ;;
|
||||
"zh-hk" ) url="hk_windows_7_ultimate_with_sp1_x64_dvd_u_677411.iso" ;;
|
||||
"zh-tw" ) url="tw_windows_7_ultimate_with_sp1_x64_dvd_u_677414.iso" ;;
|
||||
"zh" | "zh-"* ) url="cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso" ;;
|
||||
esac
|
||||
;;
|
||||
"win7x86" | "win7x86-enterprise" )
|
||||
case "${culture,,}" in
|
||||
"ar" | "ar-"* ) url="ar_windows_7_enterprise_with_sp1_x86_dvd_u_677691.iso" ;;
|
||||
"bg" | "bg-"* ) url="bg_windows_7_enterprise_with_sp1_x86_dvd_u_677693.iso" ;;
|
||||
"cs" | "cs-"* ) url="cs_windows_7_enterprise_with_sp1_x86_dvd_u_677695.iso" ;;
|
||||
"da" | "da-"* ) url="da_windows_7_enterprise_with_sp1_x86_dvd_u_677698.iso" ;;
|
||||
"de" | "de-"* ) url="de_windows_7_enterprise_with_sp1_x86_dvd_u_677702.iso" ;;
|
||||
"el" | "el-"* ) url="el_windows_7_enterprise_with_sp1_x86_dvd_u_677706.iso" ;;
|
||||
"en" | "en-"* )
|
||||
size=2434502656
|
||||
sum="8bdd46ff8cb8b8de9c4aba02706629c8983c45e87da110e64e13be17c8434dad"
|
||||
url="en_windows_7_enterprise_with_sp1_x86_dvd_u_677710.iso" ;;
|
||||
"es" | "es-"* ) url="es_windows_7_enterprise_with_sp1_x86_dvd_u_677714.iso" ;;
|
||||
"et" | "et-"* ) url="et_windows_7_enterprise_with_sp1_x86_dvd_u_677718.iso" ;;
|
||||
"fi" | "fi-"* ) url="fi_windows_7_enterprise_with_sp1_x86_dvd_u_677722.iso" ;;
|
||||
"fr" | "fr-"* ) url="fr_windows_7_enterprise_with_sp1_x86_dvd_u_677727.iso" ;;
|
||||
"he" | "he-"* ) url="he_windows_7_enterprise_with_sp1_x86_dvd_u_677733.iso" ;;
|
||||
"hr" | "hr-"* ) url="hr_windows_7_enterprise_with_sp1_x86_dvd_u_677739.iso" ;;
|
||||
"hu" | "hu-"* ) url="hu_windows_7_enterprise_with_sp1_x86_dvd_u_677744.iso" ;;
|
||||
"it" | "it-"* ) url="it_windows_7_enterprise_with_sp1_x86_dvd_u_677749.iso" ;;
|
||||
"ja" | "ja-"* ) url="ja_windows_7_enterprise_with_sp1_x86_dvd_u_677757.iso" ;;
|
||||
"ko" | "ko-"* ) url="ko_windows_7_enterprise_k_with_sp1_x86_dvd_u_677732.iso" ;;
|
||||
"lt" | "lt-"* ) url="lt_windows_7_enterprise_with_sp1_x86_dvd_u_677764.iso" ;;
|
||||
"lv" | "lv-"* ) url="lv_windows_7_enterprise_with_sp1_x86_dvd_u_677677.iso" ;;
|
||||
"nb" | "nb-"* ) url="no_windows_7_enterprise_with_sp1_x86_dvd_u_677679.iso" ;;
|
||||
"nl" | "nl-"* ) url="nl_windows_7_enterprise_with_sp1_x86_dvd_u_677682.iso" ;;
|
||||
"pl" | "pl-"* ) url="pl_windows_7_enterprise_with_sp1_x86_dvd_u_677684.iso" ;;
|
||||
"br" | "pt-br" ) url="pt_windows_7_enterprise_with_sp1_x86_dvd_u_677686.iso" ;;
|
||||
"pt" | "pt-"* ) url="pp_windows_7_enterprise_with_sp1_x86_dvd_u_677688.iso" ;;
|
||||
"ro" | "ro-"* ) url="ro_windows_7_enterprise_with_sp1_x86_dvd_u_677690.iso" ;;
|
||||
"ru" | "ru-"* ) url="ru_windows_7_enterprise_with_sp1_x86_dvd_u_677692.iso" ;;
|
||||
"sk" | "sk-"* ) url="sk_windows_7_enterprise_with_sp1_x86_dvd_u_677694.iso" ;;
|
||||
"sl" | "sl-"* ) url="sl_windows_7_enterprise_with_sp1_x86_dvd_u_677696.iso" ;;
|
||||
"sr" | "sr-"* ) url="sr_windows_7_enterprise_with_sp1_x86_dvd_u_677699.iso" ;;
|
||||
"sv" | "sv-"* ) url="sv_windows_7_enterprise_with_sp1_x86_dvd_u_677701.iso" ;;
|
||||
"th" | "th-"* ) url="th_windows_7_enterprise_with_sp1_x86_dvd_u_677705.iso" ;;
|
||||
"tr" | "tr-"* ) url="tr_windows_7_enterprise_with_sp1_x86_dvd_u_677708.iso" ;;
|
||||
"uk" | "uk-"* ) url="uk_windows_7_enterprise_with_sp1_x86_dvd_u_677712.iso" ;;
|
||||
"zh-hk" ) url="hk_windows_7_enterprise_with_sp1_x86_dvd_u_677720.iso" ;;
|
||||
"zh-tw" ) url="tw_windows_7_enterprise_with_sp1_x86_dvd_u_677723.iso" ;;
|
||||
"zh" | "zh-"* ) url="cn_windows_7_enterprise_with_sp1_x86_dvd_u_677716.iso" ;;
|
||||
esac
|
||||
;;
|
||||
"win7x86-ultimate" )
|
||||
case "${culture,,}" in
|
||||
"ar" | "ar-"* ) url="ar_windows_7_ultimate_with_sp1_x86_dvd_u_677448.iso" ;;
|
||||
"bg" | "bg-"* ) url="bg_windows_7_ultimate_with_sp1_x86_dvd_u_677450.iso" ;;
|
||||
"cs" | "cs-"* ) url="cs_windows_7_ultimate_with_sp1_x86_dvd_u_677452.iso" ;;
|
||||
"da" | "da-"* ) url="da_windows_7_ultimate_with_sp1_x86_dvd_u_677454.iso" ;;
|
||||
"de" | "de-"* ) url="de_windows_7_ultimate_with_sp1_x86_dvd_u_677456.iso" ;;
|
||||
"el" | "el-"* ) url="el_windows_7_ultimate_with_sp1_x86_dvd_u_677458.iso" ;;
|
||||
"en" | "en-"* )
|
||||
size=2564476928
|
||||
sum="e2c009a66d63a742941f5087acae1aa438dcbe87010bddd53884b1af6b22c940"
|
||||
url="en_windows_7_ultimate_with_sp1_x86_dvd_u_677460.iso" ;;
|
||||
"es" | "es-"* ) url="es_windows_7_ultimate_with_sp1_x86_dvd_u_677462.iso" ;;
|
||||
"et" | "et-"* ) url="et_windows_7_ultimate_with_sp1_x86_dvd_u_677464.iso" ;;
|
||||
"fi" | "fi-"* ) url="fi_windows_7_ultimate_with_sp1_x86_dvd_u_677466.iso" ;;
|
||||
"fr" | "fr-"* ) url="fr_windows_7_ultimate_with_sp1_x86_dvd_u_677434.iso" ;;
|
||||
"he" | "he-"* ) url="he_windows_7_ultimate_with_sp1_x86_dvd_u_677436.iso" ;;
|
||||
"hr" | "hr-"* ) url="hr_windows_7_ultimate_with_sp1_x86_dvd_u_677438.iso" ;;
|
||||
"hu" | "hu-"* ) url="hu_windows_7_ultimate_with_sp1_x86_dvd_u_677441.iso" ;;
|
||||
"it" | "it-"* ) url="it_windows_7_ultimate_with_sp1_x86_dvd_u_677443.iso" ;;
|
||||
"ja" | "ja-"* ) url="ja_windows_7_ultimate_with_sp1_x86_dvd_u_677445.iso" ;;
|
||||
"ko" | "ko-"* ) url="ko_windows_7_ultimate_k_with_sp1_x86_dvd_u_677508.iso" ;;
|
||||
"lt" | "lt-"* ) url="lt_windows_7_ultimate_with_sp1_x86_dvd_u_677447.iso" ;;
|
||||
"lv" | "lv-"* ) url="lv_windows_7_ultimate_with_sp1_x86_dvd_u_677449.iso" ;;
|
||||
"nb" | "nb-"* ) url="no_windows_7_ultimate_with_sp1_x86_dvd_u_677451.iso" ;;
|
||||
"nl" | "nl-"* ) url="nl_windows_7_ultimate_with_sp1_x86_dvd_u_677453.iso" ;;
|
||||
"pl" | "pl-"* ) url="pl_windows_7_ultimate_with_sp1_x86_dvd_u_677455.iso" ;;
|
||||
"br" | "pt-br" ) url="pt_windows_7_ultimate_with_sp1_x86_dvd_u_677457.iso" ;;
|
||||
"pt" | "pt-"* ) url="pp_windows_7_ultimate_with_sp1_x86_dvd_u_677459.iso" ;;
|
||||
"ro" | "ro-"* ) url="ro_windows_7_ultimate_with_sp1_x86_dvd_u_677461.iso" ;;
|
||||
"ru" | "ru-"* ) url="ru_windows_7_ultimate_with_sp1_x86_dvd_u_677463.iso" ;;
|
||||
"sk" | "sk-"* ) url="sk_windows_7_ultimate_with_sp1_x86_dvd_u_677465.iso" ;;
|
||||
"sl" | "sl-"* ) url="sl_windows_7_ultimate_with_sp1_x86_dvd_u_677467.iso" ;;
|
||||
"sr" | "sr-"* ) url="sr_windows_7_ultimate_with_sp1_x86_dvd_u_677468.iso" ;;
|
||||
"sv" | "sv-"* ) url="sv_windows_7_ultimate_with_sp1_x86_dvd_u_677482.iso" ;;
|
||||
"th" | "th-"* ) url="th_windows_7_ultimate_with_sp1_x86_dvd_u_677483.iso" ;;
|
||||
"tr" | "tr-"* ) url="tr_windows_7_ultimate_with_sp1_x86_dvd_u_677484.iso" ;;
|
||||
"uk" | "uk-"* ) url="uk_windows_7_ultimate_with_sp1_x86_dvd_u_677485.iso" ;;
|
||||
"zh-hk" ) url="hk_windows_7_ultimate_with_sp1_x86_dvd_u_677487.iso" ;;
|
||||
"zh-tw" ) url="tw_windows_7_ultimate_with_sp1_x86_dvd_u_677488.iso" ;;
|
||||
"zh" | "zh-"* ) url="cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso" ;;
|
||||
esac
|
||||
;;
|
||||
"winvistax64" | "winvistax64-enterprise" )
|
||||
case "${culture,,}" in
|
||||
"ar" | "ar-"* ) url="ar_windows_vista_enterprise_with_sp2_x64_dvd_x15-40408.iso" ;;
|
||||
"bg" | "bg-"* ) url="bg_windows_vista_enterprise_with_sp2_x64_dvd_x15-40410.iso" ;;
|
||||
"cs" | "cs-"* ) url="cs_windows_vista_enterprise_with_sp2_x64_dvd_x15-40412.iso" ;;
|
||||
"da" | "da-"* ) url="da_windows_vista_enterprise_with_sp2_x64_dvd_x15-40416.iso" ;;
|
||||
"de" | "de-"* ) url="de_windows_vista_enterprise_sp2_x64_dvd_342376.iso" ;;
|
||||
"el" | "el-"* ) url="el_windows_vista_enterprise_with_sp2_x64_dvd_x15-40423.iso" ;;
|
||||
"en" | "en-"* )
|
||||
size=3205953536
|
||||
sum="0a0cd511b3eac95c6f081419c9c65b12317b9d6a8d9707f89d646c910e788016"
|
||||
url="en_windows_vista_enterprise_sp2_x64_dvd_342332.iso" ;;
|
||||
"es" | "es-"* ) url="es_windows_vista_enterprise_sp2_x64_dvd_342415.iso" ;;
|
||||
"et" | "et-"* ) url="et_windows_vista_enterprise_with_sp2_x64_dvd_x15-40437.iso" ;;
|
||||
"fi" | "fi-"* ) url="fi_windows_vista_enterprise_with_sp2_x64_dvd_x15-40451.iso" ;;
|
||||
"fr" | "fr-"* ) url="fr_windows_vista_enterprise_sp2_x64_dvd_342355.iso" ;;
|
||||
"he" | "he-"* ) url="he_windows_vista_enterprise_with_sp2_x64_dvd_x15-40425.iso" ;;
|
||||
"hr" | "hr-"* ) url="hr_windows_vista_enterprise_with_sp2_x64_dvd_x15-40396.iso" ;;
|
||||
"hu" | "hu-"* ) url="hu_windows_vista_enterprise_with_sp2_x64_dvd_x15-40427.iso" ;;
|
||||
"it" | "it-"* ) url="it_windows_vista_enterprise_with_sp2_x64_dvd_x15-40429.iso" ;;
|
||||
"ja" | "ja-"* ) url="ja_windows_vista_enterprise_sp2_x64_dvd_342393.iso" ;;
|
||||
"ko" | "ko-"* ) url="ko_windows_vista_enterprise_k_with_sp2_x64_dvd_x15-40433.iso" ;;
|
||||
"lt" | "lt-"* ) url="lt_windows_vista_enterprise_with_sp2_x64_dvd_x15-40394.iso" ;;
|
||||
"lv" | "lv-"* ) url="lv_windows_vista_enterprise_with_sp2_x64_dvd_x15-40392.iso" ;;
|
||||
"nb" | "nb-"* ) url="no_windows_vista_enterprise_with_sp2_x64_dvd_x15-40439.iso" ;;
|
||||
"nl" | "nl-"* ) url="nl_windows_vista_enterprise_with_sp2_x64_dvd_x15-40441.iso" ;;
|
||||
"pl" | "pl-"* ) url="pl_windows_vista_enterprise_with_sp2_x64_dvd_x15-40445.iso" ;;
|
||||
"br" | "pt-br" ) url="pt_windows_vista_enterprise_with_sp2_x64_dvd_x15-40400.iso" ;;
|
||||
"pt" | "pt-"* ) url="pp_windows_vista_enterprise_with_sp2_x64_dvd_x15-40443.iso" ;;
|
||||
"ro" | "ro-"* ) url="ro_windows_vista_enterprise_with_sp2_x64_dvd_x15-40447.iso" ;;
|
||||
"ru" | "ru-"* ) url="ru_windows_vista_enterprise_with_sp2_x64_dvd_x15-40455.iso" ;;
|
||||
"sk" | "sk-"* ) url="sk_windows_vista_enterprise_with_sp2_x64_dvd_x15-40453.iso" ;;
|
||||
"sl" | "sl-"* ) url="sl_windows_vista_enterprise_with_sp2_x64_dvd_x15-40435.iso" ;;
|
||||
"sr" | "sr-"* ) url="sr_windows_vista_enterprise_with_sp2_x64_dvd_x15-40406.iso" ;;
|
||||
"sv" | "sv-"* ) url="sv_windows_vista_enterprise_with_sp2_x64_dvd_x15-40449.iso" ;;
|
||||
"th" | "th-"* ) url="th_windows_vista_enterprise_with_sp2_x64_dvd_x15-40457.iso" ;;
|
||||
"tr" | "tr-"* ) url="tr_windows_vista_enterprise_with_sp2_x64_dvd_x15-40459.iso" ;;
|
||||
"uk" | "uk-"* ) url="uk_windows_vista_enterprise_with_sp2_x64_dvd_x15-40398.iso" ;;
|
||||
"zh-hk" ) url="hk_windows_vista_enterprise_with_sp2_x64_dvd_x15-40463.iso" ;;
|
||||
"zh-tw" ) url="tw_windows_vista_enterprise_with_sp2_x64_dvd_x15-40461.iso" ;;
|
||||
"zh" | "zh-"* ) url="cn_windows_vista_enterprise_with_sp2_x64_dvd_x15-40402.iso" ;;
|
||||
esac
|
||||
;;
|
||||
"winvistax64-ultimate" )
|
||||
case "${culture,,}" in
|
||||
"ar" | "ar-"* ) url="ar_windows_vista_with_sp2_x64_dvd_x15-36318.iso" ;;
|
||||
"bg" | "bg-"* ) url="bg_windows_vista_with_sp2_x64_dvd_x15-36321.iso" ;;
|
||||
"cs" | "cs-"* ) url="cs_windows_vista_with_sp2_x64_dvd_x15-36327.iso" ;;
|
||||
"da" | "da-"* ) url="da_windows_vista_with_sp2_x64_dvd_x15-36329.iso" ;;
|
||||
"de" | "de-"* ) url="de_windows_vista_sp2_x64_dvd_342287.iso" ;;
|
||||
"el" | "el-"* ) url="el_windows_vista_with_sp2_x64_dvd_x15-36343.iso" ;;
|
||||
"en" | "en-"* )
|
||||
size=3861460992
|
||||
sum="edf9f947c5791469fd7d2d40a5dcce663efa754f91847aa1d28ed7f585675b78"
|
||||
url="en_windows_vista_sp2_x64_dvd_342267.iso" ;;
|
||||
"es" | "es-"* ) url="es_windows_vista_sp2_x64_dvd_342309.iso" ;;
|
||||
"et" | "et-"* ) url="et_windows_vista_with_sp2_x64_dvd_x15-36335.iso" ;;
|
||||
"fi" | "fi-"* ) url="fi_windows_vista_with_sp2_x64_dvd_x15-36337.iso" ;;
|
||||
"fr" | "fr-"* ) url="fr_windows_vista_sp2_x64_dvd_342277.iso" ;;
|
||||
"he" | "he-"* ) url="he_windows_vista_with_sp2_x64_dvd_x15-36344.iso" ;;
|
||||
"hr" | "hr-"* ) url="hr_windows_vista_with_sp2_x64_dvd_x15-36325.iso" ;;
|
||||
"hu" | "hu-"* ) url="hu_windows_vista_with_sp2_x64_dvd_x15-36346.iso" ;;
|
||||
"it" | "it-"* ) url="it_windows_vista_with_sp2_x64_dvd_x15-36348.iso" ;;
|
||||
"ja" | "ja-"* ) url="ja_windows_vista_sp2_x64_dvd_342298.iso" ;;
|
||||
"ko" | "ko-"* ) url="ko_windows_vista_k_and_kn_with_sp2_x86_dvd_x15-36302.iso" ;;
|
||||
"lt" | "lt-"* ) url="lt_windows_vista_with_sp2_x64_dvd_x15-36355.iso" ;;
|
||||
"lv" | "lv-"* ) url="lv_windows_vista_with_sp2_x64_dvd_x15-36353.iso" ;;
|
||||
"nb" | "nb-"* ) url="no_windows_vista_with_sp2_x64_dvd_x15-36357.iso" ;;
|
||||
"nl" | "nl-"* ) url="nl_windows_vista_with_sp2_x64_dvd_x15-36331.iso" ;;
|
||||
"pl" | "pl-"* ) url="pl_windows_vista_with_sp2_x64_dvd_x15-36359.iso" ;;
|
||||
"br" | "pt-br" ) url="pt_windows_vista_with_sp2_x64_dvd_x15-36319.iso" ;;
|
||||
"pt" | "pt-"* ) url="pp_windows_vista_with_sp2_x64_dvd_x15-36361.iso" ;;
|
||||
"ro" | "ro-"* ) url="ro_windows_vista_with_sp2_x64_dvd_x15-36363.iso" ;;
|
||||
"ru" | "ru-"* ) url="ru_windows_vista_with_sp2_x64_dvd_x15-36364.iso" ;;
|
||||
"sk" | "sk-"* ) url="sk_windows_vista_with_sp2_x64_dvd_x15-36367.iso" ;;
|
||||
"sl" | "sl-"* ) url="sl_windows_vista_with_sp2_x64_dvd_x15-36369.iso" ;;
|
||||
"sr" | "sr-"* ) url="sr_windows_vista_with_sp2_x64_dvd_x15-36365.iso" ;;
|
||||
"sv" | "sv-"* ) url="sv_windows_vista_with_sp2_x64_dvd_x15-36373.iso" ;;
|
||||
"th" | "th-"* ) url="th_windows_vista_with_sp2_x64_dvd_x15-36374.iso" ;;
|
||||
"tr" | "tr-"* ) url="tr_windows_vista_with_sp2_x64_dvd_x15-36375.iso" ;;
|
||||
"uk" | "uk-"* ) url="uk_windows_vista_with_sp2_x64_dvd_x15-36376.iso" ;;
|
||||
"zh-hk" ) url="hk_windows_vista_with_sp2_x64_dvd_x15-36324.iso" ;;
|
||||
"zh-tw" ) url="tw_windows_vista_with_sp2_x64_dvd_x15-36323.iso" ;;
|
||||
"zh" | "zh-"* ) url="cn_windows_vista_with_sp2_x64_dvd_x15-36322.iso" ;;
|
||||
esac
|
||||
;;
|
||||
"winvistax86" | "winvistax86-enterprise" )
|
||||
case "${culture,,}" in
|
||||
"ar" | "ar-"* ) url="ar_windows_vista_enterprise_with_sp2_x86_dvd_x15-40263.iso" ;;
|
||||
"bg" | "bg-"* ) url="bg_windows_vista_enterprise_with_sp2_x86_dvd_x15-40265.iso" ;;
|
||||
"cs" | "cs-"* ) url="cs_windows_vista_enterprise_with_sp2_x86_dvd_x15-40267.iso" ;;
|
||||
"da" | "da-"* ) url="da_windows_vista_enterprise_with_sp2_x86_dvd_x15-40271.iso" ;;
|
||||
"de" | "de-"* ) url="de_windows_vista_enterprise_sp2_x86_dvd_342373.iso" ;;
|
||||
"el" | "el-"* ) url="el_windows_vista_enterprise_with_sp2_x86_dvd_x15-40277.iso" ;;
|
||||
"en" | "en-"* )
|
||||
size=2420981760
|
||||
sum="54e2720004041e7db988a391543ea5228b0affc28efcf9303d2d0ff9402067f5"
|
||||
url="en_windows_vista_enterprise_sp2_x86_dvd_342329.iso" ;;
|
||||
"es" | "es-"* ) url="es_windows_vista_enterprise_sp2_x86_dvd_342413.iso" ;;
|
||||
"et" | "et-"* ) url="et_windows_vista_enterprise_with_sp2_x86_dvd_x15-40291.iso" ;;
|
||||
"fi" | "fi-"* ) url="fi_windows_vista_enterprise_with_sp2_x86_dvd_x15-40305.iso" ;;
|
||||
"fr" | "fr-"* ) url="fr_windows_vista_enterprise_sp2_x86_dvd_342352.iso" ;;
|
||||
"he" | "he-"* ) url="he_windows_vista_enterprise_with_sp2_x86_dvd_x15-40279.iso" ;;
|
||||
"hr" | "hr-"* ) url="hr_windows_vista_enterprise_with_sp2_x86_dvd_x15-40251.iso" ;;
|
||||
"hu" | "hu-"* ) url="hu_windows_vista_enterprise_with_sp2_x86_dvd_x15-40281.iso" ;;
|
||||
"it" | "it-"* ) url="it_windows_vista_enterprise_with_sp2_x86_dvd_x15-40283.iso" ;;
|
||||
"ja" | "ja-"* ) url="ja_windows_vista_enterprise_sp2_x86_dvd_342391.iso" ;;
|
||||
"ko" | "ko-"* ) url="ko_windows_vista_enterprise_k_with_sp2_x86_dvd_x15-40287.iso" ;;
|
||||
"lt" | "lt-"* ) url="lt_windows_vista_enterprise_with_sp2_x86_dvd_x15-40249.iso" ;;
|
||||
"lv" | "lv-"* ) url="lv_windows_vista_enterprise_with_sp2_x86_dvd_x15-40247.iso" ;;
|
||||
"nb" | "nb-"* ) url="no_windows_vista_enterprise_with_sp2_x86_dvd_x15-40293.iso" ;;
|
||||
"nl" | "nl-"* ) url="nl_windows_vista_enterprise_with_sp2_x86_dvd_x15-40295.iso" ;;
|
||||
"pl" | "pl-"* ) url="pl_windows_vista_enterprise_with_sp2_x86_dvd_x15-40299.iso" ;;
|
||||
"br" | "pt-br" ) url="pt_windows_vista_enterprise_with_sp2_x86_dvd_x15-40255.iso" ;;
|
||||
"pt" | "pt-"* ) url="pp_windows_vista_enterprise_with_sp2_x86_dvd_x15-40297.iso" ;;
|
||||
"ro" | "ro-"* ) url="ro_windows_vista_enterprise_with_sp2_x86_dvd_x15-40301.iso" ;;
|
||||
"ru" | "ru-"* ) url="ru_windows_vista_enterprise_with_sp2_x86_dvd_x15-40309.iso" ;;
|
||||
"sk" | "sk-"* ) url="sk_windows_vista_enterprise_with_sp2_x86_dvd_x15-40307.iso" ;;
|
||||
"sl" | "sl-"* ) url="sl_windows_vista_enterprise_with_sp2_x86_dvd_x15-40289.iso" ;;
|
||||
"sr" | "sr-"* ) url="sr_windows_vista_enterprise_with_sp2_x86_dvd_x15-40261.iso" ;;
|
||||
"sv" | "sv-"* ) url="sv_windows_vista_enterprise_with_sp2_x86_dvd_x15-40303.iso" ;;
|
||||
"th" | "th-"* ) url="th_windows_vista_enterprise_with_sp2_x86_dvd_x15-40311.iso" ;;
|
||||
"tr" | "tr-"* ) url="tr_windows_vista_enterprise_with_sp2_x86_dvd_x15-40313.iso" ;;
|
||||
"uk" | "uk-"* ) url="uk_windows_vista_enterprise_with_sp2_x86_dvd_x15-40253.iso" ;;
|
||||
"zh-hk" ) url="hk_windows_vista_enterprise_with_sp2_x86_dvd_x15-40317.iso" ;;
|
||||
"zh-tw" ) url="tw_windows_vista_enterprise_with_sp2_x86_dvd_x15-40315.iso" ;;
|
||||
"zh" | "zh-"* ) url="cn_windows_vista_enterprise_with_sp2_x86_dvd_x15-40257.iso" ;;
|
||||
esac
|
||||
;;
|
||||
"winvistax86-ultimate" )
|
||||
case "${culture,,}" in
|
||||
"ar" | "ar-"* ) url="ar_windows_vista_with_sp2_x86_dvd_x15-36282.iso" ;;
|
||||
"bg" | "bg-"* ) url="bg_windows_vista_with_sp2_x86_dvd_x15-36284.iso" ;;
|
||||
"hr" | "hr-"* ) url="hr_windows_vista_with_sp2_x86_dvd_x15-36288.iso" ;;
|
||||
"cs" | "cs-"* ) url="cs_windows_vista_with_sp2_x86_dvd_x15-36289.iso" ;;
|
||||
"da" | "da-"* ) url="da_windows_vista_with_sp2_x86_dvd_x15-36290.iso" ;;
|
||||
"de" | "de-"* ) url="de_windows_vista_sp2_x86_dvd_342286.iso" ;;
|
||||
"el" | "el-"* ) url="el_windows_vista_with_sp2_x86_dvd_x15-36297.iso" ;;
|
||||
"en" | "en-"* )
|
||||
size=3243413504
|
||||
sum="9c36fed4255bd05a8506b2da88f9aad73643395e155e609398aacd2b5276289c"
|
||||
url="en_windows_vista_with_sp2_x86_dvd_342266.iso" ;;
|
||||
"es" | "es-"* ) url="es_windows_vista_sp2_x86_dvd_342308.iso" ;;
|
||||
"et" | "et-"* ) url="et_windows_vista_with_sp2_x86_dvd_x15-36293.iso" ;;
|
||||
"fi" | "fi-"* ) url="fi_windows_vista_with_sp2_x86_dvd_x15-36294.iso" ;;
|
||||
"fr" | "fr-"* ) url="fr_windows_vista_sp2_x86_dvd_342276.iso" ;;
|
||||
"he" | "he-"* ) url="he_windows_vista_with_sp2_x86_dvd_x15-36298.iso" ;;
|
||||
"hu" | "hu-"* ) url="hu_windows_vista_with_sp2_x86_dvd_x15-36299.iso" ;;
|
||||
"it" | "it-"* ) url="it_windows_vista_with_sp2_x86_dvd_x15-36300.iso" ;;
|
||||
"ja" | "ja-"* ) url="ja_windows_vista_sp2_x86_dvd_342296.iso" ;;
|
||||
"ko" | "ko-"* ) url="ko_windows_vista_k_with_sp2_x64_dvd_x15-36350.iso" ;;
|
||||
"lt" | "lt-"* ) url="lt_windows_vista_with_sp2_x86_dvd_x15-36304.iso" ;;
|
||||
"lv" | "lv-"* ) url="lv_windows_vista_with_sp2_x86_dvd_x15-36303.iso" ;;
|
||||
"nb" | "nb-"* ) url="no_windows_vista_with_sp2_x86_dvd_x15-36305.iso" ;;
|
||||
"nl" | "nl-"* ) url="nl_windows_vista_with_sp2_x86_dvd_x15-36291.iso" ;;
|
||||
"pl" | "pl-"* ) url="pl_windows_vista_with_sp2_x86_dvd_x15-36306.iso" ;;
|
||||
"br" | "pt-br" ) url="pt_windows_vista_with_sp2_x86_dvd_x15-36283.iso" ;;
|
||||
"pt" | "pt-"* ) url="pp_windows_vista_with_sp2_x86_dvd_x15-36307.iso" ;;
|
||||
"ro" | "ro-"* ) url="ro_windows_vista_with_sp2_x86_dvd_x15-36308.iso" ;;
|
||||
"ru" | "ru-"* ) url="ru_windows_vista_with_sp2_x86_dvd_x15-36309.iso" ;;
|
||||
"sk" | "sk-"* ) url="sk_windows_vista_with_sp2_x86_dvd_x15-36311.iso" ;;
|
||||
"sl" | "sl-"* ) url="sl_windows_vista_with_sp2_x86_dvd_x15-36312.iso" ;;
|
||||
"sr" | "sr-"* ) url="sr_windows_vista_with_sp2_x86_dvd_x15-36310.iso" ;;
|
||||
"sv" | "sv-"* ) url="sv_windows_vista_with_sp2_x86_dvd_x15-36314.iso" ;;
|
||||
"th" | "th-"* ) url="th_windows_vista_with_sp2_x86_dvd_x15-36315.iso" ;;
|
||||
"tr" | "tr-"* ) url="tr_windows_vista_with_sp2_x86_dvd_x15-36316.iso" ;;
|
||||
"uk" | "uk-"* ) url="uk_windows_vista_with_sp2_x86_dvd_x15-36317.iso" ;;
|
||||
"zh-hk" ) url="hk_windows_vista_with_sp2_x86_dvd_x15-36287.iso" ;;
|
||||
"zh-tw" ) url="tw_windows_vista_with_sp2_x86_dvd_x15-36286.iso" ;;
|
||||
"zh" | "zh-"* ) url="cn_windows_vista_with_sp2_x86_dvd_x15-36285.iso" ;;
|
||||
esac
|
||||
;;
|
||||
"winxpx86" )
|
||||
case "${culture,,}" in
|
||||
"ar" | "ar-"* ) url="ar_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74065.iso" ;;
|
||||
"cs" | "cs-"* ) url="cs_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-73965.iso" ;;
|
||||
"da" | "da-"* ) url="da_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-73968.iso" ;;
|
||||
"de" | "de-"* ) url="de_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-73985.iso" ;;
|
||||
"el" | "el-"* ) url="el_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-73988.iso" ;;
|
||||
"es" | "es-"* ) url="es_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74009.iso" ;;
|
||||
"fi" | "fi-"* ) url="fi_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-73979.iso" ;;
|
||||
"fr" | "fr-"* ) url="fr_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-73982.iso" ;;
|
||||
"he" | "he-"* ) url="he_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74143.iso" ;;
|
||||
"hu" | "hu-"* ) url="hu_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-73991.iso" ;;
|
||||
"it" | "it-"* ) url="it_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-73994.iso" ;;
|
||||
"ja" | "ja-"* ) url="ja_windows_xp_professional_with_service_pack_3_x86_dvd_vl_x14-74058.iso" ;;
|
||||
"nb" | "nb-"* ) url="no_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74000.iso" ;;
|
||||
"nl" | "nl-"* ) url="nl_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-73971.iso" ;;
|
||||
"pl" | "pl-"* ) url="pl_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74003.iso" ;;
|
||||
"br" | "pt-br" ) url="pt-br_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74137.iso" ;;
|
||||
"pt" | "pt-"* ) url="pt-pt_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74006.iso" ;;
|
||||
"ru" | "ru-"* ) url="ru_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74146.iso" ;;
|
||||
"sv" | "sv-"* ) url="sv_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74012.iso" ;;
|
||||
"tr" | "tr-"* ) url="tr_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74085.iso" ;;
|
||||
"zh-hk" ) url="zh-hk_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74075.iso" ;;
|
||||
"zh-tw" ) url="zh-tw_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74140.iso" ;;
|
||||
"zh" | "zh-"* ) url="zh-hans_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74070.iso" ;;
|
||||
esac
|
||||
;;
|
||||
"winxpx64" )
|
||||
[[ "${lang,,}" != "en" ]] && [[ "${lang,,}" != "en-us" ]] && return 0
|
||||
size=628168704
|
||||
sum="b641514c2265ba6c0a9ddbcfa4a6daaac6539db8d1ce704366cdfe5a516e0495"
|
||||
url="en_win_xp_pro_x64_with_sp2_vl_x13-41611.iso"
|
||||
;;
|
||||
esac
|
||||
|
||||
case "${ret,,}" in
|
||||
"sum" ) echo "$sum" ;;
|
||||
"size" ) echo "$size" ;;
|
||||
*) [ -n "$url" ] && echo "$host/$url";;
|
||||
esac
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
getLink4() {
|
||||
|
||||
local id="$1"
|
||||
local lang="$2"
|
||||
local ret="$3"
|
||||
@@ -1664,12 +1107,66 @@ 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
|
||||
|
||||
@@ -1827,11 +1324,11 @@ prepareInstall() {
|
||||
local install="$dir/\$OEM\$/\$1/OEM/install.bat"
|
||||
[ -f "$install" ] && oem="\"Script\"=\"cmd /C start \\\"Install\\\" \\\"cmd /C C:\\\\OEM\\\\install.bat\\\"\""
|
||||
|
||||
[ -z "$YRES" ] && YRES="720"
|
||||
[ -z "$XRES" ] && XRES="1280"
|
||||
[ -z "$WIDTH" ] && WIDTH="1280"
|
||||
[ -z "$HEIGHT" ] && HEIGHT="720"
|
||||
|
||||
XHEX=$(printf '%x\n' "$XRES")
|
||||
YHEX=$(printf '%x\n' "$YRES")
|
||||
XHEX=$(printf '%x\n' "$WIDTH")
|
||||
YHEX=$(printf '%x\n' "$HEIGHT")
|
||||
|
||||
local username="Docker"
|
||||
local password="*"
|
||||
@@ -1883,8 +1380,8 @@ prepareInstall() {
|
||||
echo ""
|
||||
echo "[Display]"
|
||||
echo " BitsPerPel=32"
|
||||
echo " XResolution=$XRES"
|
||||
echo " YResolution=$YRES"
|
||||
echo " XResolution=$WIDTH"
|
||||
echo " YResolution=$HEIGHT"
|
||||
echo ""
|
||||
echo "[Networking]"
|
||||
echo " InstallDefaultComponents=Yes"
|
||||
|
||||
@@ -620,11 +620,11 @@ updateXML() {
|
||||
local language="$2"
|
||||
local culture region user admin pass keyboard
|
||||
|
||||
[ -z "$YRES" ] && YRES="720"
|
||||
[ -z "$XRES" ] && XRES="1280"
|
||||
[ -z "$HEIGHT" ] && HEIGHT="720"
|
||||
[ -z "$WIDTH" ] && WIDTH="1280"
|
||||
|
||||
sed -i "s/<VerticalResolution>1080<\/VerticalResolution>/<VerticalResolution>$YRES<\/VerticalResolution>/g" "$asset"
|
||||
sed -i "s/<HorizontalResolution>1920<\/HorizontalResolution>/<HorizontalResolution>$XRES<\/HorizontalResolution>/g" "$asset"
|
||||
sed -i "s/<VerticalResolution>1080<\/VerticalResolution>/<VerticalResolution>$HEIGHT<\/VerticalResolution>/g" "$asset"
|
||||
sed -i "s/<HorizontalResolution>1920<\/HorizontalResolution>/<HorizontalResolution>$WIDTH<\/HorizontalResolution>/g" "$asset"
|
||||
|
||||
culture=$(getLanguage "$language" "culture")
|
||||
|
||||
|
||||
383
src/mido.sh
383
src/mido.sh
@@ -4,25 +4,26 @@ set -Eeuo pipefail
|
||||
handle_curl_error() {
|
||||
|
||||
local error_code="$1"
|
||||
local server_name="$2"
|
||||
|
||||
case "$error_code" in
|
||||
1) error "Unsupported protocol!" ;;
|
||||
2) error "Failed to initialize curl!" ;;
|
||||
3) error "The URL format is malformed!" ;;
|
||||
5) error "Failed to resolve address of proxy host!" ;;
|
||||
6) error "Failed to resolve Microsoft servers! Is there an Internet connection?" ;;
|
||||
7) error "Failed to contact Microsoft servers! Is there an Internet connection or is the server down?" ;;
|
||||
8) error "Microsoft servers returned a malformed HTTP response!" ;;
|
||||
6) error "Failed to resolve $server_name servers! Is there an Internet connection?" ;;
|
||||
7) error "Failed to contact $server_name servers! Is there an Internet connection or is the server down?" ;;
|
||||
8) error "$server_name servers returned a malformed HTTP response!" ;;
|
||||
16) error "A problem was detected in the HTTP2 framing layer!" ;;
|
||||
22) error "Microsoft servers returned a failing HTTP status code!" ;;
|
||||
22) error "$server_name servers returned a failing HTTP status code!" ;;
|
||||
23) error "Failed at writing Windows media to disk! Out of disk space or permission error?" ;;
|
||||
26) error "Failed to read Windows media from disk!" ;;
|
||||
27) error "Ran out of memory during download!" ;;
|
||||
28) error "Connection timed out to Microsoft server!" ;;
|
||||
35) error "SSL connection error from Microsoft server!" ;;
|
||||
28) error "Connection timed out to $server_name server!" ;;
|
||||
35) error "SSL connection error from $server_name server!" ;;
|
||||
36) error "Failed to continue earlier download!" ;;
|
||||
52) error "Received no data from the Microsoft server!" ;;
|
||||
63) error "Microsoft servers returned an unexpectedly large response!" ;;
|
||||
52) error "Received no data from the $server_name server!" ;;
|
||||
63) error "$server_name servers returned an unexpectedly large response!" ;;
|
||||
# POSIX defines exit statuses 1-125 as usable by us
|
||||
# https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_08_02
|
||||
$((error_code <= 125)))
|
||||
@@ -63,31 +64,33 @@ download_windows() {
|
||||
local lang="$2"
|
||||
local desc="$3"
|
||||
local sku_id=""
|
||||
local sku_url=""
|
||||
local iso_url=""
|
||||
local iso_json=""
|
||||
local language=""
|
||||
local session_id=""
|
||||
local user_agent=""
|
||||
local download_type=""
|
||||
local windows_version=""
|
||||
local iso_download_link=""
|
||||
local download_page_html=""
|
||||
local product_edition_id=""
|
||||
local iso_download_link_html=""
|
||||
local iso_download_page_html=""
|
||||
local language_skuid_table_html=""
|
||||
|
||||
case "${id,,}" in
|
||||
"win11x64" ) windows_version="11" ;;
|
||||
"win10x64" ) windows_version="10" ;;
|
||||
"win81x64" ) windows_version="8" ;;
|
||||
* ) error "Invalid VERSION specified, value \"$id\" is not recognized!" && return 1 ;;
|
||||
esac
|
||||
local language_skuid_json=""
|
||||
local profile="606624d44113"
|
||||
|
||||
user_agent=$(get_agent)
|
||||
language=$(getLanguage "$lang" "name")
|
||||
|
||||
local url="https://www.microsoft.com/en-us/software-download/windows$windows_version"
|
||||
case "$windows_version" in
|
||||
8 | 10) url+="ISO";;
|
||||
case "${id,,}" in
|
||||
"win11x64" ) windows_version="11" && download_type="1" ;;
|
||||
"win10x64" ) windows_version="10" && download_type="1" ;;
|
||||
"win11arm64" ) windows_version="11arm64" && download_type="2" ;;
|
||||
* ) error "Invalid VERSION specified, value \"$id\" is not recognized!" && return 1 ;;
|
||||
esac
|
||||
|
||||
local url="https://www.microsoft.com/en-us/software-download/windows$windows_version"
|
||||
[[ "${id,,}" == "win10"* ]] && url+="ISO"
|
||||
|
||||
# uuidgen: For MacOS (installed by default) and other systems (e.g. with no /proc) that don't have a kernel interface for generating random UUIDs
|
||||
session_id=$(cat /proc/sys/kernel/random/uuid 2> /dev/null || uuidgen --random)
|
||||
|
||||
@@ -96,44 +99,39 @@ download_windows() {
|
||||
# This is the *only* request we make that Fido doesn't. Fido manually maintains a list of all the Windows release/edition product edition IDs in its script (see: $WindowsVersions array). This is helpful for downloading older releases (e.g. Windows 10 1909, 21H1, etc.) but we always want to get the newest release which is why we get this value dynamically
|
||||
# Also, keeping a "$WindowsVersions" array like Fido does would be way too much of a maintenance burden
|
||||
# Remove "Accept" header that curl sends by default
|
||||
[[ "$DEBUG" == [Yy1]* ]] && echo " - Parsing download page: ${url}"
|
||||
iso_download_page_html=$(curl --silent --max-time 30 --user-agent "$user_agent" --header "Accept:" --max-filesize 1M --fail --proto =https --tlsv1.2 --http1.1 -- "$url") || {
|
||||
handle_curl_error $?
|
||||
[[ "$DEBUG" == [Yy1]* ]] && echo "Parsing download page: ${url}"
|
||||
download_page_html=$(curl --silent --max-time 30 --user-agent "$user_agent" --header "Accept:" --max-filesize 1M --fail --proto =https --tlsv1.2 --http1.1 -- "$url") || {
|
||||
handle_curl_error "$?" "Microsoft"
|
||||
return $?
|
||||
}
|
||||
|
||||
[[ "$DEBUG" == [Yy1]* ]] && echo -n "Getting Product edition ID: "
|
||||
# tr: Filter for only numerics to prevent HTTP parameter injection
|
||||
# head -c was recently added to POSIX: https://austingroupbugs.net/view.php?id=407
|
||||
product_edition_id=$(echo "$iso_download_page_html" | grep -Eo '<option value="[0-9]+">Windows' | cut -d '"' -f 2 | head -n 1 | tr -cd '0-9' | head -c 16)
|
||||
product_edition_id=$(echo "$download_page_html" | grep -Eo '<option value="[0-9]+">Windows' | cut -d '"' -f 2 | head -n 1 | tr -cd '0-9' | head -c 16)
|
||||
[[ "$DEBUG" == [Yy1]* ]] && echo "$product_edition_id"
|
||||
|
||||
if [ -z "$product_edition_id" ]; then
|
||||
error "Product edition ID not found!"
|
||||
return 1
|
||||
fi
|
||||
|
||||
[[ "$DEBUG" == [Yy1]* ]] && echo "Permit Session ID: $session_id"
|
||||
# Permit Session ID
|
||||
# "org_id" is always the same value
|
||||
curl --silent --max-time 30 --output /dev/null --user-agent "$user_agent" --header "Accept:" --max-filesize 100K --fail --proto =https --tlsv1.2 --http1.1 -- "https://vlscppe.microsoft.com/tags?org_id=y6jn8c31&session_id=$session_id" || {
|
||||
# This should only happen if there's been some change to how this API works
|
||||
handle_curl_error $?
|
||||
handle_curl_error "$?" "Microsoft"
|
||||
return $?
|
||||
}
|
||||
|
||||
# Extract everything after the last slash
|
||||
local url_segment_parameter="${url##*/}"
|
||||
|
||||
[[ "$DEBUG" == [Yy1]* ]] && echo -n "Getting language SKU ID: "
|
||||
# Get language -> skuID association table
|
||||
# SKU ID: This specifies the language of the ISO. We always use "English (United States)", however, the SKU for this changes with each Windows release
|
||||
# We must make this request so our next one will be allowed
|
||||
# --data "" is required otherwise no "Content-Length" header will be sent causing HTTP response "411 Length Required"
|
||||
language_skuid_table_html=$(curl --silent --max-time 30 --request POST --user-agent "$user_agent" --data "" --header "Accept:" --max-filesize 10K --fail --proto =https --tlsv1.2 --http1.1 -- "https://www.microsoft.com/en-US/api/controls/contentinclude/html?pageId=a8f8f489-4c7f-463a-9ca6-5cff94d8d041&host=www.microsoft.com&segments=software-download,$url_segment_parameter&query=&action=getskuinformationbyproductedition&sessionId=$session_id&productEditionId=$product_edition_id&sdVersion=2") || {
|
||||
handle_curl_error $?
|
||||
sku_url="https://www.microsoft.com/software-download-connector/api/getskuinformationbyproductedition?profile=$profile&ProductEditionId=$product_edition_id&SKU=undefined&friendlyFileName=undefined&Locale=en-US&sessionID=$session_id"
|
||||
language_skuid_json=$(curl --silent --max-time 30 --request GET --user-agent "$user_agent" --referer "$url" --header "Accept:" --max-filesize 100K --fail --proto =https --tlsv1.2 --http1.1 -- "$sku_url") || {
|
||||
handle_curl_error "$?" "Microsoft"
|
||||
return $?
|
||||
}
|
||||
|
||||
# tr: Filter for only alphanumerics or "-" to prevent HTTP parameter injection
|
||||
sku_id=$(echo "$language_skuid_table_html" | grep -m 1 ">${language}<" | sed 's/"//g' | cut -d ',' -f 1 | cut -d ':' -f 2 | tr -cd '[:alnum:]-' | head -c 16)
|
||||
{ sku_id=$(echo "$language_skuid_json" | jq --arg LANG "$language" -r '.Skus[] | select(.Language==$LANG).Id') 2>/dev/null; rc=$?; } || :
|
||||
|
||||
if [ -z "$sku_id" ]; then
|
||||
if [ -z "$sku_id" ] || [[ "${sku_id,,}" == "null" ]] || (( rc != 0 )); then
|
||||
language=$(getLanguage "$lang" "desc")
|
||||
error "No download in the $language language available for $desc!"
|
||||
return 1
|
||||
@@ -144,28 +142,31 @@ download_windows() {
|
||||
|
||||
# Get ISO download link
|
||||
# If any request is going to be blocked by Microsoft it's always this last one (the previous requests always seem to succeed)
|
||||
# --referer: Required by Microsoft servers to allow request
|
||||
iso_download_link_html=$(curl --silent --max-time 30 --request POST --user-agent "$user_agent" --data "" --referer "$url" --header "Accept:" --max-filesize 100K --fail --proto =https --tlsv1.2 --http1.1 -- "https://www.microsoft.com/en-US/api/controls/contentinclude/html?pageId=6e2a1789-ef16-4f27-a296-74ef7ef5d96b&host=www.microsoft.com&segments=software-download,$url_segment_parameter&query=&action=GetProductDownloadLinksBySku&sessionId=$session_id&skuId=$sku_id&language=English&sdVersion=2")
|
||||
|
||||
if ! [ "$iso_download_link_html" ]; then
|
||||
iso_url="https://www.microsoft.com/software-download-connector/api/GetProductDownloadLinksBySku?profile=$profile&ProductEditionId=undefined&SKU=$sku_id&friendlyFileName=undefined&Locale=en-US&sessionID=$session_id"
|
||||
iso_json=$(curl --silent --max-time 30 --request GET --user-agent "$user_agent" --referer "$url" --header "Accept:" --max-filesize 100K --fail --proto =https --tlsv1.2 --http1.1 -- "$iso_url")
|
||||
|
||||
if ! [ "$iso_json" ]; then
|
||||
# This should only happen if there's been some change to how this API works
|
||||
error "Microsoft servers gave us an empty response to our request for an automated download."
|
||||
return 1
|
||||
fi
|
||||
|
||||
if echo "$iso_download_link_html" | grep -q "We are unable to complete your request at this time."; then
|
||||
if echo "$iso_json" | grep -q "Sentinel marked this request as rejected."; then
|
||||
error "Microsoft blocked the automated download request based on your IP address."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Filter for 64-bit ISO download URL
|
||||
# sed: HTML decode "&" character
|
||||
# tr: Filter for only alphanumerics or punctuation
|
||||
iso_download_link=$(echo "$iso_download_link_html" | grep -o "https://software.download.prss.microsoft.com.*IsoX64" | cut -d '"' -f 1 | sed 's/&/\&/g' | tr -cd '[:alnum:][:punct:]')
|
||||
if echo "$iso_json" | grep -q "We are unable to complete your request at this time."; then
|
||||
error "Microsoft blocked the automated download request based on your IP address."
|
||||
return 1
|
||||
fi
|
||||
|
||||
if ! [ "$iso_download_link" ]; then
|
||||
# This should only happen if there's been some change to the download endpoint web address
|
||||
{ iso_download_link=$(echo "$iso_json" | jq --argjson TYPE "$download_type" -r '.ProductDownloadOptions[] | select(.DownloadType==$TYPE).Uri') 2>/dev/null; rc=$?; } || :
|
||||
|
||||
if [ -z "$iso_download_link" ] || [[ "${iso_download_link,,}" == "null" ]] || (( rc != 0 )); then
|
||||
error "Microsoft servers gave us no download link to our request for an automated download!"
|
||||
info "Response: $iso_json"
|
||||
return 1
|
||||
fi
|
||||
|
||||
@@ -229,7 +230,7 @@ download_windows_eval() {
|
||||
|
||||
[[ "$DEBUG" == [Yy1]* ]] && echo "Parsing download page: ${url}"
|
||||
iso_download_page_html=$(curl --silent --max-time 30 --user-agent "$user_agent" --location --max-filesize 1M --fail --proto =https --tlsv1.2 --http1.1 -- "$url") || {
|
||||
handle_curl_error $?
|
||||
handle_curl_error "$?" "Microsoft"
|
||||
return $?
|
||||
}
|
||||
|
||||
@@ -283,11 +284,11 @@ download_windows_eval() {
|
||||
[[ "$DEBUG" == [Yy1]* ]] && echo "Found download link: $iso_download_link"
|
||||
|
||||
# Follow redirect so proceeding log message is useful
|
||||
# This is a request we make this Fido doesn't
|
||||
# We don't need to set "--max-filesize" here because this is a HEAD request and the output is to /dev/null anyway
|
||||
# This is a request we make that Fido doesn't
|
||||
|
||||
iso_download_link=$(curl --silent --max-time 30 --user-agent "$user_agent" --location --output /dev/null --silent --write-out "%{url_effective}" --head --fail --proto =https --tlsv1.2 --http1.1 -- "$iso_download_link") || {
|
||||
# This should only happen if the Microsoft servers are down
|
||||
handle_curl_error $?
|
||||
handle_curl_error "$?" "Microsoft"
|
||||
return $?
|
||||
}
|
||||
|
||||
@@ -305,7 +306,7 @@ getWindows() {
|
||||
language=$(getLanguage "$lang" "desc")
|
||||
edition=$(printEdition "$version" "$desc")
|
||||
|
||||
local msg="Requesting $desc from Microsoft server..."
|
||||
local msg="Requesting $desc from the Microsoft servers..."
|
||||
info "$msg" && html "$msg"
|
||||
|
||||
case "${version,,}" in
|
||||
@@ -317,6 +318,7 @@ getWindows() {
|
||||
esac
|
||||
|
||||
case "${version,,}" in
|
||||
"win11${PLATFORM,,}" ) ;;
|
||||
"win11${PLATFORM,,}-enterprise-iot"* ) ;;
|
||||
"win11${PLATFORM,,}-enterprise-ltsc"* ) ;;
|
||||
* )
|
||||
@@ -327,7 +329,7 @@ getWindows() {
|
||||
esac
|
||||
|
||||
case "${version,,}" in
|
||||
"win81${PLATFORM,,}" | "win10${PLATFORM,,}" | "win11${PLATFORM,,}" )
|
||||
"win10${PLATFORM,,}" | "win11${PLATFORM,,}" )
|
||||
download_windows "$version" "$lang" "$edition" && return 0
|
||||
;;
|
||||
"win11${PLATFORM,,}-enterprise"* | "win10${PLATFORM,,}-enterprise"* )
|
||||
@@ -427,6 +429,215 @@ 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 download 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" | grep -Eo "(http|https)://[a-zA-Z0-9./?=_%:-]*" | grep -i '\.iso$')
|
||||
|
||||
local result=""
|
||||
result=$(echo "$list" | grep -i "${platform}" | grep "${pattern}" | grep -i -m 1 "${locale,,}_")
|
||||
|
||||
if [ -z "$result" ]; 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
|
||||
|
||||
MG_URL="$result"
|
||||
return 0
|
||||
}
|
||||
|
||||
getESD() {
|
||||
|
||||
local dir="$1"
|
||||
@@ -457,7 +668,7 @@ getESD() {
|
||||
local eFile="esd_edition.xml"
|
||||
local fFile="products_filter.xml"
|
||||
|
||||
{ wget "$winCatalog" -O "$dir/$wFile" -q --timeout=30; rc=$?; } || :
|
||||
{ wget "$winCatalog" -O "$dir/$wFile" -q --timeout=30 --no-http-keep-alive; rc=$?; } || :
|
||||
|
||||
msg="Failed to download $winCatalog"
|
||||
(( rc == 3 )) && error "$msg , cannot write file (disk full?)" && return 1
|
||||
@@ -583,7 +794,7 @@ downloadFile() {
|
||||
info "$msg..."
|
||||
/run/progress.sh "$iso" "$size" "$msg ([P])..." &
|
||||
|
||||
{ wget "$url" -O "$iso" -q --timeout=30 --show-progress "$progress"; rc=$?; } || :
|
||||
{ wget "$url" -O "$iso" -q --timeout=30 --no-http-keep-alive --show-progress "$progress"; rc=$?; } || :
|
||||
|
||||
fKill "progress.sh"
|
||||
|
||||
@@ -610,13 +821,18 @@ downloadImage() {
|
||||
local iso="$1"
|
||||
local version="$2"
|
||||
local lang="$3"
|
||||
local delay=5
|
||||
local tried="n"
|
||||
local success="n"
|
||||
local url sum size base desc language
|
||||
local msg="Will retry after $delay seconds..."
|
||||
|
||||
if [[ "${version,,}" == "http"* ]]; then
|
||||
base=$(basename "$iso")
|
||||
desc=$(fromFile "$base")
|
||||
downloadFile "$iso" "$version" "" "" "" "$desc" && return 0
|
||||
info "$msg" && html "$msg" && sleep "$delay"
|
||||
downloadFile "$iso" "$version" "" "" "" "$desc" && return 0
|
||||
rm -f "$iso"
|
||||
return 1
|
||||
fi
|
||||
@@ -637,11 +853,23 @@ downloadImage() {
|
||||
fi
|
||||
|
||||
if isMido "$version" "$lang"; then
|
||||
|
||||
tried="y"
|
||||
success="n"
|
||||
|
||||
if getWindows "$version" "$lang" "$desc"; then
|
||||
success="y"
|
||||
else
|
||||
info "$msg" && html "$msg" && sleep "$delay"
|
||||
getWindows "$version" "$lang" "$desc" && success="y"
|
||||
fi
|
||||
|
||||
if [[ "$success" == "y" ]]; then
|
||||
size=$(getMido "$version" "$lang" "size" )
|
||||
sum=$(getMido "$version" "$lang" "sum")
|
||||
downloadFile "$iso" "$MIDO_URL" "$sum" "$size" "$lang" "$desc" && return 0
|
||||
info "$msg" && html "$msg" && sleep "$delay"
|
||||
downloadFile "$iso" "$MIDO_URL" "$sum" "$size" "$lang" "$desc" && return 0
|
||||
rm -f "$iso"
|
||||
fi
|
||||
fi
|
||||
@@ -655,10 +883,20 @@ downloadImage() {
|
||||
fi
|
||||
|
||||
tried="y"
|
||||
success="n"
|
||||
|
||||
if getESD "$TMP/esd" "$version" "$lang" "$desc"; then
|
||||
success="y"
|
||||
else
|
||||
info "$msg" && html "$msg" && sleep "$delay"
|
||||
getESD "$TMP/esd" "$version" "$lang" "$desc" && success="y"
|
||||
fi
|
||||
|
||||
if [[ "$success" == "y" ]]; then
|
||||
ISO="${ISO%.*}.esd"
|
||||
downloadFile "$ISO" "$ESD" "$ESD_SUM" "$ESD_SIZE" "$lang" "$desc" && return 0
|
||||
info "$msg" && html "$msg" && sleep "$delay"
|
||||
downloadFile "$ISO" "$ESD" "$ESD_SUM" "$ESD_SIZE" "$lang" "$desc" && return 0
|
||||
rm -f "$ISO"
|
||||
ISO="$iso"
|
||||
fi
|
||||
@@ -677,11 +915,38 @@ downloadImage() {
|
||||
size=$(getSize "$i" "$version" "$lang")
|
||||
sum=$(getHash "$i" "$version" "$lang")
|
||||
downloadFile "$iso" "$url" "$sum" "$size" "$lang" "$desc" && return 0
|
||||
info "$msg" && html "$msg" && sleep "$delay"
|
||||
downloadFile "$iso" "$url" "$sum" "$size" "$lang" "$desc" && return 0
|
||||
rm -f "$iso"
|
||||
fi
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user