1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package edu.internet2.middleware.shibboleth.idp.config.profile.authn;
18
19 import java.util.ArrayList;
20 import java.util.List;
21 import java.util.Map;
22
23 import javax.xml.namespace.QName;
24
25 import org.opensaml.xml.util.DatatypeHelper;
26 import org.opensaml.xml.util.XMLHelper;
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
29 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
30 import org.w3c.dom.Element;
31
32 import edu.internet2.middleware.shibboleth.idp.config.profile.ProfileHandlerNamespaceHandler;
33
34
35
36
37 public class IPAddressLoginHandlerBeanDefinitionParser extends AbstractLoginHandlerBeanDefinitionParser {
38
39
40 public static final QName SCHEMA_TYPE = new QName(ProfileHandlerNamespaceHandler.NAMESPACE, "IPAddress");
41
42
43 public static final QName IP_ENTRY_ELEMENT_NAME = new QName(ProfileHandlerNamespaceHandler.NAMESPACE, "IPEntry");
44
45
46 private final Logger log = LoggerFactory.getLogger(IPAddressLoginHandlerBeanDefinitionParser.class);
47
48
49 protected Class getBeanClass(Element element) {
50 return IPAddressLoginHandlerFactoryBean.class;
51 }
52
53
54 protected void doParse(Element config, BeanDefinitionBuilder builder) {
55 super.doParse(config, builder);
56
57 boolean defaultDeny = XMLHelper.getAttributeValueAsBoolean(config.getAttributeNodeNS(null, "defaultDeny"));
58 log.debug("Setting defaultDeny to: {}", defaultDeny);
59 builder.addPropertyValue("defaultDeny", defaultDeny);
60
61 String username = DatatypeHelper.safeTrim(config.getAttributeNS(null, "username"));
62 log.debug("Setting username to: {}", username);
63 builder.addPropertyValue("username", username);
64
65 Map<QName, List<Element>> children = XMLHelper.getChildElements(config);
66 List<Element> ipEntries = children.get(IP_ENTRY_ELEMENT_NAME);
67 List<String> addresses = new ArrayList<String>();
68
69 for (Element element : ipEntries) {
70 String address = DatatypeHelper.safeTrimOrNullString(element.getTextContent());
71 if (address != null) {
72 log.debug("Adding IP Address: {}", address);
73 addresses.add(address);
74 }
75 }
76 builder.addPropertyValue("addresses", addresses);
77 }
78 }