Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
bdw429s committed Oct 25, 2024
2 parents 96ea216 + b931209 commit feb783f
Show file tree
Hide file tree
Showing 23 changed files with 1,654 additions and 856 deletions.
9 changes: 7 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,13 @@ jobs:
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'

distribution: 'temurin'

- name: Create symlink to Java home
run: |
mkdir -p gradle/jvm/11
ln -s $JAVA_HOME gradle/jvm/11/latest
# Do the build
- name: Build with Gradle
run: ./gradlew --refresh-dependencies
Expand Down
2 changes: 1 addition & 1 deletion dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ configurations {
}

ext {
undertowVersion = '2.2.28.Final'
undertowVersion = '2.2.33.Final'
urlRewriteVersion = '5.0.2-SNAPSHOT'
proguardVersion = '6.0.2'
systemTrayVersion = '3.17'
Expand Down
2 changes: 1 addition & 1 deletion gradle/version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
5.0.0-25600eadb08f3c204344404470d41494340f2702-060f7b26320ac8ccf3354119f4f0eff75f986553
5.0.7-0de55e3b7a2f4c8dd5b33ef11edc7a90a39506e7-96ea216b7cfb6883a6af15c191a94953a0596b9c
37 changes: 19 additions & 18 deletions src/main/java/runwar/RunwarConfigurer.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
package runwar;

import static io.undertow.Handlers.predicate;
import static runwar.logging.RunwarLogger.LOG;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.BitSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Arrays;

import javax.servlet.DispatcherType;
import javax.servlet.Filter;

import io.undertow.predicate.Predicates;
import io.undertow.server.handlers.cache.CacheHandler;
import io.undertow.server.handlers.cache.DirectBufferCache;
Expand All @@ -8,25 +24,8 @@
import io.undertow.servlet.handlers.DefaultServlet;
import io.undertow.util.MimeMappings;
import runwar.options.ServerOptions;
import runwar.security.SelfSignedCertificate;
import runwar.undertow.WebXMLParser;

import javax.servlet.DispatcherType;
import javax.servlet.Filter;
import javax.servlet.Servlet;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.security.GeneralSecurityException;
import java.util.*;
import java.util.BitSet;

import static io.undertow.Handlers.predicate;
import static io.undertow.servlet.Servlets.servlet;
import static runwar.logging.RunwarLogger.LOG;

public class RunwarConfigurer {

private static ServerOptions serverOptions;
Expand Down Expand Up @@ -189,7 +188,9 @@ private void configurePathInfoFilter(DeploymentInfo servletBuilder) throws Class
regexPathInfoFilter = (Class<Filter>) Server.class.getClassLoader()
.loadClass("org.cfmlprojects.regexpathinfofilter.RegexPathInfoFilter");
}
servletBuilder.addFilter(new FilterInfo("RegexPathInfoFilter", regexPathInfoFilter));
FilterInfo filterInfo = new FilterInfo("RegexPathInfoFilter", regexPathInfoFilter);
filterInfo.addInitParam("regex", "^(/.+?\\.cf[cm]|/.+?\\.bx[sm])(/.*)");
servletBuilder.addFilter(filterInfo);
servletBuilder.addFilterUrlMapping("RegexPathInfoFilter", "/*", DispatcherType.REQUEST);
servletBuilder.addFilterUrlMapping("RegexPathInfoFilter", "/*", DispatcherType.FORWARD);
}
Expand Down
105 changes: 37 additions & 68 deletions src/main/java/runwar/Server.java
Original file line number Diff line number Diff line change
@@ -1,92 +1,61 @@
package runwar;

import io.undertow.Handlers;
import static io.undertow.servlet.Servlets.deployment;
import static runwar.logging.RunwarLogger.CONTEXT_LOG;
import static runwar.logging.RunwarLogger.LOG;

import java.awt.Image;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.lang.management.ManagementFactory;
import java.net.ConnectException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.lang.reflect.Method;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.net.URL;
import java.net.URLClassLoader;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Timer;
import java.util.TimerTask;
import java.util.regex.Pattern;

import javax.servlet.Servlet;

import org.xnio.Option;
import org.xnio.OptionMap;

import io.undertow.Undertow;
import io.undertow.Undertow.Builder;
import io.undertow.client.ClientConnection;
import io.undertow.UndertowOptions;
import io.undertow.predicate.Predicates;
import io.undertow.predicate.Predicate;
import io.undertow.server.DefaultByteBufferPool;
import io.undertow.server.HandlerWrapper;
import io.undertow.server.HttpHandler;
import io.undertow.server.HttpServerExchange;
import io.undertow.server.handlers.PathHandler;
import io.undertow.server.handlers.ProxyPeerAddressHandler;
import io.undertow.server.handlers.SSLHeaderHandler;
import io.undertow.server.handlers.accesslog.AccessLogHandler;
import io.undertow.server.handlers.accesslog.DefaultAccessLogReceiver;
import io.undertow.server.handlers.builder.PredicatedHandler;
import io.undertow.server.handlers.builder.PredicatedHandlersParser;
import io.undertow.server.handlers.cache.DirectBufferCache;
import io.undertow.server.handlers.encoding.ContentEncodingRepository;
import io.undertow.server.handlers.encoding.EncodingHandler;
import io.undertow.server.handlers.encoding.GzipEncodingProvider;
import io.undertow.server.handlers.resource.CachingResourceManager;
import io.undertow.server.handlers.resource.ResourceManager;
import io.undertow.server.handlers.resource.ResourceHandler;
import io.undertow.servlet.api.DeploymentInfo;
import io.undertow.servlet.api.DeploymentManager;
import io.undertow.servlet.api.ServletSessionConfig;
import io.undertow.util.CanonicalPathUtils;
import io.undertow.util.AttachmentKey;
import io.undertow.util.HeaderValues;
import io.undertow.server.handlers.resource.Resource;
import io.undertow.util.Headers;
import io.undertow.util.HttpString;
import io.undertow.util.MimeMappings;
import io.undertow.io.Sender;
import io.undertow.websockets.jsr.WebSocketDeploymentInfo;
import net.minidev.json.JSONArray;
import net.minidev.json.JSONObject;
import runwar.options.ConfigParser.JSONOption;
import org.xnio.Option;
import org.xnio.*;
import runwar.logging.LoggerFactory;
import runwar.logging.LoggerPrintStream;
import runwar.logging.RunwarAccessLogReceiver;
import runwar.mariadb4j.MariaDB4jManager;
import runwar.options.ServerOptions;
import runwar.options.SiteOptions;
import runwar.security.SSLUtil;
import runwar.tray.Tray;
import runwar.undertow.MappedResourceManager;
import runwar.undertow.HostResourceManager;
import runwar.undertow.RequestDebugHandler;
import runwar.undertow.BindingMatcherHandler;
import runwar.undertow.ListenerManager;
import runwar.undertow.SSLCertHeaderHandler;
import runwar.undertow.LifecyleHandler;
import runwar.undertow.WelcomeFileHandler;
import runwar.undertow.SiteDeployment;
import runwar.undertow.SiteDeploymentManager;
import runwar.util.ClassLoaderUtils;
import runwar.util.RequestDumper;

import javax.net.ssl.SSLContext;
import java.awt.*;
import java.io.*;
import java.util.*;
import java.util.List;
import java.lang.management.ManagementFactory;
import java.lang.reflect.Method;
import java.net.*;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.concurrent.ConcurrentHashMap;
import javax.servlet.Servlet;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.ServletRequest;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import static io.undertow.servlet.Servlets.defaultContainer;
import static io.undertow.servlet.Servlets.deployment;
import io.undertow.servlet.handlers.ServletRequestContext;
import io.undertow.server.HandlerWrapper;

import static runwar.logging.RunwarLogger.CONTEXT_LOG;
import static runwar.logging.RunwarLogger.LOG;
import static runwar.logging.RunwarLogger.MAPPER_LOG;

import runwar.util.Utils;

@SuppressWarnings("deprecation")
Expand Down
94 changes: 36 additions & 58 deletions src/main/java/runwar/options/ConfigParser.java
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
package runwar.options;

import static runwar.logging.RunwarLogger.CONF_LOG;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

import net.minidev.json.JSONArray;
import net.minidev.json.JSONObject;
import net.minidev.json.JSONValue;
import net.minidev.json.parser.ParseException;
import runwar.LaunchUtil;
import runwar.Server;
import runwar.logging.RunwarLogger;
import runwar.logging.LoggerFactory;

import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.*;
import java.util.stream.Collectors;

import static runwar.logging.RunwarLogger.CONF_LOG;

public class ConfigParser {

private ServerOptions serverOptions;
Expand Down Expand Up @@ -296,6 +296,26 @@ private void parseOptions() {

site.webroot(getFile(siteConfig.getOptionValue("webroot")));

if (siteConfig.hasOption("webSocketEnable")) {
site.webSocketEnable(siteConfig.getOptionBoolean("webSocketEnable"));
}

if (siteConfig.hasOption("webSocketURI")) {
String webSocketURI = siteConfig.getOptionValue("webSocketURI");
if (!webSocketURI.startsWith("/")) {
webSocketURI = "/" + webSocketURI;
}
site.webSocketURI(webSocketURI);
}

if (siteConfig.hasOption("webSocketListener")) {
String webSocketListener = siteConfig.getOptionValue("webSocketListener");
if (!webSocketListener.startsWith("/")) {
webSocketListener = "/" + webSocketListener;
}
site.webSocketListener(webSocketListener);
}

if (siteConfig.hasOption("servletPassPredicate")) {
site.servletPassPredicate(siteConfig.getOptionValue("servletPassPredicate"));
}
Expand All @@ -311,46 +331,6 @@ private void parseOptions() {
if (siteConfig.hasOption("resourceManagerLogging")) {
site.resourceManagerLogging(siteConfig.getOptionBoolean("resourceManagerLogging"));
}
if (siteConfig.hasOption("host")) {
site.host(siteConfig.getOptionValue("host"));
}

if (siteConfig.hasOption("HTTPEnable")) {
site.httpEnable(siteConfig.getOptionBoolean("HTTPEnable"));
}
if (siteConfig.hasOption("port")) {
site.httpPort(((Number) siteConfig.getParsedOptionValue("port")).intValue());
}
if (siteConfig.hasOption("HTTP2Enable")) {
site.http2Enable(siteConfig.getOptionBoolean("HTTP2Enable"));
}
if (siteConfig.hasOption("AJPEnable")) {
site.ajpEnable(siteConfig.getOptionBoolean("AJPEnable"));
}
if (siteConfig.hasOption("AJPPort")) {
site.ajpPort(((Number) siteConfig.getParsedOptionValue("AJPPort")).intValue());
}
if (siteConfig.hasOption("SSLEnable")) {
site.sslEnable(siteConfig.getOptionBoolean("SSLEnable"));
if (!siteConfig.hasOption("sessionCookieSecure")) {
serverOptions.secureCookies(true);
}
}
if (siteConfig.hasOption("SSLPort")) {
site.sslPort(((Number) siteConfig.getParsedOptionValue("SSLPort")).intValue());
}

if (siteConfig.hasOption("SSLCertFile")) {
File certFile = getFile(siteConfig.getOptionValue("SSLCertFile"));
site.sslCertificate(certFile);
}
if (siteConfig.hasOption("SSLKeyFile")) {
File keyFile = getFile(siteConfig.getOptionValue("SSLKeyFile"));
site.sslKey(keyFile);
}
if (siteConfig.hasOption("SSLKeyPass")) {
site.sslKeyPass(siteConfig.getOptionValue("SSLKeyPass").toCharArray());
}

if (siteConfig.hasOption("clientCertMode")) {
site.clientCertNegotiation(siteConfig.getOptionValue("clientCertMode"));
Expand All @@ -364,13 +344,11 @@ private void parseOptions() {
if (siteConfig.hasOption("clientCertEnable")) {
site.clientCertEnable(siteConfig.getOptionBoolean("clientCertEnable"));

if (site.clientCertEnable()) {
if (siteConfig.hasOption("clientCertSubjectDNs")) {
site.clientCertSubjectDNs(siteConfig.getOptionArray("clientCertSubjectDNs"));
}
if (siteConfig.hasOption("clientCertIssuerDNs")) {
site.clientCertIssuerDNs(siteConfig.getOptionArray("clientCertIssuerDNs"));
}
if (siteConfig.hasOption("clientCertSubjectDNs")) {
site.clientCertSubjectDNs(siteConfig.getOptionArray("clientCertSubjectDNs"));
}
if (siteConfig.hasOption("clientCertIssuerDNs")) {
site.clientCertIssuerDNs(siteConfig.getOptionArray("clientCertIssuerDNs"));
}
}

Expand Down Expand Up @@ -462,7 +440,7 @@ private void parseOptions() {
// issues as detailed here:
// https://issues.redhat.com/browse/UNDERTOW-584
if (siteConfig.hasOption("sendFileMinSizeKB")) {
site.transferMinSize(Long.valueOf(siteConfig.getOptionValue("transferMinSize")) * 1024);
site.transferMinSize(Long.valueOf(siteConfig.getOptionValue("sendFileMinSizeKB")) * 1024);
}

if (siteConfig.hasOption("GZipEnable")) {
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/runwar/options/ServerOptions.java
Original file line number Diff line number Diff line change
Expand Up @@ -834,6 +834,8 @@ public ServerOptions cfEngineName(String cfengineName) {
this.cfengineName = "adobe";
} else if (cfengineName.toLowerCase().contains("railo")) {
this.cfengineName = "railo";
} else if (cfengineName.toLowerCase().contains("boxlang")) {
this.cfengineName = "boxlang";
} else if (cfengineName.equals("")) {
this.cfengineName = "";
} else {
Expand Down
Loading

0 comments on commit feb783f

Please sign in to comment.