Ssh secret input rework

This commit is contained in:
crschnick 2023-08-06 15:00:40 +00:00
parent e6340e77c4
commit f8b56ab774
4 changed files with 25 additions and 12 deletions

View file

@ -144,7 +144,7 @@ application {
run {
systemProperty 'io.xpipe.app.useVirtualThreads', 'false'
systemProperty 'io.xpipe.app.mode', 'gui'
// systemProperty 'io.xpipe.app.dataDir', "$projectDir/local7/"
systemProperty 'io.xpipe.app.dataDir', "$projectDir/local7/"
systemProperty 'io.xpipe.app.writeLogs', "true"
systemProperty 'io.xpipe.app.writeSysOut', "true"
systemProperty 'io.xpipe.app.developerMode', "true"

View file

@ -8,18 +8,20 @@ import javafx.beans.property.SimpleObjectProperty;
import javafx.scene.control.Alert;
import javafx.scene.layout.StackPane;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import java.util.*;
public class AskpassAlert {
private static final Map<UUID, UUID> requestToId = new HashMap<>();
private static final Set<UUID> cancelledRequests = new HashSet<>();
private static final Set<UUID> requests = new HashSet<>();
public static SecretValue query(String prompt, UUID requestId, UUID secretId) {
if (requestToId.containsKey(requestId)) {
var id = requestToId.remove(requestId);
SecretCache.clear(id);
if (cancelledRequests.contains(requestId)) {
return null;
}
if (SecretCache.get(secretId).isPresent() && requests.contains(requestId)) {
SecretCache.clear(secretId);
}
var found = SecretCache.get(secretId);
@ -40,15 +42,16 @@ public class AskpassAlert {
})
.filter(b -> b.getButtonData().isDefaultButton() && prop.getValue() != null)
.map(t -> {
// AppCache.update(msg.getId(), prop.getValue());
return prop.getValue();
return prop.getValue() != null ? prop.getValue() : SecretHelper.encryptInPlace("");
})
.orElse(null);
// If the result is null, assume that the operation was aborted by the user
if (r != null) {
requestToId.put(requestId, secretId);
requests.add(requestId);
SecretCache.set(secretId, r);
} else {
cancelledRequests.add(requestId);
}
return r;

View file

@ -23,6 +23,10 @@ public class SecretCache {
}
var pass = strategy.retrieve(prompt, id);
if (pass == null) {
return null;
}
passwords.put(id, pass);
return pass;
}

View file

@ -3,6 +3,7 @@ package io.xpipe.ext.base.browser;
import io.xpipe.app.browser.BrowserEntry;
import io.xpipe.app.browser.OpenFileSystemModel;
import io.xpipe.app.browser.action.LeafAction;
import io.xpipe.core.store.FileKind;
import javafx.scene.Node;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyCodeCombination;
@ -18,6 +19,11 @@ public class RenameAction implements LeafAction {
model.getFileList().getEditing().setValue(entries.get(0));
}
@Override
public boolean automaticallyResolveLinks() {
return false;
}
@Override
public Category getCategory() {
return Category.MUTATION;
@ -30,7 +36,7 @@ public class RenameAction implements LeafAction {
@Override
public boolean isApplicable(OpenFileSystemModel model, List<BrowserEntry> entries) {
return entries.size() == 1;
return entries.size() == 1 && entries.get(0).getRawFileEntry().getKind() != FileKind.LINK;
}
@Override