James Moger
2013-06-24 f59874809d61baf25244756cb280beaeecc33e96
src/main/java/com/gitblit/GitBlit.java
@@ -114,6 +114,7 @@
import com.gitblit.utils.ArrayUtils;
import com.gitblit.utils.Base64;
import com.gitblit.utils.ByteFormat;
import com.gitblit.utils.CommitCache;
import com.gitblit.utils.ContainerUtils;
import com.gitblit.utils.DeepCopier;
import com.gitblit.utils.FederationUtils;
@@ -509,7 +510,7 @@
      if (user == null) {
         user = UserModel.ANONYMOUS;
      }
      String username = UserModel.ANONYMOUS.equals(user) ? "" : user.username;
      String username = encodeUsername(UserModel.ANONYMOUS.equals(user) ? "" : user.username);
      List<RepositoryUrl> list = new ArrayList<RepositoryUrl>();
      // http/https url
@@ -735,6 +736,7 @@
         // can not authenticate empty username
         return null;
      }
      String usernameDecoded = decodeUsername(username);
      String pw = new String(password);
      if (StringUtils.isEmpty(pw)) {
         // can not authenticate empty password
@@ -743,7 +745,7 @@
      // check to see if this is the federation user
      if (canFederate()) {
         if (username.equalsIgnoreCase(Constants.FEDERATION_USER)) {
         if (usernameDecoded.equalsIgnoreCase(Constants.FEDERATION_USER)) {
            List<String> tokens = getFederationTokens();
            if (tokens.contains(pw)) {
               // the federation user is an administrator
@@ -758,7 +760,7 @@
      if (userService == null) {
         return null;
      }
      return userService.authenticate(username, password);
      return userService.authenticate(usernameDecoded, password);
   }
   /**
@@ -929,7 +931,10 @@
      if (userService == null) {
         return;
      }
      if (userService.supportsCookies()) {
      GitBlitWebSession session = GitBlitWebSession.get();
      boolean standardLogin = session.authenticationType.isStandard();
      if (userService.supportsCookies() && standardLogin) {
         Cookie userCookie;
         if (user == null) {
            // clear cookie for logout
@@ -964,6 +969,26 @@
   }
   /**
    * Encode the username for user in an url.
    *
    * @param name
    * @return the encoded name
    */
   protected String encodeUsername(String name) {
      return name.replace("@", "%40").replace(" ", "%20").replace("\\", "%5C");
   }
   /**
    * Decode a username from an encoded url.
    *
    * @param name
    * @return the decoded name
    */
   protected String decodeUsername(String name) {
      return name.replace("%40", "@").replace("%20", " ").replace("%5C", "\\");
   }
   /**
    * Returns the list of all users available to the login service.
    * 
    * @see IUserService.getAllUsernames()
@@ -996,7 +1021,8 @@
      if (StringUtils.isEmpty(username)) {
         return false;
      }
      return userService.deleteUser(username);
      String usernameDecoded = decodeUsername(username);
      return userService.deleteUser(usernameDecoded);
   }
   /**
@@ -1010,7 +1036,8 @@
      if (StringUtils.isEmpty(username)) {
         return null;
      }
      UserModel user = userService.getUserModel(username);
      String usernameDecoded = decodeUsername(username);
      UserModel user = userService.getUserModel(usernameDecoded);
      return user;
   }
   
@@ -3376,6 +3403,8 @@
      configureFanout();
      configureGitDaemon();
      
      CommitCache.instance().setCacheDays(settings.getInteger(Keys.web.activityCacheDays, 14));
      ContainerUtils.CVE_2007_0450.test();
   }