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 {
|
dependencies {
|
||||||
constraints {
|
constraints {
|
||||||
api libs.protobuf.java
|
api libs.protobuf.java
|
||||||
|
api libs.slf4j.api
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,8 @@ include 'statsnode'
|
||||||
include 'apitest'
|
include 'apitest'
|
||||||
include 'platform'
|
include 'platform'
|
||||||
include 'code-coverage-report'
|
include 'code-coverage-report'
|
||||||
|
include 'updater'
|
||||||
|
|
||||||
includeBuild 'bitcoind'
|
includeBuild 'bitcoind'
|
||||||
|
|
||||||
rootProject.name = 'bisq'
|
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