]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/DevelLauncher.java
FIX: coverity resource leaks.
[gigi.git] / src / org / cacert / gigi / DevelLauncher.java
index 44a949c8b2654e72538c2a2529e15413e8b5ec72..5d1686728378524f39eb7ed416532a06e730642f 100644 (file)
@@ -11,6 +11,7 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.lang.reflect.Field;
+import java.net.URL;
 import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.util.HashMap;
@@ -31,13 +32,22 @@ public class DevelLauncher {
 
     public static void main(String[] args) throws Exception {
         Properties mainProps = new Properties();
-        mainProps.load(new FileInputStream("config/gigi.properties"));
+        try (FileInputStream inStream = new FileInputStream("config/gigi.properties")) {
+            mainProps.load(inStream);
+        }
         for (int i = 0; i < args.length; i++) {
             if (args[i].equals("--port")) {
                 mainProps.setProperty("port", args[i + 1]);
             }
             i++;
         }
+        try {
+            String targetPort = mainProps.getProperty("http.port");
+            String targetHost = mainProps.getProperty("name.www");
+            URL u = new URL("http://" + targetHost + ":" + targetPort + "/kill");
+            u.openStream();
+        } catch (IOException e) {
+        }
 
         ByteArrayOutputStream chunkConfig = new ByteArrayOutputStream();
         DataOutputStream dos = new DataOutputStream(chunkConfig);
@@ -48,7 +58,7 @@ public class DevelLauncher {
         dos.flush();
         InputStream oldin = System.in;
         System.setIn(new ByteArrayInputStream(chunkConfig.toByteArray()));
-        Launcher.main(args);
+        Launcher.boot();
         addDevelPage();
         System.setIn(oldin);
         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
@@ -58,7 +68,7 @@ public class DevelLauncher {
         System.exit(0);
     }
 
-    private static void addDevelPage() {
+    public static void addDevelPage() {
         try {
             Field instF = Gigi.class.getDeclaredField("instance");
             Field pageF = Gigi.class.getDeclaredField("pages");
@@ -66,7 +76,7 @@ public class DevelLauncher {
             pageF.setAccessible(true);
             Object gigi = instF.get(null);
             HashMap<String, Page> pages = (HashMap<String, Page>) pageF.get(gigi);
-            pages.put("/manage", new Page("Page-manger") {
+            pages.put("/manage", new Page("Page-manager") {
 
                 @Override
                 public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
@@ -76,6 +86,18 @@ public class DevelLauncher {
 
                 }
 
+                @Override
+                public boolean needsLogin() {
+                    return false;
+                }
+            });
+            pages.put("/kill", new Page("Kill") {
+
+                @Override
+                public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+                    System.exit(0);
+                }
+
                 @Override
                 public boolean needsLogin() {
                     return false;