import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.Signature;
+import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Base64;
import java.util.Calendar;
import club.wpia.gigi.GigiApiException;
import club.wpia.gigi.crypto.SPKAC;
import club.wpia.gigi.database.GigiPreparedStatement;
+import club.wpia.gigi.database.GigiResultSet;
import club.wpia.gigi.dbObjects.CATS;
import club.wpia.gigi.dbObjects.CATS.CATSType;
import club.wpia.gigi.dbObjects.Certificate;
CATS.enterResult(u, t, new Date(System.currentTimeMillis()), "en_EN", "1");
}
+ private void expireCATS(User u, CATSType t) {
+ try (GigiPreparedStatement ps = new GigiPreparedStatement("SELECT `id` FROM `cats_passed` WHERE `user_id`=? AND `variant_id`=? AND `pass_date`>?")) {
+ ps.setInt(1, u.getId());
+ ps.setInt(2, t.getId());
+ ps.setTimestamp(3, new Timestamp(System.currentTimeMillis() - DayDate.MILLI_DAY * 366));
+ ps.execute();
+ GigiResultSet rs = ps.executeQuery();
+ while (rs.next()) {
+ GigiPreparedStatement ps1 = new GigiPreparedStatement("UPDATE `cats_passed` SET `pass_date`=? WHERE `id`=?");
+ ps1.setTimestamp(1, new Timestamp(System.currentTimeMillis() - DayDate.MILLI_DAY * 367));
+ ps1.setInt(2, rs.getInt(1));
+ ps1.execute();
+ ps1.close();
+ }
+ }
+
+ }
+
private static Manager instance;
private static final Template t = new Template(Manager.class.getResource("ManagerMails.templ"));
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+ AuthorizationContext sessionAc = (AuthorizationContext) req.getSession().getAttribute(Gigi.AUTH_CONTEXT);
if (req.getParameter("create") != null) {
String prefix = req.getParameter("prefix");
String domain = req.getParameter("suffix");
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("catsexpire") != 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)];
+ expireCATS(byEmail, test);
+ resp.getWriter().println("Test '" + test.getDisplayName() + "' is set expired for user account.");
} else if (req.getParameter("verify") != null) {
String mail = req.getParameter("verifyEmail");
String verificationPoints = req.getParameter("verificationPoints");
byte[] res = s.getEncoded(sign);
- CertificateRequest cr = new CertificateRequest(new AuthorizationContext(u, u), Base64.getEncoder().encodeToString(res), "challenge");
+ CertificateRequest cr = new CertificateRequest(new AuthorizationContext(u, u, sessionAc.isStronglyAuthenticated()), Base64.getEncoder().encodeToString(res), "challenge");
cr.update(CertificateRequest.DEFAULT_CN, Digest.SHA512.toString(), "client", null, "", "email:" + u.getEmail());
Certificate draft = cr.draft();
draft.issue(null, "2y", u).waitFor(10000);