James Moger
2011-09-14 8f73a7cc630bb61d088c7cdad30a6708870184ee
src/com/gitblit/GitBlit.java
@@ -21,6 +21,7 @@
import java.lang.reflect.Field;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -521,6 +522,8 @@
         model.showReadme = getConfig(config, "showReadme", false);
         model.federationStrategy = FederationStrategy.fromName(getConfig(config,
               "federationStrategy", null));
         model.federationSets = new ArrayList<String>(Arrays.asList(config.getStringList(
               "gitblit", null, "federationSets")));
         model.isFederated = getConfig(config, "isFederated", false);
         model.origin = config.getString("remote", "origin", "url");
      }
@@ -697,6 +700,7 @@
      config.setBoolean("gitblit", null, "showRemoteBranches", repository.showRemoteBranches);
      config.setBoolean("gitblit", null, "isFrozen", repository.isFrozen);
      config.setBoolean("gitblit", null, "showReadme", repository.showReadme);
      config.setStringList("gitblit", null, "federationSets", repository.federationSets);
      config.setString("gitblit", null, "federationStrategy",
            repository.federationStrategy.name());
      config.setBoolean("gitblit", null, "isFederated", repository.isFederated);
@@ -794,8 +798,8 @@
   }
   public static boolean canFederate() {
      String uuid = getString(Keys.federation.uuid, "");
      return !StringUtils.isEmpty(uuid);
      String passphrase = getString(Keys.federation.passphrase, "");
      return !StringUtils.isEmpty(passphrase);
   }
   /**
@@ -803,16 +807,23 @@
    * instances.
    */
   private void configureFederation() {
      boolean validUuid = true;
      String uuid = settings.getString(Keys.federation.uuid, "");
      if (StringUtils.isEmpty(uuid)) {
         logger.warn("Federation UUID is blank! This server can not be PULLED from.");
         validUuid = false;
      boolean validPassphrase = true;
      String passphrase = settings.getString(Keys.federation.passphrase, "");
      if (StringUtils.isEmpty(passphrase)) {
         logger.warn("Federation passphrase is blank! This server can not be PULLED from.");
         validPassphrase = false;
      }
      if (validUuid) {
      if (validPassphrase) {
         // standard tokens
         for (FederationToken tokenType : FederationToken.values()) {
            logger.info(MessageFormat.format("Federation {0} token = {1}", tokenType.name(),
                  getFederationToken(tokenType)));
         }
         // federation set tokens
         for (String set : settings.getStrings(Keys.federation.sets)) {
            logger.info(MessageFormat.format("Federation Set {0} token = {1}", set,
                  getFederationToken(set)));
         }
      }
@@ -834,10 +845,11 @@
      if (federationRegistrations.isEmpty()) {
         List<String> keys = settings.getAllKeys(Keys.federation._ROOT);
         keys.remove(Keys.federation.name);
         keys.remove(Keys.federation.uuid);
         keys.remove(Keys.federation.passphrase);
         keys.remove(Keys.federation.allowProposals);
         keys.remove(Keys.federation.proposalsFolder);
         keys.remove(Keys.federation.defaultFrequency);
         keys.remove(Keys.federation.sets);
         Collections.sort(keys);
         Map<String, FederationModel> federatedModels = new HashMap<String, FederationModel>();
         for (String key : keys) {
@@ -860,6 +872,9 @@
            } else if (setting.equals("folder")) {
               // destination folder of the pull operation
               federatedModels.get(server).folder = settings.getString(key, "");
            } else if (setting.equals("freeze")) {
               // set the repository to read-only after pull
               federatedModels.get(server).freeze = settings.getBoolean(key, true);
            } else if (setting.equals("mergeAccounts")) {
               // merge remote accounts into local accounts
               federatedModels.get(server).mergeAccounts = settings.getBoolean(key, false);
@@ -933,8 +948,13 @@
    */
   public List<String> getFederationTokens() {
      List<String> tokens = new ArrayList<String>();
      // generate standard tokens
      for (FederationToken type : FederationToken.values()) {
         tokens.add(getFederationToken(type));
      }
      // generate tokens for federation sets
      for (String set : settings.getStrings(Keys.federation.sets)) {
         tokens.add(getFederationToken(set));
      }
      return tokens;
   }
@@ -946,8 +966,18 @@
    * @return a federation token
    */
   public String getFederationToken(FederationToken type) {
      String uuid = settings.getString(Keys.federation.uuid, "");
      return StringUtils.getSHA1(uuid + "-" + type.name());
      return getFederationToken(type.name());
   }
   /**
    * Returns the specified federation token for this Gitblit instance.
    *
    * @param value
    * @return a federation token
    */
   public String getFederationToken(String value) {
      String passphrase = settings.getString(Keys.federation.passphrase, "");
      return StringUtils.getSHA1(passphrase + "-" + value);
   }
   /**