From 68225e8100a39fc43e7657663c692885d7e356a1 Mon Sep 17 00:00:00 2001 From: alexz Date: Thu, 18 Dec 2025 08:34:48 +0000 Subject: [PATCH] Add full dockurr/windows source with rego customizations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Includes complete dockurr/windows source (not just FROM image) - Added openssh-client and sshpass to Dockerfile - Added SSH key for Windows VM access - Added VPN automation scripts (vpn-login.js, socks5.js, vpn.bat) - Added Windows setup scripts (install-nodejs.ps1, setup-autologin-sshd.ps1, setup-ssh-keys.ps1) - Added rego-startup.sh for script deployment and network setup - Scripts auto-copy to shared folder on container start 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../devcontainer.json | 19 + .../020 - Windows 11 LTSC/devcontainer.json | 19 + .../030 - Windows 10 Pro/devcontainer.json | 19 + .../devcontainer.json | 19 + .../050 - Windows 10 LTSC/devcontainer.json | 19 + .../devcontainer.json | 19 + .../devcontainer.json | 19 + .../devcontainer.json | 19 + .../devcontainer.json | 19 + .../devcontainer.json | 19 + .../devcontainer.json | 19 + .../devcontainer.json | 19 + .../devcontainer.json | 19 + .../devcontainer.json | 19 + .../devcontainer.json | 19 + .../devcontainer.json | 19 + .../devcontainer.json | 19 + .../180 - Tiny11/devcontainer.json | 19 + .../190 - Tiny11 Core/devcontainer.json | 19 + .../200 - Tiny11 Nano/devcontainer.json | 19 + .../210 - Tiny10/devcontainer.json | 19 + .../build/.devcontainer/codespaces.yml | 21 + .../build/.devcontainer/devcontainer.json | 19 + apps/rego-tunnel/build/.dockerignore | 14 + .../build/.github/ISSUE_TEMPLATE/1-issue.yml | 41 + .../.github/ISSUE_TEMPLATE/2-feature.yml | 37 + .../build/.github/ISSUE_TEMPLATE/3-bug.yml | 43 + .../.github/ISSUE_TEMPLATE/4-question.yml | 26 + .../build/.github/ISSUE_TEMPLATE/config.yml | 1 + apps/rego-tunnel/build/.github/dependabot.yml | 10 + apps/rego-tunnel/build/.github/logo.png | Bin 0 -> 247480 bytes apps/rego-tunnel/build/.github/renovate.json | 4 + apps/rego-tunnel/build/.github/winboat.png | Bin 0 -> 22156 bytes .../build/.github/workflows/build.yml | 103 + .../build/.github/workflows/check.yml | 35 + .../build/.github/workflows/hub.yml | 26 + .../build/.github/workflows/review.yml | 66 + .../build/.github/workflows/test.yml | 11 + apps/rego-tunnel/build/.gitignore | 1 + apps/rego-tunnel/build/Dockerfile | 68 +- .../build/assets/win10x64-enterprise-eval.xml | 439 ++++ .../build/assets/win10x64-enterprise.xml | 442 ++++ .../rego-tunnel/build/assets/win10x64-iot.xml | 448 ++++ .../build/assets/win10x64-ltsc.xml | 445 ++++ apps/rego-tunnel/build/assets/win10x64.xml | 442 ++++ .../build/assets/win11x64-enterprise-eval.xml | 472 ++++ .../build/assets/win11x64-enterprise.xml | 475 ++++ .../rego-tunnel/build/assets/win11x64-iot.xml | 475 ++++ .../build/assets/win11x64-ltsc.xml | 475 ++++ apps/rego-tunnel/build/assets/win11x64.xml | 475 ++++ .../build/assets/win2008r2-eval.xml | 304 +++ apps/rego-tunnel/build/assets/win2008r2.xml | 307 +++ .../build/assets/win2012r2-eval.xml | 327 +++ apps/rego-tunnel/build/assets/win2012r2.xml | 330 +++ .../rego-tunnel/build/assets/win2016-eval.xml | 347 +++ apps/rego-tunnel/build/assets/win2016.xml | 350 +++ .../rego-tunnel/build/assets/win2019-eval.xml | 351 +++ apps/rego-tunnel/build/assets/win2019-hv.xml | 356 +++ apps/rego-tunnel/build/assets/win2019.xml | 354 +++ .../rego-tunnel/build/assets/win2022-eval.xml | 351 +++ apps/rego-tunnel/build/assets/win2022.xml | 354 +++ .../rego-tunnel/build/assets/win2025-eval.xml | 361 +++ apps/rego-tunnel/build/assets/win2025.xml | 364 +++ .../build/assets/win7x64-enterprise-eval.xml | 283 +++ .../build/assets/win7x64-enterprise.xml | 287 +++ .../build/assets/win7x64-ultimate.xml | 287 +++ apps/rego-tunnel/build/assets/win7x64.xml | 287 +++ .../build/assets/win7x86-enterprise.xml | 287 +++ .../build/assets/win7x86-ultimate.xml | 287 +++ apps/rego-tunnel/build/assets/win7x86.xml | 287 +++ .../build/assets/win81x64-enterprise-eval.xml | 312 +++ .../build/assets/win81x64-enterprise.xml | 315 +++ apps/rego-tunnel/build/assets/win81x64.xml | 322 +++ .../build/assets/winvistax64-enterprise.xml | 266 +++ .../build/assets/winvistax64-ultimate.xml | 266 +++ apps/rego-tunnel/build/assets/winvistax64.xml | 266 +++ .../build/assets/winvistax86-enterprise.xml | 266 +++ .../build/assets/winvistax86-ultimate.xml | 266 +++ apps/rego-tunnel/build/assets/winvistax86.xml | 266 +++ apps/rego-tunnel/build/compose.yml | 19 + apps/rego-tunnel/build/kubernetes.yml | 100 + apps/rego-tunnel/build/license.md | 19 + apps/rego-tunnel/build/readme.md | 401 ++++ .../build/{scripts => rego}/README.md | 0 .../build/{ => rego}/id_ed25519-lenovo | 0 .../{scripts => rego}/install-nodejs.ps1 | 0 .../setup-autologin-sshd.ps1 | 0 .../{scripts => rego}/setup-ssh-keys.ps1 | 0 .../build/{scripts => rego}/socks5.js | 0 .../build/{scripts => rego}/vpn-login.js | 0 .../build/{scripts => rego}/vpn.bat | 0 apps/rego-tunnel/build/src/define.sh | 1944 +++++++++++++++++ apps/rego-tunnel/build/src/entry.sh | 49 + apps/rego-tunnel/build/src/install.sh | 1336 +++++++++++ apps/rego-tunnel/build/src/mido.sh | 834 +++++++ apps/rego-tunnel/build/src/power.sh | 241 ++ .../build/{ => src}/rego-startup.sh | 10 +- apps/rego-tunnel/build/src/samba.sh | 228 ++ 98 files changed, 19672 insertions(+), 28 deletions(-) create mode 100644 apps/rego-tunnel/build/.devcontainer/010 - Windows 11 Enterprise/devcontainer.json create mode 100644 apps/rego-tunnel/build/.devcontainer/020 - Windows 11 LTSC/devcontainer.json create mode 100644 apps/rego-tunnel/build/.devcontainer/030 - Windows 10 Pro/devcontainer.json create mode 100644 apps/rego-tunnel/build/.devcontainer/040 - Windows 10 Enterprise/devcontainer.json create mode 100644 apps/rego-tunnel/build/.devcontainer/050 - Windows 10 LTSC/devcontainer.json create mode 100644 apps/rego-tunnel/build/.devcontainer/060 - Windows 8.1 Enterprise/devcontainer.json create mode 100644 apps/rego-tunnel/build/.devcontainer/070 - Windows 7 Ultimate/devcontainer.json create mode 100644 apps/rego-tunnel/build/.devcontainer/080 - Windows Vista Ultimate/devcontainer.json create mode 100644 apps/rego-tunnel/build/.devcontainer/090 - Windows XP Professional/devcontainer.json create mode 100644 apps/rego-tunnel/build/.devcontainer/100 - Windows 2000 Professional/devcontainer.json create mode 100644 apps/rego-tunnel/build/.devcontainer/110 - Windows Server 2025/devcontainer.json create mode 100644 apps/rego-tunnel/build/.devcontainer/120 - Windows Server 2022/devcontainer.json create mode 100644 apps/rego-tunnel/build/.devcontainer/130 - Windows Server 2019/devcontainer.json create mode 100644 apps/rego-tunnel/build/.devcontainer/140 - Windows Server 2016/devcontainer.json create mode 100644 apps/rego-tunnel/build/.devcontainer/150 - Windows Server 2012 R2/devcontainer.json create mode 100644 apps/rego-tunnel/build/.devcontainer/160 - Windows Server 2008 R2/devcontainer.json create mode 100644 apps/rego-tunnel/build/.devcontainer/170 - Windows Server 2003/devcontainer.json create mode 100644 apps/rego-tunnel/build/.devcontainer/180 - Tiny11/devcontainer.json create mode 100644 apps/rego-tunnel/build/.devcontainer/190 - Tiny11 Core/devcontainer.json create mode 100644 apps/rego-tunnel/build/.devcontainer/200 - Tiny11 Nano/devcontainer.json create mode 100644 apps/rego-tunnel/build/.devcontainer/210 - Tiny10/devcontainer.json create mode 100644 apps/rego-tunnel/build/.devcontainer/codespaces.yml create mode 100644 apps/rego-tunnel/build/.devcontainer/devcontainer.json create mode 100644 apps/rego-tunnel/build/.dockerignore create mode 100644 apps/rego-tunnel/build/.github/ISSUE_TEMPLATE/1-issue.yml create mode 100644 apps/rego-tunnel/build/.github/ISSUE_TEMPLATE/2-feature.yml create mode 100644 apps/rego-tunnel/build/.github/ISSUE_TEMPLATE/3-bug.yml create mode 100644 apps/rego-tunnel/build/.github/ISSUE_TEMPLATE/4-question.yml create mode 100644 apps/rego-tunnel/build/.github/ISSUE_TEMPLATE/config.yml create mode 100644 apps/rego-tunnel/build/.github/dependabot.yml create mode 100644 apps/rego-tunnel/build/.github/logo.png create mode 100644 apps/rego-tunnel/build/.github/renovate.json create mode 100644 apps/rego-tunnel/build/.github/winboat.png create mode 100644 apps/rego-tunnel/build/.github/workflows/build.yml create mode 100644 apps/rego-tunnel/build/.github/workflows/check.yml create mode 100644 apps/rego-tunnel/build/.github/workflows/hub.yml create mode 100644 apps/rego-tunnel/build/.github/workflows/review.yml create mode 100644 apps/rego-tunnel/build/.github/workflows/test.yml create mode 100644 apps/rego-tunnel/build/.gitignore create mode 100644 apps/rego-tunnel/build/assets/win10x64-enterprise-eval.xml create mode 100644 apps/rego-tunnel/build/assets/win10x64-enterprise.xml create mode 100644 apps/rego-tunnel/build/assets/win10x64-iot.xml create mode 100644 apps/rego-tunnel/build/assets/win10x64-ltsc.xml create mode 100644 apps/rego-tunnel/build/assets/win10x64.xml create mode 100644 apps/rego-tunnel/build/assets/win11x64-enterprise-eval.xml create mode 100644 apps/rego-tunnel/build/assets/win11x64-enterprise.xml create mode 100644 apps/rego-tunnel/build/assets/win11x64-iot.xml create mode 100644 apps/rego-tunnel/build/assets/win11x64-ltsc.xml create mode 100644 apps/rego-tunnel/build/assets/win11x64.xml create mode 100644 apps/rego-tunnel/build/assets/win2008r2-eval.xml create mode 100644 apps/rego-tunnel/build/assets/win2008r2.xml create mode 100644 apps/rego-tunnel/build/assets/win2012r2-eval.xml create mode 100644 apps/rego-tunnel/build/assets/win2012r2.xml create mode 100644 apps/rego-tunnel/build/assets/win2016-eval.xml create mode 100644 apps/rego-tunnel/build/assets/win2016.xml create mode 100644 apps/rego-tunnel/build/assets/win2019-eval.xml create mode 100644 apps/rego-tunnel/build/assets/win2019-hv.xml create mode 100644 apps/rego-tunnel/build/assets/win2019.xml create mode 100644 apps/rego-tunnel/build/assets/win2022-eval.xml create mode 100644 apps/rego-tunnel/build/assets/win2022.xml create mode 100644 apps/rego-tunnel/build/assets/win2025-eval.xml create mode 100644 apps/rego-tunnel/build/assets/win2025.xml create mode 100644 apps/rego-tunnel/build/assets/win7x64-enterprise-eval.xml create mode 100644 apps/rego-tunnel/build/assets/win7x64-enterprise.xml create mode 100644 apps/rego-tunnel/build/assets/win7x64-ultimate.xml create mode 100644 apps/rego-tunnel/build/assets/win7x64.xml create mode 100644 apps/rego-tunnel/build/assets/win7x86-enterprise.xml create mode 100644 apps/rego-tunnel/build/assets/win7x86-ultimate.xml create mode 100644 apps/rego-tunnel/build/assets/win7x86.xml create mode 100644 apps/rego-tunnel/build/assets/win81x64-enterprise-eval.xml create mode 100644 apps/rego-tunnel/build/assets/win81x64-enterprise.xml create mode 100644 apps/rego-tunnel/build/assets/win81x64.xml create mode 100644 apps/rego-tunnel/build/assets/winvistax64-enterprise.xml create mode 100644 apps/rego-tunnel/build/assets/winvistax64-ultimate.xml create mode 100644 apps/rego-tunnel/build/assets/winvistax64.xml create mode 100644 apps/rego-tunnel/build/assets/winvistax86-enterprise.xml create mode 100644 apps/rego-tunnel/build/assets/winvistax86-ultimate.xml create mode 100644 apps/rego-tunnel/build/assets/winvistax86.xml create mode 100644 apps/rego-tunnel/build/compose.yml create mode 100644 apps/rego-tunnel/build/kubernetes.yml create mode 100644 apps/rego-tunnel/build/license.md create mode 100644 apps/rego-tunnel/build/readme.md rename apps/rego-tunnel/build/{scripts => rego}/README.md (100%) rename apps/rego-tunnel/build/{ => rego}/id_ed25519-lenovo (100%) rename apps/rego-tunnel/build/{scripts => rego}/install-nodejs.ps1 (100%) rename apps/rego-tunnel/build/{scripts => rego}/setup-autologin-sshd.ps1 (100%) rename apps/rego-tunnel/build/{scripts => rego}/setup-ssh-keys.ps1 (100%) rename apps/rego-tunnel/build/{scripts => rego}/socks5.js (100%) rename apps/rego-tunnel/build/{scripts => rego}/vpn-login.js (100%) rename apps/rego-tunnel/build/{scripts => rego}/vpn.bat (100%) create mode 100644 apps/rego-tunnel/build/src/define.sh create mode 100644 apps/rego-tunnel/build/src/entry.sh create mode 100644 apps/rego-tunnel/build/src/install.sh create mode 100644 apps/rego-tunnel/build/src/mido.sh create mode 100644 apps/rego-tunnel/build/src/power.sh rename apps/rego-tunnel/build/{ => src}/rego-startup.sh (91%) create mode 100644 apps/rego-tunnel/build/src/samba.sh diff --git a/apps/rego-tunnel/build/.devcontainer/010 - Windows 11 Enterprise/devcontainer.json b/apps/rego-tunnel/build/.devcontainer/010 - Windows 11 Enterprise/devcontainer.json new file mode 100644 index 0000000..ab221a9 --- /dev/null +++ b/apps/rego-tunnel/build/.devcontainer/010 - Windows 11 Enterprise/devcontainer.json @@ -0,0 +1,19 @@ +{ + "name": "Windows 11 Enterprise", + "service": "windows", + "containerEnv": { + "VERSION": "11e" + }, + "forwardPorts": [8006], + "portsAttributes": { + "8006": { + "label": "Web", + "onAutoForward": "notify" + } + }, + "otherPortsAttributes": { + "onAutoForward": "ignore" + }, + "dockerComposeFile": "../codespaces.yml", + "initializeCommand": "docker system prune --all --force" +} diff --git a/apps/rego-tunnel/build/.devcontainer/020 - Windows 11 LTSC/devcontainer.json b/apps/rego-tunnel/build/.devcontainer/020 - Windows 11 LTSC/devcontainer.json new file mode 100644 index 0000000..0c77cca --- /dev/null +++ b/apps/rego-tunnel/build/.devcontainer/020 - Windows 11 LTSC/devcontainer.json @@ -0,0 +1,19 @@ +{ + "name": "Windows 11 LTSC", + "service": "windows", + "containerEnv": { + "VERSION": "11l" + }, + "forwardPorts": [8006], + "portsAttributes": { + "8006": { + "label": "Web", + "onAutoForward": "notify" + } + }, + "otherPortsAttributes": { + "onAutoForward": "ignore" + }, + "dockerComposeFile": "../codespaces.yml", + "initializeCommand": "docker system prune --all --force" +} diff --git a/apps/rego-tunnel/build/.devcontainer/030 - Windows 10 Pro/devcontainer.json b/apps/rego-tunnel/build/.devcontainer/030 - Windows 10 Pro/devcontainer.json new file mode 100644 index 0000000..27ad0bb --- /dev/null +++ b/apps/rego-tunnel/build/.devcontainer/030 - Windows 10 Pro/devcontainer.json @@ -0,0 +1,19 @@ +{ + "name": "Windows 10 Pro", + "service": "windows", + "containerEnv": { + "VERSION": "10" + }, + "forwardPorts": [8006], + "portsAttributes": { + "8006": { + "label": "Web", + "onAutoForward": "notify" + } + }, + "otherPortsAttributes": { + "onAutoForward": "ignore" + }, + "dockerComposeFile": "../codespaces.yml", + "initializeCommand": "docker system prune --all --force" +} diff --git a/apps/rego-tunnel/build/.devcontainer/040 - Windows 10 Enterprise/devcontainer.json b/apps/rego-tunnel/build/.devcontainer/040 - Windows 10 Enterprise/devcontainer.json new file mode 100644 index 0000000..3306e88 --- /dev/null +++ b/apps/rego-tunnel/build/.devcontainer/040 - Windows 10 Enterprise/devcontainer.json @@ -0,0 +1,19 @@ +{ + "name": "Windows 10 Enterprise", + "service": "windows", + "containerEnv": { + "VERSION": "10e" + }, + "forwardPorts": [8006], + "portsAttributes": { + "8006": { + "label": "Web", + "onAutoForward": "notify" + } + }, + "otherPortsAttributes": { + "onAutoForward": "ignore" + }, + "dockerComposeFile": "../codespaces.yml", + "initializeCommand": "docker system prune --all --force" +} diff --git a/apps/rego-tunnel/build/.devcontainer/050 - Windows 10 LTSC/devcontainer.json b/apps/rego-tunnel/build/.devcontainer/050 - Windows 10 LTSC/devcontainer.json new file mode 100644 index 0000000..65ef8a5 --- /dev/null +++ b/apps/rego-tunnel/build/.devcontainer/050 - Windows 10 LTSC/devcontainer.json @@ -0,0 +1,19 @@ +{ + "name": "Windows 10 LTSC", + "service": "windows", + "containerEnv": { + "VERSION": "10l" + }, + "forwardPorts": [8006], + "portsAttributes": { + "8006": { + "label": "Web", + "onAutoForward": "notify" + } + }, + "otherPortsAttributes": { + "onAutoForward": "ignore" + }, + "dockerComposeFile": "../codespaces.yml", + "initializeCommand": "docker system prune --all --force" +} diff --git a/apps/rego-tunnel/build/.devcontainer/060 - Windows 8.1 Enterprise/devcontainer.json b/apps/rego-tunnel/build/.devcontainer/060 - Windows 8.1 Enterprise/devcontainer.json new file mode 100644 index 0000000..73d95c1 --- /dev/null +++ b/apps/rego-tunnel/build/.devcontainer/060 - Windows 8.1 Enterprise/devcontainer.json @@ -0,0 +1,19 @@ +{ + "name": "Windows 8.1 Enterprise", + "service": "windows", + "containerEnv": { + "VERSION": "8e" + }, + "forwardPorts": [8006], + "portsAttributes": { + "8006": { + "label": "Web", + "onAutoForward": "notify" + } + }, + "otherPortsAttributes": { + "onAutoForward": "ignore" + }, + "dockerComposeFile": "../codespaces.yml", + "initializeCommand": "docker system prune --all --force" +} diff --git a/apps/rego-tunnel/build/.devcontainer/070 - Windows 7 Ultimate/devcontainer.json b/apps/rego-tunnel/build/.devcontainer/070 - Windows 7 Ultimate/devcontainer.json new file mode 100644 index 0000000..8149aa7 --- /dev/null +++ b/apps/rego-tunnel/build/.devcontainer/070 - Windows 7 Ultimate/devcontainer.json @@ -0,0 +1,19 @@ +{ + "name": "Windows 7 Ultimate", + "service": "windows", + "containerEnv": { + "VERSION": "7u" + }, + "forwardPorts": [8006], + "portsAttributes": { + "8006": { + "label": "Web", + "onAutoForward": "notify" + } + }, + "otherPortsAttributes": { + "onAutoForward": "ignore" + }, + "dockerComposeFile": "../codespaces.yml", + "initializeCommand": "docker system prune --all --force" +} diff --git a/apps/rego-tunnel/build/.devcontainer/080 - Windows Vista Ultimate/devcontainer.json b/apps/rego-tunnel/build/.devcontainer/080 - Windows Vista Ultimate/devcontainer.json new file mode 100644 index 0000000..7621b74 --- /dev/null +++ b/apps/rego-tunnel/build/.devcontainer/080 - Windows Vista Ultimate/devcontainer.json @@ -0,0 +1,19 @@ +{ + "name": "Windows Vista Ultimate", + "service": "windows", + "containerEnv": { + "VERSION": "vu" + }, + "forwardPorts": [8006], + "portsAttributes": { + "8006": { + "label": "Web", + "onAutoForward": "notify" + } + }, + "otherPortsAttributes": { + "onAutoForward": "ignore" + }, + "dockerComposeFile": "../codespaces.yml", + "initializeCommand": "docker system prune --all --force" +} diff --git a/apps/rego-tunnel/build/.devcontainer/090 - Windows XP Professional/devcontainer.json b/apps/rego-tunnel/build/.devcontainer/090 - Windows XP Professional/devcontainer.json new file mode 100644 index 0000000..77eecdb --- /dev/null +++ b/apps/rego-tunnel/build/.devcontainer/090 - Windows XP Professional/devcontainer.json @@ -0,0 +1,19 @@ +{ + "name": "Windows XP Professional", + "service": "windows", + "containerEnv": { + "VERSION": "xp" + }, + "forwardPorts": [8006], + "portsAttributes": { + "8006": { + "label": "Web", + "onAutoForward": "notify" + } + }, + "otherPortsAttributes": { + "onAutoForward": "ignore" + }, + "dockerComposeFile": "../codespaces.yml", + "initializeCommand": "docker system prune --all --force" +} diff --git a/apps/rego-tunnel/build/.devcontainer/100 - Windows 2000 Professional/devcontainer.json b/apps/rego-tunnel/build/.devcontainer/100 - Windows 2000 Professional/devcontainer.json new file mode 100644 index 0000000..d226c19 --- /dev/null +++ b/apps/rego-tunnel/build/.devcontainer/100 - Windows 2000 Professional/devcontainer.json @@ -0,0 +1,19 @@ +{ + "name": "Windows 2000 Professional", + "service": "windows", + "containerEnv": { + "VERSION": "2k" + }, + "forwardPorts": [8006], + "portsAttributes": { + "8006": { + "label": "Web", + "onAutoForward": "notify" + } + }, + "otherPortsAttributes": { + "onAutoForward": "ignore" + }, + "dockerComposeFile": "../codespaces.yml", + "initializeCommand": "docker system prune --all --force" +} diff --git a/apps/rego-tunnel/build/.devcontainer/110 - Windows Server 2025/devcontainer.json b/apps/rego-tunnel/build/.devcontainer/110 - Windows Server 2025/devcontainer.json new file mode 100644 index 0000000..080ad3b --- /dev/null +++ b/apps/rego-tunnel/build/.devcontainer/110 - Windows Server 2025/devcontainer.json @@ -0,0 +1,19 @@ +{ + "name": "Windows Server 2025", + "service": "windows", + "containerEnv": { + "VERSION": "2025" + }, + "forwardPorts": [8006], + "portsAttributes": { + "8006": { + "label": "Web", + "onAutoForward": "notify" + } + }, + "otherPortsAttributes": { + "onAutoForward": "ignore" + }, + "dockerComposeFile": "../codespaces.yml", + "initializeCommand": "docker system prune --all --force" +} diff --git a/apps/rego-tunnel/build/.devcontainer/120 - Windows Server 2022/devcontainer.json b/apps/rego-tunnel/build/.devcontainer/120 - Windows Server 2022/devcontainer.json new file mode 100644 index 0000000..69727ac --- /dev/null +++ b/apps/rego-tunnel/build/.devcontainer/120 - Windows Server 2022/devcontainer.json @@ -0,0 +1,19 @@ +{ + "name": "Windows Server 2022", + "service": "windows", + "containerEnv": { + "VERSION": "2022" + }, + "forwardPorts": [8006], + "portsAttributes": { + "8006": { + "label": "Web", + "onAutoForward": "notify" + } + }, + "otherPortsAttributes": { + "onAutoForward": "ignore" + }, + "dockerComposeFile": "../codespaces.yml", + "initializeCommand": "docker system prune --all --force" +} diff --git a/apps/rego-tunnel/build/.devcontainer/130 - Windows Server 2019/devcontainer.json b/apps/rego-tunnel/build/.devcontainer/130 - Windows Server 2019/devcontainer.json new file mode 100644 index 0000000..398aeb8 --- /dev/null +++ b/apps/rego-tunnel/build/.devcontainer/130 - Windows Server 2019/devcontainer.json @@ -0,0 +1,19 @@ +{ + "name": "Windows Server 2019", + "service": "windows", + "containerEnv": { + "VERSION": "2019" + }, + "forwardPorts": [8006], + "portsAttributes": { + "8006": { + "label": "Web", + "onAutoForward": "notify" + } + }, + "otherPortsAttributes": { + "onAutoForward": "ignore" + }, + "dockerComposeFile": "../codespaces.yml", + "initializeCommand": "docker system prune --all --force" +} diff --git a/apps/rego-tunnel/build/.devcontainer/140 - Windows Server 2016/devcontainer.json b/apps/rego-tunnel/build/.devcontainer/140 - Windows Server 2016/devcontainer.json new file mode 100644 index 0000000..4af1e15 --- /dev/null +++ b/apps/rego-tunnel/build/.devcontainer/140 - Windows Server 2016/devcontainer.json @@ -0,0 +1,19 @@ +{ + "name": "Windows Server 2016", + "service": "windows", + "containerEnv": { + "VERSION": "2016" + }, + "forwardPorts": [8006], + "portsAttributes": { + "8006": { + "label": "Web", + "onAutoForward": "notify" + } + }, + "otherPortsAttributes": { + "onAutoForward": "ignore" + }, + "dockerComposeFile": "../codespaces.yml", + "initializeCommand": "docker system prune --all --force" +} diff --git a/apps/rego-tunnel/build/.devcontainer/150 - Windows Server 2012 R2/devcontainer.json b/apps/rego-tunnel/build/.devcontainer/150 - Windows Server 2012 R2/devcontainer.json new file mode 100644 index 0000000..cfc372c --- /dev/null +++ b/apps/rego-tunnel/build/.devcontainer/150 - Windows Server 2012 R2/devcontainer.json @@ -0,0 +1,19 @@ +{ + "name": "Windows Server 2012 R2", + "service": "windows", + "containerEnv": { + "VERSION": "2012" + }, + "forwardPorts": [8006], + "portsAttributes": { + "8006": { + "label": "Web", + "onAutoForward": "notify" + } + }, + "otherPortsAttributes": { + "onAutoForward": "ignore" + }, + "dockerComposeFile": "../codespaces.yml", + "initializeCommand": "docker system prune --all --force" +} diff --git a/apps/rego-tunnel/build/.devcontainer/160 - Windows Server 2008 R2/devcontainer.json b/apps/rego-tunnel/build/.devcontainer/160 - Windows Server 2008 R2/devcontainer.json new file mode 100644 index 0000000..f3bd07c --- /dev/null +++ b/apps/rego-tunnel/build/.devcontainer/160 - Windows Server 2008 R2/devcontainer.json @@ -0,0 +1,19 @@ +{ + "name": "Windows Server 2008 R2", + "service": "windows", + "containerEnv": { + "VERSION": "2008" + }, + "forwardPorts": [8006], + "portsAttributes": { + "8006": { + "label": "Web", + "onAutoForward": "notify" + } + }, + "otherPortsAttributes": { + "onAutoForward": "ignore" + }, + "dockerComposeFile": "../codespaces.yml", + "initializeCommand": "docker system prune --all --force" +} diff --git a/apps/rego-tunnel/build/.devcontainer/170 - Windows Server 2003/devcontainer.json b/apps/rego-tunnel/build/.devcontainer/170 - Windows Server 2003/devcontainer.json new file mode 100644 index 0000000..71f14ff --- /dev/null +++ b/apps/rego-tunnel/build/.devcontainer/170 - Windows Server 2003/devcontainer.json @@ -0,0 +1,19 @@ +{ + "name": "Windows Server 2003", + "service": "windows", + "containerEnv": { + "VERSION": "2003" + }, + "forwardPorts": [8006], + "portsAttributes": { + "8006": { + "label": "Web", + "onAutoForward": "notify" + } + }, + "otherPortsAttributes": { + "onAutoForward": "ignore" + }, + "dockerComposeFile": "../codespaces.yml", + "initializeCommand": "docker system prune --all --force" +} diff --git a/apps/rego-tunnel/build/.devcontainer/180 - Tiny11/devcontainer.json b/apps/rego-tunnel/build/.devcontainer/180 - Tiny11/devcontainer.json new file mode 100644 index 0000000..5ce5909 --- /dev/null +++ b/apps/rego-tunnel/build/.devcontainer/180 - Tiny11/devcontainer.json @@ -0,0 +1,19 @@ +{ + "name": "Tiny11", + "service": "windows", + "containerEnv": { + "VERSION": "tiny11" + }, + "forwardPorts": [8006], + "portsAttributes": { + "8006": { + "label": "Web", + "onAutoForward": "notify" + } + }, + "otherPortsAttributes": { + "onAutoForward": "ignore" + }, + "dockerComposeFile": "../codespaces.yml", + "initializeCommand": "docker system prune --all --force" +} diff --git a/apps/rego-tunnel/build/.devcontainer/190 - Tiny11 Core/devcontainer.json b/apps/rego-tunnel/build/.devcontainer/190 - Tiny11 Core/devcontainer.json new file mode 100644 index 0000000..16da776 --- /dev/null +++ b/apps/rego-tunnel/build/.devcontainer/190 - Tiny11 Core/devcontainer.json @@ -0,0 +1,19 @@ +{ + "name": "Tiny11 Core", + "service": "windows", + "containerEnv": { + "VERSION": "core11" + }, + "forwardPorts": [8006], + "portsAttributes": { + "8006": { + "label": "Web", + "onAutoForward": "notify" + } + }, + "otherPortsAttributes": { + "onAutoForward": "ignore" + }, + "dockerComposeFile": "../codespaces.yml", + "initializeCommand": "docker system prune --all --force" +} diff --git a/apps/rego-tunnel/build/.devcontainer/200 - Tiny11 Nano/devcontainer.json b/apps/rego-tunnel/build/.devcontainer/200 - Tiny11 Nano/devcontainer.json new file mode 100644 index 0000000..db9136c --- /dev/null +++ b/apps/rego-tunnel/build/.devcontainer/200 - Tiny11 Nano/devcontainer.json @@ -0,0 +1,19 @@ +{ + "name": "Tiny11 Nano", + "service": "windows", + "containerEnv": { + "VERSION": "nano11" + }, + "forwardPorts": [8006], + "portsAttributes": { + "8006": { + "label": "Web", + "onAutoForward": "notify" + } + }, + "otherPortsAttributes": { + "onAutoForward": "ignore" + }, + "dockerComposeFile": "../codespaces.yml", + "initializeCommand": "docker system prune --all --force" +} diff --git a/apps/rego-tunnel/build/.devcontainer/210 - Tiny10/devcontainer.json b/apps/rego-tunnel/build/.devcontainer/210 - Tiny10/devcontainer.json new file mode 100644 index 0000000..e96308a --- /dev/null +++ b/apps/rego-tunnel/build/.devcontainer/210 - Tiny10/devcontainer.json @@ -0,0 +1,19 @@ +{ + "name": "Tiny10", + "service": "windows", + "containerEnv": { + "VERSION": "tiny10" + }, + "forwardPorts": [8006], + "portsAttributes": { + "8006": { + "label": "Web", + "onAutoForward": "notify" + } + }, + "otherPortsAttributes": { + "onAutoForward": "ignore" + }, + "dockerComposeFile": "../codespaces.yml", + "initializeCommand": "docker system prune --all --force" +} diff --git a/apps/rego-tunnel/build/.devcontainer/codespaces.yml b/apps/rego-tunnel/build/.devcontainer/codespaces.yml new file mode 100644 index 0000000..85e3f64 --- /dev/null +++ b/apps/rego-tunnel/build/.devcontainer/codespaces.yml @@ -0,0 +1,21 @@ +services: + windows: + container_name: windows + image: ghcr.io/dockur/windows + environment: + RAM_SIZE: "half" + DISK_SIZE: "max" + CPU_CORES: "max" + devices: + - /dev/kvm + - /dev/net/tun + cap_add: + - NET_ADMIN + ports: + - 8006:8006 + - 3389:3389/tcp + - 3389:3389/udp + volumes: + - ./windows:/storage + restart: on-failure + stop_grace_period: 2m diff --git a/apps/rego-tunnel/build/.devcontainer/devcontainer.json b/apps/rego-tunnel/build/.devcontainer/devcontainer.json new file mode 100644 index 0000000..47a0f5c --- /dev/null +++ b/apps/rego-tunnel/build/.devcontainer/devcontainer.json @@ -0,0 +1,19 @@ +{ + "name": "Windows 11 Pro", + "service": "windows", + "containerEnv": { + "VERSION": "11" + }, + "forwardPorts": [8006], + "portsAttributes": { + "8006": { + "label": "Web", + "onAutoForward": "notify" + } + }, + "otherPortsAttributes": { + "onAutoForward": "ignore" + }, + "dockerComposeFile": "codespaces.yml", + "initializeCommand": "docker system prune --all --force" +} diff --git a/apps/rego-tunnel/build/.dockerignore b/apps/rego-tunnel/build/.dockerignore new file mode 100644 index 0000000..154d44a --- /dev/null +++ b/apps/rego-tunnel/build/.dockerignore @@ -0,0 +1,14 @@ +.dockerignore +.devcontainer +.git +.github +.gitignore +.gitlab-ci.yml +.gitmodules +Dockerfile +Dockerfile.archive +compose.yml +compose.yaml +docker-compose.yml +docker-compose.yaml +*.md diff --git a/apps/rego-tunnel/build/.github/ISSUE_TEMPLATE/1-issue.yml b/apps/rego-tunnel/build/.github/ISSUE_TEMPLATE/1-issue.yml new file mode 100644 index 0000000..87860c9 --- /dev/null +++ b/apps/rego-tunnel/build/.github/ISSUE_TEMPLATE/1-issue.yml @@ -0,0 +1,41 @@ +name: "\U0001F6A8 Technical issue" +description: When you're experiencing problems using the container +body: + - type: input + id: os + attributes: + label: Operating system + description: Your Linux distribution (can be shown by `lsb_release -a`). + placeholder: e.g. Ubuntu 24.04 + validations: + required: true + - type: textarea + id: summary + attributes: + label: Description + description: A clear and concise description of your issue. + validations: + required: true + - type: textarea + id: compose + attributes: + label: Docker compose + description: The compose file (or otherwise the `docker run` command used). + render: yaml + validations: + required: true + - type: textarea + id: log + attributes: + label: Docker log + description: The logfile of the container (as shown by `docker logs windows`). + render: shell + validations: + required: true + - type: textarea + id: screenshot + attributes: + label: Screenshots (optional) + description: Screenshots that might help to make the problem more clear. + validations: + required: false diff --git a/apps/rego-tunnel/build/.github/ISSUE_TEMPLATE/2-feature.yml b/apps/rego-tunnel/build/.github/ISSUE_TEMPLATE/2-feature.yml new file mode 100644 index 0000000..eb95b34 --- /dev/null +++ b/apps/rego-tunnel/build/.github/ISSUE_TEMPLATE/2-feature.yml @@ -0,0 +1,37 @@ +name: "\U0001F680 Feature request" +description: Suggest an idea for improving the container +title: "[Feature]: " +labels: ["enhancement"] +body: + - type: textarea + id: problem + attributes: + label: Is your proposal related to a problem? + description: | + Provide a clear and concise description of what the problem is. + For example, "I'm always frustrated when..." + validations: + required: true + - type: textarea + id: solution + attributes: + label: Describe the solution you'd like. + description: | + Provide a clear and concise description of what you want to happen. + validations: + required: true + - type: textarea + id: alternatives + attributes: + label: Describe alternatives you've considered. + description: | + Let us know about other solutions you've tried or researched. + validations: + required: true + - type: textarea + id: context + attributes: + label: Additional context + description: | + Is there anything else you can add about the proposal? + You might want to link to related issues here, if you haven't already. diff --git a/apps/rego-tunnel/build/.github/ISSUE_TEMPLATE/3-bug.yml b/apps/rego-tunnel/build/.github/ISSUE_TEMPLATE/3-bug.yml new file mode 100644 index 0000000..f614f27 --- /dev/null +++ b/apps/rego-tunnel/build/.github/ISSUE_TEMPLATE/3-bug.yml @@ -0,0 +1,43 @@ +name: "\U0001F41E Bug report" +description: Create a report to help us improve the container +title: "[Bug]: " +labels: ["bug"] +body: + - type: input + id: os + attributes: + label: Operating system + description: Your Linux distribution (can be shown by `lsb_release -a`). + placeholder: e.g. Ubuntu 24.04 + validations: + required: true + - type: textarea + id: summary + attributes: + label: Description + description: Describe the expected behaviour, the actual behaviour, and the steps to reproduce. + validations: + required: true + - type: textarea + id: compose + attributes: + label: Docker compose + description: The compose file (or otherwise the `docker run` command used). + render: yaml + validations: + required: true + - type: textarea + id: log + attributes: + label: Docker log + description: The logfile of the container (as shown by `docker logs windows`). + render: shell + validations: + required: true + - type: textarea + id: screenshot + attributes: + label: Screenshots (optional) + description: Screenshots that might help to make the problem more clear. + validations: + required: false diff --git a/apps/rego-tunnel/build/.github/ISSUE_TEMPLATE/4-question.yml b/apps/rego-tunnel/build/.github/ISSUE_TEMPLATE/4-question.yml new file mode 100644 index 0000000..9094d6d --- /dev/null +++ b/apps/rego-tunnel/build/.github/ISSUE_TEMPLATE/4-question.yml @@ -0,0 +1,26 @@ +name: "\U00002753 General question" +description: Questions about the container not related to an issue +title: "[Question]: " +labels: ["question"] +body: + - type: checkboxes + attributes: + label: Is your question not already answered in the FAQ? + description: Please read the [FAQ](https://github.com/dockur/windows/blob/master/readme.md) carefully to avoid asking duplicate questions. + options: + - label: I made sure the question is not listed in the [FAQ](https://github.com/dockur/windows/blob/master/readme.md). + required: true + - type: checkboxes + attributes: + label: Is this a general question and not a technical issue? + description: For questions related to issues you must use the [technical issue](https://github.com/dockur/windows/issues/new?assignees=&labels=&projects=&template=1-issue.yml) form instead. It contains all the right fields (system info, logfiles, etc.) we need in order to be able to help you. + options: + - label: I am sure my question is not about a technical issue. + required: true + - type: textarea + id: question + attributes: + label: Question + description: What's the question you have about the container? + validations: + required: true diff --git a/apps/rego-tunnel/build/.github/ISSUE_TEMPLATE/config.yml b/apps/rego-tunnel/build/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..3ba13e0 --- /dev/null +++ b/apps/rego-tunnel/build/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1 @@ +blank_issues_enabled: false diff --git a/apps/rego-tunnel/build/.github/dependabot.yml b/apps/rego-tunnel/build/.github/dependabot.yml new file mode 100644 index 0000000..f08cd93 --- /dev/null +++ b/apps/rego-tunnel/build/.github/dependabot.yml @@ -0,0 +1,10 @@ +version: 2 +updates: + - package-ecosystem: docker + directory: / + schedule: + interval: weekly + - package-ecosystem: github-actions + directory: / + schedule: + interval: weekly diff --git a/apps/rego-tunnel/build/.github/logo.png b/apps/rego-tunnel/build/.github/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6c572f0b7ab1912288326afbdc815cc0e9dff549 GIT binary patch literal 247480 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%0AQ9e zlw?Q}_;9oi&`rDO)YVoDN?a7zrWE7E)&ytI&G7!tHKbVrxt2M(Zm@;__?Dw35q;*xK%M-wk}t@=7bp47__IB>G^Nt2_{>m02sZ6lQ? z3lD|3TiAd$F2L*q+S=CT;|F}GQ#z%TIJLcwr=K~4hc2$*g%{5vrCr>be~5XqkNxWZ zd>=R7FPu2>obcYycAIrpp9EN|cQt!$c}piNh%|;8jlj`T6~R^k{1SlwbNa@&{v!Fa ze|v{Do`yC6zk8=`0r+PCo?Pl#ltPpy5D#Fq&*yz~18)7MV{=h!m_utrQ2U(>udN;} zbU~P7X83qmJb*1|6I%dL_au`^oM#D; z!{KYT>wnoKuv7|2GYQ3vl!3qe;5HOc3UgQFE&|{}!;b+7u0-vd2TKNsV@xI^Y@8S) zM}jm(j#DThqNd@tDl2-u1W8qY(^PN+bI0``+Vj7|tV|G8CMe0PfX-(JPr|FDC- zd5S2C8l6842$IHzW7o(vAgOuass?Oq%(VtkavWy*+{nhUE2dA^83$)>*2f<^kz%tJ zjjaAPOAE|n_~vrwZwm+(-%)U%P}w%ZzQN#hV%J>SeWBweJFCS2eY#eyC)$UO)X$@j z_W2`wHEvZ5DHYD1*~CYmKZ}PRUcuu}oj^`|xIVv9g1tS=(>c;Sg_IKWy*cK$V~j^* zMA0U0-P&&)AGNlnFp~=Of?--N{EPAoDoY`wm1WQ59|Q0!0R9fZ{$S1zz;9?BZTjZ7 zMj(8qERtQiSo<;QyxjF5kU3DlVAlXTVLfxQ){kW`>UElrra#q4Ot=fTckx>=RmTB{ zR!Uk?d&BLuR+=F_BF5vZ3VbsufS+12Ay8M%TmXbo3ukbwVIQ_rtbNA~)BHD??~0nrsZ*DhRE_sCN1X{8XQF^GpTiJs}7Rk}<;SinK9`_Qp;Kv;SDjMPexhuPkrT2}3@d$3b` zs`|lxMnK_hf8o+8%+kG5#vullsS(r#TKa;%McF#rm^!-{I$I-Z)H^M;(=MW(QN2*g zWZ!7u60jgIdXP}+XNXwEv#&Sm!C}MQ3oe~Vk5v!YgA7J0Mw%%w2 z9sM)uS*Qj|R4M;4V`FoIM;_V4)xCF-WC@g129G3%-iII%Was^IYrC}iHB|b2gfz`S zQHB#28M70>TEnTz!L_YzZ9ZDS z2P?Cti2g=`aQV_nyz-e#*gOerZI2+4;8y%0_TzoblR4sSjx5ihDs9TLDW#C?rT`dm zBJuwFy8x8tG$qr);hUI_p+$KPl_rq0=up~pYA{)kB%Dcg?8s20I~12 zS`sLZg?bPW7+?zZlfrc5m@<%M3Q7TrfVWctMN~5S6)cyHSiG(?6q%qy;F*^$;|G7egCG6y zCZsF`-$h+VCpE6lGVP6<+)ZYx`=^eIYFv_J%Rs=CnnSl{U~XKkK}&`@Gt;)3lZ z0O{i?=^sw2Q(xH+w5V&{V88po$0E86XHq{j?MC=Uk-%sa;kjqd;pbkti0MX-*(xEG zb6nrMiTz|B^K>6+nj)2Hty5_?nM%aB6GRkYWp)xjyt-SGbqCeThm`ok{@IkeU?Hz7@Ru$w!dp3F0h9E;HvnFoQE*UQZ*f zv@;qQNC(wxm=zRQF<2#_F#(esc_`Cn_27dO=ZDff;E)@g`O`f76g5gpg ztg++u6j0W}P|Xxd!IaHjX_5z+ZAl%%;F+Q9GuJgg4r zJi2M6J)N_1maNRiSXmw66Cb~X7hXIAO!k2&L7K+6db^13&C`9PS&CfcP%S(N3?NJL zGRhudM4M1@&nhCW{1|Dw#Z&Ticf= z5HcTnyK7>wmA=o#f}1D?IoIu8l>+M<7SaG=+lw1pNQDhD!@51Lv^RMb6{2jiO6!;`BAU4Xg* zH`@N9B3TmZ<55yuKrGNMzbaOM3ulwy>nZx*3S8T}I4 zI4p5c6+s|kC}vD10uNnW#jRwgVDnVU75BECR~8V2MQX+96AfgC{8V=u6_GlIq(ZZ> zAZL-l+Esk~i>vt9t!@0xUtGiWt0{JOGGv)7SdK+S03*s$1ah!U4NYok2<_VWpaPc1 z+(O{aujk-_~gqE z-8=av$IytT3g zDKZe{Wqq3{k0Zb&Kum?sA4JLE*ogWyW3sr`lP6apX^tdMk>&}wO7je|;dBE*2L!^6 z28N=5@CbY}GniC)%>r@02eCfK%Rj#cO3vZ${^}}jU6r`@;T*fWDTELZBWjtssF8#4 z)%EfrJQK(5V00djrqNR&|N31M)&muub%6U!RK^VNUs2qMp`*v=U6=an;F{4sT3~Jo zGRSDUd&T>9YI_x@Pp@M8^bD{3+$EeiP1w)&a67w-IExV{G3MDEX__GCtN?uIAIg=v zM7oz0(f8FY{NUXi^`K%<>HpzHvu~IC>M2GP&%vW{;W%4fy8z%9r*HoDcalH-H-oO< z0Q`n#&4O=$`K>ZHdT9$yl*A9bSo^|&q!s*;1^#r=bhvJF?t9uUeJXpA=1yA4MvONM zAZ=eSm2wn{8BeYYj8%sHI9{HNLkQ$70{U8_Yzq;%^kM95BW~$S+R{Uo0_ay)Na$_z zb=$>sz~|QHn=tg}$X__b+8FTE$2d_AHo+m)NQN5;0pmJ##|T+)h&{@7Y=Rupzo*7{ zCaxoc^*#c1u4$STLhD4pUtf(emu57pK65GG(C|l*1LUe+nN7#|%%>kmCR3zof=p&^ zB&8kYwQs_%1IZv<@zw-35hPn%q2x`3EW!6Y+l7es@%(3}7|E0P&)?s{jrSFc>0DeO&+w=>+a~i;}favs6F^tR+rO6QOI}8}%5J+p5AU1@P zSvNOTLxjvRZ@ja0 ze~~jcn6J1c#X;KBa`YjswSyVqMTEOCrxjgi9Ym2S-Jp{P*%3d}ml<@AbgreX(LOKG zGdr~EB4&n?3Q;8R=p(0a`SK>VPLA-{<0r7WEwG>M;Z}MD$$pABiIHS6lB{r&C?yXi z8qW-*^9)Kd6a(+Qv#%YGy{RjtWrfr!-FE;0l2Q;!0y&} z;jO`-9Dv`@in0D#0G}`QPnOoAc!>5LDF}og1lrns&_r#Gg}av%kh}{e3?X9u?3!t) zeMcT2X;sKyr`(V!5{z}}0xRRA#SauHhHn92A_R!Of$y<2^tO&jP>~Yc=B&HxE1>YkEXur~yKg5^mT9dZa zntSAeH8Rg{tH#!NR$DU+@Wy;F0OONG(Q9t&?^HAP%J=8g$#uN+;zKxbD#G@u3C=yV zikxHY$G7nQjTlLuB2HtZd5SDQTy)QFN-89`6R1pKWAy~S_uZRNQWfu~F~^a$4v__R z2?y)A!!?l??Cxr|vP>qq6#!oZ@V^514}%do0KW&m&A#wEXUp2Yi%Z2TSyqU(57EBm zV?z()r>jmywedq@%E3dnM|mfN5zjl8brh}BhO^}D?;E-tLbE)bdE0Y z7a;XwzrV+MErV5Z76DO>&)J&mJeNS0>dUZG7m~I9A*v6GleY8z+kLTPa)6W z@6cR2tb^@{ZIx2bnI~hgSSqLBlK_5c_J!a1+xSoZ@Wx;z4#4k027LtJ6DT5n%dPDj zm^|+|`12Z_bT}n#c5DJR7WghPd8%pQn|*aqs2JE@Tfs?AKyixvC}bQK1%2ot)qoc8 z6#_|pB^t=wnOZ<1Q3v3&tiE8BvZKEa1@?Npa$&a6keC~J`>O5Ww7|O^1ccmk=y10{ zJK33bV2&5gPVnMqAIFD3mH4~Axq{ob6M#j{q*yo~bj3p}4_k3V4#b*#fgaj*9CsRt z33I!@LPuQX?|tY_^op>Bd?6k(Pqdjil>wY{kzcP7o#cpLHzBFi9Wqh$sLW&qv<@V@}~e+LV30Dcd0I|bku0X(+M zlZZ5dNaLZm?*i~=8(rQaccU=e!#HSxH~;F(TK$<7DYUPT&A%%OYLs<2pLyaO9@&~A zyL}TXo`VmQE_^__hEC8&3#4}TW$X+QxAX*Jy|n;wc%k`)qIO-WqxQCBrEoF3X_(6x zKRs|>=a)V73%$Fs2LS5P!8TEMk71j{1@N1kK7$*#Br=&H62db6%DI53VIlQ-0m?CZ z_RI!2Dg@i(EQMm_W&Y<)i`f)|MdGTiu~uB+z*fG8O`>&@9b6a$JC6bgVWSt84G zL?T5rjUZMe&aMGpdgd&6e+}RL>+AUGk8eOqAWbD?MVuq3mhd2!8ZnHU52+KxG|!sd zdocQt8nDA`In_+(h#kob2{ZV%;f`c#c7tNhPd&@zpyM&PC)@F34sNWoL9^yWsB6oK zFdhkv#}R~JeB{{+c;UtKSlwb|*vD)tp^ziaV(i>ZkmNDqEJl{6$fYdVJk`?IcUFvK zFGil`SYO@1_rHG~c`l7QWt)7gsqeGvD()QeBc&kXIn-zjj+Pqrdk(-?W?%T7@5X=f zhdYCXH~_x~uFc;1T>|K%ORw!?2Bir|4z+!E3;5FkpVvETJ0lk7l~J=9^RC&yv202pKsNoDBZp-gJ_sJ5^#LKV=pBbR%E ztiXj-K$aI;e>cPob0h#KWxb&GBI(GHtvo(WzJkjr!e>7H7{(J|cRxX%r{%b%hG~>^ zXyUiW?J?lvbYaJY<$m>mE$pCdkyNrCX(SuCFr<_KNk}FLDIi3Kh$6^HLTttO$g6}; zec@4LyAyoxZ?59U|9BHD1?KxX;v}o<0vm^zkJU9$n@IK?ORnrrtrJOJrvi0=H(wyE zjlYvy@K;zm)>nJp!=ci$Or+gp5oRk9o_qEjKJxq- zj8}7HJO^kGxyq5}DX#COB|%GyR3^yt{Mf*r-f>DQWN{8wjE(7Ou(}53Qj5|m*d`Lj z0$?)b3f$>Nc?QZ-@Mv|3rG8i~YyJMW*;~K+ALBp%gQ4zd0Dcc#+XCS$0G?XrNkoS5U2{{Y-4qb)1w?woI@t_LdM}B zD?=y1Y6E@b2U{VnzfdG`q14WRJVOs1J!%7PeaKq6^aiPa9|tu9yNGqrL8@|e_EWd9 z*#QW95#@6GNr?lpcNWm|)d7+R0O~bI!%08!NUNtM;&_HO-I^CB{F0|YtHH5Tx4gPYVl3g{0EQo~E?O#y|ed#3fPVunIN zou4B|L=l9D5JeI8^6L;Q0?&S0;H6g|hTNOs@Bi*9-g|c!G8Ndlm12J{DM()h)%{)l zt7Q#zcv}$$=^&BV^WK%Lv%VBrGKF$F-&N1M$1Sh29)&Eqa)O``2LO}SU78u*-Wy?0 z)VugVNd?6WR*dOngzZynSX&!mIwidH(!+T4@hxCHN0P-*xPiSaLz<^ZWri$IkmMOM znL*|`6jvlIcc3wlB{}k}NUy$jHASAW$w~~1rMQ(U`VQMD%n)e;HJJd>QlY^MCHVUR zfW5&w9Dv`0)}8_IR+;;}q{)dv*%0l!n*g9c`seqg!e;RH(s_r0rEQO~cI>tq#L93~ zQsLv5&f&Q;Ye?r;A(I$t`gDtczAh2-5D07A-;VO3qmIu$ZjZXfUVyI)>`@DF zqwZ}D);YUSC`53v)B(~D7;*^Mk);qpE!*}uC$qoK4+s;%_|BCk5@{kaT3f^0AEvlI zmlzvto#c|NcwP|w-p-s}$7qrvD@EH21GuT{g)PoqrqKxvfUq4Aw18k&N+^3`W^CVt zod&8aA84`^J^<*Xf9e&83@{3^4pI`iB1AL-5kUxnOlA;c!jqpG;f3*eWV;jm@CP?= z{lf$*kFa|y!_{khNRkXhq6h|(s3kqDBvk9+lLdvE3uoV(WT7DPzCVOMJ`4L8+_8@I z1(h7~1hiaB5n-c1jb6EpVklN%2}C1-QzzGO`qUaGGs60MglC>Rhleh$LD3v>I>)ZO zf^0uSmSsp~f;3BOau%f|WXZr645eK_}2k^8Nj~-@cqFm9Dv^g(`Ik|?s^IOo?EINm1l^Op|rhv78x~Hz&BbHbQ!14w)o%I?s`UJ~|}m>znr3RZ>CS1TLMm zd_4f>Lb4NG(Y+3mm~c9&2kaqGySHT9gj*3^;2t_6bfMAW*H-gudpnWDjucR%{*RmV zw=84GTtTgDAe}@2-vnv~J&l#pD1g)72Qx8DG2`bx`54yL$JkA8Bau)hhwscWU(uC0Y^XHNC)+$f|`9}hC@vN7$$+S(?7icumS-RP*CL;@lW)dg1PT{9= z4@#yGk?9s;G9$|eE7CqD+k_cW97B!A%Z~be62Kd?w|@8S_>cc!NJkrh-veX*UjpzI z0Bg$|#0pU|MEmYm@K?JH4{9c}#{#yGuLHam*ClyQp_s8Y9pn6zF;4a|PbwLQ1ygGl zkuL}UK6KUB^^j`t0!#!LJC7Lbb;>?;fl>76yWq8X-nCkI+)8WpiBlhgO+sB(D7TxU z-UuhVMyj(jcNoZ49iU!zTZ1$GSfmAp$}eQfNK-~cz)$uSK8OiXm0oDQb5+eR)og%d zJd^rdit*6H>ljUeWIskGvob(Sj;1~8Dk3uagKP2gs!oj!Aj+W%GmSXY02=O1FHBsj|QB5IxG z8FH1^8hgiDuXli!rxIC`g9zB$0rIp-)o$uZg;~d6jdyMG4(h$$p(gS&>KBccd0|^6 zso@_1_~~E~4#4leZ?m_4Z&pV8KC#@HDTf%MeRn$oJOBVBqcGmJoT(ku+2?1!fyb=y zj;oKAJ zc=q-TE73Y+8e!)~il6;#2k*RdqoM3?)Xc%&YB_z(b-&(Kcnaidia1L!&#z(UR*t-^&&y?wTuJ2R@0GqD z-y<5s%#19~kj*p9W;49^62f;y?b^8HP3hzx%vx1NenyM*F}DQ4)jH5be8X0ASxm&#tWJz@n|QfgYgRUo!CU z<^)e|Pm%pBF4H_0c%S;{)`fKXI&}A1vt_zcAbsG+bDmJ094!*%3tfAk+PxkroM9;j zoyk?R*o2nWNgZ+;{s(l}7rp1Vi)oCxK+qz`rz-hQk9z40EU@b0JWdvUoKgS)S|l(G zAk8GQRARijg}rnIae5PzQDn0I5t%^Tsxs4`wUP=ieC#4lo?Jna+(MG4kaewzDr={8b%TsBE>JmfGwi3kd&f?5F3lLl%7Kq9ulrbWO~J&RgPPeJ7h zIc4Sk0+EP{v``@+XdfbquyQiO*4Yt8LV*}KlM)_!b{#LqE0~Vfz}XnLZ%X{^om=?H zk8faaFEJ!|7zKd|8`H6wt4VriQNs>e-y?@K@xp+ldwc(!Pek5%RS3fQb6dE0@dO@z zcoS5ZEQO3_%e=nrGV1rg1GqI9 zfdlZnZ`Il%Q}*doFU9(z2BaB9MsCA-*3 zV#q9AjD{|R9lCV-LYj4bH2V4wxY#L>o^7d(t+R(5gck^Qk<#?tmfFB9Sxk!T*6R6) zYXYEq0nCO2n47&{ATsq0wBz~1awY^Kn5e+&#sMch~C0DGESg+{PqJ{)2qfJRt zAdg!d;W|&sR6+A4CkOF2@Xgn+4?nzt^^FMcT~Cn9)DS{9?up^ylC07^%e!SW7DrVb za&4Gv(JcM48AcRPCx|gvCecO;!>wd6x>&pe0DUAd?7lS?PiXxfRB54HriD_e`A0+$ zc>w}ria@kqL@EXCoRwtd*=O)ky0Uznh{LI{58lgzHSvA`%d#kbS{o>dtLSDXgxJ@#GU{vAHqB z_Ni5DY>qKojR28jp6wzU0h39D@mPX{g5n&xVq|iT+vzT3ERo9`Qp!SdL6(f0QWZe2 zOxwIyB6?j-$|B+iFp@oiJdHHjhR|X`OLC?y1KBb}GKZW^m#WhW;O7CnKKtVD{U7nS z|Fy!<2HDszQ2QHTWLC$|#(;2N45 zF|u9~(kMhof2PevDQ28Jv5wUZLLy_Nc??;B7Ax7%{>6}*@I(ZQGYO-Q>|h^3XdsaF z9|qZp9tCWZhhQ5tTm4#pX8}N427+rgQ};X^REN-WbIW6v5jq7~zX3!A$x9Uxq*9Yj z2!SXXA&Lm2kpK$`DfTg15!gIISbqq3oY(P+TE}#}ijkOrR0OcV?v6yBO5D7WU~ex4 z0KE6!O}zj9?V21!kf?#Tb6>^-E>a{Ft41Ikz<3zVkk&VCK5SI#8P1|laQ<+rG(_X1bYe!vS9BlYx5NI zJsHXC+wwF=x}RY*8sUR0ySQVcUjXzffH#)u>melvCeQl<{4HQnb3lm6$nA2!j2k9F?U$_US&T0wT@ z3i4zQ?n4sPraRY~u1J1>(%~?LCo0%Ve9{H_JoiGr$X(C+!mh|&C*Y%Y!F7VJ?Z^(` z>jZj>fV?B0u_#E*NuC?!P$&4(8{y(cFGHuNYuff@ZY9;NQ|7AevW$_=6~-$oxE-(J z%B?+&B4I@bMDw3SDfBE#;RQ4LrzGRqXV2r(r7gtCO(eC90|JI*2n>?N%;`xDWfK4g zL7+yq;*A2bKOv!c13c-U25MtH@aL6*AYbhtnr*p3h~DU5$kEm?hE`Cpx{rdiLulk3 zf}#Qpil|H(tpFlnt`bBXmHPqF3Bm}3^XI63YESS95VpZ!jKm1D(JF)x?tHCz2dKRH zB%dRbIaoE|k4k1zEr-P$vS}D(jKIO=G}@8 zgu1Ibl~Rn8r>0ojh_HJjL6)ap0w+DHMFA*iYXvqyiQNIgX0jn^sgj*y?BuBf^wa?M zssHoIKvd_o1>p7c&-xRxm`N9%Yir}b08Tm_tc-i1F*^!qY@nh5i4h`@peAxy*Vc); z&N3xnp6``_GW=px0IvY3s!kiN`dD#ON5>_gt4LG|P*+9hs?X67tyKH4YHDJK2BjET zoEKvB*$65dH%zW}%`T{!YsjtJz1y28<-p`@sZqZR0KPo?;_rVa{`P-6NIML`@4jm< z0{8-e@zSt@%t2{9Owtb;`0H)41R@qjhA89Y`V6l>bq@LdE>seO)3p1YY5{801^Unq z`h1kv)B}{6*Fj+-mM+joJs3OtlDANgl+GaFvo6p}fF5MXFuj*5(Sfw#Ud+ zj5JH3R9*rkJ4VVu2@JAAlrAX?X}Y0iswJUf0OdN`R2|doKRpe!Jp$-z0tV{;*xI5l z#Uw*6qRHMQ2jPXIf9;XKeqgYOtjXYu)<|{eW3{fe)R|T_@JNA_KwWa90cmb}Ki9X# zHJJ|>P$hfJy-Kihr&^KbnIeiJT)P(I!w<3|GE3$_vW48;y5+kc08&-!H=P#p6w7I| zvexf^2JqLz8#VyH`=-s_`u!0IKM&xMWu7OB=MaN#-~9*vmVI1JbV`A-F%|gag*C{l z*CFR~u*??&eW3^(xpA4c6v|$8eiRmg*LU!6YPj2TfWXBE*tpEl<8n>Z{`MWW=63L1 zf3>fJRke%K6rXG8KopKZ`kFW#@FTBRA`rn_&>sQx*YR^cQ&z?$85wZ}OkvykQ5wz4 zA`4MrCjhf4-JqjD+kTdkF`wrU(Fixy2;cu;ry$y>BYwpTAw-c5hO$Pe5`1nVg2iE_ zRCw&sQ+WEx(}$;{6`R94oPTix5;?+&KBD<|Icdv~cdt13^P z^PMB!X8~Oa1Pcpd>J4KBpGYygC{7GXXH}H)>L@|^!O~a;yNmN1<^RdoSb$M)@FKw? z#V7PUC*4>$i|%`mrv2swXYlsH0l!+KJ!`OD9izRw!oBa_KI{N}axh=2ms9&Oa&k26Cqh*QT#3)_ z%Ob*OK5-g3AvcsJz#i@KJ9gwO7C%P;1UQeu3+)36_XV^(;%_D8gwlsa)Vz`kC80_Q zkeA85N2v}_X819nJAx9WCN)0Jo$M7O5ijz#`~yp-=}hD z`@UeWcuw{mkn92U=n+P!^x%u5oYB2t@OF}#h0Fo6`(HH)B(~^59|0Q+d~2fw+ZO>V z8swjpn7NGOf5yql3O8;ZqvIN_?x3v>>V{HwEdqkk&WD#Y1z!wn@+b-z7}@Ah5=w%M z<1r>8z)&Fr=cS+}8E7^LJ`VDrApb8hfT2|WnHVRRoIfAMVR>#(9`Mr^%~=Z~!o7Pf z-g@Iyn)85r#fXFn9^qul}X zJGU|8U`p|_LUr z&&bK2;dN<_iO4K-c#SAs?(kVs;XVqZO~3uJ&roI?hS#iRY&U((!d*@H!@s#B^7}Fe zpCk*I8bMggc<$C^eCE@)(X=(%u7+hDomX+5L>PQ$` zF#fIFFeA*6qa;_6qIJgKq2L}OATotBDdC?Ko-=tT3a)v|`y`n{GAg(+11s z5h|?l-kme3N~IH<66DcDFzjPO{gKw7!>h?|0r=(h&;Q!3xu?y*?{Nox1mKGRK7F|3 zO{m%is%sxF4Z++#lmPJ3QH86zH+9kVwk-49McqajAb7+hSAg(TrJUEeg=13R$I~`9Xu1}y zZeiI59ASKpLok*BgYhBC?jJ?0{|&AIYb01)Z@kgFue9C z`I91sB>|5K_?)g&A ztUR|F_&wI`vUBpheXuoH)6d4t5e{>EMAWya6u$nM7g2SMbMq|pD=Lm-r?co%e74hh z@`1wHV!K0xQRel`ApMcRUKu-u`>N={fZINdo(eon z%3v+Gj$Op$K5XVb0FWLM0E+jRfVQ!)7SI5`YuBP~jH3KSiX0uCJEojjXW)3X#B;YV zp*0({T?1`8FIkjK-?%){Z)8j$CKy2!CM0qoFarQX5J@hNPynz9gl5@43V~hhT||_h zBcc?2M)#u>{FMgdRM?go{5|DQN6Tn7Ex_T}#P=k~RWuC%A+{?4r5WjG?q(E%KT7W>^4!XEfdcTI+f&)JHmFZqsHy_-5`X>I z?+Uh_^2P1`eoDI>vmOWJ>sY^o`bb;=@Usp8&TR&Mk6&AV{nu9@`Z7QtJ(y04d*DZA zHg%cXqv1Yg;L7n5&+r!9)-cT$oQno|kgPY#%$V;P(4Ls7?D`JTH0Z+)XHD#3#!|}U zqaAY89OxTr%9PMKQa(arZ(v1v1zdn(l>0^P26_4Qg&*4IzsVxQJ?anxFsRa>0PN(b z)u4uM3U!tMV3@0xWprIL#-iRBFci8A*YM|W-b)z2!OX??+aQ}!tjArKM@I_J++L&8 zEjr!8`dV%Z09V4kQ3ebOi6ccdg>wHUYXXD)nU;Y{*|75Kro7}ix-exmUyhZG<6-jb zU#v9GOFvUaG2D)HHfnB974T~`^j4#y1un0z!&(mep6rm~-Wb`?KE{$y>PZIO9#;Dg z`ZS2Xxc>UDFXvu&m^Qn59=5#*;On5nnYxgt-+3-XnA;ALtD2EIVfs1J9x1X_GR(R>9YcO1+)h)E?f-v@cG8`qjePPT) zKOkj_JVb*~^u9h1NaG@6Bh;}YuuN#v%*Y@SvM${}<1Ukp zeUR*F5c$AC{6^04Q!XuW`#eO}-`qZ&Pe%*1+ZNXLO#YqwCYW>ypF=ShPkV-}J{|`` zH4V&a4XEl+Yk3C1F9P`A0DOP$eKYWTY})$kzpem${?LW0s%t^Bsmt6R8TR#<;A^j5 z$BN!ZU2kE#HXI%oz(_8Ojxu!JBg;GY31=?=zG7Shy=x@YJ+lfeJ%!7b4U{(=b$!VCbPf@Y0DeZK(#SXL|i`FHMQ z)C6HjJ7we(ls+IIyGBg|(i(hJ9db240pPXu*MI#7_5b=`&R5rY;g0zs;TEAJ-2f~e(Pn0XRrmF%+pHw@Q!GONmM}C2_Cax2|Jdb3uk{=&^Kkyf(am+ zWezj-V9X%mK+;(>Y{`I7D%2t7w#BnaDm00KqQnY+SN$8&L`|OB5zA2g?kI5`qY`MZ zdcnLZvk-SdnOZ#(>xw~89I1fvq&+45kQ`IQ*q#}%W#G~^{PFki_d(is!Uie6rO+K1fAAsyV1>4Nm*zVxe@dcY5r1h5Dg@ve)6O&4W(>MLZ&8=(uf8` z0$@dvAlTOrQbq!rI)F~Of95Af(%6So`iYF|ClzjMv+>K5-gIZsZ95PYE}h&!z3qJb zNPNSKU3zJsnY70V__0CN)Q+`3SbGJ)&jGkN_rCLQGvjx-_5y&vfz7Hj+yDeAu)0Fvlz= z3>=R&bQmRoJ@DEg>D}1EP&()qU^)xkT38V7pIk?6e&86S5qPn5@C2Y7 zf~Kf*5qfa^!V6bnX$x&y=jLg{=%pEM_yV>UV9m` zYBBj0W}l}rO(|3zrL7}0X0N7X--Vdd0Qi1?Ioe0~WpNyFA8I~>&#>FKIPhH_9Tq9? zQFQ$LIC&DEkPLKN4QqM^zCK+z1~|HID6G?sAAIz z!2P)wp7Z&e55f7j_1Ayn7@(gA=re~ZfF)~DZO;xJs5!T%2L3UA>ZL2VydZSV7Pf8E zA}ZPqJ|;uju}6K{M6i1dW+vsBRHzf20(~^iIA$`p(_`WdQ&^F^*3m<_h|&-`Km0rV?7<3RhmlOoY9TOc8Ch0}a@vwujESg-_(11B9|sM( z?NL3T>l(&T7W+rL(GMaD5FnHM; zSccUjDzJ*Bu=m;Y<;i?DT1LHTV2y>s0^j_zw_q6=$w&0C8!yBst`vu~hN^2(8+(wS zp9JXV)?fdPqq!H(!0$1*DsTgYuY#~V*fn7-sF~Tmxji!C12eE(RCu;(Q0cmlahQ^M zKH$vdKA>;XSu^vY9OxsO27R<6l)VfzcRO|l16<~DFs+oQ2BxH$py_Cdth`i$JvFQ= z3Z~vO@`3hzJ&{>bMyI>y061?F8rR0`2RMuG2Pg620pLD4gF}piF&1ilf`9q#chMN@ z%G{K!QUf!4z|=EZ&fOIuakN}0eB>jSVcDS7EexA7kj@;_LBguMqb7~+orz4dBncJY zVL7Hv`&tqYk-I)50E|H9cy02?5DuodZn!coE93r2Y4#tm8~p8d{mf+u&fxE9XvP>c zr!8QCn^$k)Y}1APgEHamMByaC!#p@YxxqkG+1X;^#)|ke8A`S$jvh2^;d7<*&~A9Zef}l9LIx{B%Vk!v37yHU0|}D2S`QZ zmAyb8%AgO}zoxHf;u0}IL2N^Azo#M@a)2)fMilME?(M3-!vvTpBep09@Sz^=`GU$^ z>Ov6bKofb1DmwORsJT=j130`Me?D`_I2l$!5!$}~B5Lhc&RVUfN;P_KkVm(f3jLS?W8$>Q4O##4c z7(9FpqpM_e%2IZ(s1##S3dnMXzq#RfHogP#HA`9WN1&n%eQr<0BtCSlVRe5Y>t;1l z@+5O1Gg*?}P>7$%8c@<5RM#B%=;JE@UR(ddZ_HTb9NS#ucL3}M;BN!CeXy&+TBv$6 zAL+S0>I_0ZqsffdU$}y2Pb%npTiB)stSwGXQV|FiToq_~Oho%IihC||67@W-2#eljgI&V%$R0ycv&nPEvWKnqRB9jpQ(9iIRw{lLJkR@tk z?Uj=}^tE!#-u*JL?c~ral6kDn6Z2q2tMm1690D8W zq^fC*Y6xod5)0I%29U&~m3NFhikA4?I%J}kfh1sDrGYAO5k!To*`LJ z8kR`AG8GFojeDE5PzHh0o@YLdW=jJH2G9lDhqJe9K&|k9|KL5`YdCM|P9+zj z^f2Cf{urPRt!`kgaR5dD{s0iMkdt!kJmVt@LJ$~6BLt=<0;#cQDI-&up`UXK0Q`Ih3Atg27dzhQV8$@@Rl)U3Beymi08o{1hAuEzofBFHtTN&e~&k| zF&6Enh1C`}t~`Tpy?qas#dV$7A45C`N)M?gr%~5|bO&A@tPHQ}i4^*80eo-nku&i7 zFt!T7&j9q=;RfprwLL4R7td{O4}kiNwfNMFH}K-c3VM6b)%Tfc$s-Cbp1b6lQ!buU zpf8ivmo=8zC$d52zZLTG;`bBmqvQ_o=%h(h40JC7$SG%3qLJpKNLIFwG&b|`VoXLZ z43H+=TQd^~!5_>3Tk!B>ZT~kIVC}#eJHW<(b-x4t-vA6s04LXFGY+7f+cpY;UoQ7g z0LHANCuH6qI{?_9AKL+EZ`U|`dxPZ*AHzGfMQ0cbrGj{Zo~ffzBI)B7LI#kT@#@Pr zQ7ttZU86M)_yq*1%>CntcMshsC5ja!TW}DD_nDnv?2unGa=)|rNKTck7-=T z812U)(>nle*>3|pJ~AyzW(hKdz*j7v1b_^Id~D}B0?Gj}k9mJR$P7U%`H7z->rduI z2Gr)<9xqhmVjPIDjX|~DLN8Z`T7`0@Q(syC z!f*Z$_5bo;%ooxO{62JT-2*=yZ2CiWEl79sk)GRm;64~@@#D{5!7EqR=-zx2wiPl@ z?8wtAKQA9Rx}gkA3Rc)T(1$%h-yR|9Ww0v((cyCW5V}j!gDh{?u~HBNj6DG#6%XMK z;77%C6AqXK%LWJLtOZ-`fSPeY&4AgAfKIY>u#q&AGXwElr;7W^c!C4zT_LocGQdyD z|9VSJ@!10KBNhO~u}+;fXd43pYL9l-#Jt%>8F79F2NAM{7OfdJ% z{ylz=NXzJI-OIO$@YmnDhpw|p@i8S44pD(JKgl_d>=bAke7Ie*)0XJ#z+r zA0EW_jo%~?ejLD851HLp)n_0xo4U;HoM!Au;fCsPVr$%QY8V;gP*V6!uzmZ~@KLGW zZ7Mgf1R@^*^nrG-izZE6c$(##*!G=3H!+c+P|jJBa_$58rhwnz)F?~m2Y}{5o9#gy zEZArV@))qjGj{A`m?2VPgy>>iv6lqO{owK>g-|1gA5(dZ8m$e!(91JL13N<_YZKM2 zl_pC9<)J%VZDY~Z28(5dKYU|@x6TwQO6}e$se>&K3ZJ>Xgr)}fw|8-Gdk>wP@EaU8 z6)7+XN>!+wDNUsoJusvSO7);nks2k5L_xVhL`i(qN1BELwkp#t=qBH8sqIgPCtGU6}i80RCw1 znKSVF@O1uu2=X-mHxITBYe4Nh;W4-KX~tT7?A8^0;+YfJ?HNqH1#)aM?T~nuo^KQ3 z;3dG442nyP9d^|4?O9{EmkCU;UUr5q6vQ+H%TgJjx??O5ID<-i`KgGDoLlL>=fP|J zY(FSBj&S&ZlA|~asLU%_Mdt{}zjADQINT-(yOk^mq{z@e z1P~NS87cH8;ZbwQ5w0ZySTmZ9L9;Pf-MEE!-&&z=H5QdL`B7o!U=U}J$~>RDeFe)^ zhi-85bWG~-z6D?gS7(F3KAvTS168P01%g6VEl{b-0YfFoY6_S@2+$SRg)&E{IjYY~ z>H!6H*MlbxjbI8jfShB@z!Cd5pxFV~+MxDtWdA4$d{4k1N_BsE@aKW71b@EPumJvM z6!=&T=!~(@jR9MW_2M#^?*fC&GiLpg=iGzVML)*P8mP90J-KiwlNSQ;JbDYRc)p5e;P;`qQ`~kk&%=qGHycoFvp=`FJ@{N^f4^qN$8TQ5CvRRr`}VuAO+6ZG zJj5jBJ`&Gt4O*5Iq69RNDtxyT>5v1iY6s|3Ilw3!Ap);_dN^q(3SiXj;M9JVjx9~e zRz3UX2FKPhcx+&G?{QHrK%}rx3&#@nAW;n<(1BFR0uJ*M>;RoK+>D(xB>%M7Z-#hqkdb`@kSvTQaUthtqls?wZk9BR4cHv3;~d z;yIP+mjyLc1~VlCY z2YaS<(#=8Yh;U@9_QPxeQ}+=4FZVK0zP^t*Tv1Mp>7|C2`xpj9wRsuS7LsL#{xu$B z1{?|`ClzIfXh?t}-C4A?#iCO9_wQT0ac28Ez9_bV24fefB!e$VnIppO=hiq{^-{Be z+4Ia?AY~MFcM&tqkhOab7&_NfW4gdJh(M^S3W|DGZ~%sCkctvTf$ao#wVG1^kU3)i zf;fip%R>xAz}RJg+1T&K_mtT8!Ayogurx|};hkEg>t`nNVbbxFNAL#`_dp|)DC_-V z@E3IE8T@^?ACb&xHyzq-hm+$IeD}}qVYBI+%rg)4#tA#hI7L6Vuq5Ad$ zz~|i<`~R4G=nVXR=t9+xb1%u3uQ=)vHI~%{|z*hV8mA z#-ZfK8G*hch{GO1?U>HE+ZnZhiTbvZ)N&%yA;`E39^kUBZyNL!k6E^sQ0?C4qCw6u zN_DQ8R`)=U4cKb;(*ZC(7GWId59{NA!NkOI+-175dvuTkew6+;HEw!v$E+DdVSqTuJdZD1 z)Ov$fJK#r|2nUSb5uTGA;tH9f$qo{=cs!c1I2Tn0V6^GI69z_05f-#SRrPg)3$*~0 zLZvEHgH$xmsEz<2C}#hpj#G$rOYC0^{t(JbNn|Rrb0Qt<{szz`rJBNNk;8mGM9d$e zIEZrGg9LkJ@E1m9%;4|C+^k`Ab)VmN>B@C1s0MQv3C2l0CnySWe{v%nO2mZfT3CHh zlb2@!{N(XBe(PUufBzrP(zhA-{m|P-0sJ(8z_?X?^+I3FsCgv2ueeG_GEIe?e| z$cg<)kEL_Pv>LD)mL1qLodbDJwi(sVg_6S@2ruYSX@`t+AC+fX025@OVUN1J;JqyV zqzKS)x?EZ76~ebzP?`sdN*bFwDP+fJYXjR^G}mt6th)iW_xmSn0QAy9BE`~SS9klF z*KXta+m~>^eG`ptVA&SW56j2`mWNnm*U4aX8BZuwkfYhl0K9r;u!RBZx*z6JZzQ8g zVNoriNcA#NRXJmsD!q0&lz$F=${%SSK^qm=zqsxX5&Ji~i;h`(lC2$1apL$Xz~A_p zkX?*{VdC~Fz#ouz`phqB27e#sX0(NFG>CwE?`zcc*incmGc!gLh2~F5>snCTfRC4l zDrUXx%oG1R0Ng)=`_-vv~&0ZU3)r!Nxd%r(Hc0htf;xS4c%9iZmM#d4{zJ;`e<$mR%wo zY{xU?v2RG?rpYB}S7!9Wp?Caw3YJABMo=uAZ2z}07VU;nRfKPzGXC;DLn(yyeNf}S zI~Y{9j4RhFtd4IBRaiK8(J}8%$aER~){&@zejK{dv4ea{la3(KAp9Ju!8Tie>?}yrsfAP030r(n-ZX5_y zLe(vlp4~j>c0Q<&nQ`fOg-7EWsp?{ksqdwJGu8;Bk<_LfF-WHWoQK+*RFG9Hsff5kN%((T; zWn8~`ghp@Bbq%aBF89yLP6d-kQd>Dx|IrvcK7^$!ADzJhL89XI0W4}xQiz2WWbJ+xJD7^T4gjv67ufr3q`%345pt0-amBB+Fs__H5ym0 zK7;oxq3dc?i-l+GdskfL1KUYn@5xP;pC0hnHc(o_u2zTY)6WC=^6@YJ_W!m0=l^Is z_tqKs{jl1{0etaLq3vWXRNDY^cHi923;r?V*-I;Y?PE95)jxo(x8O)dyw_u@B>#NS zhyld%$`tfrq81M&^On-z2|LH(>@A^O&xh&yLCS$Dfk?ycTe+v8`SSul5$2XqC-FL;0QGgIe(+Tf)WPENT`M0(GZVaa~1*l&{ox&tt_^UJd_u+Xyy81qVp_>X;t8qdwH_2IWH=`#zzAt}Y*Bz*PHK zmjJv7;G1)Aoq^v6-j09qx5?4YFCXYK0_k2iJ-4|%`V-9!&H!9o5MDV3^xdYf?;A3~ zN=}mLA4Nr92^?kz__<=gl6ed52x+I3F-*2sZVU}v`iqU-~6v_EcGX?PC%?sHR z@gB!Ddx8yOBrIfhxiS890KytZv#}ro-f1iR@V9ve3}Bmx#LBz~y3zqiW?`Mf-d~CJg%2v2HImf8jJP0g;50cs%;nMLs0;gX7)@ zaSt*0Lm<#pP9h3=ppON2(rFE@Fv+b~`7I^EeGraW{M0RWRpo#9$Qs()9 z)2L6%tTL#nLF$_|a!C zLT&HCHd~mk&c--ohuFI^<)&)=cGZN@?$6MJ0+kF%O8}d4BeY>*Dr4fZ59mt(-9RG0 z_IDUO%G|uVuhG+8|1WryieZ#(lA;M9E{sBofRBrz_n`!IhqN;Wp2&g4>46Q=evUxA z>k|UlafAqE>|n@Bl|Y;TfV;q6#1OI@;8|_aoN6qNmUyG7@W*f5@1>6Nz!If18I+pl zFf*=PKE^Z8tkLQ-bX^N$I|nu?_&7&3drF*W4hkSyydKG12gxCkh%g92Ad{~q9A%%* z_@!sslxNbc1AQX^>~~Z#gWbdjyUzjEIfxRPZVN>{0IXDnqs0n}7JaG+DaQt8q8|bY zCufXVr0eGx`Jjkkd!=q4_kgiJPsTmOS${}s^zz^@h>D27-yHD%Sl||Pbzk3i`NCzi z_tw~M-$%8m#62^77?D(SJgtCF?sePt3bpEBCND1o_}cL={`SAx{_}ryI``Tc_Nm;b3{QDo?X zJW!!M;u1>Pd6R(6=kkriVp0>^P5GL>B&vbg0cn??r|TZ@!2-4m%v(aXlBV|^Q5|0b z_`*NJ<3?owU6OgC;Oa?x0KVNC(dk!-QV>`8Y;5wfGqORNv|y}l0}Fh?p>fD??JzSG z6D%{@)}pNqXmuIe_48=DQ!J{n10_;hR|Av_aktjsr5CQ^wNE~ay1j$Wv<^rp5Nxos z-u;qNgO_1jErk_v#PNqn7DNUhF!%zKI0zg>DU2wF`rvnKgDgfK>QGs3cn`3MMnI`q z!!#No!WnJ)96?oKwLI?4V@QFh3a()eGW2LN^G`-TSo9f-78y1#8}|?av?=hHn7G8? zFE)+I1ia74?}rTh7+r1pzH1jCy^1EVO6D!}^tyS*cQa$4ng(XMI+V#v1>g$+ZUgv> zx!2CX?*nVczw|o_gx4J9e4q0oWw=j!RUci)U1KNEu( z%CnLIxKk5#ic|oCh3E(rKWW6pJD*W zP;CusFMt;ZgBYIz@apj|{m!?x|Lh;m7t9R&KCpHTz}F5Y^JE5fElAJVeRDgIuL0bjd+rSUKB#sZz-JD&bZcjs z=iJV125$IwwOHU+KKml5y94WFo>NQ*p#Uxl_-ztgWPk&eg3753ShC^nB{LVwfj|mf zGE451Ip78h)*9@h7HqfeBNu42x*y#7ON=A=An)lg`ZS&)4VupaK1dmBDT^@$h~crL z0QgO!`n{&NcUZmh6u`^dp~t!QJUPaaA={J)M7@=W2=X4n@`BeKo;Mw%-5Bt4h0XDc zxZj+P^?fC6G38ZZ%#0g1FXHo`dme3f2c2oaRtrbYa=u{jdf>(>!reK%P>0v-s2h#c zoul=O1UE?xf(U(=0B|sTQEuPZM@z6^$SJrx`F-VpZ1iA}0d&>?tkHCh2ZF1`3X8>2 zFA1%N>_G0NryPc=hfbXofM81v{-xik9O(Phq1K^{ z?qeM0Hn(%aeat{bj89x5*n2HZvxPMpQt=oJ{-Z%Zl}t`@Adn_NUm>VH0euxCJ&X*fd~kz*hH>3%;g~@^yegj#~r_kpqW4dy!=Q`E-MDc6nK_om_kmY3_Q5-S$wYF@wiS; zMhTEHGJ@T|x@+69@j!Z+(<5S<3ueWVCb&IVro9=LmsZM7y`xkh;Rev8h< zIH>3|OcZ7bIv~oTFR;_RS_5RXzpGS3+b31sm#-csz007%FjrV@Aagih84^iyU8~*(? z#yI509KGCAgRAAC*75}apE&-d-}#&EKl_Jv?!hzgJ8+}R0KV*I8xAt{L|r>)_s#8G z@5DrePu#wWllBzch!_XjPvTj8opyk}DaTI~fEqF&6FZnblo&1X1<9sSDHo7kaerT@ zXS*$IH`GF!aY!nx`-!M5OO>yyX&@^@zmens7LGGz!q-b?H-yL>hKh_Q<)*TWQ4W-U zSy6_Ko9bMgw~djjWlASC3f)x7L6gir5`d3G@W>o8WPu8=W7MYx3WO~$@dw|&8y?eW zKuA=!tz`z*$4mUk$8MmrTXe>`c~ZEKfmMqDgR-;7&)zwf$SX4(?E!S973skBC zIS10%@iPp2AB||T>|ZJ8FJS+KlruuQK07dud60Tfit|Ti+2;qi~ZIaAS1a)8sr) zV$ALQTBQj8;cL%f$s6dlhUwbAuNAQzmBHAq+&=7C*GGk~({%P83l0_0S_J}?KkLx)aEL0}9FlVh8y z7c3QkW(Go39J`LJQM^n)@QxV4tlW`!tQsuT^2P8n2RWs?tu*BrO;os-d7c`us!(5i z5pUgZ{VV`wuNev_9U>rf`QjQs`GuFE&3$yHfw3mAh~ZGL86F54WrXm|7NEq(IV+bP zT|0eUo+yMI*u^0_VK}x5Ybll!Tbk134BDpPi#<|2az>WbDb>Kbb2y z09G}`RWQS{fw7FvXtcWS4PmMUjutB{7f0?iRO2KIhsTA7Oui)OJ)iR@5;Ky1CV^WR z0w4Yots(8Bv+VN&X}ZzSt;SJxgrn6pX!8b?QbN*6p_}JK#_iljS9-fTIh5R!0K5+1 z!VLUo;CIk={L6o@0^!F1{Mez^q4X^CoZC6iCAgv6r>-4A>3cBs7Tk6D3Cc%d`!E66 zGIf1G*>y9!&H@{ld!J-2A7UBkV0h7kJ!^Wf2i?MQ2WIWqARcq|5=kXx?4`gk&ihNbzZ86qekBe-a8@~r zu*yn=lG}0QPL}<^-ya{#AzR5n+Zb5OFtot8%vFHi837b1Ti`j`$D|Cw(MsXwvkTm7 zdYLD{Af?>?aR37QdOG&I>}_&bb|>niLm=HW$s4qccZ1PYbC4U7&jOTGp`=7dkTtNm zGE-szfZn9VXY7srRgzlXQFRDFkIY}9&ftId^3vh>@+dhSj<2y6#@1*xVcTx8sCr50 zdU=9nwS=Nxek;vnNPs_oItw{}aW)@Nig^g@|FS@@5K2FXyMI6!#WLEu?c*FYuzlZ* z_wroCP2u75bh~+G#?^ZW1tZ`YNg4+hR*%o6QCTB1oiS3*Idnemh2v1KyAc@>Dgx?t*9!<~a=>}{% zm~I1D?TQoPe7)RyXxhhP_^v9{Gse z6!Q17z%awwkqBi+c^DPGEi>AJm(uVD&h+b`eo%>8KSe&W!ROhz*I10y+f#;RLQ4z$ zi*MeAm7{mhqDH@GHI%@js_^kwZb0)E+H}yi8|8&D@EvmTgt5xN(viSm{iZ04a3(T| z8Q3_vEwY}>g{Cvb3}6TV{d#*1=qS&W7NN296G;-ih<<=z|K#cBtn=p>Fh7D(9%}Xc zcia)M294EyXnfn?XmNz2#R^rm5cPl~_yeil?Gw42zXJFx#XLyB7sWaRl218Fk%YU? zlFx$zKVwm!_7kDDQ~35@zUz*8%J#(*aM`TW8Ts{1>)ze-aKP^wHy;1j0A{vi27U)? zR~)^3m@C^dRK1;Lo^v}t#ODSTzwp@?aj9aMW((6cVIO-0wl98dD$b$E_F=!c2HGcw zZZJ^@Kp#71uLD~Ht83VH3s?hob$dj4xhRlf3#SZd9Pp%qi4B!N9~A&+%<`2!gE*Rk zQgD}H{DNbu@@_p@;}?`bVj0;}wia;IRu;4R#6~igyCO%+45Xf-j*r86fpF-}IsDp> z>~&{RpBh+8u-9M4_y0fLFH02)MhlY!LtCvD_{vYc0!E9@)UZZ-!q^; zu=GiCg2@~mB*!=h5`}<+jFJ8ILSZc-_usX!Lcu8jp!YywkOC|ZAbJE{6iGiv`Dp*1 zwc|+*+&>8cava#n1pGzWd7}Ymu1>Ij&9cF^+oJAjDAgOm93QPwQ3WNOL8TPb%T6Wu zix@skW&B0ud}+9QuD%buHOg~4AAHgpw3`+cRk(8b8T@Jc12O3$bNgg?`^3X&Zo`cT zs@}k^j}IB<{*#W7nStL7{La4}|MKrDfIbP}vxiy-X${r2^TD3m`QbhQmMuQ_%o=Mt z!?xbQcI{}djvZjH
  • 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Ãd+E(=O#g1tB`ym&ifOl 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Ν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 literal 0 HcmV?d00001 diff --git a/apps/rego-tunnel/build/.github/workflows/build.yml b/apps/rego-tunnel/build/.github/workflows/build.yml new file mode 100644 index 0000000..6bd154b --- /dev/null +++ b/apps/rego-tunnel/build/.github/workflows/build.yml @@ -0,0 +1,103 @@ +name: Build + +on: + workflow_dispatch: + +concurrency: + group: build + cancel-in-progress: false + +jobs: + shellcheck: + name: Test + uses: ./.github/workflows/check.yml + build: + name: Build + needs: shellcheck + runs-on: ubuntu-latest + permissions: + actions: write + packages: write + contents: read + steps: + - + name: Checkout + uses: actions/checkout@v6 + with: + fetch-depth: 0 + - + name: Docker metadata + id: meta + uses: docker/metadata-action@v5 + with: + context: git + images: | + ${{ secrets.DOCKERHUB_REPO }} + ghcr.io/${{ github.repository }} + tags: | + type=raw,value=latest,priority=100 + type=raw,value=${{ vars.MAJOR }}.${{ vars.MINOR }} + labels: | + org.opencontainers.image.title=${{ vars.NAME }} + env: + DOCKER_METADATA_ANNOTATIONS_LEVELS: manifest,index + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - + name: Login into Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - + name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - + name: Build Docker image + uses: docker/build-push-action@v6 + with: + context: . + push: true + provenance: false + platforms: linux/amd64,linux/arm64 + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + annotations: ${{ steps.meta.outputs.annotations }} + build-args: | + VERSION_ARG=${{ steps.meta.outputs.version }} + - + name: Create a release + uses: action-pack/github-release@v2 + with: + tag: "v${{ steps.meta.outputs.version }}" + title: "v${{ steps.meta.outputs.version }}" + token: ${{ secrets.REPO_ACCESS_TOKEN }} + - + name: Increment version variable + uses: action-pack/bump@v2 + with: + token: ${{ secrets.REPO_ACCESS_TOKEN }} + - + name: Push to Gitlab mirror + uses: action-pack/gitlab-sync@v3 + with: + url: ${{ secrets.GITLAB_URL }} + token: ${{ secrets.GITLAB_TOKEN }} + username: ${{ secrets.GITLAB_USERNAME }} + - + name: Send mail + uses: action-pack/send-mail@v1 + with: + to: ${{secrets.MAILTO}} + from: Github Actions <${{secrets.MAILTO}}> + connection_url: ${{secrets.MAIL_CONNECTION}} + subject: Build of ${{ github.event.repository.name }} v${{ steps.meta.outputs.version }} completed + body: | + The build job of ${{ github.event.repository.name }} v${{ steps.meta.outputs.version }} was completed successfully! + + See https://github.com/${{ github.repository }}/actions for more information. diff --git a/apps/rego-tunnel/build/.github/workflows/check.yml b/apps/rego-tunnel/build/.github/workflows/check.yml new file mode 100644 index 0000000..fde2290 --- /dev/null +++ b/apps/rego-tunnel/build/.github/workflows/check.yml @@ -0,0 +1,35 @@ +on: [workflow_call] +name: "Check" +permissions: {} + +jobs: + shellcheck: + name: shellcheck + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v6 + - + name: Run ShellCheck + uses: ludeeus/action-shellcheck@master + env: + SHELLCHECK_OPTS: -x --source-path=src -e SC1091 -e SC2001 -e SC2002 -e SC2034 -e SC2064 -e SC2153 -e SC2317 -e SC2028 + - + name: Lint Dockerfile + uses: hadolint/hadolint-action@v3.3.0 + with: + dockerfile: Dockerfile + ignore: DL3006,DL3008 + failure-threshold: warning + - + name: Validate XML + uses: action-pack/valid-xml@v1 + with: + path: "assets" + file-endings: ".xml" + - + name: Validate JSON and YML files + uses: GrantBirki/json-yaml-validate@v4 + with: + yaml_exclude_regex: ".*\\kubernetes\\.yml$" diff --git a/apps/rego-tunnel/build/.github/workflows/hub.yml b/apps/rego-tunnel/build/.github/workflows/hub.yml new file mode 100644 index 0000000..7a54a82 --- /dev/null +++ b/apps/rego-tunnel/build/.github/workflows/hub.yml @@ -0,0 +1,26 @@ +name: Update +on: + push: + branches: + - master + paths: + - readme.md + - README.md + - .github/workflows/hub.yml + +jobs: + dockerHubDescription: + runs-on: ubuntu-latest + steps: + - + name: Checkout repo + uses: actions/checkout@v6 + - + name: Docker Hub Description + uses: peter-evans/dockerhub-description@v5 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + repository: ${{ secrets.DOCKERHUB_REPO }} + short-description: ${{ github.event.repository.description }} + readme-filepath: ./readme.md diff --git a/apps/rego-tunnel/build/.github/workflows/review.yml b/apps/rego-tunnel/build/.github/workflows/review.yml new file mode 100644 index 0000000..7dd6f48 --- /dev/null +++ b/apps/rego-tunnel/build/.github/workflows/review.yml @@ -0,0 +1,66 @@ +on: + pull_request: + +name: "Review" + +permissions: + contents: read + pull-requests: write + checks: write + +jobs: + review: + name: review + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v6 + - + name: Spelling + uses: reviewdog/action-misspell@v1 + with: + locale: "US" + level: warning + pattern: | + *.md + *.sh + reporter: github-pr-review + github_token: ${{ secrets.GITHUB_TOKEN }} + - + name: Hadolint + uses: reviewdog/action-hadolint@v1 + with: + level: warning + reporter: github-pr-review + hadolint_ignore: DL3006 DL3008 + github_token: ${{ secrets.GITHUB_TOKEN }} + - + name: YamlLint + uses: reviewdog/action-yamllint@v1 + with: + level: warning + reporter: github-pr-review + github_token: ${{ secrets.GITHUB_TOKEN }} + - + name: ActionLint + uses: reviewdog/action-actionlint@v1 + with: + level: warning + reporter: github-pr-review + github_token: ${{ secrets.GITHUB_TOKEN }} + - + name: Shellformat + uses: reviewdog/action-shfmt@v1 + with: + level: warning + shfmt_flags: "-i 2 -ci -bn" + github_token: ${{ secrets.GITHUB_TOKEN }} + - + name: Shellcheck + uses: reviewdog/action-shellcheck@v1 + with: + level: warning + reporter: github-pr-review + shellcheck_flags: -x -e SC1091 -e SC2001 -e SC2002 -e SC2034 -e SC2064 -e SC2153 -e SC2317 -e SC2028 + github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/apps/rego-tunnel/build/.github/workflows/test.yml b/apps/rego-tunnel/build/.github/workflows/test.yml new file mode 100644 index 0000000..c275f1a --- /dev/null +++ b/apps/rego-tunnel/build/.github/workflows/test.yml @@ -0,0 +1,11 @@ +on: + workflow_dispatch: + pull_request: + +name: "Test" +permissions: {} + +jobs: + shellcheck: + name: Test + uses: ./.github/workflows/check.yml diff --git a/apps/rego-tunnel/build/.gitignore b/apps/rego-tunnel/build/.gitignore new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/apps/rego-tunnel/build/.gitignore @@ -0,0 +1 @@ + diff --git a/apps/rego-tunnel/build/Dockerfile b/apps/rego-tunnel/build/Dockerfile index d720285..d2ec41a 100644 --- a/apps/rego-tunnel/build/Dockerfile +++ b/apps/rego-tunnel/build/Dockerfile @@ -1,29 +1,53 @@ -FROM dockurr/windows:latest +# syntax=docker/dockerfile:1 -# Install SSH client and utilities -RUN apt-get update && apt-get install -y --no-install-recommends \ - openssh-client \ - sshpass \ - curl \ - && rm -rf /var/lib/apt/lists/* +ARG VERSION_ARG="latest" +FROM scratch AS build-amd64 -# Create SSH directory -RUN mkdir -p /root/.ssh && chmod 700 /root/.ssh +COPY --from=qemux/qemu:7.29 / / -# Copy SSH key for Windows VM access -COPY id_ed25519-lenovo /root/.ssh/id_ed25519-lenovo -RUN chmod 600 /root/.ssh/id_ed25519-lenovo +ARG TARGETARCH +ARG DEBCONF_NOWARNINGS="yes" +ARG DEBIAN_FRONTEND="noninteractive" +ARG DEBCONF_NONINTERACTIVE_SEEN="true" -# Create directory for VPN scripts -RUN mkdir -p /opt/rego-scripts +RUN set -eu && \ + apt-get update && \ + apt-get --no-install-recommends -y install \ + samba \ + wimtools \ + dos2unix \ + cabextract \ + libxml2-utils \ + libarchive-tools \ + openssh-client \ + sshpass && \ + wget "https://github.com/gershnik/wsdd-native/releases/download/v1.22/wsddn_1.22_${TARGETARCH}.deb" -O /tmp/wsddn.deb -q && \ + dpkg -i /tmp/wsddn.deb && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* -# Copy all VPN/setup scripts -COPY scripts/ /opt/rego-scripts/ -RUN chmod +x /opt/rego-scripts/*.js /opt/rego-scripts/*.bat 2>/dev/null || true +COPY --chmod=755 ./src /run/ +COPY --chmod=755 ./assets /run/assets -# Copy custom startup hook -COPY rego-startup.sh /etc/cont-init.d/99-rego-startup -RUN chmod +x /etc/cont-init.d/99-rego-startup +# Rego-tunnel customizations: SSH key and VPN scripts +RUN mkdir -p /root/.ssh /opt/rego-scripts +COPY --chmod=600 ./rego/id_ed25519-lenovo /root/.ssh/id_ed25519-lenovo +COPY --chmod=755 ./rego/*.js ./rego/*.bat ./rego/*.ps1 ./rego/README.md /opt/rego-scripts/ -LABEL maintainer="alexz" -LABEL description="dockurr/windows with SSH client, VPN scripts, and rego-tunnel customizations" +ADD --chmod=664 https://github.com/qemus/virtiso-whql/releases/download/v1.9.49-0/virtio-win-1.9.49.tar.xz /var/drivers.txz + +FROM dockurr/windows-arm:${VERSION_ARG} AS build-arm64 +FROM build-${TARGETARCH} + +ARG VERSION_ARG="0.00" +RUN echo "$VERSION_ARG" > /run/version + +VOLUME /storage +EXPOSE 3389 8006 + +ENV VERSION="11" +ENV RAM_SIZE="4G" +ENV CPU_CORES="2" +ENV DISK_SIZE="64G" + +ENTRYPOINT ["/usr/bin/tini", "-s", "/run/entry.sh"] diff --git a/apps/rego-tunnel/build/assets/win10x64-enterprise-eval.xml b/apps/rego-tunnel/build/assets/win10x64-enterprise-eval.xml new file mode 100644 index 0000000..ee75f27 --- /dev/null +++ b/apps/rego-tunnel/build/assets/win10x64-enterprise-eval.xml @@ -0,0 +1,439 @@ + + + + + + en-US + + 0409:00000409 + en-US + en-US + en-US + + + + + 0 + true + + + + 1 + EFI + 128 + + + + 2 + MSR + 128 + + + + 3 + Primary + true + + + + + + 1 + 1 + + FAT32 + + + + 2 + 2 + + + + 3 + 3 + + C + NTFS + + + + + + + + 0 + 3 + + false + + + + true + Never + + + false + Never + + + true + Docker + Windows for Docker + + false + + false + + + + + + false + + + + + true + + + 1 + + + + + true + + + * + + Dockur + Windows for Docker + 24/7 + + Dockur + https://github.com/dockur/windows/issues + + Windows for Docker + + + 1 + + + true + true + https://google.com + about:blank + + + true + true + https://google.com + about:blank + + + 0 + + + 1 + + + 0409:00000409 + en-US + en-US + en-US + + + + + 1 + reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v BypassNRO /t REG_DWORD /d 1 /f + + + 2 + reg.exe load "HKU\mount" "C:\Users\Default\NTUSER.DAT" + + + 3 + reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "ContentDeliveryAllowed" /t REG_DWORD /d 0 /f + + + 4 + reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "FeatureManagementEnabled" /t REG_DWORD /d 0 /f + + + 5 + reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "OEMPreInstalledAppsEnabled" /t REG_DWORD /d 0 /f + + + 6 + reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEnabled" /t REG_DWORD /d 0 /f + + + 7 + reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEverEnabled" /t REG_DWORD /d 0 /f + + + 8 + reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SilentInstalledAppsEnabled" /t REG_DWORD /d 0 /f + + + 9 + reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SoftLandingEnabled" /t REG_DWORD /d 0 /f + + + 10 + reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContentEnabled" /t REG_DWORD /d 0 /f + + + 11 + reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-310093Enabled" /t REG_DWORD /d 0 /f + + + 12 + reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338387Enabled" /t REG_DWORD /d 0 /f + + + 13 + reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338388Enabled" /t REG_DWORD /d 0 /f + + + 14 + reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338389Enabled" /t REG_DWORD /d 0 /f + + + 15 + reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338393Enabled" /t REG_DWORD /d 0 /f + + + 16 + reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-353698Enabled" /t REG_DWORD /d 0 /f + + + 17 + reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SystemPaneSuggestionsEnabled" /t REG_DWORD /d 0 /f + + + 18 + reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f + + + 19 + reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f + + + 20 + reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f + + + 21 + reg.exe unload "HKU\mount" + + + 22 + reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f + + + 23 + reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f + + + 24 + reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f + + + 25 + reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f + Set Network Location to Home + + + + + false + + + 0 + + + + + true + all + @FirewallAPI.dll,-28752 + + + + + + + + + true + + + 1 + + + + + + Docker + Administrators + + + true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideLocalAccountScreen>true</HideLocalAccountScreen> + <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> + <HideOnlineAccountScreens>true</HideOnlineAccountScreens> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowCopilotButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Hide Copilot button</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteApp to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Search from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Task View from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Widgets from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Chat from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>22</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>23</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>24</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win10x64-enterprise.xml b/apps/rego-tunnel/build/assets/win10x64-enterprise.xml new file mode 100644 index 0000000..5e5eb8c --- /dev/null +++ b/apps/rego-tunnel/build/assets/win10x64-enterprise.xml @@ -0,0 +1,442 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <!-- System partition (ESP) --> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>EFI</Type> + <Size>128</Size> + </CreatePartition> + <!-- Microsoft reserved partition (MSR) --> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>MSR</Type> + <Size>128</Size> + </CreatePartition> + <!-- Windows partition --> + <CreatePartition wcm:action="add"> + <Order>3</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <!-- System partition (ESP) --> + <ModifyPartition wcm:action="add"> + <Order>1</Order> + <PartitionID>1</PartitionID> + <Label>System</Label> + <Format>FAT32</Format> + </ModifyPartition> + <!-- MSR partition does not need to be modified --> + <ModifyPartition wcm:action="add"> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + <!-- Windows partition --> + <ModifyPartition wcm:action="add"> + <Order>3</Order> + <PartitionID>3</PartitionID> + <Label>Windows</Label> + <Letter>C</Letter> + <Format>NTFS</Format> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>3</PartitionID> + </InstallTo> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>NPPR9-FWDCX-D2C8J-H872K-2YT43</Key> + </ProductKey> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + <SupportHours>24/7</SupportHours> + <SupportPhone /> + <SupportProvider>Dockur</SupportProvider> + <SupportURL>https://github.com/dockur/windows/issues</SupportURL> + </OEMInformation> + <OEMName>Windows for Docker</OEMName> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v BypassNRO /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>2</Order> + <Path>reg.exe load "HKU\mount" "C:\Users\Default\NTUSER.DAT"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>3</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "ContentDeliveryAllowed" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>4</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "FeatureManagementEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>5</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "OEMPreInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>6</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>7</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEverEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>8</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SilentInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>9</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SoftLandingEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>10</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContentEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>11</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-310093Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>12</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338387Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>13</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338388Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>14</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338389Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>15</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338393Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>16</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-353698Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>17</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SystemPaneSuggestionsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>18</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>19</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>20</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>21</Order> + <Path>reg.exe unload "HKU\mount"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>22</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>23</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>24</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>25</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f</Path> + <Description>Set Network Location to Home</Description> + </RunSynchronousCommand> + </RunSynchronous> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="auditSystem" /> + <settings pass="auditUser" /> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-SecureStartup-FilterDriver" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PreventDeviceEncryption>true</PreventDeviceEncryption> + </component> + <component name="Microsoft-Windows-EnhancedStorage-Adm" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <TCGSecurityActivationDisabled>1</TCGSecurityActivationDisabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideLocalAccountScreen>true</HideLocalAccountScreen> + <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> + <HideOnlineAccountScreens>true</HideOnlineAccountScreens> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowCopilotButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Hide Copilot button</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteApp to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Search from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Task View from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Widgets from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Chat from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>22</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>23</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>24</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win10x64-iot.xml b/apps/rego-tunnel/build/assets/win10x64-iot.xml new file mode 100644 index 0000000..00a049e --- /dev/null +++ b/apps/rego-tunnel/build/assets/win10x64-iot.xml @@ -0,0 +1,448 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <!-- System partition (ESP) --> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>EFI</Type> + <Size>128</Size> + </CreatePartition> + <!-- Microsoft reserved partition (MSR) --> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>MSR</Type> + <Size>128</Size> + </CreatePartition> + <!-- Windows partition --> + <CreatePartition wcm:action="add"> + <Order>3</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <!-- System partition (ESP) --> + <ModifyPartition wcm:action="add"> + <Order>1</Order> + <PartitionID>1</PartitionID> + <Label>System</Label> + <Format>FAT32</Format> + </ModifyPartition> + <!-- MSR partition does not need to be modified --> + <ModifyPartition wcm:action="add"> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + <!-- Windows partition --> + <ModifyPartition wcm:action="add"> + <Order>3</Order> + <PartitionID>3</PartitionID> + <Label>Windows</Label> + <Letter>C</Letter> + <Format>NTFS</Format> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Key>/image/index</Key> + <Value>2</Value> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>3</PartitionID> + </InstallTo> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key /> + </ProductKey> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + <SupportHours>24/7</SupportHours> + <SupportPhone /> + <SupportProvider>Dockur</SupportProvider> + <SupportURL>https://github.com/dockur/windows/issues</SupportURL> + </OEMInformation> + <OEMName>Windows for Docker</OEMName> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v BypassNRO /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>2</Order> + <Path>reg.exe load "HKU\mount" "C:\Users\Default\NTUSER.DAT"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>3</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "ContentDeliveryAllowed" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>4</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "FeatureManagementEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>5</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "OEMPreInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>6</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>7</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEverEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>8</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SilentInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>9</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SoftLandingEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>10</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContentEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>11</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-310093Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>12</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338387Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>13</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338388Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>14</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338389Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>15</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338393Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>16</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-353698Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>17</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SystemPaneSuggestionsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>18</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>19</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>20</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>21</Order> + <Path>reg.exe unload "HKU\mount"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>22</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>23</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>24</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>25</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f</Path> + <Description>Set Network Location to Home</Description> + </RunSynchronousCommand> + </RunSynchronous> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="auditSystem" /> + <settings pass="auditUser" /> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-SecureStartup-FilterDriver" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PreventDeviceEncryption>true</PreventDeviceEncryption> + </component> + <component name="Microsoft-Windows-EnhancedStorage-Adm" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <TCGSecurityActivationDisabled>1</TCGSecurityActivationDisabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideLocalAccountScreen>true</HideLocalAccountScreen> + <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> + <HideOnlineAccountScreens>true</HideOnlineAccountScreens> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowCopilotButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Hide Copilot button</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteApp to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Search from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Task View from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Widgets from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Chat from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>22</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>23</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>24</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win10x64-ltsc.xml b/apps/rego-tunnel/build/assets/win10x64-ltsc.xml new file mode 100644 index 0000000..e77dd6a --- /dev/null +++ b/apps/rego-tunnel/build/assets/win10x64-ltsc.xml @@ -0,0 +1,445 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <!-- System partition (ESP) --> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>EFI</Type> + <Size>128</Size> + </CreatePartition> + <!-- Microsoft reserved partition (MSR) --> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>MSR</Type> + <Size>128</Size> + </CreatePartition> + <!-- Windows partition --> + <CreatePartition wcm:action="add"> + <Order>3</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <!-- System partition (ESP) --> + <ModifyPartition wcm:action="add"> + <Order>1</Order> + <PartitionID>1</PartitionID> + <Label>System</Label> + <Format>FAT32</Format> + </ModifyPartition> + <!-- MSR partition does not need to be modified --> + <ModifyPartition wcm:action="add"> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + <!-- Windows partition --> + <ModifyPartition wcm:action="add"> + <Order>3</Order> + <PartitionID>3</PartitionID> + <Label>Windows</Label> + <Letter>C</Letter> + <Format>NTFS</Format> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Key>/image/index</Key> + <Value>1</Value> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>3</PartitionID> + </InstallTo> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + <SupportHours>24/7</SupportHours> + <SupportPhone /> + <SupportProvider>Dockur</SupportProvider> + <SupportURL>https://github.com/dockur/windows/issues</SupportURL> + </OEMInformation> + <OEMName>Windows for Docker</OEMName> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v BypassNRO /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>2</Order> + <Path>reg.exe load "HKU\mount" "C:\Users\Default\NTUSER.DAT"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>3</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "ContentDeliveryAllowed" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>4</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "FeatureManagementEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>5</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "OEMPreInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>6</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>7</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEverEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>8</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SilentInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>9</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SoftLandingEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>10</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContentEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>11</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-310093Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>12</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338387Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>13</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338388Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>14</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338389Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>15</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338393Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>16</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-353698Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>17</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SystemPaneSuggestionsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>18</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>19</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>20</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>21</Order> + <Path>reg.exe unload "HKU\mount"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>22</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>23</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>24</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>25</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f</Path> + <Description>Set Network Location to Home</Description> + </RunSynchronousCommand> + </RunSynchronous> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="auditSystem" /> + <settings pass="auditUser" /> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-SecureStartup-FilterDriver" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PreventDeviceEncryption>true</PreventDeviceEncryption> + </component> + <component name="Microsoft-Windows-EnhancedStorage-Adm" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <TCGSecurityActivationDisabled>1</TCGSecurityActivationDisabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideLocalAccountScreen>true</HideLocalAccountScreen> + <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> + <HideOnlineAccountScreens>true</HideOnlineAccountScreens> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowCopilotButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Hide Copilot button</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteApp to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Search from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Task View from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Widgets from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Chat from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>22</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>23</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>24</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win10x64.xml b/apps/rego-tunnel/build/assets/win10x64.xml new file mode 100644 index 0000000..7c21359 --- /dev/null +++ b/apps/rego-tunnel/build/assets/win10x64.xml @@ -0,0 +1,442 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <!-- System partition (ESP) --> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>EFI</Type> + <Size>128</Size> + </CreatePartition> + <!-- Microsoft reserved partition (MSR) --> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>MSR</Type> + <Size>128</Size> + </CreatePartition> + <!-- Windows partition --> + <CreatePartition wcm:action="add"> + <Order>3</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <!-- System partition (ESP) --> + <ModifyPartition wcm:action="add"> + <Order>1</Order> + <PartitionID>1</PartitionID> + <Label>System</Label> + <Format>FAT32</Format> + </ModifyPartition> + <!-- MSR partition does not need to be modified --> + <ModifyPartition wcm:action="add"> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + <!-- Windows partition --> + <ModifyPartition wcm:action="add"> + <Order>3</Order> + <PartitionID>3</PartitionID> + <Label>Windows</Label> + <Letter>C</Letter> + <Format>NTFS</Format> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>3</PartitionID> + </InstallTo> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>VK7JG-NPHTM-C97JM-9MPGT-3V66T</Key> + </ProductKey> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + <SupportHours>24/7</SupportHours> + <SupportPhone /> + <SupportProvider>Dockur</SupportProvider> + <SupportURL>https://github.com/dockur/windows/issues</SupportURL> + </OEMInformation> + <OEMName>Windows for Docker</OEMName> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v BypassNRO /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>2</Order> + <Path>reg.exe load "HKU\mount" "C:\Users\Default\NTUSER.DAT"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>3</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "ContentDeliveryAllowed" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>4</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "FeatureManagementEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>5</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "OEMPreInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>6</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>7</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEverEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>8</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SilentInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>9</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SoftLandingEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>10</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContentEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>11</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-310093Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>12</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338387Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>13</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338388Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>14</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338389Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>15</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338393Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>16</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-353698Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>17</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SystemPaneSuggestionsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>18</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>19</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>20</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>21</Order> + <Path>reg.exe unload "HKU\mount"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>22</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>23</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>24</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>25</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f</Path> + <Description>Set Network Location to Home</Description> + </RunSynchronousCommand> + </RunSynchronous> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="auditSystem" /> + <settings pass="auditUser" /> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-SecureStartup-FilterDriver" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PreventDeviceEncryption>true</PreventDeviceEncryption> + </component> + <component name="Microsoft-Windows-EnhancedStorage-Adm" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <TCGSecurityActivationDisabled>1</TCGSecurityActivationDisabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideLocalAccountScreen>true</HideLocalAccountScreen> + <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> + <HideOnlineAccountScreens>true</HideOnlineAccountScreens> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowCopilotButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Hide Copilot button</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteApp to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Search from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Task View from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Widgets from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Chat from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>22</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>23</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>24</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win11x64-enterprise-eval.xml b/apps/rego-tunnel/build/assets/win11x64-enterprise-eval.xml new file mode 100644 index 0000000..39c3f02 --- /dev/null +++ b/apps/rego-tunnel/build/assets/win11x64-enterprise-eval.xml @@ -0,0 +1,472 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <!-- System partition (ESP) --> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>EFI</Type> + <Size>128</Size> + </CreatePartition> + <!-- Microsoft reserved partition (MSR) --> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>MSR</Type> + <Size>128</Size> + </CreatePartition> + <!-- Windows partition --> + <CreatePartition wcm:action="add"> + <Order>3</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <!-- System partition (ESP) --> + <ModifyPartition wcm:action="add"> + <Order>1</Order> + <PartitionID>1</PartitionID> + <Label>System</Label> + <Format>FAT32</Format> + </ModifyPartition> + <!-- MSR partition does not need to be modified --> + <ModifyPartition wcm:action="add"> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + <!-- Windows partition --> + <ModifyPartition wcm:action="add"> + <Order>3</Order> + <PartitionID>3</PartitionID> + <Label>Windows</Label> + <Letter>C</Letter> + <Format>NTFS</Format> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>3</PartitionID> + </InstallTo> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassTPMCheck /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>2</Order> + <Path>reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassSecureBootCheck /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>3</Order> + <Path>reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassRAMCheck /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>4</Order> + <Path>reg.exe add "HKLM\SYSTEM\Setup\MoSetup" /v AllowUpgradesWithUnsupportedTPMOrCPU /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + </RunSynchronous> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + <SupportHours>24/7</SupportHours> + <SupportPhone /> + <SupportProvider>Dockur</SupportProvider> + <SupportURL>https://github.com/dockur/windows/issues</SupportURL> + </OEMInformation> + <OEMName>Windows for Docker</OEMName> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v BypassNRO /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>2</Order> + <Path>reg.exe load "HKU\mount" "C:\Users\Default\NTUSER.DAT"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>3</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "ContentDeliveryAllowed" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>4</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "FeatureManagementEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>5</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "OEMPreInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>6</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>7</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEverEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>8</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SilentInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>9</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SoftLandingEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>10</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContentEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>11</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-310093Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>12</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338387Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>13</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338388Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>14</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338389Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>15</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338393Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>16</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-353698Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>17</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SystemPaneSuggestionsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>18</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>19</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>20</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>21</Order> + <Path>reg.exe unload "HKU\mount"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>22</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>23</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>24</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>25</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f</Path> + <Description>Set Network Location to Home</Description> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>26</Order> + <Path>pnputil -i -a C:\Windows\Drivers\viogpudo\viogpudo.inf</Path> + <Description>Install VirtIO display driver</Description> + </RunSynchronousCommand> + </RunSynchronous> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="auditSystem" /> + <settings pass="auditUser" /> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-SecureStartup-FilterDriver" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PreventDeviceEncryption>true</PreventDeviceEncryption> + </component> + <component name="Microsoft-Windows-EnhancedStorage-Adm" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <TCGSecurityActivationDisabled>1</TCGSecurityActivationDisabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideLocalAccountScreen>true</HideLocalAccountScreen> + <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> + <HideOnlineAccountScreens>true</HideOnlineAccountScreens> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>2</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "RequireSecuritySignature" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable SMB signing requirement</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>powershell.exe -ExecutionPolicy Unrestricted -NoLogo -NoProfile -NonInteractive set-localuser -name "Docker" -passwordneverexpires 1</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowCopilotButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Hide Copilot button</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteAPP to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Task View from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Widgets from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Chat from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>22</Order> + <CommandLine>reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV1 /d 0 /t REG_DWORD /f</CommandLine> + <Description>Disable unsupported hardware notifications</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>23</Order> + <CommandLine>reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV2 /d 0 /t REG_DWORD /f</CommandLine> + <Description>Disable unsupported hardware notifications</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>24</Order> + <CommandLine>cmd /C rd /q C:\Windows.old</CommandLine> + <Description>Remove empty Windows.old folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>25</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>26</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win11x64-enterprise.xml b/apps/rego-tunnel/build/assets/win11x64-enterprise.xml new file mode 100644 index 0000000..bafed49 --- /dev/null +++ b/apps/rego-tunnel/build/assets/win11x64-enterprise.xml @@ -0,0 +1,475 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <!-- System partition (ESP) --> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>EFI</Type> + <Size>128</Size> + </CreatePartition> + <!-- Microsoft reserved partition (MSR) --> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>MSR</Type> + <Size>128</Size> + </CreatePartition> + <!-- Windows partition --> + <CreatePartition wcm:action="add"> + <Order>3</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <!-- System partition (ESP) --> + <ModifyPartition wcm:action="add"> + <Order>1</Order> + <PartitionID>1</PartitionID> + <Label>System</Label> + <Format>FAT32</Format> + </ModifyPartition> + <!-- MSR partition does not need to be modified --> + <ModifyPartition wcm:action="add"> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + <!-- Windows partition --> + <ModifyPartition wcm:action="add"> + <Order>3</Order> + <PartitionID>3</PartitionID> + <Label>Windows</Label> + <Letter>C</Letter> + <Format>NTFS</Format> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>3</PartitionID> + </InstallTo> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>NPPR9-FWDCX-D2C8J-H872K-2YT43</Key> + </ProductKey> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassTPMCheck /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>2</Order> + <Path>reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassSecureBootCheck /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>3</Order> + <Path>reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassRAMCheck /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>4</Order> + <Path>reg.exe add "HKLM\SYSTEM\Setup\MoSetup" /v AllowUpgradesWithUnsupportedTPMOrCPU /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + </RunSynchronous> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + <SupportHours>24/7</SupportHours> + <SupportPhone /> + <SupportProvider>Dockur</SupportProvider> + <SupportURL>https://github.com/dockur/windows/issues</SupportURL> + </OEMInformation> + <OEMName>Windows for Docker</OEMName> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v BypassNRO /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>2</Order> + <Path>reg.exe load "HKU\mount" "C:\Users\Default\NTUSER.DAT"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>3</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "ContentDeliveryAllowed" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>4</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "FeatureManagementEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>5</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "OEMPreInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>6</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>7</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEverEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>8</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SilentInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>9</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SoftLandingEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>10</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContentEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>11</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-310093Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>12</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338387Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>13</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338388Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>14</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338389Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>15</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338393Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>16</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-353698Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>17</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SystemPaneSuggestionsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>18</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>19</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>20</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>21</Order> + <Path>reg.exe unload "HKU\mount"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>22</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>23</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>24</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>25</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f</Path> + <Description>Set Network Location to Home</Description> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>26</Order> + <Path>pnputil -i -a C:\Windows\Drivers\viogpudo\viogpudo.inf</Path> + <Description>Install VirtIO display driver</Description> + </RunSynchronousCommand> + </RunSynchronous> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="auditSystem" /> + <settings pass="auditUser" /> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-SecureStartup-FilterDriver" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PreventDeviceEncryption>true</PreventDeviceEncryption> + </component> + <component name="Microsoft-Windows-EnhancedStorage-Adm" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <TCGSecurityActivationDisabled>1</TCGSecurityActivationDisabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideLocalAccountScreen>true</HideLocalAccountScreen> + <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> + <HideOnlineAccountScreens>true</HideOnlineAccountScreens> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>2</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "RequireSecuritySignature" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable SMB signing requirement</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>powershell.exe -ExecutionPolicy Unrestricted -NoLogo -NoProfile -NonInteractive set-localuser -name "Docker" -passwordneverexpires 1</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowCopilotButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Hide Copilot button</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteAPP to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Task View from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Widgets from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Chat from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>22</Order> + <CommandLine>reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV1 /d 0 /t REG_DWORD /f</CommandLine> + <Description>Disable unsupported hardware notifications</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>23</Order> + <CommandLine>reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV2 /d 0 /t REG_DWORD /f</CommandLine> + <Description>Disable unsupported hardware notifications</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>24</Order> + <CommandLine>cmd /C rd /q C:\Windows.old</CommandLine> + <Description>Remove empty Windows.old folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>25</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>26</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win11x64-iot.xml b/apps/rego-tunnel/build/assets/win11x64-iot.xml new file mode 100644 index 0000000..d6825d0 --- /dev/null +++ b/apps/rego-tunnel/build/assets/win11x64-iot.xml @@ -0,0 +1,475 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <!-- System partition (ESP) --> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>EFI</Type> + <Size>128</Size> + </CreatePartition> + <!-- Microsoft reserved partition (MSR) --> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>MSR</Type> + <Size>128</Size> + </CreatePartition> + <!-- Windows partition --> + <CreatePartition wcm:action="add"> + <Order>3</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <!-- System partition (ESP) --> + <ModifyPartition wcm:action="add"> + <Order>1</Order> + <PartitionID>1</PartitionID> + <Label>System</Label> + <Format>FAT32</Format> + </ModifyPartition> + <!-- MSR partition does not need to be modified --> + <ModifyPartition wcm:action="add"> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + <!-- Windows partition --> + <ModifyPartition wcm:action="add"> + <Order>3</Order> + <PartitionID>3</PartitionID> + <Label>Windows</Label> + <Letter>C</Letter> + <Format>NTFS</Format> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>3</PartitionID> + </InstallTo> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>CGK42-GYN6Y-VD22B-BX98W-J8JXD</Key> + </ProductKey> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassTPMCheck /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>2</Order> + <Path>reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassSecureBootCheck /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>3</Order> + <Path>reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassRAMCheck /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>4</Order> + <Path>reg.exe add "HKLM\SYSTEM\Setup\MoSetup" /v AllowUpgradesWithUnsupportedTPMOrCPU /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + </RunSynchronous> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + <SupportHours>24/7</SupportHours> + <SupportPhone /> + <SupportProvider>Dockur</SupportProvider> + <SupportURL>https://github.com/dockur/windows/issues</SupportURL> + </OEMInformation> + <OEMName>Windows for Docker</OEMName> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v BypassNRO /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>2</Order> + <Path>reg.exe load "HKU\mount" "C:\Users\Default\NTUSER.DAT"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>3</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "ContentDeliveryAllowed" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>4</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "FeatureManagementEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>5</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "OEMPreInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>6</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>7</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEverEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>8</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SilentInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>9</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SoftLandingEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>10</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContentEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>11</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-310093Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>12</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338387Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>13</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338388Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>14</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338389Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>15</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338393Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>16</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-353698Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>17</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SystemPaneSuggestionsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>18</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>19</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>20</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>21</Order> + <Path>reg.exe unload "HKU\mount"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>22</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>23</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>24</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>25</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f</Path> + <Description>Set Network Location to Home</Description> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>26</Order> + <Path>pnputil -i -a C:\Windows\Drivers\viogpudo\viogpudo.inf</Path> + <Description>Install VirtIO display driver</Description> + </RunSynchronousCommand> + </RunSynchronous> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="auditSystem" /> + <settings pass="auditUser" /> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-SecureStartup-FilterDriver" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PreventDeviceEncryption>true</PreventDeviceEncryption> + </component> + <component name="Microsoft-Windows-EnhancedStorage-Adm" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <TCGSecurityActivationDisabled>1</TCGSecurityActivationDisabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideLocalAccountScreen>true</HideLocalAccountScreen> + <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> + <HideOnlineAccountScreens>true</HideOnlineAccountScreens> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>2</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "RequireSecuritySignature" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable SMB signing requirement</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>powershell.exe -ExecutionPolicy Unrestricted -NoLogo -NoProfile -NonInteractive set-localuser -name "Docker" -passwordneverexpires 1</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowCopilotButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Hide Copilot button</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteAPP to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Task View from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Widgets from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Chat from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>22</Order> + <CommandLine>reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV1 /d 0 /t REG_DWORD /f</CommandLine> + <Description>Disable unsupported hardware notifications</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>23</Order> + <CommandLine>reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV2 /d 0 /t REG_DWORD /f</CommandLine> + <Description>Disable unsupported hardware notifications</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>24</Order> + <CommandLine>cmd /C rd /q C:\Windows.old</CommandLine> + <Description>Remove empty Windows.old folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>25</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>26</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win11x64-ltsc.xml b/apps/rego-tunnel/build/assets/win11x64-ltsc.xml new file mode 100644 index 0000000..a9a6ce7 --- /dev/null +++ b/apps/rego-tunnel/build/assets/win11x64-ltsc.xml @@ -0,0 +1,475 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <!-- System partition (ESP) --> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>EFI</Type> + <Size>128</Size> + </CreatePartition> + <!-- Microsoft reserved partition (MSR) --> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>MSR</Type> + <Size>128</Size> + </CreatePartition> + <!-- Windows partition --> + <CreatePartition wcm:action="add"> + <Order>3</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <!-- System partition (ESP) --> + <ModifyPartition wcm:action="add"> + <Order>1</Order> + <PartitionID>1</PartitionID> + <Label>System</Label> + <Format>FAT32</Format> + </ModifyPartition> + <!-- MSR partition does not need to be modified --> + <ModifyPartition wcm:action="add"> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + <!-- Windows partition --> + <ModifyPartition wcm:action="add"> + <Order>3</Order> + <PartitionID>3</PartitionID> + <Label>Windows</Label> + <Letter>C</Letter> + <Format>NTFS</Format> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>3</PartitionID> + </InstallTo> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>M7XTQ-FN8P6-TTKYV-9D4CC-J462D</Key> + </ProductKey> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassTPMCheck /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>2</Order> + <Path>reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassSecureBootCheck /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>3</Order> + <Path>reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassRAMCheck /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>4</Order> + <Path>reg.exe add "HKLM\SYSTEM\Setup\MoSetup" /v AllowUpgradesWithUnsupportedTPMOrCPU /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + </RunSynchronous> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + <SupportHours>24/7</SupportHours> + <SupportPhone /> + <SupportProvider>Dockur</SupportProvider> + <SupportURL>https://github.com/dockur/windows/issues</SupportURL> + </OEMInformation> + <OEMName>Windows for Docker</OEMName> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v BypassNRO /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>2</Order> + <Path>reg.exe load "HKU\mount" "C:\Users\Default\NTUSER.DAT"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>3</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "ContentDeliveryAllowed" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>4</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "FeatureManagementEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>5</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "OEMPreInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>6</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>7</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEverEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>8</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SilentInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>9</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SoftLandingEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>10</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContentEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>11</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-310093Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>12</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338387Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>13</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338388Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>14</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338389Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>15</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338393Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>16</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-353698Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>17</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SystemPaneSuggestionsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>18</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>19</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>20</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>21</Order> + <Path>reg.exe unload "HKU\mount"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>22</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>23</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>24</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>25</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f</Path> + <Description>Set Network Location to Home</Description> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>26</Order> + <Path>pnputil -i -a C:\Windows\Drivers\viogpudo\viogpudo.inf</Path> + <Description>Install VirtIO display driver</Description> + </RunSynchronousCommand> + </RunSynchronous> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="auditSystem" /> + <settings pass="auditUser" /> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-SecureStartup-FilterDriver" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PreventDeviceEncryption>true</PreventDeviceEncryption> + </component> + <component name="Microsoft-Windows-EnhancedStorage-Adm" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <TCGSecurityActivationDisabled>1</TCGSecurityActivationDisabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideLocalAccountScreen>true</HideLocalAccountScreen> + <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> + <HideOnlineAccountScreens>true</HideOnlineAccountScreens> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>2</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "RequireSecuritySignature" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable SMB signing requirement</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>powershell.exe -ExecutionPolicy Unrestricted -NoLogo -NoProfile -NonInteractive set-localuser -name "Docker" -passwordneverexpires 1</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowCopilotButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Hide Copilot button</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteAPP to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Task View from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Widgets from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Chat from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>22</Order> + <CommandLine>reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV1 /d 0 /t REG_DWORD /f</CommandLine> + <Description>Disable unsupported hardware notifications</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>23</Order> + <CommandLine>reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV2 /d 0 /t REG_DWORD /f</CommandLine> + <Description>Disable unsupported hardware notifications</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>24</Order> + <CommandLine>cmd /C rd /q C:\Windows.old</CommandLine> + <Description>Remove empty Windows.old folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>25</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>26</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win11x64.xml b/apps/rego-tunnel/build/assets/win11x64.xml new file mode 100644 index 0000000..8082c7c --- /dev/null +++ b/apps/rego-tunnel/build/assets/win11x64.xml @@ -0,0 +1,475 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <!-- System partition (ESP) --> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>EFI</Type> + <Size>128</Size> + </CreatePartition> + <!-- Microsoft reserved partition (MSR) --> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>MSR</Type> + <Size>128</Size> + </CreatePartition> + <!-- Windows partition --> + <CreatePartition wcm:action="add"> + <Order>3</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <!-- System partition (ESP) --> + <ModifyPartition wcm:action="add"> + <Order>1</Order> + <PartitionID>1</PartitionID> + <Label>System</Label> + <Format>FAT32</Format> + </ModifyPartition> + <!-- MSR partition does not need to be modified --> + <ModifyPartition wcm:action="add"> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + <!-- Windows partition --> + <ModifyPartition wcm:action="add"> + <Order>3</Order> + <PartitionID>3</PartitionID> + <Label>Windows</Label> + <Letter>C</Letter> + <Format>NTFS</Format> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>3</PartitionID> + </InstallTo> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>VK7JG-NPHTM-C97JM-9MPGT-3V66T</Key> + </ProductKey> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassTPMCheck /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>2</Order> + <Path>reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassSecureBootCheck /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>3</Order> + <Path>reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassRAMCheck /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>4</Order> + <Path>reg.exe add "HKLM\SYSTEM\Setup\MoSetup" /v AllowUpgradesWithUnsupportedTPMOrCPU /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + </RunSynchronous> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + <SupportHours>24/7</SupportHours> + <SupportPhone /> + <SupportProvider>Dockur</SupportProvider> + <SupportURL>https://github.com/dockur/windows/issues</SupportURL> + </OEMInformation> + <OEMName>Windows for Docker</OEMName> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v BypassNRO /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>2</Order> + <Path>reg.exe load "HKU\mount" "C:\Users\Default\NTUSER.DAT"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>3</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "ContentDeliveryAllowed" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>4</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "FeatureManagementEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>5</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "OEMPreInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>6</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>7</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEverEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>8</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SilentInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>9</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SoftLandingEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>10</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContentEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>11</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-310093Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>12</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338387Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>13</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338388Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>14</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338389Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>15</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338393Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>16</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-353698Enabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>17</Order> + <Path>reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SystemPaneSuggestionsEnabled" /t REG_DWORD /d 0 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>18</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>19</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>20</Order> + <Path>reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>21</Order> + <Path>reg.exe unload "HKU\mount"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>22</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>23</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>24</Order> + <Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>25</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f</Path> + <Description>Set Network Location to Home</Description> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>26</Order> + <Path>pnputil -i -a C:\Windows\Drivers\viogpudo\viogpudo.inf</Path> + <Description>Install VirtIO display driver</Description> + </RunSynchronousCommand> + </RunSynchronous> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="auditSystem" /> + <settings pass="auditUser" /> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-SecureStartup-FilterDriver" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PreventDeviceEncryption>true</PreventDeviceEncryption> + </component> + <component name="Microsoft-Windows-EnhancedStorage-Adm" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <TCGSecurityActivationDisabled>1</TCGSecurityActivationDisabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideLocalAccountScreen>true</HideLocalAccountScreen> + <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> + <HideOnlineAccountScreens>true</HideOnlineAccountScreens> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>2</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "RequireSecuritySignature" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable SMB signing requirement</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>powershell.exe -ExecutionPolicy Unrestricted -NoLogo -NoProfile -NonInteractive set-localuser -name "Docker" -passwordneverexpires 1</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowCopilotButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Hide Copilot button</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteAPP to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Task View from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Widgets from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Chat from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>22</Order> + <CommandLine>reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV1 /d 0 /t REG_DWORD /f</CommandLine> + <Description>Disable unsupported hardware notifications</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>23</Order> + <CommandLine>reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV2 /d 0 /t REG_DWORD /f</CommandLine> + <Description>Disable unsupported hardware notifications</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>24</Order> + <CommandLine>cmd /C rd /q C:\Windows.old</CommandLine> + <Description>Remove empty Windows.old folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>25</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>26</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win2008r2-eval.xml b/apps/rego-tunnel/build/assets/win2008r2-eval.xml new file mode 100644 index 0000000..09a23ce --- /dev/null +++ b/apps/rego-tunnel/build/assets/win2008r2-eval.xml @@ -0,0 +1,304 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <WillShowUI>OnError</WillShowUI> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>Primary</Type> + <Size>100</Size> + </CreatePartition> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <ModifyPartition wcm:action="add"> + <Format>NTFS</Format> + <Label>System Reserved</Label> + <Order>1</Order> + <Active>true</Active> + <PartitionID>1</PartitionID> + <TypeID>0x27</TypeID> + </ModifyPartition> + <ModifyPartition wcm:action="add"> + <Active>true</Active> + <Format>NTFS</Format> + <Label>Windows</Label> + <Letter>C</Letter> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Value>1</Value> + <Key>/IMAGE/INDEX</Key> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>2</PartitionID> + </InstallTo> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + </OEMInformation> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-ServerManager-SvrMgrNc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenServerManagerAtLogon>true</DoNotOpenServerManagerAtLogon> + </component> + <component name="Microsoft-Windows-OutOfBoxExperience" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenInitialConfigurationTasksAtLogon>true</DoNotOpenInitialConfigurationTasksAtLogon> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteApp to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win2008r2.xml b/apps/rego-tunnel/build/assets/win2008r2.xml new file mode 100644 index 0000000..5dee0a5 --- /dev/null +++ b/apps/rego-tunnel/build/assets/win2008r2.xml @@ -0,0 +1,307 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <WillShowUI>OnError</WillShowUI> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>Primary</Type> + <Size>100</Size> + </CreatePartition> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <ModifyPartition wcm:action="add"> + <Format>NTFS</Format> + <Label>System Reserved</Label> + <Order>1</Order> + <Active>true</Active> + <PartitionID>1</PartitionID> + <TypeID>0x27</TypeID> + </ModifyPartition> + <ModifyPartition wcm:action="add"> + <Active>true</Active> + <Format>NTFS</Format> + <Label>Windows</Label> + <Letter>C</Letter> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Value>1</Value> + <Key>/IMAGE/INDEX</Key> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>2</PartitionID> + </InstallTo> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>YC6KT-GKW9T-YTKYR-T4X34-R7VHC</Key> + </ProductKey> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + </OEMInformation> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-ServerManager-SvrMgrNc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenServerManagerAtLogon>true</DoNotOpenServerManagerAtLogon> + </component> + <component name="Microsoft-Windows-OutOfBoxExperience" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenInitialConfigurationTasksAtLogon>true</DoNotOpenInitialConfigurationTasksAtLogon> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteApp to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win2012r2-eval.xml b/apps/rego-tunnel/build/assets/win2012r2-eval.xml new file mode 100644 index 0000000..6351559 --- /dev/null +++ b/apps/rego-tunnel/build/assets/win2012r2-eval.xml @@ -0,0 +1,327 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UILanguageFallback>en-US</UILanguageFallback> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <!-- System partition (ESP) --> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>EFI</Type> + <Size>128</Size> + </CreatePartition> + <!-- Microsoft reserved partition (MSR) --> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>MSR</Type> + <Size>128</Size> + </CreatePartition> + <!-- Windows partition --> + <CreatePartition wcm:action="add"> + <Order>3</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <!-- System partition (ESP) --> + <ModifyPartition wcm:action="add"> + <Order>1</Order> + <PartitionID>1</PartitionID> + <Label>System</Label> + <Format>FAT32</Format> + </ModifyPartition> + <!-- MSR partition does not need to be modified --> + <ModifyPartition wcm:action="add"> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + <!-- Windows partition --> + <ModifyPartition wcm:action="add"> + <Order>3</Order> + <PartitionID>3</PartitionID> + <Label>Windows</Label> + <Letter>C</Letter> + <Format>NTFS</Format> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Key>/image/index</Key> + <Value>2</Value> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>3</PartitionID> + </InstallTo> + <WillShowUI>OnError</WillShowUI> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + </OEMInformation> + <OEMName>Windows for Docker</OEMName> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UILanguageFallback>en-US</UILanguageFallback> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f</Path> + <Description>Set Network Location to Home</Description> + </RunSynchronousCommand> + </RunSynchronous> + </component> + <component name="Microsoft-Windows-ServerManager-SvrMgrNc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenServerManagerAtLogon>true</DoNotOpenServerManagerAtLogon> + </component> + <component name="Microsoft-Windows-OutOfBoxExperience" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenInitialConfigurationTasksAtLogon>true</DoNotOpenInitialConfigurationTasksAtLogon> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-SecureStartup-FilterDriver" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PreventDeviceEncryption>true</PreventDeviceEncryption> + </component> + <component name="Microsoft-Windows-EnhancedStorage-Adm" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <TCGSecurityActivationDisabled>1</TCGSecurityActivationDisabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideLocalAccountScreen>true</HideLocalAccountScreen> + <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> + <HideOnlineAccountScreens>true</HideOnlineAccountScreens> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteApp to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win2012r2.xml b/apps/rego-tunnel/build/assets/win2012r2.xml new file mode 100644 index 0000000..bb3dd70 --- /dev/null +++ b/apps/rego-tunnel/build/assets/win2012r2.xml @@ -0,0 +1,330 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UILanguageFallback>en-US</UILanguageFallback> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <!-- System partition (ESP) --> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>EFI</Type> + <Size>128</Size> + </CreatePartition> + <!-- Microsoft reserved partition (MSR) --> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>MSR</Type> + <Size>128</Size> + </CreatePartition> + <!-- Windows partition --> + <CreatePartition wcm:action="add"> + <Order>3</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <!-- System partition (ESP) --> + <ModifyPartition wcm:action="add"> + <Order>1</Order> + <PartitionID>1</PartitionID> + <Label>System</Label> + <Format>FAT32</Format> + </ModifyPartition> + <!-- MSR partition does not need to be modified --> + <ModifyPartition wcm:action="add"> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + <!-- Windows partition --> + <ModifyPartition wcm:action="add"> + <Order>3</Order> + <PartitionID>3</PartitionID> + <Label>Windows</Label> + <Letter>C</Letter> + <Format>NTFS</Format> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Key>/image/index</Key> + <Value>2</Value> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>3</PartitionID> + </InstallTo> + <WillShowUI>OnError</WillShowUI> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>D2N9P-3P6X9-2R39C-7RTCD-MDVJX</Key> + </ProductKey> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + </OEMInformation> + <OEMName>Windows for Docker</OEMName> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UILanguageFallback>en-US</UILanguageFallback> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f</Path> + <Description>Set Network Location to Home</Description> + </RunSynchronousCommand> + </RunSynchronous> + </component> + <component name="Microsoft-Windows-ServerManager-SvrMgrNc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenServerManagerAtLogon>true</DoNotOpenServerManagerAtLogon> + </component> + <component name="Microsoft-Windows-OutOfBoxExperience" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenInitialConfigurationTasksAtLogon>true</DoNotOpenInitialConfigurationTasksAtLogon> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-SecureStartup-FilterDriver" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PreventDeviceEncryption>true</PreventDeviceEncryption> + </component> + <component name="Microsoft-Windows-EnhancedStorage-Adm" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <TCGSecurityActivationDisabled>1</TCGSecurityActivationDisabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideLocalAccountScreen>true</HideLocalAccountScreen> + <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> + <HideOnlineAccountScreens>true</HideOnlineAccountScreens> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteApp to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win2016-eval.xml b/apps/rego-tunnel/build/assets/win2016-eval.xml new file mode 100644 index 0000000..d788960 --- /dev/null +++ b/apps/rego-tunnel/build/assets/win2016-eval.xml @@ -0,0 +1,347 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UILanguageFallback>en-US</UILanguageFallback> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <!-- System partition (ESP) --> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>EFI</Type> + <Size>128</Size> + </CreatePartition> + <!-- Microsoft reserved partition (MSR) --> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>MSR</Type> + <Size>128</Size> + </CreatePartition> + <!-- Windows partition --> + <CreatePartition wcm:action="add"> + <Order>3</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <!-- System partition (ESP) --> + <ModifyPartition wcm:action="add"> + <Order>1</Order> + <PartitionID>1</PartitionID> + <Label>System</Label> + <Format>FAT32</Format> + </ModifyPartition> + <!-- MSR partition does not need to be modified --> + <ModifyPartition wcm:action="add"> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + <!-- Windows partition --> + <ModifyPartition wcm:action="add"> + <Order>3</Order> + <PartitionID>3</PartitionID> + <Label>Windows</Label> + <Letter>C</Letter> + <Format>NTFS</Format> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Key>/IMAGE/NAME</Key> + <Value>Windows Server 2016 SERVERSTANDARD</Value> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>3</PartitionID> + </InstallTo> + <WillShowUI>OnError</WillShowUI> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + </OEMInformation> + <OEMName>Windows for Docker</OEMName> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UILanguageFallback>en-US</UILanguageFallback> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f</Path> + <Description>Set Network Location to Home</Description> + </RunSynchronousCommand> + </RunSynchronous> + </component> + <component name="Microsoft-Windows-ServerManager-SvrMgrNc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenServerManagerAtLogon>true</DoNotOpenServerManagerAtLogon> + </component> + <component name="Microsoft-Windows-OutOfBoxExperience" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenInitialConfigurationTasksAtLogon>true</DoNotOpenInitialConfigurationTasksAtLogon> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-SecureStartup-FilterDriver" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PreventDeviceEncryption>true</PreventDeviceEncryption> + </component> + <component name="Microsoft-Windows-EnhancedStorage-Adm" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <TCGSecurityActivationDisabled>1</TCGSecurityActivationDisabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideLocalAccountScreen>true</HideLocalAccountScreen> + <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> + <HideOnlineAccountScreens>true</HideOnlineAccountScreens> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteApp to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Search from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Task View from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Widgets from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Chat from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>22</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>23</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win2016.xml b/apps/rego-tunnel/build/assets/win2016.xml new file mode 100644 index 0000000..e055e00 --- /dev/null +++ b/apps/rego-tunnel/build/assets/win2016.xml @@ -0,0 +1,350 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UILanguageFallback>en-US</UILanguageFallback> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <!-- System partition (ESP) --> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>EFI</Type> + <Size>128</Size> + </CreatePartition> + <!-- Microsoft reserved partition (MSR) --> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>MSR</Type> + <Size>128</Size> + </CreatePartition> + <!-- Windows partition --> + <CreatePartition wcm:action="add"> + <Order>3</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <!-- System partition (ESP) --> + <ModifyPartition wcm:action="add"> + <Order>1</Order> + <PartitionID>1</PartitionID> + <Label>System</Label> + <Format>FAT32</Format> + </ModifyPartition> + <!-- MSR partition does not need to be modified --> + <ModifyPartition wcm:action="add"> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + <!-- Windows partition --> + <ModifyPartition wcm:action="add"> + <Order>3</Order> + <PartitionID>3</PartitionID> + <Label>Windows</Label> + <Letter>C</Letter> + <Format>NTFS</Format> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Key>/IMAGE/NAME</Key> + <Value>Windows Server 2016 SERVERSTANDARD</Value> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>3</PartitionID> + </InstallTo> + <WillShowUI>OnError</WillShowUI> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>WC2BQ-8NRM3-FDDYY-2BFGV-KHKQY</Key> + </ProductKey> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + </OEMInformation> + <OEMName>Windows for Docker</OEMName> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UILanguageFallback>en-US</UILanguageFallback> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f</Path> + <Description>Set Network Location to Home</Description> + </RunSynchronousCommand> + </RunSynchronous> + </component> + <component name="Microsoft-Windows-ServerManager-SvrMgrNc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenServerManagerAtLogon>true</DoNotOpenServerManagerAtLogon> + </component> + <component name="Microsoft-Windows-OutOfBoxExperience" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenInitialConfigurationTasksAtLogon>true</DoNotOpenInitialConfigurationTasksAtLogon> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-SecureStartup-FilterDriver" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PreventDeviceEncryption>true</PreventDeviceEncryption> + </component> + <component name="Microsoft-Windows-EnhancedStorage-Adm" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <TCGSecurityActivationDisabled>1</TCGSecurityActivationDisabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideLocalAccountScreen>true</HideLocalAccountScreen> + <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> + <HideOnlineAccountScreens>true</HideOnlineAccountScreens> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteApp to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Search from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Task View from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Widgets from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Chat from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>22</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>23</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win2019-eval.xml b/apps/rego-tunnel/build/assets/win2019-eval.xml new file mode 100644 index 0000000..332d974 --- /dev/null +++ b/apps/rego-tunnel/build/assets/win2019-eval.xml @@ -0,0 +1,351 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UILanguageFallback>en-US</UILanguageFallback> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <!-- System partition (ESP) --> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>EFI</Type> + <Size>128</Size> + </CreatePartition> + <!-- Microsoft reserved partition (MSR) --> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>MSR</Type> + <Size>128</Size> + </CreatePartition> + <!-- Windows partition --> + <CreatePartition wcm:action="add"> + <Order>3</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <!-- System partition (ESP) --> + <ModifyPartition wcm:action="add"> + <Order>1</Order> + <PartitionID>1</PartitionID> + <Label>System</Label> + <Format>FAT32</Format> + </ModifyPartition> + <!-- MSR partition does not need to be modified --> + <ModifyPartition wcm:action="add"> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + <!-- Windows partition --> + <ModifyPartition wcm:action="add"> + <Order>3</Order> + <PartitionID>3</PartitionID> + <Label>Windows</Label> + <Letter>C</Letter> + <Format>NTFS</Format> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Key>/IMAGE/NAME</Key> + <Value>Windows Server 2019 SERVERSTANDARD</Value> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>3</PartitionID> + </InstallTo> + <WillShowUI>OnError</WillShowUI> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + <SupportHours>24/7</SupportHours> + <SupportPhone /> + <SupportProvider>Dockur</SupportProvider> + <SupportURL>https://github.com/dockur/windows/issues</SupportURL> + </OEMInformation> + <OEMName>Windows for Docker</OEMName> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UILanguageFallback>en-US</UILanguageFallback> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f</Path> + <Description>Set Network Location to Home</Description> + </RunSynchronousCommand> + </RunSynchronous> + </component> + <component name="Microsoft-Windows-ServerManager-SvrMgrNc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenServerManagerAtLogon>true</DoNotOpenServerManagerAtLogon> + </component> + <component name="Microsoft-Windows-OutOfBoxExperience" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenInitialConfigurationTasksAtLogon>true</DoNotOpenInitialConfigurationTasksAtLogon> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-SecureStartup-FilterDriver" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PreventDeviceEncryption>true</PreventDeviceEncryption> + </component> + <component name="Microsoft-Windows-EnhancedStorage-Adm" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <TCGSecurityActivationDisabled>1</TCGSecurityActivationDisabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideLocalAccountScreen>true</HideLocalAccountScreen> + <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> + <HideOnlineAccountScreens>true</HideOnlineAccountScreens> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteApp to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Search from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Task View from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Widgets from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Chat from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>22</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>23</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win2019-hv.xml b/apps/rego-tunnel/build/assets/win2019-hv.xml new file mode 100644 index 0000000..2fb6e32 --- /dev/null +++ b/apps/rego-tunnel/build/assets/win2019-hv.xml @@ -0,0 +1,356 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UILanguageFallback>en-US</UILanguageFallback> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <!-- System partition (ESP) --> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>EFI</Type> + <Size>128</Size> + </CreatePartition> + <!-- Microsoft reserved partition (MSR) --> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>MSR</Type> + <Size>128</Size> + </CreatePartition> + <!-- Windows partition --> + <CreatePartition wcm:action="add"> + <Order>3</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <!-- System partition (ESP) --> + <ModifyPartition wcm:action="add"> + <Order>1</Order> + <PartitionID>1</PartitionID> + <Label>System</Label> + <Format>FAT32</Format> + </ModifyPartition> + <!-- MSR partition does not need to be modified --> + <ModifyPartition wcm:action="add"> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + <!-- Windows partition --> + <ModifyPartition wcm:action="add"> + <Order>3</Order> + <PartitionID>3</PartitionID> + <Label>Windows</Label> + <Letter>C</Letter> + <Format>NTFS</Format> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Key>/IMAGE/NAME</Key> + <Value>Hyper-V Server 2019 SERVERHYPERCORE</Value> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>3</PartitionID> + </InstallTo> + <WillShowUI>OnError</WillShowUI> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + <SupportHours>24/7</SupportHours> + <SupportPhone /> + <SupportProvider>Dockur</SupportProvider> + <SupportURL>https://github.com/dockur/windows/issues</SupportURL> + </OEMInformation> + <OEMName>Windows for Docker</OEMName> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UILanguageFallback>en-US</UILanguageFallback> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f</Path> + <Description>Set Network Location to Home</Description> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>2</Order> + <Path>dism.exe /online /Disable-Feature /FeatureName:Microsoft-Hyper-V /NoRestart</Path> + <Description>Disable Hyper-V role</Description> + </RunSynchronousCommand> + </RunSynchronous> + </component> + <component name="Microsoft-Windows-ServerManager-SvrMgrNc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenServerManagerAtLogon>true</DoNotOpenServerManagerAtLogon> + </component> + <component name="Microsoft-Windows-OutOfBoxExperience" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenInitialConfigurationTasksAtLogon>true</DoNotOpenInitialConfigurationTasksAtLogon> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-SecureStartup-FilterDriver" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PreventDeviceEncryption>true</PreventDeviceEncryption> + </component> + <component name="Microsoft-Windows-EnhancedStorage-Adm" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <TCGSecurityActivationDisabled>1</TCGSecurityActivationDisabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideLocalAccountScreen>true</HideLocalAccountScreen> + <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> + <HideOnlineAccountScreens>true</HideOnlineAccountScreens> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteApp to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Search from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Task View from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Widgets from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Chat from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>22</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>23</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win2019.xml b/apps/rego-tunnel/build/assets/win2019.xml new file mode 100644 index 0000000..b5d8235 --- /dev/null +++ b/apps/rego-tunnel/build/assets/win2019.xml @@ -0,0 +1,354 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UILanguageFallback>en-US</UILanguageFallback> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <!-- System partition (ESP) --> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>EFI</Type> + <Size>128</Size> + </CreatePartition> + <!-- Microsoft reserved partition (MSR) --> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>MSR</Type> + <Size>128</Size> + </CreatePartition> + <!-- Windows partition --> + <CreatePartition wcm:action="add"> + <Order>3</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <!-- System partition (ESP) --> + <ModifyPartition wcm:action="add"> + <Order>1</Order> + <PartitionID>1</PartitionID> + <Label>System</Label> + <Format>FAT32</Format> + </ModifyPartition> + <!-- MSR partition does not need to be modified --> + <ModifyPartition wcm:action="add"> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + <!-- Windows partition --> + <ModifyPartition wcm:action="add"> + <Order>3</Order> + <PartitionID>3</PartitionID> + <Label>Windows</Label> + <Letter>C</Letter> + <Format>NTFS</Format> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Key>/IMAGE/NAME</Key> + <Value>Windows Server 2019 SERVERSTANDARD</Value> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>3</PartitionID> + </InstallTo> + <WillShowUI>OnError</WillShowUI> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>N69G4-B89J2-4G8F4-WWYCC-J464C</Key> + </ProductKey> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + <SupportHours>24/7</SupportHours> + <SupportPhone /> + <SupportProvider>Dockur</SupportProvider> + <SupportURL>https://github.com/dockur/windows/issues</SupportURL> + </OEMInformation> + <OEMName>Windows for Docker</OEMName> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UILanguageFallback>en-US</UILanguageFallback> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f</Path> + <Description>Set Network Location to Home</Description> + </RunSynchronousCommand> + </RunSynchronous> + </component> + <component name="Microsoft-Windows-ServerManager-SvrMgrNc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenServerManagerAtLogon>true</DoNotOpenServerManagerAtLogon> + </component> + <component name="Microsoft-Windows-OutOfBoxExperience" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenInitialConfigurationTasksAtLogon>true</DoNotOpenInitialConfigurationTasksAtLogon> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-SecureStartup-FilterDriver" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PreventDeviceEncryption>true</PreventDeviceEncryption> + </component> + <component name="Microsoft-Windows-EnhancedStorage-Adm" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <TCGSecurityActivationDisabled>1</TCGSecurityActivationDisabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideLocalAccountScreen>true</HideLocalAccountScreen> + <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> + <HideOnlineAccountScreens>true</HideOnlineAccountScreens> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteApp to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Search from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Task View from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Widgets from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Chat from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>22</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>23</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win2022-eval.xml b/apps/rego-tunnel/build/assets/win2022-eval.xml new file mode 100644 index 0000000..5748cb4 --- /dev/null +++ b/apps/rego-tunnel/build/assets/win2022-eval.xml @@ -0,0 +1,351 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UILanguageFallback>en-US</UILanguageFallback> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <!-- System partition (ESP) --> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>EFI</Type> + <Size>128</Size> + </CreatePartition> + <!-- Microsoft reserved partition (MSR) --> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>MSR</Type> + <Size>128</Size> + </CreatePartition> + <!-- Windows partition --> + <CreatePartition wcm:action="add"> + <Order>3</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <!-- System partition (ESP) --> + <ModifyPartition wcm:action="add"> + <Order>1</Order> + <PartitionID>1</PartitionID> + <Label>System</Label> + <Format>FAT32</Format> + </ModifyPartition> + <!-- MSR partition does not need to be modified --> + <ModifyPartition wcm:action="add"> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + <!-- Windows partition --> + <ModifyPartition wcm:action="add"> + <Order>3</Order> + <PartitionID>3</PartitionID> + <Label>Windows</Label> + <Letter>C</Letter> + <Format>NTFS</Format> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Key>/IMAGE/NAME</Key> + <Value>Windows Server 2022 SERVERSTANDARD</Value> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>3</PartitionID> + </InstallTo> + <WillShowUI>OnError</WillShowUI> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + <SupportHours>24/7</SupportHours> + <SupportPhone /> + <SupportProvider>Dockur</SupportProvider> + <SupportURL>https://github.com/dockur/windows/issues</SupportURL> + </OEMInformation> + <OEMName>Windows for Docker</OEMName> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UILanguageFallback>en-US</UILanguageFallback> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f</Path> + <Description>Set Network Location to Home</Description> + </RunSynchronousCommand> + </RunSynchronous> + </component> + <component name="Microsoft-Windows-ServerManager-SvrMgrNc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenServerManagerAtLogon>true</DoNotOpenServerManagerAtLogon> + </component> + <component name="Microsoft-Windows-OutOfBoxExperience" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenInitialConfigurationTasksAtLogon>true</DoNotOpenInitialConfigurationTasksAtLogon> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-SecureStartup-FilterDriver" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PreventDeviceEncryption>true</PreventDeviceEncryption> + </component> + <component name="Microsoft-Windows-EnhancedStorage-Adm" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <TCGSecurityActivationDisabled>1</TCGSecurityActivationDisabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideLocalAccountScreen>true</HideLocalAccountScreen> + <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> + <HideOnlineAccountScreens>true</HideOnlineAccountScreens> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteApp to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Search from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Task View from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Widgets from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Chat from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>22</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>23</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win2022.xml b/apps/rego-tunnel/build/assets/win2022.xml new file mode 100644 index 0000000..eac9414 --- /dev/null +++ b/apps/rego-tunnel/build/assets/win2022.xml @@ -0,0 +1,354 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UILanguageFallback>en-US</UILanguageFallback> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <!-- System partition (ESP) --> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>EFI</Type> + <Size>128</Size> + </CreatePartition> + <!-- Microsoft reserved partition (MSR) --> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>MSR</Type> + <Size>128</Size> + </CreatePartition> + <!-- Windows partition --> + <CreatePartition wcm:action="add"> + <Order>3</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <!-- System partition (ESP) --> + <ModifyPartition wcm:action="add"> + <Order>1</Order> + <PartitionID>1</PartitionID> + <Label>System</Label> + <Format>FAT32</Format> + </ModifyPartition> + <!-- MSR partition does not need to be modified --> + <ModifyPartition wcm:action="add"> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + <!-- Windows partition --> + <ModifyPartition wcm:action="add"> + <Order>3</Order> + <PartitionID>3</PartitionID> + <Label>Windows</Label> + <Letter>C</Letter> + <Format>NTFS</Format> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Key>/IMAGE/NAME</Key> + <Value>Windows Server 2022 SERVERSTANDARD</Value> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>3</PartitionID> + </InstallTo> + <WillShowUI>OnError</WillShowUI> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>VDYBN-27WPP-V4HQT-9VMD4-VMK7H</Key> + </ProductKey> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + <SupportHours>24/7</SupportHours> + <SupportPhone /> + <SupportProvider>Dockur</SupportProvider> + <SupportURL>https://github.com/dockur/windows/issues</SupportURL> + </OEMInformation> + <OEMName>Windows for Docker</OEMName> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UILanguageFallback>en-US</UILanguageFallback> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f</Path> + <Description>Set Network Location to Home</Description> + </RunSynchronousCommand> + </RunSynchronous> + </component> + <component name="Microsoft-Windows-ServerManager-SvrMgrNc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenServerManagerAtLogon>true</DoNotOpenServerManagerAtLogon> + </component> + <component name="Microsoft-Windows-OutOfBoxExperience" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenInitialConfigurationTasksAtLogon>true</DoNotOpenInitialConfigurationTasksAtLogon> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-SecureStartup-FilterDriver" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PreventDeviceEncryption>true</PreventDeviceEncryption> + </component> + <component name="Microsoft-Windows-EnhancedStorage-Adm" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <TCGSecurityActivationDisabled>1</TCGSecurityActivationDisabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideLocalAccountScreen>true</HideLocalAccountScreen> + <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> + <HideOnlineAccountScreens>true</HideOnlineAccountScreens> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteApp to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Search from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Task View from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Widgets from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Chat from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>22</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>23</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win2025-eval.xml b/apps/rego-tunnel/build/assets/win2025-eval.xml new file mode 100644 index 0000000..5b92f00 --- /dev/null +++ b/apps/rego-tunnel/build/assets/win2025-eval.xml @@ -0,0 +1,361 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UILanguageFallback>en-US</UILanguageFallback> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <!-- System partition (ESP) --> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>EFI</Type> + <Size>128</Size> + </CreatePartition> + <!-- Microsoft reserved partition (MSR) --> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>MSR</Type> + <Size>128</Size> + </CreatePartition> + <!-- Windows partition --> + <CreatePartition wcm:action="add"> + <Order>3</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <!-- System partition (ESP) --> + <ModifyPartition wcm:action="add"> + <Order>1</Order> + <PartitionID>1</PartitionID> + <Label>System</Label> + <Format>FAT32</Format> + </ModifyPartition> + <!-- MSR partition does not need to be modified --> + <ModifyPartition wcm:action="add"> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + <!-- Windows partition --> + <ModifyPartition wcm:action="add"> + <Order>3</Order> + <PartitionID>3</PartitionID> + <Label>Windows</Label> + <Letter>C</Letter> + <Format>NTFS</Format> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Key>/IMAGE/NAME</Key> + <Value>Windows Server 2025 SERVERSTANDARD</Value> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>3</PartitionID> + </InstallTo> + <WillShowUI>OnError</WillShowUI> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + <SupportHours>24/7</SupportHours> + <SupportPhone /> + <SupportProvider>Dockur</SupportProvider> + <SupportURL>https://github.com/dockur/windows/issues</SupportURL> + </OEMInformation> + <OEMName>Windows for Docker</OEMName> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UILanguageFallback>en-US</UILanguageFallback> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f</Path> + <Description>Set Network Location to Home</Description> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>2</Order> + <Path>pnputil -i -a C:\Windows\Drivers\viogpudo\viogpudo.inf</Path> + <Description>Install VirtIO display driver</Description> + </RunSynchronousCommand> + </RunSynchronous> + </component> + <component name="Microsoft-Windows-ServerManager-SvrMgrNc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenServerManagerAtLogon>true</DoNotOpenServerManagerAtLogon> + </component> + <component name="Microsoft-Windows-OutOfBoxExperience" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenInitialConfigurationTasksAtLogon>true</DoNotOpenInitialConfigurationTasksAtLogon> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-SecureStartup-FilterDriver" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PreventDeviceEncryption>true</PreventDeviceEncryption> + </component> + <component name="Microsoft-Windows-EnhancedStorage-Adm" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <TCGSecurityActivationDisabled>1</TCGSecurityActivationDisabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideLocalAccountScreen>true</HideLocalAccountScreen> + <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> + <HideOnlineAccountScreens>true</HideOnlineAccountScreens> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>2</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "RequireSecuritySignature" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable SMB signing requirement</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>powershell.exe -ExecutionPolicy Unrestricted -NoLogo -NoProfile -NonInteractive set-localuser -name "Docker" -passwordneverexpires 1</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowCopilotButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Hide Copilot button</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteAPP to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Task View from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Widgets from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Chat from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>22</Order> + <CommandLine>cmd /C rd /q C:\Windows.old</CommandLine> + <Description>Remove empty Windows.old folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>23</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>24</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win2025.xml b/apps/rego-tunnel/build/assets/win2025.xml new file mode 100644 index 0000000..2796db6 --- /dev/null +++ b/apps/rego-tunnel/build/assets/win2025.xml @@ -0,0 +1,364 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UILanguageFallback>en-US</UILanguageFallback> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <!-- System partition (ESP) --> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>EFI</Type> + <Size>128</Size> + </CreatePartition> + <!-- Microsoft reserved partition (MSR) --> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>MSR</Type> + <Size>128</Size> + </CreatePartition> + <!-- Windows partition --> + <CreatePartition wcm:action="add"> + <Order>3</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <!-- System partition (ESP) --> + <ModifyPartition wcm:action="add"> + <Order>1</Order> + <PartitionID>1</PartitionID> + <Label>System</Label> + <Format>FAT32</Format> + </ModifyPartition> + <!-- MSR partition does not need to be modified --> + <ModifyPartition wcm:action="add"> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + <!-- Windows partition --> + <ModifyPartition wcm:action="add"> + <Order>3</Order> + <PartitionID>3</PartitionID> + <Label>Windows</Label> + <Letter>C</Letter> + <Format>NTFS</Format> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Key>/IMAGE/NAME</Key> + <Value>Windows Server 2025 SERVERSTANDARD</Value> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>3</PartitionID> + </InstallTo> + <WillShowUI>OnError</WillShowUI> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>TVRH6-WHNXV-R9WG3-9XRFY-MY832</Key> + </ProductKey> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + <SupportHours>24/7</SupportHours> + <SupportPhone /> + <SupportProvider>Dockur</SupportProvider> + <SupportURL>https://github.com/dockur/windows/issues</SupportURL> + </OEMInformation> + <OEMName>Windows for Docker</OEMName> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UILanguageFallback>en-US</UILanguageFallback> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f</Path> + <Description>Set Network Location to Home</Description> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>2</Order> + <Path>pnputil -i -a C:\Windows\Drivers\viogpudo\viogpudo.inf</Path> + <Description>Install VirtIO display driver</Description> + </RunSynchronousCommand> + </RunSynchronous> + </component> + <component name="Microsoft-Windows-ServerManager-SvrMgrNc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenServerManagerAtLogon>true</DoNotOpenServerManagerAtLogon> + </component> + <component name="Microsoft-Windows-OutOfBoxExperience" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DoNotOpenInitialConfigurationTasksAtLogon>true</DoNotOpenInitialConfigurationTasksAtLogon> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-SecureStartup-FilterDriver" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PreventDeviceEncryption>true</PreventDeviceEncryption> + </component> + <component name="Microsoft-Windows-EnhancedStorage-Adm" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <TCGSecurityActivationDisabled>1</TCGSecurityActivationDisabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideLocalAccountScreen>true</HideLocalAccountScreen> + <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> + <HideOnlineAccountScreens>true</HideOnlineAccountScreens> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>2</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "RequireSecuritySignature" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable SMB signing requirement</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>powershell.exe -ExecutionPolicy Unrestricted -NoLogo -NoProfile -NonInteractive set-localuser -name "Docker" -passwordneverexpires 1</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowCopilotButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Hide Copilot button</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteAPP to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Task View from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Widgets from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Remove Chat from the Taskbar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>22</Order> + <CommandLine>cmd /C rd /q C:\Windows.old</CommandLine> + <Description>Remove empty Windows.old folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>23</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>24</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win7x64-enterprise-eval.xml b/apps/rego-tunnel/build/assets/win7x64-enterprise-eval.xml new file mode 100644 index 0000000..c3cc15b --- /dev/null +++ b/apps/rego-tunnel/build/assets/win7x64-enterprise-eval.xml @@ -0,0 +1,283 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <WillShowUI>OnError</WillShowUI> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>Primary</Type> + <Size>100</Size> + </CreatePartition> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <ModifyPartition wcm:action="add"> + <Format>NTFS</Format> + <Label>System Reserved</Label> + <Order>1</Order> + <Active>true</Active> + <PartitionID>1</PartitionID> + <TypeID>0x27</TypeID> + </ModifyPartition> + <ModifyPartition wcm:action="add"> + <Active>true</Active> + <Format>NTFS</Format> + <Label>Windows</Label> + <Letter>C</Letter> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Value>Windows 7 Enterprise</Value> + <Key>/IMAGE/NAME</Key> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>2</PartitionID> + </InstallTo> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + </OEMInformation> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteAPP to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win7x64-enterprise.xml b/apps/rego-tunnel/build/assets/win7x64-enterprise.xml new file mode 100644 index 0000000..b362a9f --- /dev/null +++ b/apps/rego-tunnel/build/assets/win7x64-enterprise.xml @@ -0,0 +1,287 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <WillShowUI>OnError</WillShowUI> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>Primary</Type> + <Size>100</Size> + </CreatePartition> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <ModifyPartition wcm:action="add"> + <Format>NTFS</Format> + <Label>System Reserved</Label> + <Order>1</Order> + <Active>true</Active> + <PartitionID>1</PartitionID> + <TypeID>0x27</TypeID> + </ModifyPartition> + <ModifyPartition wcm:action="add"> + <Active>true</Active> + <Format>NTFS</Format> + <Label>Windows</Label> + <Letter>C</Letter> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Value>Windows 7 Enterprise</Value> + <Key>/IMAGE/NAME</Key> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>2</PartitionID> + </InstallTo> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>H7X92-3VPBB-Q799D-Y6JJ3-86WC6</Key> + <WillShowUI>OnError</WillShowUI> + </ProductKey> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + </OEMInformation> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteAPP to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win7x64-ultimate.xml b/apps/rego-tunnel/build/assets/win7x64-ultimate.xml new file mode 100644 index 0000000..2ee085a --- /dev/null +++ b/apps/rego-tunnel/build/assets/win7x64-ultimate.xml @@ -0,0 +1,287 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <WillShowUI>OnError</WillShowUI> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>Primary</Type> + <Size>100</Size> + </CreatePartition> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <ModifyPartition wcm:action="add"> + <Format>NTFS</Format> + <Label>System Reserved</Label> + <Order>1</Order> + <Active>true</Active> + <PartitionID>1</PartitionID> + <TypeID>0x27</TypeID> + </ModifyPartition> + <ModifyPartition wcm:action="add"> + <Active>true</Active> + <Format>NTFS</Format> + <Label>Windows</Label> + <Letter>C</Letter> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Value>Windows 7 Ultimate</Value> + <Key>/IMAGE/NAME</Key> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>2</PartitionID> + </InstallTo> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>D4F6K-QK3RD-TMVMJ-BBMRX-3MBMV</Key> + <WillShowUI>OnError</WillShowUI> + </ProductKey> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + </OEMInformation> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteAPP to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win7x64.xml b/apps/rego-tunnel/build/assets/win7x64.xml new file mode 100644 index 0000000..3769dfd --- /dev/null +++ b/apps/rego-tunnel/build/assets/win7x64.xml @@ -0,0 +1,287 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <WillShowUI>OnError</WillShowUI> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>Primary</Type> + <Size>100</Size> + </CreatePartition> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <ModifyPartition wcm:action="add"> + <Format>NTFS</Format> + <Label>System Reserved</Label> + <Order>1</Order> + <Active>true</Active> + <PartitionID>1</PartitionID> + <TypeID>0x27</TypeID> + </ModifyPartition> + <ModifyPartition wcm:action="add"> + <Active>true</Active> + <Format>NTFS</Format> + <Label>Windows</Label> + <Letter>C</Letter> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Value>Windows 7 PROFESSIONAL</Value> + <Key>/IMAGE/NAME</Key> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>2</PartitionID> + </InstallTo> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>HYF8J-CVRMY-CM74G-RPHKF-PW487</Key> + <WillShowUI>OnError</WillShowUI> + </ProductKey> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + </OEMInformation> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteAPP to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win7x86-enterprise.xml b/apps/rego-tunnel/build/assets/win7x86-enterprise.xml new file mode 100644 index 0000000..7ac8ef0 --- /dev/null +++ b/apps/rego-tunnel/build/assets/win7x86-enterprise.xml @@ -0,0 +1,287 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <WillShowUI>OnError</WillShowUI> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>Primary</Type> + <Size>100</Size> + </CreatePartition> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <ModifyPartition wcm:action="add"> + <Format>NTFS</Format> + <Label>System Reserved</Label> + <Order>1</Order> + <Active>true</Active> + <PartitionID>1</PartitionID> + <TypeID>0x27</TypeID> + </ModifyPartition> + <ModifyPartition wcm:action="add"> + <Active>true</Active> + <Format>NTFS</Format> + <Label>Windows</Label> + <Letter>C</Letter> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Value>Windows 7 Enterprise</Value> + <Key>/IMAGE/NAME</Key> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>2</PartitionID> + </InstallTo> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>H7X92-3VPBB-Q799D-Y6JJ3-86WC6</Key> + <WillShowUI>OnError</WillShowUI> + </ProductKey> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + </OEMInformation> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteAPP to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win7x86-ultimate.xml b/apps/rego-tunnel/build/assets/win7x86-ultimate.xml new file mode 100644 index 0000000..419a508 --- /dev/null +++ b/apps/rego-tunnel/build/assets/win7x86-ultimate.xml @@ -0,0 +1,287 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <WillShowUI>OnError</WillShowUI> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>Primary</Type> + <Size>100</Size> + </CreatePartition> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <ModifyPartition wcm:action="add"> + <Format>NTFS</Format> + <Label>System Reserved</Label> + <Order>1</Order> + <Active>true</Active> + <PartitionID>1</PartitionID> + <TypeID>0x27</TypeID> + </ModifyPartition> + <ModifyPartition wcm:action="add"> + <Active>true</Active> + <Format>NTFS</Format> + <Label>Windows</Label> + <Letter>C</Letter> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Value>Windows 7 Ultimate</Value> + <Key>/IMAGE/NAME</Key> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>2</PartitionID> + </InstallTo> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>D4F6K-QK3RD-TMVMJ-BBMRX-3MBMV</Key> + <WillShowUI>OnError</WillShowUI> + </ProductKey> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + </OEMInformation> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteAPP to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win7x86.xml b/apps/rego-tunnel/build/assets/win7x86.xml new file mode 100644 index 0000000..bae5a8f --- /dev/null +++ b/apps/rego-tunnel/build/assets/win7x86.xml @@ -0,0 +1,287 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <WillShowUI>OnError</WillShowUI> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>Primary</Type> + <Size>100</Size> + </CreatePartition> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <ModifyPartition wcm:action="add"> + <Format>NTFS</Format> + <Label>System Reserved</Label> + <Order>1</Order> + <Active>true</Active> + <PartitionID>1</PartitionID> + <TypeID>0x27</TypeID> + </ModifyPartition> + <ModifyPartition wcm:action="add"> + <Active>true</Active> + <Format>NTFS</Format> + <Label>Windows</Label> + <Letter>C</Letter> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Value>Windows 7 PROFESSIONAL</Value> + <Key>/IMAGE/NAME</Key> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>2</PartitionID> + </InstallTo> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>HYF8J-CVRMY-CM74G-RPHKF-PW487</Key> + <WillShowUI>OnError</WillShowUI> + </ProductKey> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + </OEMInformation> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteAPP to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win81x64-enterprise-eval.xml b/apps/rego-tunnel/build/assets/win81x64-enterprise-eval.xml new file mode 100644 index 0000000..745fd9d --- /dev/null +++ b/apps/rego-tunnel/build/assets/win81x64-enterprise-eval.xml @@ -0,0 +1,312 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <!-- System partition (ESP) --> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>EFI</Type> + <Size>128</Size> + </CreatePartition> + <!-- Microsoft reserved partition (MSR) --> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>MSR</Type> + <Size>128</Size> + </CreatePartition> + <!-- Windows partition --> + <CreatePartition wcm:action="add"> + <Order>3</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <!-- System partition (ESP) --> + <ModifyPartition wcm:action="add"> + <Order>1</Order> + <PartitionID>1</PartitionID> + <Label>System</Label> + <Format>FAT32</Format> + </ModifyPartition> + <!-- MSR partition does not need to be modified --> + <ModifyPartition wcm:action="add"> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + <!-- Windows partition --> + <ModifyPartition wcm:action="add"> + <Order>3</Order> + <PartitionID>3</PartitionID> + <Label>Windows</Label> + <Letter>C</Letter> + <Format>NTFS</Format> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>3</PartitionID> + </InstallTo> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + </OEMInformation> + <OEMName>Windows for Docker</OEMName> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f</Path> + <Description>Set Network Location to Home</Description> + </RunSynchronousCommand> + </RunSynchronous> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-SecureStartup-FilterDriver" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PreventDeviceEncryption>true</PreventDeviceEncryption> + </component> + <component name="Microsoft-Windows-EnhancedStorage-Adm" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <TCGSecurityActivationDisabled>1</TCGSecurityActivationDisabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideLocalAccountScreen>true</HideLocalAccountScreen> + <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> + <HideOnlineAccountScreens>true</HideOnlineAccountScreens> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteApp to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win81x64-enterprise.xml b/apps/rego-tunnel/build/assets/win81x64-enterprise.xml new file mode 100644 index 0000000..a073c38 --- /dev/null +++ b/apps/rego-tunnel/build/assets/win81x64-enterprise.xml @@ -0,0 +1,315 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <!-- System partition (ESP) --> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>EFI</Type> + <Size>128</Size> + </CreatePartition> + <!-- Microsoft reserved partition (MSR) --> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>MSR</Type> + <Size>128</Size> + </CreatePartition> + <!-- Windows partition --> + <CreatePartition wcm:action="add"> + <Order>3</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <!-- System partition (ESP) --> + <ModifyPartition wcm:action="add"> + <Order>1</Order> + <PartitionID>1</PartitionID> + <Label>System</Label> + <Format>FAT32</Format> + </ModifyPartition> + <!-- MSR partition does not need to be modified --> + <ModifyPartition wcm:action="add"> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + <!-- Windows partition --> + <ModifyPartition wcm:action="add"> + <Order>3</Order> + <PartitionID>3</PartitionID> + <Label>Windows</Label> + <Letter>C</Letter> + <Format>NTFS</Format> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>3</PartitionID> + </InstallTo> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>FHQNR-XYXYC-8PMHT-TV4PH-DRQ3H</Key> + </ProductKey> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + </OEMInformation> + <OEMName>Windows for Docker</OEMName> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f</Path> + <Description>Set Network Location to Home</Description> + </RunSynchronousCommand> + </RunSynchronous> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-SecureStartup-FilterDriver" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PreventDeviceEncryption>true</PreventDeviceEncryption> + </component> + <component name="Microsoft-Windows-EnhancedStorage-Adm" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <TCGSecurityActivationDisabled>1</TCGSecurityActivationDisabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideLocalAccountScreen>true</HideLocalAccountScreen> + <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> + <HideOnlineAccountScreens>true</HideOnlineAccountScreens> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteApp to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/win81x64.xml b/apps/rego-tunnel/build/assets/win81x64.xml new file mode 100644 index 0000000..6b45785 --- /dev/null +++ b/apps/rego-tunnel/build/assets/win81x64.xml @@ -0,0 +1,322 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <!-- System partition (ESP) --> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>EFI</Type> + <Size>128</Size> + </CreatePartition> + <!-- Microsoft reserved partition (MSR) --> + <CreatePartition wcm:action="add"> + <Order>2</Order> + <Type>MSR</Type> + <Size>128</Size> + </CreatePartition> + <!-- Windows partition --> + <CreatePartition wcm:action="add"> + <Order>3</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <!-- System partition (ESP) --> + <ModifyPartition wcm:action="add"> + <Order>1</Order> + <PartitionID>1</PartitionID> + <Label>System</Label> + <Format>FAT32</Format> + </ModifyPartition> + <!-- MSR partition does not need to be modified --> + <ModifyPartition wcm:action="add"> + <Order>2</Order> + <PartitionID>2</PartitionID> + </ModifyPartition> + <!-- Windows partition --> + <ModifyPartition wcm:action="add"> + <Order>3</Order> + <PartitionID>3</PartitionID> + <Label>Windows</Label> + <Letter>C</Letter> + <Format>NTFS</Format> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Value>Windows 8.1 Pro</Value> + <Key>/IMAGE/NAME</Key> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>3</PartitionID> + </InstallTo> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <DynamicUpdate> + <Enable>true</Enable> + <WillShowUI>Never</WillShowUI> + </DynamicUpdate> + <UpgradeData> + <Upgrade>false</Upgrade> + <WillShowUI>Never</WillShowUI> + </UpgradeData> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>GCRJD-8NW9H-F2CDX-CCM8D-9D6T9</Key> + <WillShowUI>OnError</WillShowUI> + </ProductKey> + </UserData> + <EnableFirewall>false</EnableFirewall> + <Diagnostics> + <OptIn>false</OptIn> + </Diagnostics> + </component> + </settings> + <settings pass="offlineServicing"> + <component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <EnableLUA>false</EnableLUA> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnPSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + </OEMInformation> + <OEMName>Windows for Docker</OEMName> + </component> + <component name="Microsoft-Windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableWER>1</DisableWER> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableAccelerators>true</DisableAccelerators> + <DisableFirstRunWizard>true</DisableFirstRunWizard> + <Home_Page>https://google.com</Home_Page> + <Help_Page>about:blank</Help_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f</Path> + <Description>Set Network Location to Home</Description> + </RunSynchronousCommand> + </RunSynchronous> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAuthentication>0</UserAuthentication> + </component> + <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <FirewallGroups> + <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop"> + <Active>true</Active> + <Profile>all</Profile> + <Group>@FirewallAPI.dll,-28752</Group> + </FirewallGroup> + </FirewallGroups> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-SecureStartup-FilterDriver" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PreventDeviceEncryption>true</PreventDeviceEncryption> + </component> + <component name="Microsoft-Windows-EnhancedStorage-Adm" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <TCGSecurityActivationDisabled>1</TCGSecurityActivationDisabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <HideLocalAccountScreen>true</HideLocalAccountScreen> + <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> + <HideOnlineAccountScreens>true</HideOnlineAccountScreens> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>true</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable option for passwordless sign-in</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteApp to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off Windows Update auto download</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/winvistax64-enterprise.xml b/apps/rego-tunnel/build/assets/winvistax64-enterprise.xml new file mode 100644 index 0000000..a3dac19 --- /dev/null +++ b/apps/rego-tunnel/build/assets/winvistax64-enterprise.xml @@ -0,0 +1,266 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <WillShowUI>OnError</WillShowUI> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <ModifyPartition wcm:action="add"> + <Active>true</Active> + <Format>NTFS</Format> + <Label>Windows</Label> + <Letter>C</Letter> + <Order>1</Order> + <PartitionID>1</PartitionID> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Value>Windows Vista Enterprise</Value> + <Key>/IMAGE/NAME</Key> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>1</PartitionID> + </InstallTo> + <WillShowUI>OnError</WillShowUI> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>VKK3X-68KWM-X2YGT-QR4M6-4BWMV</Key> + </ProductKey> + </UserData> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnpSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-Licensing-SLC" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-Licensing-SLC-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <ProductKey>VKK3X-68KWM-X2YGT-QR4M6-4BWMV</ProductKey> + <TimeZone>Pacific Standard Time</TimeZone> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + </OEMInformation> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <Home_Page>about:blank</Home_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>false</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>netsh.exe advfirewall firewall set rule group="@FirewallAPI.dll,-28752" new enable=Yes</CommandLine> + <Description>Add RDP in firewall</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable RDP</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Windows\Sidebar" /v "TurnOffSidebar" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off sidebar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKCU\Control Panel\Desktop" /v "ScreenSaveActive" /t REG_SZ /d 0 /f</CommandLine> + <Description>Disable screensaver</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>reg.exe add "HKCU\Control Panel\Desktop" /v SCRNSAVE.EXE /t REG_SZ /d C:\Windows\System32\scrnsavex.scr /f</CommandLine> + <Description>Disable screensaver</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteApp to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>22</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>23</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>24</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/winvistax64-ultimate.xml b/apps/rego-tunnel/build/assets/winvistax64-ultimate.xml new file mode 100644 index 0000000..eb12e60 --- /dev/null +++ b/apps/rego-tunnel/build/assets/winvistax64-ultimate.xml @@ -0,0 +1,266 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <WillShowUI>OnError</WillShowUI> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <ModifyPartition wcm:action="add"> + <Active>true</Active> + <Format>NTFS</Format> + <Label>Windows</Label> + <Letter>C</Letter> + <Order>1</Order> + <PartitionID>1</PartitionID> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Value>Windows Vista Ultimate</Value> + <Key>/IMAGE/NAME</Key> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>1</PartitionID> + </InstallTo> + <WillShowUI>OnError</WillShowUI> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>VMCB9-FDRV6-6CDQM-RV23K-RP8F7</Key> + </ProductKey> + </UserData> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnpSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-Licensing-SLC" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-Licensing-SLC-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <ProductKey>VMCB9-FDRV6-6CDQM-RV23K-RP8F7</ProductKey> + <TimeZone>Pacific Standard Time</TimeZone> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + </OEMInformation> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <Home_Page>about:blank</Home_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>false</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>netsh.exe advfirewall firewall set rule group="@FirewallAPI.dll,-28752" new enable=Yes</CommandLine> + <Description>Add RDP in firewall</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable RDP</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Windows\Sidebar" /v "TurnOffSidebar" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off sidebar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKCU\Control Panel\Desktop" /v "ScreenSaveActive" /t REG_SZ /d 0 /f</CommandLine> + <Description>Disable screensaver</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>reg.exe add "HKCU\Control Panel\Desktop" /v SCRNSAVE.EXE /t REG_SZ /d C:\Windows\System32\scrnsavex.scr /f</CommandLine> + <Description>Disable screensaver</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteApp to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>22</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>23</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>24</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/winvistax64.xml b/apps/rego-tunnel/build/assets/winvistax64.xml new file mode 100644 index 0000000..ad2ac70 --- /dev/null +++ b/apps/rego-tunnel/build/assets/winvistax64.xml @@ -0,0 +1,266 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <WillShowUI>OnError</WillShowUI> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <ModifyPartition wcm:action="add"> + <Active>true</Active> + <Format>NTFS</Format> + <Label>Windows</Label> + <Letter>C</Letter> + <Order>1</Order> + <PartitionID>1</PartitionID> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Value>Windows Vista BUSINESS</Value> + <Key>/IMAGE/NAME</Key> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>1</PartitionID> + </InstallTo> + <WillShowUI>OnError</WillShowUI> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>4D2XH-PRBMM-8Q22B-K8BM3-MRW4W</Key> + </ProductKey> + </UserData> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnpSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-Licensing-SLC" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-Licensing-SLC-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <ProductKey>4D2XH-PRBMM-8Q22B-K8BM3-MRW4W</ProductKey> + <TimeZone>Pacific Standard Time</TimeZone> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + </OEMInformation> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <Home_Page>about:blank</Home_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>false</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>netsh.exe advfirewall firewall set rule group="@FirewallAPI.dll,-28752" new enable=Yes</CommandLine> + <Description>Add RDP in firewall</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable RDP</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Windows\Sidebar" /v "TurnOffSidebar" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off sidebar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKCU\Control Panel\Desktop" /v "ScreenSaveActive" /t REG_SZ /d 0 /f</CommandLine> + <Description>Disable screensaver</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>reg.exe add "HKCU\Control Panel\Desktop" /v SCRNSAVE.EXE /t REG_SZ /d C:\Windows\System32\scrnsavex.scr /f</CommandLine> + <Description>Disable screensaver</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteApp to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>22</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>23</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>24</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/winvistax86-enterprise.xml b/apps/rego-tunnel/build/assets/winvistax86-enterprise.xml new file mode 100644 index 0000000..5092331 --- /dev/null +++ b/apps/rego-tunnel/build/assets/winvistax86-enterprise.xml @@ -0,0 +1,266 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <WillShowUI>OnError</WillShowUI> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <ModifyPartition wcm:action="add"> + <Active>true</Active> + <Format>NTFS</Format> + <Label>Windows</Label> + <Letter>C</Letter> + <Order>1</Order> + <PartitionID>1</PartitionID> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Value>Windows Vista Enterprise</Value> + <Key>/IMAGE/NAME</Key> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>1</PartitionID> + </InstallTo> + <WillShowUI>OnError</WillShowUI> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>VKK3X-68KWM-X2YGT-QR4M6-4BWMV</Key> + </ProductKey> + </UserData> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnpSysprep" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-Licensing-SLC" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-Licensing-SLC-UX" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <ProductKey>VKK3X-68KWM-X2YGT-QR4M6-4BWMV</ProductKey> + <TimeZone>Pacific Standard Time</TimeZone> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + </OEMInformation> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-International-Core" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <Home_Page>about:blank</Home_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>false</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>netsh.exe advfirewall firewall set rule group="@FirewallAPI.dll,-28752" new enable=Yes</CommandLine> + <Description>Add RDP in firewall</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable RDP</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Windows\Sidebar" /v "TurnOffSidebar" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off sidebar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKCU\Control Panel\Desktop" /v "ScreenSaveActive" /t REG_SZ /d 0 /f</CommandLine> + <Description>Disable screensaver</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>reg.exe add "HKCU\Control Panel\Desktop" /v SCRNSAVE.EXE /t REG_SZ /d C:\Windows\System32\scrnsavex.scr /f</CommandLine> + <Description>Disable screensaver</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteApp to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>22</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>23</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>24</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/winvistax86-ultimate.xml b/apps/rego-tunnel/build/assets/winvistax86-ultimate.xml new file mode 100644 index 0000000..97ad23e --- /dev/null +++ b/apps/rego-tunnel/build/assets/winvistax86-ultimate.xml @@ -0,0 +1,266 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <WillShowUI>OnError</WillShowUI> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <ModifyPartition wcm:action="add"> + <Active>true</Active> + <Format>NTFS</Format> + <Label>Windows</Label> + <Letter>C</Letter> + <Order>1</Order> + <PartitionID>1</PartitionID> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Value>Windows Vista Ultimate</Value> + <Key>/IMAGE/NAME</Key> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>1</PartitionID> + </InstallTo> + <WillShowUI>OnError</WillShowUI> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>VMCB9-FDRV6-6CDQM-RV23K-RP8F7</Key> + </ProductKey> + </UserData> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnpSysprep" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-Licensing-SLC" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-Licensing-SLC-UX" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <ProductKey>VMCB9-FDRV6-6CDQM-RV23K-RP8F7</ProductKey> + <TimeZone>Pacific Standard Time</TimeZone> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + </OEMInformation> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-International-Core" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <Home_Page>about:blank</Home_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>false</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>netsh.exe advfirewall firewall set rule group="@FirewallAPI.dll,-28752" new enable=Yes</CommandLine> + <Description>Add RDP in firewall</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable RDP</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Windows\Sidebar" /v "TurnOffSidebar" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off sidebar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKCU\Control Panel\Desktop" /v "ScreenSaveActive" /t REG_SZ /d 0 /f</CommandLine> + <Description>Disable screensaver</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>reg.exe add "HKCU\Control Panel\Desktop" /v SCRNSAVE.EXE /t REG_SZ /d C:\Windows\System32\scrnsavex.scr /f</CommandLine> + <Description>Disable screensaver</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteApp to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>22</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>23</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>24</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/assets/winvistax86.xml b/apps/rego-tunnel/build/assets/winvistax86.xml new file mode 100644 index 0000000..ade1942 --- /dev/null +++ b/apps/rego-tunnel/build/assets/winvistax86.xml @@ -0,0 +1,266 @@ +<?xml version="1.0" encoding="UTF-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DiskConfiguration> + <WillShowUI>OnError</WillShowUI> + <Disk wcm:action="add"> + <DiskID>0</DiskID> + <WillWipeDisk>true</WillWipeDisk> + <CreatePartitions> + <CreatePartition wcm:action="add"> + <Order>1</Order> + <Type>Primary</Type> + <Extend>true</Extend> + </CreatePartition> + </CreatePartitions> + <ModifyPartitions> + <ModifyPartition wcm:action="add"> + <Active>true</Active> + <Format>NTFS</Format> + <Label>Windows</Label> + <Letter>C</Letter> + <Order>1</Order> + <PartitionID>1</PartitionID> + </ModifyPartition> + </ModifyPartitions> + </Disk> + </DiskConfiguration> + <ImageInstall> + <OSImage> + <InstallFrom> + <MetaData wcm:action="add"> + <Value>Windows Vista BUSINESS</Value> + <Key>/IMAGE/NAME</Key> + </MetaData> + </InstallFrom> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>1</PartitionID> + </InstallTo> + <WillShowUI>OnError</WillShowUI> + <InstallToAvailablePartition>false</InstallToAvailablePartition> + </OSImage> + </ImageInstall> + <UserData> + <AcceptEula>true</AcceptEula> + <FullName>Docker</FullName> + <Organization>Windows for Docker</Organization> + <ProductKey> + <Key>4D2XH-PRBMM-8Q22B-K8BM3-MRW4W</Key> + </ProductKey> + </UserData> + </component> + </settings> + <settings pass="generalize"> + <component name="Microsoft-Windows-PnpSysprep" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> + </component> + <component name="Microsoft-Windows-Security-Licensing-SLC" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipRearm>1</SkipRearm> + </component> + </settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Security-Licensing-SLC-UX" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SkipAutoActivation>true</SkipAutoActivation> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ComputerName>*</ComputerName> + <ProductKey>4D2XH-PRBMM-8Q22B-K8BM3-MRW4W</ProductKey> + <TimeZone>Pacific Standard Time</TimeZone> + <OEMInformation> + <Manufacturer>Dockur</Manufacturer> + <Model>Windows for Docker</Model> + </OEMInformation> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + </component> + <component name="Microsoft-Windows-SystemRestore-Main" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <DisableSR>1</DisableSR> + </component> + <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <fDenyTSConnections>false</fDenyTSConnections> + </component> + </settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-International-Core" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-IE-InternetExplorer" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <Home_Page>about:blank</Home_Page> + </component> + <component name="Microsoft-Windows-SQMApi" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <CEIPEnabled>0</CEIPEnabled> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Docker</Name> + <Group>Administrators</Group> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + <AdministratorPassword> + <Value>password</Value> + <PlainText>true</PlainText> + </AdministratorPassword> + </UserAccounts> + <AutoLogon> + <Username>Docker</Username> + <Enabled>true</Enabled> + <LogonCount>65432</LogonCount> + <Password> + <Value /> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <Display> + <ColorDepth>32</ColorDepth> + <HorizontalResolution>1920</HorizontalResolution> + <VerticalResolution>1080</VerticalResolution> + </Display> + <OOBE> + <HideEULAPage>true</HideEULAPage> + <NetworkLocation>Home</NetworkLocation> + <ProtectYourPC>3</ProtectYourPC> + <SkipUserOOBE>true</SkipUserOOBE> + <SkipMachineOOBE>false</SkipMachineOOBE> + </OOBE> + <RegisteredOrganization>Dockur</RegisteredOrganization> + <RegisteredOwner>Windows for Docker</RegisteredOwner> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Allow guest access to network shares</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>3</Order> + <CommandLine>cmd /C wmic useraccount where name="Docker" set PasswordExpires=false</CommandLine> + <Description>Password Never Expires</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>4</Order> + <CommandLine>cmd /C POWERCFG -H OFF</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>5</Order> + <CommandLine>cmd /C POWERCFG -X -monitor-timeout-ac 0</CommandLine> + <Description>Disable monitor blanking</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>6</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>7</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>8</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f</CommandLine> + <Description>Disable Network Discovery popup</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>9</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable first-run experience in Edge</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>10</Order> + <CommandLine>reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Show file extensions in Explorer</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>11</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Zero Hibernation File</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>12</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f</CommandLine> + <Description>Disable Hibernation</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>13</Order> + <CommandLine>cmd /C POWERCFG -X -standby-timeout-ac 0</CommandLine> + <Description>Disable Sleep</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>14</Order> + <CommandLine>netsh.exe advfirewall firewall set rule group="@FirewallAPI.dll,-28752" new enable=Yes</CommandLine> + <Description>Add RDP in firewall</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>15</Order> + <CommandLine>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f</CommandLine> + <Description>Enable RDP</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>16</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Windows\Sidebar" /v "TurnOffSidebar" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Turn off sidebar</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>17</Order> + <CommandLine>reg.exe add "HKCU\Control Panel\Desktop" /v "ScreenSaveActive" /t REG_SZ /d 0 /f</CommandLine> + <Description>Disable screensaver</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>18</Order> + <CommandLine>reg.exe add "HKCU\Control Panel\Desktop" /v SCRNSAVE.EXE /t REG_SZ /d C:\Windows\System32\scrnsavex.scr /f</CommandLine> + <Description>Disable screensaver</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>19</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Enable RemoteApp to launch unlisted programs</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>20</Order> + <CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f</CommandLine> + <Description>Disable RemoteApp allowlist</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>21</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes</CommandLine> + <Description>Enable Network Discovery</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>22</Order> + <CommandLine>netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes</CommandLine> + <Description>Enable File Sharing</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>23</Order> + <CommandLine>cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data</CommandLine> + <Description>Create desktop shortcut to shared folder</Description> + </SynchronousCommand> + <SynchronousCommand wcm:action="add"> + <Order>24</Order> + <CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine> + <Description>Execute custom script from the OEM folder if exists</Description> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> +</unattend> diff --git a/apps/rego-tunnel/build/compose.yml b/apps/rego-tunnel/build/compose.yml new file mode 100644 index 0000000..e5b6257 --- /dev/null +++ b/apps/rego-tunnel/build/compose.yml @@ -0,0 +1,19 @@ +services: + windows: + image: dockurr/windows + container_name: windows + environment: + VERSION: "11" + devices: + - /dev/kvm + - /dev/net/tun + cap_add: + - NET_ADMIN + ports: + - 8006:8006 + - 3389:3389/tcp + - 3389:3389/udp + volumes: + - ./windows:/storage + restart: always + stop_grace_period: 2m diff --git a/apps/rego-tunnel/build/kubernetes.yml b/apps/rego-tunnel/build/kubernetes.yml new file mode 100644 index 0000000..fa8eef0 --- /dev/null +++ b/apps/rego-tunnel/build/kubernetes.yml @@ -0,0 +1,100 @@ +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: windows-pvc +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 64Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: windows + labels: + name: windows +spec: + replicas: 1 + selector: + matchLabels: + app: windows + template: + metadata: + labels: + app: windows + spec: + containers: + - name: windows + image: dockurr/windows + env: + - name: VERSION + value: "11" + - name: DISK_SIZE + value: "64G" + ports: + - containerPort: 8006 + name: http + protocol: TCP + - containerPort: 3389 + name: rdp + protocol: TCP + - containerPort: 3389 + name: udp + protocol: UDP + - containerPort: 5900 + name: vnc + protocol: TCP + securityContext: + capabilities: + add: + - NET_ADMIN + privileged: true + volumeMounts: + - mountPath: /storage + name: storage + - mountPath: /dev/kvm + name: dev-kvm + - mountPath: /dev/net/tun + name: dev-tun + terminationGracePeriodSeconds: 120 + volumes: + - name: storage + persistentVolumeClaim: + claimName: windows-pvc + - hostPath: + path: /dev/kvm + name: dev-kvm + - hostPath: + path: /dev/net/tun + type: CharDevice + name: dev-tun +--- +apiVersion: v1 +kind: Service +metadata: + name: windows +spec: + internalTrafficPolicy: Cluster + ports: + - name: http + port: 8006 + protocol: TCP + targetPort: 8006 + - name: rdp + port: 3389 + protocol: TCP + targetPort: 3389 + - name: udp + port: 3389 + protocol: UDP + targetPort: 3389 + - name: vnc + port: 5900 + protocol: TCP + targetPort: 5900 + selector: + app: windows + type: ClusterIP diff --git a/apps/rego-tunnel/build/license.md b/apps/rego-tunnel/build/license.md new file mode 100644 index 0000000..9cf1062 --- /dev/null +++ b/apps/rego-tunnel/build/license.md @@ -0,0 +1,19 @@ +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/apps/rego-tunnel/build/readme.md b/apps/rego-tunnel/build/readme.md new file mode 100644 index 0000000..adbb6bf --- /dev/null +++ b/apps/rego-tunnel/build/readme.md @@ -0,0 +1,401 @@ +<h1 align="center">Windows<br /> +<div align="center"> +<a href="https://github.com/dockur/windows"><img src="https://github.com/dockur/windows/raw/master/.github/logo.png" title="Logo" style="max-width:100%;" width="128" /></a> +</div> +<div align="center"> + +[![Build]][build_url] +[![Version]][tag_url] +[![Size]][tag_url] +[![Package]][pkg_url] +[![Pulls]][hub_url] + +</div></h1> + +Windows inside a Docker container. + +## Features ✨ + + - ISO downloader + - KVM acceleration + - Web-based viewer + +## Video 📺 + +[![Youtube](https://img.youtube.com/vi/xhGYobuG508/0.jpg)](https://www.youtube.com/watch?v=xhGYobuG508) + +## Usage 🐳 + +##### Via Docker Compose: + +```yaml +services: + windows: + image: dockurr/windows + container_name: windows + environment: + VERSION: "11" + devices: + - /dev/kvm + - /dev/net/tun + cap_add: + - NET_ADMIN + ports: + - 8006:8006 + - 3389:3389/tcp + - 3389:3389/udp + volumes: + - ./windows:/storage + restart: always + stop_grace_period: 2m +``` + +##### Via Docker CLI: + +```bash +docker run -it --rm --name windows -e "VERSION=11" -p 8006:8006 --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN -v "${PWD:-.}/windows:/storage" --stop-timeout 120 docker.io/dockurr/windows +``` + +##### Via Kubernetes: + +```shell +kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/master/kubernetes.yml +``` + +##### Via Github Codespaces: + +[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/dockur/windows) + +##### Via a graphical installer: + +[![Download WinBoat](https://github.com/dockur/windows/raw/master/.github/winboat.png)](https://winboat.app) + +## FAQ 💬 + +### How do I use it? + + Very simple! These are the steps: + + - Start the container and connect to [port 8006](http://127.0.0.1:8006/) using your web browser. + + - Sit back and relax while the magic happens, the whole installation will be performed fully automatic. + + - Once you see the desktop, your Windows installation is ready for use. + + Enjoy your brand new machine, and don't forget to star this repo! + +### How do I select the Windows version? + + By default, Windows 11 Pro will be installed. But you can add the `VERSION` environment variable to your compose file, in order to specify an alternative Windows version to be downloaded: + + ```yaml + environment: + VERSION: "11" + ``` + + Select from the values below: + + | **Value** | **Version** | **Size** | + |---|---|---| + | `11` | Windows 11 Pro | 7.2 GB | + | `11l` | Windows 11 LTSC | 4.7 GB | + | `11e` | Windows 11 Enterprise | 6.6 GB | + |||| + | `10` | Windows 10 Pro | 5.7 GB | + | `10l` | Windows 10 LTSC | 4.6 GB | + | `10e` | Windows 10 Enterprise | 5.2 GB | + |||| + | `8e` | Windows 8.1 Enterprise | 3.7 GB | + | `7u` | Windows 7 Ultimate | 3.1 GB | + | `vu` | Windows Vista Ultimate | 3.0 GB | + | `xp` | Windows XP Professional | 0.6 GB | + | `2k` | Windows 2000 Professional | 0.4 GB | + |||| + | `2025` | Windows Server 2025 | 6.7 GB | + | `2022` | Windows Server 2022 | 6.0 GB | + | `2019` | Windows Server 2019 | 5.3 GB | + | `2016` | Windows Server 2016 | 6.5 GB | + | `2012` | Windows Server 2012 | 4.3 GB | + | `2008` | Windows Server 2008 | 3.0 GB | + | `2003` | Windows Server 2003 | 0.6 GB | + +> [!TIP] +> To install ARM64 versions of Windows use [dockur/windows-arm](https://github.com/dockur/windows-arm/). + +### How do I change the storage location? + + To change the storage location, include the following bind mount in your compose file: + + ```yaml + volumes: + - ./windows:/storage + ``` + + Replace the example path `./windows` with the desired storage folder or named volume. + +### How do I change the size of the disk? + + To expand the default size of 64 GB, add the `DISK_SIZE` setting to your compose file and set it to your preferred capacity: + + ```yaml + environment: + DISK_SIZE: "256G" + ``` + +> [!TIP] +> This can also be used to resize the existing disk to a larger capacity without any data loss. However you will need to [manually extend the disk partition](https://learn.microsoft.com/en-us/windows-server/storage/disk-management/extend-a-basic-volume?tabs=disk-management) since the added disk space will appear as unallocated. + +### How do I share files with the host? + + After installation there will be a folder called `Shared` on your desktop, which can be used to exchange files with the host machine. + + To select a folder on the host for this purpose, include the following bind mount in your compose file: + + ```yaml + volumes: + - ./example:/shared + ``` + + Replace the example path `./example` with your desired shared folder, which then will become visible as `Shared`. + +### How do I change the amount of CPU or RAM? + + By default, Windows will be allowed to use 2 CPU cores and 4 GB of RAM. + + If you want to adjust this, you can specify the desired amount using the following environment variables: + + ```yaml + environment: + RAM_SIZE: "8G" + CPU_CORES: "4" + ``` + +### How do I configure the username and password? + + By default, a user called `Docker` is created and its password is `admin`. + + If you want to use different credentials during installation, you can configure them in your compose file: + + ```yaml + environment: + USERNAME: "bill" + PASSWORD: "gates" + ``` + +### How do I select the Windows language? + + By default, the English version of Windows will be downloaded. + + But you can add the `LANGUAGE` environment variable to your compose file, in order to specify an alternative language to be downloaded: + + ```yaml + environment: + LANGUAGE: "French" + ``` + + 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? + + If you want to use a keyboard layout or locale that is not the default for your selected language, you can add `KEYBOARD` and `REGION` variables like this: + + ```yaml + environment: + REGION: "en-US" + KEYBOARD: "en-US" + ``` + +### How do I install a custom image? + + In order to download an unsupported ISO image, specify its URL in the `VERSION` environment variable: + + ```yaml + environment: + VERSION: "https://example.com/win.iso" + ``` + + Alternatively, you can also skip the download and use a local file instead, by binding it in your compose file in this way: + + ```yaml + volumes: + - ./example.iso:/boot.iso + ``` + + Replace the example path `./example.iso` with the filename of your desired ISO file. The value of `VERSION` will be ignored in this case. + +### How do I run a script after installation? + + To run your own script after installation, you can create a file called `install.bat` and place it in a folder together with any additional files it needs (software to be installed for example). + + Then bind that folder in your compose file like this: + + ```yaml + volumes: + - ./example:/oem + ``` + + The example folder `./example` will be copied to `C:\OEM` and the containing `install.bat` will be executed during the last step of the automatic installation. + +### How do I perform a manual installation? + + It's recommended to stick to the automatic installation, as it adjusts various settings to prevent common issues when running Windows inside a virtual environment. + + However, if you insist on performing the installation manually at your own risk, add the following environment variable to your compose file: + + ```yaml + environment: + MANUAL: "Y" + ``` + +### How do I connect using RDP? + + The web-viewer is mainly meant to be used during installation, as its picture quality is low, and it has no audio or clipboard for example. + + So for a better experience you can connect using any Microsoft Remote Desktop client to the IP of the container, using the username `Docker` and password `admin`. + + There is a RDP client for [Android](https://play.google.com/store/apps/details?id=com.microsoft.rdc.androidx) available from the Play Store and one for [iOS](https://apps.apple.com/nl/app/microsoft-remote-desktop/id714464092?l=en-GB) in the Apple Store. For Linux you can use [FreeRDP](https://www.freerdp.com/) and on Windows just type `mstsc` in the search box. + +### How do I assign an individual IP address to the container? + + By default, the container uses bridge networking, which shares the IP address with the host. + + If you want to assign an individual IP address to the container, you can create a macvlan network as follows: + + ```bash + docker network create -d macvlan \ + --subnet=192.168.0.0/24 \ + --gateway=192.168.0.1 \ + --ip-range=192.168.0.100/28 \ + -o parent=eth0 vlan + ``` + + Be sure to modify these values to match your local subnet. + + Once you have created the network, change your compose file to look as follows: + + ```yaml + services: + windows: + container_name: windows + ..<snip>.. + networks: + vlan: + ipv4_address: 192.168.0.100 + + networks: + vlan: + external: true + ``` + + An added benefit of this approach is that you won't have to perform any port mapping anymore, since all ports will be exposed by default. + +> [!IMPORTANT] +> This IP address won't be accessible from the Docker host due to the design of macvlan, which doesn't permit communication between the two. If this is a concern, you need to create a [second macvlan](https://blog.oddbit.com/post/2018-03-12-using-docker-macvlan-networks/#host-access) as a workaround. + +### How can Windows acquire an IP address from my router? + + After configuring the container for [macvlan](#how-do-i-assign-an-individual-ip-address-to-the-container), it is possible for Windows to become part of your home network by requesting an IP from your router, just like a real PC. + + To enable this mode, in which the container and Windows will have separate IP addresses, add the following lines to your compose file: + + ```yaml + environment: + DHCP: "Y" + devices: + - /dev/vhost-net + device_cgroup_rules: + - 'c *:* rwm' + ``` + +### How do I add multiple disks? + + To create additional disks, modify your compose file like this: + + ```yaml + environment: + DISK2_SIZE: "32G" + DISK3_SIZE: "64G" + volumes: + - ./example2:/storage2 + - ./example3:/storage3 + ``` + +### How do I pass-through a disk? + + It is possible to pass-through disk devices or partitions directly by adding them to your compose file in this way: + + ```yaml + devices: + - /dev/sdb:/disk1 + - /dev/sdc1:/disk2 + ``` + + Use `/disk1` if you want it to become your main drive (which will be formatted during installation), and use `/disk2` and higher to add them as secondary drives (which will stay untouched). + +### How do I pass-through a USB device? + + To pass-through a USB device, first lookup its vendor and product id via the `lsusb` command, then add them to your compose file like this: + + ```yaml + environment: + ARGUMENTS: "-device usb-host,vendorid=0x1234,productid=0x1234" + devices: + - /dev/bus/usb + ``` + + If the device is a USB disk drive, please wait until after the installation is fully completed before connecting it. Otherwise the installation may fail, as the order of the disks can get rearranged. + +### How do I verify if my system supports KVM? + + First check if your software is compatible using this chart: + + | **Product** | **Linux** | **Win11** | **Win10** | **macOS** | + |---|---|---|---|---| + | Docker CLI | ✅ | ✅ | ❌ | ❌ | + | Docker Desktop | ❌ | ✅ | ❌ | ❌ | + | Podman CLI | ✅ | ✅ | ❌ | ❌ | + | Podman Desktop | ✅ | ✅ | ❌ | ❌ | + + After that you can run the following commands in Linux to check your system: + + ```bash + sudo apt install cpu-checker + sudo kvm-ok + ``` + + If you receive an error from `kvm-ok` indicating that KVM cannot be used, please check whether: + + - the virtualization extensions (`Intel VT-x` or `AMD SVM`) are enabled in your BIOS. + + - you enabled "nested virtualization" if you are running the container inside a virtual machine. + + - you are not using a cloud provider, as most of them do not allow nested virtualization for their VPS's. + + If you did not receive any error from `kvm-ok` but the container still complains about a missing KVM device, it could help to add `privileged: true` to your compose file (or `sudo` to your `docker` command) to rule out any permission issue. + +### How do I run macOS in a container? + + You can use [dockur/macos](https://github.com/dockur/macos) for that. It shares many of the same features, except for the automatic installation. + +### How do I run a Linux desktop in a container? + + You can use [qemus/qemu](https://github.com/qemus/qemu) in that case. + +### Is this project legal? + + Yes, this project contains only open-source code and does not distribute any copyrighted material. Any product keys found in the code are just generic placeholders provided by Microsoft for trial purposes. So under all applicable laws, this project will be considered legal. + +## Disclaimer ⚖️ + +*The product names, logos, brands, and other trademarks referred to within this project are the property of their respective trademark holders. This project is not affiliated, sponsored, or endorsed by Microsoft Corporation.* + +[build_url]: https://github.com/dockur/windows/ +[hub_url]: https://hub.docker.com/r/dockurr/windows/ +[tag_url]: https://hub.docker.com/r/dockurr/windows/tags +[pkg_url]: https://github.com/dockur/windows/pkgs/container/windows + +[Build]: https://github.com/dockur/windows/actions/workflows/build.yml/badge.svg +[Size]: https://img.shields.io/docker/image-size/dockurr/windows/latest?color=066da5&label=size +[Pulls]: https://img.shields.io/docker/pulls/dockurr/windows.svg?style=flat&label=pulls&logo=docker +[Version]: https://img.shields.io/docker/v/dockurr/windows/latest?arch=amd64&sort=semver&color=066da5 +[Package]: https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fipitio.github.io%2Fbackage%2Fdockur%2Fwindows%2Fwindows.json&query=%24.downloads&logo=github&style=flat&color=066da5&label=pulls diff --git a/apps/rego-tunnel/build/scripts/README.md b/apps/rego-tunnel/build/rego/README.md similarity index 100% rename from apps/rego-tunnel/build/scripts/README.md rename to apps/rego-tunnel/build/rego/README.md diff --git a/apps/rego-tunnel/build/id_ed25519-lenovo b/apps/rego-tunnel/build/rego/id_ed25519-lenovo similarity index 100% rename from apps/rego-tunnel/build/id_ed25519-lenovo rename to apps/rego-tunnel/build/rego/id_ed25519-lenovo diff --git a/apps/rego-tunnel/build/scripts/install-nodejs.ps1 b/apps/rego-tunnel/build/rego/install-nodejs.ps1 similarity index 100% rename from apps/rego-tunnel/build/scripts/install-nodejs.ps1 rename to apps/rego-tunnel/build/rego/install-nodejs.ps1 diff --git a/apps/rego-tunnel/build/scripts/setup-autologin-sshd.ps1 b/apps/rego-tunnel/build/rego/setup-autologin-sshd.ps1 similarity index 100% rename from apps/rego-tunnel/build/scripts/setup-autologin-sshd.ps1 rename to apps/rego-tunnel/build/rego/setup-autologin-sshd.ps1 diff --git a/apps/rego-tunnel/build/scripts/setup-ssh-keys.ps1 b/apps/rego-tunnel/build/rego/setup-ssh-keys.ps1 similarity index 100% rename from apps/rego-tunnel/build/scripts/setup-ssh-keys.ps1 rename to apps/rego-tunnel/build/rego/setup-ssh-keys.ps1 diff --git a/apps/rego-tunnel/build/scripts/socks5.js b/apps/rego-tunnel/build/rego/socks5.js similarity index 100% rename from apps/rego-tunnel/build/scripts/socks5.js rename to apps/rego-tunnel/build/rego/socks5.js diff --git a/apps/rego-tunnel/build/scripts/vpn-login.js b/apps/rego-tunnel/build/rego/vpn-login.js similarity index 100% rename from apps/rego-tunnel/build/scripts/vpn-login.js rename to apps/rego-tunnel/build/rego/vpn-login.js diff --git a/apps/rego-tunnel/build/scripts/vpn.bat b/apps/rego-tunnel/build/rego/vpn.bat similarity index 100% rename from apps/rego-tunnel/build/scripts/vpn.bat rename to apps/rego-tunnel/build/rego/vpn.bat diff --git a/apps/rego-tunnel/build/src/define.sh b/apps/rego-tunnel/build/src/define.sh new file mode 100644 index 0000000..d8050cd --- /dev/null +++ b/apps/rego-tunnel/build/src/define.sh @@ -0,0 +1,1944 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +: "${KEY:=""}" +: "${WIDTH:=""}" +: "${HEIGHT:=""}" +: "${VERIFY:=""}" +: "${REGION:=""}" +: "${EDITION:=""}" +: "${MANUAL:=""}" +: "${REMOVE:=""}" +: "${VERSION:=""}" +: "${DETECTED:=""}" +: "${KEYBOARD:=""}" +: "${LANGUAGE:=""}" +: "${USERNAME:=""}" +: "${PASSWORD:=""}" + +MIRRORS=4 + +parseVersion() { + + if [[ "${VERSION}" == \"*\" || "${VERSION}" == \'*\' ]]; then + VERSION="${VERSION:1:-1}" + fi + + VERSION=$(expr "$VERSION" : "^\ *\(.*[^ ]\)\ *$") + [ -z "$VERSION" ] && VERSION="win11" + + case "${VERSION,,}" in + "11" | "11p" | "win11" | "pro11" | "win11p" | "windows11" | "windows 11" ) + VERSION="win11x64" + ;; + "11e" | "win11e" | "windows11e" | "windows 11e" ) + VERSION="win11x64-enterprise-eval" + ;; + "11i" | "11iot" | "iot11" | "win11i" | "win11-iot" | "win11x64-iot" ) + VERSION="win11x64-enterprise-iot-eval" + [ -z "$DETECTED" ] && DETECTED="win11x64-iot" + ;; + "11l" | "11ltsc" | "ltsc11" | "win11l" | "win11-ltsc" | "win11x64-ltsc" ) + VERSION="win11x64-enterprise-ltsc-eval" + [ -z "$DETECTED" ] && DETECTED="win11x64-ltsc" + ;; + "10" | "10p" | "win10" | "pro10" | "win10p" | "windows10" | "windows 10" ) + VERSION="win10x64" + ;; + "10e" | "win10e" | "windows10e" | "windows 10e" ) + VERSION="win10x64-enterprise-eval" + ;; + "10i" | "10iot" | "iot10" | "win10i" | "win10-iot" | "win10x64-iot" ) + VERSION="win10x64-enterprise-iot-eval" + [ -z "$DETECTED" ] && DETECTED="win10x64-iot" + ;; + "10l" | "10ltsc" | "ltsc10" | "win10l" | "win10-ltsc" | "win10x64-ltsc" ) + VERSION="win10x64-enterprise-ltsc-eval" + [ -z "$DETECTED" ] && DETECTED="win10x64-ltsc" + ;; + "8" | "8p" | "81" | "81p" | "pro8" | "8.1" | "win8" | "win8p" | "win81" | "win81p" | "windows 8" ) + VERSION="win81x64" + ;; + "8e" | "81e" | "8.1e" | "win8e" | "win81e" | "windows 8e" ) + VERSION="win81x64-enterprise-eval" + ;; + "7" | "win7" | "windows7" | "windows 7" ) + VERSION="win7x64" + [ -z "$DETECTED" ] && DETECTED="win7x64-ultimate" + ;; + "7u" | "win7u" | "windows7u" | "windows 7u" ) + VERSION="win7x64-ultimate" + ;; + "7e" | "win7e" | "windows7e" | "windows 7e" ) + VERSION="win7x64-enterprise" + ;; + "7x86" | "win7x86" | "win732" | "windows7x86" ) + VERSION="win7x86" + [ -z "$DETECTED" ] && DETECTED="win7x86-ultimate" + ;; + "7ux86" | "7u32" | "win7x86-ultimate" ) + VERSION="win7x86-ultimate" + ;; + "7ex86" | "7e32" | "win7x86-enterprise" ) + VERSION="win7x86-enterprise" + ;; + "vista" | "vs" | "6" | "winvista" | "windowsvista" | "windows vista" ) + VERSION="winvistax64" + [ -z "$DETECTED" ] && DETECTED="winvistax64-ultimate" + ;; + "vistu" | "vu" | "6u" | "winvistu" ) + VERSION="winvistax64-ultimate" + ;; + "viste" | "ve" | "6e" | "winviste" ) + VERSION="winvistax64-enterprise" + ;; + "vistax86" | "vista32" | "6x86" | "winvistax86" | "windowsvistax86" ) + VERSION="winvistax86" + [ -z "$DETECTED" ] && DETECTED="winvistax86-ultimate" + ;; + "vux86" | "vu32" | "winvistax86-ultimate" ) + VERSION="winvistax86-ultimate" + ;; + "vex86" | "ve32" | "winvistax86-enterprise" ) + VERSION="winvistax86-enterprise" + ;; + "xp" | "xp32" | "xpx86" | "5" | "5x86" | "winxp" | "winxp86" | "windowsxp" | "windows xp" ) + VERSION="winxpx86" + ;; + "xp64" | "xpx64" | "5x64" | "winxp64" | "winxpx64" | "windowsxp64" | "windowsxpx64" ) + VERSION="winxpx64" + ;; + "2k" | "2000" | "win2k" | "win2000" | "windows2k" | "windows2000" ) + VERSION="win2kx86" + ;; + "25" | "2025" | "win25" | "win2025" | "windows2025" | "windows 2025" ) + VERSION="win2025-eval" + ;; + "22" | "2022" | "win22" | "win2022" | "windows2022" | "windows 2022" ) + VERSION="win2022-eval" + ;; + "19" | "2019" | "win19" | "win2019" | "windows2019" | "windows 2019" ) + VERSION="win2019-eval" + ;; + "16" | "2016" | "win16" | "win2016" | "windows2016" | "windows 2016" ) + VERSION="win2016-eval" + ;; + "hv" | "hyperv" | "hyper v" | "hyper-v" | "19hv" | "2019hv" | "win2019hv" ) + VERSION="win2019-hv" + ;; + "2012" | "2012r2" | "win2012" | "win2012r2" | "windows2012" | "windows 2012" ) + VERSION="win2012r2-eval" + ;; + "2008" | "2008r2" | "win2008" | "win2008r2" | "windows2008" | "windows 2008" ) + VERSION="win2008r2" + ;; + "2003" | "2003r2" | "win2003" | "win2003r2" | "windows2003" | "windows 2003" ) + VERSION="win2003r2" + ;; + "nano11" | "nano 11" ) + VERSION="nano11" + [ -z "$DETECTED" ] && DETECTED="win11x64" + ;; + "core11" | "core 11" ) + VERSION="core11" + [ -z "$DETECTED" ] && DETECTED="win11x64" + ;; + "tiny11" | "tiny 11" ) + VERSION="tiny11" + [ -z "$DETECTED" ] && DETECTED="win11x64" + ;; + "tiny10" | "tiny 10" ) + VERSION="tiny10" + [ -z "$DETECTED" ] && DETECTED="win10x64-ltsc" + ;; + esac + + return 0 +} + +getLanguage() { + + local id="$1" + local ret="$2" + local lang="" + local desc="" + local short="" + local culture="" + + case "${id,,}" in + "ar" | "ar-"* ) + short="ar" + lang="Arabic" + desc="$lang" + culture="ar-SA" ;; + "bg" | "bg-"* ) + short="bg" + lang="Bulgarian" + desc="$lang" + culture="bg-BG" ;; + "cs" | "cs-"* | "cz" | "cz-"* ) + short="cs" + lang="Czech" + desc="$lang" + culture="cs-CZ" ;; + "da" | "da-"* | "dk" | "dk-"* ) + short="da" + lang="Danish" + desc="$lang" + culture="da-DK" ;; + "de" | "de-"* ) + short="de" + lang="German" + desc="$lang" + culture="de-DE" ;; + "el" | "el-"* | "gr" | "gr-"* ) + short="el" + lang="Greek" + desc="$lang" + culture="el-GR" ;; + "gb" | "en-gb" ) + short="en-gb" + lang="English International" + desc="English" + culture="en-GB" ;; + "en" | "en-"* ) + short="en" + lang="English" + desc="English" + culture="en-US" ;; + "mx" | "es-mx" ) + short="mx" + lang="Spanish (Mexico)" + desc="Spanish" + culture="es-MX" ;; + "es" | "es-"* ) + short="es" + lang="Spanish" + desc="$lang" + culture="es-ES" ;; + "et" | "et-"* ) + short="et" + lang="Estonian" + desc="$lang" + culture="et-EE" ;; + "fi" | "fi-"* ) + short="fi" + lang="Finnish" + desc="$lang" + culture="fi-FI" ;; + "ca" | "fr-ca" ) + short="ca" + lang="French Canadian" + desc="French" + culture="fr-CA" ;; + "fr" | "fr-"* ) + short="fr" + lang="French" + desc="$lang" + culture="fr-FR" ;; + "he" | "he-"* | "il" | "il-"* ) + short="he" + lang="Hebrew" + desc="$lang" + culture="he-IL" ;; + "hr" | "hr-"* | "cr" | "cr-"* ) + short="hr" + lang="Croatian" + desc="$lang" + culture="hr-HR" ;; + "hu" | "hu-"* ) + short="hu" + lang="Hungarian" + desc="$lang" + culture="hu-HU" ;; + "it" | "it-"* ) + short="it" + lang="Italian" + desc="$lang" + culture="it-IT" ;; + "ja" | "ja-"* | "jp" | "jp-"* ) + short="ja" + lang="Japanese" + desc="$lang" + culture="ja-JP" ;; + "ko" | "ko-"* | "kr" | "kr-"* ) + short="ko" + lang="Korean" + desc="$lang" + culture="ko-KR" ;; + "lt" | "lt-"* ) + short="lt" + lang="Lithuanian" + desc="$lang" + culture="lt-LT" ;; + "lv" | "lv-"* ) + short="lv" + lang="Latvian" + desc="$lang" + culture="lv-LV" ;; + "nb" | "nb-"* |"nn" | "nn-"* | "no" | "no-"* ) + short="no" + lang="Norwegian" + desc="$lang" + culture="nb-NO" ;; + "nl" | "nl-"* ) + short="nl" + lang="Dutch" + desc="$lang" + culture="nl-NL" ;; + "pl" | "pl-"* ) + short="pl" + lang="Polish" + desc="$lang" + culture="pl-PL" ;; + "br" | "pt-br" ) + short="pt" + lang="Brazilian Portuguese" + desc="Portuguese" + culture="pt-BR" ;; + "pt" | "pt-"* ) + short="pp" + lang="Portuguese" + desc="$lang" + culture="pt-BR" ;; + "ro" | "ro-"* ) + short="ro" + lang="Romanian" + desc="$lang" + culture="ro-RO" ;; + "ru" | "ru-"* ) + short="ru" + lang="Russian" + desc="$lang" + culture="ru-RU" ;; + "sk" | "sk-"* ) + short="sk" + lang="Slovak" + desc="$lang" + culture="sk-SK" ;; + "sl" | "sl-"* | "si" | "si-"* ) + short="sl" + lang="Slovenian" + desc="$lang" + culture="sl-SI" ;; + "sr" | "sr-"* ) + short="sr" + lang="Serbian Latin" + desc="Serbian" + culture="sr-Latn-RS" ;; + "sv" | "sv-"* | "se" | "se-"* ) + short="sv" + lang="Swedish" + desc="$lang" + culture="sv-SE" ;; + "th" | "th-"* ) + short="th" + lang="Thai" + desc="$lang" + culture="th-TH" ;; + "tr" | "tr-"* ) + short="tr" + lang="Turkish" + desc="$lang" + culture="tr-TR" ;; + "ua" | "ua-"* | "uk" | "uk-"* ) + short="uk" + lang="Ukrainian" + desc="$lang" + culture="uk-UA" ;; + "hk" | "zh-hk" | "cn-hk" ) + short="hk" + lang="Chinese (Traditional)" + desc="Chinese HK" + culture="zh-TW" ;; + "tw" | "zh-tw" | "cn-tw" ) + short="tw" + lang="Chinese (Traditional)" + desc="Chinese TW" + culture="zh-TW" ;; + "zh" | "zh-"* | "cn" | "cn-"* ) + short="cn" + lang="Chinese (Simplified)" + desc="Chinese" + culture="zh-CN" ;; + esac + + case "${ret,,}" in + "desc" ) echo "$desc" ;; + "name" ) echo "$lang" ;; + "code" ) echo "$short" ;; + "culture" ) echo "$culture" ;; + *) echo "$desc";; + esac + + return 0 +} + +parseLanguage() { + + REGION="${REGION//_/-/}" + KEYBOARD="${KEYBOARD//_/-/}" + LANGUAGE="${LANGUAGE//_/-/}" + + [ -z "$LANGUAGE" ] && LANGUAGE="en" + + case "${LANGUAGE,,}" in + "arabic" | "arab" ) LANGUAGE="ar" ;; + "bulgarian" | "bu" ) LANGUAGE="bg" ;; + "chinese" | "cn" ) LANGUAGE="zh" ;; + "croatian" | "cr" | "hrvatski" ) LANGUAGE="hr" ;; + "czech" | "cz" | "cesky" ) LANGUAGE="cs" ;; + "danish" | "dk" | "danske" ) LANGUAGE="da" ;; + "dutch" | "nederlands" ) LANGUAGE="nl" ;; + "english" | "gb" | "british" ) LANGUAGE="en" ;; + "estonian" | "eesti" ) LANGUAGE="et" ;; + "finnish" | "suomi" ) LANGUAGE="fi" ;; + "french" | "français" | "francais" ) LANGUAGE="fr" ;; + "german" | "deutsch" ) LANGUAGE="de" ;; + "greek" | "gr" ) LANGUAGE="el" ;; + "hebrew" | "il" ) LANGUAGE="he" ;; + "hungarian" | "magyar" ) LANGUAGE="hu" ;; + "italian" | "italiano" ) LANGUAGE="it" ;; + "japanese" | "jp" ) LANGUAGE="ja" ;; + "korean" | "kr" ) LANGUAGE="ko" ;; + "latvian" | "latvijas" ) LANGUAGE="lv" ;; + "lithuanian" | "lietuvos" ) LANGUAGE="lt" ;; + "norwegian" | "no" | "nb" | "norsk" ) LANGUAGE="nn" ;; + "polish" | "polski" ) LANGUAGE="pl" ;; + "portuguese" | "pt" | "br" ) LANGUAGE="pt-br" ;; + "português" | "portugues" ) LANGUAGE="pt-br" ;; + "romanian" | "română" | "romana" ) LANGUAGE="ro" ;; + "russian" | "ruski" ) LANGUAGE="ru" ;; + "serbian" | "serbian latin" ) LANGUAGE="sr" ;; + "slovak" | "slovenský" | "slovensky" ) LANGUAGE="sk" ;; + "slovenian" | "si" | "slovenski" ) LANGUAGE="sl" ;; + "spanish" | "espanol" | "español" ) LANGUAGE="es" ;; + "swedish" | "se" | "svenska" ) LANGUAGE="sv" ;; + "turkish" | "türk" | "turk" ) LANGUAGE="tr" ;; + "thai" ) LANGUAGE="th" ;; + "ukrainian" | "ua" ) LANGUAGE="uk" ;; + esac + + local culture + culture=$(getLanguage "$LANGUAGE" "culture") + [ -n "$culture" ] && return 0 + + error "Invalid LANGUAGE specified, value \"$LANGUAGE\" is not recognized!" + return 1 +} + +printVersion() { + + local id="$1" + local desc="$2" + + case "${id,,}" in + "tiny11"* ) desc="Tiny 11" ;; + "tiny10"* ) desc="Tiny 10" ;; + "core11"* ) desc="Core 11" ;; + "nano11"* ) desc="Nano 11" ;; + "win7"* ) desc="Windows 7" ;; + "win8"* ) desc="Windows 8" ;; + "win10"* ) desc="Windows 10" ;; + "win11"* ) desc="Windows 11" ;; + "winxp"* ) desc="Windows XP" ;; + "win9x"* ) desc="Windows ME" ;; + "win98"* ) desc="Windows 98" ;; + "win95"* ) desc="Windows 95" ;; + "win2k"* ) desc="Windows 2000" ;; + "winvista"* ) desc="Windows Vista" ;; + "win2019-hv"* ) desc="Hyper-V Server" ;; + "win2003"* ) desc="Windows Server 2003" ;; + "win2008"* ) desc="Windows Server 2008" ;; + "win2012"* ) desc="Windows Server 2012" ;; + "win2016"* ) desc="Windows Server 2016" ;; + "win2019"* ) desc="Windows Server 2019" ;; + "win2022"* ) desc="Windows Server 2022" ;; + "win2025"* ) desc="Windows Server 2025" ;; + esac + + if [ -z "$desc" ]; then + desc="Windows" + [[ "${PLATFORM,,}" != "x64" ]] && desc+=" for ${PLATFORM}" + fi + + echo "$desc" + return 0 +} + +printEdition() { + + local id="$1" + local desc="$2" + local result="" + local edition="" + + result=$(printVersion "$id" "x") + [[ "$result" == "x" ]] && echo "$desc" && return 0 + + case "${id,,}" in + *"-home" ) + edition="Home" + ;; + *"-starter" ) + edition="Starter" + ;; + *"-ultimate" ) + edition="Ultimate" + ;; + *"-enterprise" ) + edition="Enterprise" + ;; + *"-education" ) + edition="Education" + ;; + *"-hv" ) + edition="2019" + ;; + *"-iot" | *"-iot-eval" ) + edition="LTSC" + ;; + *"-ltsc" | *"-ltsc-eval" ) + edition="LTSC" + ;; + *"-enterprise-eval" ) + edition="Enterprise (Evaluation)" + ;; + "win7"* ) + edition="Professional" + ;; + "win8"* | "win10"* | "win11"* ) + edition="Pro" + ;; + "winxp"* ) + edition="Professional" + ;; + "winvista"* ) + edition="Business" + ;; + "win2025"* | "win2022"* | "win2019"* | "win2016"* | "win2012"* | "win2008"* | "win2003"* ) + case "${EDITION^^}" in + *"DATACENTER"* ) edition="Datacenter" ;; + "CORE" | "STANDARDCORE" ) edition="Core" ;; + * ) edition="Standard" ;; + esac + ;; + esac + + [ -n "$edition" ] && result+=" $edition" + + echo "$result" + return 0 +} + +fromFile() { + + local id="" + local desc="$1" + local file="${1,,}" + local arch="${PLATFORM,,}" + + file="${file//-/_}" + file="${file// /_}" + + case "$file" in + *"_x64_"* | *"_x64."*) + arch="x64" + ;; + *"_x86_"* | *"_x86."*) + arch="x86" + ;; + *"_arm64_"* | *"_arm64."*) + arch="arm64" + ;; + esac + + local add="" + [[ "$arch" != "x64" ]] && add="$arch" + + case "$file" in + "win7"* | "win_7"* | *"windows7"* | *"windows_7"* ) + id="win7${arch}" + ;; + "win8"* | "win_8"* | *"windows8"* | *"windows_8"* ) + id="win81${arch}" + ;; + "win10"*| "win_10"* | *"windows10"* | *"windows_10"* ) + id="win10${arch}" + ;; + "win11"* | "win_11"* | *"windows11"* | *"windows_11"* ) + id="win11${arch}" + ;; + *"winxp"* | *"win_xp"* | *"windowsxp"* | *"windows_xp"* ) + id="winxpx86" + ;; + *"winvista"* | *"win_vista"* | *"windowsvista"* | *"windows_vista"* ) + id="winvista${arch}" + ;; + "nano11"* | "nano_11"* ) + id="nano11" + ;; + "tiny11core"* | "tiny11_core"* | "tiny_11_core"* ) + id="core11" + ;; + "tiny11"* | "tiny_11"* ) + id="tiny11" + ;; + "tiny10"* | "tiny_10"* ) + id="tiny10" + ;; + *"_serverhypercore_"* ) + id="win2019${add}-hv" + ;; + *"server2025"* | *"server_2025"* ) + id="win2025${add}" + ;; + *"server2022"* | *"server_2022"* ) + id="win2022${add}" + ;; + *"server2019"* | *"server_2019"* ) + id="win2019${add}" + ;; + *"server2016"* | *"server_2016"* ) + id="win2016${add}" + ;; + *"server2012"* | *"server_2012"* ) + id="win2012r2${add}" + ;; + *"server2008"* | *"server_2008"* ) + id="win2008r2${add}" + ;; + *"server2003"* | *"server_2003"* ) + id="win2003r2${add}" + ;; + esac + + if [ -n "$id" ]; then + desc=$(printVersion "$id" "$desc") + fi + + echo "$desc" + return 0 +} + +fromName() { + + local id="" + local name="$1" + local arch="$2" + + local add="" + [[ "$arch" != "x64" ]] && add="$arch" + + case "${name,,}" in + *"windows 7"* ) id="win7${arch}" ;; + *"windows 8"* ) id="win81${arch}" ;; + *"windows 10"* ) id="win10${arch}" ;; + *"optimum 10"* ) id="win10${arch}" ;; + *"windows 11"* ) id="win11${arch}" ;; + *"optimum 11"* ) id="win11${arch}" ;; + *"windows vista"* ) id="winvista${arch}" ;; + *"server 2025"* ) id="win2025${add}" ;; + *"server 2022"* ) id="win2022${add}" ;; + *"server 2019"* ) id="win2019${add}" ;; + *"server 2016"* ) id="win2016${add}" ;; + *"server 2012"* ) id="win2012r2${add}" ;; + *"server 2008"* ) id="win2008r2${add}" ;; + *"server 2003"* ) id="win2003r2${add}" ;; + *"hyper-v server"* ) id="win2019${add}" ;; + esac + + echo "$id" + return 0 +} + +getVersion() { + + local id + local name="$1" + local arch="$2" + + id=$(fromName "$name" "$arch") + + case "${id,,}" in + "win7"* | "winvista"* ) + case "${name,,}" in + *" home"* ) id="$id-home" ;; + *" starter"* ) id="$id-starter" ;; + *" ultimate"* ) id="$id-ultimate" ;; + *" enterprise evaluation"* ) id="$id-enterprise-eval" ;; + *" enterprise"* ) id="$id-enterprise" ;; + esac + ;; + "win8"* ) + case "${name,,}" in + *" enterprise evaluation"* ) id="$id-enterprise-eval" ;; + *" enterprise"* ) id="$id-enterprise" ;; + esac + ;; + "win10"* | "win11"* ) + case "${name,,}" in + *" iot"* ) id="$id-iot" ;; + *" ltsc"* ) id="$id-ltsc" ;; + *" home"* ) id="$id-home" ;; + *" education"* ) id="$id-education" ;; + *" enterprise evaluation"* ) id="$id-enterprise-eval" ;; + *" enterprise"* ) id="$id-enterprise" ;; + esac + ;; + "win2025"* | "win2022"* | "win2019"* | "win2016"* | "win2012"* | "win2008"* | "win2003"* ) + case "${name,,}" in + *" evaluation"* ) id="$id-eval" ;; + *"hyper-v server"* ) id="$id-hv" ;; + esac + ;; + esac + + echo "$id" + return 0 +} + +switchEdition() { + + local id="$1" + + if [[ "${id,,}" == *"-eval" ]]; then + [ -z "$DETECTED" ] && DETECTED="${id::-5}" + fi + + return 0 +} + +getMido() { + + local id="$1" + local lang="$2" + local ret="$3" + local url="" + local sum="" + local size="" + + [[ "${lang,,}" != "en" && "${lang,,}" != "en-us" ]] && return 0 + + case "${id,,}" in + "win11x64" ) + size=7736125440 + sum="d141f6030fed50f75e2b03e1eb2e53646c4b21e5386047cb860af5223f102a32" + url="https://software-static.download.prss.microsoft.com/dbazure/888969d5-f34g-4e03-ac9d-1f9786c66749/26200.6584.250915-1905.25h2_ge_release_svc_refresh_CLIENT_CONSUMER_x64FRE_en-us.iso" + ;; + "win11x64-enterprise-eval" ) + size=7092807680 + sum="a61adeab895ef5a4db436e0a7011c92a2ff17bb0357f58b13bbc4062e535e7b9" + url="https://software-static.download.prss.microsoft.com/dbazure/888969d5-f34g-4e03-ac9d-1f9786c66749/26200.6584.250915-1905.25h2_ge_release_svc_refresh_CLIENTENTERPRISEEVAL_OEMRET_x64FRE_en-us.iso" + ;; + "win11x64-enterprise-iot-eval" | "win11x64-enterprise-ltsc-eval" ) + size=5060020224 + sum="2cee70bd183df42b92a2e0da08cc2bb7a2a9ce3a3841955a012c0f77aeb3cb29" + url="https://software-static.download.prss.microsoft.com/dbazure/888969d5-f34g-4e03-ac9d-1f9786c66749/26100.1.240331-1435.ge_release_CLIENT_IOT_LTSC_EVAL_x64FRE_en-us.iso" + ;; + "win10x64" ) + size=6140975104 + sum="a6f470ca6d331eb353b815c043e327a347f594f37ff525f17764738fe812852e" + ;; + "win10x64-enterprise-eval" ) + size=5550497792 + sum="ef7312733a9f5d7d51cfa04ac497671995674ca5e1058d5164d6028f0938d668" + url="https://software-static.download.prss.microsoft.com/dbazure/988969d5-f34g-4e03-ac9d-1f9786c66750/19045.2006.220908-0225.22h2_release_svc_refresh_CLIENTENTERPRISEEVAL_OEMRET_x64FRE_en-us.iso" + ;; + "win10x64-enterprise-ltsc-eval" ) + size=4898582528 + sum="e4ab2e3535be5748252a8d5d57539a6e59be8d6726345ee10e7afd2cb89fefb5" + url="https://software-download.microsoft.com/download/pr/19044.1288.211006-0501.21h2_release_svc_refresh_CLIENT_LTSC_EVAL_x64FRE_en-us.iso" + ;; + "win81x64-enterprise-eval" ) + size=3961473024 + sum="2dedd44c45646c74efc5a028f65336027e14a56f76686a4631cf94ffe37c72f2" + url="https://download.microsoft.com/download/B/9/9/B999286E-0A47-406D-8B3D-5B5AD7373A4A/9600.17050.WINBLUE_REFRESH.140317-1640_X64FRE_ENTERPRISE_EVAL_EN-US-IR3_CENA_X64FREE_EN-US_DV9.ISO" + ;; + "win2025-eval" ) + size=6014152704 + sum="d0ef4502e350e3c6c53c15b1b3020d38a5ded011bf04998e950720ac8579b23d" + url="https://software-static.download.prss.microsoft.com/dbazure/888969d5-f34g-4e03-ac9d-1f9786c66749/26100.1742.240906-0331.ge_release_svc_refresh_SERVER_EVAL_x64FRE_en-us.iso" + ;; + "win2022-eval" ) + size=5044094976 + sum="3e4fa6d8507b554856fc9ca6079cc402df11a8b79344871669f0251535255325" + url="https://software-static.download.prss.microsoft.com/sg/download/888969d5-f34g-4e03-ac9d-1f9786c66749/SERVER_EVAL_x64FRE_en-us.iso" + ;; + "win2019-eval" ) + size=5652088832 + sum="6dae072e7f78f4ccab74a45341de0d6e2d45c39be25f1f5920a2ab4f51d7bcbb" + url="https://software-download.microsoft.com/download/pr/17763.737.190906-2324.rs5_release_svc_refresh_SERVER_EVAL_x64FRE_en-us_1.iso" + ;; + "win2019-hv" ) + size=3072712704 + sum="48e9b944518e5bbc80876a9a7ff99716f386f404f4be48dca47e16a66ae7872c" + url="https://software-download.microsoft.com/download/pr/17763.557.190612-0019.rs5_release_svc_refresh_SERVERHYPERCORE_OEM_x64FRE_en-us.ISO" + ;; + "win2016-eval" ) + size=6972221440 + sum="1ce702a578a3cb1ac3d14873980838590f06d5b7101c5daaccbac9d73f1fb50f" + url="https://software-download.microsoft.com/download/pr/Windows_Server_2016_Datacenter_EVAL_en-us_14393_refresh.ISO" + ;; + "win2012r2-eval" ) + size=4542291968 + sum="6612b5b1f53e845aacdf96e974bb119a3d9b4dcb5b82e65804ab7e534dc7b4d5" + url="https://download.microsoft.com/download/6/2/A/62A76ABB-9990-4EFC-A4FE-C7D698DAEB96/9600.17050.WINBLUE_REFRESH.140317-1640_X64FRE_SERVER_EVAL_EN-US-IR3_SSS_X64FREE_EN-US_DV9.ISO" + ;; + "win2008r2" ) + size=3166840832 + sum="30832ad76ccfa4ce48ccb936edefe02079d42fb1da32201bf9e3a880c8ed6312" + url="https://download.microsoft.com/download/4/1/D/41DEA7E0-B30D-4012-A1E3-F24DC03BA1BB/7601.17514.101119-1850_x64fre_server_eval_en-us-GRMSXEVAL_EN_DVD.iso" + ;; + esac + + case "${ret,,}" in + "sum" ) echo "$sum" ;; + "size" ) echo "$size" ;; + *) echo "$url";; + esac + + return 0 +} + +getLink1() { + + # 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://dl.bobpony.com/windows" + + [[ "${lang,,}" != "en" && "${lang,,}" != "en-us" ]] && return 0 + + case "${id,,}" in + "win11x64" | "win11x64-enterprise" | "win11x64-enterprise-eval" ) + size=5332989952 + sum="aa1ad990f930d907b7a34ea897abbb0dfbe47552ca8acc146f92e40381839e05" + url="11/en-us_windows_11_24h2_x64.iso" + ;; + "win11x64-iot" | "win11x64-enterprise-iot" | "win11x64-enterprise-iot-eval" ) + size=5144817664 + sum="4f59662a96fc1da48c1b415d6c369d08af55ddd64e8f1c84e0166d9e50405d7a" + url="11/X23-81951_26100.1742.240906-0331.ge_release_svc_refresh_CLIENT_ENTERPRISES_OEM_x64FRE_en-us.iso" + ;; + "win11x64-ltsc" | "win11x64-enterprise-ltsc" | "win11x64-enterprise-ltsc-eval" ) + size=5144817664 + sum="4f59662a96fc1da48c1b415d6c369d08af55ddd64e8f1c84e0166d9e50405d7a" + url="11/X23-81951_26100.1742.240906-0331.ge_release_svc_refresh_CLIENT_ENTERPRISES_OEM_x64FRE_en-us.iso" + ;; + "win10x64" | "win10x64-enterprise" | "win10x64-enterprise-eval" ) + size=5535252480 + sum="557871965263d0fd0a1ea50b5d0d0d7cb04a279148ca905c1c675c9bc0d5486c" + url="10/en-us_windows_10_22h2_x64.iso" + ;; + "win10x64-iot" | "win10x64-enterprise-iot" | "win10x64-enterprise-iot-eval" ) + size=4851668992 + sum="a0334f31ea7a3e6932b9ad7206608248f0bd40698bfb8fc65f14fc5e4976c160" + url="10/en-us_windows_10_iot_enterprise_ltsc_2021_x64_dvd_257ad90f.iso" + ;; + "win10x64-ltsc" | "win10x64-enterprise-ltsc" | "win10x64-enterprise-ltsc-eval" ) + size=4899461120 + sum="c90a6df8997bf49e56b9673982f3e80745058723a707aef8f22998ae6479597d" + url="10/en-us_windows_10_enterprise_ltsc_2021_x64_dvd_d289cf96.iso" + ;; + "win81x64" ) + size=4320526336 + sum="d8333cf427eb3318ff6ab755eb1dd9d433f0e2ae43745312c1cd23e83ca1ce51" + url="8.x/8.1/en_windows_8.1_with_update_x64_dvd_6051480.iso" + ;; + "win81x64-enterprise" | "win81x64-enterprise-eval" ) + size=4139163648 + sum="c3c604c03677504e8905090a8ce5bb1dde76b6fd58e10f32e3a25bef21b2abe1" + url="8.x/8.1/en_windows_8.1_enterprise_with_update_x64_dvd_6054382.iso" + ;; + "win2025" | "win2025-eval" ) + size=7571058688 + sum="d273d0a85565ffbc06a3d46313f619103e2830a3373306ddbb9a08b8824f509d" + url="server/2025/en-us_windows_server_2025_updated_oct_2025_x64_dvd_6c0c5aa8.iso" + ;; + "win2022" | "win2022-eval" ) + size=6023239680 + sum="5d6d91efa972cbdd6701d78db1dcf6a34c7024ca931c1718e7cb3d0c6dd54e88" + url="server/2022/en-us_windows_server_2022_updated_oct_2025_x64_dvd_26e9af36.iso" + ;; + "win2019" | "win2019-eval" ) + size=5575774208 + sum="0067afe7fdc4e61f677bd8c35a209082aa917df9c117527fc4b2b52a447e89bb" + url="server/2019/en-us_windows_server_2019_updated_aug_2021_x64_dvd_a6431a28.iso" + ;; + "win2016" | "win2016-eval" ) + size=6006587392 + sum="af06e5483c786c023123e325cea4775050324d9e1366f46850b515ae43f764be" + url="server/2016/en_windows_server_2016_updated_feb_2018_x64_dvd_11636692.iso" + ;; + "win2012r2" | "win2012r2-eval" ) + size=5397889024 + sum="f351e89eb88a96af4626ceb3450248b8573e3ed5924a4e19ea891e6003b62e4e" + url="server/2012r2/en_windows_server_2012_r2_with_update_x64_dvd_6052708-004.iso" + ;; + "win2008r2" | "win2008r2-eval" ) + size=3166584832 + sum="dfd9890881b7e832a927c38310fb415b7ea62ac5a896671f2ce2a111998f0df8" + url="server/2008r2/en_windows_server_2008_r2_with_sp1_x64_dvd_617601-018.iso" + ;; + "win7x64" | "win7x64-ultimate" ) + size=3320836096 + sum="0b738b55a5ea388ad016535a5c8234daf2e5715a0638488ddd8a228a836055a1" + url="7/en_windows_7_with_sp1_x64.iso" + ;; + "win7x64-enterprise" | "win7x64-enterprise-eval" ) + size=3182604288 + sum="ee69f3e9b86ff973f632db8e01700c5724ef78420b175d25bae6ead90f6805a7" + url="7/en_windows_7_enterprise_with_sp1_x64_dvd_u_677651.iso" + ;; + "win7x86" | "win7x86-ultimate" ) + size=2564411392 + sum="99f3369c90160816be07093dbb0ac053e0a84e52d6ed1395c92ae208ccdf67e5" + url="7/en_windows_7_with_sp1_x86.iso" + ;; + "win7x86-enterprise" | "win7x86-enterprise-eval" ) + size=2434502656 + sum="8bdd46ff8cb8b8de9c4aba02706629c8983c45e87da110e64e13be17c8434dad" + url="7/en_windows_7_enterprise_with_sp1_x86_dvd_u_677710.iso" + ;; + "winvistax64" | "winvistax64-ultimate" ) + size=3861460992 + sum="edf9f947c5791469fd7d2d40a5dcce663efa754f91847aa1d28ed7f585675b78" + url="vista/en_windows_vista_sp2_x64_dvd_342267.iso" + ;; + "winvistax86" | "winvistax86-ultimate" ) + size=3243413504 + sum="9c36fed4255bd05a8506b2da88f9aad73643395e155e609398aacd2b5276289c" + url="vista/en_windows_vista_with_sp2_x86_dvd_342266.iso" + ;; + "win2003r2" ) + size=731650535 + sum="6b64bbae7eb00fd000cc887ffdc9f224d00c557daad7f756cfa373950b880dc8" + url="server/2003r2/en_win_srv_2003_r2_standard_x64_with_sp2_cd1_cd2.zip" + ;; + "winxpx86" ) + size=617756672 + sum="62b6c91563bad6cd12a352aa018627c314cfc5162d8e9f8af0756a642e602a46" + url="xp/professional/en_windows_xp_professional_with_service_pack_3_x86_cd_x14-80428.iso" + ;; + "winxpx64" ) + size=614166528 + sum="8fac68e1e56c64ad9a2aa0ad464560282e67fa4f4dd51d09a66f4e548eb0f2d6" + url="xp/professional/en_win_xp_pro_x64_vl.iso" + ;; + "win2kx86" ) + size=331701982 + sum="a93251b31f92316411bb48458a695d9051b13cdeba714c46f105012fdda45bf3" + url="2000/5.00.2195.6717_x86fre_client-professional_retail_en-us.7z" + ;; + esac + + case "${ret,,}" in + "sum" ) echo "$sum" ;; + "size" ) echo "$size" ;; + *) [ -n "$url" ] && echo "$host/$url";; + esac + + return 0 +} + +getLink2() { + + local id="$1" + local lang="$2" + local ret="$3" + local url="" + local sum="" + local size="" + local host="https://files.dog/MSDN" + + [[ "${lang,,}" != "en" && "${lang,,}" != "en-us" ]] && return 0 + + case "${id,,}" in + "win81x64" ) + size=4320526336 + sum="d8333cf427eb3318ff6ab755eb1dd9d433f0e2ae43745312c1cd23e83ca1ce51" + url="Windows%208.1%20with%20Update/en_windows_8.1_with_update_x64_dvd_6051480.iso" + ;; + "win81x64-enterprise" | "win81x64-enterprise-eval" ) + size=4139163648 + sum="c3c604c03677504e8905090a8ce5bb1dde76b6fd58e10f32e3a25bef21b2abe1" + url="Windows%208.1%20with%20Update/en_windows_8.1_enterprise_with_update_x64_dvd_6054382.iso" + ;; + "win2012r2" | "win2012r2-eval" ) + size=5397889024 + sum="f351e89eb88a96af4626ceb3450248b8573e3ed5924a4e19ea891e6003b62e4e" + url="Windows%20Server%202012%20R2%20with%20Update/en_windows_server_2012_r2_with_update_x64_dvd_6052708.iso" + ;; + "win2008r2" | "win2008r2-eval" ) + size=3166584832 + sum="dfd9890881b7e832a927c38310fb415b7ea62ac5a896671f2ce2a111998f0df8" + url="Windows%20Server%202008%20R2/en_windows_server_2008_r2_with_sp1_x64_dvd_617601.iso" + ;; + "win7x64" | "win7x64-ultimate" ) + size=3320903680 + sum="36f4fa2416d0982697ab106e3a72d2e120dbcdb6cc54fd3906d06120d0653808" + url="Windows%207/en_windows_7_ultimate_with_sp1_x64_dvd_u_677332.iso" + ;; + "win7x64-enterprise" | "win7x64-enterprise-eval" ) + size=3182604288 + sum="ee69f3e9b86ff973f632db8e01700c5724ef78420b175d25bae6ead90f6805a7" + url="Windows%207/en_windows_7_enterprise_with_sp1_x64_dvd_u_677651.iso" + ;; + "win7x86" | "win7x86-ultimate" ) + size=2564476928 + sum="e2c009a66d63a742941f5087acae1aa438dcbe87010bddd53884b1af6b22c940" + url="Windows%207/en_windows_7_ultimate_with_sp1_x86_dvd_u_677460.iso" + ;; + "win7x86-enterprise" | "win7x86-enterprise-eval" ) + size=2434502656 + sum="8bdd46ff8cb8b8de9c4aba02706629c8983c45e87da110e64e13be17c8434dad" + url="Windows%207/en_windows_7_enterprise_with_sp1_x86_dvd_u_677710.iso" + ;; + "winvistax64" | "winvistax64-ultimate" ) + size=3861460992 + sum="edf9f947c5791469fd7d2d40a5dcce663efa754f91847aa1d28ed7f585675b78" + url="Windows%20Vista/en_windows_vista_sp2_x64_dvd_342267.iso" + ;; + "winvistax64-enterprise" ) + size=3205953536 + sum="0a0cd511b3eac95c6f081419c9c65b12317b9d6a8d9707f89d646c910e788016" + url="Windows%20Vista/en_windows_vista_enterprise_sp2_x64_dvd_342332.iso" + ;; + "winvistax86" | "winvistax86-ultimate" ) + size=3243413504 + sum="9c36fed4255bd05a8506b2da88f9aad73643395e155e609398aacd2b5276289c" + url="Windows%20Vista/en_windows_vista_with_sp2_x86_dvd_342266.iso" + ;; + "winvistax86-enterprise" ) + size=2420981760 + sum="54e2720004041e7db988a391543ea5228b0affc28efcf9303d2d0ff9402067f5" + url="Windows%20Vista/en_windows_vista_enterprise_sp2_x86_dvd_342329.iso" + ;; + "win2003r2" ) + size=652367872 + sum="74245cba888f935b138b106c2744bec7f392925b472358960a0b5643cd6abb32" + url="Windows%20Server%202003%20R2/en_win_srv_2003_r2_standard_x64_with_sp2_cd1_x13-05757.iso" + ;; + "winxpx86" ) + size=617756672 + sum="62b6c91563bad6cd12a352aa018627c314cfc5162d8e9f8af0756a642e602a46" + url="Windows%20XP/en_windows_xp_professional_with_service_pack_3_x86_cd_x14-80428.iso" + ;; + "winxpx64" ) + size=614166528 + sum="8fac68e1e56c64ad9a2aa0ad464560282e67fa4f4dd51d09a66f4e548eb0f2d6" + url="Windows%20XP/en_win_xp_pro_x64_vl.iso" + ;; + esac + + case "${ret,,}" in + "sum" ) echo "$sum" ;; + "size" ) echo "$size" ;; + *) [ -n "$url" ] && echo "$host/$url";; + esac + + return 0 +} + +getLink3() { + + local id="$1" + local lang="$2" + local ret="$3" + local url="" + local sum="" + local size="" + local host="https://nixsys.com/drivers" + + [[ "${lang,,}" != "en" && "${lang,,}" != "en-us" ]] && return 0 + + case "${id,,}" in + "win7x64" | "win7x64-ultimate" ) + size=3319478272 + sum="3286963e1476082ba882a5058c205c264772bead9e99e15cd1cb255f04b72900" + url="WINDOWS764_EN_DVD.iso" + ;; + "win7x86" | "win7x86-ultimate" ) + size=2564784128 + sum="bd4c03c917d00a40222d92a6fab04981a7bd46140bda1888eb961a322e3c5d89" + url="WINDOWS732_EN_DVD.iso" + ;; + "winxpx86" ) + size=618065920 + sum="8177d0137dfe4e8296a85793f140806c9250a5992c8e0e50158c742767ad1182" + url="WinXPsp3.iso" + ;; + "win2kx86" ) + size=387424256 + sum="08b11c3897eb38d1e6566a17cec5cdf2b3c620444e160e3db200a7e223aabbd8" + url="Windows_2000_SP4.iso" + esac + + case "${ret,,}" in + "sum" ) echo "$sum" ;; + "size" ) echo "$size" ;; + *) [ -n "$url" ] && echo "$host/$url";; + esac + + return 0 +} + +getLink4() { + + local id="$1" + local lang="$2" + local ret="$3" + local url="" + local sum="" + local size="" + local host="https://archive.org/download" + + [[ "${lang,,}" != "en" && "${lang,,}" != "en-us" ]] && return 0 + + case "${id,,}" in + "nano11" ) + size=2463565824 + sum="a1e0614372768cbe2d24de74b78a4a97bc1017ea5080dfed1d2125e4a527eb1a" + url="nano11_25h2/nano11%2025h2.iso" + ;; + "core11" ) + size=3176654848 + sum="29c055fcfb7b089abd9e007e7abe4bb82c70a03aac9d65e56a38b87ab32d04d2" + url="tiny11_25H2/tiny11core_25H2_Oct25.iso" + ;; + "tiny11" ) + size=5514559488 + sum="92484f2b7f707e42383294402a9eabbadeaa5ede80ac633390ae7f3537e36275" + url="tiny11_25H2/tiny11_25H2_Oct25.iso" + ;; + "tiny10" ) + size=3839819776 + sum="a11116c0645d892d6a5a7c585ecc1fa13aa66f8c7cc6b03bf1f27bd16860cc35" + url="tiny-10-23-h2/tiny10%20x64%2023h2.iso" + ;; + "win11x64" ) + size=7736125440 + sum="d141f6030fed50f75e2b03e1eb2e53646c4b21e5386047cb860af5223f102a32" + url="W11x64_26200.6584/26200.6584.250915-1905.25h2_ge_release_svc_refresh_CLIENT_CONSUMER_x64FRE_en-us.iso" + ;; + "win11x64-enterprise" | "win11x64-enterprise-eval" ) + size=6209064960 + sum="c8dbc96b61d04c8b01faf6ce0794fdf33965c7b350eaa3eb1e6697019902945c" + url="Windows11Enterprise23H2x64/22631.2428.231001-0608.23H2_NI_RELEASE_SVC_REFRESH_CLIENTENTERPRISEEVAL_OEMRET_x64FRE_en-us.iso" + ;; + "win11x64-iot" | "win11x64-enterprise-iot" | "win11x64-enterprise-iot-eval" ) + size=5144817664 + sum="4f59662a96fc1da48c1b415d6c369d08af55ddd64e8f1c84e0166d9e50405d7a" + url="Windows11LTSC/X23-81951_26100.1742.240906-0331.ge_release_svc_refresh_CLIENT_ENTERPRISES_OEM_x64FRE_en-us.iso" + ;; + "win11x64-ltsc" | "win11x64-enterprise-ltsc" | "win11x64-enterprise-ltsc-eval" ) + size=5144817664 + sum="4f59662a96fc1da48c1b415d6c369d08af55ddd64e8f1c84e0166d9e50405d7a" + url="Windows11LTSC/X23-81951_26100.1742.240906-0331.ge_release_svc_refresh_CLIENT_ENTERPRISES_OEM_x64FRE_en-us.iso" + ;; + "win10x64" | "win10x64-enterprise" | "win10x64-enterprise-eval" ) + size=6978310144 + sum="7847abd6f39abd02dc8089c4177d354f9eb66fa0ee2fe8ae20e596e675d1ab67" + url="Windows-10-22H2-July-2024-64-bit-DVD-English/en-us_windows_10_business_editions_version_22h2_updated_july_2024_x64_dvd_c004521a.iso" + ;; + "win10x64-iot" | "win10x64-enterprise-iot" | "win10x64-enterprise-iot-eval" ) + size=4851668992 + sum="a0334f31ea7a3e6932b9ad7206608248f0bd40698bfb8fc65f14fc5e4976c160" + url="en-us_windows_10_iot_enterprise_ltsc_2021_x64_dvd_257ad90f_202411/en-us_windows_10_iot_enterprise_ltsc_2021_x64_dvd_257ad90f.iso" + ;; + "win10x64-ltsc" | "win10x64-enterprise-ltsc" | "win10x64-enterprise-ltsc-eval" ) + size=4899461120 + sum="c90a6df8997bf49e56b9673982f3e80745058723a707aef8f22998ae6479597d" + url="en-us_windows_10_enterprise_ltsc_2021_x64_dvd_d289cf96_202302/en-us_windows_10_enterprise_ltsc_2021_x64_dvd_d289cf96.iso" + ;; + "win81x64" ) + size=4320526336 + sum="d8333cf427eb3318ff6ab755eb1dd9d433f0e2ae43745312c1cd23e83ca1ce51" + url="en_windows_8.1_with_update_x64_dvd_6051480/en_windows_8.1_with_update_x64_dvd_6051480.iso" + ;; + "win81x64-enterprise" | "win81x64-enterprise-eval" ) + size=4139163648 + sum="c3c604c03677504e8905090a8ce5bb1dde76b6fd58e10f32e3a25bef21b2abe1" + url="en_windows_8.1_enterprise_with_update_x64_dvd/en_windows_8.1_enterprise_with_update_x64_dvd_6054382.iso" + ;; + "win2022" | "win2022-eval" ) + size=5365624832 + sum="c3c57bb2cf723973a7dcfb1a21e97dfa035753a7f111e348ad918bb64b3114db" + url="win-server-2022/2227-January_2024/en-us_windows_server_2022_updated_jan_2024_x64_dvd_2b7a0c9f.iso" + ;; + "win2019" | "win2019-eval" ) + size=5575774208 + sum="0067afe7fdc4e61f677bd8c35a209082aa917df9c117527fc4b2b52a447e89bb" + url="sw-dvd-9-win-server-std-core-2019-1809.18-64-bit-english-dc-std-mlf-x-22-74330/SW_DVD9_Win_Server_STD_CORE_2019_1809.18_64Bit_English_DC_STD_MLF_X22-74330.ISO" + ;; + "win2016" | "win2016-eval" ) + size=6006587392 + sum="af06e5483c786c023123e325cea4775050324d9e1366f46850b515ae43f764be" + url="en_windows_server_2016_updated_feb_2018_x64_dvd_11636692/en_windows_server_2016_updated_feb_2018_x64_dvd_11636692.iso" + ;; + "win2012r2" | "win2012r2-eval" ) + size=5397889024 + sum="f351e89eb88a96af4626ceb3450248b8573e3ed5924a4e19ea891e6003b62e4e" + url="en_windows_server_2012_r2_with_update_x64_dvd_6052708_202006/en_windows_server_2012_r2_with_update_x64_dvd_6052708.iso" + ;; + "win2008r2" | "win2008r2-eval" ) + size=3166584832 + sum="dfd9890881b7e832a927c38310fb415b7ea62ac5a896671f2ce2a111998f0df8" + url="en_windows_server_2008_r2_with_sp1_x64_dvd_617601_202006/en_windows_server_2008_r2_with_sp1_x64_dvd_617601.iso" + ;; + "win7x64" | "win7x64-ultimate" ) + size=3320903680 + sum="36f4fa2416d0982697ab106e3a72d2e120dbcdb6cc54fd3906d06120d0653808" + url="win7-ult-sp1-english/Win7_Ult_SP1_English_x64.iso" + ;; + "win7x64-enterprise" | "win7x64-enterprise-eval" ) + size=3182604288 + sum="ee69f3e9b86ff973f632db8e01700c5724ef78420b175d25bae6ead90f6805a7" + url="en_windows_7_enterprise_with_sp1_x64_dvd_u_677651_202006/en_windows_7_enterprise_with_sp1_x64_dvd_u_677651.iso" + ;; + "win7x86" | "win7x86-ultimate" ) + size=2564476928 + sum="e2c009a66d63a742941f5087acae1aa438dcbe87010bddd53884b1af6b22c940" + url="win7-ult-sp1-english/Win7_Ult_SP1_English_x32.iso" + ;; + "win7x86-enterprise" | "win7x86-enterprise-eval" ) + size=2434502656 + sum="8bdd46ff8cb8b8de9c4aba02706629c8983c45e87da110e64e13be17c8434dad" + url="en_windows_7_enterprise_with_sp1_x86_dvd_u_677710_202006/en_windows_7_enterprise_with_sp1_x86_dvd_u_677710.iso" + ;; + "winvistax64" | "winvistax64-ultimate" ) + size=3861460992 + sum="edf9f947c5791469fd7d2d40a5dcce663efa754f91847aa1d28ed7f585675b78" + url="en_windows_vista_sp2_x64_dvd_342267_202010/en_windows_vista_sp2_x64_dvd_342267.iso" + ;; + "winvistax64-enterprise" ) + size=3205953536 + sum="0a0cd511b3eac95c6f081419c9c65b12317b9d6a8d9707f89d646c910e788016" + url="en_windows_vista_enterprise_sp2_x64_dvd_342332_202007/en_windows_vista_enterprise_sp2_x64_dvd_342332.iso" + ;; + "winvistax86" | "winvistax86-ultimate" ) + size=3243413504 + sum="9c36fed4255bd05a8506b2da88f9aad73643395e155e609398aacd2b5276289c" + url="en_windows_vista_sp2_x86_dvd_342266/en_windows_vista_sp2_x86_dvd_342266.iso" + ;; + "winvistax86-enterprise" ) + size=2420981760 + sum="54e2720004041e7db988a391543ea5228b0affc28efcf9303d2d0ff9402067f5" + url="en_windows_vista_enterprise_sp2_x86_dvd_342329_202007/en_windows_vista_enterprise_sp2_x86_dvd_342329.iso" + ;; + "win2003r2" ) + size=652367872 + sum="74245cba888f935b138b106c2744bec7f392925b472358960a0b5643cd6abb32" + url="en_win_srv_2003_r2_standard_x64_with_sp2_cd1_x13-05757/en_win_srv_2003_r2_standard_x64_with_sp2_cd1_x13-05757.iso" + ;; + "winxpx86" ) + size=617756672 + sum="62b6c91563bad6cd12a352aa018627c314cfc5162d8e9f8af0756a642e602a46" + url="XPPRO_SP3_ENU/en_windows_xp_professional_with_service_pack_3_x86_cd_x14-80428.iso" + ;; + "winxpx64" ) + size=614166528 + sum="8fac68e1e56c64ad9a2aa0ad464560282e67fa4f4dd51d09a66f4e548eb0f2d6" + url="windows-xp-all-sp-msdn-iso-files-en-de-ru-tr-x86-x64/en_win_xp_sp1_pro_x64_vl.iso" + ;; + "win2kx86" ) + size=386859008 + sum="e3816f6e80b66ff686ead03eeafffe9daf020a5e4717b8bd4736b7c51733ba22" + url="MicrosoftWindows2000BuildCollection/5.00.2195.6717_x86fre_client-professional_retail_en-us-ZRMPFPP_EN.iso" + esac + + case "${ret,,}" in + "sum" ) echo "$sum" ;; + "size" ) echo "$size" ;; + *) [ -n "$url" ] && echo "$host/$url";; + esac + + return 0 +} + +getValue() { + + local val="" + local id="$2" + local lang="$3" + local type="$4" + local func="getLink$1" + + if [ "$1" -gt 0 ] && [ "$1" -le "$MIRRORS" ]; then + val=$($func "$id" "$lang" "$type") + fi + + echo "$val" + return 0 +} + +getLink() { + + local url + url=$(getValue "$1" "$2" "$3" "") + + echo "$url" + return 0 +} + +getHash() { + + local sum + sum=$(getValue "$1" "$2" "$3" "sum") + + echo "$sum" + return 0 +} + +getSize() { + + local size + size=$(getValue "$1" "$2" "$3" "size") + + echo "$size" + return 0 +} + +isMido() { + + local id="$1" + local lang="$2" + local sum + + [[ "${MIDO:-}" == [Nn]* ]] && return 1 + + sum=$(getMido "$id" "en" "sum") + [ -n "$sum" ] && return 0 + + return 1 +} + +isESD() { + + local id="$1" + local lang="$2" + + [[ "${ESD:-}" == [Nn]* ]] && return 1 + + case "${id,,}" in + "win11${PLATFORM,,}" | "win10${PLATFORM,,}" ) + return 0 + ;; + "win11${PLATFORM,,}-enterprise" | "win11${PLATFORM,,}-enterprise-eval") + return 0 + ;; + "win10${PLATFORM,,}-enterprise" | "win10${PLATFORM,,}-enterprise-eval" ) + return 0 + ;; + esac + + return 1 +} + +validVersion() { + + local id="$1" + local lang="$2" + local url + + isESD "$id" "$lang" && return 0 + isMido "$id" "$lang" && return 0 + + for ((i=1;i<=MIRRORS;i++)); do + + url=$(getLink "$i" "$id" "$lang") + [ -n "$url" ] && return 0 + + done + + return 1 +} + +addFolder() { + + local src="$1" + local folder="/oem" + + [ ! -d "$folder" ] && folder="/OEM" + [ ! -d "$folder" ] && folder="$STORAGE/oem" + [ ! -d "$folder" ] && folder="$STORAGE/OEM" + [ ! -d "$folder" ] && return 0 + + local msg="Adding OEM folder to image..." + info "$msg" && html "$msg" + + local dest="$src/\$OEM\$/\$1/OEM" + mkdir -p "$dest" || return 1 + cp -Lr "$folder/." "$dest" || return 1 + + local file + file=$(find "$dest" -maxdepth 1 -type f -iname install.bat -print -quit) + [ -f "$file" ] && unix2dos -q "$file" + + return 0 +} + +prepareInstall() { + + local pid="" + local file="" + local dir="$2" + local desc="$3" + local driver="$4" + local drivers="/tmp/drivers" + + ETFS="[BOOT]/Boot-NoEmul.img" + + if [ ! -f "$dir/$ETFS" ] || [ ! -s "$dir/$ETFS" ]; then + error "Failed to locate file \"$ETFS\" in $desc ISO image!" && return 1 + fi + + local arch target + [ -d "$dir/AMD64" ] && arch="amd64" || arch="x86" + [[ "${arch,,}" == "x86" ]] && target="$dir/I386" || target="$dir/AMD64" + + if [ ! -d "$target" ]; then + error "Failed to locate directory \"$target\" in $desc ISO image!" && return 1 + fi + + if [[ "${driver,,}" == "xp" || "${driver,,}" == "2k3" ]]; then + + local msg="Adding drivers to image..." + info "$msg" && html "$msg" + + rm -rf "$drivers" + mkdir -p "$drivers" + + if ! bsdtar -xf /var/drivers.txz -C "$drivers"; then + error "Failed to extract drivers!" && return 1 + fi + + if [ ! -f "$drivers/viostor/$driver/$arch/viostor.sys" ]; then + error "Failed to locate required storage drivers!" && return 1 + fi + + cp -L "$drivers/viostor/$driver/$arch/viostor.sys" "$target" || return 1 + + mkdir -p "$dir/\$OEM\$/\$1/Drivers/viostor" || return 1 + cp -L "$drivers/viostor/$driver/$arch/viostor.cat" "$dir/\$OEM\$/\$1/Drivers/viostor" || return 1 + cp -L "$drivers/viostor/$driver/$arch/viostor.inf" "$dir/\$OEM\$/\$1/Drivers/viostor" || return 1 + cp -L "$drivers/viostor/$driver/$arch/viostor.sys" "$dir/\$OEM\$/\$1/Drivers/viostor" || return 1 + + if [ ! -f "$drivers/NetKVM/$driver/$arch/netkvm.sys" ]; then + error "Failed to locate required network drivers!" && return 1 + fi + + mkdir -p "$dir/\$OEM\$/\$1/Drivers/NetKVM" || return 1 + cp -L "$drivers/NetKVM/$driver/$arch/netkvm.cat" "$dir/\$OEM\$/\$1/Drivers/NetKVM" || return 1 + cp -L "$drivers/NetKVM/$driver/$arch/netkvm.inf" "$dir/\$OEM\$/\$1/Drivers/NetKVM" || return 1 + cp -L "$drivers/NetKVM/$driver/$arch/netkvm.sys" "$dir/\$OEM\$/\$1/Drivers/NetKVM" || return 1 + + file=$(find "$target" -maxdepth 1 -type f -iname TXTSETUP.SIF -print -quit) + + if [ -z "$file" ]; then + error "The file TXTSETUP.SIF could not be found!" && return 1 + fi + + sed -i '/^\[SCSI.Load\]/s/$/\nviostor=viostor.sys,4/' "$file" + sed -i '/^\[SourceDisksFiles.'"$arch"'\]/s/$/\nviostor.sys=1,,,,,,4_,4,1,,,1,4/' "$file" + sed -i '/^\[SCSI\]/s/$/\nviostor=\"Red Hat VirtIO SCSI Disk Device\"/' "$file" + sed -i '/^\[HardwareIdsDatabase\]/s/$/\nPCI\\VEN_1AF4\&DEV_1001\&SUBSYS_00000000=\"viostor\"/' "$file" + sed -i '/^\[HardwareIdsDatabase\]/s/$/\nPCI\\VEN_1AF4\&DEV_1001\&SUBSYS_00020000=\"viostor\"/' "$file" + sed -i '/^\[HardwareIdsDatabase\]/s/$/\nPCI\\VEN_1AF4\&DEV_1001\&SUBSYS_00021AF4=\"viostor\"/' "$file" + sed -i '/^\[HardwareIdsDatabase\]/s/$/\nPCI\\VEN_1AF4\&DEV_1001\&SUBSYS_00000000=\"viostor\"/' "$file" + + if [ ! -d "$drivers/sata/xp/$arch" ]; then + error "Failed to locate required SATA drivers!" && return 1 + fi + + mkdir -p "$dir/\$OEM\$/\$1/Drivers/sata" || return 1 + cp -Lr "$drivers/sata/xp/$arch/." "$dir/\$OEM\$/\$1/Drivers/sata" || return 1 + cp -Lr "$drivers/sata/xp/$arch/." "$target" || return 1 + + sed -i '/^\[SCSI.Load\]/s/$/\niaStor=iaStor.sys,4/' "$file" + sed -i '/^\[FileFlags\]/s/$/\niaStor.sys = 16/' "$file" + sed -i '/^\[SourceDisksFiles.'"$arch"'\]/s/$/\niaStor.cat = 1,,,,,,,1,0,0/' "$file" + sed -i '/^\[SourceDisksFiles.'"$arch"'\]/s/$/\niaStor.inf = 1,,,,,,,1,0,0/' "$file" + sed -i '/^\[SourceDisksFiles.'"$arch"'\]/s/$/\niaStor.sys = 1,,,,,,4_,4,1,,,1,4/' "$file" + sed -i '/^\[SourceDisksFiles.'"$arch"'\]/s/$/\niaStor.sys = 1,,,,,,,1,0,0/' "$file" + sed -i '/^\[SourceDisksFiles.'"$arch"'\]/s/$/\niaahci.cat = 1,,,,,,,1,0,0/' "$file" + sed -i '/^\[SourceDisksFiles.'"$arch"'\]/s/$/\niaAHCI.inf = 1,,,,,,,1,0,0/' "$file" + sed -i '/^\[SCSI\]/s/$/\niaStor=\"Intel\(R\) SATA RAID\/AHCI Controller\"/' "$file" + sed -i '/^\[HardwareIdsDatabase\]/s/$/\nPCI\\VEN_8086\&DEV_2922\&CC_0106=\"iaStor\"/' "$file" + + rm -rf "$drivers" + + fi + + local key setup + setup=$(find "$target" -maxdepth 1 -type f -iname setupp.ini -print -quit) + + if [ -n "$setup" ] && [ -z "$KEY" ]; then + + pid=$(<"$setup") + pid="${pid%$'\r'}" + + if [[ "$driver" == "2k" ]]; then + + echo "${pid:0:$((${#pid})) - 3}270" > "$setup" + + else + + if [[ "$pid" == *"270" ]]; then + + warn "this version of $desc requires a volume license key (VLK), it will ask for one during installation." + + else + + file=$(find "$target" -maxdepth 1 -type f -iname PID.INF -print -quit) + + if [ -n "$file" ]; then + + if [[ "$driver" == "2k3" ]]; then + + key=$(grep -i -A 2 "StagingKey" "$file" | tail -n 2 | head -n 1) + + else + + key="${pid:$((${#pid})) - 8:5}" + if [[ "${pid^^}" == *"OEM" ]]; then + key=$(grep -i -A 2 "$key" "$file" | tail -n 2 | head -n 1) + else + key=$(grep -i -m 1 -A 2 "$key" "$file" | tail -n 2 | head -n 1) + fi + key="${key#*= }" + + fi + + key="${key%$'\r'}" + [[ "${#key}" == "29" ]] && KEY="$key" + + fi + + if [ -z "$KEY" ]; then + + # These are NOT pirated keys, they come from official MS documentation. + + case "${driver,,}" in + "xp" ) + + if [[ "${arch,,}" == "x86" ]]; then + # Windows XP Professional x86 generic trial key (no activation) + KEY="DR8GV-C8V6J-BYXHG-7PYJR-DB66Y" + else + # Windows XP Professional x64 generic trial key (no activation) + KEY="B2RBK-7KPT9-4JP6X-QQFWM-PJD6G" + fi ;; + + "2k3" ) + + if [[ "${arch,,}" == "x86" ]]; then + # Windows Server 2003 Standard x86 generic trial key (no activation) + KEY="QKDCQ-TP2JM-G4MDG-VR6F2-P9C48" + else + # Windows Server 2003 Standard x64 generic trial key (no activation) + KEY="P4WJG-WK3W7-3HM8W-RWHCK-8JTRY" + fi ;; + + esac + + echo "${pid:0:$((${#pid})) - 3}000" > "$setup" + + fi + + fi + fi + + fi + + [ -n "$KEY" ] && KEY="ProductID=$KEY" + + mkdir -p "$dir/\$OEM\$" + + if ! addFolder "$dir"; then + error "Failed to add OEM folder to image!" && return 1 + fi + + local oem="" + local install="$dir/\$OEM\$/\$1/OEM/install.bat" + [ -f "$install" ] && oem="\"Script\"=\"cmd /C start \\\"Install\\\" \\\"cmd /C C:\\\\OEM\\\\install.bat\\\"\"" + + [ -z "$WIDTH" ] && WIDTH="1280" + [ -z "$HEIGHT" ] && HEIGHT="720" + + XHEX=$(printf '%x\n' "$WIDTH") + YHEX=$(printf '%x\n' "$HEIGHT") + + local username="" + local password="" + + [ -n "$USERNAME" ] && username=$(echo "$USERNAME" | sed 's/[^[:alnum:]@!._-]//g') + [ -z "$username" ] && username="Docker" + + [ -n "$PASSWORD" ] && password=$(echo "$PASSWORD" | sed 's/"//g') + [ -z "$password" ] && password="admin" + + find "$target" -maxdepth 1 -type f -iname winnt.sif -exec rm {} \; + + { echo "[Data]" + echo " AutoPartition=1" + echo " MsDosInitiated=\"0\"" + echo " UnattendedInstall=\"Yes\"" + echo " AutomaticUpdates=\"Yes\"" + echo "" + echo "[Unattended]" + echo " UnattendSwitch=Yes" + echo " UnattendMode=FullUnattended" + echo " FileSystem=NTFS" + echo " OemSkipEula=Yes" + echo " OemPreinstall=Yes" + echo " Repartition=Yes" + echo " WaitForReboot=\"No\"" + echo " DriverSigningPolicy=\"Ignore\"" + echo " NonDriverSigningPolicy=\"Ignore\"" + echo " OemPnPDriversPath=\"Drivers\viostor;Drivers\NetKVM;Drivers\sata\"" + echo " NoWaitAfterTextMode=1" + echo " NoWaitAfterGUIMode=1" + echo " FileSystem-ConvertNTFS" + echo " ExtendOemPartition=0" + echo " Hibernation=\"No\"" + echo "" + echo "[GuiUnattended]" + echo " OEMSkipRegional=1" + echo " OemSkipWelcome=1" + echo " AdminPassword=$password" + echo " TimeZone=0" + echo " AutoLogon=Yes" + echo " AutoLogonCount=65432" + echo "" + echo "[UserData]" + echo " FullName=\"$username\"" + echo " ComputerName=\"*\"" + echo " OrgName=\"$APP for $ENGINE\"" + echo " $KEY" + echo "" + echo "[Identification]" + echo " JoinWorkgroup = WORKGROUP" + echo "" + echo "[Display]" + echo " BitsPerPel=32" + echo " XResolution=$WIDTH" + echo " YResolution=$HEIGHT" + echo "" + echo "[Networking]" + echo " InstallDefaultComponents=Yes" + echo "" + echo "[Branding]" + echo " BrandIEUsingUnattended=Yes" + echo "" + echo "[URL]" + echo " Home_Page = http://www.google.com" + echo " Search_Page = http://www.google.com" + echo "" + echo "[TerminalServices]" + echo " AllowConnections=1" + echo "" + } | unix2dos > "$target/WINNT.SIF" + + if [[ "$driver" == "2k3" ]]; then + { echo "[Components]" + echo " TerminalServer=On" + echo "" + echo "[LicenseFilePrintData]" + echo " AutoMode=PerServer" + echo " AutoUsers=5" + echo "" + } | unix2dos >> "$target/WINNT.SIF" + fi + + { echo "Windows Registry Editor Version 5.00" + echo "" + echo "[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Security]" + echo "\"FirstRunDisabled\"=dword:00000001" + echo "\"UpdatesDisableNotify\"=dword:00000001" + echo "\"FirewallDisableNotify\"=dword:00000001" + echo "\"AntiVirusDisableNotify\"=dword:00000001" + echo "" + echo "[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wscsvc]" + echo "\"Start\"=dword:00000004" + echo "" + echo "[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List]" + echo "\"3389:TCP\"=\"3389:TCP:*:Enabled:@xpsp2res.dll,-22009\"" + echo "" + echo "[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Tour]" + echo "\"RunCount\"=dword:00000000" + echo "" + echo "[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]" + echo "\"HideFileExt\"=dword:00000000" + echo "" + echo "[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer]" + echo "\"NoWelcomeScreen\"=\"1\"" + echo "" + echo "[HKEY_CURRENT_USER\Software\Microsoft\Internet Connection Wizard]" + echo "\"Completed\"=\"1\"" + echo "\"Desktopchanged\"=\"1\"" + echo "" + echo "[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]" + echo "\"AutoAdminLogon\"=\"1\"" + echo "\"DefaultUserName\"=\"$username\"" + echo "\"DefaultPassword\"=\"$password\"" + echo "\"DefaultDomainName\"=\"Dockur\"" + echo "" + echo "[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Video\{23A77BF7-ED96-40EC-AF06-9B1F4867732A}\0000]" + echo "\"DefaultSettings.BitsPerPel\"=dword:00000020" + echo "\"DefaultSettings.XResolution\"=dword:00000$XHEX" + echo "\"DefaultSettings.YResolution\"=dword:00000$YHEX" + echo "" + echo "[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Control\VIDEO\{23A77BF7-ED96-40EC-AF06-9B1F4867732A}\0000]" + echo "\"DefaultSettings.BitsPerPel\"=dword:00000020" + echo "\"DefaultSettings.XResolution\"=dword:00000$XHEX" + echo "\"DefaultSettings.YResolution\"=dword:00000$YHEX" + echo "" + echo "[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce]" + echo "\"ScreenSaver\"=\"reg add \\\"HKCU\\\\Control Panel\\\\Desktop\\\" /f /v \\\"SCRNSAVE.EXE\\\" /t REG_SZ /d \\\"off\\\"\"" + echo "\"ScreenSaverOff\"=\"reg add \\\"HKCU\\\\Control Panel\\\\Desktop\\\" /f /v \\\"ScreenSaveActive\\\" /t REG_SZ /d \\\"0\\\"\"" + echo "$oem" + echo "" + } | unix2dos > "$dir/\$OEM\$/install.reg" + + if [[ "$driver" == "2k" ]]; then + { echo "[HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Runonce]" + echo "\"^SetupICWDesktop\"=-" + echo "" + } | unix2dos >> "$dir/\$OEM\$/install.reg" + fi + + if [[ "$driver" == "2k3" ]]; then + { echo "[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\srvWiz]" + echo "@=dword:00000000" + echo "" + echo "[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ServerOOBE\SecurityOOBE]" + echo "\"DontLaunchSecurityOOBE\"=dword:00000000" + echo "" + } | unix2dos >> "$dir/\$OEM\$/install.reg" + fi + + { echo "Set WshShell = WScript.CreateObject(\"WScript.Shell\")" + echo "Set WshNetwork = WScript.CreateObject(\"WScript.Network\")" + echo "Set Domain = GetObject(\"WinNT://\" & WshNetwork.ComputerName)" + echo "" + echo "Function DecodeSID(binSID)" + echo " ReDim o(LenB(binSID))" + echo "" + echo " For i = 1 To LenB(binSID)" + echo " o(i-1) = AscB(MidB(binSID, i, 1))" + echo " Next" + echo "" + echo " sid = \"S-\" & CStr(o(0)) & \"-\" & OctetArrayToString _" + echo " (Array(o(2), o(3), o(4), o(5), o(6), o(7)))" + echo " For i = 8 To (4 * o(1) + 4) Step 4" + echo " sid = sid & \"-\" & OctetArrayToString _" + echo " (Array(o(i+3), o(i+2), o(i+1), o(i)))" + echo " Next" + echo "" + echo " DecodeSID = sid" + echo "End Function" + echo "" + echo "Function OctetArrayToString(arr)" + echo " v = 0" + echo " For i = 0 To UBound(arr)" + echo " v = v * 256 + arr(i)" + echo " Next" + echo "" + echo " OctetArrayToString = CStr(v)" + echo "End Function" + echo "" + echo "For Each DomainItem in Domain" + echo " If DomainItem.Class = \"User\" Then" + echo " sid = DecodeSID(DomainItem.Get(\"objectSID\"))" + echo " If Left(sid, 9) = \"S-1-5-21-\" And Right(sid, 4) = \"-500\" Then" + echo " LocalAdminADsPath = DomainItem.ADsPath" + echo " Exit For" + echo " End If" + echo " End If" + echo "Next" + echo "" + echo "Call Domain.MoveHere(LocalAdminADsPath, \"$username\")" + echo "" + echo "Set oLink = WshShell.CreateShortcut(WshShell.ExpandEnvironmentStrings(\"%userprofile%\\Desktop\\Shared.lnk\"))" + echo "With oLink" + echo " .TargetPath = \"\\\\host.lan\\Data\"" + echo " .Save" + echo "End With" + echo "Set oLink = Nothing" + echo "" + } | unix2dos > "$dir/\$OEM\$/install.vbs" + + { echo "[COMMANDS]" + echo "\"REGEDIT /s install.reg\"" + echo "\"Wscript install.vbs\"" + echo "" + } | unix2dos > "$dir/\$OEM\$/cmdlines.txt" + + return 0 +} + +prepareLegacy() { + + local iso="$1" + local dir="$2" + local desc="$3" + + ETFS="boot.img" + + [ -f "$dir/$ETFS" ] && [ -s "$dir/$ETFS" ] && return 0 + rm -f "$dir/$ETFS" + + local len offset + len=$(isoinfo -d -i "$iso" | grep "Nsect " | grep -o "[^ ]*$") + offset=$(isoinfo -d -i "$iso" | grep "Bootoff " | grep -o "[^ ]*$") + + if ! dd "if=$iso" "of=$dir/$ETFS" bs=2048 "count=$len" "skip=$offset" status=none; then + error "Failed to extract boot image from $desc ISO!" && return 1 + fi + + [ -f "$dir/$ETFS" ] && [ -s "$dir/$ETFS" ] && return 0 + + error "Failed to locate file \"$ETFS\" in $desc ISO image!" + return 1 +} + +detectLegacy() { + + local dir="$1" + local find + + find=$(find "$dir" -maxdepth 1 -type d -iname WIN95 -print -quit) + [ -n "$find" ] && DETECTED="win95" && return 0 + + find=$(find "$dir" -maxdepth 1 -type d -iname WIN98 -print -quit) + [ -n "$find" ] && DETECTED="win98" && return 0 + + find=$(find "$dir" -maxdepth 1 -type d -iname WIN9X -print -quit) + [ -n "$find" ] && DETECTED="win9x" && return 0 + + find=$(find "$dir" -maxdepth 1 -type f -iname CDROM_W.40 -print -quit) + [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname CDROM_S.40 -print -quit) + [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname CDROM_TS.40 -print -quit) + [ -n "$find" ] && DETECTED="winnt4" && return 0 + + find=$(find "$dir" -maxdepth 1 -type f -iname CDROM_NT.5 -print -quit) + + if [ -n "$find" ]; then + + find=$(find "$dir" -maxdepth 1 -type f -iname CDROM_IA.5 -print -quit) + [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname CDROM_ID.5 -print -quit) + [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname CDROM_IP.5 -print -quit) + [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname CDROM_IS.5 -print -quit) + [ -n "$find" ] && DETECTED="win2k" && return 0 + + fi + + find=$(find "$dir" -maxdepth 1 -iname WIN51 -print -quit) + + if [ -n "$find" ]; then + + find=$(find "$dir" -maxdepth 1 -type f -iname WIN51AP -print -quit) + [ -n "$find" ] && DETECTED="winxpx64" && return 0 + + find=$(find "$dir" -maxdepth 1 -type f -iname WIN51IC -print -quit) + [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname WIN51IP -print -quit) + [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname setupxp.htm -print -quit) + [ -n "$find" ] && DETECTED="winxpx86" && return 0 + + find=$(find "$dir" -maxdepth 1 -type f -iname WIN51IS -print -quit) + [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname WIN51IA -print -quit) + [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname WIN51IB -print -quit) + [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname WIN51ID -print -quit) + [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname WIN51IL -print -quit) + [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname WIN51IS -print -quit) + [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname WIN51AA -print -quit) + [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname WIN51AD -print -quit) + [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname WIN51AS -print -quit) + [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname WIN51MA -print -quit) + [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname WIN51MD -print -quit) + [ -n "$find" ] && DETECTED="win2003r2" && return 0 + + fi + + return 1 +} + +skipVersion() { + + local id="$1" + + case "${id,,}" in + "win9"* | "winxp"* | "win2k"* | "win2003"* ) + return 0 ;; + esac + + return 1 +} + +isCompatible() { + return 0 +} + +setMachine() { + + local id="$1" + local iso="$2" + local dir="$3" + local desc="$4" + + case "${id,,}" in + "win9"* ) + ETFS="[BOOT]/Boot-1.44M.img" ;; + "win2k"* ) + if ! prepareInstall "$iso" "$dir" "$desc" "2k"; then + error "Failed to prepare $desc ISO!" && return 1 + fi ;; + "winxp"* ) + if ! prepareInstall "$iso" "$dir" "$desc" "xp"; then + error "Failed to prepare $desc ISO!" && return 1 + fi ;; + "win2003"* ) + if ! prepareInstall "$iso" "$dir" "$desc" "2k3"; then + error "Failed to prepare $desc ISO!" && return 1 + fi ;; + esac + + case "${id,,}" in + "win9"* ) + USB="no" + VGA="cirrus" + DISK_TYPE="auto" + MACHINE="pc-i440fx-2.4" + BOOT_MODE="windows_legacy" + [ -z "${ADAPTER:-}" ] && ADAPTER="pcnet" ;; + "win2k"* ) + VGA="cirrus" + MACHINE="pc" + USB="pci-ohci" + DISK_TYPE="auto" + BOOT_MODE="windows_legacy" + [ -z "${ADAPTER:-}" ] && ADAPTER="rtl8139" ;; + "winxp"* | "win2003"* ) + DISK_TYPE="blk" + BOOT_MODE="windows_legacy" ;; + "winvista"* | "win7"* | "win2008"* ) + BOOT_MODE="windows_legacy" ;; + esac + + case "${id,,}" in + "winxp"* | "win2003"* | "winvistax86"* | "win7x86"* | "win2008r2x86"* ) + # Prevent bluescreen if 64 bit PCI hole size is >2G. + ARGS="-global q35-pcihost.x-pci-hole64-fix=false" ;; + esac + + return 0 +} + +return 0 diff --git a/apps/rego-tunnel/build/src/entry.sh b/apps/rego-tunnel/build/src/entry.sh new file mode 100644 index 0000000..0142440 --- /dev/null +++ b/apps/rego-tunnel/build/src/entry.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +: "${APP:="Windows"}" +: "${PLATFORM:="x64"}" +: "${BOOT_MODE:="windows"}" +: "${SUPPORT:="https://github.com/dockur/windows"}" + +cd /run + +. start.sh # Startup hook +. /run/rego-startup.sh 2>/dev/null || true # Rego customizations +. utils.sh # Load functions +. reset.sh # Initialize system +. server.sh # Start webserver +. define.sh # Define versions +. mido.sh # Download Windows +. install.sh # Run installation +. disk.sh # Initialize disks +. display.sh # Initialize graphics +. network.sh # Initialize network +. samba.sh # Configure samba +. boot.sh # Configure boot +. proc.sh # Initialize processor +. power.sh # Configure shutdown +. memory.sh # Check available memory +. config.sh # Configure arguments +. finish.sh # Finish initialization + +trap - ERR + +version=$(qemu-system-x86_64 --version | head -n 1 | cut -d '(' -f 1 | awk '{ print $NF }') +info "Booting ${APP}${BOOT_DESC} using QEMU v$version..." + +{ qemu-system-x86_64 ${ARGS:+ $ARGS} >"$QEMU_OUT" 2>"$QEMU_LOG"; rc=$?; } || : +(( rc != 0 )) && error "$(<"$QEMU_LOG")" && exit 15 + +terminal +( sleep 30; boot ) & +tail -fn +0 "$QEMU_LOG" --pid=$$ 2>/dev/null & +cat "$QEMU_TERM" 2> /dev/null | tee "$QEMU_PTY" | \ +sed -u -e 's/\x1B\[[=0-9;]*[a-z]//gi' \ +-e 's/\x1B\x63//g' -e 's/\x1B\[[=?]7l//g' \ +-e '/^$/d' -e 's/\x44\x53\x73//g' \ +-e 's/failed to load Boot/skipped Boot/g' \ +-e 's/0): Not Found/0)/g' & wait $! || : + +sleep 1 & wait $! +[ ! -f "$QEMU_END" ] && finish 0 diff --git a/apps/rego-tunnel/build/src/install.sh b/apps/rego-tunnel/build/src/install.sh new file mode 100644 index 0000000..7be2996 --- /dev/null +++ b/apps/rego-tunnel/build/src/install.sh @@ -0,0 +1,1336 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +ETFS="boot/etfsboot.com" +FB="falling back to manual installation!" +EFISYS="efi/microsoft/boot/efisys_noprompt.bin" + +backup () { + + local count=1 + local iso="$1" + local name="unknown" + local root="$STORAGE/backups" + local previous="$STORAGE/windows.base" + + if [ -f "$previous" ]; then + + previous=$(<"$previous") + previous="${previous//[![:print:]]/}" + + [ -n "$previous" ] && name="${previous%.*}" + + fi + + if ! makeDir "$root"; then + error "Failed to create directory \"$root\" !" + return 1 + fi + + local folder="$name" + local dir="$root/$folder" + + while [ -d "$dir" ] + do + count=$((count+1)) + folder="${name}.${count}" + dir="$root/$folder" + done + + rm -rf "$dir" + + if ! makeDir "$dir"; then + error "Failed to create directory \"$dir\" !" + return 1 + fi + + [ -f "$iso" ] && mv -f "$iso" "$dir/" + find "$STORAGE" -maxdepth 1 -type f -iname 'data.*' -not -iname '*.iso' -exec mv -n {} "$dir/" \; + find "$STORAGE" -maxdepth 1 -type f -iname 'windows.*' -not -iname '*.iso' -exec mv -n {} "$dir/" \; + find "$STORAGE" -maxdepth 1 -type f \( -iname '*.rom' -or -iname '*.vars' \) -exec mv -n {} "$dir/" \; + + [ -z "$(ls -A "$dir")" ] && rm -rf "$dir" + [ -z "$(ls -A "$root")" ] && rm -rf "$root" + + return 0 +} + +skipInstall() { + + local iso="$1" + local method="" + local magic byte + local boot="$STORAGE/windows.boot" + local previous="$STORAGE/windows.base" + + if [ -f "$previous" ]; then + + previous=$(<"$previous") + previous="${previous//[![:print:]]/}" + + if [ -n "$previous" ]; then + if [[ "${STORAGE,,}/${previous,,}" != "${iso,,}" ]]; then + + if ! hasDisk; then + + rm -f "$STORAGE/$previous" + return 1 + + fi + + if [[ "${iso,,}" == "${STORAGE,,}/windows."* ]]; then + method="your custom .iso file was changed" + else + if [[ "${previous,,}" != "windows."* ]]; then + method="the VERSION variable was changed" + else + method="your custom .iso file was removed" + + if [ -f "$boot" ]; then + info "Detected that $method, will be ignored." + return 0 + fi + + fi + fi + + info "Detected that $method, a backup of your previous installation will be saved..." + ! backup "$STORAGE/$previous" && error "Backup failed!" + + return 1 + + fi + fi + + fi + + [ -f "$boot" ] && hasDisk && return 0 + + [ ! -f "$iso" ] && return 1 + [ ! -s "$iso" ] && return 1 + + # Check if the ISO was already processed by our script + magic=$(dd if="$iso" seek=0 bs=1 count=1 status=none | tr -d '\000') + magic="$(printf '%s' "$magic" | od -A n -t x1 -v | tr -d ' \n')" + byte="16" && [[ "$MANUAL" == [Yy1]* ]] && byte="17" + + if [[ "$magic" != "$byte" ]]; then + + info "The ISO will be processed again because the configuration was changed..." + return 1 + + fi + + return 0 +} + +startInstall() { + + html "Starting $APP..." + + if [ -z "$CUSTOM" ]; then + + local file="${VERSION//\//}.iso" + + if [[ "${VERSION,,}" == "http"* ]]; then + + file=$(basename "${VERSION%%\?*}") + printf -v file '%b' "${file//%/\\x}" + file="${file//[!A-Za-z0-9._-]/_}" + + else + + local language + language=$(getLanguage "$LANGUAGE" "culture") + language="${language%%-*}" + + if [ -n "$language" ] && [[ "${language,,}" != "en" ]]; then + file="${VERSION//\//}_${language,,}.iso" + fi + + fi + + BOOT="$STORAGE/$file" + + fi + + TMP="$STORAGE/tmp" + rm -rf "$TMP" + + skipInstall "$BOOT" && return 1 + + if hasDisk; then + ! backup "" && error "Backup failed!" + fi + + if ! makeDir "$TMP"; then + error "Failed to create directory \"$TMP\" !" + fi + + if [ -z "$CUSTOM" ]; then + + ISO=$(basename "$BOOT") + ISO="$TMP/$ISO" + + if [ -f "$BOOT" ] && [ -s "$BOOT" ]; then + mv -f "$BOOT" "$ISO" + fi + + fi + + rm -f "$BOOT" + + find "$STORAGE" -maxdepth 1 -type f -iname 'data.*' -not -iname '*.iso' -delete + find "$STORAGE" -maxdepth 1 -type f -iname 'windows.*' -not -iname '*.iso' -delete + find "$STORAGE" -maxdepth 1 -type f \( -iname '*.rom' -or -iname '*.vars' \) -delete + + return 0 +} + +writeFile() { + + local txt="$1" + local path="$2" + + echo "$txt" >"$path" + + if ! setOwner "$path"; then + error "Failed to set the owner for \"$path\" !" + fi + + return 0 +} + +finishInstall() { + + local iso="$1" + local aborted="$2" + local base byte + + if [ ! -s "$iso" ] || [ ! -f "$iso" ]; then + error "Failed to find ISO file: $iso" && return 1 + fi + + if [[ "$iso" == "$STORAGE/"* ]]; then + ! setOwner "$iso" && error "Failed to set the owner for \"$iso\" !" + fi + + if [[ "$aborted" != [Yy1]* ]]; then + # Mark ISO as prepared via magic byte + byte="16" && [[ "$MANUAL" == [Yy1]* ]] && byte="17" + if ! printf '%b' "\x$byte" | dd of="$iso" bs=1 seek=0 count=1 conv=notrunc status=none; then + warn "failed to set magic byte in ISO file: $iso" + fi + fi + + local file="$STORAGE/windows.ver" + cp -f /run/version "$file" + ! setOwner "$file" && error "Failed to set the owner for \"$file\" !" + + if [[ "$iso" == "$STORAGE/"* ]]; then + if [[ "$aborted" != [Yy1]* ]] || [ -z "$CUSTOM" ]; then + base=$(basename "$iso") + file="$STORAGE/windows.base" + writeFile "$base" "$file" + fi + fi + + if [[ "${PLATFORM,,}" == "x64" ]]; then + if [[ "${BOOT_MODE,,}" == "windows_legacy" ]]; then + file="$STORAGE/windows.mode" + writeFile "$BOOT_MODE" "$file" + if [[ "${MACHINE,,}" != "q35" ]]; then + file="$STORAGE/windows.old" + writeFile "$MACHINE" "$file" + fi + else + # Enable secure boot + TPM on manual installs as Win11 requires + if [[ "$MANUAL" == [Yy1]* || "$aborted" == [Yy1]* ]]; then + if [[ "${DETECTED,,}" == "win11"* ]]; then + BOOT_MODE="windows_secure" + file="$STORAGE/windows.mode" + writeFile "$BOOT_MODE" "$file" + fi + fi + # Enable secure boot on multi-socket systems to workaround freeze + if [ -n "$SOCKETS" ] && [[ "$SOCKETS" != "1" ]]; then + BOOT_MODE="windows_secure" + file="$STORAGE/windows.mode" + writeFile "$BOOT_MODE" "$file" + fi + fi + fi + + if [ -n "${ARGS:-}" ]; then + ARGUMENTS="$ARGS ${ARGUMENTS:-}" + file="$STORAGE/windows.args" + writeFile "$ARGS" "$file" + fi + + if [ -n "${VGA:-}" ] && [[ "${VGA:-}" != "virtio"* ]]; then + file="$STORAGE/windows.vga" + writeFile "$VGA" "$file" + fi + + if [ -n "${USB:-}" ] && [[ "${USB:-}" != "qemu-xhci"* ]]; then + file="$STORAGE/windows.usb" + writeFile "$USB" "$file" + fi + + if [ -n "${DISK_TYPE:-}" ] && [[ "${DISK_TYPE:-}" != "scsi" ]]; then + file="$STORAGE/windows.type" + writeFile "$DISK_TYPE" "$file" + fi + + if [ -n "${ADAPTER:-}" ] && [[ "${ADAPTER:-}" != "virtio-net-pci" ]]; then + file="$STORAGE/windows.net" + writeFile "$ADAPTER" "$file" + fi + + rm -rf "$TMP" + return 0 +} + +abortInstall() { + + local dir="$1" + local iso="$2" + local efi + + [[ "${iso,,}" == *".esd" ]] && exit 60 + [[ "${UNPACK:-}" == [Yy1]* ]] && exit 60 + + efi=$(find "$dir" -maxdepth 1 -type d -iname efi -print -quit) + + if [ -z "$efi" ]; then + [[ "${PLATFORM,,}" == "x64" ]] && BOOT_MODE="windows_legacy" + fi + + if [ -n "$CUSTOM" ]; then + BOOT="$iso" + REMOVE="N" + else + if [[ "$iso" != "$BOOT" ]]; then + if ! mv -f "$iso" "$BOOT"; then + error "Failed to move ISO file: $iso" && return 1 + fi + fi + fi + + finishInstall "$BOOT" "Y" && return 0 + return 1 +} + +findFile() { + + local dir file base + local fname="$1" + local boot="$STORAGE/windows.boot" + + dir=$(find / -maxdepth 1 -type d -iname "$fname" -print -quit) + [ ! -d "$dir" ] && dir=$(find "$STORAGE" -maxdepth 1 -type d -iname "$fname" -print -quit) + + if [ -d "$dir" ]; then + if ! hasDisk || [ ! -f "$boot" ]; then + error "The bind $dir maps to a file that does not exist!" && return 1 + fi + fi + + file=$(find / -maxdepth 1 -type f -iname "$fname" -print -quit) + [ ! -s "$file" ] && file=$(find "$STORAGE" -maxdepth 1 -type f -iname "$fname" -print -quit) + + if [ ! -s "$file" ] && [[ "${VERSION,,}" != "http"* ]]; then + base=$(basename "$VERSION") + file="$STORAGE/$base" + fi + + if [ ! -f "$file" ] || [ ! -s "$file" ]; then + return 0 + fi + + local size + size="$(stat -c%s "$file")" + [ -z "$size" ] || [[ "$size" == "0" ]] && return 0 + + ISO="$file" + CUSTOM="$file" + BOOT="$STORAGE/windows.$size.iso" + + return 0 +} + +detectCustom() { + + CUSTOM="" + + ! findFile "custom.iso" && return 1 + [ -n "$CUSTOM" ] && return 0 + + ! findFile "boot.iso" && return 1 + [ -n "$CUSTOM" ] && return 0 + + return 0 +} + +extractESD() { + + local iso="$1" + local dir="$2" + local version="$3" + local desc="$4" + local size size_gb sizes space space_gb + local desc total total1 total2 total3 total4 + local imageIndex links links1 links2 links3 links4 + + local msg="Extracting $desc bootdisk" + info "$msg..." && html "$msg..." + + if [ "$(stat -c%s "$iso")" -lt 100000000 ]; then + error "Invalid ESD file: Size is smaller than 100 MB" && return 1 + fi + + rm -rf "$dir" + + if ! makeDir "$dir"; then + error "Failed to create directory \"$dir\" !" && return 1 + fi + + size=9606127360 + size_gb=$(formatBytes "$size") + space=$(df --output=avail -B 1 "$dir" | tail -n 1) + space_gb=$(formatBytes "$space") + + if (( size > space )); then + error "Not enough free space in $STORAGE, have $space_gb available but need at least $size_gb." && return 1 + fi + + local esdImageCount + esdImageCount=$(wimlib-imagex info "$iso" | awk '/Image Count:/ {print $3}') + + if [ -z "$esdImageCount" ]; then + error "Cannot read the image count in ESD file!" && return 1 + fi + + sizes=$(wimlib-imagex info "$iso" | grep "Total Bytes:") + links=$(wimlib-imagex info "$iso" | grep "Hard Link Bytes:") + + total1=$(awk "NR==1{ print; }" <<< "$sizes" | cut -d':' -f2 | sed 's/^ *//') + links1=$(awk "NR==1{ print; }" <<< "$links" | cut -d':' -f2 | sed 's/^ *//') + total=$(( total1 - links1 )) + + total3=$(awk "NR==3{ print; }" <<< "$sizes" | cut -d':' -f2 | sed 's/^ *//') + links3=$(awk "NR==3{ print; }" <<< "$links" | cut -d':' -f2 | sed 's/^ *//') + total3=$(( total3 - links3 )) + total3=$(( total3 + 60000000 )) + + /run/progress.sh "$dir" "$total" "$msg ([P])..." & + + imageIndex="1" + wimlib-imagex apply "$iso" "$imageIndex" "$dir" --quiet 2>/dev/null || { + retVal=$? + fKill "progress.sh" + error "Extracting $desc bootdisk failed ($retVal)" && return 1 + } + + fKill "progress.sh" + + local bootWimFile="$dir/sources/boot.wim" + local installWimFile="$dir/sources/install.wim" + + local msg="Extracting $desc environment" + info "$msg..." && html "$msg..." + + imageIndex="2" + /run/progress.sh "$bootWimFile" "$total3" "$msg ([P])..." & + + wimlib-imagex export "$iso" "$imageIndex" "$bootWimFile" --compress=none --quiet || { + retVal=$? + fKill "progress.sh" + error "Adding WinPE failed ($retVal)" && return 1 + } + + fKill "progress.sh" + + local msg="Extracting $desc setup" + info "$msg..." + + imageIndex="3" + /run/progress.sh "$bootWimFile" "$total3" "$msg ([P])..." & + + wimlib-imagex export "$iso" "$imageIndex" "$bootWimFile" --compress=none --boot --quiet || { + retVal=$? + fKill "progress.sh" + error "Adding Windows Setup failed ($retVal)" && return 1 + } + + fKill "progress.sh" + + if [[ "${PLATFORM,,}" == "x64" ]]; then + LABEL="CCCOMA_X64FRE_EN-US_DV9" + else + LABEL="CPBA_A64FRE_EN-US_DV9" + fi + + local msg="Extracting $desc image" + info "$msg..." && html "$msg..." + + local edition imageEdition + edition=$(getCatalog "$version" "name") + + if [ -z "$edition" ]; then + error "Invalid VERSION specified, value \"$version\" is not recognized!" && return 1 + fi + + for (( imageIndex=4; imageIndex<=esdImageCount; imageIndex++ )); do + + imageEdition=$(wimlib-imagex info "$iso" "$imageIndex" | grep '^Description:' | sed 's/Description:[ \t]*//') + [[ "${imageEdition,,}" != "${edition,,}" ]] && continue + + total4=$(du -sb "$iso" | cut -f1) + total4=$(( total4 + 3000000 )) + + /run/progress.sh "$installWimFile" "$total4" "$msg ([P])..." & + + wimlib-imagex export "$iso" "$imageIndex" "$installWimFile" --compress=LZMS --chunk-size 128K --quiet || { + retVal=$? + fKill "progress.sh" + error "Addition of $imageIndex to the $desc image failed ($retVal)" && return 1 + } + + fKill "progress.sh" + return 0 + + done + + fKill "progress.sh" + error "Failed to find product '$edition' in install.wim!" && return 1 +} + +extractImage() { + + local iso="$1" + local dir="$2" + local version="$3" + local desc="local ISO" + local file size size_gb space space_gb + + if [ -z "$CUSTOM" ]; then + desc="downloaded ISO" + if [[ "$version" != "http"* ]]; then + desc=$(printVersion "$version" "$desc") + fi + fi + + if [[ "${iso,,}" == *".esd" ]]; then + extractESD "$iso" "$dir" "$version" "$desc" && return 0 + return 1 + fi + + local msg="Extracting $desc image" + info "$msg..." && html "$msg..." + + rm -rf "$dir" + + if ! makeDir "$dir"; then + error "Failed to create directory \"$dir\" !" && return 1 + fi + + size=$(stat -c%s "$iso") + size_gb=$(formatBytes "$size") + space=$(df --output=avail -B 1 "$dir" | tail -n 1) + space_gb=$(formatBytes "$space") + + if (( size < 100000000 )); then + error "Invalid ISO file: Size is smaller than 100 MB" && return 1 + fi + + if (( size > space )); then + error "Not enough free space in $STORAGE, have $space_gb available but need at least $size_gb." && return 1 + fi + + rm -rf "$dir" + /run/progress.sh "$dir" "$size" "$msg ([P])..." & + + if ! 7z x "$iso" -o"$dir" > /dev/null; then + fKill "progress.sh" + error "Failed to extract ISO file: $iso" && return 1 + fi + + fKill "progress.sh" + + if [[ "${UNPACK:-}" != [Yy1]* ]]; then + + LABEL=$(isoinfo -d -i "$iso" | sed -n 's/Volume id: //p') + + else + + file=$(find "$dir" -maxdepth 1 -type f -iname "*.iso" -print -quit) + + if [ -z "$file" ]; then + error "Failed to find any .iso file in archive!" && return 1 + fi + + if ! 7z x "$file" -o"$dir" > /dev/null; then + error "Failed to extract archive!" && return 1 + fi + + LABEL=$(isoinfo -d -i "$file" | sed -n 's/Volume id: //p') + rm -f "$file" + + fi + + return 0 +} + +getPlatform() { + + local xml="$1" + local tag="ARCH" + local platform="x64" + local arch + + arch=$(sed -n "/$tag/{s/.*<$tag>\(.*\)<\/$tag>.*/\1/;p}" <<< "$xml") + + case "${arch,,}" in + "0" ) platform="x86" ;; + "9" ) platform="x64" ;; + "12" )platform="arm64" ;; + esac + + echo "$platform" + return 0 +} + +checkPlatform() { + + local xml="$1" + local platform compat + + platform=$(getPlatform "$xml") + + case "${platform,,}" in + "x86" ) compat="x64" ;; + "x64" ) compat="$platform" ;; + "arm64" ) compat="$platform" ;; + * ) compat="${PLATFORM,,}" ;; + esac + + [[ "${compat,,}" == "${PLATFORM,,}" ]] && return 0 + + error "You cannot boot ${platform^^} images on a $PLATFORM CPU!" + return 1 +} + +hasVersion() { + + local id="$1" + local tag="$2" + local xml="$3" + local edition + + [ ! -f "/run/assets/$id.xml" ] && return 1 + + edition=$(printEdition "$id" "") + [ -z "$edition" ] && return 1 + [[ "${xml,,}" != *"<${tag,,}>${edition,,}</${tag,,}>"* ]] && return 1 + + return 0 +} + +selectVersion() { + + local tag="$1" + local xml="$2" + local platform="$3" + local id name prefer + + name=$(sed -n "/$tag/{s/.*<$tag>\(.*\)<\/$tag>.*/\1/;p}" <<< "$xml") + [[ "$name" == *"Operating System"* ]] && name="" + [ -z "$name" ] && return 0 + + id=$(fromName "$name" "$platform") + [ -z "$id" ] && warn "Unknown ${tag,,}: '$name'" && return 0 + + prefer="$id-enterprise" + hasVersion "$prefer" "$tag" "$xml" && echo "$prefer" && return 0 + + prefer="$id-ultimate" + hasVersion "$prefer" "$tag" "$xml" && echo "$prefer" && return 0 + + prefer="$id" + hasVersion "$prefer" "$tag" "$xml" && echo "$prefer" && return 0 + + prefer=$(getVersion "$name" "$platform") + + echo "$prefer" + return 0 +} + +detectVersion() { + + local xml="$1" + local id platform + + platform=$(getPlatform "$xml") + id=$(selectVersion "DISPLAYNAME" "$xml" "$platform") + [ -z "$id" ] && id=$(selectVersion "PRODUCTNAME" "$xml" "$platform") + [ -z "$id" ] && id=$(selectVersion "NAME" "$xml" "$platform") + + echo "$id" + return 0 +} + +detectLanguage() { + + local xml="$1" + local lang="" + + if [[ "$xml" == *"LANGUAGE><DEFAULT>"* ]]; then + lang="${xml#*LANGUAGE><DEFAULT>}" + lang="${lang%%<*}" + else + if [[ "$xml" == *"FALLBACK><DEFAULT>"* ]]; then + lang="${xml#*FALLBACK><DEFAULT>}" + lang="${lang%%<*}" + fi + fi + + if [ -z "$lang" ]; then + warn "Language could not be detected from ISO!" && return 0 + fi + + local culture + culture=$(getLanguage "$lang" "culture") + [ -n "$culture" ] && LANGUAGE="$lang" && return 0 + + warn "Invalid language detected: \"$lang\"" + return 0 +} + +setXML() { + + local file="/custom.xml" + + if [ -d "$file" ]; then + error "The bind $file maps to a file that does not exist!" && exit 67 + fi + + [ ! -f "$file" ] || [ ! -s "$file" ] && file="$STORAGE/custom.xml" + [ ! -f "$file" ] || [ ! -s "$file" ] && file="/run/assets/custom.xml" + [ ! -f "$file" ] || [ ! -s "$file" ] && file="$1" + [ ! -f "$file" ] || [ ! -s "$file" ] && file="/run/assets/$DETECTED.xml" + [ ! -f "$file" ] || [ ! -s "$file" ] && return 1 + + XML="$file" + return 0 +} + +detectImage() { + + local dir="$1" + local version="$2" + local desc msg find language + + XML="" + + if [ -z "$DETECTED" ] && [ -z "$CUSTOM" ]; then + [[ "${version,,}" != "http"* ]] && DETECTED="$version" + fi + + if [ -n "$DETECTED" ]; then + + skipVersion "${DETECTED,,}" && return 0 + + if ! setXML "" && [[ "$MANUAL" != [Yy1]* ]]; then + MANUAL="Y" + desc=$(printEdition "$DETECTED" "this version") + warn "the answer file for $desc was not found ($DETECTED.xml), $FB." + fi + + return 0 + fi + + info "Detecting version from ISO image..." + + if detectLegacy "$dir"; then + desc=$(printEdition "$DETECTED" "$DETECTED") + info "Detected: $desc" + return 0 + fi + + local src wim info + src=$(find "$dir" -maxdepth 1 -type d -iname sources -print -quit) + + if [ ! -d "$src" ]; then + warn "failed to locate 'sources' folder in ISO image, $FB" && return 1 + fi + + wim=$(find "$src" -maxdepth 1 -type f \( -iname install.wim -or -iname install.esd \) -print -quit) + + if [ ! -f "$wim" ]; then + warn "failed to locate 'install.wim' or 'install.esd' in ISO image, $FB" && return 1 + fi + + info=$(wimlib-imagex info -xml "$wim" | iconv -f UTF-16LE -t UTF-8) + checkPlatform "$info" || exit 67 + + DETECTED=$(detectVersion "$info") + + if [ -z "$DETECTED" ]; then + msg="Failed to determine Windows version from image" + if setXML "" || [[ "$MANUAL" == [Yy1]* ]]; then + info "${msg}!" + else + MANUAL="Y" + warn "${msg}, $FB." + fi + return 0 + fi + + desc=$(printEdition "$DETECTED" "$DETECTED") + detectLanguage "$info" + + if [[ "${LANGUAGE,,}" != "en" && "${LANGUAGE,,}" != "en-"* ]]; then + language=$(getLanguage "$LANGUAGE" "desc") + desc+=" ($language)" + fi + + info "Detected: $desc" + setXML "" && return 0 + + if [[ "$DETECTED" == "win81x86"* || "$DETECTED" == "win10x86"* ]]; then + error "The 32-bit version of $desc is not supported!" && return 1 + fi + + msg="the answer file for $desc was not found ($DETECTED.xml)" + local fallback="/run/assets/${DETECTED%%-*}.xml" + + if setXML "$fallback" || [[ "$MANUAL" == [Yy1]* ]]; then + [[ "$MANUAL" != [Yy1]* ]] && warn "${msg}." + else + MANUAL="Y" + warn "${msg}, $FB." + fi + + return 0 +} + +prepareImage() { + + local iso="$1" + local dir="$2" + local desc missing + + desc=$(printVersion "$DETECTED" "$DETECTED") + + setMachine "$DETECTED" "$iso" "$dir" "$desc" || return 1 + skipVersion "$DETECTED" && return 0 + + if [[ "${BOOT_MODE,,}" != "windows_legacy" ]]; then + + [ -f "$dir/$ETFS" ] && [ -f "$dir/$EFISYS" ] && return 0 + + missing=$(basename "$dir/$EFISYS") + [ ! -f "$dir/$ETFS" ] && missing=$(basename "$dir/$ETFS") + + error "Failed to locate file \"${missing,,}\" in ISO image!" + return 1 + fi + + prepareLegacy "$iso" "$dir" "$desc" && return 0 + + error "Failed to extract boot image from ISO image!" + return 1 +} + +updateXML() { + + local asset="$1" + local language="$2" + local culture region user admin pass keyboard + + [ -z "$HEIGHT" ] && HEIGHT="720" + [ -z "$WIDTH" ] && WIDTH="1280" + + sed -i "s/>Windows for Docker</>$APP for $ENGINE</g" "$asset" + sed -i "s/<VerticalResolution>1080<\/VerticalResolution>/<VerticalResolution>$HEIGHT<\/VerticalResolution>/g" "$asset" + sed -i "s/<HorizontalResolution>1920<\/HorizontalResolution>/<HorizontalResolution>$WIDTH<\/HorizontalResolution>/g" "$asset" + + culture=$(getLanguage "$language" "culture") + + if [ -n "$culture" ] && [[ "${culture,,}" != "en-us" ]]; then + sed -i "s/<UILanguage>en-US<\/UILanguage>/<UILanguage>$culture<\/UILanguage>/g" "$asset" + fi + + region="$REGION" + [ -z "$region" ] && region="$culture" + + if [ -n "$region" ] && [[ "${region,,}" != "en-us" ]]; then + sed -i "s/<UserLocale>en-US<\/UserLocale>/<UserLocale>$region<\/UserLocale>/g" "$asset" + sed -i "s/<SystemLocale>en-US<\/SystemLocale>/<SystemLocale>$region<\/SystemLocale>/g" "$asset" + fi + + keyboard="$KEYBOARD" + [ -z "$keyboard" ] && keyboard="$culture" + + if [ -n "$keyboard" ] && [[ "${keyboard,,}" != "en-us" ]]; then + sed -i "s/<InputLocale>en-US<\/InputLocale>/<InputLocale>$keyboard<\/InputLocale>/g" "$asset" + sed -i "s/<InputLocale>0409:00000409<\/InputLocale>/<InputLocale>$keyboard<\/InputLocale>/g" "$asset" + fi + + user=$(echo "$USERNAME" | sed 's/[^[:alnum:]@!._-]//g') + + if [ -n "$user" ]; then + sed -i "s/-name \"Docker\"/-name \"$user\"/g" "$asset" + sed -i "s/<Name>Docker<\/Name>/<Name>$user<\/Name>/g" "$asset" + sed -i "s/where name=\"Docker\"/where name=\"$user\"/g" "$asset" + sed -i "s/<FullName>Docker<\/FullName>/<FullName>$user<\/FullName>/g" "$asset" + sed -i "s/<Username>Docker<\/Username>/<Username>$user<\/Username>/g" "$asset" + fi + + [ -n "$PASSWORD" ] && pass="$PASSWORD" || pass="admin" + + pw=$(printf '%s' "${pass}Password" | iconv -f utf-8 -t utf-16le | base64 -w 0) + admin=$(printf '%s' "${pass}AdministratorPassword" | iconv -f utf-8 -t utf-16le | base64 -w 0) + + sed -i "s/<Value>password<\/Value>/<Value>$admin<\/Value>/g" "$asset" + sed -i "s/<PlainText>true<\/PlainText>/<PlainText>false<\/PlainText>/g" "$asset" + sed -z "s/<Password>...........<Value \/>/<Password>\n <Value>$pw<\/Value>/g" -i "$asset" + sed -z "s/<Password>...............<Value \/>/<Password>\n <Value>$pw<\/Value>/g" -i "$asset" + sed -z "s/<AdministratorPassword>...........<Value \/>/<AdministratorPassword>\n <Value>$admin<\/Value>/g" -i "$asset" + sed -z "s/<AdministratorPassword>...............<Value \/>/<AdministratorPassword>\n <Value>$admin<\/Value>/g" -i "$asset" + + if [ -n "$EDITION" ]; then + [[ "${EDITION^^}" == "CORE" ]] && EDITION="STANDARDCORE" + sed -i "s/SERVERSTANDARD<\/Value>/SERVER${EDITION^^}<\/Value>/g" "$asset" + fi + + if [ -n "$KEY" ]; then + sed -i '/<ProductKey>/,/<\/ProductKey>/d' "$asset" + sed -i "s/<\/UserData>/ <ProductKey>\n <Key>${KEY}<\/Key>\n <WillShowUI>OnError<\/WillShowUI>\n <\/ProductKey>\n <\/UserData>/g" "$asset" + fi + + return 0 +} + +addDriver() { + + local id="$1" + local path="$2" + local target="$3" + local driver="$4" + local desc="" + local folder="" + + if [ -z "$id" ]; then + warn "no Windows version specified for \"$driver\" driver!" && return 0 + fi + + case "${id,,}" in + "win7x86"* ) folder="w7/x86" ;; + "win7x64"* ) folder="w7/amd64" ;; + "win81x64"* ) folder="w8.1/amd64" ;; + "win10x64"* ) folder="w10/amd64" ;; + "win11x64"* ) folder="w11/amd64" ;; + "win2025"* ) folder="2k25/amd64" ;; + "win2022"* ) folder="2k22/amd64" ;; + "win2019"* ) folder="2k19/amd64" ;; + "win2016"* ) folder="2k16/amd64" ;; + "win2012"* ) folder="2k12R2/amd64" ;; + "win2008"* ) folder="2k8R2/amd64" ;; + "win10arm64"* ) folder="w10/ARM64" ;; + "win11arm64"* ) folder="w11/ARM64" ;; + "winvistax86"* ) folder="2k8/x86" ;; + "winvistax64"* ) folder="2k8/amd64" ;; + esac + + if [ -z "$folder" ]; then + desc=$(printVersion "$id" "$id") + if [[ "${id,,}" != *"x86"* ]]; then + warn "no \"$driver\" driver available for \"$desc\" !" && return 0 + else + warn "no \"$driver\" driver available for the 32-bit version of \"$desc\" !" && return 0 + fi + fi + + [ ! -d "$path/$driver/$folder" ] && return 0 + + case "${id,,}" in + "winvista"* ) + [[ "${driver,,}" == "viorng" ]] && return 0 + ;; + esac + + local dest="$path/$target/$driver" + mkdir -p "$dest" || return 1 + cp -Lr "$path/$driver/$folder/." "$dest" || return 1 + + return 0 +} + +addDrivers() { + + local src="$1" + local tmp="$2" + local file="$3" + local index="$4" + local version="$5" + local drivers="$tmp/drivers" + + rm -rf "$drivers" + mkdir -p "$drivers" + + local msg="Adding drivers to image..." + info "$msg" && html "$msg" + + if [ -z "$version" ]; then + version="win11x64" + warn "Windows version unknown, falling back to Windows 11 drivers..." + fi + + if ! bsdtar -xf /var/drivers.txz -C "$drivers"; then + error "Failed to extract drivers from archive!" && return 1 + fi + + local target="\$WinPEDriver\$" + local dest="$drivers/$target" + mkdir -p "$dest" || return 1 + + wimlib-imagex update "$file" "$index" --command "delete --force --recursive /$target" >/dev/null || true + + addDriver "$version" "$drivers" "$target" "qxl" || return 1 + addDriver "$version" "$drivers" "$target" "viofs" || return 1 + addDriver "$version" "$drivers" "$target" "sriov" || return 1 + addDriver "$version" "$drivers" "$target" "smbus" || return 1 + addDriver "$version" "$drivers" "$target" "qxldod" || return 1 + addDriver "$version" "$drivers" "$target" "viorng" || return 1 + addDriver "$version" "$drivers" "$target" "viostor" || return 1 + addDriver "$version" "$drivers" "$target" "viomem" || return 1 + addDriver "$version" "$drivers" "$target" "NetKVM" || return 1 + addDriver "$version" "$drivers" "$target" "Balloon" || return 1 + addDriver "$version" "$drivers" "$target" "vioscsi" || return 1 + addDriver "$version" "$drivers" "$target" "pvpanic" || return 1 + addDriver "$version" "$drivers" "$target" "vioinput" || return 1 + addDriver "$version" "$drivers" "$target" "viogpudo" || return 1 + addDriver "$version" "$drivers" "$target" "vioserial" || return 1 + addDriver "$version" "$drivers" "$target" "qemupciserial" || return 1 + + case "${version,,}" in + "win11x64"* | "win2025"* ) + # Workaround Virtio GPU driver bug + local dst="$src/\$OEM\$/\$\$/Drivers" + mkdir -p "$dst" || return 1 + cp -Lr "$dest/." "$dst" || return 1 + rm -rf "$dest/viogpudo" + ;; + esac + + if ! wimlib-imagex update "$file" "$index" --command "add $dest /$target" >/dev/null; then + return 1 + fi + + rm -rf "$drivers" + return 0 +} + +updateImage() { + + local dir="$1" + local asset="$2" + local language="$3" + local tmp="/tmp/install" + local file="autounattend.xml" + local org="${file//.xml/.org}" + local dat="${file//.xml/.dat}" + local desc path src wim xml index result + + skipVersion "${DETECTED,,}" && return 0 + + if [ ! -s "$asset" ] || [ ! -f "$asset" ]; then + asset="" + if [[ "$MANUAL" != [Yy1]* ]]; then + MANUAL="Y" + warn "no answer file provided, $FB." + fi + fi + + rm -rf "$tmp" + mkdir -p "$tmp" + + src=$(find "$dir" -maxdepth 1 -type d -iname sources -print -quit) + + if [ ! -d "$src" ]; then + error "failed to locate 'sources' folder in ISO image, $FB" && return 1 + fi + + wim=$(find "$src" -maxdepth 1 -type f \( -iname boot.wim -or -iname boot.esd \) -print -quit) + + if [ ! -f "$wim" ]; then + error "failed to locate 'boot.wim' or 'boot.esd' in ISO image, $FB" && return 1 + fi + + index="1" + result=$(wimlib-imagex info -xml "$wim" | iconv -f UTF-16LE -t UTF-8) + + if [[ "${result^^}" == *"<IMAGE INDEX=\"2\">"* ]]; then + index="2" + fi + + if ! addDrivers "$src" "$tmp" "$wim" "$index" "$DETECTED"; then + error "Failed to add drivers to image!" + fi + + if ! addFolder "$src"; then + error "Failed to add OEM folder to image!" + fi + + if wimlib-imagex extract "$wim" "$index" "/$file" "--dest-dir=$tmp" >/dev/null 2>&1; then + if ! wimlib-imagex extract "$wim" "$index" "/$dat" "--dest-dir=$tmp" >/dev/null 2>&1; then + if ! wimlib-imagex extract "$wim" "$index" "/$org" "--dest-dir=$tmp" >/dev/null 2>&1; then + if ! wimlib-imagex update "$wim" "$index" --command "rename /$file /$org" > /dev/null; then + warn "failed to backup original answer file ($file)." + fi + fi + fi + fi + + if [[ "$MANUAL" != [Yy1]* ]]; then + + xml=$(basename "$asset") + info "Adding $xml for automatic installation..." + + local answer="$tmp/$xml" + cp "$asset" "$answer" + updateXML "$answer" "$language" + + if ! wimlib-imagex update "$wim" "$index" --command "add $answer /$file" > /dev/null; then + MANUAL="Y" + warn "failed to add answer file ($xml) to ISO image, $FB" + else + wimlib-imagex update "$wim" "$index" --command "add $answer /$dat" > /dev/null || true + fi + + fi + + if [[ "$MANUAL" == [Yy1]* ]]; then + + wimlib-imagex update "$wim" "$index" --command "delete --force /$file" > /dev/null || true + + if wimlib-imagex extract "$wim" "$index" "/$org" "--dest-dir=$tmp" >/dev/null 2>&1; then + if ! wimlib-imagex update "$wim" "$index" --command "add $tmp/$org /$file" > /dev/null; then + warn "failed to restore original answer file ($org)." + fi + fi + + fi + + local find="$file" + [[ "$MANUAL" == [Yy1]* ]] && find="$org" + path=$(find "$dir" -maxdepth 1 -type f -iname "$find" -print -quit) + + if [ -f "$path" ]; then + if [[ "$MANUAL" != [Yy1]* ]]; then + mv -f "$path" "${path%.*}.org" + else + mv -f "$path" "${path%.*}.xml" + fi + fi + + rm -rf "$tmp" + return 0 +} + +removeImage() { + + local iso="$1" + + [ ! -f "$iso" ] && return 0 + [ -n "$CUSTOM" ] && return 0 + + rm -f "$iso" 2> /dev/null || warn "failed to remove $iso !" + + return 0 +} + +buildImage() { + + local dir="$1" + local failed="" + local cat="BOOT.CAT" + local log="/run/shm/iso.log" + local base size size_gb space space_gb desc + + if [ -f "$BOOT" ]; then + error "File $BOOT does already exist?!" && return 1 + fi + + base=$(basename "$BOOT") + local out="$TMP/${base%.*}.tmp" + rm -f "$out" + + desc=$(printVersion "$DETECTED" "ISO") + + local msg="Building $desc image" + info "$msg..." && html "$msg..." + + [ -z "$LABEL" ] && LABEL="Windows" + + if [ ! -f "$dir/$ETFS" ]; then + error "Failed to locate file \"$ETFS\" in ISO image!" && return 1 + fi + + size=$(du -h -b --max-depth=0 "$dir" | cut -f1) + size_gb=$(formatBytes "$size") + space=$(df --output=avail -B 1 "$TMP" | tail -n 1) + space_gb=$(formatBytes "$space") + + if (( size > space )); then + error "Not enough free space in $STORAGE, have $space_gb available but need at least $size_gb." && return 1 + fi + + /run/progress.sh "$out" "$size" "$msg ([P])..." & + + if [[ "${BOOT_MODE,,}" != "windows_legacy" ]]; then + + genisoimage -o "$out" -b "$ETFS" -no-emul-boot -c "$cat" -iso-level 4 -J -l -D -N -joliet-long -relaxed-filenames -V "${LABEL::30}" \ + -udf -boot-info-table -eltorito-alt-boot -eltorito-boot "$EFISYS" -no-emul-boot -allow-limited-size -quiet "$dir" 2> "$log" || failed="y" + + else + + case "${DETECTED,,}" in + "win2k"* | "winxp"* | "win2003"* ) + genisoimage -o "$out" -b "$ETFS" -no-emul-boot -boot-load-seg 1984 -boot-load-size 4 -c "$cat" -iso-level 2 -J -l -D -N -joliet-long \ + -relaxed-filenames -V "${LABEL::30}" -quiet "$dir" 2> "$log" || failed="y" ;; + "win9"* ) + genisoimage -o "$out" -b "$ETFS" -J -r -V "${LABEL::30}" -quiet "$dir" 2> "$log" || failed="y" ;; + * ) + genisoimage -o "$out" -b "$ETFS" -no-emul-boot -c "$cat" -iso-level 2 -J -l -D -N -joliet-long -relaxed-filenames -V "${LABEL::30}" \ + -udf -allow-limited-size -quiet "$dir" 2> "$log" || failed="y" ;; + esac + + fi + + fKill "progress.sh" + + if [ -n "$failed" ]; then + [ -s "$log" ] && echo "$(<"$log")" + error "Failed to build image!" && return 1 + fi + + local error="" + local hide="Warning: creating filesystem that does not conform to ISO-9660." + + [ -s "$log" ] && error="$(<"$log")" + [[ "$error" != "$hide" ]] && echo "$error" + + mv -f "$out" "$BOOT" || return 1 + ! setOwner "$BOOT" && error "Failed to set the owner for \"$BOOT\" !" + + return 0 +} + +bootWindows() { + + if [ -f "$STORAGE/windows.args" ]; then + ARGS=$(<"$STORAGE/windows.args") + ARGS="${ARGS//[![:print:]]/}" + ARGUMENTS="$ARGS ${ARGUMENTS:-}" + fi + + if [ -s "$STORAGE/windows.vga" ] && [ -f "$STORAGE/windows.vga" ]; then + if [ -z "${VGA:-}" ]; then + VGA=$(<"$STORAGE/windows.vga") + VGA="${VGA//[![:print:]]/}" + fi + fi + + if [ -s "$STORAGE/windows.usb" ] && [ -f "$STORAGE/windows.usb" ]; then + if [ -z "${USB:-}" ]; then + USB=$(<"$STORAGE/windows.usb") + USB="${USB//[![:print:]]/}" + fi + fi + + if [ -s "$STORAGE/windows.net" ] && [ -f "$STORAGE/windows.net" ]; then + if [ -z "${ADAPTER:-}" ]; then + ADAPTER=$(<"$STORAGE/windows.net") + ADAPTER="${ADAPTER//[![:print:]]/}" + fi + fi + + if [ -s "$STORAGE/windows.type" ] && [ -f "$STORAGE/windows.type" ]; then + if [ -z "${DISK_TYPE:-}" ]; then + DISK_TYPE=$(<"$STORAGE/windows.type") + DISK_TYPE="${DISK_TYPE//[![:print:]]/}" + fi + fi + + if [ -s "$STORAGE/windows.mode" ] && [ -f "$STORAGE/windows.mode" ]; then + BOOT_MODE=$(<"$STORAGE/windows.mode") + BOOT_MODE="${BOOT_MODE//[![:print:]]/}" + fi + + if [ -s "$STORAGE/windows.old" ] && [ -f "$STORAGE/windows.old" ]; then + if [[ "${PLATFORM,,}" == "x64" ]]; then + MACHINE=$(<"$STORAGE/windows.old") + MACHINE="${MACHINE//[![:print:]]/}" + fi + fi + + return 0 +} + +###################################### + +! parseVersion && exit 58 +! parseLanguage && exit 56 +! detectCustom && exit 59 + +if ! startInstall; then + bootWindows && return 0 + exit 68 +fi + +if [ ! -s "$ISO" ] || [ ! -f "$ISO" ]; then + if ! downloadImage "$ISO" "$VERSION" "$LANGUAGE"; then + rm -f "$ISO" 2> /dev/null || true + exit 61 + fi +fi + +DIR="$TMP/unpack" + +if ! extractImage "$ISO" "$DIR" "$VERSION"; then + rm -f "$ISO" 2> /dev/null || true + exit 62 +fi + +if ! detectImage "$DIR" "$VERSION"; then + abortInstall "$DIR" "$ISO" && return 0 + exit 60 +fi + +if ! prepareImage "$ISO" "$DIR"; then + abortInstall "$DIR" "$ISO" && return 0 + exit 66 +fi + +if ! updateImage "$DIR" "$XML" "$LANGUAGE"; then + abortInstall "$DIR" "$ISO" && return 0 + exit 63 +fi + +if ! removeImage "$ISO"; then + exit 64 +fi + +if ! buildImage "$DIR"; then + exit 65 +fi + +if ! finishInstall "$BOOT" "N"; then + exit 69 +fi + +html "Successfully prepared image for installation..." +return 0 diff --git a/apps/rego-tunnel/build/src/mido.sh b/apps/rego-tunnel/build/src/mido.sh new file mode 100644 index 0000000..369fc17 --- /dev/null +++ b/apps/rego-tunnel/build/src/mido.sh @@ -0,0 +1,834 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +handle_curl_error() { + + local error_code="$1" + local server_name="$2" + + case "$error_code" in + 1) error "Unsupported protocol!" ;; + 2) error "Failed to initialize curl!" ;; + 3) error "The URL format is malformed!" ;; + 5) error "Failed to resolve address of proxy host!" ;; + 6) error "Failed to resolve $server_name servers! Is there an Internet connection?" ;; + 7) error "Failed to contact $server_name servers! Is there an Internet connection or is the server down?" ;; + 8) error "$server_name servers returned a malformed HTTP response!" ;; + 16) error "A problem was detected in the HTTP2 framing layer!" ;; + 22) error "$server_name servers returned a failing HTTP status code!" ;; + 23) error "Failed at writing Windows media to disk! Out of disk space or permission error?" ;; + 26) error "Failed to read Windows media from disk!" ;; + 27) error "Ran out of memory during download!" ;; + 28) error "Connection timed out to $server_name server!" ;; + 35) error "SSL connection error from $server_name server!" ;; + 36) error "Failed to continue earlier download!" ;; + 52) error "Received no data from the $server_name server!" ;; + 63) error "$server_name servers returned an unexpectedly large response!" ;; + # POSIX defines exit statuses 1-125 as usable by us + # https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_08_02 + $((error_code <= 125))) + # Must be some other server or network error (possibly with this specific request/file) + # This is when accounting for all possible errors in the curl manual assuming a correctly formed curl command and an HTTP(S) request, using only the curl features we're using, and a sane build + error "Miscellaneous server or network error, reason: $error_code" + ;; + 126 | 127 ) error "Curl command not found!" ;; + # Exit statuses are undefined by POSIX beyond this point + *) + case "$(kill -l "$error_code")" in + # Signals defined to exist by POSIX: + # https://pubs.opengroup.org/onlinepubs/009695399/basedefs/signal.h.html + INT) error "Curl was interrupted!" ;; + # There could be other signals but these are most common + SEGV | ABRT ) error "Curl crashed! Please report any core dumps to curl developers." ;; + *) error "Curl terminated due to fatal signal $error_code !" ;; + esac + esac + + return 1 +} + +get_agent() { + + local user_agent + + # Determine approximate latest Firefox release + browser_version="$((124 + ($(date +%s) - 1710892800) / 2419200))" + echo "Mozilla/5.0 (X11; Linux x86_64; rv:${browser_version}.0) Gecko/20100101 Firefox/${browser_version}.0" + + return 0 +} + +download_windows() { + + local id="$1" + local lang="$2" + local desc="$3" + local sku_id="" + local sku_url="" + local iso_url="" + local iso_json="" + local language="" + local session_id="" + local user_agent="" + local download_type="" + local windows_version="" + local iso_download_link="" + local download_page_html="" + local product_edition_id="" + local language_skuid_json="" + local profile="606624d44113" + + user_agent=$(get_agent) + language=$(getLanguage "$lang" "name") + + case "${id,,}" in + "win11x64" ) windows_version="11" && download_type="1" ;; + "win10x64" ) windows_version="10" && download_type="1" ;; + "win11arm64" ) windows_version="11arm64" && download_type="2" ;; + * ) error "Invalid VERSION specified, value \"$id\" is not recognized!" && return 1 ;; + esac + + local url="https://www.microsoft.com/en-us/software-download/windows$windows_version" + [[ "${id,,}" == "win10"* ]] && url+="ISO" + + # uuidgen: For MacOS (installed by default) and other systems (e.g. with no /proc) that don't have a kernel interface for generating random UUIDs + session_id=$(cat /proc/sys/kernel/random/uuid 2> /dev/null || uuidgen --random) + session_id="${session_id//[![:print:]]/}" + + # Get product edition ID for latest release of given Windows version + # Product edition ID: This specifies both the Windows release (e.g. 22H2) and edition ("multi-edition" is default, either Home/Pro/Edu/etc., we select "Pro" in the answer files) in one number + # This is the *only* request we make that Fido doesn't. Fido manually maintains a list of all the Windows release/edition product edition IDs in its script (see: $WindowsVersions array). This is helpful for downloading older releases (e.g. Windows 10 1909, 21H1, etc.) but we always want to get the newest release which is why we get this value dynamically + # Also, keeping a "$WindowsVersions" array like Fido does would be way too much of a maintenance burden + # Remove "Accept" header that curl sends by default + [[ "$DEBUG" == [Yy1]* ]] && echo "Parsing download page: ${url}" + download_page_html=$(curl --silent --max-time 30 --user-agent "$user_agent" --header "Accept:" --max-filesize 1M --fail --proto =https --tlsv1.2 --http1.1 -- "$url") || { + handle_curl_error "$?" "Microsoft" + return $? + } + + [[ "$DEBUG" == [Yy1]* ]] && echo -n "Getting Product edition ID: " + product_edition_id=$(echo "$download_page_html" | grep -Eo '<option value="[0-9]+">Windows' | cut -d '"' -f 2 | head -n 1 | tr -cd '0-9' | head -c 16) + [[ "$DEBUG" == [Yy1]* ]] && echo "$product_edition_id" + + if [ -z "$product_edition_id" ]; then + error "Product edition ID not found!" + return 1 + fi + + [[ "$DEBUG" == [Yy1]* ]] && echo "Permit Session ID: $session_id" + # Permit Session ID + curl --silent --max-time 30 --output /dev/null --user-agent "$user_agent" --header "Accept:" --max-filesize 100K --fail --proto =https --tlsv1.2 --http1.1 -- "https://vlscppe.microsoft.com/tags?org_id=y6jn8c31&session_id=$session_id" || { + # This should only happen if there's been some change to how this API works + handle_curl_error "$?" "Microsoft" + return $? + } + + [[ "$DEBUG" == [Yy1]* ]] && echo -n "Getting language SKU ID: " + sku_url="https://www.microsoft.com/software-download-connector/api/getskuinformationbyproductedition?profile=$profile&ProductEditionId=$product_edition_id&SKU=undefined&friendlyFileName=undefined&Locale=en-US&sessionID=$session_id" + language_skuid_json=$(curl --silent --max-time 30 --request GET --user-agent "$user_agent" --referer "$url" --header "Accept:" --max-filesize 100K --fail --proto =https --tlsv1.2 --http1.1 -- "$sku_url") || { + handle_curl_error "$?" "Microsoft" + return $? + } + + { sku_id=$(echo "$language_skuid_json" | jq --arg LANG "$language" -r '.Skus[] | select(.Language==$LANG).Id') 2>/dev/null; rc=$?; } || : + + if [ -z "$sku_id" ] || [[ "${sku_id,,}" == "null" ]] || (( rc != 0 )); then + language=$(getLanguage "$lang" "desc") + error "No download in the $language language available for $desc!" + return 1 + fi + + [[ "$DEBUG" == [Yy1]* ]] && echo "$sku_id" + [[ "$DEBUG" == [Yy1]* ]] && echo "Getting 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) + + iso_url="https://www.microsoft.com/software-download-connector/api/GetProductDownloadLinksBySku?profile=$profile&ProductEditionId=undefined&SKU=$sku_id&friendlyFileName=undefined&Locale=en-US&sessionID=$session_id" + iso_json=$(curl --silent --max-time 30 --request GET --user-agent "$user_agent" --referer "$url" --header "Accept:" --max-filesize 100K --fail --proto =https --tlsv1.2 --http1.1 -- "$iso_url") + + if ! [ "$iso_json" ]; then + # This should only happen if there's been some change to how this API works + error "Microsoft servers gave us an empty response to our request for an automated download." + return 1 + fi + + if echo "$iso_json" | grep -q "Sentinel marked this request as rejected."; then + error "Microsoft blocked the automated download request based on your IP address." + return 1 + fi + + if echo "$iso_json" | grep -q "We are unable to complete your request at this time."; then + error "Microsoft blocked the automated download request based on your IP address." + return 1 + fi + + { iso_download_link=$(echo "$iso_json" | jq --argjson TYPE "$download_type" -r '.ProductDownloadOptions[] | select(.DownloadType==$TYPE).Uri') 2>/dev/null; rc=$?; } || : + + if [ -z "$iso_download_link" ] || [[ "${iso_download_link,,}" == "null" ]] || (( rc != 0 )); then + error "Microsoft servers gave us no download link to our request for an automated download!" + info "Response: $iso_json" + return 1 + fi + + MIDO_URL="$iso_download_link" + return 0 +} + +download_windows_eval() { + + local id="$1" + local lang="$2" + local desc="$3" + local filter="" + local culture="" + local compare="" + local language="" + local user_agent="" + local enterprise_type="" + local windows_version="" + + case "${id,,}" in + "win11${PLATFORM,,}-enterprise-eval" ) + enterprise_type="enterprise" + windows_version="windows-11-enterprise" ;; + "win11${PLATFORM,,}-enterprise-iot-eval" ) + enterprise_type="iot" + windows_version="windows-11-iot-enterprise-ltsc-eval" ;; + "win11${PLATFORM,,}-enterprise-ltsc-eval" ) + enterprise_type="iot" + windows_version="windows-11-iot-enterprise-ltsc-eval" ;; + "win10${PLATFORM,,}-enterprise-eval" ) + enterprise_type="enterprise" + windows_version="windows-10-enterprise" ;; + "win10${PLATFORM,,}-enterprise-ltsc-eval" ) + enterprise_type="ltsc" + windows_version="windows-10-enterprise" ;; + "win2025-eval" ) + enterprise_type="server" + windows_version="windows-server-2025" ;; + "win2022-eval" ) + enterprise_type="server" + windows_version="windows-server-2022" ;; + "win2019-hv" ) + enterprise_type="server" + windows_version="hyper-v-server-2019" ;; + "win2019-eval" ) + enterprise_type="server" + windows_version="windows-server-2019" ;; + "win2016-eval" ) + enterprise_type="server" + windows_version="windows-server-2016" ;; + "win2012r2-eval" ) + enterprise_type="server" + windows_version="windows-server-2012-r2" ;; + * ) + error "Invalid VERSION specified, value \"$id\" is not recognized!" && return 1 ;; + esac + + user_agent=$(get_agent) + culture=$(getLanguage "$lang" "culture") + + local country="${culture#*-}" + local iso_download_page_html="" + local url="https://www.microsoft.com/en-us/evalcenter/download-$windows_version" + + [[ "$DEBUG" == [Yy1]* ]] && echo "Parsing download page: ${url}" + iso_download_page_html=$(curl --silent --max-time 30 --user-agent "$user_agent" --location --max-filesize 1M --fail --proto =https --tlsv1.2 --http1.1 -- "$url") || { + handle_curl_error "$?" "Microsoft" + return $? + } + + if ! [ "$iso_download_page_html" ]; then + # This should only happen if there's been some change to where this download page is located + error "Windows server download page gave us an empty response" + return 1 + fi + + [[ "$DEBUG" == [Yy1]* ]] && echo "Getting download link.." + + filter="https://go.microsoft.com/fwlink/?linkid=[0-9]\+&clcid=0x[0-9a-z]\+&culture=${culture,,}&country=${country,,}" + + if ! echo "$iso_download_page_html" | grep -io "$filter" > /dev/null; then + filter="https://go.microsoft.com/fwlink/p/?linkid=[0-9]\+&clcid=0x[0-9a-z]\+&culture=${culture,,}&country=${country,,}" + fi + + iso_download_links=$(echo "$iso_download_page_html" | grep -io "$filter") || { + # This should only happen if there's been some change to the download endpoint web address + if [[ "${lang,,}" == "en" || "${lang,,}" == "en-"* ]]; then + error "Windows server download page gave us no download link!" + else + language=$(getLanguage "$lang" "desc") + error "No download in the $language language available for $desc!" + fi + return 1 + } + + case "$enterprise_type" in + "iot" | "ltsc" ) + case "${PLATFORM,,}" in + "x64" ) + if [[ "$windows_version" != "windows-10"* ]]; then + iso_download_link=$(echo "$iso_download_links" | head -n 1) + else + iso_download_link=$(echo "$iso_download_links" | head -n 4 | tail -n 1) + fi ;; + "arm64" ) + iso_download_link=$(echo "$iso_download_links" | head -n 2 | tail -n 1) ;; + esac ;; + "enterprise" ) + case "${PLATFORM,,}" in + "x64" ) + if [[ "$windows_version" != "windows-10"* ]]; then + iso_download_link=$(echo "$iso_download_links" | head -n 1) + else + iso_download_link=$(echo "$iso_download_links" | head -n 2 | tail -n 1) + fi ;; + "arm64" ) + iso_download_link=$(echo "$iso_download_links" | head -n 2 | tail -n 1) ;; + esac ;; + "server" ) + case "${PLATFORM,,}" in + "x64" ) + iso_download_link=$(echo "$iso_download_links" | head -n 1) ;; + esac ;; + * ) + error "Invalid type specified, value \"$enterprise_type\" is not recognized!" && return 1 ;; + esac + + [ -z "$iso_download_link" ] && error "Could not parse download link from page!" && return 1 + + # Follow redirect so proceeding log message is useful + # This is a request we make that Fido doesn't + + iso_download_link=$(curl --silent --max-time 30 --user-agent "$user_agent" --location --output /dev/null --silent --write-out "%{url_effective}" --head --fail --proto =https --tlsv1.2 --http1.1 -- "$iso_download_link") || { + # This should only happen if the Microsoft servers are down + handle_curl_error "$?" "Microsoft" + return $? + } + + case "${PLATFORM,,}" in + "x64" ) + if [[ "${iso_download_link,,}" != *"x64"* ]]; then + echo "Found download link: $iso_download_link" + error "Download link is for the wrong platform? Please report this at $SUPPORT/issues" + return 1 + fi ;; + "arm64" ) + if [[ "${iso_download_link,,}" != *"a64"* && "${iso_download_link,,}" != *"arm64"* ]]; then + if [[ "$DEBUG" == [Yy1]* ]]; then + echo "Found download link: $iso_download_link" + echo "Link for ARM platform currently not available!" + fi + return 1 + fi ;; + esac + + if [[ "$DEBUG" == [Yy1]* && "$VERIFY" == [Yy1]* && "${lang,,}" == "en"* ]]; then + compare=$(getMido "$id" "$lang" "") + if [[ "${iso_download_link,,}" != "${compare,,}" ]]; then + echo "Retrieved link does not match the fixed link: $compare" + fi + fi + + MIDO_URL="$iso_download_link" + return 0 +} + +getWindows() { + + local version="$1" + local lang="$2" + local desc="$3" + + local language edition + language=$(getLanguage "$lang" "desc") + edition=$(printEdition "$version" "$desc") + + local msg="Requesting $desc from the Microsoft servers..." + info "$msg" && html "$msg" + + case "${version,,}" in + "win2008r2" | "win81${PLATFORM,,}"* | "win11${PLATFORM,,}-enterprise-iot"* | "win11${PLATFORM,,}-enterprise-ltsc"* ) + if [[ "${lang,,}" != "en" && "${lang,,}" != "en-"* ]]; then + error "No download in the $language language available for $edition!" + MIDO_URL="" && return 1 + fi ;; + esac + + case "${version,,}" in + "win11${PLATFORM,,}" ) ;; + "win11${PLATFORM,,}-enterprise"* ) ;; + * ) + if [[ "${PLATFORM,,}" != "x64" ]]; then + error "No download for the ${PLATFORM^^} platform available for $edition!" + MIDO_URL="" && return 1 + fi ;; + esac + + case "${version,,}" in + "win10${PLATFORM,,}" | "win11${PLATFORM,,}" ) + download_windows "$version" "$lang" "$edition" && return 0 + ;; + "win11${PLATFORM,,}-enterprise"* | "win10${PLATFORM,,}-enterprise"* ) + download_windows_eval "$version" "$lang" "$edition" && return 0 + ;; + "win2025-eval" | "win2022-eval" | "win2019-eval" | "win2019-hv" | "win2016-eval" | "win2012r2-eval" ) + download_windows_eval "$version" "$lang" "$edition" && return 0 + ;; + "win81${PLATFORM,,}-enterprise"* | "win2008r2" ) + ;; + * ) error "Invalid VERSION specified, value \"$version\" is not recognized!" ;; + esac + + MIDO_URL=$(getMido "$version" "$lang" "") + [ -z "$MIDO_URL" ] && return 1 + + return 0 +} + +getBuild() { + + local id="$1" + local ret="$2" + local url="" + local name="" + local build="$3" + local edition="" + local file="catalog.xml" + + case "${id,,}" in + "win11${PLATFORM,,}" ) + name="Windows 11 Pro" + url="https://worproject.com/dldserv/esd/getcatalog.php?build=${build}&arch=${PLATFORM^^}&edition=Professional" ;; + "win11${PLATFORM,,}-enterprise" | "win11${PLATFORM,,}-enterprise-eval") + name="Windows 11 Enterprise" + url="https://worproject.com/dldserv/esd/getcatalog.php?build=${build}&arch=${PLATFORM^^}&edition=Enterprise" ;; + esac + + case "${ret,,}" in + "url" ) echo "$url" ;; + "file" ) echo "$file" ;; + "name" ) echo "$name" ;; + "edition" ) echo "$edition" ;; + *) echo "";; + esac + + return 0 +} + +getCatalog() { + + local id="$1" + local ret="$2" + local url="" + local name="" + local edition="" + local file="catalog.cab" + + if [[ "${id,,}" == "win11"* ]] && ! isCompatible; then + # ARMv8.0 cannot run Windows 11 builds 24H2 and up. + getBuild "$1" "$2" "22631.2861" && return 0 + fi + + case "${id,,}" in + "win11${PLATFORM,,}" ) + edition="Professional" + name="Windows 11 Pro" + url="https://go.microsoft.com/fwlink?linkid=2156292" ;; + "win10${PLATFORM,,}" ) + edition="Professional" + name="Windows 10 Pro" + url="https://go.microsoft.com/fwlink/?LinkId=841361" ;; + "win11${PLATFORM,,}-enterprise" | "win11${PLATFORM,,}-enterprise-eval") + edition="Enterprise" + name="Windows 11 Enterprise" + url="https://go.microsoft.com/fwlink?linkid=2156292" ;; + "win10${PLATFORM,,}-enterprise" | "win10${PLATFORM,,}-enterprise-eval" ) + edition="Enterprise" + name="Windows 10 Enterprise" + url="https://go.microsoft.com/fwlink/?LinkId=841361" ;; + esac + + case "${ret,,}" in + "url" ) echo "$url" ;; + "file" ) echo "$file" ;; + "name" ) echo "$name" ;; + "edition" ) echo '[Edition="'"${edition}"'"]' ;; + *) echo "";; + esac + + return 0 +} + +getESD() { + + local dir="$1" + local version="$2" + local lang="$3" + local desc="$4" + local file + local result + local culture + local language + local edition + local catalog + + file=$(getCatalog "$version" "file") + catalog=$(getCatalog "$version" "url") + culture=$(getLanguage "$lang" "culture") + edition=$(getCatalog "$version" "edition") + + if [ -z "$file" ] || [ -z "$catalog" ]; then + error "Invalid VERSION specified, value \"$version\" is not recognized!" && return 1 + fi + + local msg="Downloading catalog..." + info "$msg" && html "$msg" + + rm -rf "$dir" + + if ! makeDir "$dir"; then + error "Failed to create directory \"$dir\" !" && return 1 + fi + + local xFile="products.xml" + local eFile="esd_edition.xml" + local fFile="products_filter.xml" + + { wget "$catalog" -O "$dir/$file" -q --timeout=30 --no-http-keep-alive; rc=$?; } || : + + msg="Failed to download $catalog" + (( rc == 3 )) && error "$msg , cannot write file (disk full?)" && return 1 + (( rc == 4 )) && error "$msg , network failure!" && return 1 + (( rc == 8 )) && error "$msg , server issued an error response!" && return 1 + (( rc != 0 )) && error "$msg , reason: $rc" && return 1 + + if [[ "$file" == *".xml" ]]; then + + mv -f "$dir/$file" "$dir/$xFile" + + else + + cd "$dir" + + if ! cabextract "$file" > /dev/null; then + cd /run + error "Failed to extract $file!" && return 1 + fi + + cd /run + + fi + + if [ ! -s "$dir/$xFile" ]; then + error "Failed to find $xFile in $file!" && return 1 + fi + + local edQuery='//File[Architecture="'${PLATFORM,,}'"]'"${edition}"'' + result=$(xmllint --nonet --xpath "${edQuery}" "$dir/$xFile" 2>/dev/null) + + if [ -z "$result" ]; then + + edQuery='//File[Architecture="'${PLATFORM^^}'"]'"${edition}"'' + + result=$(xmllint --nonet --xpath "${edQuery}" "$dir/$xFile" 2>/dev/null) + + if [ -z "$result" ]; then + desc=$(printEdition "$version" "$desc") + language=$(getLanguage "$lang" "desc") + error "No download link available for $desc!" && return 1 + fi + + fi + + echo -e '<Catalog>' > "$dir/$fFile" + echo "$result" >> "$dir/$fFile" + echo -e '</Catalog>'>> "$dir/$fFile" + + result=$(xmllint --nonet --xpath "//File[LanguageCode=\"${culture,,}\"]" "$dir/$fFile" 2>/dev/null) + + if [ -z "$result" ]; then + desc=$(printEdition "$version" "$desc") + language=$(getLanguage "$lang" "desc") + error "No download in the $language language available for $desc!" && return 1 + fi + + echo "$result" > "$dir/$eFile" + + local tag="FilePath" + ESD=$(xmllint --nonet --xpath "//$tag" "$dir/$eFile" | sed -E -e "s/<[\/]?$tag>//g" 2>/dev/null) + + if [ -z "$ESD" ]; then + error "Failed to find ESD URL in $eFile!" && return 1 + fi + + tag="Sha1" + ESD_SUM=$(xmllint --nonet --xpath "//$tag" "$dir/$eFile" | sed -E -e "s/<[\/]?$tag>//g" 2>/dev/null) + + if [ -z "$ESD_SUM" ]; then + error "Failed to find ESD checksum in $eFile!" && return 1 + fi + + tag="Size" + ESD_SIZE=$(xmllint --nonet --xpath "//$tag" "$dir/$eFile" | sed -E -e "s/<[\/]?$tag>//g" 2>/dev/null) + + if [ -z "$ESD_SIZE" ]; then + error "Failed to find ESD filesize in $eFile!" && return 1 + fi + + rm -rf "$dir" + return 0 +} + +isCompressed() { + + local file="$1" + + case "${file,,}" in + *".7z" | *".zip" | *".rar" | *".lzma" | *".bz" | *".bz2" ) + return 0 ;; + esac + + return 1 +} + +verifyFile() { + + local iso="$1" + local size="$2" + local total="$3" + local check="$4" + + if [ -n "$size" ] && [[ "$total" != "$size" && "$size" != "0" ]]; then + if [[ "$VERIFY" == [Yy1]* || "$DEBUG" == [Yy1]* ]]; then + warn "The downloaded file has a different size ( $total bytes) than expected ( $size bytes). Please report this at $SUPPORT/issues" + fi + fi + + local hash="" + local algo="SHA256" + + [ -z "$check" ] && return 0 + [[ "$VERIFY" != [Yy1]* ]] && return 0 + [[ "${#check}" == "40" ]] && algo="SHA1" + + local msg="Verifying downloaded ISO..." + info "$msg" && html "$msg" + + if [[ "${algo,,}" != "sha256" ]]; then + hash=$(sha1sum "$iso" | cut -f1 -d' ') + else + hash=$(sha256sum "$iso" | cut -f1 -d' ') + fi + + if [[ "$hash" == "$check" ]]; then + info "Successfully verified ISO!" && return 0 + fi + + error "The downloaded file has an unknown $algo checksum: $hash , as the expected value was: $check. Please report this at $SUPPORT/issues" + return 1 +} + +downloadFile() { + + local iso="$1" + local url="$2" + local sum="$3" + local size="$4" + local lang="$5" + local desc="$6" + local msg="Downloading $desc" + local rc total total_gb progress domain dots agent space folder + + agent=$(get_agent) + + if [ -n "$size" ] && [[ "$size" != "0" ]]; then + folder=$(dirname -- "$iso") + space=$(df --output=avail -B 1 "$folder" | tail -n 1) + total_gb=$(formatBytes "$space") + (( size > space )) && error "Not enough free space to download file, only $total_gb left!" && return 1 + fi + + # Check if running with interactive TTY or redirected to docker log + if [ -t 1 ]; then + progress="--progress=bar:noscroll" + else + progress="--progress=dot:giga" + fi + + html "$msg..." + /run/progress.sh "$iso" "$size" "$msg ([P])..." & + + domain=$(echo "$url" | awk -F/ '{print $3}') + dots=$(echo "$domain" | tr -cd '.' | wc -c) + (( dots > 1 )) && domain=$(expr "$domain" : '.*\.\(.*\..*\)') + + if [ -n "$domain" ] && [[ "${domain,,}" != *"microsoft.com" ]]; then + msg="Downloading $desc from $domain" + fi + + info "$msg..." + [[ "$DEBUG" == [Yy1]* ]] && echo "Downloading: $url" + + { wget "$url" -O "$iso" --continue -q --timeout=30 --no-http-keep-alive --user-agent "$agent" --show-progress "$progress"; rc=$?; } || : + + fKill "progress.sh" + + if (( rc == 0 )) && [ -f "$iso" ]; then + total=$(stat -c%s "$iso") + total_gb=$(formatBytes "$total") + if [ "$total" -lt 100000000 ]; then + error "Invalid download link: $url (is only $total_gb ?). Please report this at $SUPPORT/issues" && return 1 + fi + verifyFile "$iso" "$size" "$total" "$sum" || return 1 + isCompressed "$url" && UNPACK="Y" + html "Download finished successfully..." && return 0 + fi + + msg="Failed to download $url" + (( rc == 3 )) && error "$msg , cannot write file (disk full?)" && return 1 + (( rc == 4 )) && error "$msg , network failure!" && return 1 + (( rc == 8 )) && error "$msg , server issued an error response! Please report this at $SUPPORT/issues" && return 1 + + error "$msg , reason: $rc" + return 1 +} + +delay() { + + local i + local delay="$1" + local msg="Will retry in X seconds..." + + info "${msg/X/$delay}" + + for i in $(seq "$delay" -1 1); do + html "${msg/X/$i}" + sleep 1 + done + + return 0 +} + +downloadImage() { + + local iso="$1" + local version="$2" + local lang="$3" + local tried="n" + local success="n" + local seconds="5" + local url sum size base desc language + + if [[ "${version,,}" == "http"* ]]; then + + base=$(basename "$iso") + desc=$(fromFile "$base") + + rm -f "$iso" + downloadFile "$iso" "$version" "" "" "" "$desc" && return 0 + delay "$seconds" + downloadFile "$iso" "$version" "" "" "" "$desc" && return 0 + rm -f "$iso" + + return 1 + fi + + if ! validVersion "$version" "en"; then + error "Invalid VERSION specified, value \"$version\" is not recognized!" && return 1 + fi + + desc=$(printVersion "$version" "") + + if [[ "${lang,,}" != "en" && "${lang,,}" != "en-"* ]]; then + language=$(getLanguage "$lang" "desc") + if ! validVersion "$version" "$lang"; then + desc=$(printEdition "$version" "$desc") + error "The $language language version of $desc is not available, please switch to English." && return 1 + fi + desc+=" in $language" + fi + + if isMido "$version" "$lang"; then + + tried="y" + success="n" + + if getWindows "$version" "$lang" "$desc"; then + success="y" + else + delay "$seconds" + getWindows "$version" "$lang" "$desc" && success="y" + fi + + if [[ "$success" == "y" ]]; then + size=$(getMido "$version" "$lang" "size" ) + sum=$(getMido "$version" "$lang" "sum") + + rm -f "$iso" + downloadFile "$iso" "$MIDO_URL" "$sum" "$size" "$lang" "$desc" && return 0 + delay "$seconds" + downloadFile "$iso" "$MIDO_URL" "$sum" "$size" "$lang" "$desc" && return 0 + rm -f "$iso" + fi + fi + + switchEdition "$version" + + if isESD "$version" "$lang"; then + + if [[ "$tried" != "n" ]]; then + info "Failed to download $desc, will try a different method now..." + fi + + tried="y" + success="n" + + if getESD "$TMP/esd" "$version" "$lang" "$desc"; then + success="y" + else + delay "$seconds" + getESD "$TMP/esd" "$version" "$lang" "$desc" && success="y" + fi + + if [[ "$success" == "y" ]]; then + ISO="${ISO%.*}.esd" + + rm -f "$ISO" + downloadFile "$ISO" "$ESD" "$ESD_SUM" "$ESD_SIZE" "$lang" "$desc" && return 0 + delay "$seconds" + downloadFile "$ISO" "$ESD" "$ESD_SUM" "$ESD_SIZE" "$lang" "$desc" && return 0 + rm -f "$ISO" + ISO="$iso" + fi + + fi + + for ((i=1;i<=MIRRORS;i++)); do + + url=$(getLink "$i" "$version" "$lang") + + if [ -n "$url" ]; then + + if [[ "$tried" != "n" ]]; then + info "Failed to download $desc, will try another mirror now..." + fi + + tried="y" + size=$(getSize "$i" "$version" "$lang") + sum=$(getHash "$i" "$version" "$lang") + + rm -f "$iso" + downloadFile "$iso" "$url" "$sum" "$size" "$lang" "$desc" && return 0 + delay "$seconds" + downloadFile "$iso" "$url" "$sum" "$size" "$lang" "$desc" && return 0 + rm -f "$iso" + fi + + done + + return 1 +} + +return 0 diff --git a/apps/rego-tunnel/build/src/power.sh b/apps/rego-tunnel/build/src/power.sh new file mode 100644 index 0000000..2f56b72 --- /dev/null +++ b/apps/rego-tunnel/build/src/power.sh @@ -0,0 +1,241 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +: "${QEMU_TIMEOUT:="110"}" # QEMU Termination timeout + +# Configure QEMU for graceful shutdown + +QEMU_TERM="" +QEMU_DIR="/run/shm" +QEMU_PID="$QEMU_DIR/qemu.pid" +QEMU_PTY="$QEMU_DIR/qemu.pty" +QEMU_LOG="$QEMU_DIR/qemu.log" +QEMU_OUT="$QEMU_DIR/qemu.out" +QEMU_END="$QEMU_DIR/qemu.end" + +rm -f "$QEMU_DIR/qemu.*" +touch "$QEMU_LOG" + +_trap() { + func="$1" ; shift + for sig ; do + trap "$func $sig" "$sig" + done +} + +boot() { + + [ -f "$QEMU_END" ] && return 0 + + if [ -s "$QEMU_PTY" ]; then + if [ "$(stat -c%s "$QEMU_PTY")" -gt 7 ]; then + local fail="" + if [[ "${BOOT_MODE,,}" == "windows_legacy" ]]; then + grep -Fq "No bootable device." "$QEMU_PTY" && fail="y" + grep -Fq "BOOTMGR is missing" "$QEMU_PTY" && fail="y" + fi + if [ -z "$fail" ]; then + info "Windows started successfully, visit http://127.0.0.1:8006/ to view the screen..." + return 0 + fi + fi + fi + + error "Timeout while waiting for QEMU to boot the machine!" + + local pid + pid=$(<"$QEMU_PID") + { kill -15 "$pid" || true; } 2>/dev/null + + return 0 +} + +ready() { + + [ -f "$STORAGE/windows.boot" ] && return 0 + [ ! -s "$QEMU_PTY" ] && return 1 + + if [[ "${BOOT_MODE,,}" == "windows_legacy" ]]; then + local last + local bios="Booting from Hard" + last=$(grep "^Booting.*" "$QEMU_PTY" | tail -1) + [[ "${last,,}" != "${bios,,}"* ]] && return 1 + grep -Fq "No bootable device." "$QEMU_PTY" && return 1 + grep -Fq "BOOTMGR is missing" "$QEMU_PTY" && return 1 + return 0 + fi + + local line="\"Windows Boot Manager\"" + grep -Fq "$line" "$QEMU_PTY" && return 0 + + return 1 +} + +finish() { + + local pid + local cnt=0 + local reason=$1 + local pids=( + "/var/run/tpm.pid" + "/var/run/wsdd.pid" + "/var/run/samba/nmbd.pid" + "/var/run/samba/smbd.pid" + ) + + touch "$QEMU_END" + + if [ -s "$QEMU_PID" ]; then + + pid=$(<"$QEMU_PID") + echo && error "Forcefully terminating Windows, reason: $reason..." + { kill -15 "$pid" || true; } 2>/dev/null + + while isAlive "$pid"; do + + sleep 1 + cnt=$((cnt+1)) + + # Workaround for zombie pid + [ ! -s "$QEMU_PID" ] && break + + if [ "$cnt" == "5" ]; then + echo && error "QEMU did not terminate itself, forcefully killing process..." + { kill -9 "$pid" || true; } 2>/dev/null + fi + + done + + fi + + if [ ! -f "$STORAGE/windows.boot" ] && [ -f "$BOOT" ]; then + # Remove CD-ROM ISO after install + if ready; then + local file="$STORAGE/windows.boot" + touch "$file" + ! setOwner "$file" && error "Failed to set the owner for \"$file\" !" + if [[ "$REMOVE" != [Nn]* ]]; then + rm -f "$BOOT" 2>/dev/null || true + fi + fi + fi + + for pid in "${pids[@]}"; do + if [[ -s "$pid" ]]; then + pKill "$(cat "$pid")" + fi + rm -f "$pid" + done + + closeNetwork + + sleep 0.5 + echo "❯ Shutdown completed!" + + exit "$reason" +} + +terminal() { + + local dev="" + + if [ -s "$QEMU_OUT" ]; then + + local msg + msg=$(<"$QEMU_OUT") + + if [ -n "$msg" ]; then + + if [[ "${msg,,}" != "char"* || "$msg" != *"serial0)" ]]; then + echo "$msg" + fi + + dev="${msg#*/dev/p}" + dev="/dev/p${dev%% *}" + + fi + fi + + if [ ! -c "$dev" ]; then + dev=$(echo 'info chardev' | nc -q 1 -w 1 localhost "$MON_PORT" | tr -d '\000') + dev="${dev#*serial0}" + dev="${dev#*pty:}" + dev="${dev%%$'\n'*}" + dev="${dev%%$'\r'*}" + fi + + if [ ! -c "$dev" ]; then + error "Device '$dev' not found!" + finish 34 && return 34 + fi + + QEMU_TERM="$dev" + return 0 +} + +_graceful_shutdown() { + + local code=$? + + set +e + + if [ -f "$QEMU_END" ]; then + info "Received $1 while already shutting down..." + return + fi + + touch "$QEMU_END" + info "Received $1, sending ACPI shutdown signal..." + + if [ ! -s "$QEMU_PID" ]; then + error "QEMU PID file does not exist?" + finish "$code" && return "$code" + fi + + local pid="" + pid=$(<"$QEMU_PID") + + if ! isAlive "$pid"; then + error "QEMU process does not exist?" + finish "$code" && return "$code" + fi + + if ! ready; then + info "Cannot send ACPI signal during Windows setup, aborting..." + finish "$code" && return "$code" + fi + + # Send ACPI shutdown signal + echo 'system_powerdown' | nc -q 1 -w 1 localhost "$MON_PORT" > /dev/null + + local cnt=0 + while [ "$cnt" -lt "$QEMU_TIMEOUT" ]; do + + sleep 1 + cnt=$((cnt+1)) + + ! isAlive "$pid" && break + # Workaround for zombie pid + [ ! -s "$QEMU_PID" ] && break + + info "Waiting for Windows to shutdown... ($cnt/$QEMU_TIMEOUT)" + + # Send ACPI shutdown signal + echo 'system_powerdown' | nc -q 1 -w 1 localhost "$MON_PORT" > /dev/null + + done + + if [ "$cnt" -ge "$QEMU_TIMEOUT" ]; then + error "Shutdown timeout reached, aborting..." + fi + + finish "$code" && return "$code" +} + +SERIAL="pty" +MONITOR="telnet:localhost:$MON_PORT,server,nowait,nodelay" +MONITOR+=" -daemonize -D $QEMU_LOG -pidfile $QEMU_PID" + +_trap _graceful_shutdown SIGTERM SIGHUP SIGINT SIGABRT SIGQUIT + +return 0 diff --git a/apps/rego-tunnel/build/rego-startup.sh b/apps/rego-tunnel/build/src/rego-startup.sh similarity index 91% rename from apps/rego-tunnel/build/rego-startup.sh rename to apps/rego-tunnel/build/src/rego-startup.sh index 9fe05de..f06a7d2 100755 --- a/apps/rego-tunnel/build/rego-startup.sh +++ b/apps/rego-tunnel/build/src/rego-startup.sh @@ -1,8 +1,6 @@ -#!/bin/bash -# Rego-tunnel custom startup script -# Runs when container starts - -set -e +#!/usr/bin/env bash +# Rego-tunnel startup customizations +# Copies VPN scripts to shared folder and sets up networking echo "[rego] Initializing rego-tunnel customizations..." @@ -11,7 +9,7 @@ if [ -d "/shared" ]; then echo "[rego] Copying VPN scripts to shared folder..." mkdir -p /shared/vpn_scripts cp -rn /opt/rego-scripts/* /shared/vpn_scripts/ 2>/dev/null || true - chmod -R 755 /shared/vpn_scripts/ + chmod -R 755 /shared/vpn_scripts/ 2>/dev/null || true echo "[rego] Scripts available at \\\\TSCLIENT\\shared\\vpn_scripts\\" fi diff --git a/apps/rego-tunnel/build/src/samba.sh b/apps/rego-tunnel/build/src/samba.sh new file mode 100644 index 0000000..7cd3210 --- /dev/null +++ b/apps/rego-tunnel/build/src/samba.sh @@ -0,0 +1,228 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +: "${SAMBA:="Y"}" # Enable Samba +: "${SAMBA_LEVEL:="1"}" # Logging level +: "${SAMBA_DEBUG:="N"}" # Disable debug + +tmp="/tmp/smb" +rm -rf "$tmp" + +rm -f /var/run/wsdd.pid +rm -f /var/run/samba/nmbd.pid +rm -f /var/run/samba/smbd.pid + +[[ "$SAMBA" == [Nn]* ]] && return 0 +[[ "$NETWORK" == [Nn]* ]] && return 0 + +if [[ "$DHCP" == [Yy1]* ]]; then + socket="$IP" + hostname="$IP" + interfaces="$VM_NET_DEV" +else + hostname="host.lan" + case "${NETWORK,,}" in + "passt" | "slirp" ) + interfaces="lo" + socket="127.0.0.1" ;; + *) + socket="$VM_NET_IP" + interfaces="$VM_NET_BRIDGE" ;; + esac + if [ -n "${SAMBA_INTERFACE:-}" ]; then + interfaces+=",$SAMBA_INTERFACE" + fi +fi + +html "Initializing shared folder..." +SAMBA_CONFIG="/etc/samba/smb.conf" +[[ "$DEBUG" == [Yy1]* ]] && echo "Starting Samba daemon..." + +addShare() { + local dir="$1" + local ref="$2" + local name="$3" + local comment="$4" + local cfg="$5" + local owner="" + + if [ ! -d "$dir" ]; then + if ! mkdir -p "$dir"; then + error "Failed to create shared folder ($dir)." && return 1 + fi + fi + + if ! ls -A "$dir" >/dev/null 2>&1; then + msg="No permission to access shared folder ($dir)." + msg+=" If SELinux is active, you need to add the \":Z\" flag to the bind mount." + error "$msg" && return 1 + fi + + if [ ! -w "$dir" ]; then + msg="shared folder ($dir) is not writeable!" + warn "$msg" + fi + + if [ -z "$(ls -A "$dir")" ]; then + if ! chmod 2777 "$dir"; then + error "Failed to set permissions for directory $dir" && return 1 + fi + owner=$(stat -c %u "$dir") + if [[ "$owner" == "0" ]]; then + if ! chown "1000:1000" "$dir"; then + error "Failed to set ownership for directory $dir" && return 1 + fi + fi + fi + + if [[ "$dir" == "$tmp" ]]; then + + { echo "--------------------------------------------------------" + echo " $APP for $ENGINE v$(</run/version)..." + echo " For support visit $SUPPORT" + echo "--------------------------------------------------------" + echo "" + echo "Using this folder you can exchange files with the host machine." + echo "" + echo "To select a folder on the host for this purpose, include the following bind mount in your compose file:" + echo "" + echo " volumes:" + echo " - \"./example:${ref}\"" + echo "" + echo "Or in your run command:" + echo "" + echo " -v \"\${PWD:-.}/example:${ref}\"" + echo "" + echo "Replace the example path ./example with your desired shared folder, which then will become visible here." + echo "" + } | unix2dos > "$dir/readme.txt" + + fi + + { echo "" + echo "[$name]" + echo " path = $dir" + echo " comment = $comment" + echo " writable = yes" + echo " guest ok = yes" + echo " guest only = yes" + } >> "$cfg" + + return 0 +} + +{ echo "[global]" + echo " server string = Dockur" + echo " netbios name = $hostname" + echo " workgroup = WORKGROUP" + echo " interfaces = $interfaces" + echo " bind interfaces only = yes" + echo " socket address = $socket" + echo " security = user" + echo " guest account = nobody" + echo " map to guest = Bad User" + echo " server min protocol = NT1" + echo " follow symlinks = yes" + echo " wide links = yes" + echo " unix extensions = no" + echo " inherit owner = yes" + echo " create mask = 0666" + echo " directory mask = 02777" + echo " force user = root" + echo " force group = root" + echo " force create mode = 0666" + echo " force directory mode = 02777" + echo "" + echo " # Disable printing services" + echo " load printers = no" + echo " printing = bsd" + echo " printcap name = /dev/null" + echo " disable spoolss = yes" +} > "$SAMBA_CONFIG" + +# Add shared folders +share="/shared" +[ ! -d "$share" ] && [ -d "$STORAGE/shared" ] && share="$STORAGE/shared" +[ ! -d "$share" ] && [ -d "/data" ] && share="/data" +[ ! -d "$share" ] && [ -d "$STORAGE/data" ] && share="$STORAGE/data" +[ ! -d "$share" ] && share="$tmp" + +! addShare "$share" "/shared" "Data" "Shared" "$SAMBA_CONFIG" && return 0 + +if [ -d "/shared2" ]; then + addShare "/shared2" "/shared2" "Data2" "Shared" "$SAMBA_CONFIG" || : +else + if [ -d "/data2" ]; then + addShare "/data2" "/shared2" "Data2" "Shared" "$SAMBA_CONFIG" || : + fi +fi + +if [ -d "/shared3" ]; then + addShare "/shared3" "/shared3" "Data3" "Shared" "$SAMBA_CONFIG" || : +else + if [ -d "/data3" ]; then + addShare "/data3" "/shared3" "Data3" "Shared" "$SAMBA_CONFIG" || : + fi +fi + +# Create directories if missing +mkdir -p /var/lib/samba/sysvol +mkdir -p /var/lib/samba/private +mkdir -p /var/lib/samba/bind-dns + +# Try to repair Samba permissions +[ -d /run/samba/msg.lock ] && chmod -R 0755 /run/samba/msg.lock 2>/dev/null || : +[ -d /var/log/samba/cores ] && chmod -R 0700 /var/log/samba/cores 2>/dev/null || : +[ -d /var/cache/samba/msg.lock ] && chmod -R 0755 /var/cache/samba/msg.lock 2>/dev/null || : + +rm -f /var/log/samba/log.smbd + +if ! smbd -l /var/log/samba; then + SAMBA_DEBUG="Y" + error "Failed to start Samba daemon!" +fi + +if [[ "$SAMBA_DEBUG" == [Yy1]* ]]; then + tail -fn +0 /var/log/samba/log.smbd --pid=$$ & +fi + +case "${NETWORK,,}" in + "passt" | "slirp" ) + return 0 ;; +esac + +if [[ "${BOOT_MODE:-}" == "windows_legacy" ]]; then + + # Enable NetBIOS on Windows 7 and lower + [[ "$DEBUG" == [Yy1]* ]] && echo "Starting NetBIOS daemon..." + + rm -f /var/log/samba/log.nmbd + + if ! nmbd -l /var/log/samba; then + SAMBA_DEBUG="Y" + error "Failed to start NetBIOS daemon!" + fi + + if [[ "$SAMBA_DEBUG" == [Yy1]* ]]; then + tail -fn +0 /var/log/samba/log.nmbd --pid=$$ & + fi + +else + + # Enable Web Service Discovery on Vista and up + [[ "$DEBUG" == [Yy1]* ]] && echo "Starting wsddn daemon..." + + rm -f /var/log/wsddn.log + + if ! wsddn -i "${interfaces%%,*}" -H "$hostname" --unixd --log-file=/var/log/wsddn.log --pid-file=/var/run/wsdd.pid; then + SAMBA_DEBUG="Y" + error "Failed to start wsddn daemon!" + fi + + if [[ "$SAMBA_DEBUG" == [Yy1]* ]]; then + tail -fn +0 /var/log/wsddn.log --pid=$$ & + fi + +fi + +return 0