Skip to content

Commit 3e927ba

Browse files
authored
Merge pull request #446 from coder/f0ssel/disable-tracking
2 parents 950c3b1 + cf673a1 commit 3e927ba

22 files changed

+215
-41
lines changed

src/main/kotlin/com/coder/gateway/CoderRemoteConnectionHandle.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import com.coder.gateway.util.humanizeDuration
1010
import com.coder.gateway.util.isCancellation
1111
import com.coder.gateway.util.isWorkerTimeout
1212
import com.coder.gateway.util.suspendingRetryWithExponentialBackOff
13+
import com.coder.gateway.cli.CoderCLIManager
1314
import com.intellij.openapi.application.ApplicationManager
1415
import com.intellij.openapi.components.service
1516
import com.intellij.openapi.diagnostic.Logger
@@ -141,7 +142,13 @@ class CoderRemoteConnectionHandle {
141142
port = 22
142143
authType = AuthType.OPEN_SSH
143144
}
144-
val accessor = HighLevelHostAccessor.create(credentials, true)
145+
val backgroundCredentials = RemoteCredentialsHolder().apply {
146+
setHost(CoderCLIManager.getBackgroundHostName(workspace.hostname))
147+
userName = "coder"
148+
port = 22
149+
authType = AuthType.OPEN_SSH
150+
}
151+
val accessor = HighLevelHostAccessor.create(backgroundCredentials, true)
145152

146153
// Deploy if we need to.
147154
val ideDir = this.deploy(workspace, accessor, indicator, timeout)
@@ -350,7 +357,7 @@ class CoderRemoteConnectionHandle {
350357
private fun exec(workspace: WorkspaceProjectIDE, command: String): String {
351358
logger.info("Running command `$command` in ${workspace.hostname}:${workspace.idePathOnHost}/bin...")
352359
return ProcessExecutor()
353-
.command("ssh", "-t", workspace.hostname, "cd '${workspace.idePathOnHost}' ; cd bin ; $command")
360+
.command("ssh", "-t", CoderCLIManager.getBackgroundHostName(workspace.hostname), "cd '${workspace.idePathOnHost}' ; cd bin ; $command")
354361
.exitValues(0)
355362
.readOutput(true)
356363
.execute()

src/main/kotlin/com/coder/gateway/cli/CoderCLIManager.kt

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ class CoderCLIManager(
255255
val startBlock = "# --- START CODER JETBRAINS $host"
256256
val endBlock = "# --- END CODER JETBRAINS $host"
257257
val isRemoving = workspaceNames.isEmpty()
258-
val proxyArgs =
258+
val baseArgs =
259259
listOfNotNull(
260260
escape(localBinaryPath.toString()),
261261
"--global-config",
@@ -265,8 +265,9 @@ class CoderCLIManager(
265265
"ssh",
266266
"--stdio",
267267
if (settings.disableAutostart && feats.disableAutostart) "--disable-autostart" else null,
268-
if (feats.reportWorkspaceUsage) "--usage-app=jetbrains" else null,
269268
)
269+
val proxyArgs = baseArgs + listOfNotNull(if (feats.reportWorkspaceUsage) "--usage-app=jetbrains" else null)
270+
val backgroundProxyArgs = baseArgs + listOfNotNull(if (feats.reportWorkspaceUsage) "--usage-app=disable" else null)
270271
val extraConfig =
271272
if (settings.sshConfigOptions.isNotBlank()) {
272273
"\n" + settings.sshConfigOptions.prependIndent(" ")
@@ -289,7 +290,19 @@ class CoderCLIManager(
289290
SetEnv CODER_SSH_SESSION_TYPE=JetBrains
290291
""".trimIndent()
291292
.plus(extraConfig)
292-
.replace("\n", System.lineSeparator())
293+
.plus("\n")
294+
.plus(
295+
"""
296+
Host ${getBackgroundHostName(deploymentURL, it)}
297+
ProxyCommand ${backgroundProxyArgs.joinToString(" ")} $it
298+
ConnectTimeout 0
299+
StrictHostKeyChecking no
300+
UserKnownHostsFile /dev/null
301+
LogLevel ERROR
302+
SetEnv CODER_SSH_SESSION_TYPE=JetBrains
303+
""".trimIndent()
304+
.plus(extraConfig)
305+
).replace("\n", System.lineSeparator())
293306
},
294307
)
295308

@@ -465,5 +478,20 @@ class CoderCLIManager(
465478
): String {
466479
return "coder-jetbrains--$workspaceName--${url.safeHost()}"
467480
}
481+
482+
@JvmStatic
483+
fun getBackgroundHostName(
484+
url: URL,
485+
workspaceName: String,
486+
): String {
487+
return getHostName(url, workspaceName) + "--bg"
488+
}
489+
490+
@JvmStatic
491+
fun getBackgroundHostName(
492+
hostname: String,
493+
): String {
494+
return hostname + "--bg"
495+
}
468496
}
469497
}

src/main/kotlin/com/coder/gateway/views/steps/CoderWorkspaceProjectIDEStepView.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ class CoderWorkspaceProjectIDEStepView(
214214
} else {
215215
IDECellRenderer(CoderGatewayBundle.message("gateway.connector.view.coder.connect-ssh"))
216216
}
217-
val executor = createRemoteExecutor(CoderCLIManager.getHostName(data.client.url, name))
217+
val executor = createRemoteExecutor(CoderCLIManager.getBackgroundHostName(data.client.url, name))
218218

219219
if (ComponentValidator.getInstance(tfProject).isEmpty) {
220220
logger.info("Installing remote path validator...")

src/test/fixtures/outputs/append-blank-newlines.conf

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,14 @@
44

55
# --- START CODER JETBRAINS test.coder.invalid
66
Host coder-jetbrains--foo-bar--test.coder.invalid
7-
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio foo-bar
7+
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio --usage-app=jetbrains foo-bar
8+
ConnectTimeout 0
9+
StrictHostKeyChecking no
10+
UserKnownHostsFile /dev/null
11+
LogLevel ERROR
12+
SetEnv CODER_SSH_SESSION_TYPE=JetBrains
13+
Host coder-jetbrains--foo-bar--test.coder.invalid--bg
14+
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio --usage-app=disable foo-bar
815
ConnectTimeout 0
916
StrictHostKeyChecking no
1017
UserKnownHostsFile /dev/null

src/test/fixtures/outputs/append-blank.conf

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
# --- START CODER JETBRAINS test.coder.invalid
22
Host coder-jetbrains--foo-bar--test.coder.invalid
3-
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio foo-bar
3+
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio --usage-app=jetbrains foo-bar
4+
ConnectTimeout 0
5+
StrictHostKeyChecking no
6+
UserKnownHostsFile /dev/null
7+
LogLevel ERROR
8+
SetEnv CODER_SSH_SESSION_TYPE=JetBrains
9+
Host coder-jetbrains--foo-bar--test.coder.invalid--bg
10+
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio --usage-app=disable foo-bar
411
ConnectTimeout 0
512
StrictHostKeyChecking no
613
UserKnownHostsFile /dev/null

src/test/fixtures/outputs/append-no-blocks.conf

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,14 @@ Host test2
55

66
# --- START CODER JETBRAINS test.coder.invalid
77
Host coder-jetbrains--foo-bar--test.coder.invalid
8-
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio foo-bar
8+
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio --usage-app=jetbrains foo-bar
9+
ConnectTimeout 0
10+
StrictHostKeyChecking no
11+
UserKnownHostsFile /dev/null
12+
LogLevel ERROR
13+
SetEnv CODER_SSH_SESSION_TYPE=JetBrains
14+
Host coder-jetbrains--foo-bar--test.coder.invalid--bg
15+
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio --usage-app=disable foo-bar
916
ConnectTimeout 0
1017
StrictHostKeyChecking no
1118
UserKnownHostsFile /dev/null

src/test/fixtures/outputs/append-no-newline.conf

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,14 @@ Host test2
44
Port 443
55
# --- START CODER JETBRAINS test.coder.invalid
66
Host coder-jetbrains--foo-bar--test.coder.invalid
7-
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio foo-bar
7+
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio --usage-app=jetbrains foo-bar
8+
ConnectTimeout 0
9+
StrictHostKeyChecking no
10+
UserKnownHostsFile /dev/null
11+
LogLevel ERROR
12+
SetEnv CODER_SSH_SESSION_TYPE=JetBrains
13+
Host coder-jetbrains--foo-bar--test.coder.invalid--bg
14+
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio --usage-app=disable foo-bar
815
ConnectTimeout 0
916
StrictHostKeyChecking no
1017
UserKnownHostsFile /dev/null

src/test/fixtures/outputs/append-no-related-blocks.conf

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,14 @@ some jetbrains config
1111

1212
# --- START CODER JETBRAINS test.coder.invalid
1313
Host coder-jetbrains--foo-bar--test.coder.invalid
14-
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio foo-bar
14+
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio --usage-app=jetbrains foo-bar
15+
ConnectTimeout 0
16+
StrictHostKeyChecking no
17+
UserKnownHostsFile /dev/null
18+
LogLevel ERROR
19+
SetEnv CODER_SSH_SESSION_TYPE=JetBrains
20+
Host coder-jetbrains--foo-bar--test.coder.invalid--bg
21+
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio --usage-app=disable foo-bar
1522
ConnectTimeout 0
1623
StrictHostKeyChecking no
1724
UserKnownHostsFile /dev/null

src/test/fixtures/outputs/disable-autostart.conf

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
# --- START CODER JETBRAINS test.coder.invalid
22
Host coder-jetbrains--foo--test.coder.invalid
3-
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio --disable-autostart foo
3+
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio --disable-autostart --usage-app=jetbrains foo
4+
ConnectTimeout 0
5+
StrictHostKeyChecking no
6+
UserKnownHostsFile /dev/null
7+
LogLevel ERROR
8+
SetEnv CODER_SSH_SESSION_TYPE=JetBrains
9+
Host coder-jetbrains--foo--test.coder.invalid--bg
10+
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio --disable-autostart --usage-app=disable foo
411
ConnectTimeout 0
512
StrictHostKeyChecking no
613
UserKnownHostsFile /dev/null

src/test/fixtures/outputs/extra-config.conf

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
11
# --- START CODER JETBRAINS test.coder.invalid
22
Host coder-jetbrains--extra--test.coder.invalid
3-
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio extra
3+
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio --usage-app=jetbrains extra
4+
ConnectTimeout 0
5+
StrictHostKeyChecking no
6+
UserKnownHostsFile /dev/null
7+
LogLevel ERROR
8+
SetEnv CODER_SSH_SESSION_TYPE=JetBrains
9+
ServerAliveInterval 5
10+
ServerAliveCountMax 3
11+
Host coder-jetbrains--extra--test.coder.invalid--bg
12+
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio --usage-app=disable extra
413
ConnectTimeout 0
514
StrictHostKeyChecking no
615
UserKnownHostsFile /dev/null

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy