diff options
| author | Jakob Heher <jakob.heher@iaik.tugraz.at> | 2026-04-30 10:21:59 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-04-30 10:21:59 +0200 |
| commit | e2bfdc313c0b6395d272624688b4ed1cba7ce967 (patch) | |
| tree | da96c8ed518f18cd3c676605004f5c80daf5570b /pdf-as-web/src/main/java | |
| parent | 3901740beba6b2673246b1171c12f908f8a359bb (diff) | |
| download | pdf-as-4-e2bfdc313c0b6395d272624688b4ed1cba7ce967.tar.gz pdf-as-4-e2bfdc313c0b6395d272624688b4ed1cba7ce967.tar.bz2 pdf-as-4-e2bfdc313c0b6395d272624688b4ed1cba7ce967.zip | |
Move pdf-as-web.conf to Spring & add MOA timeout (#84)
* move -Dpdf-as-web.conf to spring
* add configurable timeout to MOA signing
* update workflow trigger
Diffstat (limited to 'pdf-as-web/src/main/java')
7 files changed, 51 insertions, 55 deletions
diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/config/PdfAsWebSpringConfiguration.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/config/PdfAsWebSpringConfiguration.java new file mode 100644 index 00000000..fcaf2b81 --- /dev/null +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/config/PdfAsWebSpringConfiguration.java @@ -0,0 +1,15 @@ +package at.gv.egiz.pdfas.web.config; + +import lombok.Getter; +import lombok.NonNull; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +public class PdfAsWebSpringConfiguration { + @Value("${pdf-as-web.conf}") + @Getter + @NonNull String pdfAsWebConfPath; +} diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/config/WebConfiguration.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/config/WebConfiguration.java index c7d36d9a..0b3fdf05 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/config/WebConfiguration.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/config/WebConfiguration.java @@ -68,6 +68,7 @@ public class WebConfiguration implements IConfigurationConstants { public static final String MOA_LIST = "moal"; public static final String MOA_URL = "url"; + public static final String MOA_TIMEOUT = "timeout"; public static final String MOA_KEYID = "KeyIdentifier"; public static final String MOA_CERT = "Certificate"; @@ -394,6 +395,10 @@ public class WebConfiguration implements IConfigurationConstants { public static String getMoaURL(String keyIdentifier) { return properties.getProperty(MOA_LIST + "." + keyIdentifier + "." + MOA_URL); } + + public static String getMoaTimeout(String keyIdentifier) { + return properties.getProperty(MOA_LIST + "." + keyIdentifier + "." + MOA_TIMEOUT); + } public static String getMoaKeyID(String keyIdentifier) { return properties.getProperty(MOA_LIST + "." + keyIdentifier + "." + MOA_KEYID); diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsHelper.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsHelper.java index 841acca9..95e9089f 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsHelper.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsHelper.java @@ -433,11 +433,13 @@ public class PdfAsHelper { } String url = WebConfiguration.getMoaURL(keyIdentifier); + String timeout = WebConfiguration.getMoaTimeout(keyIdentifier); String keyId = WebConfiguration.getMoaKeyID(keyIdentifier); String certificate = WebConfiguration .getMoaCertificate(keyIdentifier); config.setValue(IConfigurationConstants.MOA_SIGN_URL, url); + config.setValue(IConfigurationConstants.MOA_SIGN_TIMEOUT, timeout); config.setValue(IConfigurationConstants.MOA_SIGN_KEY_ID, keyId); config.setValue(IConfigurationConstants.MOA_SIGN_CERTIFICATE, certificate); diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ExternSignServlet.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ExternSignServlet.java index 0a806369..a28a4835 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ExternSignServlet.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ExternSignServlet.java @@ -28,6 +28,7 @@ import java.io.IOException; import java.util.List; import java.util.Map; +import at.gv.egiz.pdfas.web.config.PdfAsWebSpringConfiguration; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; @@ -64,17 +65,18 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.fileupload2.jakarta.servlet6.JakartaServletDiskFileUpload; import org.apache.commons.fileupload2.jakarta.servlet6.JakartaServletFileUpload; import org.apache.commons.io.FilenameUtils; +import org.springframework.boot.web.servlet.ServletRegistration; +import org.springframework.stereotype.Component; /** * Servlet implementation class Sign */ @Slf4j +@Component +@ServletRegistration(urlMappings = "/Sign") public class ExternSignServlet extends HttpServlet { private static final long serialVersionUID = 1L; - - // TODO: get this from spring instead of -D - public static final String PDF_AS_WEB_CONF = "pdf-as-web.conf"; private static final String UPLOAD_PDF_DATA = "pdf-file"; private static final String UPLOAD_DIRECTORY = "upload"; @@ -83,15 +85,8 @@ public class ExternSignServlet extends HttpServlet { * Default constructor. */ - public ExternSignServlet(){ - String webconfig = System.getProperty(PDF_AS_WEB_CONF); - - if(webconfig == null) { - log.error("No web configuration provided! Please specify: " + PDF_AS_WEB_CONF); - throw new RuntimeException("No web configuration provided! Please specify: " + PDF_AS_WEB_CONF); - } - - WebConfiguration.configure(webconfig); + public ExternSignServlet(final PdfAsWebSpringConfiguration config) { + WebConfiguration.configure(config.getPdfAsWebConfPath()); PdfAsHelper.init(); try { diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ReloadServlet.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ReloadServlet.java index c4db303f..89d33e80 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ReloadServlet.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ReloadServlet.java @@ -3,17 +3,26 @@ package at.gv.egiz.pdfas.web.servlets; import java.io.IOException; import java.io.OutputStream; +import at.gv.egiz.pdfas.web.config.PdfAsWebSpringConfiguration; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import at.gv.egiz.pdfas.web.config.WebConfiguration; import at.gv.egiz.pdfas.web.helper.PdfAsHelper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.web.servlet.ServletRegistration; +import org.springframework.stereotype.Component; +@Slf4j +@Component +@ServletRegistration(urlMappings = "/Reload") public class ReloadServlet extends HttpServlet { /** @@ -21,17 +30,12 @@ public class ReloadServlet extends HttpServlet { */ private static final long serialVersionUID = 6108555300743896727L; - private static final Logger logger = LoggerFactory - .getLogger(ReloadServlet.class); - - public static final String PDF_AS_WEB_CONF = "pdf-as-web.conf"; public static final String PARAM_PASSWD = "PASSWD"; - /** - * @see HttpServlet#HttpServlet() - */ - public ReloadServlet() { + private final PdfAsWebSpringConfiguration config; + public ReloadServlet(final PdfAsWebSpringConfiguration config) { super(); + this.config = config; } /** @@ -42,15 +46,15 @@ public class ReloadServlet extends HttpServlet { HttpServletResponse response) throws ServletException, IOException { if(!WebConfiguration.getReloadEnabled()) { - logger.info("Reload Servlet disabled. " + request.getRemoteAddr() + " tried to call it"); + log.info("Reload Servlet disabled. " + request.getRemoteAddr() + " tried to call it"); response.setStatus(HttpServletResponse.SC_FORBIDDEN); response.setContentLength(0); return; } - logger.info("Called Reload Servlet from: " + request.getRemoteAddr()); + log.info("Called Reload Servlet from: " + request.getRemoteAddr()); - logger.info("Checking Password!"); + log.info("Checking Password!"); String pwd = request.getParameter(PARAM_PASSWD); @@ -66,17 +70,11 @@ public class ReloadServlet extends HttpServlet { return; } - String webconfig = System.getProperty(PDF_AS_WEB_CONF); - - if(webconfig == null) { - logger.error("No web configuration provided! Please specify: " + PDF_AS_WEB_CONF); - throw new RuntimeException("No web configuration provided! Please specify: " + PDF_AS_WEB_CONF); - } - + String webconfig = config.getPdfAsWebConfPath(); WebConfiguration.configure(webconfig); PdfAsHelper.reloadConfig(); - logger.info("Reloaded!"); + log.info("Reloaded!"); StringBuilder sb = new StringBuilder(); diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/VerifyServlet.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/VerifyServlet.java index 4a80e25d..2334597a 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/VerifyServlet.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/VerifyServlet.java @@ -58,10 +58,15 @@ import at.gv.egiz.pdfas.web.stats.StatisticEvent.Operation; import at.gv.egiz.pdfas.web.stats.StatisticEvent.Source; import at.gv.egiz.pdfas.web.stats.StatisticEvent.Status; import at.gv.egiz.pdfas.web.stats.StatisticFrontend; +import org.springframework.boot.web.servlet.ServletRegistration; +import org.springframework.stereotype.Component; /** * Servlet implementation class VerifyServlet */ + +@Component +@ServletRegistration(urlMappings = "/Verify") public class VerifyServlet extends HttpServlet { private static final long serialVersionUID = 1L; diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/web_xml_bridges/ServletBridge.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/web_xml_bridges/ServletBridge.java index af59a7d6..3337a417 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/web_xml_bridges/ServletBridge.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/web_xml_bridges/ServletBridge.java @@ -18,14 +18,6 @@ public class ServletBridge { } @Bean - public ServletRegistrationBean<Servlet> signServlet() { - return new ServletRegistrationBean<>( - new ExternSignServlet(), - "/Sign" - ); - } - - @Bean public ServletRegistrationBean<Servlet> visBlockServlet() { return new ServletRegistrationBean<>( new VisBlockServlet(), @@ -42,14 +34,6 @@ public class ServletBridge { } @Bean - public ServletRegistrationBean<Servlet> reloadServlet() { - return new ServletRegistrationBean<>( - new ReloadServlet(), - "/Reload" - ); - } - - @Bean public ServletRegistrationBean<Servlet> dataURLServlet() { return new ServletRegistrationBean<>( new DataURLServlet(), @@ -66,14 +50,6 @@ public class ServletBridge { } @Bean - public ServletRegistrationBean<Servlet> verifyServlet() { - return new ServletRegistrationBean<>( - new VerifyServlet(), - "/Verify" - ); - } - - @Bean public ServletRegistrationBean<Servlet> pdfData() { return new ServletRegistrationBean<>( new PDFData(), |
