summaryrefslogtreecommitdiffstats
path: root/gerrit-server/src/main/java/com/google/gerrit/server/config/GetServerInfo.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/config/GetServerInfo.java')
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/config/GetServerInfo.java391
1 files changed, 0 insertions, 391 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/config/GetServerInfo.java b/gerrit-server/src/main/java/com/google/gerrit/server/config/GetServerInfo.java
deleted file mode 100644
index 7a1031e966..0000000000
--- a/gerrit-server/src/main/java/com/google/gerrit/server/config/GetServerInfo.java
+++ /dev/null
@@ -1,391 +0,0 @@
-// Copyright (C) 2015 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.gerrit.server.config;
-
-import static java.util.stream.Collectors.toList;
-
-import com.google.common.base.CharMatcher;
-import com.google.common.base.Strings;
-import com.google.common.collect.Lists;
-import com.google.gerrit.common.data.ContributorAgreement;
-import com.google.gerrit.extensions.client.UiType;
-import com.google.gerrit.extensions.common.AccountsInfo;
-import com.google.gerrit.extensions.common.AuthInfo;
-import com.google.gerrit.extensions.common.ChangeConfigInfo;
-import com.google.gerrit.extensions.common.DownloadInfo;
-import com.google.gerrit.extensions.common.DownloadSchemeInfo;
-import com.google.gerrit.extensions.common.GerritInfo;
-import com.google.gerrit.extensions.common.PluginConfigInfo;
-import com.google.gerrit.extensions.common.ReceiveInfo;
-import com.google.gerrit.extensions.common.ServerInfo;
-import com.google.gerrit.extensions.common.SshdInfo;
-import com.google.gerrit.extensions.common.SuggestInfo;
-import com.google.gerrit.extensions.common.UserConfigInfo;
-import com.google.gerrit.extensions.config.CloneCommand;
-import com.google.gerrit.extensions.config.DownloadCommand;
-import com.google.gerrit.extensions.config.DownloadScheme;
-import com.google.gerrit.extensions.registration.DynamicItem;
-import com.google.gerrit.extensions.registration.DynamicMap;
-import com.google.gerrit.extensions.registration.DynamicSet;
-import com.google.gerrit.extensions.restapi.RestReadView;
-import com.google.gerrit.extensions.webui.WebUiPlugin;
-import com.google.gerrit.server.EnableSignedPush;
-import com.google.gerrit.server.account.AccountVisibilityProvider;
-import com.google.gerrit.server.account.Realm;
-import com.google.gerrit.server.avatar.AvatarProvider;
-import com.google.gerrit.server.change.AllowedFormats;
-import com.google.gerrit.server.change.ArchiveFormat;
-import com.google.gerrit.server.change.Submit;
-import com.google.gerrit.server.documentation.QueryDocumentationExecutor;
-import com.google.gerrit.server.index.change.ChangeField;
-import com.google.gerrit.server.index.change.ChangeIndexCollection;
-import com.google.gerrit.server.notedb.NotesMigration;
-import com.google.gerrit.server.project.ProjectCache;
-import com.google.inject.Inject;
-import java.net.MalformedURLException;
-import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Optional;
-import java.util.concurrent.TimeUnit;
-import org.eclipse.jgit.lib.Config;
-
-public class GetServerInfo implements RestReadView<ConfigResource> {
- private static final String URL_ALIAS = "urlAlias";
- private static final String KEY_MATCH = "match";
- private static final String KEY_TOKEN = "token";
-
- private final Config config;
- private final AccountVisibilityProvider accountVisibilityProvider;
- private final AuthConfig authConfig;
- private final Realm realm;
- private final DynamicMap<DownloadScheme> downloadSchemes;
- private final DynamicMap<DownloadCommand> downloadCommands;
- private final DynamicMap<CloneCommand> cloneCommands;
- private final DynamicSet<WebUiPlugin> plugins;
- private final AllowedFormats archiveFormats;
- private final AllProjectsName allProjectsName;
- private final AllUsersName allUsersName;
- private final String anonymousCowardName;
- private final DynamicItem<AvatarProvider> avatar;
- private final boolean enableSignedPush;
- private final QueryDocumentationExecutor docSearcher;
- private final NotesMigration migration;
- private final ProjectCache projectCache;
- private final AgreementJson agreementJson;
- private final GerritOptions gerritOptions;
- private final ChangeIndexCollection indexes;
- private final SitePaths sitePaths;
-
- @Inject
- public GetServerInfo(
- @GerritServerConfig Config config,
- AccountVisibilityProvider accountVisibilityProvider,
- AuthConfig authConfig,
- Realm realm,
- DynamicMap<DownloadScheme> downloadSchemes,
- DynamicMap<DownloadCommand> downloadCommands,
- DynamicMap<CloneCommand> cloneCommands,
- DynamicSet<WebUiPlugin> webUiPlugins,
- AllowedFormats archiveFormats,
- AllProjectsName allProjectsName,
- AllUsersName allUsersName,
- @AnonymousCowardName String anonymousCowardName,
- DynamicItem<AvatarProvider> avatar,
- @EnableSignedPush boolean enableSignedPush,
- QueryDocumentationExecutor docSearcher,
- NotesMigration migration,
- ProjectCache projectCache,
- AgreementJson agreementJson,
- GerritOptions gerritOptions,
- ChangeIndexCollection indexes,
- SitePaths sitePaths) {
- this.config = config;
- this.accountVisibilityProvider = accountVisibilityProvider;
- this.authConfig = authConfig;
- this.realm = realm;
- this.downloadSchemes = downloadSchemes;
- this.downloadCommands = downloadCommands;
- this.cloneCommands = cloneCommands;
- this.plugins = webUiPlugins;
- this.archiveFormats = archiveFormats;
- this.allProjectsName = allProjectsName;
- this.allUsersName = allUsersName;
- this.anonymousCowardName = anonymousCowardName;
- this.avatar = avatar;
- this.enableSignedPush = enableSignedPush;
- this.docSearcher = docSearcher;
- this.migration = migration;
- this.projectCache = projectCache;
- this.agreementJson = agreementJson;
- this.gerritOptions = gerritOptions;
- this.indexes = indexes;
- this.sitePaths = sitePaths;
- }
-
- @Override
- public ServerInfo apply(ConfigResource rsrc) throws MalformedURLException {
- ServerInfo info = new ServerInfo();
- info.accounts = getAccountsInfo(accountVisibilityProvider);
- info.auth = getAuthInfo(authConfig, realm);
- info.change = getChangeInfo(config);
- info.download =
- getDownloadInfo(downloadSchemes, downloadCommands, cloneCommands, archiveFormats);
- info.gerrit = getGerritInfo(config, allProjectsName, allUsersName);
- info.noteDbEnabled = toBoolean(isNoteDbEnabled());
- info.plugin = getPluginInfo();
- if (Files.exists(sitePaths.site_theme)) {
- info.defaultTheme = "/static/" + SitePaths.THEME_FILENAME;
- }
- info.sshd = getSshdInfo(config);
- info.suggest = getSuggestInfo(config);
-
- Map<String, String> urlAliases = getUrlAliasesInfo(config);
- info.urlAliases = !urlAliases.isEmpty() ? urlAliases : null;
-
- info.user = getUserInfo(anonymousCowardName);
- info.receive = getReceiveInfo();
- return info;
- }
-
- private AccountsInfo getAccountsInfo(AccountVisibilityProvider accountVisibilityProvider) {
- AccountsInfo info = new AccountsInfo();
- info.visibility = accountVisibilityProvider.get();
- return info;
- }
-
- private AuthInfo getAuthInfo(AuthConfig cfg, Realm realm) {
- AuthInfo info = new AuthInfo();
- info.authType = cfg.getAuthType();
- info.useContributorAgreements = toBoolean(cfg.isUseContributorAgreements());
- info.editableAccountFields = new ArrayList<>(realm.getEditableFields());
- info.switchAccountUrl = cfg.getSwitchAccountUrl();
- info.gitBasicAuthPolicy = cfg.getGitBasicAuthPolicy();
-
- if (info.useContributorAgreements != null) {
- Collection<ContributorAgreement> agreements =
- projectCache.getAllProjects().getConfig().getContributorAgreements();
- if (!agreements.isEmpty()) {
- info.contributorAgreements = Lists.newArrayListWithCapacity(agreements.size());
- for (ContributorAgreement agreement : agreements) {
- info.contributorAgreements.add(agreementJson.format(agreement));
- }
- }
- }
-
- switch (info.authType) {
- case LDAP:
- case LDAP_BIND:
- info.registerUrl = cfg.getRegisterUrl();
- info.registerText = cfg.getRegisterText();
- info.editFullNameUrl = cfg.getEditFullNameUrl();
- break;
-
- case CUSTOM_EXTENSION:
- info.registerUrl = cfg.getRegisterUrl();
- info.registerText = cfg.getRegisterText();
- info.editFullNameUrl = cfg.getEditFullNameUrl();
- info.httpPasswordUrl = cfg.getHttpPasswordUrl();
- break;
-
- case HTTP:
- case HTTP_LDAP:
- info.loginUrl = cfg.getLoginUrl();
- info.loginText = cfg.getLoginText();
- break;
-
- case CLIENT_SSL_CERT_LDAP:
- case DEVELOPMENT_BECOME_ANY_ACCOUNT:
- case OAUTH:
- case OPENID:
- case OPENID_SSO:
- break;
- }
- return info;
- }
-
- private ChangeConfigInfo getChangeInfo(Config cfg) {
- ChangeConfigInfo info = new ChangeConfigInfo();
- info.allowBlame = toBoolean(cfg.getBoolean("change", "allowBlame", true));
- boolean hasAssigneeInIndex =
- indexes.getSearchIndex().getSchema().hasField(ChangeField.ASSIGNEE);
- info.showAssigneeInChangesTable =
- toBoolean(
- cfg.getBoolean("change", "showAssigneeInChangesTable", false) && hasAssigneeInIndex);
- info.largeChange = cfg.getInt("change", "largeChange", 500);
- info.replyTooltip =
- Optional.ofNullable(cfg.getString("change", null, "replyTooltip")).orElse("Reply and score")
- + " (Shortcut: a)";
- info.replyLabel =
- Optional.ofNullable(cfg.getString("change", null, "replyLabel")).orElse("Reply") + "\u2026";
- info.updateDelay =
- (int) ConfigUtil.getTimeUnit(cfg, "change", null, "updateDelay", 300, TimeUnit.SECONDS);
- info.submitWholeTopic = Submit.wholeTopicEnabled(cfg);
- info.disablePrivateChanges =
- toBoolean(config.getBoolean("change", null, "disablePrivateChanges", false));
- return info;
- }
-
- private DownloadInfo getDownloadInfo(
- DynamicMap<DownloadScheme> downloadSchemes,
- DynamicMap<DownloadCommand> downloadCommands,
- DynamicMap<CloneCommand> cloneCommands,
- AllowedFormats archiveFormats) {
- DownloadInfo info = new DownloadInfo();
- info.schemes = new HashMap<>();
- for (DynamicMap.Entry<DownloadScheme> e : downloadSchemes) {
- DownloadScheme scheme = e.getProvider().get();
- if (scheme.isEnabled() && scheme.getUrl("${project}") != null) {
- info.schemes.put(
- e.getExportName(), getDownloadSchemeInfo(scheme, downloadCommands, cloneCommands));
- }
- }
- info.archives =
- archiveFormats.getAllowed().stream().map(ArchiveFormat::getShortName).collect(toList());
- return info;
- }
-
- private DownloadSchemeInfo getDownloadSchemeInfo(
- DownloadScheme scheme,
- DynamicMap<DownloadCommand> downloadCommands,
- DynamicMap<CloneCommand> cloneCommands) {
- DownloadSchemeInfo info = new DownloadSchemeInfo();
- info.url = scheme.getUrl("${project}");
- info.isAuthRequired = toBoolean(scheme.isAuthRequired());
- info.isAuthSupported = toBoolean(scheme.isAuthSupported());
-
- info.commands = new HashMap<>();
- for (DynamicMap.Entry<DownloadCommand> e : downloadCommands) {
- String commandName = e.getExportName();
- DownloadCommand command = e.getProvider().get();
- String c = command.getCommand(scheme, "${project}", "${ref}");
- if (c != null) {
- info.commands.put(commandName, c);
- }
- }
-
- info.cloneCommands = new HashMap<>();
- for (DynamicMap.Entry<CloneCommand> e : cloneCommands) {
- String commandName = e.getExportName();
- CloneCommand command = e.getProvider().get();
- String c = command.getCommand(scheme, "${project-path}/${project-base-name}");
- if (c != null) {
- c = c.replaceAll("\\$\\{project-path\\}/\\$\\{project-base-name\\}", "\\$\\{project\\}");
- info.cloneCommands.put(commandName, c);
- }
- }
-
- return info;
- }
-
- private GerritInfo getGerritInfo(
- Config cfg, AllProjectsName allProjectsName, AllUsersName allUsersName) {
- GerritInfo info = new GerritInfo();
- info.allProjects = allProjectsName.get();
- info.allUsers = allUsersName.get();
- info.reportBugUrl = cfg.getString("gerrit", null, "reportBugUrl");
- info.reportBugText = cfg.getString("gerrit", null, "reportBugText");
- info.docUrl = getDocUrl(cfg);
- info.docSearch = docSearcher.isAvailable();
- info.editGpgKeys =
- toBoolean(enableSignedPush && cfg.getBoolean("gerrit", null, "editGpgKeys", true));
- info.webUis = EnumSet.noneOf(UiType.class);
- if (gerritOptions.enableGwtUi()) {
- info.webUis.add(UiType.GWT);
- }
- if (gerritOptions.enablePolyGerrit()) {
- info.webUis.add(UiType.POLYGERRIT);
- }
- return info;
- }
-
- private String getDocUrl(Config cfg) {
- String docUrl = cfg.getString("gerrit", null, "docUrl");
- if (Strings.isNullOrEmpty(docUrl)) {
- return null;
- }
- return CharMatcher.is('/').trimTrailingFrom(docUrl) + '/';
- }
-
- private boolean isNoteDbEnabled() {
- return migration.readChanges();
- }
-
- private PluginConfigInfo getPluginInfo() {
- PluginConfigInfo info = new PluginConfigInfo();
- info.hasAvatars = toBoolean(avatar.get() != null);
- info.jsResourcePaths = new ArrayList<>();
- info.htmlResourcePaths = new ArrayList<>();
- for (WebUiPlugin u : plugins) {
- String path =
- String.format("plugins/%s/%s", u.getPluginName(), u.getJavaScriptResourcePath());
- if (path.endsWith(".html")) {
- info.htmlResourcePaths.add(path);
- } else {
- info.jsResourcePaths.add(path);
- }
- }
- return info;
- }
-
- private Map<String, String> getUrlAliasesInfo(Config cfg) {
- Map<String, String> urlAliases = new HashMap<>();
- for (String subsection : cfg.getSubsections(URL_ALIAS)) {
- urlAliases.put(
- cfg.getString(URL_ALIAS, subsection, KEY_MATCH),
- cfg.getString(URL_ALIAS, subsection, KEY_TOKEN));
- }
- return urlAliases;
- }
-
- private SshdInfo getSshdInfo(Config cfg) {
- String[] addr = cfg.getStringList("sshd", null, "listenAddress");
- if (addr.length == 1 && isOff(addr[0])) {
- return null;
- }
- return new SshdInfo();
- }
-
- private static boolean isOff(String listenHostname) {
- return "off".equalsIgnoreCase(listenHostname)
- || "none".equalsIgnoreCase(listenHostname)
- || "no".equalsIgnoreCase(listenHostname);
- }
-
- private SuggestInfo getSuggestInfo(Config cfg) {
- SuggestInfo info = new SuggestInfo();
- info.from = cfg.getInt("suggest", "from", 0);
- return info;
- }
-
- private UserConfigInfo getUserInfo(String anonymousCowardName) {
- UserConfigInfo info = new UserConfigInfo();
- info.anonymousCowardName = anonymousCowardName;
- return info;
- }
-
- private ReceiveInfo getReceiveInfo() {
- ReceiveInfo info = new ReceiveInfo();
- info.enableSignedPush = enableSignedPush;
- return info;
- }
-
- private static Boolean toBoolean(boolean v) {
- return v ? v : null;
- }
-}