Skip to content

Commit 0825e4c

Browse files
feat: add --disable-* options (#5)
Adds several new configuration options to the code-server feature that allow users to disable specific functionality: `disableFileDownloads`: Prevents users from downloading files from the editor `disableFileUploads`: Prevents users from uploading files to the editor `disableGettingStartedOverride`: Disables the coder/coder override in Help: Getting Started `disableProxy`: Disables domain and path proxy routes `disableTelemetry`: Disables telemetry reporting `disableUpdateCheck`: Disables the update check that runs every 6 hours `disableWorkspaceTrust`: Disables the Workspace Trust feature for the current session
1 parent 200b701 commit 0825e4c

12 files changed

+272
-1
lines changed

Diff for: src/code-server/README.md

+7
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,13 @@ VS Code in the browser
1616
| Options Id | Description | Type | Default Value |
1717
|-----|-----|-----|-----|
1818
| auth | The type of authentication to use. When 'password' is selected, code-server will auto-generate a password. 'none' disables authentication entirely. | string | password |
19+
| disableFileDownloads | Disable file downloads from Code. When enabled, users will not be able to download files from the editor. | boolean | false |
20+
| disableFileUploads | Disable file uploads to Code. When enabled, users will not be able to upload files to the editor. | boolean | false |
21+
| disableGettingStartedOverride | Disable the coder/coder override in the Help: Getting Started page. | boolean | false |
22+
| disableProxy | Disable domain and path proxy routes. | boolean | false |
23+
| disableTelemetry | Disable telemetry reporting. | boolean | false |
24+
| disableUpdateCheck | Disable update check. Without this flag, code-server checks every 6 hours against the latest GitHub release and notifies once a week when updates are available. | boolean | false |
25+
| disableWorkspaceTrust | Disable Workspace Trust feature. This only affects the current session. | boolean | false |
1926
| extensions | Comma-separated list of VS Code extensions to install. Format: 'publisher.extension[@version]' (e.g., 'ms-python.python,ms-azuretools.vscode-docker'). | string | - |
2027
| host | The address to bind to for the code-server. Use '0.0.0.0' to listen on all interfaces. | string | 127.0.0.1 |
2128
| port | The port to bind to for the code-server. | string | 8080 |

Diff for: src/code-server/devcontainer-feature.json

+35
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,41 @@
1010
"default": "password",
1111
"description": "The type of authentication to use. When 'password' is selected, code-server will auto-generate a password. 'none' disables authentication entirely."
1212
},
13+
"disableFileDownloads": {
14+
"type": "boolean",
15+
"default": false,
16+
"description": "Disable file downloads from Code. When enabled, users will not be able to download files from the editor."
17+
},
18+
"disableFileUploads": {
19+
"type": "boolean",
20+
"default": false,
21+
"description": "Disable file uploads to Code. When enabled, users will not be able to upload files to the editor."
22+
},
23+
"disableGettingStartedOverride": {
24+
"type": "boolean",
25+
"default": false,
26+
"description": "Disable the coder/coder override in the Help: Getting Started page."
27+
},
28+
"disableProxy": {
29+
"type": "boolean",
30+
"default": false,
31+
"description": "Disable domain and path proxy routes."
32+
},
33+
"disableTelemetry": {
34+
"type": "boolean",
35+
"default": false,
36+
"description": "Disable telemetry reporting."
37+
},
38+
"disableUpdateCheck": {
39+
"type": "boolean",
40+
"default": false,
41+
"description": "Disable update check. Without this flag, code-server checks every 6 hours against the latest GitHub release and notifies once a week when updates are available."
42+
},
43+
"disableWorkspaceTrust": {
44+
"type": "boolean",
45+
"default": false,
46+
"description": "Disable Workspace Trust feature. This only affects the current session."
47+
},
1348
"extensions": {
1449
"type": "string",
1550
"default": "",

Diff for: src/code-server/install.sh

+33-1
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,44 @@ if [[ -n $WORKSPACE ]]; then
2323
CODE_SERVER_WORKSPACE="$WORKSPACE"
2424
fi
2525

26+
DISABLE_FLAGS=()
27+
28+
if [[ "$DISABLEFILEDOWNLOADS" == "true" ]]; then
29+
DISABLE_FLAGS+=(--disable-file-downloads)
30+
fi
31+
32+
if [[ "$DISABLEFILEUPLOADS" == "true" ]]; then
33+
DISABLE_FLAGS+=(--disable-file-uploads)
34+
fi
35+
36+
if [[ "$DISABLEGETTINGSTARTEDOVERRIDE" == "true" ]]; then
37+
DISABLE_FLAGS+=(--disable-getting-started-override)
38+
fi
39+
40+
if [[ "$DISABLEPROXY" == "true" ]]; then
41+
DISABLE_FLAGS+=(--disable-proxy)
42+
fi
43+
44+
if [[ "$DISABLETELEMETRY" == "true" ]]; then
45+
DISABLE_FLAGS+=(--disable-telemetry)
46+
fi
47+
48+
if [[ "$DISABLEUPDATECHECK" == "true" ]]; then
49+
DISABLE_FLAGS+=(--disable-update-check)
50+
fi
51+
52+
if [[ "$DISABLEWORKSPACETRUST" == "true" ]]; then
53+
DISABLE_FLAGS+=(--disable-workspace-trust)
54+
fi
55+
2656
cat > /usr/local/bin/code-server-entrypoint \
2757
<< EOF
2858
#!/usr/bin/env bash
2959
set -e
3060
31-
su $_REMOTE_USER -c 'code-server --auth "$AUTH" --bind-addr "$HOST:$PORT" "$CODE_SERVER_WORKSPACE"'
61+
$(declare -p DISABLE_FLAGS)
62+
63+
su $_REMOTE_USER -c 'code-server --auth "$AUTH" --bind-addr "$HOST:$PORT" "\${DISABLE_FLAGS[@]}" "$CODE_SERVER_WORKSPACE"'
3264
EOF
3365

3466
chmod +x /usr/local/bin/code-server-entrypoint
+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/bin/bash
2+
set -e
3+
4+
# Optional: Import test library bundled with the devcontainer CLI
5+
source dev-container-features-test-lib
6+
7+
# Feature-specific tests
8+
check "code-server version" code-server --version
9+
check "code-server running" pgrep -f 'code-server/lib/node.*/code-server'
10+
check "code-server listening" lsof -i "@127.0.0.1:8080"
11+
12+
check "code-server disable-file-downloads" grep '"--disable-file-downloads"' < /usr/local/bin/code-server-entrypoint
13+
14+
# Report results
15+
reportResults

Diff for: test/code-server/code-server-disable-file-uploads.sh

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/bin/bash
2+
set -e
3+
4+
# Optional: Import test library bundled with the devcontainer CLI
5+
source dev-container-features-test-lib
6+
7+
# Feature-specific tests
8+
check "code-server version" code-server --version
9+
check "code-server running" pgrep -f 'code-server/lib/node.*/code-server'
10+
check "code-server listening" lsof -i "@127.0.0.1:8080"
11+
12+
check "code-server disable-file-uploads" grep '"--disable-file-uploads"' < /usr/local/bin/code-server-entrypoint
13+
14+
# Report results
15+
reportResults
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/bin/bash
2+
set -e
3+
4+
# Optional: Import test library bundled with the devcontainer CLI
5+
source dev-container-features-test-lib
6+
7+
# Feature-specific tests
8+
check "code-server version" code-server --version
9+
check "code-server running" pgrep -f 'code-server/lib/node.*/code-server'
10+
check "code-server listening" lsof -i "@127.0.0.1:8080"
11+
12+
check "code-server disable-getting-started-override" grep '"--disable-getting-started-override"' < /usr/local/bin/code-server-entrypoint
13+
14+
# Report results
15+
reportResults
+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/bin/bash
2+
set -e
3+
4+
# Optional: Import test library bundled with the devcontainer CLI
5+
source dev-container-features-test-lib
6+
7+
# Feature-specific tests
8+
check "code-server version" code-server --version
9+
check "code-server running" pgrep -f 'code-server/lib/node.*/code-server'
10+
check "code-server listening" lsof -i "@127.0.0.1:8080"
11+
12+
# Check for all flags we enabled in this scenario
13+
check "code-server disable-file-downloads" grep '"--disable-file-downloads"' < /usr/local/bin/code-server-entrypoint
14+
check "code-server disable-file-uploads" grep '"--disable-file-uploads"' < /usr/local/bin/code-server-entrypoint
15+
check "code-server disable-getting-started-override" grep '"--disable-getting-started-override"' < /usr/local/bin/code-server-entrypoint
16+
check "code-server disable-proxy" grep '"--disable-proxy"' < /usr/local/bin/code-server-entrypoint
17+
check "code-server disable-telemetry" grep '"--disable-telemetry"' < /usr/local/bin/code-server-entrypoint
18+
check "code-server disable-update-check" grep '"--disable-update-check"' < /usr/local/bin/code-server-entrypoint
19+
check "code-server disable-workspace-trust" grep '"--disable-workspace-trust"' < /usr/local/bin/code-server-entrypoint
20+
21+
# Report results
22+
reportResults

Diff for: test/code-server/code-server-disable-proxy.sh

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/bin/bash
2+
set -e
3+
4+
# Optional: Import test library bundled with the devcontainer CLI
5+
source dev-container-features-test-lib
6+
7+
# Feature-specific tests
8+
check "code-server version" code-server --version
9+
check "code-server running" pgrep -f 'code-server/lib/node.*/code-server'
10+
check "code-server listening" lsof -i "@127.0.0.1:8080"
11+
12+
check "code-server disable-proxy" grep '"--disable-proxy"' < /usr/local/bin/code-server-entrypoint
13+
14+
# Report results
15+
reportResults

Diff for: test/code-server/code-server-disable-telemetry.sh

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/bin/bash
2+
set -e
3+
4+
# Optional: Import test library bundled with the devcontainer CLI
5+
source dev-container-features-test-lib
6+
7+
# Feature-specific tests
8+
check "code-server version" code-server --version
9+
check "code-server running" pgrep -f 'code-server/lib/node.*/code-server'
10+
check "code-server listening" lsof -i "@127.0.0.1:8080"
11+
12+
check "code-server disable-telemetry" grep '"--disable-telemetry"' < /usr/local/bin/code-server-entrypoint
13+
14+
# Report results
15+
reportResults

Diff for: test/code-server/code-server-disable-update-check.sh

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/bin/bash
2+
set -e
3+
4+
# Optional: Import test library bundled with the devcontainer CLI
5+
source dev-container-features-test-lib
6+
7+
# Feature-specific tests
8+
check "code-server version" code-server --version
9+
check "code-server running" pgrep -f 'code-server/lib/node.*/code-server'
10+
check "code-server listening" lsof -i "@127.0.0.1:8080"
11+
12+
check "code-server disable-update-check" grep '"--disable-update-check"' < /usr/local/bin/code-server-entrypoint
13+
14+
# Report results
15+
reportResults
+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/bin/bash
2+
set -e
3+
4+
# Optional: Import test library bundled with the devcontainer CLI
5+
source dev-container-features-test-lib
6+
7+
# Feature-specific tests
8+
check "code-server version" code-server --version
9+
check "code-server running" pgrep -f 'code-server/lib/node.*/code-server'
10+
check "code-server listening" lsof -i "@127.0.0.1:8080"
11+
12+
check "code-server disable-workspace-trust" grep '"--disable-workspace-trust"' < /usr/local/bin/code-server-entrypoint
13+
14+
# Report results
15+
reportResults

Diff for: test/code-server/scenarios.json

+70
Original file line numberDiff line numberDiff line change
@@ -54,5 +54,75 @@
5454
"auth": "password"
5555
}
5656
}
57+
},
58+
"code-server-disable-file-downloads": {
59+
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
60+
"features": {
61+
"code-server": {
62+
"disableFileDownloads": true
63+
}
64+
}
65+
},
66+
"code-server-disable-file-uploads": {
67+
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
68+
"features": {
69+
"code-server": {
70+
"disableFileUploads": true
71+
}
72+
}
73+
},
74+
"code-server-disable-getting-started-override": {
75+
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
76+
"features": {
77+
"code-server": {
78+
"disableGettingStartedOverride": true
79+
}
80+
}
81+
},
82+
"code-server-disable-proxy": {
83+
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
84+
"features": {
85+
"code-server": {
86+
"disableProxy": true
87+
}
88+
}
89+
},
90+
"code-server-disable-telemetry": {
91+
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
92+
"features": {
93+
"code-server": {
94+
"disableTelemetry": true
95+
}
96+
}
97+
},
98+
"code-server-disable-update-check": {
99+
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
100+
"features": {
101+
"code-server": {
102+
"disableUpdateCheck": true
103+
}
104+
}
105+
},
106+
"code-server-disable-workspace-trust": {
107+
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
108+
"features": {
109+
"code-server": {
110+
"disableWorkspaceTrust": true
111+
}
112+
}
113+
},
114+
"code-server-disable-multiple-options": {
115+
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
116+
"features": {
117+
"code-server": {
118+
"disableFileDownloads": true,
119+
"disableFileUploads": true,
120+
"disableGettingStartedOverride": true,
121+
"disableProxy": true,
122+
"disableTelemetry": true,
123+
"disableUpdateCheck": true,
124+
"disableWorkspaceTrust": true
125+
}
126+
}
57127
}
58128
}

0 commit comments

Comments
 (0)