James Moger
2015-06-15 c0c5b206bb8d61fb82f09511f8b0214b64f726f4
src/main/java/com/gitblit/manager/ServicesManager.java
@@ -162,11 +162,12 @@
      List<RepositoryUrl> list = new ArrayList<RepositoryUrl>();
      // http/https url
      if (settings.getBoolean(Keys.git.enableGitServlet, true)) {
      if (settings.getBoolean(Keys.git.enableGitServlet, true) &&
         settings.getBoolean(Keys.web.showHttpServletUrls, true)) {
         AccessPermission permission = user.getRepositoryPermission(repository).permission;
         if (permission.exceeds(AccessPermission.NONE)) {
            Transport transport = Transport.fromString(request.getScheme());
            if (permission.atLeast(AccessPermission.PUSH) && !acceptPush(transport)) {
            if (permission.atLeast(AccessPermission.PUSH) && !acceptsPush(transport)) {
               // downgrade the repo permission for this transport
               // because it is not an acceptable PUSH transport
               permission = AccessPermission.CLONE;
@@ -177,10 +178,11 @@
      // ssh daemon url
      String sshDaemonUrl = getSshDaemonUrl(request, user, repository);
      if (!StringUtils.isEmpty(sshDaemonUrl)) {
      if (!StringUtils.isEmpty(sshDaemonUrl) &&
         settings.getBoolean(Keys.web.showSshDaemonUrls, true)) {
         AccessPermission permission = user.getRepositoryPermission(repository).permission;
         if (permission.exceeds(AccessPermission.NONE)) {
            if (permission.atLeast(AccessPermission.PUSH) && !acceptPush(Transport.SSH)) {
            if (permission.atLeast(AccessPermission.PUSH) && !acceptsPush(Transport.SSH)) {
               // downgrade the repo permission for this transport
               // because it is not an acceptable PUSH transport
               permission = AccessPermission.CLONE;
@@ -192,10 +194,11 @@
      // git daemon url
      String gitDaemonUrl = getGitDaemonUrl(request, user, repository);
      if (!StringUtils.isEmpty(gitDaemonUrl)) {
      if (!StringUtils.isEmpty(gitDaemonUrl) &&
            settings.getBoolean(Keys.web.showGitDaemonUrls, true)) {
         AccessPermission permission = getGitDaemonAccessPermission(user, repository);
         if (permission.exceeds(AccessPermission.NONE)) {
            if (permission.atLeast(AccessPermission.PUSH) && !acceptPush(Transport.GIT)) {
            if (permission.atLeast(AccessPermission.PUSH) && !acceptsPush(Transport.GIT)) {
               // downgrade the repo permission for this transport
               // because it is not an acceptable PUSH transport
               permission = AccessPermission.CLONE;
@@ -272,7 +275,8 @@
    */
   @Override
   public boolean isServingRepositories() {
      return isServingHTTP()
      return isServingHTTPS()
            || isServingHTTP()
            || isServingGIT()
            || isServingSSH();
   }
@@ -282,7 +286,19 @@
    */
   @Override
   public boolean isServingHTTP() {
      return settings.getBoolean(Keys.git.enableGitServlet, true);
      return settings.getBoolean(Keys.git.enableGitServlet, true)
            && ((gitblit.getStatus().isGO && settings.getInteger(Keys.server.httpPort, 0) > 0)
                  || !gitblit.getStatus().isGO);
   }
   /* (non-Javadoc)
    * @see com.gitblit.manager.IServicesManager#isServingHTTPS()
    */
   @Override
   public boolean isServingHTTPS() {
      return settings.getBoolean(Keys.git.enableGitServlet, true)
            && ((gitblit.getStatus().isGO && settings.getInteger(Keys.server.httpsPort, 0) > 0)
                  || !gitblit.getStatus().isGO);
   }
   /* (non-Javadoc)
@@ -330,7 +346,8 @@
      }
   }
   protected boolean acceptPush(Transport byTransport) {
   @Override
   public boolean acceptsPush(Transport byTransport) {
      if (byTransport == null) {
         logger.info("Unknown transport, push rejected!");
         return false;
@@ -510,7 +527,7 @@
      @Override
      public void reschedule(FederationModel registration) {
         // schedule the next pull
         int mins = TimeUtils.convertFrequencyToMinutes(registration.frequency);
         int mins = TimeUtils.convertFrequencyToMinutes(registration.frequency, 5);
         registration.nextPull = new Date(System.currentTimeMillis() + (mins * 60 * 1000L));
         scheduledExecutor.schedule(new FederationPuller(registration), mins, TimeUnit.MINUTES);
         logger.info(MessageFormat.format(