X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fapi%2FGigiAPI.java;h=dbac5a881b8a82dcb0ae100c43753f57af38526f;hp=74cff967ef9d26ed445f37d5350a31f52a38b708;hb=d23d7a6fa9dc38c6193fea70017e0bff11257be5;hpb=fc2fcf0b35bf4cde8f4a9c7243de3306e8b4b55b diff --git a/src/org/cacert/gigi/api/GigiAPI.java b/src/org/cacert/gigi/api/GigiAPI.java index 74cff967..dbac5a88 100644 --- a/src/org/cacert/gigi/api/GigiAPI.java +++ b/src/org/cacert/gigi/api/GigiAPI.java @@ -1,19 +1,57 @@ package org.cacert.gigi.api; import java.io.IOException; +import java.io.InputStreamReader; +import java.util.HashMap; import javax.servlet.ServletException; +import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.cacert.gigi.database.DatabaseConnection; +import org.cacert.gigi.database.DatabaseConnection.Link; + public class GigiAPI extends HttpServlet { - @Override - protected void service(HttpServletRequest req, HttpServletResponse resp) - throws ServletException, IOException { - String pi = req.getPathInfo(); - if (pi == null) { - return; - } - } + + private static final long serialVersionUID = 659963677032635817L; + + HashMap api = new HashMap<>(); + + public GigiAPI() { + api.put(CreateCertificate.PATH, new CreateCertificate()); + api.put(RevokeCertificate.PATH, new RevokeCertificate()); + api.put(CATSImport.PATH, new CATSImport()); + api.put(CATSResolve.PATH, new CATSResolve()); + } + + @Override + protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + String pi = req.getPathInfo(); + if (pi == null) { + return; + } + if (pi.equals("/security/csp/report")) { + ServletInputStream sis = req.getInputStream(); + InputStreamReader isr = new InputStreamReader(sis, "UTF-8"); + StringBuffer strB = new StringBuffer(); + char[] buffer = new char[4 * 1024]; + int len; + while ((len = isr.read(buffer)) > 0) { + strB.append(buffer, 0, len); + } + System.out.println(strB); + return; + } + + APIPoint p = api.get(pi); + try (Link l = DatabaseConnection.newLink(false)) { + if (p != null) { + p.process(req, resp); + } + } catch (InterruptedException e) { + throw new Error(e); + } + } }