/frameworks/base/services/java/com/android/server/wm/remotecontrol/HostInterface.java
https://gitlab.com/brian0218/rk3188_r-box_android4.2.2_sdk · Java · 294 lines · 230 code · 32 blank · 32 comment · 53 complexity · 9d0f7a03331cf68c8aebf6947fea7f8d MD5 · raw file
- package com.android.server.wm.remotecontrol;
-
- import java.net.Inet4Address;
- import java.net.Inet6Address;
- import java.net.InetAddress;
- import java.net.InterfaceAddress;
- import java.net.NetworkInterface;
- import java.net.SocketException;
- import java.util.ArrayList;
- import java.util.Enumeration;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Vector;
- @SuppressWarnings("rawtypes")
- public class HostInterface
- {
- ////////////////////////////////////////////////
- // Constants
- ////////////////////////////////////////////////
-
- public static boolean USE_LOOPBACK_ADDR = false;
- public static boolean USE_ONLY_IPV4_ADDR = true;
- public static boolean USE_ONLY_IPV6_ADDR = false;
-
- ////////////////////////////////////////////////
- // Network Interfaces
- ////////////////////////////////////////////////
-
- private static String ifAddress = "";
- public final static int IPV4_BITMASK = 0x0001;
- public final static int IPV6_BITMASK = 0x0010;
- public final static int LOCAL_BITMASK = 0x0100;
- public final static void setInterface(String ifaddr)
- {
- ifAddress = ifaddr;
- }
-
- public final static String getInterface()
- {
- return ifAddress;
- }
-
- private final static boolean hasAssignedInterface()
- {
- return (0 < ifAddress.length()) ? true : false;
- }
-
- ////////////////////////////////////////////////
- // Network Interfaces
- ////////////////////////////////////////////////
- // Thanks for Theo Beisch (10/27/04)
-
- private final static boolean isUsableAddress(InetAddress addr)
- {
- if (USE_LOOPBACK_ADDR == false) {
- if (addr.isLoopbackAddress() == true)
- return false;
- }
- if (USE_ONLY_IPV4_ADDR == true) {
- if (addr instanceof Inet6Address)
- return false;
- }
- if (USE_ONLY_IPV6_ADDR == true) {
- if (addr instanceof Inet4Address)
- return false;
- }
- return true;
- }
-
- public final static int getNHostAddresses()
- {
- if (hasAssignedInterface() == true)
- return 1;
-
- int nHostAddrs = 0;
- try {
- Enumeration nis = NetworkInterface.getNetworkInterfaces();
- while (nis.hasMoreElements()){
- NetworkInterface ni = (NetworkInterface)nis.nextElement();
- Enumeration addrs = ni.getInetAddresses();
- while (addrs.hasMoreElements()) {
- InetAddress addr = (InetAddress)addrs.nextElement();
- if (isUsableAddress(addr) == false)
- continue;
- nHostAddrs++;
- }
- }
- }
- catch(Exception e){
- }
- return nHostAddrs;
- }
- /**
- *
- * @param ipfilter
- * @param interfaces
- * @return
- * @since 1.8.0
- * @author Stefano "Kismet" Lenzi <kismet.sl@gmail.com>
- */
- @SuppressWarnings("unchecked")
- public final static InetAddress[] getInetAddress(int ipfilter,String[] interfaces){
- Enumeration nis;
- if(interfaces!=null){
- Vector iflist = new Vector();
- for (int i = 0; i < interfaces.length; i++) {
- NetworkInterface ni;
- try {
- ni = NetworkInterface.getByName(interfaces[i]);
- } catch (SocketException e) {
- continue;
- }
- if(ni != null) iflist.add(ni);
- }
- nis = iflist.elements();
- }else{
- try {
- nis = NetworkInterface.getNetworkInterfaces();
- } catch (SocketException e) {
- return null;
- }
- }
- ArrayList addresses = new ArrayList();
- while (nis.hasMoreElements()){
- NetworkInterface ni = (NetworkInterface)nis.nextElement();
- Enumeration addrs = ni.getInetAddresses();
- while (addrs.hasMoreElements()) {
- InetAddress addr = (InetAddress)addrs.nextElement();
- if(((ipfilter & LOCAL_BITMASK)==0) && addr.isLoopbackAddress())
- continue;
-
- if (((ipfilter & IPV4_BITMASK)!=0) && addr instanceof Inet4Address ) {
- addresses.add(addr);
- }else if (((ipfilter & IPV6_BITMASK)!=0)&& addr instanceof InetAddress) {
- addresses.add(addr);
- }
- }
- }
- return (InetAddress[]) addresses.toArray(new InetAddress[]{});
- }
-
-
- public final static String getHostAddress(int n)
- {
- if (hasAssignedInterface() == true)
- return getInterface();
-
- int hostAddrCnt = 0;
- try {
- Enumeration nis = NetworkInterface.getNetworkInterfaces();
- while (nis.hasMoreElements()){
- NetworkInterface ni = (NetworkInterface)nis.nextElement();
- Enumeration addrs = ni.getInetAddresses();
- while (addrs.hasMoreElements()) {
- InetAddress addr = (InetAddress)addrs.nextElement();
- if (isUsableAddress(addr) == false)
- continue;
- if (hostAddrCnt < n) {
- hostAddrCnt++;
- continue;
- }
- String host = addr.getHostAddress();
- //if (addr instanceof Inet6Address)
- // host = "[" + host + "]";
- return host;
- }
- }
- }
- catch(Exception e){};
- return "";
- }
-
- public final static InterfaceAddress getInterfaceAddressByAddress(String address)
- {
- try {
- Enumeration nis = NetworkInterface.getNetworkInterfaces();
- while (nis.hasMoreElements()){
- NetworkInterface ni = (NetworkInterface)nis.nextElement();
- List<InterfaceAddress> interfaceAddrs = ni.getInterfaceAddresses();
- Iterator<InterfaceAddress> it = interfaceAddrs.iterator();
- while (it.hasNext()) {
- InterfaceAddress addr = it.next();
- if(addr.getAddress().getHostAddress().equals(address)){
- return addr;
- }
- }
- }
- }
- catch(Exception e){};
- return null;
- }
- ////////////////////////////////////////////////
- // isIPv?Address
- ////////////////////////////////////////////////
-
- public final static boolean isIPv6Address(String host)
- {
- try {
- InetAddress addr = InetAddress.getByName(host);
- if (addr instanceof Inet6Address)
- return true;
- return false;
- }
- catch (Exception e) {}
- return false;
- }
- public final static boolean isIPv4Address(String host)
- {
- try {
- InetAddress addr = InetAddress.getByName(host);
- if (addr instanceof Inet4Address)
- return true;
- return false;
- }
- catch (Exception e) {}
- return false;
- }
- ////////////////////////////////////////////////
- // hasIPv?Interfaces
- ////////////////////////////////////////////////
- public final static boolean hasIPv4Addresses()
- {
- int addrCnt = getNHostAddresses();
- for (int n=0; n<addrCnt; n++) {
- String addr = getHostAddress(n);
- if (isIPv4Address(addr) == true)
- return true;
- }
- return false;
- }
- public final static boolean hasIPv6Addresses()
- {
- int addrCnt = getNHostAddresses();
- for (int n=0; n<addrCnt; n++) {
- String addr = getHostAddress(n);
- if (isIPv6Address(addr) == true)
- return true;
- }
- return false;
- }
- ////////////////////////////////////////////////
- // hasIPv?Interfaces
- ////////////////////////////////////////////////
- public final static String getIPv4Address()
- {
- int addrCnt = getNHostAddresses();
- for (int n=0; n<addrCnt; n++) {
- String addr = getHostAddress(n);
- if (isIPv4Address(addr) == true)
- return addr;
- }
- return "";
- }
- public final static String getIPv6Address()
- {
- int addrCnt = getNHostAddresses();
- for (int n=0; n<addrCnt; n++) {
- String addr = getHostAddress(n);
- if (isIPv6Address(addr) == true)
- return addr;
- }
- return "";
- }
- ////////////////////////////////////////////////
- // getHostURL
- ////////////////////////////////////////////////
-
- public final static String getHostURL(String host, int port, String uri)
- {
- String hostAddr = host;
- if (isIPv6Address(host) == true)
- hostAddr = "[" + host + "]";
- return
- "http://" +
- hostAddr +
- ":" + Integer.toString(port) +
- uri;
- }
-
- }