Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package test.borrar;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.StringTokenizer;
- import net.denrit.deployer.pentest.application.ApplicationInteraction;
- import org.silvertunnel.netlib.adapter.socket.SocketGlobalUtil;
- import org.silvertunnel.netlib.api.NetFactory;
- import org.silvertunnel.netlib.api.NetLayer;
- import org.silvertunnel.netlib.api.NetLayerIDs;
- import org.silvertunnel.netlib.api.NetServerSocket;
- import org.silvertunnel.netlib.api.NetSocket;
- import org.silvertunnel.netlib.api.util.IpNetAddress;
- import org.silvertunnel.netlib.api.util.TcpipNetAddress;
- import org.silvertunnel.netlib.layer.redirect.Condition;
- import org.silvertunnel.netlib.layer.redirect.ConditionalNetLayer;
- /**
- * https://silvertunnel.org/doc/netlib-direct-api-usage.html
- * */
- public class ServerSocketTest extends Thread {
- private NetServerSocket objectServer;
- public static void main(String ... s) throws Exception{
- ServerSocketTest ts = new ServerSocketTest(30000);
- ts.start();
- ts.setDefaultLayer();
- }
- public void setDefaultLayer() {
- SocketGlobalUtil.initSocketImplFactory();
- // JvmGlobalUtil.init();
- // select the NetLayer implementation that should be used
- NetLayer torNetLayer = NetFactory.getInstance().getNetLayerById(NetLayerIDs.TCPIP);
- torNetLayer.waitUntilReady();
- NetLayer tcpipNetLayer = NetFactory.getInstance().getNetLayerById(NetLayerIDs.TCPIP);
- tcpipNetLayer.waitUntilReady();
- NetLayer defaultNetLayer = torNetLayer;
- List<Condition> conditions = new ArrayList<Condition>();
- String excludeIps = "127.0.0.1,192.168.1.33";
- String excludeDomains = "localhost";
- StringTokenizer tokenizerIp = new StringTokenizer(excludeIps,",");
- StringTokenizer tokenizerDomain = new StringTokenizer(excludeDomains,",");
- while(tokenizerIp.hasMoreTokens()) {
- String tokenIp = tokenizerIp.nextToken();
- conditions.add(new Condition(new IpNetAddress(tokenIp), tcpipNetLayer));
- }
- while(tokenizerDomain.hasMoreTokens()) {
- String tokenDomain = tokenizerDomain.nextToken();
- conditions.add(new Condition(tokenDomain, tcpipNetLayer));
- }
- NetLayer netLayer = new ConditionalNetLayer(conditions, defaultNetLayer);
- SocketGlobalUtil.setNetLayerUsedBySocketImplFactory(netLayer);
- }
- public ServerSocketTest(int port) throws Exception {
- NetLayer netLayer = NetFactory.getInstance().getNetLayerById(NetLayerIDs.TCPIP);
- TcpipNetAddress remoteAddress = new TcpipNetAddress("127.0.0.1", 30000);
- objectServer = netLayer.createNetServerSocket(null, remoteAddress);
- System.out.println("Server listening on port "+port);
- }
- public void run() {
- while(true) {
- try {
- System.out.println("Waiting for connections.");
- NetSocket client = objectServer.accept();
- System.out.println("Accepted a connection from: "+client);
- Connect c = new Connect(client);
- c.start();
- } catch(Exception e) {}
- }
- }
- class Connect extends Thread {
- private NetSocket client = null;
- private ObjectInputStream ois = null;
- private ObjectOutputStream oos = null;
- public Connect() {}
- public Connect(NetSocket clientSocket) {
- client = clientSocket;
- try {
- ois = new ObjectInputStream(client.getInputStream());
- oos = new ObjectOutputStream(client.getOutputStream());
- } catch(Exception e1) {
- e1.printStackTrace();
- try {
- client.close();
- }catch(Exception e) {
- System.out.println(e.getMessage());
- }
- return;
- }
- this.start();
- }
- public void run() {
- try {
- ApplicationInteraction applicationInteraction = (ApplicationInteraction)ois.readObject();
- System.out.println("Application interaction"+applicationInteraction);
- oos.writeObject(applicationInteraction);
- oos.flush();
- // close streams and connections
- ois.close();
- oos.close();
- client.close();
- } catch(Exception e) {
- e.printStackTrace();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement