sql.password=
highFinancialValue=/path/to/alexa/list
+
+time.testValidMonths=12
+time.reverificationDays=90
+time.verificationFreshMonths=39
+time.verificationMaxAgeMonths=24
import org.cacert.gigi.util.AuthorizationContext;
import org.cacert.gigi.util.DomainAssessment;
import org.cacert.gigi.util.ServerConstants;
+import org.cacert.gigi.util.TimeConditions;
public final class Gigi extends HttpServlet {
instance = this;
DomainAssessment.init(conf);
DatabaseConnection.init(conf);
+ TimeConditions.init(conf);
this.truststore = truststore;
pinger = new PingerDaemon(truststore);
pinger.start();
import org.cacert.gigi.database.GigiPreparedStatement;
import org.cacert.gigi.database.GigiResultSet;
+import org.cacert.gigi.util.TimeConditions;
public class CATS {
/**
* The maximal number of months a passed test is considered "recent".
*/
- public static final int TEST_MONTHS = 12;
+ public static final int TEST_MONTHS = TimeConditions.getInstance().getTestMonths();
private static HashMap<String, Integer> names = new HashMap<>();
import org.cacert.gigi.util.Notary;
import org.cacert.gigi.util.PasswordHash;
import org.cacert.gigi.util.PasswordStrengthChecker;
+import org.cacert.gigi.util.TimeConditions;
/**
* Represents an acting, assurable, user. Synchronizing on user means: no
/**
* Time in months a verification is considered "recent".
*/
- public static final int VERIFICATION_MONTHS = 39;
+ public static final int VERIFICATION_MONTHS = TimeConditions.getInstance().getVerificationMonths();
private Name preferredName;
// minimum date range between 2 verifications of the RA-Agent to the same
// Applicant
- public final static int LIMIT_DAYS_VERIFICATION = 90; // conf.getProperty("limit_days_verification");
+ public final static int LIMIT_DAYS_VERIFICATION = TimeConditions.getInstance().getVerificationLimitDays();
// maximum date range from date when the verification took place and the
// entering to the system
- public final static int LIMIT_MAX_MONTHS_VERIFICATION = 24; // conf.getProperty("limit_max_months_verification");
+ public final static int LIMIT_MAX_MONTHS_VERIFICATION = TimeConditions.getInstance().getVerificationMaxAgeMonths();
public static void writeUserAgreement(User member, String document, String method, String comment, boolean active, int secmemid) {
try (GigiPreparedStatement q = new GigiPreparedStatement("INSERT INTO `user_agreements` SET `memid`=?, `secmemid`=?," + " `document`=?,`date`=NOW(), `active`=?,`method`=?,`comment`=?")) {
--- /dev/null
+package org.cacert.gigi.util;
+
+import java.util.Properties;
+
+import org.cacert.gigi.dbObjects.CATS;
+
+public class TimeConditions {
+
+ private static TimeConditions instance;
+
+ private final int testValidMonths;
+
+ private final int reverificationDays;
+
+ private final int verificationFreshMonths;
+
+ private final int verificationMaxAgeMonths;
+
+ private TimeConditions(Properties ppts) {
+ testValidMonths = Integer.parseInt(ppts.getProperty("time.testValidMonths", "12"));
+ reverificationDays = Integer.parseInt(ppts.getProperty("time.reverificationDays", "90"));
+ verificationFreshMonths = Integer.parseInt(ppts.getProperty("time.verificationFreshMonths", "39"));
+ verificationMaxAgeMonths = Integer.parseInt(ppts.getProperty("time.verificationMaxAgeMonths", "24"));
+ }
+
+ public static synchronized TimeConditions getInstance() {
+ if (instance == null) {
+ throw new IllegalStateException("TimeConditions class not yet initialised.");
+ }
+ return instance;
+ }
+
+ public static synchronized final void init(Properties ppts) {
+ if (instance != null) {
+ throw new IllegalStateException("TimeConditions class already initialised.");
+ }
+ instance = new TimeConditions(ppts);
+ }
+
+ /**
+ * Maximum time in months that a passed {@link CATS} test is considered
+ * recent.
+ *
+ * @return the configured number of months
+ */
+ public int getTestMonths() {
+ return testValidMonths;
+ }
+
+ /**
+ * Minimum time in days that needs to have passed in order to verify a name
+ * again.
+ *
+ * @return the configured number of days
+ */
+ public int getVerificationLimitDays() {
+ return reverificationDays;
+ }
+
+ /**
+ * Maximum time in months that a verification is considered recent.
+ *
+ * @return the configured number of months
+ */
+ public int getVerificationMonths() {
+ return verificationFreshMonths;
+ }
+
+ /**
+ * Maximum time in months that a verification can be entered after it
+ * occurred. Assuming that the RA-Agent enters the correct date.
+ *
+ * @return the configured number of months
+ */
+ public int getVerificationMaxAgeMonths() {
+ return verificationMaxAgeMonths;
+ }
+
+}
import org.cacert.gigi.util.Notary;
import org.cacert.gigi.util.PEM;
import org.cacert.gigi.util.ServerConstants;
+import org.cacert.gigi.util.TimeConditions;
import org.junit.BeforeClass;
import sun.security.pkcs10.PKCS10;
}
Properties props = generateProps();
ServerConstants.init(props);
+ TimeConditions.init(props);
DomainAssessment.init(props);
if ( !DatabaseConnection.isInited()) {