Skip to content

Commit

Permalink
Merge pull request #519 from slovensko-digital/token-session-timer-fix
Browse files Browse the repository at this point in the history
tokenSessionTimeout - fix CLI and fix application shutdown
  • Loading branch information
celuchmarek authored Jan 27, 2025
2 parents 5dfd656 + b4a7641 commit 63578d9
Show file tree
Hide file tree
Showing 10 changed files with 41 additions and 20 deletions.
4 changes: 4 additions & 0 deletions src/main/java/digital/slovensko/autogram/core/Autogram.java
Original file line number Diff line number Diff line change
Expand Up @@ -295,4 +295,8 @@ private void resetTokenSessionTimer() {
stopTokenSessionTimer();
startTokenSessionTimer();
}

public void shutdown() {
stopTokenSessionTimer();
}
}
15 changes: 11 additions & 4 deletions src/main/java/digital/slovensko/autogram/ui/cli/CliApp.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,17 @@

import java.io.File;
import java.util.Arrays;
import java.util.Timer;

import org.apache.commons.cli.CommandLine;

public class CliApp {
public static void start(CommandLine cmd) {
Autogram autogram = null;
try {
var settings = CliSettings.fromCmd(cmd);
var ui = new CliUI(settings);
var autogram = new Autogram(ui, settings);
autogram = new Autogram(ui, settings);

if (settings.getSource() == null)
throw new SourceNotDefindedException();
Expand All @@ -29,24 +31,29 @@ public static void start(CommandLine cmd) {

var source = settings.getSource();
var sourceList = source.isDirectory() ? source.listFiles() : new File[] { source };

var finalAutogram = autogram;
var jobs = Arrays.stream(sourceList).filter(f -> f.isFile())
.map(f -> SigningJob.buildFromFile(f, new SaveFileResponder(f, autogram, targetPathBuilder),
.map(f -> SigningJob.buildFromFile(f, new SaveFileResponder(f, finalAutogram, targetPathBuilder),
settings.isPdfaCompliance(), settings.getSignatureLevel(), settings.isEn319132(),
settings.getTspSource(), settings.isPlainXmlEnabled()))
.toList();
if (settings.isPdfaCompliance()) {
jobs.forEach(job -> {
System.out.println("Checking PDF/A file compatibility for " + job.getDocument().getName());
autogram.checkPDFACompliance(job);
finalAutogram.checkPDFACompliance(job);
});
}

ui.setJobsCount(jobs.size());

jobs.forEach(autogram::sign);

} catch (AutogramException e) {
System.err.println(CliUI.parseError(e));

} finally {
if (autogram != null)
autogram.shutdown();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ public static CliSettings fromCmd(CommandLine cmd) {
settings.setTsaEnabled(settings.getTsaServer() != null);
settings.setBulkEnabled(true);
settings.setPlainXmlEnabled(cmd.hasOption("plain-xml"));
settings.setTokenSessionTimeout(5);

return settings;
}
Expand Down
18 changes: 13 additions & 5 deletions src/main/java/digital/slovensko/autogram/ui/gui/GUIApp.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,16 @@ public class GUIApp extends Application {
@Override
public void start(Stage windowStage) throws Exception {
AutogramServer server = null;
Autogram autogram = null;
try {
var userSettings = UserSettings.load();

Platform.setImplicitExit(false);
setUserAgentStylesheet(getClass().getResource("idsk.css").toExternalForm());
var titleString = "Autogram";

final Autogram autogram;
autogram = new Autogram(new GUI(getHostServices(), userSettings), userSettings);
var finalAutogram = autogram;
autogram.checkForUpdate();
autogram.initializeSignatureValidator(scheduledExecutorService, cachedExecutorService, userSettings.getTrustedList());

Expand All @@ -48,6 +49,7 @@ public void start(Stage windowStage) throws Exception {
var thread = new Thread(server::stop);
windowStage.setOnCloseRequest(event -> {
thread.start();
finalAutogram.shutdown();
Platform.exit();
});

Expand All @@ -61,10 +63,12 @@ public void start(Stage windowStage) throws Exception {
}
}

if (server == null)
if (server == null) {
windowStage.setOnCloseRequest(event -> {
finalAutogram.shutdown();
Platform.exit();
});
}

GUIUtils.suppressDefaultFocus(windowStage, controller);
windowStage.setTitle(titleString);
Expand All @@ -74,12 +78,16 @@ public void start(Stage windowStage) throws Exception {

} catch (Exception e) {
//ak nastane chyba, zobrazíme chybové okno a ukončíme aplikáciu
final var serverFinal = server; //pomocná premenná, do lambda výrazu nižšie musí vstupovať finalna premenná
var serverFinal = server; //pomocná premenná, do lambda výrazu nižšie musí vstupovať finalna premenná
var finalAutogram = autogram;
Platform.runLater(() -> {
GUIUtils.showError(new UnrecognizedException(e), "Ukončiť",true);
if (serverFinal != null) {
if (serverFinal != null)
new Thread(serverFinal::stop).start();
}

if (finalAutogram != null)
finalAutogram.shutdown();

Platform.exit();
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ info:
license:
name: EUPL
url: https://github.com/slovensko-digital/autogram/blob/main/LICENSE
version: 2.2.0
version: 2.3.0
servers:
- url: http://localhost:37200
- url: /
Expand Down
6 changes: 3 additions & 3 deletions src/main/scripts/macos-setup-keychain.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/usr/bin/env bash -e

security unlock-keychain $APPLE_KEYCHAIN_PATH
security list-keychains -d user -s $APPLE_KEYCHAIN_PATH login.keychain
security default-keychain -s $APPLE_KEYCHAIN_PATH
security unlock-keychain "$APPLE_KEYCHAIN_PATH"
security list-keychains -d user -s "$APPLE_KEYCHAIN_PATH" login.keychain
security default-keychain -s "$APPLE_KEYCHAIN_PATH"
4 changes: 2 additions & 2 deletions src/main/scripts/resources/Autogram-post-image.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@ chmod +x "$TARGET/MacOS/Autogram"
# codesign changed executables
ENTITLEMENTS=../../Autogram.entitlements
if [[ "$JPACKAGE_MAC_SIGN" == "1" ]]; then
codesign -s "$APPLE_DEVELOPER_IDENTITY" --keychain $APPLE_KEYCHAIN_PATH --entitlements "$ENTITLEMENTS" --options=runtime --deep --timestamp --force "$TARGET/MacOS/Autogram"
codesign -s "$APPLE_DEVELOPER_IDENTITY" --keychain $APPLE_KEYCHAIN_PATH --entitlements "$ENTITLEMENTS" --options=runtime --deep --timestamp --force "$TARGET/MacOS/AutogramApp"
codesign -s "$APPLE_DEVELOPER_IDENTITY" --keychain "$APPLE_KEYCHAIN_PATH" --entitlements "$ENTITLEMENTS" --options=runtime --deep --timestamp --force "$TARGET/MacOS/Autogram"
codesign -s "$APPLE_DEVELOPER_IDENTITY" --keychain "$APPLE_KEYCHAIN_PATH" --entitlements "$ENTITLEMENTS" --options=runtime --deep --timestamp --force "$TARGET/MacOS/AutogramApp"
fi
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,11 @@ copy_extension=copy
[alt_names]
DNS.1=loopback.autogram.slovensko.digital
" >$SSL_CONFIG_TMP
" >"$SSL_CONFIG_TMP"

cat $SSL_CONFIG_TMP
cat "$SSL_CONFIG_TMP"

/usr/bin/openssl req -nodes -x509 -newkey rsa:4096 -keyout "$TLS_DIR/autogram-key.pem" -out "$TLS_DIR/autogram-cert.pem" -sha256 -days 365 -config $SSL_CONFIG_TMP
/usr/bin/openssl req -nodes -x509 -newkey rsa:4096 -keyout "$TLS_DIR/autogram-key.pem" -out "$TLS_DIR/autogram-cert.pem" -sha256 -days 365 -config "$SSL_CONFIG_TMP"

/usr/bin/openssl pkcs12 -export -in "$TLS_DIR/autogram-cert.pem" -inkey "$TLS_DIR/autogram-key.pem" -out "$TLS_DIR/autogram-pkcs12-cert.p12" -name "autogram-pkcs12-cert" -passout pass:

Expand All @@ -52,5 +52,5 @@ DNS.1=loopback.autogram.slovensko.digital

function remove_cert(){
TLS_DIR="$HOME/Library/Application Support/Autogram/tls"
security delete-certificate -Z $(openssl x509 -in "$TLS_DIR/autogram-cert.pem" -outform DER | shasum -a 1 ) "$HOME/Library/Keychains/login.keychain-db"
security delete-certificate -Z "$(openssl x509 -in "$TLS_DIR/autogram-cert.pem" -outform DER | shasum -a 1 )" "$HOME/Library/Keychains/login.keychain-db"
}
2 changes: 1 addition & 1 deletion src/main/scripts/resources/uninstall.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ TLS_DIR="$HOME/Library/Application Support/Autogram/tls"
# Any of these might work
# security remove-trusted-cert "$TLS_DIR/autogram-cert.pem"
# security delete-certificate -c "localhost.arcicode.com" "$HOME/Library/Keychains/login.keychain-db"
security delete-certificate -Z $(openssl x509 -in "$TLS_DIR/autogram-cert.pem" -outform DER | shasum -a 1 ) "$HOME/Library/Keychains/login.keychain-db"
security delete-certificate -Z "$(openssl x509 -in "$TLS_DIR/autogram-cert.pem" -outform DER | shasum -a 1 )" "$HOME/Library/Keychains/login.keychain-db"

rm -fr "$TLS_DIR"
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import java.security.KeyStore;
import java.util.List;
import java.util.Objects;
import java.util.Timer;
import java.util.function.Consumer;

import static org.mockito.ArgumentMatchers.any;
Expand Down

0 comments on commit 63578d9

Please sign in to comment.