]> WPIA git - gigi.git/blob - src/org/cacert/gigi/DevelLauncher.java
d3368c0dd96bcf55dab9e9653a887d181419b508
[gigi.git] / src / org / cacert / gigi / DevelLauncher.java
1 package org.cacert.gigi;
2
3 import java.io.ByteArrayInputStream;
4 import java.io.ByteArrayOutputStream;
5 import java.io.DataOutputStream;
6 import java.io.File;
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;
13
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]);
21                         }
22                         i++;
23                 }
24
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"));
30
31                 DevelLauncher.writeGigiConfig(dos, new byte[]{}, "changeit".getBytes(),
32                                 mainProps, cacerts, keystore);
33                 dos.flush();
34                 InputStream oldin = System.in;
35                 System.setIn(new ByteArrayInputStream(chunkConfig.toByteArray()));
36                 Launcher.main(args);
37                 System.setIn(oldin);
38         }
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);
50
51         }
52         public static void writeChunk(DataOutputStream dos, byte[] chunk)
53                         throws IOException {
54                 dos.writeInt(chunk.length);
55                 dos.write(chunk);
56         }
57         public static void launch(Properties props, File cacerts, File keystore)
58                         throws IOException {
59                 ByteArrayOutputStream config = new ByteArrayOutputStream();
60                 props.store(config, "");
61         }
62 }