package org.apereo.cas.configuration.model.support.throttle;
import org.apereo.cas.configuration.model.support.jpa.AbstractJpaProperties;
import org.apereo.cas.configuration.support.Beans;
/**
* Configuration properties class for cas.throttle.
*
* @author Dmitriy Kopylenko
* @since 5.0.0
*/
public class ThrottleProperties {
private static final String DEFAULT_APPLICATION_CODE = "CAS";
private static final String DEFAULT_AUTHN_FAILED_ACTION = "AUTHENTICATION_FAILED";
private Failure failure = new Failure();
private Jdbc jdbc = new Jdbc();
private String usernameParameter;
private String appcode = DEFAULT_APPLICATION_CODE;
private String repeatInterval = "PT20S";
private String startDelay = "PT10S";
public Jdbc getJdbc() {
return jdbc;
}
public Failure getFailure() {
return failure;
}
public void setFailure(final Failure failure) {
this.failure = failure;
}
public String getUsernameParameter() {
return usernameParameter;
}
public void setUsernameParameter(final String usernameParameter) {
this.usernameParameter = usernameParameter;
}
public String getAppcode() {
return appcode;
}
public void setAppcode(final String appcode) {
this.appcode = appcode;
}
public long getRepeatInterval() {
return Beans.newDuration(repeatInterval).toMillis();
}
public void setRepeatInterval(final String repeatInterval) {
this.repeatInterval = repeatInterval;
}
public long getStartDelay() {
return Beans.newDuration(startDelay).toMillis();
}
public void setStartDelay(final String startDelay) {
this.startDelay = startDelay;
}
/**
* Failure.
*/
public static class Failure {
private String code = DEFAULT_AUTHN_FAILED_ACTION;
private int threshold = -1;
private int rangeSeconds = -1;
public String getCode() {
return code;
}
public void setCode(final String code) {
this.code = code;
}
public int getThreshold() {
return threshold;
}
public void setThreshold(final int threshold) {
this.threshold = threshold;
}
public int getRangeSeconds() {
return rangeSeconds;
}
public void setRangeSeconds(final int rangeSeconds) {
this.rangeSeconds = rangeSeconds;
}
}
public static class Jdbc extends AbstractJpaProperties {
private static final String SQL_AUDIT_QUERY = "SELECT AUD_DATE FROM COM_AUDIT_TRAIL WHERE AUD_CLIENT_IP = ? AND AUD_USER = ? "
+ "AND AUD_ACTION = ? AND APPLIC_CD = ? AND AUD_DATE >= ? ORDER BY AUD_DATE DESC";
private String auditQuery = SQL_AUDIT_QUERY;
public String getAuditQuery() {
return auditQuery;
}
public void setAuditQuery(final String auditQuery) {
this.auditQuery = auditQuery;
}
}
}