mirror of
https://github.com/bisq-network/bisq.git
synced 2025-02-28 17:15:14 +01:00
Merge pull request #7398 from alvasw/updater_Implement_pkexec_executor
updater: Implement pkexec executor
This commit is contained in:
commit
2bbdf33a0a
6 changed files with 82 additions and 0 deletions
|
@ -5,5 +5,6 @@ plugins {
|
|||
dependencies {
|
||||
constraints {
|
||||
api libs.protobuf.java
|
||||
api libs.slf4j.api
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,6 +36,8 @@ include 'statsnode'
|
|||
include 'apitest'
|
||||
include 'platform'
|
||||
include 'code-coverage-report'
|
||||
include 'updater'
|
||||
|
||||
includeBuild 'bitcoind'
|
||||
|
||||
rootProject.name = 'bisq'
|
||||
|
|
12
updater/build.gradle
Normal file
12
updater/build.gradle
Normal file
|
@ -0,0 +1,12 @@
|
|||
plugins {
|
||||
id 'bisq.java-conventions'
|
||||
id 'java-library'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation enforcedPlatform(project(':platform'))
|
||||
annotationProcessor libs.lombok
|
||||
compileOnly libs.lombok
|
||||
implementation libs.logback.classic
|
||||
implementation libs.logback.core
|
||||
}
|
|
@ -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