ConnettoreHTTPUrlHttpsKeystoreRepository.java

  1. /*
  2.  * GovWay - A customizable API Gateway
  3.  * https://govway.org
  4.  *
  5.  * Copyright (c) 2005-2025 Link.it srl (https://link.it).
  6.  *
  7.  * This program is free software: you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License version 3, as published by
  9.  * the Free Software Foundation.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18.  *
  19.  */

  20. package org.openspcoop2.pdd.core.connettori;

  21. import java.io.File;
  22. import java.util.List;
  23. import java.util.Map;

  24. import org.openspcoop2.core.config.Proprieta;
  25. import org.openspcoop2.pdd.config.CostantiProprieta;
  26. import org.openspcoop2.pdd.config.OpenSPCoop2Properties;
  27. import org.openspcoop2.pdd.core.PdDContext;
  28. import org.openspcoop2.pdd.core.dynamic.DynamicUtils;
  29. import org.openspcoop2.pdd.mdb.ConsegnaContenutiApplicativi;
  30. import org.openspcoop2.protocol.sdk.Busta;
  31. import org.openspcoop2.protocol.sdk.state.RequestInfo;
  32. import org.openspcoop2.security.keystore.SSLConfigProps;
  33. import org.openspcoop2.security.keystore.cache.GestoreKeystoreCache;
  34. import org.openspcoop2.utils.transport.http.SSLConfig;

  35. /**    
  36.  * ConnettoreHTTP_urlHttps_keystoreRepository
  37.  *
  38.  * @author Poli Andrea (poli@link.it)
  39.  * @author $Author$
  40.  * @version $Rev$, $Date$
  41.  */
  42. public class ConnettoreHTTPUrlHttpsKeystoreRepository {

  43.     protected static boolean isEnabled(String idModulo, List<Proprieta> proprietaPorta) {
  44.         boolean urlHttpsOverrideJvmConfiguration = false;
  45.         if(ConsegnaContenutiApplicativi.ID_MODULO.equals(idModulo)){
  46.             urlHttpsOverrideJvmConfiguration = OpenSPCoop2Properties.getInstance().isConnettoreHttp_urlHttps_overrideDefaultConfiguration_consegnaContenutiApplicativi();
  47.         }
  48.         else{
  49.             // InoltroBuste e InoltroRisposte
  50.             urlHttpsOverrideJvmConfiguration = OpenSPCoop2Properties.getInstance().isConnettoreHttp_urlHttps_overrideDefaultConfiguration_inoltroBuste();
  51.         }
  52.        
  53.         if(proprietaPorta!=null && !proprietaPorta.isEmpty()) {
  54.             urlHttpsOverrideJvmConfiguration = CostantiProprieta.isConnettoriHttpsEndpointJvmConfigOverrideEnabled(proprietaPorta, urlHttpsOverrideJvmConfiguration);
  55.         }
  56.        
  57.         return urlHttpsOverrideJvmConfiguration;
  58.     }
  59.    
  60.     private boolean debug;
  61.     private ConnettoreLogger logger;
  62.     private boolean fruizioni;
  63.     private OpenSPCoop2Properties op2Properties;
  64.    
  65.     private File config;
  66.    
  67.     public ConnettoreHTTPUrlHttpsKeystoreRepository(boolean debug, ConnettoreLogger logger, String idModulo) throws ConnettoreException {
  68.        
  69.         try {
  70.        
  71.             this.debug = debug;
  72.             this.logger = logger;
  73.             this.fruizioni = !ConsegnaContenutiApplicativi.ID_MODULO.equals(idModulo);
  74.             this.op2Properties = OpenSPCoop2Properties.getInstance();
  75.                        
  76.         }catch(Exception e) {
  77.             throw new ConnettoreException(e.getMessage(),e);
  78.         }
  79.        
  80.     }
  81.    
  82.     public void init(List<Proprieta> proprietaPorta, Busta busta,
  83.             Map<String, Object> dynamicMap, PdDContext pddContext) throws ConnettoreException {
  84.        
  85.         try {
  86.        
  87.             // Repository https
  88.             File repoDefault = this.fruizioni ? this.op2Properties.getConnettoreHttp_urlHttps_repository_inoltroBuste() :
  89.                 this.op2Properties.getConnettoreHttp_urlHttps_repository_consegnaContenutiApplicativi();
  90.             String repositoryHttps = CostantiProprieta.getConnettoriHttpsEndpointJvmConfigOverrideRepository(proprietaPorta,
  91.                     repoDefault!=null ? repoDefault.getAbsolutePath() : null);
  92.             if(repositoryHttps!=null) {
  93.                 repositoryHttps = convertDynamicPropertyValue("repository", repositoryHttps, dynamicMap, pddContext);
  94.             }
  95.             if(repositoryHttps==null) {
  96.                 throw new ConnettoreException("Repository undefined");
  97.             }
  98.             File repo = new File(repositoryHttps);
  99.            
  100.             // ConfigFile
  101.             String configFileDefault = buildDefaultConfigFile(this.debug, this.logger, busta, this.fruizioni);
  102.             String configFile = CostantiProprieta.getConnettoriHttpsEndpointJvmConfigOverrideConfig(proprietaPorta, configFileDefault);
  103.             if(configFile!=null) {
  104.                 configFile = convertDynamicPropertyValue("configFile", configFile, dynamicMap, pddContext);
  105.             }
  106.             if(configFile==null) {
  107.                 throw new ConnettoreException("Configuration file undefined");
  108.             }
  109.             this.config = new File(repo, configFile);
  110.            
  111.         }catch(Exception e) {
  112.             throw new ConnettoreException(e.getMessage(),e);
  113.         }
  114.        
  115.     }
  116.    
  117.     private static String convertDynamicPropertyValue(String oggettoDebug, String valore, Map<String, Object> dynamicMap, PdDContext pddContext) throws ConnettoreException {
  118.         try {
  119.             return DynamicUtils.convertDynamicPropertyValue(oggettoDebug, valore, dynamicMap, pddContext, false);
  120.         }catch(Exception e){
  121.             throw new ConnettoreException("Errore durante la lettura della proprietà '"+oggettoDebug+"' per l'overriding della configurazione jvm (dynamic): "+e.getMessage(),e);
  122.         }
  123.     }
  124.    
  125.     private static String buildDefaultConfigFile(boolean debug, ConnettoreLogger logger, Busta busta, boolean fruizioni) {
  126.         if(busta==null){
  127.             if(debug){
  128.                 logger.debug("Dati busta non presenti");
  129.             }
  130.             return null;
  131.         }
  132.         String tipoNomeSoggetto = null;
  133.         if(fruizioni) {
  134.             tipoNomeSoggetto = buildDefaultConfigFileFruizioni(debug, logger, busta);
  135.         }
  136.         else {
  137.             tipoNomeSoggetto = buildDefaultConfigFileErogazioni(debug, logger, busta);
  138.         }
  139.         return tipoNomeSoggetto;
  140.     }
  141.     private static String buildDefaultConfigFileFruizioni(boolean debug, ConnettoreLogger logger, Busta busta) {
  142.         if(busta.getTipoMittente()==null){
  143.             if(debug){
  144.                 logger.debug("Dati busta tipo-mittente non presente");
  145.             }
  146.             return null;
  147.         }
  148.         if(busta.getMittente()==null){
  149.             if(debug){
  150.                 logger.debug("Dati busta nome-mittente non presente");
  151.             }
  152.             return null;
  153.         }
  154.         return busta.getTipoMittente()+busta.getMittente()+".properties";
  155.     }
  156.     private static String buildDefaultConfigFileErogazioni(boolean debug, ConnettoreLogger logger, Busta busta) {
  157.         if(busta.getTipoDestinatario()==null){
  158.             if(debug){
  159.                 logger.debug("Dati busta tipo-destinatario non presente");
  160.             }
  161.             return null;
  162.         }
  163.         if(busta.getDestinatario()==null){
  164.             if(debug){
  165.                 logger.debug("Dati busta nome-destinatario non presente");
  166.             }
  167.             return null;
  168.         }
  169.         return busta.getTipoDestinatario()+busta.getDestinatario()+".properties";
  170.     }
  171.    
  172.    
  173.    
  174.     public SSLConfig readSSLContext(RequestInfo requestInfo) throws ConnettoreException {
  175.        
  176.         try {
  177.             SSLConfigProps sslConfigProps = GestoreKeystoreCache.getSSLConfigProps(requestInfo, this.config.getAbsolutePath(), false);
  178.             if(sslConfigProps!=null) {
  179.                 return sslConfigProps.getSslconfig();
  180.             }
  181.             return null;
  182.         }
  183.         catch(Exception e) {
  184.             throw new ConnettoreException(e.getMessage(),e);
  185.         }
  186.     }  
  187.    
  188. }