X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fapi%2FAPIPoint.java;fp=src%2Forg%2Fcacert%2Fgigi%2Fapi%2FAPIPoint.java;h=5a66ff68b998fe096cb391b7e101cfa77f398726;hb=50b8341607e23812216349ef37711e5a85d957c3;hp=0000000000000000000000000000000000000000;hpb=6d215e9cd20c590f1d9fdf17c56043fa7c20239f;p=gigi.git diff --git a/src/org/cacert/gigi/api/APIPoint.java b/src/org/cacert/gigi/api/APIPoint.java new file mode 100644 index 00000000..5a66ff68 --- /dev/null +++ b/src/org/cacert/gigi/api/APIPoint.java @@ -0,0 +1,51 @@ +package org.cacert.gigi.api; + +import java.io.IOException; +import java.security.cert.X509Certificate; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.cacert.gigi.dbObjects.CertificateOwner; +import org.cacert.gigi.dbObjects.User; +import org.cacert.gigi.pages.LoginPage; + +public abstract class APIPoint { + + public void process(HttpServletRequest req, HttpServletResponse resp) throws IOException { + X509Certificate cert = LoginPage.getCertificateFromRequest(req); + if (cert == null) { + resp.sendError(403, "Error, cert authing required."); + return; + } + String serial = LoginPage.extractSerialFormCert(cert); + CertificateOwner u = CertificateOwner.getByEnabledSerial(serial); + if (u == null) { + resp.sendError(403, "Error, cert authing required."); + return; + } + + if ( !req.getMethod().equals("POST")) { + resp.sendError(500, "Error, POST required."); + return; + } + if (req.getQueryString() != null) { + resp.sendError(500, "Error, no query String allowed."); + return; + } + process(req, resp, u); + } + + protected void process(HttpServletRequest req, HttpServletResponse resp, CertificateOwner u) throws IOException { + if (u instanceof User) { + process(req, resp, (User) u); + } else { + resp.sendError(500, "Error, requires a User certificate."); + return; + } + } + + protected void process(HttpServletRequest req, HttpServletResponse resp, User u) throws IOException { + + } +}