Skip to content

Commit 3cb744d

Browse files
committed
Use FF and env to control port exposing
1 parent ed0a8d8 commit 3cb744d

File tree

2 files changed

+39
-29
lines changed

2 files changed

+39
-29
lines changed

components/ide/jetbrains/backend-plugin/src/main/kotlin/io/gitpod/jetbrains/remote/AbstractGitpodPortForwardingService.kt

Lines changed: 36 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -99,35 +99,43 @@ abstract class AbstractGitpodPortForwardingService : GitpodPortForwardingService
9999
return completableFuture
100100
}
101101

102+
private fun isPortExposingEnabled(): Boolean {
103+
return System.getenv("GITPOD_DISABLE_JETBRAINS_PORT_EXPOSE")?.toBoolean() ?: true
104+
}
105+
102106
private fun syncPortsListWithClient(response: Status.PortsStatusResponse) {
103-
// val ignoredPorts = ignoredPortsForNotificationService.getIgnoredPorts()
104-
// val portsList = response.portsList.filter { !ignoredPorts.contains(it.localPort) }
105-
// val portsNumbersFromPortsList = portsList.map { it.localPort }
106-
// val servedPorts = portsList.filter { it.served }
107-
// val exposedPorts = servedPorts.filter { it.exposed?.url?.isNotBlank() ?: false }
108-
// val portsNumbersFromNonServedPorts = portsList.filter { !it.served }.map { it.localPort }
109-
// val servedPortsToStartForwarding = servedPorts.filter {
110-
// perClientPortForwardingManager.getPorts(it.localPort).none { p -> p.labels.contains(FORWARDED_PORT_LABEL) }
111-
// }
112-
// val exposedPortsToStartExposingOnClient = exposedPorts.filter {
113-
// perClientPortForwardingManager.getPorts(it.localPort).none { p -> p.labels.contains(EXPOSED_PORT_LABEL) }
114-
// }
115-
// val forwardedPortsToStopForwarding = perClientPortForwardingManager.getPorts(FORWARDED_PORT_LABEL)
116-
// .map { it.hostPortNumber }
117-
// .filter { portsNumbersFromNonServedPorts.contains(it) || !portsNumbersFromPortsList.contains(it) }
118-
// val exposedPortsToStopExposingOnClient = perClientPortForwardingManager.getPorts(EXPOSED_PORT_LABEL)
119-
// .map { it.hostPortNumber }
120-
// .filter { portsNumbersFromNonServedPorts.contains(it) || !portsNumbersFromPortsList.contains(it) }
121-
//
122-
// servedPortsToStartForwarding.forEach { startForwarding(it) }
123-
//
124-
// exposedPortsToStartExposingOnClient.forEach { startExposingOnClient(it) }
125-
//
126-
// forwardedPortsToStopForwarding.forEach { stopForwarding(it) }
127-
//
128-
// exposedPortsToStopExposingOnClient.forEach { stopExposingOnClient(it) }
129-
//
130-
// portsList.forEach { updatePortsPresentation(it) }
107+
if (!isPortExposingEnabled()) {
108+
thisLogger().warn("gitpod: Port exposing is disabled.")
109+
return
110+
}
111+
val ignoredPorts = ignoredPortsForNotificationService.getIgnoredPorts()
112+
val portsList = response.portsList.filter { !ignoredPorts.contains(it.localPort) }
113+
val portsNumbersFromPortsList = portsList.map { it.localPort }
114+
val servedPorts = portsList.filter { it.served }
115+
val exposedPorts = servedPorts.filter { it.exposed?.url?.isNotBlank() ?: false }
116+
val portsNumbersFromNonServedPorts = portsList.filter { !it.served }.map { it.localPort }
117+
val servedPortsToStartForwarding = servedPorts.filter {
118+
perClientPortForwardingManager.getPorts(it.localPort).none { p -> p.labels.contains(FORWARDED_PORT_LABEL) }
119+
}
120+
val exposedPortsToStartExposingOnClient = exposedPorts.filter {
121+
perClientPortForwardingManager.getPorts(it.localPort).none { p -> p.labels.contains(EXPOSED_PORT_LABEL) }
122+
}
123+
val forwardedPortsToStopForwarding = perClientPortForwardingManager.getPorts(FORWARDED_PORT_LABEL)
124+
.map { it.hostPortNumber }
125+
.filter { portsNumbersFromNonServedPorts.contains(it) || !portsNumbersFromPortsList.contains(it) }
126+
val exposedPortsToStopExposingOnClient = perClientPortForwardingManager.getPorts(EXPOSED_PORT_LABEL)
127+
.map { it.hostPortNumber }
128+
.filter { portsNumbersFromNonServedPorts.contains(it) || !portsNumbersFromPortsList.contains(it) }
129+
130+
servedPortsToStartForwarding.forEach { startForwarding(it) }
131+
132+
exposedPortsToStartExposingOnClient.forEach { startExposingOnClient(it) }
133+
134+
forwardedPortsToStopForwarding.forEach { stopForwarding(it) }
135+
136+
exposedPortsToStopExposingOnClient.forEach { stopExposingOnClient(it) }
137+
138+
portsList.forEach { updatePortsPresentation(it) }
131139
}
132140

133141
private fun startForwarding(portStatus: PortsStatus) {

components/server/src/workspace/workspace-starter.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1552,16 +1552,18 @@ export class WorkspaceStarter {
15521552
sysEnvvars.push(orgIdEnv);
15531553

15541554
const client = getExperimentsClientForBackend();
1555-
const [isSetJavaXmx, isSetJavaProcessorCount] = await Promise.all([
1555+
const [isSetJavaXmx, isSetJavaProcessorCount, disableJetBrainsPortExpose] = await Promise.all([
15561556
client
15571557
.getValueAsync("supervisor_set_java_xmx", false, { user })
15581558
.then((v) => newEnvVar("GITPOD_IS_SET_JAVA_XMX", String(v))),
15591559
client
15601560
.getValueAsync("supervisor_set_java_processor_count", false, { user })
15611561
.then((v) => newEnvVar("GITPOD_IS_SET_JAVA_PROCESSOR_COUNT", String(v))),
1562+
client.getValueAsync("disable_jetbrains_port_expose", false, { user }).then((v) => newEnvVar("GITPOD_DISABLE_JETBRAINS_PORT_EXPOSE", String(v)))
15621563
]);
15631564
sysEnvvars.push(isSetJavaXmx);
15641565
sysEnvvars.push(isSetJavaProcessorCount);
1566+
sysEnvvars.push(disableJetBrainsPortExpose);
15651567
const spec = new StartWorkspaceSpec();
15661568
await createGitpodTokenPromise;
15671569
spec.setEnvvarsList(envvars);

0 commit comments

Comments
 (0)