mirror of
https://github.com/dockur/windows.git
synced 2026-01-22 02:43:06 +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
|
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 DEBCONF_NOWARNINGS="yes"
|
||||||
ARG DEBIAN_FRONTEND="noninteractive"
|
ARG DEBIAN_FRONTEND="noninteractive"
|
||||||
ARG DEBCONF_NONINTERACTIVE_SEEN="true"
|
ARG DEBCONF_NONINTERACTIVE_SEEN="true"
|
||||||
@@ -10,6 +11,7 @@ RUN set -eu && \
|
|||||||
apt-get update && \
|
apt-get update && \
|
||||||
apt-get --no-install-recommends -y install \
|
apt-get --no-install-recommends -y install \
|
||||||
bc \
|
bc \
|
||||||
|
jq \
|
||||||
curl \
|
curl \
|
||||||
7zip \
|
7zip \
|
||||||
wsdd \
|
wsdd \
|
||||||
@@ -22,20 +24,21 @@ RUN set -eu && \
|
|||||||
libxml2-utils \
|
libxml2-utils \
|
||||||
libarchive-tools && \
|
libarchive-tools && \
|
||||||
apt-get clean && \
|
apt-get clean && \
|
||||||
echo "$VERSION_ARG" > /run/version && \
|
|
||||||
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
|
||||||
COPY --chmod=755 ./src /run/
|
COPY --chmod=755 ./src /run/
|
||||||
COPY --chmod=755 ./assets /run/assets
|
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
|
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}
|
FROM build-${TARGETARCH}
|
||||||
|
|
||||||
EXPOSE 8006 3389
|
ARG VERSION_ARG="0.00"
|
||||||
|
RUN echo "$VERSION_ARG" > /run/version
|
||||||
|
|
||||||
VOLUME /storage
|
VOLUME /storage
|
||||||
|
EXPOSE 8006 3389
|
||||||
|
|
||||||
ENV VERSION="11"
|
ENV VERSION="11"
|
||||||
ENV RAM_SIZE="4G"
|
ENV RAM_SIZE="4G"
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ services:
|
|||||||
VERSION: "11"
|
VERSION: "11"
|
||||||
devices:
|
devices:
|
||||||
- /dev/kvm
|
- /dev/kvm
|
||||||
|
- /dev/net/tun
|
||||||
cap_add:
|
cap_add:
|
||||||
- NET_ADMIN
|
- NET_ADMIN
|
||||||
ports:
|
ports:
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
|
---
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
metadata:
|
metadata:
|
||||||
name: windows-pvc
|
name: windows-pvc
|
||||||
spec:
|
spec:
|
||||||
accessModes:
|
accessModes:
|
||||||
- ReadWriteOnce
|
- ReadWriteOnce
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
storage: 64Gi
|
storage: 64Gi
|
||||||
@@ -16,59 +17,61 @@ metadata:
|
|||||||
labels:
|
labels:
|
||||||
name: windows
|
name: windows
|
||||||
spec:
|
spec:
|
||||||
terminationGracePeriodSeconds: 120 # the Kubernetes default is 30 seconds and it may be not enough
|
|
||||||
containers:
|
containers:
|
||||||
- name: windows
|
- name: windows
|
||||||
image: dockurr/windows
|
image: dockurr/windows
|
||||||
ports:
|
env:
|
||||||
- containerPort: 8006
|
- name: VERSION
|
||||||
protocol: TCP
|
value: "11"
|
||||||
- containerPort: 3389
|
- name: RAM_SIZE
|
||||||
protocol: TCP
|
value: "4G"
|
||||||
- containerPort: 3389
|
- name: CPU_CORES
|
||||||
protocol: UDP
|
value: "2"
|
||||||
securityContext:
|
- name: DISK_SIZE
|
||||||
privileged: true
|
value: "64G"
|
||||||
env:
|
ports:
|
||||||
- name: VERSION
|
- containerPort: 8006
|
||||||
value: "11"
|
- containerPort: 3389
|
||||||
- name: RAM_SIZE
|
- containerPort: 3389
|
||||||
value: "4G"
|
protocol: UDP
|
||||||
- name: CPU_CORES
|
securityContext:
|
||||||
value: "2"
|
capabilities:
|
||||||
- name: DISK_SIZE
|
add:
|
||||||
value: "64G"
|
- NET_ADMIN
|
||||||
volumeMounts:
|
privileged: true
|
||||||
- mountPath: /storage
|
volumeMounts:
|
||||||
name: storage
|
- mountPath: /storage
|
||||||
- mountPath: /dev/kvm
|
name: storage
|
||||||
name: dev-kvm
|
- mountPath: /dev/kvm
|
||||||
|
name: dev-kvm
|
||||||
|
- mountPath: /dev/net/tun
|
||||||
|
name: dev-tun
|
||||||
|
terminationGracePeriodSeconds: 120
|
||||||
volumes:
|
volumes:
|
||||||
- name: storage
|
- name: storage
|
||||||
persistentVolumeClaim:
|
persistentVolumeClaim:
|
||||||
claimName: windows-pvc
|
claimName: windows-pvc
|
||||||
- name: dev-kvm
|
- hostPath:
|
||||||
hostPath:
|
path: /dev/kvm
|
||||||
path: /dev/kvm
|
name: dev-kvm
|
||||||
|
- hostPath:
|
||||||
|
path: /dev/net/tun
|
||||||
|
type: CharDevice
|
||||||
|
name: dev-tun
|
||||||
---
|
---
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
name: windows
|
name: windows
|
||||||
spec:
|
spec:
|
||||||
type: NodePort
|
ports:
|
||||||
|
- name: tcp-8006
|
||||||
|
port: 8006
|
||||||
|
- name: tcp-3389
|
||||||
|
port: 3389
|
||||||
|
- name: udp-3389
|
||||||
|
port: 3389
|
||||||
|
protocol: UDP
|
||||||
selector:
|
selector:
|
||||||
name: windows
|
name: windows
|
||||||
ports:
|
type: NodePort
|
||||||
- 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
|
|
||||||
|
|||||||
36
readme.md
36
readme.md
@@ -37,6 +37,7 @@ services:
|
|||||||
VERSION: "11"
|
VERSION: "11"
|
||||||
devices:
|
devices:
|
||||||
- /dev/kvm
|
- /dev/kvm
|
||||||
|
- /dev/net/tun
|
||||||
cap_add:
|
cap_add:
|
||||||
- NET_ADMIN
|
- NET_ADMIN
|
||||||
ports:
|
ports:
|
||||||
@@ -49,15 +50,25 @@ services:
|
|||||||
Via Docker CLI:
|
Via Docker CLI:
|
||||||
|
|
||||||
```bash
|
```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:
|
Via Kubernetes:
|
||||||
|
|
||||||
```shell
|
```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 💬
|
## FAQ 💬
|
||||||
|
|
||||||
### How do I use it?
|
### How do I use it?
|
||||||
@@ -74,7 +85,7 @@ kubectl apply -f kubernetes.yml
|
|||||||
|
|
||||||
### How do I select the Windows version?
|
### 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
|
```yaml
|
||||||
environment:
|
environment:
|
||||||
@@ -93,7 +104,6 @@ kubectl apply -f kubernetes.yml
|
|||||||
| `10l` | Windows 10 LTSC | 4.6 GB |
|
| `10l` | Windows 10 LTSC | 4.6 GB |
|
||||||
| `10e` | Windows 10 Enterprise | 5.2 GB |
|
| `10e` | Windows 10 Enterprise | 5.2 GB |
|
||||||
||||
|
||||
|
||||||
| `8` | Windows 8.1 Pro | 4.0 GB |
|
|
||||||
| `8e` | Windows 8.1 Enterprise | 3.7 GB |
|
| `8e` | Windows 8.1 Enterprise | 3.7 GB |
|
||||||
| `7e` | Windows 7 Enterprise | 3.0 GB |
|
| `7e` | Windows 7 Enterprise | 3.0 GB |
|
||||||
| `ve` | Windows Vista 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?
|
### 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
|
```yaml
|
||||||
volumes:
|
volumes:
|
||||||
@@ -220,7 +230,7 @@ kubectl apply -f kubernetes.yml
|
|||||||
LANGUAGE: "French"
|
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?
|
### 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?
|
### 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
|
```bash
|
||||||
sudo apt install cpu-checker
|
sudo apt install cpu-checker
|
||||||
sudo kvm-ok
|
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.
|
- 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 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.
|
- 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?
|
### How do I run macOS in a container?
|
||||||
|
|
||||||
|
|||||||
733
src/define.sh
733
src/define.sh
@@ -1,8 +1,8 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -Eeuo pipefail
|
set -Eeuo pipefail
|
||||||
|
|
||||||
: "${XRES:=""}"
|
: "${WIDTH:=""}"
|
||||||
: "${YRES:=""}"
|
: "${HEIGHT:=""}"
|
||||||
: "${VERIFY:=""}"
|
: "${VERIFY:=""}"
|
||||||
: "${REGION:=""}"
|
: "${REGION:=""}"
|
||||||
: "${MANUAL:=""}"
|
: "${MANUAL:=""}"
|
||||||
@@ -14,7 +14,7 @@ set -Eeuo pipefail
|
|||||||
: "${USERNAME:=""}"
|
: "${USERNAME:=""}"
|
||||||
: "${PASSWORD:=""}"
|
: "${PASSWORD:=""}"
|
||||||
|
|
||||||
MIRRORS=4
|
MIRRORS=3
|
||||||
PLATFORM="x64"
|
PLATFORM="x64"
|
||||||
|
|
||||||
parseVersion() {
|
parseVersion() {
|
||||||
@@ -132,163 +132,203 @@ getLanguage() {
|
|||||||
local ret="$2"
|
local ret="$2"
|
||||||
local lang=""
|
local lang=""
|
||||||
local desc=""
|
local desc=""
|
||||||
|
local short=""
|
||||||
local culture=""
|
local culture=""
|
||||||
|
|
||||||
case "${id,,}" in
|
case "${id,,}" in
|
||||||
"ar" | "ar-"* )
|
"ar" | "ar-"* )
|
||||||
|
short="ar"
|
||||||
lang="Arabic"
|
lang="Arabic"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="ar-SA" ;;
|
culture="ar-SA" ;;
|
||||||
"bg" | "bg-"* )
|
"bg" | "bg-"* )
|
||||||
|
short="bg"
|
||||||
lang="Bulgarian"
|
lang="Bulgarian"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="bg-BG" ;;
|
culture="bg-BG" ;;
|
||||||
"cs" | "cs-"* | "cz" | "cz-"* )
|
"cs" | "cs-"* | "cz" | "cz-"* )
|
||||||
|
short="cs"
|
||||||
lang="Czech"
|
lang="Czech"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="cs-CZ" ;;
|
culture="cs-CZ" ;;
|
||||||
"da" | "da-"* | "dk" | "dk-"* )
|
"da" | "da-"* | "dk" | "dk-"* )
|
||||||
|
short="da"
|
||||||
lang="Danish"
|
lang="Danish"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="da-DK" ;;
|
culture="da-DK" ;;
|
||||||
"de" | "de-"* )
|
"de" | "de-"* )
|
||||||
|
short="de"
|
||||||
lang="German"
|
lang="German"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="de-DE" ;;
|
culture="de-DE" ;;
|
||||||
"el" | "el-"* | "gr" | "gr-"* )
|
"el" | "el-"* | "gr" | "gr-"* )
|
||||||
|
short="el"
|
||||||
lang="Greek"
|
lang="Greek"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="el-GR" ;;
|
culture="el-GR" ;;
|
||||||
"gb" | "en-gb" )
|
"gb" | "en-gb" )
|
||||||
|
short="en-gb"
|
||||||
lang="English International"
|
lang="English International"
|
||||||
desc="English"
|
desc="English"
|
||||||
culture="en-GB" ;;
|
culture="en-GB" ;;
|
||||||
"en" | "en-"* )
|
"en" | "en-"* )
|
||||||
lang="English (United States)"
|
short="en"
|
||||||
|
lang="English"
|
||||||
desc="English"
|
desc="English"
|
||||||
culture="en-US" ;;
|
culture="en-US" ;;
|
||||||
"mx" | "es-mx" )
|
"mx" | "es-mx" )
|
||||||
|
short="mx"
|
||||||
lang="Spanish (Mexico)"
|
lang="Spanish (Mexico)"
|
||||||
desc="Spanish"
|
desc="Spanish"
|
||||||
culture="es-MX" ;;
|
culture="es-MX" ;;
|
||||||
"es" | "es-"* )
|
"es" | "es-"* )
|
||||||
|
short="es"
|
||||||
lang="Spanish"
|
lang="Spanish"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="es-ES" ;;
|
culture="es-ES" ;;
|
||||||
"et" | "et-"* )
|
"et" | "et-"* )
|
||||||
|
short="et"
|
||||||
lang="Estonian"
|
lang="Estonian"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="et-EE" ;;
|
culture="et-EE" ;;
|
||||||
"fi" | "fi-"* )
|
"fi" | "fi-"* )
|
||||||
|
short="fi"
|
||||||
lang="Finnish"
|
lang="Finnish"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="fi-FI" ;;
|
culture="fi-FI" ;;
|
||||||
"ca" | "fr-ca" )
|
"ca" | "fr-ca" )
|
||||||
|
short="ca"
|
||||||
lang="French Canadian"
|
lang="French Canadian"
|
||||||
desc="French"
|
desc="French"
|
||||||
culture="fr-CA" ;;
|
culture="fr-CA" ;;
|
||||||
"fr" | "fr-"* )
|
"fr" | "fr-"* )
|
||||||
|
short="fr"
|
||||||
lang="French"
|
lang="French"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="fr-FR" ;;
|
culture="fr-FR" ;;
|
||||||
"he" | "he-"* | "il" | "il-"* )
|
"he" | "he-"* | "il" | "il-"* )
|
||||||
|
short="he"
|
||||||
lang="Hebrew"
|
lang="Hebrew"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="he-IL" ;;
|
culture="he-IL" ;;
|
||||||
"hr" | "hr-"* | "cr" | "cr-"* )
|
"hr" | "hr-"* | "cr" | "cr-"* )
|
||||||
|
short="hr"
|
||||||
lang="Croatian"
|
lang="Croatian"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="hr-HR" ;;
|
culture="hr-HR" ;;
|
||||||
"hu" | "hu-"* )
|
"hu" | "hu-"* )
|
||||||
|
short="hu"
|
||||||
lang="Hungarian"
|
lang="Hungarian"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="hu-HU" ;;
|
culture="hu-HU" ;;
|
||||||
"it" | "it-"* )
|
"it" | "it-"* )
|
||||||
|
short="it"
|
||||||
lang="Italian"
|
lang="Italian"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="it-IT" ;;
|
culture="it-IT" ;;
|
||||||
"ja" | "ja-"* | "jp" | "jp-"* )
|
"ja" | "ja-"* | "jp" | "jp-"* )
|
||||||
|
short="ja"
|
||||||
lang="Japanese"
|
lang="Japanese"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="ja-JP" ;;
|
culture="ja-JP" ;;
|
||||||
"ko" | "ko-"* | "kr" | "kr-"* )
|
"ko" | "ko-"* | "kr" | "kr-"* )
|
||||||
|
short="ko"
|
||||||
lang="Korean"
|
lang="Korean"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="ko-KR" ;;
|
culture="ko-KR" ;;
|
||||||
"lt" | "lt-"* )
|
"lt" | "lt-"* )
|
||||||
|
short="lt"
|
||||||
lang="Lithuanian"
|
lang="Lithuanian"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="lv-LV" ;;
|
culture="lt-LT" ;;
|
||||||
"lv" | "lv-"* )
|
"lv" | "lv-"* )
|
||||||
|
short="lv"
|
||||||
lang="Latvian"
|
lang="Latvian"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="lt-LT" ;;
|
culture="lv-LV" ;;
|
||||||
"nb" | "nb-"* |"nn" | "nn-"* | "no" | "no-"* )
|
"nb" | "nb-"* |"nn" | "nn-"* | "no" | "no-"* )
|
||||||
|
short="no"
|
||||||
lang="Norwegian"
|
lang="Norwegian"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="nb-NO" ;;
|
culture="nb-NO" ;;
|
||||||
"nl" | "nl-"* )
|
"nl" | "nl-"* )
|
||||||
|
short="nl"
|
||||||
lang="Dutch"
|
lang="Dutch"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="nl-NL" ;;
|
culture="nl-NL" ;;
|
||||||
"pl" | "pl-"* )
|
"pl" | "pl-"* )
|
||||||
|
short="pl"
|
||||||
lang="Polish"
|
lang="Polish"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="pl-PL" ;;
|
culture="pl-PL" ;;
|
||||||
"br" | "pt-br" )
|
"br" | "pt-br" )
|
||||||
|
short="pt"
|
||||||
lang="Brazilian Portuguese"
|
lang="Brazilian Portuguese"
|
||||||
desc="Portuguese"
|
desc="Portuguese"
|
||||||
culture="pt-BR" ;;
|
culture="pt-BR" ;;
|
||||||
"pt" | "pt-"* )
|
"pt" | "pt-"* )
|
||||||
|
short="pp"
|
||||||
lang="Portuguese"
|
lang="Portuguese"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="pt-BR" ;;
|
culture="pt-BR" ;;
|
||||||
"ro" | "ro-"* )
|
"ro" | "ro-"* )
|
||||||
|
short="ro"
|
||||||
lang="Romanian"
|
lang="Romanian"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="ro-RO" ;;
|
culture="ro-RO" ;;
|
||||||
"ru" | "ru-"* )
|
"ru" | "ru-"* )
|
||||||
|
short="ru"
|
||||||
lang="Russian"
|
lang="Russian"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="ru-RU" ;;
|
culture="ru-RU" ;;
|
||||||
"sk" | "sk-"* )
|
"sk" | "sk-"* )
|
||||||
|
short="sk"
|
||||||
lang="Slovak"
|
lang="Slovak"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="sk-SK" ;;
|
culture="sk-SK" ;;
|
||||||
"sl" | "sl-"* | "si" | "si-"* )
|
"sl" | "sl-"* | "si" | "si-"* )
|
||||||
|
short="sl"
|
||||||
lang="Slovenian"
|
lang="Slovenian"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="sl-SI" ;;
|
culture="sl-SI" ;;
|
||||||
"sr" | "sr-"* )
|
"sr" | "sr-"* )
|
||||||
|
short="sr"
|
||||||
lang="Serbian Latin"
|
lang="Serbian Latin"
|
||||||
desc="Serbian"
|
desc="Serbian"
|
||||||
culture="sr-Latn-RS" ;;
|
culture="sr-Latn-RS" ;;
|
||||||
"sv" | "sv-"* | "se" | "se-"* )
|
"sv" | "sv-"* | "se" | "se-"* )
|
||||||
|
short="sv"
|
||||||
lang="Swedish"
|
lang="Swedish"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="sv-SE" ;;
|
culture="sv-SE" ;;
|
||||||
"th" | "th-"* )
|
"th" | "th-"* )
|
||||||
|
short="th"
|
||||||
lang="Thai"
|
lang="Thai"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="th-TH" ;;
|
culture="th-TH" ;;
|
||||||
"tr" | "tr-"* )
|
"tr" | "tr-"* )
|
||||||
|
short="tr"
|
||||||
lang="Turkish"
|
lang="Turkish"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="tr-TR" ;;
|
culture="tr-TR" ;;
|
||||||
"ua" | "ua-"* | "uk" | "uk-"* )
|
"ua" | "ua-"* | "uk" | "uk-"* )
|
||||||
|
short="uk"
|
||||||
lang="Ukrainian"
|
lang="Ukrainian"
|
||||||
desc="$lang"
|
desc="$lang"
|
||||||
culture="uk-UA" ;;
|
culture="uk-UA" ;;
|
||||||
"hk" | "zh-hk" | "cn-hk" )
|
"hk" | "zh-hk" | "cn-hk" )
|
||||||
lang="Chinese Traditional"
|
short="hk"
|
||||||
|
lang="Chinese (Traditional)"
|
||||||
desc="Chinese HK"
|
desc="Chinese HK"
|
||||||
culture="zh-TW" ;;
|
culture="zh-TW" ;;
|
||||||
"tw" | "zh-tw" | "cn-tw" )
|
"tw" | "zh-tw" | "cn-tw" )
|
||||||
lang="Chinese Traditional"
|
short="tw"
|
||||||
|
lang="Chinese (Traditional)"
|
||||||
desc="Chinese TW"
|
desc="Chinese TW"
|
||||||
culture="zh-TW" ;;
|
culture="zh-TW" ;;
|
||||||
"zh" | "zh-"* | "cn" | "cn-"* )
|
"zh" | "zh-"* | "cn" | "cn-"* )
|
||||||
lang="Chinese Simplified"
|
short="cn"
|
||||||
|
lang="Chinese (Simplified)"
|
||||||
desc="Chinese"
|
desc="Chinese"
|
||||||
culture="zh-CN" ;;
|
culture="zh-CN" ;;
|
||||||
esac
|
esac
|
||||||
@@ -296,6 +336,7 @@ getLanguage() {
|
|||||||
case "${ret,,}" in
|
case "${ret,,}" in
|
||||||
"desc" ) echo "$desc" ;;
|
"desc" ) echo "$desc" ;;
|
||||||
"name" ) echo "$lang" ;;
|
"name" ) echo "$lang" ;;
|
||||||
|
"code" ) echo "$short" ;;
|
||||||
"culture" ) echo "$culture" ;;
|
"culture" ) echo "$culture" ;;
|
||||||
*) echo "$desc";;
|
*) echo "$desc";;
|
||||||
esac
|
esac
|
||||||
@@ -671,10 +712,6 @@ getMido() {
|
|||||||
size=4898582528
|
size=4898582528
|
||||||
sum="e4ab2e3535be5748252a8d5d57539a6e59be8d6726345ee10e7afd2cb89fefb5"
|
sum="e4ab2e3535be5748252a8d5d57539a6e59be8d6726345ee10e7afd2cb89fefb5"
|
||||||
;;
|
;;
|
||||||
"win81x64" )
|
|
||||||
size=4320526336
|
|
||||||
sum="d8333cf427eb3318ff6ab755eb1dd9d433f0e2ae43745312c1cd23e83ca1ce51"
|
|
||||||
;;
|
|
||||||
"win81x64-enterprise-eval" )
|
"win81x64-enterprise-eval" )
|
||||||
size=3961473024
|
size=3961473024
|
||||||
sum="2dedd44c45646c74efc5a028f65336027e14a56f76686a4631cf94ffe37c72f2"
|
sum="2dedd44c45646c74efc5a028f65336027e14a56f76686a4631cf94ffe37c72f2"
|
||||||
@@ -766,6 +803,11 @@ getLink1() {
|
|||||||
sum="d8333cf427eb3318ff6ab755eb1dd9d433f0e2ae43745312c1cd23e83ca1ce51"
|
sum="d8333cf427eb3318ff6ab755eb1dd9d433f0e2ae43745312c1cd23e83ca1ce51"
|
||||||
url="8.x/8.1/en_windows_8.1_with_update_x64_dvd_6051480.iso"
|
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" )
|
"win2025" | "win2025-eval" )
|
||||||
size=5307176960
|
size=5307176960
|
||||||
sum="2293897341febdcea599f5412300b470b5288c6fd2b89666a7b27d283e8d3cf3"
|
sum="2293897341febdcea599f5412300b470b5288c6fd2b89666a7b27d283e8d3cf3"
|
||||||
@@ -948,605 +990,6 @@ getLink2() {
|
|||||||
|
|
||||||
getLink3() {
|
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 id="$1"
|
||||||
local lang="$2"
|
local lang="$2"
|
||||||
local ret="$3"
|
local ret="$3"
|
||||||
@@ -1664,12 +1107,66 @@ isESD() {
|
|||||||
return 1
|
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() {
|
validVersion() {
|
||||||
|
|
||||||
local id="$1"
|
local id="$1"
|
||||||
local lang="$2"
|
local lang="$2"
|
||||||
local url
|
local url
|
||||||
|
|
||||||
|
isMG "$id" "$lang" && return 0
|
||||||
isESD "$id" "$lang" && return 0
|
isESD "$id" "$lang" && return 0
|
||||||
isMido "$id" "$lang" && return 0
|
isMido "$id" "$lang" && return 0
|
||||||
|
|
||||||
@@ -1827,11 +1324,11 @@ prepareInstall() {
|
|||||||
local install="$dir/\$OEM\$/\$1/OEM/install.bat"
|
local install="$dir/\$OEM\$/\$1/OEM/install.bat"
|
||||||
[ -f "$install" ] && oem="\"Script\"=\"cmd /C start \\\"Install\\\" \\\"cmd /C C:\\\\OEM\\\\install.bat\\\"\""
|
[ -f "$install" ] && oem="\"Script\"=\"cmd /C start \\\"Install\\\" \\\"cmd /C C:\\\\OEM\\\\install.bat\\\"\""
|
||||||
|
|
||||||
[ -z "$YRES" ] && YRES="720"
|
[ -z "$WIDTH" ] && WIDTH="1280"
|
||||||
[ -z "$XRES" ] && XRES="1280"
|
[ -z "$HEIGHT" ] && HEIGHT="720"
|
||||||
|
|
||||||
XHEX=$(printf '%x\n' "$XRES")
|
XHEX=$(printf '%x\n' "$WIDTH")
|
||||||
YHEX=$(printf '%x\n' "$YRES")
|
YHEX=$(printf '%x\n' "$HEIGHT")
|
||||||
|
|
||||||
local username="Docker"
|
local username="Docker"
|
||||||
local password="*"
|
local password="*"
|
||||||
@@ -1883,8 +1380,8 @@ prepareInstall() {
|
|||||||
echo ""
|
echo ""
|
||||||
echo "[Display]"
|
echo "[Display]"
|
||||||
echo " BitsPerPel=32"
|
echo " BitsPerPel=32"
|
||||||
echo " XResolution=$XRES"
|
echo " XResolution=$WIDTH"
|
||||||
echo " YResolution=$YRES"
|
echo " YResolution=$HEIGHT"
|
||||||
echo ""
|
echo ""
|
||||||
echo "[Networking]"
|
echo "[Networking]"
|
||||||
echo " InstallDefaultComponents=Yes"
|
echo " InstallDefaultComponents=Yes"
|
||||||
|
|||||||
@@ -620,11 +620,11 @@ updateXML() {
|
|||||||
local language="$2"
|
local language="$2"
|
||||||
local culture region user admin pass keyboard
|
local culture region user admin pass keyboard
|
||||||
|
|
||||||
[ -z "$YRES" ] && YRES="720"
|
[ -z "$HEIGHT" ] && HEIGHT="720"
|
||||||
[ -z "$XRES" ] && XRES="1280"
|
[ -z "$WIDTH" ] && WIDTH="1280"
|
||||||
|
|
||||||
sed -i "s/<VerticalResolution>1080<\/VerticalResolution>/<VerticalResolution>$YRES<\/VerticalResolution>/g" "$asset"
|
sed -i "s/<VerticalResolution>1080<\/VerticalResolution>/<VerticalResolution>$HEIGHT<\/VerticalResolution>/g" "$asset"
|
||||||
sed -i "s/<HorizontalResolution>1920<\/HorizontalResolution>/<HorizontalResolution>$XRES<\/HorizontalResolution>/g" "$asset"
|
sed -i "s/<HorizontalResolution>1920<\/HorizontalResolution>/<HorizontalResolution>$WIDTH<\/HorizontalResolution>/g" "$asset"
|
||||||
|
|
||||||
culture=$(getLanguage "$language" "culture")
|
culture=$(getLanguage "$language" "culture")
|
||||||
|
|
||||||
|
|||||||
383
src/mido.sh
383
src/mido.sh
@@ -4,25 +4,26 @@ set -Eeuo pipefail
|
|||||||
handle_curl_error() {
|
handle_curl_error() {
|
||||||
|
|
||||||
local error_code="$1"
|
local error_code="$1"
|
||||||
|
local server_name="$2"
|
||||||
|
|
||||||
case "$error_code" in
|
case "$error_code" in
|
||||||
1) error "Unsupported protocol!" ;;
|
1) error "Unsupported protocol!" ;;
|
||||||
2) error "Failed to initialize curl!" ;;
|
2) error "Failed to initialize curl!" ;;
|
||||||
3) error "The URL format is malformed!" ;;
|
3) error "The URL format is malformed!" ;;
|
||||||
5) error "Failed to resolve address of proxy host!" ;;
|
5) error "Failed to resolve address of proxy host!" ;;
|
||||||
6) error "Failed to resolve Microsoft servers! Is there an Internet connection?" ;;
|
6) error "Failed to resolve $server_name servers! Is there an Internet connection?" ;;
|
||||||
7) error "Failed to contact Microsoft servers! Is there an Internet connection or is the server down?" ;;
|
7) error "Failed to contact $server_name servers! Is there an Internet connection or is the server down?" ;;
|
||||||
8) error "Microsoft servers returned a malformed HTTP response!" ;;
|
8) error "$server_name servers returned a malformed HTTP response!" ;;
|
||||||
16) error "A problem was detected in the HTTP2 framing layer!" ;;
|
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?" ;;
|
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!" ;;
|
26) error "Failed to read Windows media from disk!" ;;
|
||||||
27) error "Ran out of memory during download!" ;;
|
27) error "Ran out of memory during download!" ;;
|
||||||
28) error "Connection timed out to Microsoft server!" ;;
|
28) error "Connection timed out to $server_name server!" ;;
|
||||||
35) error "SSL connection error from Microsoft server!" ;;
|
35) error "SSL connection error from $server_name server!" ;;
|
||||||
36) error "Failed to continue earlier download!" ;;
|
36) error "Failed to continue earlier download!" ;;
|
||||||
52) error "Received no data from the Microsoft server!" ;;
|
52) error "Received no data from the $server_name server!" ;;
|
||||||
63) error "Microsoft servers returned an unexpectedly large response!" ;;
|
63) error "$server_name servers returned an unexpectedly large response!" ;;
|
||||||
# POSIX defines exit statuses 1-125 as usable by us
|
# POSIX defines exit statuses 1-125 as usable by us
|
||||||
# https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_08_02
|
# https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_08_02
|
||||||
$((error_code <= 125)))
|
$((error_code <= 125)))
|
||||||
@@ -63,31 +64,33 @@ download_windows() {
|
|||||||
local lang="$2"
|
local lang="$2"
|
||||||
local desc="$3"
|
local desc="$3"
|
||||||
local sku_id=""
|
local sku_id=""
|
||||||
|
local sku_url=""
|
||||||
|
local iso_url=""
|
||||||
|
local iso_json=""
|
||||||
local language=""
|
local language=""
|
||||||
local session_id=""
|
local session_id=""
|
||||||
local user_agent=""
|
local user_agent=""
|
||||||
|
local download_type=""
|
||||||
local windows_version=""
|
local windows_version=""
|
||||||
local iso_download_link=""
|
local iso_download_link=""
|
||||||
|
local download_page_html=""
|
||||||
local product_edition_id=""
|
local product_edition_id=""
|
||||||
local iso_download_link_html=""
|
local language_skuid_json=""
|
||||||
local iso_download_page_html=""
|
local profile="606624d44113"
|
||||||
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
|
|
||||||
|
|
||||||
user_agent=$(get_agent)
|
user_agent=$(get_agent)
|
||||||
language=$(getLanguage "$lang" "name")
|
language=$(getLanguage "$lang" "name")
|
||||||
|
|
||||||
local url="https://www.microsoft.com/en-us/software-download/windows$windows_version"
|
case "${id,,}" in
|
||||||
case "$windows_version" in
|
"win11x64" ) windows_version="11" && download_type="1" ;;
|
||||||
8 | 10) url+="ISO";;
|
"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
|
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
|
# 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)
|
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
|
# 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
|
# 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
|
# Remove "Accept" header that curl sends by default
|
||||||
[[ "$DEBUG" == [Yy1]* ]] && echo " - Parsing download page: ${url}"
|
[[ "$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") || {
|
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 $?
|
handle_curl_error "$?" "Microsoft"
|
||||||
return $?
|
return $?
|
||||||
}
|
}
|
||||||
|
|
||||||
[[ "$DEBUG" == [Yy1]* ]] && echo -n "Getting Product edition ID: "
|
[[ "$DEBUG" == [Yy1]* ]] && echo -n "Getting Product edition ID: "
|
||||||
# tr: Filter for only numerics to prevent HTTP parameter injection
|
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)
|
||||||
# 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)
|
|
||||||
[[ "$DEBUG" == [Yy1]* ]] && echo "$product_edition_id"
|
[[ "$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"
|
[[ "$DEBUG" == [Yy1]* ]] && echo "Permit Session ID: $session_id"
|
||||||
# Permit 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" || {
|
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
|
# This should only happen if there's been some change to how this API works
|
||||||
handle_curl_error $?
|
handle_curl_error "$?" "Microsoft"
|
||||||
return $?
|
return $?
|
||||||
}
|
}
|
||||||
|
|
||||||
# Extract everything after the last slash
|
|
||||||
local url_segment_parameter="${url##*/}"
|
|
||||||
|
|
||||||
[[ "$DEBUG" == [Yy1]* ]] && echo -n "Getting language SKU ID: "
|
[[ "$DEBUG" == [Yy1]* ]] && echo -n "Getting language SKU ID: "
|
||||||
# Get language -> skuID association table
|
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"
|
||||||
# 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
|
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") || {
|
||||||
# We must make this request so our next one will be allowed
|
handle_curl_error "$?" "Microsoft"
|
||||||
# --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 $?
|
|
||||||
return $?
|
return $?
|
||||||
}
|
}
|
||||||
|
|
||||||
# tr: Filter for only alphanumerics or "-" to prevent HTTP parameter injection
|
{ sku_id=$(echo "$language_skuid_json" | jq --arg LANG "$language" -r '.Skus[] | select(.Language==$LANG).Id') 2>/dev/null; rc=$?; } || :
|
||||||
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)
|
|
||||||
|
|
||||||
if [ -z "$sku_id" ]; then
|
if [ -z "$sku_id" ] || [[ "${sku_id,,}" == "null" ]] || (( rc != 0 )); then
|
||||||
language=$(getLanguage "$lang" "desc")
|
language=$(getLanguage "$lang" "desc")
|
||||||
error "No download in the $language language available for $desc!"
|
error "No download in the $language language available for $desc!"
|
||||||
return 1
|
return 1
|
||||||
@@ -144,28 +142,31 @@ download_windows() {
|
|||||||
|
|
||||||
# Get ISO download link
|
# 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)
|
# 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
|
# 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."
|
error "Microsoft servers gave us an empty response to our request for an automated download."
|
||||||
return 1
|
return 1
|
||||||
fi
|
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."
|
error "Microsoft blocked the automated download request based on your IP address."
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Filter for 64-bit ISO download URL
|
if echo "$iso_json" | grep -q "We are unable to complete your request at this time."; then
|
||||||
# sed: HTML decode "&" character
|
error "Microsoft blocked the automated download request based on your IP address."
|
||||||
# tr: Filter for only alphanumerics or punctuation
|
return 1
|
||||||
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:]')
|
fi
|
||||||
|
|
||||||
if ! [ "$iso_download_link" ]; then
|
{ iso_download_link=$(echo "$iso_json" | jq --argjson TYPE "$download_type" -r '.ProductDownloadOptions[] | select(.DownloadType==$TYPE).Uri') 2>/dev/null; rc=$?; } || :
|
||||||
# This should only happen if there's been some change to the download endpoint web address
|
|
||||||
|
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!"
|
error "Microsoft servers gave us no download link to our request for an automated download!"
|
||||||
|
info "Response: $iso_json"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -229,7 +230,7 @@ download_windows_eval() {
|
|||||||
|
|
||||||
[[ "$DEBUG" == [Yy1]* ]] && echo "Parsing download page: ${url}"
|
[[ "$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") || {
|
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 $?
|
return $?
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -283,11 +284,11 @@ download_windows_eval() {
|
|||||||
[[ "$DEBUG" == [Yy1]* ]] && echo "Found download link: $iso_download_link"
|
[[ "$DEBUG" == [Yy1]* ]] && echo "Found download link: $iso_download_link"
|
||||||
|
|
||||||
# Follow redirect so proceeding log message is useful
|
# Follow redirect so proceeding log message is useful
|
||||||
# This is a request we make this Fido doesn't
|
# This is a request we make that 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
|
|
||||||
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") || {
|
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
|
# This should only happen if the Microsoft servers are down
|
||||||
handle_curl_error $?
|
handle_curl_error "$?" "Microsoft"
|
||||||
return $?
|
return $?
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -305,7 +306,7 @@ getWindows() {
|
|||||||
language=$(getLanguage "$lang" "desc")
|
language=$(getLanguage "$lang" "desc")
|
||||||
edition=$(printEdition "$version" "$desc")
|
edition=$(printEdition "$version" "$desc")
|
||||||
|
|
||||||
local msg="Requesting $desc from Microsoft server..."
|
local msg="Requesting $desc from the Microsoft servers..."
|
||||||
info "$msg" && html "$msg"
|
info "$msg" && html "$msg"
|
||||||
|
|
||||||
case "${version,,}" in
|
case "${version,,}" in
|
||||||
@@ -317,6 +318,7 @@ getWindows() {
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
case "${version,,}" in
|
case "${version,,}" in
|
||||||
|
"win11${PLATFORM,,}" ) ;;
|
||||||
"win11${PLATFORM,,}-enterprise-iot"* ) ;;
|
"win11${PLATFORM,,}-enterprise-iot"* ) ;;
|
||||||
"win11${PLATFORM,,}-enterprise-ltsc"* ) ;;
|
"win11${PLATFORM,,}-enterprise-ltsc"* ) ;;
|
||||||
* )
|
* )
|
||||||
@@ -327,7 +329,7 @@ getWindows() {
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
case "${version,,}" in
|
case "${version,,}" in
|
||||||
"win81${PLATFORM,,}" | "win10${PLATFORM,,}" | "win11${PLATFORM,,}" )
|
"win10${PLATFORM,,}" | "win11${PLATFORM,,}" )
|
||||||
download_windows "$version" "$lang" "$edition" && return 0
|
download_windows "$version" "$lang" "$edition" && return 0
|
||||||
;;
|
;;
|
||||||
"win11${PLATFORM,,}-enterprise"* | "win10${PLATFORM,,}-enterprise"* )
|
"win11${PLATFORM,,}-enterprise"* | "win10${PLATFORM,,}-enterprise"* )
|
||||||
@@ -427,6 +429,215 @@ getCatalog() {
|
|||||||
return 0
|
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() {
|
getESD() {
|
||||||
|
|
||||||
local dir="$1"
|
local dir="$1"
|
||||||
@@ -457,7 +668,7 @@ getESD() {
|
|||||||
local eFile="esd_edition.xml"
|
local eFile="esd_edition.xml"
|
||||||
local fFile="products_filter.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"
|
msg="Failed to download $winCatalog"
|
||||||
(( rc == 3 )) && error "$msg , cannot write file (disk full?)" && return 1
|
(( rc == 3 )) && error "$msg , cannot write file (disk full?)" && return 1
|
||||||
@@ -583,7 +794,7 @@ downloadFile() {
|
|||||||
info "$msg..."
|
info "$msg..."
|
||||||
/run/progress.sh "$iso" "$size" "$msg ([P])..." &
|
/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"
|
fKill "progress.sh"
|
||||||
|
|
||||||
@@ -610,13 +821,18 @@ downloadImage() {
|
|||||||
local iso="$1"
|
local iso="$1"
|
||||||
local version="$2"
|
local version="$2"
|
||||||
local lang="$3"
|
local lang="$3"
|
||||||
|
local delay=5
|
||||||
local tried="n"
|
local tried="n"
|
||||||
|
local success="n"
|
||||||
local url sum size base desc language
|
local url sum size base desc language
|
||||||
|
local msg="Will retry after $delay seconds..."
|
||||||
|
|
||||||
if [[ "${version,,}" == "http"* ]]; then
|
if [[ "${version,,}" == "http"* ]]; then
|
||||||
base=$(basename "$iso")
|
base=$(basename "$iso")
|
||||||
desc=$(fromFile "$base")
|
desc=$(fromFile "$base")
|
||||||
downloadFile "$iso" "$version" "" "" "" "$desc" && return 0
|
downloadFile "$iso" "$version" "" "" "" "$desc" && return 0
|
||||||
|
info "$msg" && html "$msg" && sleep "$delay"
|
||||||
|
downloadFile "$iso" "$version" "" "" "" "$desc" && return 0
|
||||||
rm -f "$iso"
|
rm -f "$iso"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
@@ -637,11 +853,23 @@ downloadImage() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if isMido "$version" "$lang"; then
|
if isMido "$version" "$lang"; then
|
||||||
|
|
||||||
tried="y"
|
tried="y"
|
||||||
|
success="n"
|
||||||
|
|
||||||
if getWindows "$version" "$lang" "$desc"; then
|
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" )
|
size=$(getMido "$version" "$lang" "size" )
|
||||||
sum=$(getMido "$version" "$lang" "sum")
|
sum=$(getMido "$version" "$lang" "sum")
|
||||||
downloadFile "$iso" "$MIDO_URL" "$sum" "$size" "$lang" "$desc" && return 0
|
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"
|
rm -f "$iso"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -655,10 +883,20 @@ downloadImage() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
tried="y"
|
tried="y"
|
||||||
|
success="n"
|
||||||
|
|
||||||
if getESD "$TMP/esd" "$version" "$lang" "$desc"; then
|
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"
|
ISO="${ISO%.*}.esd"
|
||||||
downloadFile "$ISO" "$ESD" "$ESD_SUM" "$ESD_SIZE" "$lang" "$desc" && return 0
|
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"
|
rm -f "$ISO"
|
||||||
ISO="$iso"
|
ISO="$iso"
|
||||||
fi
|
fi
|
||||||
@@ -677,11 +915,38 @@ downloadImage() {
|
|||||||
size=$(getSize "$i" "$version" "$lang")
|
size=$(getSize "$i" "$version" "$lang")
|
||||||
sum=$(getHash "$i" "$version" "$lang")
|
sum=$(getHash "$i" "$version" "$lang")
|
||||||
downloadFile "$iso" "$url" "$sum" "$size" "$lang" "$desc" && return 0
|
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"
|
rm -f "$iso"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
done
|
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
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user