mirror of
https://github.com/bisq-network/bisq.git
synced 2025-02-28 17:15:14 +01:00
updater: Implement pkexec executor
This commit is contained in:
parent
4318c1ec14
commit
599f49dcec
3 changed files with 67 additions and 0 deletions
|
@ -0,0 +1,11 @@
|
|||
package bisq.updater;
|
||||
|
||||
public class InstallationFailedException extends RuntimeException {
|
||||
public InstallationFailedException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public InstallationFailedException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
}
|
49
updater/src/main/java/bisq/updater/linux/pkexec/PkExec.java
Normal file
49
updater/src/main/java/bisq/updater/linux/pkexec/PkExec.java
Normal file
|
@ -0,0 +1,49 @@
|
|||
package bisq.updater.linux.pkexec;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
|
||||
|
||||
import bisq.updater.InstallationFailedException;
|
||||
|
||||
@Slf4j
|
||||
public class PkExec {
|
||||
public static final int AUTHORIZATION_FAILED = 127;
|
||||
private static final int AUTHORIZATION_DIALOG_DISMISSED = 126;
|
||||
|
||||
public static Process run(List<String> args) {
|
||||
try {
|
||||
var processBuilder = new ProcessBuilder("pkexec");
|
||||
processBuilder.command().addAll(args);
|
||||
|
||||
Process process = processBuilder
|
||||
.redirectErrorStream(true)
|
||||
.redirectOutput(ProcessBuilder.Redirect.DISCARD)
|
||||
.start();
|
||||
|
||||
boolean isSuccess = process.waitFor(2, TimeUnit.MINUTES);
|
||||
if (!isSuccess) {
|
||||
throw new InstallationFailedException(processBuilder.command() + " didn't finish after 2 minutes.");
|
||||
}
|
||||
|
||||
int exitCode = process.exitValue();
|
||||
switch (exitCode) {
|
||||
case AUTHORIZATION_FAILED:
|
||||
throw new PkexecAuthorizationFailedException("Couldn't get authorization from user.");
|
||||
case AUTHORIZATION_DIALOG_DISMISSED:
|
||||
throw new PkexecAuthorizationFailedException("User dismissed authorization dialog.");
|
||||
}
|
||||
|
||||
return process;
|
||||
|
||||
} catch (IOException | InterruptedException e) {
|
||||
throw new InstallationFailedException("Installation failed.", e);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
package bisq.updater.linux.pkexec;
|
||||
|
||||
public class PkexecAuthorizationFailedException extends RuntimeException {
|
||||
public PkexecAuthorizationFailedException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue