]> WPIA git - gigi.git/blobdiff - util-testing/org/cacert/gigi/DevelLauncher.java
upd: rate limit bypassing for test cases
[gigi.git] / util-testing / org / cacert / gigi / DevelLauncher.java
index e161b11d60c6a32c2778e13e16e7c79e8117d09d..8c010bdc42bdf3105abd1b3dd9a5b794862e97db 100644 (file)
@@ -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;
@@ -31,6 +32,9 @@ import org.cacert.gigi.dbObjects.User;
 import org.cacert.gigi.localisation.Language;
 import org.cacert.gigi.output.template.Template;
 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 +58,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();
@@ -118,6 +128,8 @@ public class DevelLauncher {
                 @Override
                 public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
                     ObjectCache.clearAllCaches();
+                    RegisterPage.RATE_LIMIT.bypass();
+                    CertificateRequest.RATE_LIMIT.bypass();
                     resp.getWriter().println("All caches cleared.");
                     System.out.println("Caches cleared.");
 
@@ -168,6 +180,11 @@ public class DevelLauncher {
 
             Template t = new Template(DevelLauncher.class.getResource("DevelTicketWait.templ"));
 
+            @Override
+            public boolean needsLogin() {
+                return false;
+            }
+
             @Override
             public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
                 resp.setHeader("content-security-policy", "");
@@ -183,9 +200,14 @@ 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);
+                    sess.setAttribute(AUTH_CONTEXT, new AuthorizationContext(user, user));
                     req.getSession().setAttribute(LOGIN_METHOD, "Ticket");
                     resp.getWriter().println("ticket consumed");
                     ticketUsed = true;
@@ -218,6 +240,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;