Added SSL Validation Override and CA Selection

- Added fields to login page to a) disable ssl validation or b) select
  a custom Certificate Authority certificate to use with the server.

- Changed visibility of widgets on login page from INVISIBLE to GONE so
  they don't take up space while hidden (since this was causing weird
  spacing issues with the new fields).

- Added state to settings to store ssl validation choice or certificate
  data.

- Added fields to various HTTP methods to disable ssl validation or set
  valid certificate authority if either setting is enabled.
This commit is contained in:
Galen Abell
2018-11-07 17:28:25 -05:00
parent 97ab5a6871
commit 2d14ef1b6f
10 changed files with 362 additions and 45 deletions

View File

@@ -1,6 +1,7 @@
package com.github.gotify.api;
import com.github.gotify.Settings;
import com.github.gotify.Utils;
import com.github.gotify.client.ApiClient;
import com.github.gotify.client.api.UserApi;
import com.github.gotify.client.api.VersionApi;
@@ -8,14 +9,16 @@ import com.github.gotify.client.auth.ApiKeyAuth;
import com.github.gotify.client.auth.HttpBasicAuth;
public class ClientFactory {
public static ApiClient unauthorized(String baseUrl) {
public static ApiClient unauthorized(String baseUrl, boolean validateSSL, String cert) {
ApiClient client = new ApiClient();
client.setVerifyingSsl(validateSSL);
client.setSslCaCert(Utils.stringToInputStream(cert));
client.setBasePath(baseUrl);
return client;
}
public static ApiClient basicAuth(String baseUrl, String username, String password) {
ApiClient client = unauthorized(baseUrl);
public static ApiClient basicAuth(String baseUrl, boolean validateSSL, String cert, String username, String password) {
ApiClient client = unauthorized(baseUrl, validateSSL, cert);
HttpBasicAuth auth = (HttpBasicAuth) client.getAuthentication("basicAuth");
auth.setUsername(username);
auth.setPassword(password);
@@ -23,18 +26,18 @@ public class ClientFactory {
return client;
}
public static ApiClient clientToken(String baseUrl, String token) {
ApiClient client = unauthorized(baseUrl);
public static ApiClient clientToken(String baseUrl, boolean validateSSL, String cert, String token) {
ApiClient client = unauthorized(baseUrl, validateSSL, cert);
ApiKeyAuth tokenAuth = (ApiKeyAuth) client.getAuthentication("clientTokenHeader");
tokenAuth.setApiKey(token);
return client;
}
public static VersionApi versionApi(String baseUrl) {
return new VersionApi(unauthorized(baseUrl));
public static VersionApi versionApi(String baseUrl, boolean validateSSL, String cert) {
return new VersionApi(unauthorized(baseUrl, validateSSL, cert));
}
public static UserApi userApiWithToken(Settings settings) {
return new UserApi(clientToken(settings.url(), settings.token()));
return new UserApi(clientToken(settings.url(), settings.validateSSL(), settings.cert(), settings.token()));
}
}