001 package railo.runtime.functions.decision; 002 003 import java.net.InetAddress; 004 import java.net.UnknownHostException; 005 006 import railo.commons.lang.StringUtil; 007 import railo.runtime.PageContext; 008 import railo.runtime.ext.function.Function; 009 010 /** 011 * Implements the CFML Function isleapyear 012 */ 013 public final class IsLocalHost implements Function { 014 015 private static final long serialVersionUID = 5680807516948697186L; 016 017 public static boolean call(PageContext pc , String ip) { 018 return invoke(ip); 019 } 020 public static boolean invoke(String ip) { 021 022 if(StringUtil.isEmpty(ip,true)) return false; 023 ip=ip.trim().toLowerCase(); 024 if( 025 ip.equalsIgnoreCase("localhost") || 026 ip.equals("127.0.0.1") || 027 ip.equalsIgnoreCase("0:0:0:0:0:0:0:1") || 028 ip.equalsIgnoreCase("0:0:0:0:0:0:0:1%0") || 029 ip.equalsIgnoreCase("::1")) 030 return true; 031 032 try { 033 InetAddress addr = InetAddress.getByName(ip); 034 InetAddress localHost = InetAddress.getLocalHost(); 035 if(localHost.equals(addr)) return true; 036 037 InetAddress localHosts[] = InetAddress.getAllByName(localHost.getHostName()); 038 039 for(int i=0;i<localHosts.length;i++){ 040 if(localHosts[i].equals(addr)) return true; 041 } 042 } 043 catch(UnknownHostException e){} 044 045 return false; 046 } 047 }