private static WsConnector buildClient(ServerConfiguration serverConfig) { return HttpConnector.newBuilder().url(serverConfig.getUrl()) .userAgent(serverConfig.getUserAgent()) .credentials(serverConfig.getLogin(), serverConfig.getPassword()) .proxy(serverConfig.getProxy()) .proxyCredentials(serverConfig.getProxyLogin(), serverConfig.getProxyPassword()) .readTimeoutMilliseconds(serverConfig.getReadTimeoutMs()) .connectTimeoutMilliseconds(serverConfig.getConnectTimeoutMs()) .setSSLSocketFactory(serverConfig.getSSLSocketFactory()) .setTrustManager(serverConfig.getTrustManager()) .build(); }
public SonarLintWsClient(ServerConfiguration serverConfig) { this.userAgent = serverConfig.getUserAgent(); this.organizationKey = serverConfig.getOrganizationKey(); client = buildClient(serverConfig); }
@Test public void testServerConfigurationToken() { SonarApplication app = mock(SonarApplication.class); when(app.getVersion()).thenReturn("1.0"); super.register(ApplicationManager.getApplication(), SonarApplication.class, app); SonarQubeServer server = SonarQubeServer.newBuilder() .setHostUrl("http://myhost") .setEnableProxy(false) .setToken("token") .build(); ServerConfiguration config = SonarLintUtils.getServerConfiguration(server); assertThat(config.getLogin()).isEqualTo(server.getToken()); assertThat(config.getPassword()).isNull(); assertThat(config.getConnectTimeoutMs()).isEqualTo(SonarLintUtils.CONNECTION_TIMEOUT_MS); assertThat(config.getReadTimeoutMs()).isEqualTo(SonarLintUtils.READ_TIMEOUT_MS); assertThat(config.getUserAgent()).contains("SonarLint"); assertThat(config.getUrl()).isEqualTo(server.getHostUrl()); assertThat(config.getOrganizationKey()).isNull(); }
private static Builder getConfigBuilderNoCredentials(String url, @Nullable String organization) { Builder builder = ServerConfiguration.builder() .url(url) .organizationKey(organization) .userAgent("SonarLint Eclipse " + SonarLintUtils.getPluginVersion()); IProxyService proxyService = SonarLintCorePlugin.getInstance().getProxyService(); IProxyData[] proxyDataForHost; try { proxyDataForHost = proxyService.select(new URL(url).toURI()); } catch (MalformedURLException | URISyntaxException e) { throw new IllegalStateException("Invalid URL for server: " + url, e); } for (IProxyData data : proxyDataForHost) { if (data.getHost() != null) { builder.proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(data.getHost(), data.getPort()))); if (data.isRequiresAuthentication()) { builder.proxyCredentials(data.getUserId(), data.getPassword()); } break; } } return builder; }
@Test public void testServerConfigurationPassword() { SonarApplication app = mock(SonarApplication.class); when(app.getVersion()).thenReturn("1.0"); super.register(ApplicationManager.getApplication(), SonarApplication.class, app); SonarQubeServer server = SonarQubeServer.newBuilder() .setHostUrl("http://myhost") .setLogin("token") .setPassword("pass") .build(); ServerConfiguration config = SonarLintUtils.getServerConfiguration(server); assertThat(config.getLogin()).isEqualTo(server.getLogin()); assertThat(config.getPassword()).isEqualTo(server.getPassword()); }
@Override public ValidationResult validateConnection(ServerConfiguration serverConfig) { return validateConnection(createClient(serverConfig), serverConfig.getOrganizationKey()); }
private void requestForServer(ServerConfiguration serverConfiguration, List<NotificationConfiguration> configs) { try { Map<String, ZonedDateTime> request = configs.stream() .collect(Collectors.toMap(NotificationConfiguration::projectKey, NotificationTimerTask::getLastNotificationTime, MERGE_TIMES)); NotificationChecker notificationChecker = checkerFactory.create(serverConfiguration); List<SonarQubeNotification> notifications = notificationChecker.request(request); for (SonarQubeNotification n : notifications) { Stream<NotificationConfiguration> matchingConfStream = configs.stream(); if (n.projectKey() != null) { matchingConfStream = matchingConfStream.filter(c -> c.projectKey().equals(n.projectKey())); } matchingConfStream.forEach(c -> { c.listener().handle(n); c.lastNotificationTime().set(n.time()); }); } } catch (Exception e) { LOG.warn("Failed to request SonarQube events to " + serverConfiguration.getUrl(), e); } }
private static ServerConfiguration getServerConfiguration(SonarQubeServer server) { ServerConfiguration.Builder serverConfigBuilder = ServerConfiguration.builder() .url(server.url()) .userAgent("SonarLint CLI " + SystemInfo.getVersion()); String token = server.token(); if (token != null) { serverConfigBuilder.token(token); } else { serverConfigBuilder.credentials(server.login(), server.password()); } return serverConfigBuilder.build(); }
private static ServerConfiguration transformServerConfig(ServerConfig config) { ServerConfiguration.Builder builder = ServerConfiguration.builder() .url(config.getHostUrl()) .userAgent("SonarLint Daemon"); switch (config.getAuthCase()) { case CREDENTIALS: builder.credentials(config.getCredentials().getLogin(), config.getCredentials().getPassword()); break; case TOKEN: builder.token(config.getToken()); break; case AUTH_NOT_SET: default: // do nothing break; } return builder.build(); }
public static ServerConfiguration getServerConfiguration(SonarQubeServer server, int connectTimeout, int readTimeout) { CertificateManager certificateManager = get(CertificateManager.class); SonarApplication sonarlint = get(SonarApplication.class); ServerConfiguration.Builder serverConfigBuilder = ServerConfiguration.builder() .userAgent("SonarLint IntelliJ " + sonarlint.getVersion()) .connectTimeoutMilliseconds(connectTimeout) .readTimeoutMilliseconds(readTimeout) .sslSocketFactory(certificateManager.getSslContext().getSocketFactory()) .trustManager(certificateManager.getCustomTrustManager()) .url(server.getHostUrl()); if (!isBlank(server.getOrganizationKey())) { serverConfigBuilder.organizationKey(server.getOrganizationKey()); } if (!isBlank(server.getToken())) { serverConfigBuilder.token(server.getToken()); } else { serverConfigBuilder.credentials(server.getLogin(), server.getPassword()); } if (server.enableProxy()) { configureProxy(server.getHostUrl(), serverConfigBuilder); } return serverConfigBuilder.build(); }