1 /**
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements.  See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership.  The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License.  You may obtain a copy of the License at
9  *
10  *     http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18 package org.apache.hadoop.util;
19 
20 import org.apache.commons.logging.Log;
21 import org.apache.commons.logging.LogFactory;
22 
23 public class CombinedIPWhiteList implements IPList {
24 
25   public static final Log LOG = LogFactory.getLog(CombinedIPWhiteList.class);
26   private static final String LOCALHOST_IP = "127.0.0.1";
27 
28   private final IPList[] networkLists;
29 
CombinedIPWhiteList(String fixedWhiteListFile, String variableWhiteListFile, long cacheExpiryInSeconds)30   public CombinedIPWhiteList(String fixedWhiteListFile,
31       String variableWhiteListFile, long cacheExpiryInSeconds) {
32 
33     IPList fixedNetworkList = new FileBasedIPList(fixedWhiteListFile);
34     if (variableWhiteListFile != null){
35       IPList variableNetworkList = new CacheableIPList(
36           new FileBasedIPList(variableWhiteListFile),cacheExpiryInSeconds);
37       networkLists = new IPList[] {fixedNetworkList, variableNetworkList};
38     }
39     else {
40       networkLists = new IPList[] {fixedNetworkList};
41     }
42   }
43   @Override
isIn(String ipAddress)44   public boolean isIn(String ipAddress) {
45     if (ipAddress == null) {
46       throw new IllegalArgumentException("ipAddress is null");
47     }
48 
49     if (LOCALHOST_IP.equals(ipAddress)) {
50       return true;
51     }
52 
53     for (IPList networkList:networkLists) {
54       if (networkList.isIn(ipAddress)) {
55         return true;
56       }
57     }
58     return false;
59   }
60 }
61