HuangQing b1c4ebb87c init
2024-10-04 17:10:46 +08:00

91 lines
3.2 KiB
Java

package com.witty.server;
import com.witty.handler.IndexHandler;
import com.witty.handler.JetBrainsHandler;
import com.witty.handler.JrebelHandler;
import com.witty.handler.ToolHandler;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.AbstractHandler;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
public class MainServer extends AbstractHandler {
private static Map<String, String> parseArguments(String[] args) {
if (args.length % 2 != 0) {
throw new IllegalArgumentException("Error in argument's length ");
}
Map<String, String> params = new HashMap<>();
for (int i = 0, len = args.length; i < len; ) {
String argName = args[i++];
if (argName.charAt(0) == '-') {
if (argName.length() < 2) {
throw new IllegalArgumentException("Error at argument " + argName);
}
argName = argName.substring(1);
}
params.put(argName, args[i++]);
}
return params;
}
public static void main(String[] args) throws Exception {
Map<String, String> arguments = parseArguments(args);
String port = arguments.get("p");
if (port == null || !port.matches("\\d+")) {
port = "7001";
}
Server server = new Server(Integer.parseInt(port));
server.setHandler(new MainServer());
server.start();
String serverStr = "http://localhost";
if (!"80".equals(port)) {
serverStr = serverStr + ":" + port;
}
System.out.println("License Server started at " + serverStr);
System.out.println("JetBrains Activation address was: " + serverStr + "/");
System.out.println("JRebel 7.1 and earlier version Activation address was: " + serverStr + "/{tokenname}, with any email.");
System.out.println("JRebel 2018.1 and later version Activation address was: " + serverStr + "/{guid}(eg:http://localhost:" + port + "/" + UUID.randomUUID().toString() + "), with any email.");
server.join();
}
@Override
public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)
throws IOException {
System.out.println(target);
switch (target) {
case "/" -> IndexHandler.indexHandler(target, baseRequest, request, response);
case "/jrebel/leases", "/agent/leases" ->
JrebelHandler.jrebelLeasesHandler(target, baseRequest, request, response);
case "/jrebel/leases/1", "/agent/leases/1" ->
JrebelHandler.jrebelLeases1Handler(target, baseRequest, request, response);
case "/jrebel/validate-connection" ->
JrebelHandler.jrebelValidateHandler(target, baseRequest, request, response);
case "/rpc/ping.action" -> JetBrainsHandler.pingHandler(target, baseRequest, request, response);
case "/rpc/obtainTicket.action" ->
JetBrainsHandler.obtainTicketHandler(target, baseRequest, request, response);
case "/rpc/releaseTicket.action" ->
JetBrainsHandler.releaseTicketHandler(target, baseRequest, request, response);
case "/guid" -> ToolHandler.guidHandler(target, baseRequest, request, response);
default -> response.setStatus(HttpServletResponse.SC_FORBIDDEN);
}
}
}