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 parseArguments(String[] args) { if (args.length % 2 != 0) { throw new IllegalArgumentException("Error in argument's length "); } Map 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 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); } } }