1 package org.cacert.gigi;
3 import java.io.ByteArrayInputStream;
4 import java.io.ByteArrayOutputStream;
5 import java.io.DataOutputStream;
7 import java.io.FileInputStream;
8 import java.io.IOException;
9 import java.io.InputStream;
10 import java.nio.file.Files;
11 import java.nio.file.Paths;
12 import java.util.Properties;
14 public class DevelLauncher {
15 public static void main(String[] args) throws Exception {
16 Properties mainProps = new Properties();
17 mainProps.load(new FileInputStream("config/gigi.properties"));
18 for (int i = 0; i < args.length; i++) {
19 if (args[i].equals("--port")) {
20 mainProps.setProperty("port", args[i + 1]);
25 ByteArrayOutputStream chunkConfig = new ByteArrayOutputStream();
26 DataOutputStream dos = new DataOutputStream(chunkConfig);
27 byte[] cacerts = Files.readAllBytes(Paths.get("config/cacerts.jks"));
28 byte[] keystore = Files.readAllBytes(Paths
29 .get("config/keystore.pkcs12"));
31 DevelLauncher.writeGigiConfig(dos, new byte[]{}, "changeit".getBytes(),
32 mainProps, cacerts, keystore);
34 InputStream oldin = System.in;
35 System.setIn(new ByteArrayInputStream(chunkConfig.toByteArray()));
39 public static void writeGigiConfig(DataOutputStream target,
40 byte[] keystorepw, byte[] truststorepw, Properties mainprop,
41 byte[] cacerts, byte[] keystore) throws IOException {
42 writeChunk(target, GigiConfig.GIGI_CONFIG_VERSION.getBytes());
43 writeChunk(target, keystorepw);
44 writeChunk(target, truststorepw);
45 ByteArrayOutputStream props = new ByteArrayOutputStream();
46 mainprop.store(props, "");
47 writeChunk(target, props.toByteArray());
48 writeChunk(target, cacerts);
49 writeChunk(target, keystore);
52 public static void writeChunk(DataOutputStream dos, byte[] chunk)
54 dos.writeInt(chunk.length);
57 public static void launch(Properties props, File cacerts, File keystore)
59 ByteArrayOutputStream config = new ByteArrayOutputStream();
60 props.store(config, "");