Advertisement
Guest User

Untitled

a guest
Feb 14th, 2012
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.26 KB | None | 0 0
  1. package test.borrar;
  2.  
  3. import java.io.ObjectInputStream;
  4. import java.io.ObjectOutputStream;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. import java.util.StringTokenizer;
  8.  
  9. import net.denrit.deployer.pentest.application.ApplicationInteraction;
  10.  
  11. import org.silvertunnel.netlib.adapter.socket.SocketGlobalUtil;
  12. import org.silvertunnel.netlib.api.NetFactory;
  13. import org.silvertunnel.netlib.api.NetLayer;
  14. import org.silvertunnel.netlib.api.NetLayerIDs;
  15. import org.silvertunnel.netlib.api.NetServerSocket;
  16. import org.silvertunnel.netlib.api.NetSocket;
  17. import org.silvertunnel.netlib.api.util.IpNetAddress;
  18. import org.silvertunnel.netlib.api.util.TcpipNetAddress;
  19. import org.silvertunnel.netlib.layer.redirect.Condition;
  20. import org.silvertunnel.netlib.layer.redirect.ConditionalNetLayer;
  21.  
  22. /**
  23.  * https://silvertunnel.org/doc/netlib-direct-api-usage.html
  24.  * */
  25. public class ServerSocketTest extends Thread {
  26.  
  27.     private NetServerSocket objectServer;
  28.      public static void main(String ... s) throws Exception{
  29.          ServerSocketTest ts = new ServerSocketTest(30000);
  30.          ts.start();
  31.          ts.setDefaultLayer();
  32.      }
  33.      
  34.      public void setDefaultLayer() {
  35.          SocketGlobalUtil.initSocketImplFactory();
  36.  
  37. //          JvmGlobalUtil.init();
  38.             // select the NetLayer implementation that should be used
  39.             NetLayer torNetLayer = NetFactory.getInstance().getNetLayerById(NetLayerIDs.TCPIP);
  40.             torNetLayer.waitUntilReady();
  41.             NetLayer tcpipNetLayer = NetFactory.getInstance().getNetLayerById(NetLayerIDs.TCPIP);
  42.             tcpipNetLayer.waitUntilReady();
  43.             NetLayer defaultNetLayer = torNetLayer;
  44.             List<Condition> conditions = new ArrayList<Condition>();
  45.             String excludeIps = "127.0.0.1,192.168.1.33";
  46.             String excludeDomains = "localhost";
  47.             StringTokenizer tokenizerIp = new StringTokenizer(excludeIps,",");
  48.             StringTokenizer tokenizerDomain = new StringTokenizer(excludeDomains,",");
  49.             while(tokenizerIp.hasMoreTokens()) {
  50.                 String tokenIp = tokenizerIp.nextToken();
  51.                 conditions.add(new Condition(new IpNetAddress(tokenIp), tcpipNetLayer));
  52.             }
  53.            
  54.             while(tokenizerDomain.hasMoreTokens()) {
  55.                 String tokenDomain = tokenizerDomain.nextToken();
  56.                 conditions.add(new Condition(tokenDomain, tcpipNetLayer));
  57.             }
  58.             NetLayer netLayer = new ConditionalNetLayer(conditions, defaultNetLayer);
  59.  
  60.             SocketGlobalUtil.setNetLayerUsedBySocketImplFactory(netLayer);       
  61.      }
  62.      
  63.        public ServerSocketTest(int port) throws Exception {
  64.            NetLayer netLayer = NetFactory.getInstance().getNetLayerById(NetLayerIDs.TCPIP);
  65.             TcpipNetAddress remoteAddress = new TcpipNetAddress("127.0.0.1", 30000);
  66.             objectServer = netLayer.createNetServerSocket(null, remoteAddress);
  67.  
  68.            System.out.println("Server listening on port "+port);
  69.        }
  70.  
  71.        public void run() {
  72.            while(true) {
  73.                try {
  74.                    System.out.println("Waiting for connections.");
  75.                   NetSocket client = objectServer.accept();
  76.                    System.out.println("Accepted a connection from: "+client);
  77.                    Connect c = new Connect(client);
  78.                    c.start();
  79.                } catch(Exception e) {}
  80.            }
  81.        }
  82.        
  83.        class Connect extends Thread {
  84.            private NetSocket client = null;
  85.            private ObjectInputStream ois = null;
  86.            private ObjectOutputStream oos = null;
  87.            
  88.            public Connect() {}
  89.  
  90.            public Connect(NetSocket clientSocket) {
  91.              client = clientSocket;
  92.              try {
  93.               ois = new ObjectInputStream(client.getInputStream());
  94.               oos = new ObjectOutputStream(client.getOutputStream());
  95.              } catch(Exception e1) {
  96.                  e1.printStackTrace();
  97.                  try {
  98.                     client.close();
  99.                  }catch(Exception e) {
  100.                    System.out.println(e.getMessage());
  101.                  }
  102.                  return;
  103.              }
  104.              this.start();
  105.            }
  106.  
  107.          
  108.            public void run() {
  109.                try {
  110.                  ApplicationInteraction applicationInteraction = (ApplicationInteraction)ois.readObject();
  111.                  System.out.println("Application interaction"+applicationInteraction);
  112.                  oos.writeObject(applicationInteraction);
  113.                  oos.flush();
  114.                  // close streams and connections
  115.                  ois.close();
  116.                  oos.close();
  117.                  client.close();
  118.               } catch(Exception e) {
  119.                   e.printStackTrace();
  120.               }      
  121.            }
  122.         }      
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement