Package ch.rakudave.jnetmap.plugins

Source Code of ch.rakudave.jnetmap.plugins.WiresharkLauncher

package ch.rakudave.jnetmap.plugins;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.util.Arrays;

import javax.swing.Icon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

import net.xeoh.plugins.base.annotations.PluginImplementation;
import ch.rakudave.jnetmap.controller.Scheduler;
import ch.rakudave.jnetmap.model.device.Device;
import ch.rakudave.jnetmap.util.Icons;
import ch.rakudave.jnetmap.util.Misc;
import ch.rakudave.jnetmap.util.Settings;
import ch.rakudave.jnetmap.util.SwingHelper;
import ch.rakudave.jnetmap.util.logging.Logger;
import ch.rakudave.jnetmap.view.preferences.PreferencePanel;

@PluginImplementation
public class WiresharkLauncher implements RightClickAction {

  @Override
  public void execute(final Device d) {
    Scheduler.execute(new Runnable() {
      @Override
      public void run() {
        Process process = null;
        try {
          String[] commandAndArgs = Misc.concat(Settings.get("wireshark.command", "wireshark").split(" "), new String[] { "-i", "any", "-k", "-f", "host "+SwingHelper.interfaceSelector(d)});
          Logger.trace("Running wireshark: "+Arrays.toString(commandAndArgs));
          process = Runtime.getRuntime().exec(commandAndArgs);
          process.waitFor();
        } catch (Exception ex) {
          Logger.warn("Unable to wireshark", ex);
        } finally {
          if (process != null) process.destroy();
        }
      }
    });
  }

  @Override
  public String getAuthor() {
    return "rakudave";
  }

  @Override
  public String getDescription() {
    return "Launches Wireshark with a capture-filter for the selected device";
  }

  @Override
  public Icon getIcon() {
    return Icons.fromBase64("iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABKVBMVEULCwspkL8cfKkggrAkiLYaKC8jhrQlibgrksIwm8wihLIIIS4fgK4njLsmi7oef60ceqYIIy8fga86qd0slMQLJjIKJTI0oNIKKDYKKTcumMgul8c4ptkkh7Ypj74egK0njbwCCw47q98ulsYJIy8ZVnIOLTsnfaUnjLojh7UWTWYleaAmirk0m8slirgcXHgggK0ef6wdX30tlsYnf6cRNkg5ptgha4wTOUsVP1Mtkb4ulsUPLjwylcQ9ruMTOEkxmssKJDEdfqshcZYYTGM1odM2o9YUPU8tksARPlMlibcxnM0vl8c1odQaUmwjdpwKIzAdfaoLKjgwmckkdJkWTGUYSmIJJzUPLz0KJDAPM0Moj74rk8MJICsNLDsojr0ojbwjbpAphK/laYYvAAAAAXRSTlNANjqZ9gAAAOFJREFUeF5Fz8OWBUEMBuBKGU1cGkPbtm3j/R9i0rOZZJGTb5GTnxDhXF9cKGLHV07gHtFpJvnY0ASXzIsEcXSHcR8ANASKTTmEfO9Vz0b7R3zOEFo2gJoZHHiYeYLAPhPnDTe1WVwaP5j8zkAWiWMnMDs3v9BNl1dWgeegoLa2nm50N7eqoLaJSzjs7u3X0/rhUQ94AW/I4PjntHReurjUbYlwzdSNvjXG3N03FYtJ57FceXnVb1kG7x+Vcgcfo4nlfvvzy1c2oS4HGjIrGw3JWhQBw+XkeWGIMxJ/8f9LkF+TihkINq+IwQAAAABJRU5ErkJggg==");
  }

  @Override
  public String getPluginName() {
    return "Wireshark Launcher";
  }

  @Override
  @SuppressWarnings("serial")
  public PreferencePanel getSettingsPanel() {
    final JTextField command = new JTextField(Settings.get("wireshark.command", "wireshark"));
    PreferencePanel p = new PreferencePanel() {
      @Override
      public void save() {
        Settings.put("wireshark.command", command.getText());
      }
    };
      p.setLayout(new BorderLayout());
      JPanel inner = new JPanel(new GridLayout(0, 1, 5, 5));
        inner.add(new JLabel("Wireshark command:"));
        inner.add(command);
      p.add(inner, BorderLayout.NORTH);
    return p;
  }

  @Override
  public boolean hasSettings() {
    return true;
  }

}
TOP

Related Classes of ch.rakudave.jnetmap.plugins.WiresharkLauncher

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.