| | |
| | |
|
| | | private static Logger logger;
|
| | |
|
| | | public static void main(String[] args) {
|
| | | public static void main(String... args) {
|
| | | Params params = new Params();
|
| | | JCommander jc = new JCommander(params);
|
| | | try {
|
| | |
| | | */
|
| | | private static void start(Params params) {
|
| | | FileSettings settings = Params.FILESETTINGS;
|
| | | if (!StringUtils.isEmpty(params.settingsfile)) {
|
| | | if (new File(params.settingsfile).exists()) {
|
| | | settings = new FileSettings(params.settingsfile); |
| | | }
|
| | | }
|
| | |
|
| | | logger = LoggerFactory.getLogger(GitBlitServer.class);
|
| | | logger.info(Constants.BORDER);
|
| | | logger.info(Constants.getGitBlitVersion());
|
| | | logger.info(" _____ _ _ _ _ _ _");
|
| | | logger.info(" | __ \\(_)| | | | | |(_)| |");
|
| | | logger.info(" | | \\/ _ | |_ | |__ | | _ | |_");
|
| | | logger.info(" | | __ | || __|| '_ \\ | || || __|");
|
| | | logger.info(" | |_\\ \\| || |_ | |_) || || || |_");
|
| | | logger.info(" \\____/|_| \\__||_.__/ |_||_| \\__|");
|
| | | int spacing = (Constants.BORDER.length() - Constants.getGitBlitVersion().length()) / 2;
|
| | | StringBuilder sb = new StringBuilder();
|
| | | while (spacing > 0) {
|
| | | spacing--;
|
| | | sb.append(' ');
|
| | | }
|
| | | logger.info(sb.toString() + Constants.getGitBlitVersion());
|
| | | logger.info("");
|
| | | logger.info(Constants.BORDER);
|
| | |
|
| | | String osname = System.getProperty("os.name");
|
| | |
| | | Connector httpConnector = createConnector(params.useNIO, params.port);
|
| | | String bindInterface = settings.getString(Keys.server.httpBindInterface, null);
|
| | | if (!StringUtils.isEmpty(bindInterface)) {
|
| | | logger.warn(MessageFormat.format("Binding connector on port {0} to {1}",
|
| | | logger.warn(MessageFormat.format("Binding connector on port {0,number,0} to {1}",
|
| | | params.port, bindInterface));
|
| | | httpConnector.setHost(bindInterface);
|
| | | }
|
| | | if (params.port < 1024 && !isWindows()) {
|
| | | logger.warn("Gitblit needs to run with ROOT permissions for ports < 1024!");
|
| | | }
|
| | | connectors.add(httpConnector);
|
| | | }
|
| | |
| | | params.useNIO, params.securePort);
|
| | | 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));
|
| | | logger.warn(MessageFormat.format(
|
| | | "Binding ssl connector on port {0,number,0} to {1}", params.securePort,
|
| | | bindInterface));
|
| | | secureConnector.setHost(bindInterface);
|
| | | }
|
| | | if (params.securePort < 1024 && !isWindows()) {
|
| | | logger.warn("Gitblit needs to run with ROOT permissions for ports < 1024!");
|
| | | }
|
| | | connectors.add(secureConnector);
|
| | | } else {
|
| | |
| | |
|
| | | // Root WebApp Context
|
| | | WebAppContext rootContext = new WebAppContext();
|
| | | rootContext.setContextPath("/");
|
| | | rootContext.setContextPath(settings.getString(Keys.server.contextPath, "/"));
|
| | | rootContext.setServer(server);
|
| | | rootContext.setWar(location.toExternalForm());
|
| | | rootContext.setTempDirectory(tempDir);
|
| | |
| | |
|
| | | // Setup the GitBlit context
|
| | | GitBlit gitblit = GitBlit.self();
|
| | | gitblit.configureContext(settings);
|
| | | gitblit.configureContext(settings, true);
|
| | | rootContext.addEventListener(gitblit);
|
| | |
|
| | | try {
|
| | |
| | | *
|
| | | * @param useNIO
|
| | | * @param port
|
| | | * @return an http cnonector
|
| | | * @return an http connector
|
| | | */
|
| | | private static Connector createConnector(boolean useNIO, int port) {
|
| | | Connector connector;
|
| | |
| | |
|
| | | connector.setPort(port);
|
| | | connector.setMaxIdleTime(30000);
|
| | | if (port < 1024 && !isWindows()) {
|
| | | logger.warn("Gitblit needs to run with ROOT permissions for ports < 1024!");
|
| | | }
|
| | | return connector;
|
| | | }
|
| | |
|
| | | /**
|
| | | * Creates an https connector.
|
| | | * |
| | | * SSL renegotiation will be enabled if the JVM is 1.6.0_22 or later.
|
| | | * oracle.com/technetwork/java/javase/documentation/tlsreadme2-176330.html
|
| | | *
|
| | | * @param keystore
|
| | | * @param password
|
| | |
| | | SslSocketConnector ssl = new SslSocketConnector();
|
| | | connector = ssl;
|
| | | }
|
| | | connector.setAllowRenegotiate(false);
|
| | | // disable renegotiation unless this is a patched JVM
|
| | | boolean allowRenegotiation = false;
|
| | | String v = System.getProperty("java.version");
|
| | | if (v.startsWith("1.7")) {
|
| | | allowRenegotiation = true;
|
| | | } else if (v.startsWith("1.6")) {
|
| | | // 1.6.0_22 was first release with RFC-5746 implemented fix.
|
| | | if (v.indexOf('_') > -1) {
|
| | | String b = v.substring(v.indexOf('_') + 1);
|
| | | if (Integer.parseInt(b) >= 22) {
|
| | | allowRenegotiation = true;
|
| | | }
|
| | | }
|
| | | }
|
| | | if (allowRenegotiation) {
|
| | | logger.info(" allowing SSL renegotiation on Java " + v);
|
| | | connector.setAllowRenegotiate(allowRenegotiation);
|
| | | }
|
| | | connector.setKeystore(keystore.getAbsolutePath());
|
| | | connector.setPassword(password);
|
| | | connector.setPort(port);
|
| | | connector.setMaxIdleTime(30000);
|
| | | return connector;
|
| | | }
|
| | |
|
| | | /**
|
| | | * Tests to see if the operating system is Windows.
|
| | | * |
| | | * @return true if this is a windows machine
|
| | | */
|
| | | private static boolean isWindows() {
|
| | | return System.getProperty("os.name").toLowerCase().indexOf("windows") > -1;
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * JCommander Parameters class for GitBlitServer.
|
| | | */
|
| | | @Parameters(separators = " ")
|
| | | private static class Params {
|
| | |
|
| | |
| | | @Parameter(names = "--shutdownPort", description = "Port for Shutdown Monitor to listen on. (port <= 0 will disable this monitor)")
|
| | | public Integer shutdownPort = FILESETTINGS.getInteger(Keys.server.shutdownPort, 8081);
|
| | |
|
| | | /*
|
| | | * Setting overrides
|
| | | */
|
| | | @Parameter(names = { "--settings" }, description = "Path to alternative settings")
|
| | | public String settingsfile;
|
| | |
|
| | | }
|
| | | } |