diff options
Diffstat (limited to 'src/main/java/org/openslx/taskmanager/tasks/LocalAddressesList.java')
-rw-r--r-- | src/main/java/org/openslx/taskmanager/tasks/LocalAddressesList.java | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/src/main/java/org/openslx/taskmanager/tasks/LocalAddressesList.java b/src/main/java/org/openslx/taskmanager/tasks/LocalAddressesList.java new file mode 100644 index 0000000..2bfb20e --- /dev/null +++ b/src/main/java/org/openslx/taskmanager/tasks/LocalAddressesList.java @@ -0,0 +1,76 @@ +package org.openslx.taskmanager.tasks; + +import java.net.Inet4Address; +import java.net.Inet6Address; +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.net.SocketException; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.List; + +import org.apache.log4j.Logger; +import org.openslx.taskmanager.api.AbstractTask; + +public class LocalAddressesList extends AbstractTask +{ + private static final Logger LOG = Logger.getLogger( LocalAddressesList.class ); + + private Output status = new Output(); + + @Override + protected boolean initTask() + { + return true; + } + + @Override + protected boolean execute() + { + this.setStatusObject( status ); + List<Output.Entry> list = new ArrayList<>(); + try { + for ( Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) { + NetworkInterface intf = en.nextElement(); + for ( Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + InetAddress addr = enumIpAddr.nextElement(); + Output.Entry entry = new Output.Entry(); + entry.iface = intf.getName(); + entry.ip = addr.getHostAddress(); + if ( addr instanceof Inet4Address ) { + entry.type = "ipv4"; + } else if ( addr instanceof Inet6Address ) { + entry.type = "ipv6"; + } else { + entry.type = addr.getClass().getSimpleName(); + } + list.add( entry ); + } + } + } catch ( SocketException e ) { + LOG.info( " (error retrieving network interface list)" ); + this.status.error = "Error retrieving network interface list (" + e.getMessage() + ")"; + return false; + } + this.status.addresses = list; + return true; + } + + /** + * Output - contains additional status data of this task + */ + @SuppressWarnings( "unused" ) + private static class Output + { + protected String error = null; + protected List<Entry> addresses = null; + + protected static class Entry + { + protected String ip = null; + protected String iface = null; + protected String type = null; + } + } + +} |