RemoteStoreConfig.java
- /*
- * GovWay - A customizable API Gateway
- * https://govway.org
- *
- * Copyright (c) 2005-2025 Link.it srl (https://link.it).
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3, as published by
- * the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- package org.openspcoop2.utils.certificate.remote;
- import java.util.ArrayList;
- import org.openspcoop2.utils.UtilsException;
- import org.openspcoop2.utils.certificate.KeyUtils;
- import org.openspcoop2.utils.transport.http.ExternalResourceConfig;
- /**
- * RemoteStoreConfig
- *
- * @author Poli Andrea (apoli@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class RemoteStoreConfig extends ExternalResourceConfig {
- private String storeName;
- private String storeLabel;
-
- private String tokenPolicy;
-
- private String baseUrl;
-
- private boolean multitenant;
- private String baseUrlMultitenantDefaultString;
- private String baseUrlMultitenantPlaceholder;
- private String baseUrlMultitenantTenantString;
-
- private RemoteKeyIdMode idMode;
- private String parameterName; // in caso di query o parameter
- private String keyAlgorithm = KeyUtils.ALGO_RSA;
-
- public RemoteStoreConfig(String storeName) {
- super();
- this.storeName = storeName;
- this.storeLabel = storeName; // inizialmente uguale
- }
-
- public RemoteStoreConfig newInstanceMultitenant(String tenant) throws UtilsException {
-
- if(!this.multitenant) {
- throw new UtilsException("Multi-tenant disabled");
- }
-
- RemoteStoreConfig cloned = new RemoteStoreConfig(this.storeName+"");
- cloned.storeLabel = this.storeLabel!=null ? (this.storeLabel+"") : this.storeName;
-
- cloned.tokenPolicy = this.tokenPolicy!=null ? (this.tokenPolicy+"") : null;
-
- cloned.baseUrl = this.baseUrl!=null ? (this.baseUrl+"") : null;
- if(cloned.baseUrl!=null && this.baseUrlMultitenantDefaultString!=null && this.baseUrlMultitenantPlaceholder!=null && this.baseUrlMultitenantTenantString!=null) {
-
- String newString = this.baseUrlMultitenantTenantString.replace(this.baseUrlMultitenantPlaceholder, tenant);
- cloned.baseUrl = cloned.baseUrl.replace(this.baseUrlMultitenantDefaultString, newString);
-
- }
- else {
- cloned.baseUrl = RemoteStoreConfigMultiTenantUtils.getMultitenant(this.multiTenantBaseUrl, tenant, cloned.baseUrl);
- }
-
- cloned.idMode = this.idMode;
- cloned.parameterName = this.parameterName!=null ? (this.parameterName+"") : null;
- cloned.keyAlgorithm = this.keyAlgorithm!=null ? (this.keyAlgorithm+"") : KeyUtils.ALGO_RSA;
-
- // riporto dati ExternalResourceConfig
- this.newInstanceMultitenant(cloned, tenant);
-
- return cloned;
- }
-
- private void newInstanceMultitenant(RemoteStoreConfig cloned, String tenant) {
-
- cloned.readTimeout = this.readTimeout;
- cloned.connectTimeout = this.connectTimeout;
-
- if(this.returnCode!=null) {
- cloned.returnCode = new ArrayList<>();
- for (Integer intValue : this.returnCode) {
- if(intValue!=null) {
- cloned.returnCode.add(intValue);
- }
- }
- }
-
- cloned.basicUsername = this.basicUsername!=null ? (this.basicUsername+"") : null;
- cloned.basicPassword = this.basicPassword!=null ? (this.basicPassword+"") : null;
-
- cloned.hostnameVerifier = this.hostnameVerifier;
-
- cloned.trustAllCerts = this.trustAllCerts;
-
- cloned.trustStore = this.trustStore;
-
- cloned.crlStore = this.crlStore;
-
- cloned.keyStore = this.keyStore;
- cloned.keyAlias = this.keyAlias!=null ? (this.keyAlias+"") : null;
- cloned.keyPassword = this.keyPassword!=null ? (this.keyPassword+"") : null;
-
- cloned.forwardProxyUrl = this.forwardProxyUrl!=null ? (this.forwardProxyUrl+"") : null;
- cloned.forwardProxyHeader = this.forwardProxyHeader!=null ? (this.forwardProxyHeader+"") : null;
- cloned.forwardProxyQueryParameter = this.forwardProxyQueryParameter!=null ? (this.forwardProxyQueryParameter+"") : null;
- cloned.forwardProxyBase64 = this.forwardProxyBase64;
-
- cloned.headers = RemoteStoreConfigMultiTenantUtils.newMapInstance(this.headers);
- cloned.queryParameters = RemoteStoreConfigMultiTenantUtils.newMapInstance(this.queryParameters);
-
- /**cloned.multiTenantBasicUsername = RemoteStoreConfigMultiTenantUtils.newMapInstance(this.multiTenantBasicUsername);
- cloned.multiTenantBasicPassword = RemoteStoreConfigMultiTenantUtils.newMapInstance(this.multiTenantBasicPassword);
-
- cloned.multiTenantHeaders = RemoteStoreConfigMultiTenantUtils.newMultiMapInstance(this.multiTenantHeaders);
- cloned.multiTenantQueryParameters = RemoteStoreConfigMultiTenantUtils.newMultiMapInstance(this.multiTenantQueryParameters);*/
-
- // Devo sovrascrivere
- cloned.basicUsername = RemoteStoreConfigMultiTenantUtils.getMultitenant(this.multiTenantBasicUsername, tenant, cloned.basicUsername);
- cloned.basicPassword = RemoteStoreConfigMultiTenantUtils.getMultitenant(this.multiTenantBasicPassword, tenant, cloned.basicPassword);
- cloned.headers = RemoteStoreConfigMultiTenantUtils.getMultitenant(this.multiTenantHeaders, tenant, cloned.headers);
- cloned.queryParameters = RemoteStoreConfigMultiTenantUtils.getMultitenant(this.multiTenantQueryParameters, tenant, cloned.queryParameters);
-
- // imposto comunque l'indicazione che si tratta di un multitenant
- cloned.multitenant=true;
- }
-
- public String getStoreName() {
- return this.storeName;
- }
-
- public String getStoreLabel() {
- return this.storeLabel;
- }
- public void setStoreLabel(String storeLabel) {
- this.storeLabel = storeLabel;
- }
-
- public String getTokenPolicy() {
- return this.tokenPolicy;
- }
- public void setTokenPolicy(String tokenPolicy) {
- this.tokenPolicy = tokenPolicy;
- }
-
- public String getKeyAlgorithm() {
- return this.keyAlgorithm;
- }
- public void setKeyAlgorithm(String keyAlgorithm) {
- this.keyAlgorithm = keyAlgorithm;
- }
- public String getBaseUrl() {
- return this.baseUrl;
- }
- public void setBaseUrl(String baseUrl) {
- this.baseUrl = baseUrl;
- }
- public RemoteKeyIdMode getIdMode() {
- return this.idMode;
- }
- public void setIdMode(RemoteKeyIdMode idMode) {
- this.idMode = idMode;
- }
- public String getParameterName() {
- return this.parameterName;
- }
- public void setParameterName(String parameterName) {
- this.parameterName = parameterName;
- }
-
- public boolean isMultitenant() {
- return this.multitenant;
- }
- public void setMultitenant(boolean multitenant) {
- this.multitenant = multitenant;
- }
-
- public String getBaseUrlMultitenantDefaultString() {
- return this.baseUrlMultitenantDefaultString;
- }
- public void setBaseUrlMultitenantDefaultString(String baseUrlMultitenantDefaultString) {
- this.baseUrlMultitenantDefaultString = baseUrlMultitenantDefaultString;
- }
- public String getBaseUrlMultitenantPlaceholder() {
- return this.baseUrlMultitenantPlaceholder;
- }
- public void setBaseUrlMultitenantPlaceholder(String baseUrlMultitenantPlaceholder) {
- this.baseUrlMultitenantPlaceholder = baseUrlMultitenantPlaceholder;
- }
- public String getBaseUrlMultitenantTenantString() {
- return this.baseUrlMultitenantTenantString;
- }
- public void setBaseUrlMultitenantTenantString(String baseUrlMultitenantTenantString) {
- this.baseUrlMultitenantTenantString = baseUrlMultitenantTenantString;
- }
- }