package org.batfish.representation.aws_vpcs;
import java.io.Serializable;
import java.util.LinkedList;
import java.util.List;
import org.batfish.common.BatfishLogger;
import org.batfish.datamodel.IpAccessListLine;
import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
public class SecurityGroup implements AwsVpcEntity, Serializable {
private static final long serialVersionUID = 1L;
private final String _groupId;
private final String _groupName;
private final List<IpPermissions> _ipPermsEgress;
private final List<IpPermissions> _ipPermsIngress;
public SecurityGroup(JSONObject jObj, BatfishLogger logger)
throws JSONException {
_ipPermsEgress = new LinkedList<>();
_ipPermsIngress = new LinkedList<>();
_groupId = jObj.getString(JSON_KEY_GROUP_ID);
_groupName = jObj.getString(JSON_KEY_GROUP_NAME);
// logger.debugf("doing security group %s\n", _groupId);
JSONArray permsEgress = jObj.getJSONArray(JSON_KEY_IP_PERMISSIONS_EGRESS);
initIpPerms(_ipPermsEgress, permsEgress, logger);
JSONArray permsIngress = jObj.getJSONArray(JSON_KEY_IP_PERMISSIONS);
initIpPerms(_ipPermsIngress, permsIngress, logger);
}
private void addEgressAccessLines(List<IpPermissions> permsList,
List<IpAccessListLine> accessList) {
for (IpPermissions ipPerms : permsList) {
accessList.add(ipPerms.toEgressIpAccessListLine());
}
}
private void addIngressAccessLines(List<IpPermissions> permsList,
List<IpAccessListLine> accessList) {
for (IpPermissions ipPerms : permsList) {
accessList.add(ipPerms.toIngressIpAccessListLine());
}
}
public void addInOutAccessLines(List<IpAccessListLine> inboundRules,
List<IpAccessListLine> outboundRules) {
addIngressAccessLines(_ipPermsIngress, inboundRules);
addEgressAccessLines(_ipPermsEgress, outboundRules);
}
public String getGroupId() {
return _groupId;
}
public String getGroupName() {
return _groupName;
}
@Override
public String getId() {
return _groupId;
}
public List<IpPermissions> getIpPermsEgress() {
return _ipPermsEgress;
}
public List<IpPermissions> getIpPermsIngress() {
return _ipPermsIngress;
}
private void initIpPerms(List<IpPermissions> ipPermsList,
JSONArray ipPermsJson, BatfishLogger logger) throws JSONException {
for (int index = 0; index < ipPermsJson.length(); index++) {
JSONObject childObject = ipPermsJson.getJSONObject(index);
ipPermsList.add(new IpPermissions(childObject, logger));
}
}
}