X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2FDevelLauncher.java;h=2cc7f6348bb1900e0853a1654c1683d4a43d4919;hb=638ef2a38b676d8bb919d25ce9ce092d6ecbd3fe;hp=e83ae4145f3d47d955c5b087a9e23b27479eb882;hpb=943d8e7ed0ea5a9d56e7e694a3cbd849c52bad16;p=gigi.git diff --git a/src/org/cacert/gigi/DevelLauncher.java b/src/org/cacert/gigi/DevelLauncher.java index e83ae414..2cc7f634 100644 --- a/src/org/cacert/gigi/DevelLauncher.java +++ b/src/org/cacert/gigi/DevelLauncher.java @@ -10,10 +10,18 @@ import java.io.IOException; 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; import java.util.Properties; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.cacert.gigi.dbObjects.ObjectCache; +import org.cacert.gigi.pages.Page; import org.kamranzafar.jtar.TarEntry; import org.kamranzafar.jtar.TarHeader; import org.kamranzafar.jtar.TarOutputStream; @@ -31,6 +39,13 @@ public class DevelLauncher { } 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); @@ -42,6 +57,7 @@ public class DevelLauncher { InputStream oldin = System.in; System.setIn(new ByteArrayInputStream(chunkConfig.toByteArray())); Launcher.main(args); + addDevelPage(); System.setIn(oldin); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Cacert-gigi system sucessfully started."); @@ -50,6 +66,46 @@ public class DevelLauncher { System.exit(0); } + private static void addDevelPage() { + try { + Field instF = Gigi.class.getDeclaredField("instance"); + Field pageF = Gigi.class.getDeclaredField("pages"); + instF.setAccessible(true); + pageF.setAccessible(true); + Object gigi = instF.get(null); + HashMap pages = (HashMap) pageF.get(gigi); + pages.put("/manage", new Page("Page-manager") { + + @Override + public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { + ObjectCache.clearAllCaches(); + resp.getWriter().println("All caches cleared."); + System.out.println("Caches cleared."); + + } + + @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; + } + }); + } catch (ReflectiveOperationException e) { + e.printStackTrace(); + } + } + public static void writeGigiConfig(OutputStream target, byte[] keystorepw, byte[] truststorepw, Properties mainprop, byte[] cacerts, byte[] keystore) throws IOException { TarOutputStream tos = new TarOutputStream(target); ByteArrayOutputStream baos = new ByteArrayOutputStream();