Search in sources :

Example 1 with Route

use of com.github.jh3nd3rs0n.jargyle.server.Route in project jargyle by jh3nd3rs0n.

the class Socks5Worker method run.

public void run() throws IOException {
    this.clientFacingInputStream = this.clientFacingSocket.getInputStream();
    Method method = this.negotiateMethod();
    if (method == null) {
        return;
    }
    MethodSubnegotiationResults methodSubnegotiationResults = this.doMethodSubnegotiation(method);
    if (methodSubnegotiationResults == null) {
        return;
    }
    Socket socket = methodSubnegotiationResults.getSocket();
    this.clientFacingInputStream = socket.getInputStream();
    this.clientFacingSocket = socket;
    this.socks5WorkerContext = new Socks5WorkerContext(new WorkerContext(this.clientFacingSocket, this.socks5WorkerContext.getConfiguration(), this.socks5WorkerContext.getRoute(), this.socks5WorkerContext.getRoutes(), this.socks5WorkerContext.getClientFacingDtlsDatagramSocketFactory()));
    Socks5Request socks5Request = this.newSocks5Request();
    if (socks5Request == null) {
        return;
    }
    if (!this.canAllowSocks5Request(new Socks5RequestFirewallRule.Context(this.clientFacingSocket.getInetAddress().getHostAddress(), this.clientFacingSocket.getLocalAddress().getHostAddress(), methodSubnegotiationResults, socks5Request))) {
        return;
    }
    Route route = this.selectRoute(new Socks5RequestRoutingRule.Context(this.clientFacingSocket.getInetAddress().getHostAddress(), this.clientFacingSocket.getLocalAddress().getHostAddress(), methodSubnegotiationResults, socks5Request, this.socks5WorkerContext.getRoutes()));
    if (route == null) {
        return;
    }
    this.socks5WorkerContext = new Socks5WorkerContext(new WorkerContext(this.socks5WorkerContext.getClientFacingSocket(), this.socks5WorkerContext.getConfiguration(), route, this.socks5WorkerContext.getRoutes(), this.socks5WorkerContext.getClientFacingDtlsDatagramSocketFactory()));
    Socks5RequestWorkerContext socks5RequestWorkerContext = new Socks5RequestWorkerContext(this.socks5WorkerContext, methodSubnegotiationResults, socks5Request);
    Socks5RequestWorker socks5RequestWorker = this.newSocks5RequestWorker(socks5RequestWorkerContext);
    socks5RequestWorker.run();
}
Also used : WorkerContext(com.github.jh3nd3rs0n.jargyle.server.WorkerContext) Socks5Request(com.github.jh3nd3rs0n.jargyle.transport.socks5.Socks5Request) Method(com.github.jh3nd3rs0n.jargyle.transport.socks5.Method) WorkerContext(com.github.jh3nd3rs0n.jargyle.server.WorkerContext) Socks5RequestRoutingRule(com.github.jh3nd3rs0n.jargyle.server.rules.impl.Socks5RequestRoutingRule) Socket(java.net.Socket) Route(com.github.jh3nd3rs0n.jargyle.server.Route)

Example 2 with Route

use of com.github.jh3nd3rs0n.jargyle.server.Route in project jargyle by jh3nd3rs0n.

the class Socks5Worker method selectRoute.

private Route selectRoute(final RoutingRule.Context context) {
    Socks5RequestRoutingRules socks5RequestRoutingRules = this.settings.getLastValue(Socks5SettingSpecConstants.SOCKS5_SOCKS5_REQUEST_ROUTING_RULES);
    socks5RequestRoutingRules.applyTo(context);
    Route route = context.getRoute();
    if (route == null) {
        route = this.socks5WorkerContext.getRoute();
    }
    return route;
}
Also used : Socks5RequestRoutingRules(com.github.jh3nd3rs0n.jargyle.server.rules.impl.Socks5RequestRoutingRules) Route(com.github.jh3nd3rs0n.jargyle.server.Route)

Example 3 with Route

use of com.github.jh3nd3rs0n.jargyle.server.Route in project jargyle by jh3nd3rs0n.

the class ClientRoutingRule method applyTo.

@Override
public void applyTo(final Rule.Context context) {
    String routeId = this.getRouteIdSelector().select();
    if (routeId == null) {
        return;
    }
    Context cntxt = (Context) context;
    Routes routes = cntxt.getRoutes();
    Route route = routes.get(routeId);
    if (route == null) {
        return;
    }
    cntxt.setRoute(route);
    LogAction logAction = this.getLogAction();
    if (logAction == null) {
        return;
    }
    String clientAddress = cntxt.getClientAddress();
    logAction.invoke(String.format("Client route '%s' for %s is selected from the following " + "routing rule and context: %s, %s", routeId, clientAddress, this, context));
}
Also used : LogAction(com.github.jh3nd3rs0n.jargyle.server.LogAction) Routes(com.github.jh3nd3rs0n.jargyle.server.Routes) Route(com.github.jh3nd3rs0n.jargyle.server.Route)

Example 4 with Route

use of com.github.jh3nd3rs0n.jargyle.server.Route in project jargyle by jh3nd3rs0n.

the class Socks5RequestRoutingRule method applyTo.

@Override
public void applyTo(final Rule.Context context) {
    String routeId = this.getRouteIdSelector().select();
    if (routeId == null) {
        return;
    }
    Context cntxt = (Context) context;
    Routes routes = cntxt.getRoutes();
    Route route = routes.get(routeId);
    if (route == null) {
        return;
    }
    cntxt.setRoute(route);
    LogAction logAction = this.getLogAction();
    if (logAction == null) {
        return;
    }
    String clientAddress = cntxt.getClientAddress();
    MethodSubnegotiationResults methSubnegotiationResults = cntxt.getMethodSubnegotiationResults();
    String user = methSubnegotiationResults.getUser();
    String possibleUser = (user != null) ? String.format(" (%s)", user) : "";
    logAction.invoke(String.format("SOCKS5 request route '%s' for %s%s is selected from the " + "following routing rule and context: %s, %s", routeId, clientAddress, possibleUser, this, context));
}
Also used : LogAction(com.github.jh3nd3rs0n.jargyle.server.LogAction) MethodSubnegotiationResults(com.github.jh3nd3rs0n.jargyle.server.socks5.MethodSubnegotiationResults) Routes(com.github.jh3nd3rs0n.jargyle.server.Routes) Route(com.github.jh3nd3rs0n.jargyle.server.Route)

Aggregations

Route (com.github.jh3nd3rs0n.jargyle.server.Route)4 LogAction (com.github.jh3nd3rs0n.jargyle.server.LogAction)2 Routes (com.github.jh3nd3rs0n.jargyle.server.Routes)2 WorkerContext (com.github.jh3nd3rs0n.jargyle.server.WorkerContext)1 Socks5RequestRoutingRule (com.github.jh3nd3rs0n.jargyle.server.rules.impl.Socks5RequestRoutingRule)1 Socks5RequestRoutingRules (com.github.jh3nd3rs0n.jargyle.server.rules.impl.Socks5RequestRoutingRules)1 MethodSubnegotiationResults (com.github.jh3nd3rs0n.jargyle.server.socks5.MethodSubnegotiationResults)1 Method (com.github.jh3nd3rs0n.jargyle.transport.socks5.Method)1 Socks5Request (com.github.jh3nd3rs0n.jargyle.transport.socks5.Socks5Request)1 Socket (java.net.Socket)1