Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ public static void register(GitLabSCMSource source,
if (credentials != null) {
try {
GitLabApi gitLabApi = new GitLabApi(server.getServerUrl(),
credentials.getToken().getPlainText(), null, getProxyConfig());
credentials.getToken().getPlainText(), null, getProxyConfig(server.getServerUrl()));
createWebHookWhenMissing(gitLabApi, source.getProjectPath(), hookUrl, secretToken);
} catch (GitLabApiException e) {
LOGGER.log(Level.WARNING,
Expand Down Expand Up @@ -133,7 +133,7 @@ public static void createSystemHookWhenMissing(GitLabServer server,
String systemHookUrl = getHookUrl(server, false);
try {
GitLabApi gitLabApi = new GitLabApi(server.getServerUrl(),
credentials.getToken().getPlainText(), null, getProxyConfig());
credentials.getToken().getPlainText(), null, getProxyConfig(server.getServerUrl()));
SystemHook systemHook = gitLabApi.getSystemHooksApi()
.getSystemHookStream()
.filter(hook -> systemHookUrl.equals(hook.getUrl()))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -249,8 +249,9 @@ public void visitSources(@NonNull final SCMSourceObserver observer)
String webHookUrl = null;
if (webHookCredentials != null) {
GitLabServer server = GitLabServers.get().findServer(serverName);
webhookGitLabApi = new GitLabApi(getServerUrl(server),
webHookCredentials.getToken().getPlainText(), null, getProxyConfig());
String serverUrl = getServerUrl(server);
webhookGitLabApi = new GitLabApi(serverUrl,
webHookCredentials.getToken().getPlainText(), null, getProxyConfig(serverUrl));
webHookUrl = GitLabHookCreator.getHookUrl(server, true);
}
for (Project p : projects) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,11 @@
import io.jenkins.plugins.gitlabserverconfig.credentials.PersonalAccessToken;
import io.jenkins.plugins.gitlabserverconfig.servers.GitLabServer;
import io.jenkins.plugins.gitlabserverconfig.servers.GitLabServers;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import jenkins.model.Jenkins;
import org.eclipse.jgit.annotations.NonNull;
import org.gitlab4j.api.GitLabApi;
Expand All @@ -19,18 +23,35 @@ public static GitLabApi apiBuilder(String serverName) {
GitLabServer server = GitLabServers.get().findServer(serverName);
if (server != null) {
PersonalAccessToken credentials = server.getCredentials();
String serverUrl = server.getServerUrl();
if (credentials != null) {
return new GitLabApi(server.getServerUrl(), credentials.getToken().getPlainText(), null, getProxyConfig());
return new GitLabApi(serverUrl, credentials.getToken().getPlainText(), null, getProxyConfig(serverUrl));
}
return new GitLabApi(server.getServerUrl(), GitLabServer.EMPTY_TOKEN, null, getProxyConfig());
return new GitLabApi(serverUrl, GitLabServer.EMPTY_TOKEN, null, getProxyConfig(serverUrl));
}
throw new IllegalStateException(
String.format("No server found with the name: %s", serverName));
}

public static Map<String, Object> getProxyConfig () {
public static Map<String, Object> getProxyConfig (String serverUrl) {
ProxyConfiguration proxyConfiguration = Jenkins.get().getProxy();
if (proxyConfiguration != null) {
final URL url;
try {
url = new URL(serverUrl);
} catch (MalformedURLException e) {
// let it crash somewhere else
return null;
}
if (!"http".equals(url.getProtocol()) && !"https".equals(url.getProtocol())) {
// non-http(s) URL, proxy won't handle it
return null;
}
List<Pattern> nonProxyHostPatterns = proxyConfiguration.getNoProxyHostPatterns();
if (nonProxyHostPatterns.stream().anyMatch(p -> p.matcher(url.getHost()).matches())) {
// target host is excluded by proxy configuration
return null;
}
if (proxyConfiguration.getUserName() != null && proxyConfiguration.getSecretPassword() != null) {
return ProxyClientConfig.createProxyClientConfig(
"http://" + proxyConfiguration.getName() + ":" + proxyConfiguration.getPort(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,7 @@ public static FormValidation doCheckServerUrl(@QueryParameter String serverUrl)
if (GITLAB_SERVER_URL.equals(serverUrl)) {
LOGGER.log(Level.FINEST, String.format("Community version of GitLab: %s", serverUrl));
}
GitLabApi gitLabApi = new GitLabApi(serverUrl, "", null, getProxyConfig());
GitLabApi gitLabApi = new GitLabApi(serverUrl, "", null, getProxyConfig(serverUrl));
try {
gitLabApi.getProjectApi().getProjects(1, 1);
return FormValidation.ok();
Expand Down Expand Up @@ -361,7 +361,7 @@ public FormValidation doTestConnection(@QueryParameter String serverUrl,
privateToken = credentials.getToken().getPlainText();
}
if (privateToken.equals(EMPTY_TOKEN)) {
GitLabApi gitLabApi = new GitLabApi(serverUrl, EMPTY_TOKEN, null, getProxyConfig());
GitLabApi gitLabApi = new GitLabApi(serverUrl, EMPTY_TOKEN, null, getProxyConfig(serverUrl));
try {
/*
In order to validate a GitLab Server without personal access token,
Expand All @@ -379,7 +379,7 @@ public FormValidation doTestConnection(@QueryParameter String serverUrl,
}
} else {

GitLabApi gitLabApi = new GitLabApi(serverUrl, privateToken, null, getProxyConfig());
GitLabApi gitLabApi = new GitLabApi(serverUrl, privateToken, null, getProxyConfig(serverUrl));
try {
User user = gitLabApi.getUserApi().getCurrentUser();
LOGGER.log(Level.FINEST, String
Expand Down