package com.jds.jn_module.gui;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import com.intellij.uiDesigner.core.GridConstraints;
import com.intellij.uiDesigner.core.GridLayoutManager;
import com.intellij.uiDesigner.core.Spacer;
import com.jds.jn_module.JnModule;
import com.jds.jn_module.logs.writer.Writer;
import com.jds.jn_module.network.jpcap.DeviceInfo;
import com.jds.jn_module.network.jpcap.Listener;
import com.jds.jn_module.network.session.Session;
import com.jds.jn_module.network.session.SessionTable;
import jpcap.JpcapCaptor;
import jpcap.NetworkInterface;
/**
* Author: VISTALL
* Company: J Develop Station
* Date: 2:35:17/04.04.2010
*/
public class MainForm extends JFrame implements Runnable
{
private JComboBox _networkList;
private JButton _startButton;
private JLabel _packetCount;
private JPanel root;
private JButton _save;
private JLabel _sessionId;
private JCheckBox _promicseMode;
private JTextField _portField;
private JpcapCaptor _pcap;
public MainForm()
{
setContentPane(root);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(550, 100);
setTitle("Jn Module");
setResizable(false);
NetworkInterface[] alldevs = JpcapCaptor.getDeviceList();
for(NetworkInterface f : alldevs)
{
_networkList.addItem(new DeviceInfo(f));
}
_startButton.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
new Thread()
{
@Override
public void run()
{
try
{
JnModule.PORT = Integer.parseInt(_portField.getText());
System.out.println("Starting sniffing");
_pcap = JpcapCaptor.openDevice(((DeviceInfo) _networkList.getSelectedItem()).getDevice(), 65535, _promicseMode.isSelected(), 10);
_pcap.setFilter("tcp port " + JnModule.PORT, true);
_startButton.setEnabled(false);
_startButton.setText("Starting");
_pcap.loopPacket(-1, new Listener());
}
catch(IOException e1)
{
e1.printStackTrace();
}
}
}.start();
}
});
_save.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
run();
for(Session session : SessionTable.getInstance())
{
try
{
System.out.println("saved " + session.getSessionId());
Writer wr = new Writer(session);
wr.write();
}
catch(IOException e1)
{
e1.printStackTrace();
}
}
System.exit(0);
}
});
}
public void setPacketCount(int size)
{
_packetCount.setText(String.valueOf(size));
}
public void setSessionId(long d)
{
_sessionId.setText(String.valueOf(d));
}
@Override
public void run()
{
System.out.println("Starting exit");
if(_pcap != null)
{
_pcap.breakLoop();
}
}
{
// GUI initializer generated by IntelliJ IDEA GUI Designer
// >>> IMPORTANT!! <<<
// DO NOT EDIT OR ADD ANY CODE HERE!
$$$setupUI$$$();
}
/**
* Method generated by IntelliJ IDEA GUI Designer
* >>> IMPORTANT!! <<<
* DO NOT edit this method OR call it in your code!
*
* @noinspection ALL
*/
private void $$$setupUI$$$()
{
root = new JPanel();
root.setLayout(new GridLayoutManager(2, 2, new Insets(3, 3, 3, 3), -1, -1));
final JPanel panel1 = new JPanel();
panel1.setLayout(new GridLayoutManager(1, 2, new Insets(0, 0, 0, 0), -1, -1));
root.add(panel1, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false));
_portField = new JTextField();
_portField.setText("7777");
panel1.add(_portField, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false));
final JLabel label1 = new JLabel();
label1.setText("Port:");
panel1.add(label1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
final JPanel panel2 = new JPanel();
panel2.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1));
root.add(panel2, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, new Dimension(428, 28), null, 0, false));
_networkList = new JComboBox();
panel2.add(_networkList, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
final JPanel panel3 = new JPanel();
panel3.setLayout(new GridLayoutManager(1, 2, new Insets(0, 0, 0, 0), -1, -1));
root.add(panel3, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false));
_save = new JButton();
_save.setText("Save");
panel3.add(_save, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
_startButton = new JButton();
_startButton.setText("Start");
panel3.add(_startButton, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
final JPanel panel4 = new JPanel();
panel4.setLayout(new GridLayoutManager(1, 6, new Insets(0, 0, 0, 0), -1, -1));
root.add(panel4, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, new Dimension(428, 24), null, 0, false));
final JLabel label2 = new JLabel();
label2.setText("Current Packets:");
panel4.add(label2, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
_packetCount = new JLabel();
_packetCount.setText("0");
panel4.add(_packetCount, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
final JLabel label3 = new JLabel();
label3.setText("Session:");
panel4.add(label3, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
_sessionId = new JLabel();
_sessionId.setText("0");
panel4.add(_sessionId, new GridConstraints(0, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
_promicseMode = new JCheckBox();
_promicseMode.setText("Promicse Mode");
panel4.add(_promicseMode, new GridConstraints(0, 4, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
final Spacer spacer1 = new Spacer();
panel4.add(spacer1, new GridConstraints(0, 5, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, 0, false));
}
/**
* @noinspection ALL
*/
public JComponent $$$getRootComponent$$$()
{
return root;
}
}