James Moger
2013-04-03 75bca8ea4a8bc1126cc47c97c9ce595fd650c831
src/main/java/com/gitblit/GitBlit.java
@@ -90,6 +90,7 @@
import com.gitblit.fanout.FanoutNioService;
import com.gitblit.fanout.FanoutService;
import com.gitblit.fanout.FanoutSocketService;
import com.gitblit.git.GitDaemon;
import com.gitblit.models.FederationModel;
import com.gitblit.models.FederationProposal;
import com.gitblit.models.FederationSet;
@@ -189,6 +190,8 @@
   private FileBasedConfig projectConfigs;
   
   private FanoutService fanoutService;
   private GitDaemon gitDaemon;
   public GitBlit() {
      if (gitblit == null) {
@@ -633,7 +636,9 @@
      // try to authenticate by servlet container principal
      Principal principal = httpRequest.getUserPrincipal();
      if (principal != null) {
         UserModel user = getUserModel(principal.getName());
         String username = principal.getName();
         if (StringUtils.isEmpty(username)) {
            UserModel user = getUserModel(username);
         if (user != null) {
            flagWicketSession(AuthenticationType.CONTAINER);
            logger.debug(MessageFormat.format("{0} authenticated by servlet container principal from {1}",
@@ -642,6 +647,7 @@
         } else {
            logger.warn(MessageFormat.format("Failed to find UserModel for {0}, attempted servlet container authentication from {1}",
                  principal.getName(), httpRequest.getRemoteAddr()));
            }
         }
      }
      
@@ -1376,7 +1382,7 @@
      FileBasedConfig config = (FileBasedConfig) getRepositoryConfig(r);
      if (config.isOutdated()) {
         // reload model
         logger.info(MessageFormat.format("Config for \"{0}\" has changed. Reloading model and updating cache.", repositoryName));
         logger.debug(MessageFormat.format("Config for \"{0}\" has changed. Reloading model and updating cache.", repositoryName));
         model = loadRepositoryModel(model.name);
         removeFromCachedRepositoryList(model.name);
         addToCachedRepositoryList(model);
@@ -3115,18 +3121,34 @@
      projectConfigs = new FileBasedConfig(getFileOrFolder(Keys.web.projectsFile, "${baseFolder}/projects.conf"), FS.detect());
      getProjectConfigs();
      
      // schedule mail engine
      configureMailExecutor();
      configureLuceneIndexing();
      configureGarbageCollector();
      if (startFederation) {
         configureFederation();
      }
      configureJGit();
      configureFanout();
      configureGitDaemon();
      ContainerUtils.CVE_2007_0450.test();
   }
   protected void configureMailExecutor() {
      if (mailExecutor.isReady()) {
         logger.info("Mail executor is scheduled to process the message queue every 2 minutes.");
         scheduledExecutor.scheduleAtFixedRate(mailExecutor, 1, 2, TimeUnit.MINUTES);
      } else {
         logger.warn("Mail server is not properly configured.  Mail services disabled.");
      }
   }
      
      // schedule lucene engine
      enableLuceneIndexing();
   protected void configureLuceneIndexing() {
      scheduledExecutor.scheduleAtFixedRate(luceneExecutor, 1, 2,  TimeUnit.MINUTES);
      logger.info("Lucene executor is scheduled to process indexed branches every 2 minutes.");
   }
   protected void configureGarbageCollector() {
      // schedule gc engine
      if (gcExecutor.isReady()) {
         logger.info("GC executor is scheduled to scan repositories every 24 hours.");
@@ -3150,11 +3172,9 @@
         logger.info(MessageFormat.format("Next scheculed GC scan is in {0}", when));
         scheduledExecutor.scheduleAtFixedRate(gcExecutor, delay, 60*24, TimeUnit.MINUTES);
      }
      if (startFederation) {
         configureFederation();
      }
      
   protected void configureJGit() {
      // Configure JGit
      WindowCacheConfig cfg = new WindowCacheConfig();
      
@@ -3176,9 +3196,9 @@
      } catch (IllegalArgumentException e) {
         logger.error("Failed to configure JGit parameters!", e);
      }
   }
      ContainerUtils.CVE_2007_0450.test();
   protected void configureFanout() {
      // startup Fanout PubSub service
      if (settings.getInteger(Keys.fanout.port, 0) > 0) {
         String bindInterface = settings.getString(Keys.fanout.bindInterface, null);
@@ -3206,9 +3226,18 @@
      }
   }
   
   protected void enableLuceneIndexing() {
      scheduledExecutor.scheduleAtFixedRate(luceneExecutor, 1, 2,  TimeUnit.MINUTES);
      logger.info("Lucene executor is scheduled to process indexed branches every 2 minutes.");
   protected void configureGitDaemon() {
      String bindInterface = settings.getString(Keys.git.daemonBindInterface, "localhost");
      int port = settings.getInteger(Keys.git.daemonPort, GitDaemon.DEFAULT_PORT);
      if (port > 0) {
         try {
            gitDaemon = new GitDaemon(bindInterface, port, getRepositoriesFolder());
            gitDaemon.start();
            logger.info(MessageFormat.format("Git daemon is listening on {0}:{1,number,0}", bindInterface, port));
         } catch (IOException e) {
            logger.error(MessageFormat.format("Failed to start Git daemon on {0}:{1,number.0}", bindInterface, port), e);
         }
      }
   }
   
   protected final Logger getLogger() {
@@ -3319,6 +3348,9 @@
      if (fanoutService != null) {
         fanoutService.stop();
      }
      if (gitDaemon != null) {
         gitDaemon.stop();
      }
   }
   
   /**