From 7c643b65f3613e30a14e8e9decc92fddb8bfd654 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 01 Jul 2011 17:42:56 -0400
Subject: [PATCH] Documentation. Include LICENSE and NOTICE files in both builds.
---
src/com/gitblit/GitBlitServer.java | 143 ++++++++---------------------------------------
1 files changed, 26 insertions(+), 117 deletions(-)
diff --git a/src/com/gitblit/GitBlitServer.java b/src/com/gitblit/GitBlitServer.java
index c873157..02cc54a 100644
--- a/src/com/gitblit/GitBlitServer.java
+++ b/src/com/gitblit/GitBlitServer.java
@@ -30,17 +30,7 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.log4j.ConsoleAppender;
-import org.apache.log4j.PatternLayout;
-import org.apache.wicket.protocol.http.ContextParamWebApplicationFactory;
-import org.apache.wicket.protocol.http.WicketFilter;
-import org.eclipse.jetty.http.security.Constraint;
-import org.eclipse.jetty.security.ConstraintMapping;
-import org.eclipse.jetty.security.ConstraintSecurityHandler;
-import org.eclipse.jetty.security.LoginService;
-import org.eclipse.jetty.security.authentication.BasicAuthenticator;
import org.eclipse.jetty.server.Connector;
-import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.bio.SocketConnector;
import org.eclipse.jetty.server.nio.SelectChannelConnector;
@@ -48,9 +38,6 @@
import org.eclipse.jetty.server.ssl.SslConnector;
import org.eclipse.jetty.server.ssl.SslSelectChannelConnector;
import org.eclipse.jetty.server.ssl.SslSocketConnector;
-import org.eclipse.jetty.servlet.FilterHolder;
-import org.eclipse.jetty.servlet.FilterMapping;
-import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.util.thread.QueuedThreadPool;
import org.eclipse.jetty.webapp.WebAppContext;
import org.slf4j.Logger;
@@ -61,15 +48,10 @@
import com.beust.jcommander.ParameterException;
import com.beust.jcommander.Parameters;
import com.gitblit.utils.StringUtils;
-import com.gitblit.wicket.GitBlitWebApp;
public class GitBlitServer {
- private static final String BORDER = "***********************************************************";
-
private static Logger logger;
-
- private static final FileSettings FILESETTINGS = new FileSettings();
public static void main(String[] args) {
Params params = new Params();
@@ -91,9 +73,9 @@
}
private static void usage(JCommander jc, ParameterException t) {
- System.out.println(BORDER);
+ System.out.println(Constants.BORDER);
System.out.println(Constants.getGitBlitVersion());
- System.out.println(BORDER);
+ System.out.println(Constants.BORDER);
System.out.println();
if (t != null) {
System.out.println(t.getMessage());
@@ -129,31 +111,12 @@
* Start Server.
*/
private static void start(Params params) {
- String pattern = FILESETTINGS.getString(Keys.server.log4jPattern,
- "%-5p %d{MM-dd HH:mm:ss.SSS} %-20.20c{1} %m%n");
-
- // allow os override of logging pattern
- String os = System.getProperty("os.name").toLowerCase();
- if (os.indexOf("windows") > -1) {
- String winPattern = FILESETTINGS.getString(Keys.server.log4jPattern_windows, pattern);
- if (!StringUtils.isEmpty(winPattern)) {
- pattern = winPattern;
- }
- } else if (os.indexOf("linux") > -1) {
- String linuxPattern = FILESETTINGS.getString(Keys.server.log4jPattern_linux, pattern);
- if (!StringUtils.isEmpty(linuxPattern)) {
- pattern = linuxPattern;
- }
- }
-
- PatternLayout layout = new PatternLayout(pattern);
- org.apache.log4j.Logger rootLogger = org.apache.log4j.Logger.getRootLogger();
- rootLogger.addAppender(new ConsoleAppender(layout));
+ FileSettings settings = Params.FILESETTINGS;
logger = LoggerFactory.getLogger(GitBlitServer.class);
- logger.info(BORDER);
+ logger.info(Constants.BORDER);
logger.info(Constants.getGitBlitVersion());
- logger.info(BORDER);
+ logger.info(Constants.BORDER);
String osname = System.getProperty("os.name");
String osversion = System.getProperty("os.version");
@@ -163,7 +126,7 @@
List<Connector> connectors = new ArrayList<Connector>();
if (params.port > 0) {
Connector httpConnector = createConnector(params.useNIO, params.port);
- String bindInterface = FILESETTINGS.getString(Keys.server.httpBindInterface, null);
+ String bindInterface = settings.getString(Keys.server.httpBindInterface, null);
if (!StringUtils.isEmpty(bindInterface)) {
logger.warn(MessageFormat.format("Binding connector on port {0} to {1}",
params.port, bindInterface));
@@ -182,7 +145,7 @@
if (keystore.exists()) {
Connector secureConnector = createSSLConnector(keystore, params.storePassword,
params.useNIO, params.securePort);
- String bindInterface = FILESETTINGS.getString(Keys.server.httpsBindInterface, null);
+ String bindInterface = settings.getString(Keys.server.httpsBindInterface, null);
if (!StringUtils.isEmpty(bindInterface)) {
logger.warn(MessageFormat.format("Binding ssl connector on port {0} to {1}",
params.securePort, bindInterface));
@@ -231,81 +194,23 @@
sessionManager.setSecureCookies(params.port <= 0 && params.securePort > 0);
rootContext.getSessionHandler().setSessionManager(sessionManager);
- // Wicket Filter
- String wicketPathSpec = "/*";
- FilterHolder wicketFilter = new FilterHolder(WicketFilter.class);
- wicketFilter.setInitParameter(ContextParamWebApplicationFactory.APP_CLASS_PARAM,
- GitBlitWebApp.class.getName());
- wicketFilter.setInitParameter(WicketFilter.FILTER_MAPPING_PARAM, wicketPathSpec);
- wicketFilter.setInitParameter(WicketFilter.IGNORE_PATHS_PARAM, "git/");
- rootContext.addFilter(wicketFilter, wicketPathSpec, FilterMapping.DEFAULT);
-
- // Zip Servlet
- rootContext.addServlet(DownloadZipServlet.class, Constants.ZIP_SERVLET_PATH + "*");
-
- // Git Servlet
- ServletHolder gitServlet = null;
- String gitServletPathSpec = Constants.GIT_SERVLET_PATH + "*";
- if (FILESETTINGS.getBoolean(Keys.git.enableGitServlet, true)) {
- gitServlet = rootContext.addServlet(GitBlitServlet.class, gitServletPathSpec);
- gitServlet.setInitParameter("base-path", params.repositoriesFolder);
- gitServlet.setInitParameter("export-all",
- FILESETTINGS.getBoolean(Keys.git.exportAll, true) ? "1" : "0");
+ // Ensure there is a defined User Service
+ String realmUsers = params.userService;
+ if (StringUtils.isEmpty(realmUsers)) {
+ logger.error(MessageFormat.format("PLEASE SPECIFY {0}!!", Keys.realm.userService));
+ return;
}
- // Login Service
- LoginService loginService = null;
- String realmUsers = params.realmFile;
- if (!StringUtils.isEmpty(realmUsers)) {
- File realmFile = new File(realmUsers);
- if (realmFile.exists()) {
- logger.info("Setting up login service from " + realmUsers);
- JettyLoginService jettyLoginService = new JettyLoginService(realmFile);
- GitBlit.self().setLoginService(jettyLoginService);
- loginService = jettyLoginService;
- }
- }
-
- // Determine what handler to use
- Handler handler;
- if (gitServlet != null) {
- if (loginService != null) {
- // Authenticate Clone/Push
- logger.info("Setting up authenticated git servlet clone/push access");
-
- Constraint constraint = new Constraint();
- constraint.setAuthenticate(true);
- constraint.setRoles(new String[] { "*" });
-
- ConstraintMapping mapping = new ConstraintMapping();
- mapping.setPathSpec(gitServletPathSpec);
- mapping.setConstraint(constraint);
-
- ConstraintSecurityHandler security = new ConstraintSecurityHandler();
- security.addConstraintMapping(mapping);
- security.setAuthenticator(new BasicAuthenticator());
- security.setLoginService(loginService);
- security.setStrict(false);
-
- security.setHandler(rootContext);
-
- handler = security;
- } else {
- // Anonymous Pull/Push
- logger.info("Setting up anonymous git servlet pull/push access");
- handler = rootContext;
- }
- } else {
- logger.info("Git servlet clone/push disabled");
- handler = rootContext;
- }
+ // Override settings
+ settings.overrideSetting(Keys.realm.userService, params.userService);
+ settings.overrideSetting(Keys.git.repositoriesFolder, params.repositoriesFolder);
// Set the server's contexts
- server.setHandler(handler);
+ server.setHandler(rootContext);
// Setup the GitBlit context
GitBlit gitblit = GitBlit.self();
- gitblit.configureContext(FILESETTINGS);
+ gitblit.configureContext(settings);
rootContext.addEventListener(gitblit);
// Start the Server
@@ -386,6 +291,8 @@
private final Server server;
+ private final Logger logger = LoggerFactory.getLogger(ShutdownMonitorThread.class);
+
public ShutdownMonitorThread(Server server, Params params) {
this.server = server;
setDaemon(true);
@@ -408,9 +315,9 @@
BufferedReader reader = new BufferedReader(new InputStreamReader(
accept.getInputStream()));
reader.readLine();
- logger.info(BORDER);
+ logger.info(Constants.BORDER);
logger.info("Stopping " + Constants.NAME);
- logger.info(BORDER);
+ logger.info(Constants.BORDER);
server.stop();
server.setStopAtShutdown(false);
accept.close();
@@ -424,6 +331,8 @@
@Parameters(separators = " ")
private static class Params {
+ private static final FileSettings FILESETTINGS = new FileSettings(Constants.PROPERTIES_FILE);
+
/*
* Server parameters
*/
@@ -433,7 +342,7 @@
@Parameter(names = { "--stop" }, description = "Stop Server")
public Boolean stop = false;
- @Parameter(names = { "--tempFolder" }, description = "Server temp folder")
+ @Parameter(names = { "--tempFolder" }, description = "Folder for server to extract built-in webapp")
public String temp = FILESETTINGS.getString(Keys.server.tempFolder, "temp");
/*
@@ -446,8 +355,8 @@
/*
* Authentication Parameters
*/
- @Parameter(names = { "--realmFile" }, description = "Users Realm Hash File")
- public String realmFile = FILESETTINGS.getString(Keys.realm.realmFile, "users.properties");
+ @Parameter(names = { "--userService" }, description = "Authentication and Authorization Service (filename or fully qualified classname)")
+ public String userService = FILESETTINGS.getString(Keys.realm.userService, "users.properties");
/*
* JETTY Parameters
--
Gitblit v1.9.1