Skip to content

Commit 0638b9a

Browse files
Merge pull request #6861 from microsoft/bugfix-windows-sftp
Bugfix windows sftp
2 parents 58c2542 + 28e5ddc commit 0638b9a

File tree

7 files changed

+41
-15
lines changed

7 files changed

+41
-15
lines changed

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-lib/src/main/java/com/microsoft/azure/toolkit/intellij/common/IntelliJAzureIcons.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public class IntelliJAzureIcons {
6060
put(AzureIcons.Common.SHOW_PROPERTIES, AllIcons.Actions.Properties);
6161
put(AzureIcons.Common.UNKNOWN_ICON, AllIcons.Nodes.Unknown);
6262
put(AzureIcons.Action.CONSOLE, AllIcons.Nodes.Console);
63-
put(AzureIcons.Action.SFTP, AllIcons.Actions.ListFiles);
63+
put(AzureIcons.Action.SFTP, AllIcons.Nodes.Servlet);
6464
}
6565
};
6666

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-lib/src/main/java/com/microsoft/azure/toolkit/intellij/common/task/IntellijAzureTaskManager.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -87,20 +87,20 @@ protected void doRunInBackgroundableModal(final Runnable runnable, final AzureTa
8787
// refer https://jetbrains.org/intellij/sdk/docs/basics/disposers.html
8888
// refer https://github.com/JetBrains/intellij-community/commit/d7ac4e133fec7e4c1e63f4c1d7dda65e25258b81 ide.background.tasks has been removed
8989
final String title = StringUtils.capitalize(Objects.requireNonNull(task.getDescription()).toString());
90-
final Task.Backgroundable modalTask = new Task.Backgroundable((Project) task.getProject(), title, task.isCancellable(), foreground) {
90+
final Task.Backgroundable modalTask = new Task.ConditionalModal((Project) task.getProject(), title, task.isCancellable(), foreground) {
9191
@Override
9292
public void run(@Nonnull final ProgressIndicator progressIndicator) {
9393
task.setMonitor(new IntellijTaskMonitor(progressIndicator));
9494
task.setBackgrounded(false);
9595
runnable.run();
9696
}
97-
98-
@Override
99-
public void processSentToBackground() {
100-
task.setBackgrounded(true);
101-
}
10297
};
103-
ProgressManager.getInstance().run(modalTask);
98+
if (ApplicationManager.getApplication().isDispatchThread()) {
99+
ApplicationManager.getApplication().executeOnPooledThread(
100+
() -> ProgressManager.getInstance().run(modalTask));
101+
} else {
102+
ProgressManager.getInstance().run(modalTask);
103+
}
104104
}
105105

106106
private ModalityState toIntellijModality(final AzureTask<?> task) {

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-vm/src/main/java/com/microsoft/azure/toolkit/intellij/vm/ssh/BrowseRemoteHostSftpAction.java

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,21 @@
1010
import com.intellij.openapi.util.Pair;
1111
import com.intellij.openapi.wm.ToolWindow;
1212
import com.intellij.remote.AuthType;
13+
import com.intellij.ssh.RemoteCredentialsUtil;
14+
import com.intellij.ssh.SshException;
1315
import com.intellij.ssh.config.unified.SshConfig;
16+
import com.intellij.ssh.ui.unified.SshUiData;
1417
import com.intellij.ui.content.Content;
1518
import com.jetbrains.plugins.webDeployment.config.AccessType;
1619
import com.jetbrains.plugins.webDeployment.config.GroupedServersConfigManager;
1720
import com.jetbrains.plugins.webDeployment.config.WebServerConfig;
1821
import com.jetbrains.plugins.webDeployment.config.WebServerGroupingWrap;
1922
import com.jetbrains.plugins.webDeployment.ui.WebServerToolWindowFactory;
2023
import com.jetbrains.plugins.webDeployment.ui.WebServerToolWindowPanel;
24+
import com.microsoft.azure.toolkit.lib.common.bundle.AzureString;
2125
import com.microsoft.azure.toolkit.lib.common.messager.AzureMessager;
2226
import com.microsoft.azure.toolkit.lib.common.operation.AzureOperation;
27+
import com.microsoft.azure.toolkit.lib.common.operation.OperationBundle;
2328
import com.microsoft.azure.toolkit.lib.common.task.AzureTaskManager;
2429
import com.microsoft.azure.toolkit.lib.compute.virtualmachine.VirtualMachine;
2530
import org.apache.commons.lang3.reflect.MethodUtils;
@@ -30,18 +35,36 @@
3035
import java.nio.file.Paths;
3136
import java.util.List;
3237
import java.util.Objects;
38+
import java.util.concurrent.TimeUnit;
3339

3440

3541
public class BrowseRemoteHostSftpAction {
3642

37-
@AzureOperation(name = "vm.browse_files_sftp", params = "vm.getName()", type = AzureOperation.Type.ACTION)
43+
@AzureOperation(name = "vm.browse_files_sftp.vm", params = "vm.getName()", type = AzureOperation.Type.ACTION)
3844
public static void browseRemoteHost(VirtualMachine vm, @Nonnull Project project) {
3945
final SshConfig curSshConfig = AddSshConfigAction.getOrCreateSshConfig(vm, project);
40-
final WebServerConfig server = getOrCreateWebServerConfigFromSsh(validateSshConfig(curSshConfig), project);
41-
AzureTaskManager.getInstance().runLater(() -> {
46+
final SshConfig sshConfig = validateSshConfig(curSshConfig);
47+
final Runnable openToolWindowHandler = () -> {
48+
final WebServerConfig server = getOrCreateWebServerConfigFromSsh(sshConfig, project);
4249
final ToolWindow toolWindow = WebServerToolWindowFactory.getWebServerToolWindow(project);
4350
toolWindow.show(null);
4451
toolWindow.activate(() -> selectServerInToolWindow(toolWindow, server.getName(), project));
52+
};
53+
tryConnecting(project, sshConfig, openToolWindowHandler);
54+
}
55+
56+
private static void tryConnecting(@Nonnull Project project, SshConfig sshConfig, Runnable callback) {
57+
final SshUiData sshUiData = new SshUiData(sshConfig);
58+
final AzureString title = OperationBundle.description("vm.connecting.vm", sshConfig.getName());
59+
AzureTaskManager.getInstance().runInModal(title, () -> {
60+
try {
61+
RemoteCredentialsUtil.connectionBuilder(sshUiData, project)
62+
.withConnectionTimeout(10L, TimeUnit.SECONDS)
63+
.checkCanAuthenticate(true);
64+
AzureTaskManager.getInstance().runLater(callback);
65+
} catch (final SshException e) {
66+
AzureMessager.getMessager().error(e, title.toString());
67+
}
4568
});
4669
}
4770

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-vm/src/main/java/com/microsoft/azure/toolkit/intellij/vm/ssh/ConnectUsingSshActionCommunityImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public static ConnectUsingSshAction getInstance() {
2525
return instance;
2626
}
2727

28-
@AzureOperation(name = "vm.connect_using_ssh_community", params = "vm.getName()", type = AzureOperation.Type.ACTION)
28+
@AzureOperation(name = "vm.connect_using_ssh_community.vm", params = "vm.getName()", type = AzureOperation.Type.ACTION)
2929
public void connectBySsh(VirtualMachine vm, @Nonnull Project project) {
3030
final String machineName = vm.getName();
3131
final String terminalTitle = String.format(SSH_TERMINAL_TABLE_NAME, machineName);

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-vm/src/main/java/com/microsoft/azure/toolkit/intellij/vm/ssh/ConnectUsingSshActionUltimateImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public static ConnectUsingSshAction getInstance() {
4242
return instance;
4343
}
4444

45-
@AzureOperation(name = "vm.connect_using_ssh_community_ultimate", params = "vm.getName()", type = AzureOperation.Type.ACTION)
45+
@AzureOperation(name = "vm.connect_using_ssh_ultimate.vm", params = "vm.getName()", type = AzureOperation.Type.ACTION)
4646
public void connectBySsh(VirtualMachine vm, @Nonnull Project project) {
4747
final SshConfig existingConfig = AddSshConfigAction.getOrCreateSshConfig(vm, project);
4848
AzureTaskManager.getInstance().runInBackground(SSH_CONNECTION_TITLE,() ->

Utils/azure-toolkit-ide-libs/azure-toolkit-ide-common-lib/src/main/resources/bundles/com/microsoft/azure/toolkit/operation.properties

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -432,8 +432,11 @@ vm.list_offers.publisher=load offers in publisher({0})
432432
vm.list_publishers=load publishers
433433
vm.list_skus.offer=load skus in offer({0})
434434
vm.add_ssh_config.vm=Add SSH config for ({0})
435-
vm.connect_by_ssh.vm=Connect using SSH for ({0})
435+
vm.connect_using_ssh.vm=Connect ({0}) using SSH
436+
vm.connect_using_ssh_ultimate.vm=Connect ({0}) using SSH in Ultimate version
437+
vm.connect_using_ssh_community.vm=Connect ({0}) using SSH in Community version
436438
vm.browse_files_sftp.vm=Browse files of ({0}) using sftp
439+
vm.connecting.vm=Connecting to ({0}) ...
437440
vm.open_ssh_config_dialog=Open "SSH Configurations" Dialog
438441
vm.create_vm.group=create virtual machine in resource group ({0})
439442
webapp.create_app.app|subscription|image=create web app({0}) in subscription({1}) with private registry image({2})

Utils/azure-toolkit-ide-libs/azure-toolkit-ide-vm-lib/src/main/java/com/microsoft/azure/toolkit/ide/vm/VirtualMachineActionsContributor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public void registerActions(AzureActionManager am) {
3939
am.registerAction(ADD_SSH_CONFIG, new Action<>(ADD_SSH_CONFIG, addSshConfigView));
4040

4141
final ActionView.Builder connectSshView = new ActionView.Builder("Connect Using SSH", AzureIcons.Action.CONSOLE.getIconPath())
42-
.title(s -> Optional.ofNullable(s).map(r -> description("vm.connect_by_ssh.vm", ((VirtualMachine) r).getName())).orElse(null))
42+
.title(s -> Optional.ofNullable(s).map(r -> description("vm.connect_using_ssh.vm", ((VirtualMachine) r).getName())).orElse(null))
4343
.enabled(s -> s instanceof VirtualMachine && ((VirtualMachine) s).getFormalStatus().isRunning());
4444
am.registerAction(CONNECT_SSH, new Action<>(CONNECT_SSH, connectSshView));
4545

0 commit comments

Comments
 (0)