X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=util-testing%2Forg%2Fcacert%2Fgigi%2FDevelLauncher.java;h=736947d55ac566675d62c25b93d06fa2120058ff;hb=0d9465248c016d99ac04e10b34d141a5811fac6f;hp=4137aa5d5427e9c362b7effb5239caa86aeeab65;hpb=db51d6dc2bf587d1d41a1cab9c2225004c80a508;p=gigi.git diff --git a/util-testing/org/cacert/gigi/DevelLauncher.java b/util-testing/org/cacert/gigi/DevelLauncher.java index 4137aa5d..736947d5 100644 --- a/util-testing/org/cacert/gigi/DevelLauncher.java +++ b/util-testing/org/cacert/gigi/DevelLauncher.java @@ -16,6 +16,7 @@ import java.lang.reflect.Field; import java.net.URISyntaxException; import java.net.URL; import java.nio.file.Files; +import java.nio.file.Path; import java.nio.file.Paths; import java.util.Collections; import java.util.HashMap; @@ -30,7 +31,12 @@ import org.cacert.gigi.dbObjects.ObjectCache; import org.cacert.gigi.dbObjects.User; import org.cacert.gigi.localisation.Language; import org.cacert.gigi.output.template.Template; +import org.cacert.gigi.output.template.TranslateCommand; +import org.cacert.gigi.pages.LoginPage; import org.cacert.gigi.pages.Page; +import org.cacert.gigi.pages.account.certs.CertificateRequest; +import org.cacert.gigi.pages.main.RegisterPage; +import org.cacert.gigi.util.AuthorizationContext; import org.cacert.gigi.util.ServerConstants; import org.kamranzafar.jtar.TarEntry; import org.kamranzafar.jtar.TarHeader; @@ -54,7 +60,13 @@ public class DevelLauncher { ByteArrayOutputStream chunkConfig = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(chunkConfig); byte[] cacerts = Files.readAllBytes(Paths.get("config/cacerts.jks")); - byte[] keystore = Files.readAllBytes(Paths.get("config/keystore.pkcs12")); + byte[] keystore = null; + Path p = Paths.get("config/keystore.pkcs12"); + if (p.toFile().exists()) { + keystore = Files.readAllBytes(p); + } else { + mainProps.setProperty("proxy", "true"); + } DevelLauncher.writeGigiConfig(dos, "changeit".getBytes("UTF-8"), "changeit".getBytes("UTF-8"), mainProps, cacerts, keystore); dos.flush(); @@ -110,14 +122,21 @@ public class DevelLauncher { // Check if we got a proper map (as much as we can tell) Object pagesObj = pageF.get(gigi); + if ( !(pagesObj instanceof Map)) { + throw new Error("Invalid state when initializing page structure"); + } + @SuppressWarnings("unchecked") - HashMap pages = pagesObj instanceof Map ? new HashMap<>((Map) pagesObj) : null; + HashMap pages = new HashMap<>((Map) pagesObj); pages.put("/manage", new Page("Page-manager") { @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { ObjectCache.clearAllCaches(); + RegisterPage.RATE_LIMIT.bypass(); + LoginPage.RATE_LIMIT.bypass(); + CertificateRequest.RATE_LIMIT.bypass(); resp.getWriter().println("All caches cleared."); System.out.println("Caches cleared."); @@ -166,7 +185,7 @@ public class DevelLauncher { private static void addTicketPage(HashMap pages) { pages.put("/ticketWait", new Page("ticket") { - Template t = new Template(DevelLauncher.class.getResource("DevelTicketWait.templ")); + private final Template t = new Template(DevelLauncher.class.getResource("DevelTicketWait.templ")); @Override public boolean needsLogin() { @@ -188,10 +207,15 @@ public class DevelLauncher { if ( !ticketUsed) { HttpSession sess = req.getSession(); User user = User.getById(1); + if (user == null) { + resp.getWriter().println("ticket consumed but no user available for that action"); + ticketUsed = true; + return true; + } sess.setAttribute(LOGGEDIN, true); sess.setAttribute(Language.SESSION_ATTRIB_NAME, user.getPreferredLocale()); - sess.setAttribute(USER, user); - req.getSession().setAttribute(LOGIN_METHOD, "Ticket"); + sess.setAttribute(AUTH_CONTEXT, new AuthorizationContext(user, user)); + req.getSession().setAttribute(LOGIN_METHOD, new TranslateCommand("Ticket")); resp.getWriter().println("ticket consumed"); ticketUsed = true; } @@ -223,6 +247,9 @@ public class DevelLauncher { } private static void putTarEntry(byte[] data, TarOutputStream tos, String name) throws IOException { + if (data == null) { + return; + } TarHeader th = new TarHeader(); th.name = new StringBuffer(name); th.size = data.length;