summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/taskmanager/tasks/LocalAddressesList.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/openslx/taskmanager/tasks/LocalAddressesList.java')
-rw-r--r--src/main/java/org/openslx/taskmanager/tasks/LocalAddressesList.java76
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;
+ }
+ }
+
+}