Compare commits

..

No commits in common. "master" and "1.2" have entirely different histories.
master ... 1.2

2 changed files with 28 additions and 42 deletions

View File

@ -3,19 +3,20 @@ apply plugin: "application"
apply plugin: "maven" apply plugin: "maven"
group = "com.jdbernard" group = "com.jdbernard"
version = "2.0" version = "1.2"
mainClassName = "com.jdbernard.net.GroovyDirectoryServer" mainClassName = "com.jdbernard.net.GroovyDirectoryServer"
repositories { repositories {
mavenLocal() mavenLocal()
mavenCentral() mavenCentral() }
maven { url "https://mvn.jdb-labs.com/repo/" } }
dependencies { dependencies {
compile localGroovy() compile 'org.codehaus.groovy:groovy-all:2.3.6'
compile 'org.slf4j:slf4j-api:1.7.10' compile 'org.slf4j:slf4j-api:1.7.10'
compile 'ch.qos.logback:logback-core:1.1.2' compile 'ch.qos.logback:logback-core:1.1.2'
compile 'ch.qos.logback:logback-classic:1.1.2' compile 'ch.qos.logback:logback-classic:1.1.2'
compile 'org.eclipse.jetty.aggregate:jetty-all:8.1.18.v20150929' compile 'javax.servlet:servlet-api:2.4'
compile 'javax.servlet.jsp:jsp-api:2.1'
compile 'org.eclipse.jetty.aggregate:jetty-all:7.6.15.v20140411'
compile 'com.jdbernard:jdb-util:4.2' } compile 'com.jdbernard:jdb-util:4.2' }

View File

@ -4,18 +4,17 @@ import org.eclipse.jetty.rewrite.handler.RewriteHandler
import org.eclipse.jetty.rewrite.handler.RewriteRegexRule import org.eclipse.jetty.rewrite.handler.RewriteRegexRule
import org.eclipse.jetty.servlet.DefaultServlet import org.eclipse.jetty.servlet.DefaultServlet
import org.eclipse.jetty.servlet.ServletContextHandler import org.eclipse.jetty.servlet.ServletContextHandler
import org.eclipse.jetty.servlet.ServletHolder
import org.eclipse.jetty.server.Server import org.eclipse.jetty.server.Server
import groovy.servlet.GroovyServlet import groovy.servlet.GroovyServlet
import com.jdbernard.util.LightOptionParser import com.jdbernard.util.LightOptionParser
public class GroovyDirectoryServer { public class GroovyDirectoryServer {
public static final String VERSION = "2.0" public static final String VERSION = "1.2"
public static void main(String[] args) { public static void main(String[] args) {
def port = 9000 def port = 9000
def cli = [ def cli = [
v: [longName: 'version'], v: [longName: 'version'],
h: [longName: 'help'], h: [longName: 'help'],
@ -34,57 +33,43 @@ public class GroovyDirectoryServer {
mappedPaths: opts.P ?: [['/', '.']], mappedPaths: opts.P ?: [['/', '.']],
rewriteRules: opts.r ?: [], rewriteRules: opts.r ?: [],
groovyPatterns: opts.g ?: ["*.groovy"] ] groovyPatterns: opts.g ?: ["*.groovy"] ]
runJetty(options).join() runJetty(options).join()
} }
public static Server runJetty(options) { public static Server runJetty(options) {
def server = new Server(options.port) def server = new Server(options.port)
def handler = new ServletContextHandler(ServletContextHandler.SESSIONS)
handler.contextPath = '/'
handler.resourceBase = '.'
def rewriteHandler = null // Maped paths.
def context = new ServletContextHandler(ServletContextHandler.SESSIONS) println options.mappedPaths
context.contextPath = '/' options.mappedPaths.each { pair ->
def pathHandler = handler.addServlet(DefaultServlet, pair[0])
// Groovy Scripts pathHandler.setInitParameter('resourceBase', pair[1])
options.groovyPatterns.eachWithIndex { pattern, idx ->
def servletHolder = new ServletHolder("groovy-$idx", GroovyServlet)
context.addServlet(servletHolder, pattern)
println "Using GroovyServlet for urls matching '$pattern'." }
// Mapped paths.
def rootPair = options.mappedPaths.find { pair -> pair[0] == '/' }
if (rootPair) {
options.mappedPaths -= [rootPair]
context.resourceBase = rootPair[1] }
else {
println "No root path specified: defaulting to the current directory."
context.resourceBase = '.' }
options.mappedPaths.eachWithIndex { pair, idx ->
def servletHolder = new ServletHolder("static-$idx", DefaultServlet)
servletHolder.setInitParameter('resourceBase', pair[1])
servletHolder.setInitParameter('dirAllowed', 'true')
servletHolder.setInitParameter('pathInfoOnly', 'true')
context.addServlet(servletHolder, pair[0])
println "Serving '${pair[1]}' from base url '${pair[0]}'." } println "Serving '${pair[1]}' from base url '${pair[0]}'." }
def rootServletHolder = new ServletHolder('default', DefaultServlet) // Groovy Scripts
rootServletHolder.setInitParameter('dirAllowed', 'true') options.groovyPatterns.each { pattern ->
context.addServlet(rootServletHolder, '/') handler.addServlet(GroovyServlet, pattern)
println "Using GroovyServlet for urls matching '$pattern'." }
// Rewrite rules // Rewrite rules
if (options.rewriteRules) { if (options.rewriteRules) {
rewriteHandler = new RewriteHandler() def rewriteHandler = new RewriteHandler()
rewriteHandler.setHandler(context) } rewriteHandler.setHandler(handler)
handler = rewriteHandler }
options.rewriteRules.each { pair -> options.rewriteRules.each { pair ->
def rule = new RewriteRegexRule() def rule = new RewriteRegexRule()
rule.regex = pair[0] rule.regex = pair[0]
rule.replacement = pair[1] rule.replacement = pair[1]
rewriteHandler.addRule(rule) handler.addRule(rule)
println "Rewriting '${pair[0]}' to '${pair[1]}'." } println "Rewriting '${pair[0]}' to '${pair[1]}'." }
server.handler = rewriteHandler ?: context server.handler = handler
server.start() server.start()
println "Jetty started on port ${options.port}." println "Jetty started on port ${options.port}."