Thanks to visit codestin.com
Credit goes to github.com

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)