Example #1
0
  private void handleRequest(final ProxyMessage msg) throws IOException {
    if (!auth.checkRequest(msg)) {
      throw new SocksException(SocksProxyBase.SOCKS_FAILURE);
    }

    if (msg.ip == null) {
      if (msg instanceof Socks5Message) {
        msg.ip = dnsResolver.resolveByName(msg.host);
      } else {
        throw new SocksException(SocksProxyBase.SOCKS_FAILURE);
      }
    }
    log(msg);

    switch (msg.command) {
      case SocksProxyBase.SOCKS_CMD_CONNECT:
        onConnect(msg);
        break;
      case SocksProxyBase.SOCKS_CMD_BIND:
        onBind(msg);
        break;
      case SocksProxyBase.SOCKS_CMD_UDP_ASSOCIATE:
        onUDP(msg);
        break;
      default:
        throw new SocksException(SocksProxyBase.SOCKS_CMD_NOT_SUPPORTED);
    }
  }