mirror of
https://github.com/xpipe-io/xpipe.git
synced 2024-09-30 00:56:56 +13:00
Ssh secret input rework
This commit is contained in:
parent
e6340e77c4
commit
f8b56ab774
4 changed files with 25 additions and 12 deletions
|
@ -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"
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -23,6 +23,10 @@ public class SecretCache {
|
|||
}
|
||||
|
||||
var pass = strategy.retrieve(prompt, id);
|
||||
if (pass == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
passwords.put(id, pass);
|
||||
return pass;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue