From: Lucas Werkmeister Date: Mon, 29 Aug 2016 14:00:47 +0000 (+0200) Subject: Support reading configuration from file X-Git-Url: https://code.wpia.club/?p=gigi.git;a=commitdiff_plain;h=49b85ef92acaa7b62acdfd89aac04680f7c25154;ds=sidebyside Support reading configuration from file This is necessary to support socket activation (Java only supports a single "inherited channel", which must be file descriptor 0), and also makes it simpler to run gigi when the configuration is just a regular file. It also simplifies the DevelLauncher a bit. Change-Id: I8bf03317ea549bd17f5b61e50808f48314a06803 --- diff --git a/src/org/cacert/gigi/Launcher.java b/src/org/cacert/gigi/Launcher.java index a7730adc..cff94772 100644 --- a/src/org/cacert/gigi/Launcher.java +++ b/src/org/cacert/gigi/Launcher.java @@ -1,6 +1,9 @@ package org.cacert.gigi; import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; import java.io.IOException; import java.net.HttpURLConnection; import java.net.InetSocketAddress; @@ -96,19 +99,25 @@ public class Launcher { public static void main(String[] args) throws Exception { System.setProperty("jdk.tls.ephemeralDHKeySize", "4096"); - new Launcher().boot(); + InputStream in; + if (args.length >= 1) { + in = new FileInputStream(new File(args[0])); + } else { + in = System.in; + } + new Launcher().boot(in); } Server s; GigiConfig conf; - public synchronized void boot() throws Exception { + public synchronized void boot(InputStream in) throws Exception { Locale.setDefault(Locale.ENGLISH); TimeZone.setDefault(TimeZone.getTimeZone("UTC")); HttpURLConnection.setFollowRedirects(false); - conf = GigiConfig.parse(System.in); + conf = GigiConfig.parse(in); ServerConstants.init(conf.getMainProps()); initEmails(conf); diff --git a/util-testing/org/cacert/gigi/DevelLauncher.java b/util-testing/org/cacert/gigi/DevelLauncher.java index 736947d5..0fe53454 100644 --- a/util-testing/org/cacert/gigi/DevelLauncher.java +++ b/util-testing/org/cacert/gigi/DevelLauncher.java @@ -70,9 +70,7 @@ public class DevelLauncher { DevelLauncher.writeGigiConfig(dos, "changeit".getBytes("UTF-8"), "changeit".getBytes("UTF-8"), mainProps, cacerts, keystore); dos.flush(); - InputStream oldin = System.in; - System.setIn(new ByteArrayInputStream(chunkConfig.toByteArray())); - new Launcher().boot(); + new Launcher().boot(new ByteArrayInputStream(chunkConfig.toByteArray())); addDevelPage(true); new Thread("ticket awaiter") { @@ -94,7 +92,6 @@ public class DevelLauncher { } } }.start(); - System.setIn(oldin); BufferedReader br = new BufferedReader(new InputStreamReader(System.in, "UTF-8")); System.out.println("Cacert-gigi system sucessfully started."); System.out.println("Press enter to shutdown.");