1 21 22 package org.continuent.sequoia.controller.authentication; 23 24 import java.io.Serializable ; 25 import java.util.ArrayList ; 26 import java.util.Iterator ; 27 import java.util.List ; 28 29 import org.continuent.sequoia.common.xml.DatabasesXmlTags; 30 31 37 public class AccessControl implements Serializable 38 { 39 private static final long serialVersionUID = -5819003895772344875L; 40 41 private boolean defaultPolicyAcceptAll; 42 private List accessList; 43 44 50 public AccessControl(boolean defaultPolicyIsAcceptAll) 51 { 52 defaultPolicyAcceptAll = defaultPolicyIsAcceptAll; 53 accessList = new ArrayList (); 54 } 55 56 61 public void addAccessControlRule(AccessControlRule rule) 62 { 63 synchronized (accessList) 64 { 65 accessList.add(rule); 66 } 67 } 68 69 77 public boolean acceptConnectionFrom(String address) 78 { 79 for (Iterator iter = accessList.iterator(); iter.hasNext();) 80 { 81 AccessControlRule rule = (AccessControlRule) iter.next(); 82 if (rule.addressMatchesRule(address)) 83 return rule.isAccept(); 84 } 85 return defaultPolicyAcceptAll; 86 } 87 88 93 public String getXml() 94 { 95 StringBuffer xml = new StringBuffer ("<" 96 + DatabasesXmlTags.ELT_AccessControl 97 + " " 98 + DatabasesXmlTags.ATT_defaultPolicy 99 + "=\"" 100 + (defaultPolicyAcceptAll 101 ? DatabasesXmlTags.VAL_acceptAll 102 : DatabasesXmlTags.VAL_denyAll) + "\">"); 103 for (Iterator iter = accessList.iterator(); iter.hasNext();) 104 { 105 AccessControlRule rule = (AccessControlRule) iter.next(); 106 xml.append(rule.getXml()); 107 } 108 xml.append("</" + DatabasesXmlTags.ELT_AccessControl + ">"); 109 return xml.toString(); 110 } 111 112 115 public String toString() 116 { 117 return "Default policy: " + (defaultPolicyAcceptAll ? "accept" : "deny") 118 + "\n" + accessList; 119 } 120 121 } 122 | Popular Tags |