blob: 00e3067a5be0cc050e359d2f63ceb54166f87945 [file] [log] [blame]
package de.ids_mannheim.korap.security;
import de.ids_mannheim.korap.utils.IPNetMask;
import de.ids_mannheim.korap.utils.TimeUtils;
import lombok.Getter;
import java.net.UnknownHostException;
/**
* @author hanl
* @date 09/01/2014
*/
@Getter
public class PolicyContext {
// refers to a specific ip location
private String ipmask = "";
// this context is not like an environmental property (e.g. morning hours/ evening hours), but specifies absolute time
// parameters (e.g. from 10.04.2014 9:00 till 14..04.2014 active for testing).
// if the containing parameter do not meet, the policy will be deactivated. if no parameter where specified, the policy
// remains active
// specifies a start time for the policy to be activated
private long start = 0L;
// specifies a time up to which the policy stays active
private long end = 0L;
public PolicyContext () {
start = TimeUtils.getNow().getMillis();
}
public PolicyContext setIPMask (String ip) {
this.ipmask = ip;
return this;
}
public PolicyContext setExpirationTime (long limit) {
this.end = limit;
return this;
}
public PolicyContext setEnableTime (long start) {
this.start = start;
return this;
}
protected boolean isActive (String ipaddress) {
if (ipaddress == null)
return false;
if (noMask())
return true;
IPNetMask mask;
try {
mask = IPNetMask.getIPMask(this.ipmask);
boolean f = mask.matches(ipaddress);
return f;
}
catch (UnknownHostException e) {
e.printStackTrace();
return false;
}
}
protected boolean noMask () {
return ipmask == null || ipmask.isEmpty();
}
@Override
public String toString () {
return "PolicyContext{" + ", ipmask='" + ipmask + '\'' + ", start="
+ start + ", end=" + end + '}';
}
}