| | |
| | | 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;
|
| | |
| | | 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");
|
| | | }
|
| | |
| | | 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);
|
| | |
| | | }
|
| | |
|
| | | public static boolean canFederate() {
|
| | | String uuid = getString(Keys.federation.uuid, "");
|
| | | return !StringUtils.isEmpty(uuid);
|
| | | String passphrase = getString(Keys.federation.passphrase, "");
|
| | | return !StringUtils.isEmpty(passphrase);
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | * 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)));
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | 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) {
|
| | |
| | | } 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);
|
| | |
| | | */
|
| | | 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;
|
| | | }
|
| | |
| | | * @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);
|
| | | }
|
| | |
|
| | | /**
|