+ } else if (req.getParameter("cats") != null) {
+ String mail = req.getParameter("catsEmail");
+ String testId = req.getParameter("catsType");
+ User byEmail = User.getByEmail(mail);
+ if (byEmail == null) {
+ resp.getWriter().println("User not found.");
+ return;
+ }
+ if (testId == null) {
+ resp.getWriter().println("No test given.");
+ return;
+ }
+ CATSType test = CATSType.values()[Integer.parseInt(testId)];
+ passCATS(byEmail, test);
+ resp.getWriter().println("Test '" + test.getDisplayName() + "' was added to user account.");
+ } else if (req.getParameter("assure") != null) {
+ String mail = req.getParameter("assureEmail");
+ String verificationPoints = req.getParameter("verificationPoints");
+ User byEmail = User.getByEmail(mail);
+
+ if (byEmail == null) {
+ resp.getWriter().println("User not found.");
+ return;
+ }
+
+ int vp = 0;
+ int agentNumber = 0;
+
+ try {
+ try {
+ vp = Integer.parseInt(verificationPoints);
+ } catch (NumberFormatException e) {
+ throw new GigiApiException("No valid Verification Points entered.");
+ }
+
+ if (vp > 100) { // only allow max 100 Verification points
+ vp = 100;
+ }
+
+ while (vp > 0) {
+ int currentVP = 10;
+ if (vp < 10) {
+ currentVP = vp;
+ }
+ Notary.assure(getAssurer(agentNumber), byEmail, byEmail.getPreferredName(), byEmail.getDoB(), currentVP, "Testmanager Verify up code", "2014-11-06", AssuranceType.FACE_TO_FACE, getRandomCountry());
+ agentNumber += 1;
+ vp -= currentVP;
+ }
+
+ } catch (GigiApiException e) {
+ throw new Error(e);
+ }
+
+ resp.getWriter().println("User has been assured " + agentNumber + " times.");
+
+ } else if (req.getParameter("letassure") != null) {
+ String mail = req.getParameter("letassureEmail");
+ User byEmail = User.getByEmail(mail);
+ try {
+ for (int i = 0; i < 25; i++) {
+ User a = getAssurer(i);
+ Notary.assure(byEmail, a, a.getNames()[0], a.getDoB(), 10, "Testmanager exp up code", "2014-11-06", AssuranceType.FACE_TO_FACE, getRandomCountry());
+ }
+ } catch (GigiApiException e) {
+ throw new Error(e);
+ }
+ } else if (req.getParameter("addEmail") != null) {
+ User u = User.getByEmail(req.getParameter("addEmailEmail"));
+ try {
+ EmailAddress ea = new EmailAddress(u, req.getParameter("addEmailNew"), Locale.ENGLISH);
+ verify(ea.getAddress(), ea);
+ } catch (IllegalArgumentException e) {
+ e.printStackTrace();
+ resp.getWriter().println("An internal error occured.");
+ } catch (GigiApiException e) {
+ e.format(resp.getWriter(), Language.getInstance(Locale.ENGLISH));
+ }
+ } else if (req.getParameter("addCert") != null) {
+ User u = User.getByEmail(req.getParameter("addCertEmail"));
+ try {
+ KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
+ kpg.initialize(4096);
+ KeyPair kp = kpg.generateKeyPair();
+ SPKAC s = new SPKAC((X509Key) kp.getPublic(), "challange");
+ Signature sign = Signature.getInstance("SHA512withRSA");
+ sign.initSign(kp.getPrivate());
+
+ byte[] res = s.getEncoded(sign);
+
+ CertificateRequest cr = new CertificateRequest(new AuthorizationContext(u, u), Base64.getEncoder().encodeToString(res), "challange");
+ cr.update(CertificateRequest.DEFAULT_CN, Digest.SHA512.toString(), "client", null, "", "email:" + u.getEmail());
+ Certificate draft = cr.draft();
+ draft.issue(null, "2y", u).waitFor(10000);
+ if (draft.getStatus() == CertificateStatus.ISSUED) {
+ resp.getWriter().println("added certificate");
+ } else {
+ resp.getWriter().println("signer failed");
+ }
+ } catch (GeneralSecurityException e1) {
+ e1.printStackTrace();
+ resp.getWriter().println("error");
+ } catch (GigiApiException e) {
+ e.format(resp.getWriter(), Language.getInstance(Locale.ENGLISH));
+ }
+
+ } else if (req.getParameter("addExDom") != null) {
+ String dom = req.getParameter("exemtDom");
+ pingExempt.add(dom);
+ resp.getWriter().println("Updated domains exempt from pings. Current set: <br/>");
+ resp.getWriter().println(pingExempt);
+ } else if (req.getParameter("delExDom") != null) {
+ String dom = req.getParameter("exemtDom");
+ pingExempt.remove(dom);
+ resp.getWriter().println("Updated domains exempt from pings. Current set: <br/>");
+ resp.getWriter().println(pingExempt);