diff --git a/ChangeLog b/ChangeLog index be76438766..1e3e991cd7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2019-03-30 Andrea Poli + + * [Utils, GovWayCore, GovWayConsole] + Aggiunta funzionalità OP-968 + La funzionalità di "Verifica Connettori" è stata estesa con la possibilità di effettuare il download dei certificati ritornati dal server, in caso di endpoint https. + 2019-03-26 Andrea Poli * [GovWayCore, ProtocolloSPCoop] diff --git a/core/src/org/openspcoop2/pdd/core/connettori/ConnettoreCheck.java b/core/src/org/openspcoop2/pdd/core/connettori/ConnettoreCheck.java index 06712b5363..a1fdeeb817 100644 --- a/core/src/org/openspcoop2/pdd/core/connettori/ConnettoreCheck.java +++ b/core/src/org/openspcoop2/pdd/core/connettori/ConnettoreCheck.java @@ -269,7 +269,7 @@ private static void putAll(Properties config, Map mapProperties) } } } - + private static void _checkHTTP(TipiConnettore tipoConnettore, Connettore connettore) throws Exception { ConnettoreHTTPSProperties sslContextProperties = null; @@ -465,4 +465,108 @@ else if(CostantiConnettori.CONNETTORE_HTTP_PROXY_TYPE_VALUE_HTTPS.equals(tipo)){ } } + + + + + + + public static String getCertificati(long idConnettore, boolean registro) throws ConnettoreException{ + if(registro) { + Enumeration drivers = RegistroServiziReader.getDriverRegistroServizi().elements(); + while (drivers.hasMoreElements()) { + IDriverRegistroServiziGet iDriverRegistroServiziGet = (IDriverRegistroServiziGet) drivers.nextElement(); + if(iDriverRegistroServiziGet instanceof DriverRegistroServiziDB) { + try { + org.openspcoop2.core.registry.Connettore connettore = ((DriverRegistroServiziDB)iDriverRegistroServiziGet).getConnettore(idConnettore); + return getCertificati(connettore); + }catch(Throwable e) { + throw new ConnettoreException(e.getMessage(),e); + } + } + } + } + else { + IDriverConfigurazioneGet iDriverConfigurazioneGet = ConfigurazionePdDReader.getDriverConfigurazionePdD(); + if(iDriverConfigurazioneGet instanceof DriverConfigurazioneDB) { + try { + Connettore connettore = ((DriverConfigurazioneDB)iDriverConfigurazioneGet).getConnettore(idConnettore); + return getCertificati(connettore); + }catch(Throwable e) { + throw new ConnettoreException(e.getMessage(),e); + } + } + } + throw new ConnettoreException("Connettore con id '"+idConnettore+"' non trovato"); + } + public static String getCertificati(String nomeConnettore, boolean registro) throws ConnettoreException{ + if(registro) { + Enumeration drivers = RegistroServiziReader.getDriverRegistroServizi().elements(); + while (drivers.hasMoreElements()) { + IDriverRegistroServiziGet iDriverRegistroServiziGet = (IDriverRegistroServiziGet) drivers.nextElement(); + if(iDriverRegistroServiziGet instanceof DriverRegistroServiziDB) { + try { + org.openspcoop2.core.registry.Connettore connettore = ((DriverRegistroServiziDB)iDriverRegistroServiziGet).getConnettore(nomeConnettore); + return getCertificati(connettore); + }catch(Throwable e) { + throw new ConnettoreException(e.getMessage(),e); + } + } + } + } + else { + IDriverConfigurazioneGet iDriverConfigurazioneGet = ConfigurazionePdDReader.getDriverConfigurazionePdD(); + if(iDriverConfigurazioneGet instanceof DriverConfigurazioneDB) { + try { + Connettore connettore = ((DriverConfigurazioneDB)iDriverConfigurazioneGet).getConnettore(nomeConnettore); + return getCertificati(connettore); + }catch(Throwable e) { + throw new ConnettoreException(e.getMessage(),e); + } + } + } + + throw new ConnettoreException("Connettore con nome '"+nomeConnettore+"' non trovato"); + } + + public static String getCertificati(org.openspcoop2.core.registry.Connettore connettore) throws ConnettoreException{ + return _getCertificati(connettore.mappingIntoConnettoreConfigurazione()); + } + public static String getCertificati(Connettore connettore) throws ConnettoreException{ + return _getCertificati(connettore); + } + private static String _getCertificati(Connettore connettore) throws ConnettoreException { + + try { + + Map properties = connettore.getProperties(); + String location = properties!=null ? properties.get(CostantiConnettori.CONNETTORE_LOCATION) : null; + if(location==null || "".equals(location)) { + throw new Exception("Il connettore non possiede un endpoint"); + } + URL url = new URL( location ); + String host = url.getHost(); + if(host==null || "".equals(host)) { + throw new Exception("L'endpoint '"+host+"' non contiene un host"); + } + int port = url.getPort(); + if(port<=0) { + if("https".equalsIgnoreCase(url.getProtocol())) { + port = 443; + } + else if("http".equalsIgnoreCase(url.getProtocol())) { + port = 80; + } + else { + throw new Exception("L'endpoint '"+host+"' contiene un protocollo '"+url.getProtocol()+"' non supportato"); + } + } + + return SSLUtilities.readPeerCertificates(host, port); + + }catch(Throwable e) { + throw new ConnettoreException(e.getMessage(),e); + } + + } } diff --git a/core/src/org/openspcoop2/pdd/core/jmx/AccessoRegistroServizi.java b/core/src/org/openspcoop2/pdd/core/jmx/AccessoRegistroServizi.java index ad31d9214a..c74ddfb5f2 100755 --- a/core/src/org/openspcoop2/pdd/core/jmx/AccessoRegistroServizi.java +++ b/core/src/org/openspcoop2/pdd/core/jmx/AccessoRegistroServizi.java @@ -62,6 +62,8 @@ public class AccessoRegistroServizi extends NotificationBroadcasterSupport imple /** Nomi metodi' */ public final static String CHECK_CONNETTORE_BY_ID = "checkConnettoreById"; public final static String CHECK_CONNETTORE_BY_NOME = "checkConnettoreByNome"; + public final static String GET_CERTIFICATI_CONNETTORE_BY_ID = "getCertificatiConnettoreById"; + public final static String GET_CERTIFICATI_CONNETTORE_BY_NOME = "getCertificatiConnettoreByNome"; /** Attributi */ private boolean cacheAbilitata = false; @@ -280,6 +282,37 @@ public Object invoke(String actionName, Object[]params, String[]signature) throw return this.checkConnettoreByNome(param1); } + if(actionName.equals(GET_CERTIFICATI_CONNETTORE_BY_ID)){ + if(params.length != 1) + throw new MBeanException(new Exception("["+GET_CERTIFICATI_CONNETTORE_BY_ID+"] Lunghezza parametri non corretta: "+params.length)); + + Long param1 = null; + if(params[0]!=null && !"".equals(params[0])){ + if(params[0] instanceof Long) { + param1 = (Long)params[0]; + } + else { + param1 = Long.valueOf(params[0].toString()); + } + + if(param1<0){ + param1 = null; + } + } + return this.getCertificatiConnettoreById(param1); + } + + if(actionName.equals(GET_CERTIFICATI_CONNETTORE_BY_NOME)){ + if(params.length != 1) + throw new MBeanException(new Exception("["+GET_CERTIFICATI_CONNETTORE_BY_NOME+"] Lunghezza parametri non corretta: "+params.length)); + + String param1 = null; + if(params[0]!=null && !"".equals(params[0])){ + param1 = (String)params[0]; + } + return this.getCertificatiConnettoreByNome(param1); + } + throw new UnsupportedOperationException("Operazione "+actionName+" sconosciuta"); } @@ -342,6 +375,24 @@ public MBeanInfo getMBeanInfo(){ String.class.getName(), MBeanOperationInfo.ACTION); + // MetaData per l'operazione getCertificatiConnettoreById + MBeanOperationInfo getCertificatiConnettoreById + = new MBeanOperationInfo(GET_CERTIFICATI_CONNETTORE_BY_ID,"Recupera i certificati server del connettore con id fornito come parametro", + new MBeanParameterInfo[]{ + new MBeanParameterInfo("idConnettore",long.class.getName(),"Identificativo del connettore"), + }, + String.class.getName(), + MBeanOperationInfo.ACTION); + + // MetaData per l'operazione getCertificatiConnettoreByNome + MBeanOperationInfo getCertificatiConnettoreByNome + = new MBeanOperationInfo(GET_CERTIFICATI_CONNETTORE_BY_NOME,"Recupera i certificati server del connettore con nome fornito come parametro", + new MBeanParameterInfo[]{ + new MBeanParameterInfo("nomeConnettore",String.class.getName(),"Nome del connettore"), + }, + String.class.getName(), + MBeanOperationInfo.ACTION); + // Mbean costruttore MBeanConstructorInfo defaultConstructor = new MBeanConstructorInfo("Default Constructor","Crea e inizializza una nuova istanza del MBean",null); @@ -365,6 +416,8 @@ public MBeanInfo getMBeanInfo(){ listOperation.add(removeObjectCacheOP); listOperation.add(checkConnettoreById); listOperation.add(checkConnettoreByNome); + listOperation.add(getCertificatiConnettoreById); + listOperation.add(getCertificatiConnettoreByNome); MBeanOperationInfo[] operations = listOperation.toArray(new MBeanOperationInfo[1]); return new MBeanInfo(className,description,attributes,constructors,operations,null); @@ -530,4 +583,22 @@ public String checkConnettoreByNome(String nomeConnettore) { return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(); } } + + public String getCertificatiConnettoreById(long idConnettore) { + try{ + return ConnettoreCheck.getCertificati(idConnettore, true); + }catch(Throwable e){ + this.log.error(e.getMessage(),e); + return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(); + } + } + + public String getCertificatiConnettoreByNome(String nomeConnettore) { + try{ + return ConnettoreCheck.getCertificati(nomeConnettore, true); + }catch(Throwable e){ + this.log.error(e.getMessage(),e); + return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(); + } + } } diff --git a/core/src/org/openspcoop2/pdd/core/jmx/ConfigurazionePdD.java b/core/src/org/openspcoop2/pdd/core/jmx/ConfigurazionePdD.java index 4bf76a7c18..433a1b966c 100755 --- a/core/src/org/openspcoop2/pdd/core/jmx/ConfigurazionePdD.java +++ b/core/src/org/openspcoop2/pdd/core/jmx/ConfigurazionePdD.java @@ -76,6 +76,8 @@ public class ConfigurazionePdD extends NotificationBroadcasterSupport implements /** Nomi metodi' */ public final static String CHECK_CONNETTORE_BY_ID = "checkConnettoreById"; public final static String CHECK_CONNETTORE_BY_NOME = "checkConnettoreByNome"; + public final static String GET_CERTIFICATI_CONNETTORE_BY_ID = "getCertificatiConnettoreById"; + public final static String GET_CERTIFICATI_CONNETTORE_BY_NOME = "getCertificatiConnettoreByNome"; /** Attributi */ private boolean cacheAbilitata = false; @@ -355,6 +357,36 @@ public Object invoke(String actionName, Object[]params, String[]signature) throw return this.checkConnettoreByNome(param1); } + if(actionName.equals(GET_CERTIFICATI_CONNETTORE_BY_ID)){ + if(params.length != 1) + throw new MBeanException(new Exception("["+GET_CERTIFICATI_CONNETTORE_BY_ID+"] Lunghezza parametri non corretta: "+params.length)); + + Long param1 = null; + if(params[0]!=null && !"".equals(params[0])){ + if(params[0] instanceof Long) { + param1 = (Long)params[0]; + } + else { + param1 = Long.valueOf(params[0].toString()); + } + if(param1<0){ + param1 = null; + } + } + return this.getCertificatiConnettoreById(param1); + } + + if(actionName.equals(GET_CERTIFICATI_CONNETTORE_BY_NOME)){ + if(params.length != 1) + throw new MBeanException(new Exception("["+GET_CERTIFICATI_CONNETTORE_BY_NOME+"] Lunghezza parametri non corretta: "+params.length)); + + String param1 = null; + if(params[0]!=null && !"".equals(params[0])){ + param1 = (String)params[0]; + } + return this.getCertificatiConnettoreByNome(param1); + } + throw new UnsupportedOperationException("Operazione "+actionName+" sconosciuta"); } @@ -482,6 +514,24 @@ public MBeanInfo getMBeanInfo(){ }, String.class.getName(), MBeanOperationInfo.ACTION); + + // MetaData per l'operazione getCertificatiConnettoreById + MBeanOperationInfo getCertificatiConnettoreById + = new MBeanOperationInfo(GET_CERTIFICATI_CONNETTORE_BY_ID,"Recupera i certificati server del connettore con id fornito come parametro", + new MBeanParameterInfo[]{ + new MBeanParameterInfo("idConnettore",long.class.getName(),"Identificativo del connettore"), + }, + String.class.getName(), + MBeanOperationInfo.ACTION); + + // MetaData per l'operazione getCertificatiConnettoreByNome + MBeanOperationInfo getCertificatiConnettoreByNome + = new MBeanOperationInfo(GET_CERTIFICATI_CONNETTORE_BY_NOME,"Recupera i certificati server del connettore con nome fornito come parametro", + new MBeanParameterInfo[]{ + new MBeanParameterInfo("nomeConnettore",String.class.getName(),"Nome del connettore"), + }, + String.class.getName(), + MBeanOperationInfo.ACTION); // Mbean costruttore MBeanConstructorInfo defaultConstructor = new MBeanConstructorInfo("Default Constructor","Crea e inizializza una nuova istanza del MBean",null); @@ -511,6 +561,8 @@ public MBeanInfo getMBeanInfo(){ listOperation.add(removeObjectCacheOP); listOperation.add(checkConnettoreById); listOperation.add(checkConnettoreByNome); + listOperation.add(getCertificatiConnettoreById); + listOperation.add(getCertificatiConnettoreByNome); MBeanOperationInfo[] operations = listOperation.toArray(new MBeanOperationInfo[1]); return new MBeanInfo(className,description,attributes,constructors,operations,null); @@ -763,4 +815,22 @@ public String checkConnettoreByNome(String nomeConnettore) { return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(); } } + + public String getCertificatiConnettoreById(long idConnettore) { + try{ + return ConnettoreCheck.getCertificati(idConnettore, true); + }catch(Throwable e){ + this.log.error(e.getMessage(),e); + return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(); + } + } + + public String getCertificatiConnettoreByNome(String nomeConnettore) { + try{ + return ConnettoreCheck.getCertificati(nomeConnettore, true); + }catch(Throwable e){ + this.log.error(e.getMessage(),e); + return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(); + } + } } diff --git a/core/src/org/openspcoop2/protocol/engine/archive/ExporterArchiveUtils.java b/core/src/org/openspcoop2/protocol/engine/archive/ExporterArchiveUtils.java index b193196861..0c633edb88 100644 --- a/core/src/org/openspcoop2/protocol/engine/archive/ExporterArchiveUtils.java +++ b/core/src/org/openspcoop2/protocol/engine/archive/ExporterArchiveUtils.java @@ -27,13 +27,16 @@ import org.slf4j.Logger; import org.openspcoop2.core.config.Ruolo; import org.openspcoop2.core.config.Scope; +import org.openspcoop2.core.config.ServizioApplicativo; import org.openspcoop2.core.config.TrasformazioneRegola; import org.openspcoop2.core.config.TrasformazioneRegolaApplicabilitaServizioApplicativo; import org.openspcoop2.core.config.TrasformazioneRegolaApplicabilitaSoggetto; import org.openspcoop2.core.config.constants.CostantiConfigurazione; +import org.openspcoop2.core.config.PortaApplicativa; import org.openspcoop2.core.config.PortaApplicativaAutorizzazioneServizioApplicativo; import org.openspcoop2.core.config.PortaApplicativaAutorizzazioneSoggetto; import org.openspcoop2.core.config.PortaApplicativaServizioApplicativo; +import org.openspcoop2.core.config.PortaDelegata; import org.openspcoop2.core.config.PortaDelegataServizioApplicativo; import org.openspcoop2.core.config.driver.DriverConfigurazioneNotFound; import org.openspcoop2.core.config.driver.FiltroRicercaPorteApplicative; @@ -44,6 +47,7 @@ import org.openspcoop2.core.controllo_traffico.IdPolicy; import org.openspcoop2.core.id.IDAccordo; import org.openspcoop2.core.id.IDAccordoCooperazione; +import org.openspcoop2.core.id.IDFruizione; import org.openspcoop2.core.id.IDGenericProperties; import org.openspcoop2.core.id.IDGruppo; import org.openspcoop2.core.id.IDPortaApplicativa; @@ -224,6 +228,16 @@ public void fillArchive(Archive archive, ArchiveType exportSourceArchiveType,Lis this.readAccordoServizioParteSpecifica(archive, (IDServizio)object, cascadeConfig, exportSourceArchiveType); } break; + case EROGAZIONE: + for (Object object : listObject) { + this.readErogazione(archive, (IDServizio)object, cascadeConfig); + } + break; + case FRUIZIONE: + for (Object object : listObject) { + this.readFruizione(archive, (IDFruizione)object, cascadeConfig); + } + break; case CONFIGURAZIONE: readControlloTrafficoConfigurazione(archive, true, false); readTokenPolicyConfigurazione(archive); @@ -1310,7 +1324,10 @@ private void readAccordoServizioParteSpecifica(Archive archive, IDServizio idAcc } else{ try{ - if(cascadeConfig.isCascadeAccordoServizioParteSpecifica() || ArchiveType.ACCORDO_SERVIZIO_PARTE_SPECIFICA.equals(provenienza)){ + if(cascadeConfig.isCascadeAccordoServizioParteSpecifica() + || ArchiveType.ACCORDO_SERVIZIO_PARTE_SPECIFICA.equals(provenienza) + || ArchiveType.EROGAZIONE.equals(provenienza) + || ArchiveType.FRUIZIONE.equals(provenienza)){ fruitoriList = new ArrayList(); // add @@ -1329,13 +1346,15 @@ private void readAccordoServizioParteSpecifica(Archive archive, IDServizio idAcc // porteApplicative associate - List listIDPA = this.archiveEngine.getIDPorteApplicativeAssociateErogazione(idAccordoServizio); - if(listIDPA!=null && listIDPA.size()>0){ - if(archiveAs.getMappingPorteApplicativeAssociate()==null) { - archiveAs.setMappingPorteApplicativeAssociate(new ArrayList<>()); - } - for (IDPortaApplicativa idPortaApplicativa : listIDPA) { - archiveAs.getMappingPorteApplicativeAssociate().add(this.archiveEngine.getMappingErogazionePortaApplicativa(idAccordoServizio, idPortaApplicativa)); + if(!ArchiveType.FRUIZIONE.equals(provenienza)) { + List listIDPA = this.archiveEngine.getIDPorteApplicativeAssociateErogazione(idAccordoServizio); + if(listIDPA!=null && listIDPA.size()>0){ + if(archiveAs.getMappingPorteApplicativeAssociate()==null) { + archiveAs.setMappingPorteApplicativeAssociate(new ArrayList<>()); + } + for (IDPortaApplicativa idPortaApplicativa : listIDPA) { + archiveAs.getMappingPorteApplicativeAssociate().add(this.archiveEngine.getMappingErogazionePortaApplicativa(idAccordoServizio, idPortaApplicativa)); + } } } @@ -1559,11 +1578,11 @@ private void readFruitore(Archive archive, IDServizio idAccordoServizio, IDSogge } - private void readPortaDelegata(Archive archive, IDPortaDelegata idPortaDelegata, + private PortaDelegata readPortaDelegata(Archive archive, IDPortaDelegata idPortaDelegata, ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception{ - this.readPortaDelegata(archive, idPortaDelegata, cascadeConfig, true, provenienza); + return this.readPortaDelegata(archive, idPortaDelegata, cascadeConfig, true, provenienza); } - private void readPortaDelegata(Archive archive, IDPortaDelegata idPortaDelegata, + private PortaDelegata readPortaDelegata(Archive archive, IDPortaDelegata idPortaDelegata, ArchiveCascadeConfiguration cascadeConfig, boolean cascadeAvanti, ArchiveType provenienza) throws Exception{ IDSoggetto idSoggettoFruitore = idPortaDelegata.getIdentificativiFruizione().getSoggettoFruitore(); @@ -1713,14 +1732,15 @@ private void readPortaDelegata(Archive archive, IDPortaDelegata idPortaDelegata, } + return pd; } - private void readPortaApplicativa(Archive archive, IDPortaApplicativa idPortaApplicativa, + private PortaApplicativa readPortaApplicativa(Archive archive, IDPortaApplicativa idPortaApplicativa, ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception{ - this.readPortaApplicativa(archive, idPortaApplicativa, cascadeConfig, true, provenienza); + return this.readPortaApplicativa(archive, idPortaApplicativa, cascadeConfig, true, provenienza); } - private void readPortaApplicativa(Archive archive, IDPortaApplicativa idPortaApplicativa, + private PortaApplicativa readPortaApplicativa(Archive archive, IDPortaApplicativa idPortaApplicativa, ArchiveCascadeConfiguration cascadeConfig, boolean cascadeAvanti, ArchiveType provenienza) throws Exception{ IDSoggetto idSoggettoErogatore = idPortaApplicativa.getIdentificativiErogazione().getIdServizio().getSoggettoErogatore(); @@ -1915,5 +1935,49 @@ private void readPortaApplicativa(Archive archive, IDPortaApplicativa idPortaApp } + return pa; + } + + + private void readErogazione(Archive archive, IDServizio idServizio, ArchiveCascadeConfiguration cascadeConfig) throws Exception{ + + this.readAccordoServizioParteSpecifica(archive, idServizio, cascadeConfig, ArchiveType.EROGAZIONE); + + // porteApplicative associate + List listIDPA = this.archiveEngine.getIDPorteApplicativeAssociateErogazione(idServizio); + if(listIDPA!=null && listIDPA.size()>0){ + for (IDPortaApplicativa idPortaApplicativa : listIDPA) { + PortaApplicativa pa = this.readPortaApplicativa(archive, idPortaApplicativa, cascadeConfig, ArchiveType.PORTA_APPLICATIVA); + if(pa!=null && pa.sizeServizioApplicativoList()>0) { + for (PortaApplicativaServizioApplicativo pasa : pa.getServizioApplicativoList()) { + IDServizioApplicativo idSA = new IDServizioApplicativo(); + idSA.setNome(pasa.getNome()); + idSA.setIdSoggettoProprietario(new IDSoggetto(pa.getTipoSoggettoProprietario(), pa.getNomeSoggettoProprietario())); + ServizioApplicativo sa = this.archiveEngine.getServizioApplicativo(idSA); + if(!CostantiConfigurazione.SERVER.equals(sa.getTipo()) && !CostantiConfigurazione.CLIENT_OR_SERVER.equals(sa.getTipo())) { + // i server verranno inclusi solamente se viene scelto di includere tutti gli elementi riferiti + this.readServizioApplicativo(archive, idSA, cascadeConfig, ArchiveType.SERVIZIO_APPLICATIVO); + } + } + } + } + } + + } + + private void readFruizione(Archive archive, IDFruizione idFruizione, ArchiveCascadeConfiguration cascadeConfig) throws Exception{ + + this.readAccordoServizioParteSpecifica(archive, idFruizione.getIdServizio(), cascadeConfig, ArchiveType.FRUIZIONE); + + this.readFruitore(archive, idFruizione.getIdServizio(), idFruizione.getIdFruitore(), null, cascadeConfig, ArchiveType.FRUITORE); + + // porteDelegate associate + List listIDPD = this.archiveEngine.getIDPorteDelegateAssociateFruizione(idFruizione.getIdServizio(), idFruizione.getIdFruitore()); + if(listIDPD!=null && listIDPD.size()>0){ + for (IDPortaDelegata idPortaDelegata : listIDPD) { + this.readPortaDelegata(archive, idPortaDelegata, cascadeConfig, ArchiveType.PORTA_DELEGATA); + } + } + } } diff --git a/core/src/org/openspcoop2/protocol/sdk/constants/ArchiveType.java b/core/src/org/openspcoop2/protocol/sdk/constants/ArchiveType.java index 05b4a09d40..ef5ae2b601 100644 --- a/core/src/org/openspcoop2/protocol/sdk/constants/ArchiveType.java +++ b/core/src/org/openspcoop2/protocol/sdk/constants/ArchiveType.java @@ -39,6 +39,7 @@ public enum ArchiveType { ACCORDO_SERVIZIO_PARTE_COMUNE, ACCORDO_SERVIZIO_PARTE_SPECIFICA, ACCORDO_SERVIZIO_COMPOSTO, ACCORDO_COOPERAZIONE, FRUITORE, + EROGAZIONE, FRUIZIONE, CONFIGURAZIONE, ALL_WITHOUT_CONFIGURAZIONE, ALL; diff --git a/resources/doc/src/manuali/console/_figure_console/DownloadCertificatoServer.png b/resources/doc/src/manuali/console/_figure_console/DownloadCertificatoServer.png new file mode 100644 index 0000000000..c7b319b26c Binary files /dev/null and b/resources/doc/src/manuali/console/_figure_console/DownloadCertificatoServer.png differ diff --git a/resources/doc/src/manuali/console/profiloApiGateway/connettore/verificaConnettivita.rst b/resources/doc/src/manuali/console/profiloApiGateway/connettore/verificaConnettivita.rst index 8d88bd4aca..4043fe88dc 100644 --- a/resources/doc/src/manuali/console/profiloApiGateway/connettore/verificaConnettivita.rst +++ b/resources/doc/src/manuali/console/profiloApiGateway/connettore/verificaConnettivita.rst @@ -30,3 +30,12 @@ Dopo aver premuto il pulsante *Verifica* viene presentato l'esito della verifica :name: EsitoVerificaConnettore Esito Verifica del connettore + +In presenza di un endpoint https, è possibile effettuare il download dei certificati ritornati dal server cliccando sul link 'Download Certificati Server'. Il formato del file scaricato è un PEM contenente tutti i certificati ritornati dal server. + +.. figure:: ../../_figure_console/DownloadCertificatoServer.png + :scale: 100% + :align: center + :name: DownloadCertificatoServer + + Download Certificati Server diff --git a/tools/utils/src/org/openspcoop2/utils/io/Base64Utilities.java b/tools/utils/src/org/openspcoop2/utils/io/Base64Utilities.java index 581c2682e6..72296323f2 100644 --- a/tools/utils/src/org/openspcoop2/utils/io/Base64Utilities.java +++ b/tools/utils/src/org/openspcoop2/utils/io/Base64Utilities.java @@ -21,6 +21,8 @@ package org.openspcoop2.utils.io; +import org.apache.commons.codec.binary.StringUtils; + /** * Base64Utilities * @@ -41,9 +43,36 @@ public static byte[] decode(String data){ public static byte[] encode(byte [] data){ return org.apache.commons.codec.binary.Base64.encodeBase64(data); } + public static byte[] encodeChunked(byte [] data){ + return org.apache.commons.codec.binary.Base64.encodeBase64Chunked(data); + } + public static byte[] encode(byte [] data, boolean isChunked){ + return org.apache.commons.codec.binary.Base64.encodeBase64(data, isChunked); + } + public static byte[] encode(byte [] data, boolean isChunked, boolean urlSafe){ + return org.apache.commons.codec.binary.Base64.encodeBase64(data, isChunked, urlSafe); + } + public static byte[] encode(byte [] data, boolean isChunked, boolean urlSafe, int maxResultSize){ + return org.apache.commons.codec.binary.Base64.encodeBase64(data, isChunked, urlSafe, maxResultSize); + } + public static String encodeAsString(byte [] data){ return org.apache.commons.codec.binary.Base64.encodeBase64String(data); } - + public static String encodeChunkedAsString(byte [] data){ + return StringUtils.newStringUsAscii(encodeChunked(data)); + } + public static String encodeBase64URLSafeString(byte [] data){ + return org.apache.commons.codec.binary.Base64.encodeBase64URLSafeString(data); + } + public static String encodeAsString(byte [] data, boolean isChunked){ + return StringUtils.newStringUsAscii(encode(data, isChunked)); + } + public static String encodeAsString(byte [] data, boolean isChunked, boolean urlSafe){ + return StringUtils.newStringUsAscii(encode(data, isChunked, urlSafe)); + } + public static String encodeAsString(byte [] data, boolean isChunked, boolean urlSafe, int maxResultSize){ + return StringUtils.newStringUsAscii(encode(data, isChunked, urlSafe, maxResultSize)); + } } diff --git a/tools/utils/src/org/openspcoop2/utils/transport/http/SSLSavingTrustManager.java b/tools/utils/src/org/openspcoop2/utils/transport/http/SSLSavingTrustManager.java new file mode 100644 index 0000000000..a1db0f2aa8 --- /dev/null +++ b/tools/utils/src/org/openspcoop2/utils/transport/http/SSLSavingTrustManager.java @@ -0,0 +1,66 @@ +/* + * GovWay - A customizable API Gateway + * https://govway.org + * + * Copyright (c) 2005-2020 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 . + * + */ + +package org.openspcoop2.utils.transport.http; + +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; + +import javax.net.ssl.X509TrustManager; + +/** + * SSLSavingTrustManager + * + * @author Poli Andrea (apoli@link.it) + * @author $Author$ + * @version $Rev$, $Date$ + */ +public class SSLSavingTrustManager implements X509TrustManager { + + private X509TrustManager tm; + private X509Certificate[] chain; + + public X509Certificate[] getPeerCertificates() { + return this.chain; + } + + public SSLSavingTrustManager(X509TrustManager tm) { + this.tm = tm; + } + + @Override + public X509Certificate[] getAcceptedIssuers() { + throw new UnsupportedOperationException(); + } + + @Override + public void checkClientTrusted(X509Certificate[] chain, String authType) + throws CertificateException { + throw new UnsupportedOperationException(); + } + + @Override + public void checkServerTrusted(X509Certificate[] chain, String authType) + throws CertificateException { + this.chain = chain; + this.tm.checkServerTrusted(chain, authType); + } + +} diff --git a/tools/utils/src/org/openspcoop2/utils/transport/http/SSLUtilities.java b/tools/utils/src/org/openspcoop2/utils/transport/http/SSLUtilities.java index fa98bf360f..f45d180034 100644 --- a/tools/utils/src/org/openspcoop2/utils/transport/http/SSLUtilities.java +++ b/tools/utils/src/org/openspcoop2/utils/transport/http/SSLUtilities.java @@ -24,12 +24,14 @@ import java.io.File; import java.io.FileInputStream; import java.io.InputStream; +import java.io.StringWriter; import java.security.Key; import java.security.KeyStore; import java.security.Provider; import java.security.Provider.Service; import java.security.Security; import java.security.cert.CertStore; +import java.security.cert.Certificate; import java.security.cert.CertificateFactory; import java.security.cert.CollectionCertStoreParameters; import java.security.cert.PKIXBuilderParameters; @@ -45,9 +47,12 @@ import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocket; +import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.TrustManagerFactory; +import javax.net.ssl.X509TrustManager; +import org.bouncycastle.openssl.jcajce.JcaPEMWriter; import org.openspcoop2.utils.Utilities; import org.openspcoop2.utils.UtilsException; import org.openspcoop2.utils.date.DateManager; @@ -590,4 +595,51 @@ public static void setSSLContextIntoJavaProperties(SSLConfig sslConfig, StringBu } } + + public static String readPeerCertificates(String host, int port) throws UtilsException{ + try { + + SSLContext sslContext = SSLContext.getInstance(SSLUtilities.getDefaultProtocol()); + KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); + TrustManagerFactory tmf = + TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + tmf.init(ks); + X509TrustManager defaultTrustManager = (X509TrustManager)tmf.getTrustManagers()[0]; + SSLSavingTrustManager tm = new SSLSavingTrustManager(defaultTrustManager); + sslContext.init(null, new TrustManager[] {tm}, null); + + SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); + + SSLSocket sslSocket = (SSLSocket) sslSocketFactory.createSocket(host, port); + sslSocket.setSoTimeout(10000); + sslSocket.setWantClientAuth(false); + try { + sslSocket.startHandshake(); + sslSocket.close(); + }catch(Throwable t) { + // ignore + } + //Certificate [] certs = sslSocket.getSession().getPeerCertificates(); + Certificate [] certs = tm.getPeerCertificates(); + if(certs == null || certs.length<=0) { + throw new Exception("Peer Certificates not found"); + } + StringBuilder sb = new StringBuilder(); + for (Certificate certificate : certs) { + + StringWriter sw = new StringWriter(); + JcaPEMWriter pemWriter = new JcaPEMWriter(sw); + pemWriter.writeObject(certificate); + pemWriter.close(); + sw.close(); + sb.append(sw.toString()); + + } + + return sb.toString(); + + }catch(Exception e){ + throw new UtilsException(e.getMessage(), e); + } + } } diff --git a/tools/web_interfaces/control_station/deploy/properties/console.properties b/tools/web_interfaces/control_station/deploy/properties/console.properties index faeb0eaacd..bde361676a 100644 --- a/tools/web_interfaces/control_station/deploy/properties/console.properties +++ b/tools/web_interfaces/control_station/deploy/properties/console.properties @@ -511,6 +511,7 @@ risorseJmxPdd.configurazioneSistema.nomeAttributo.log4jIntegrationManager=log4jL risorseJmxPdd.configurazioneSistema.nomeAttributo.log4jTracciamento=log4jLogFileTracciamentoAbilitato risorseJmxPdd.configurazioneSistema.nomeAttributo.log4jDump=log4jLogFileDumpAbilitato risorseJmxPdd.configurazioneSistema.nomeMetodo.checkConnettoreById=checkConnettoreById +risorseJmxPdd.configurazioneSistema.nomeMetodo.getCertificatiConnettoreById=getCertificatiConnettoreById risorseJmxPdd.configurazioneSistema.nomeRisorsaAccessoRegistroServizi=AccessoRegistroServizi risorseJmxPdd.configurazioneSistema.nomeRisorsaStatoServiziPdD=StatoServiziPdD risorseJmxPdd.configurazioneSistema.nomeAttributo.statoServizioPortaDelegata=Servizio PortaDelegata diff --git a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/config/ConsoleProperties.java b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/config/ConsoleProperties.java index 9f46725a7c..a02cc71076 100755 --- a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/config/ConsoleProperties.java +++ b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/config/ConsoleProperties.java @@ -584,6 +584,9 @@ public String getJmxPdD_configurazioneSistema_nomeAttributo_log4jDump(String ali public String getJmxPdD_configurazioneSistema_nomeMetodo_checkConnettoreById(String alias) throws UtilsException { return _getJmxPdD_value(true, alias, "risorseJmxPdd.configurazioneSistema.nomeMetodo.checkConnettoreById"); } + public String getJmxPdD_configurazioneSistema_nomeMetodo_getCertificatiConnettoreById(String alias) throws UtilsException { + return _getJmxPdD_value(true, alias, "risorseJmxPdd.configurazioneSistema.nomeMetodo.getCertificatiConnettoreById"); + } public String getJmxPdD_configurazioneSistema_nomeRisorsaAccessoRegistroServizi(String alias) throws UtilsException { return _getJmxPdD_value(true, alias, "risorseJmxPdd.configurazioneSistema.nomeRisorsaAccessoRegistroServizi"); } diff --git a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/core/ControlStationCore.java b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/core/ControlStationCore.java index 823dbb2145..7309b1bd8c 100644 --- a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/core/ControlStationCore.java +++ b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/core/ControlStationCore.java @@ -989,6 +989,7 @@ private List newIExtendedConnettore(String [] className) th private Map jmxPdD_configurazioneSistema_nomeAttributo_log4j_tracciamento = new Hashtable(); private Map jmxPdD_configurazioneSistema_nomeAttributo_log4j_dump = new Hashtable(); private Map jmxPdD_configurazioneSistema_nomeMetodo_checkConnettoreById = new Hashtable(); + private Map jmxPdD_configurazioneSistema_nomeMetodo_getCertificatiConnettoreById = new Hashtable(); private Map jmxPdD_configurazioneSistema_nomeRisorsaAccessoRegistroServizi = new Hashtable(); private Map jmxPdD_configurazioneSistema_nomeRisorsaStatoServiziPdD = new Hashtable(); private Map jmxPdD_configurazioneSistema_nomeAttributo_statoServizioPortaDelegata = new Hashtable(); @@ -1210,6 +1211,9 @@ public String getJmxPdD_configurazioneSistema_nomeAttributo_log4j_dump(String al public String getJmxPdD_configurazioneSistema_nomeMetodo_checkConnettoreById(String alias) { return this.jmxPdD_configurazioneSistema_nomeMetodo_checkConnettoreById.get(alias); } + public String getJmxPdD_configurazioneSistema_nomeMetodo_getCertificatiConnettoreById(String alias) { + return this.jmxPdD_configurazioneSistema_nomeMetodo_getCertificatiConnettoreById.get(alias); + } public String getJmxPdD_configurazioneSistema_nomeRisorsaAccessoRegistroServizi(String alias) { return this.jmxPdD_configurazioneSistema_nomeRisorsaAccessoRegistroServizi.get(alias); } @@ -1859,6 +1863,7 @@ public ControlStationCore(ControlStationCore core) throws Exception { this.jmxPdD_configurazioneSistema_nomeAttributo_log4j_tracciamento = core.jmxPdD_configurazioneSistema_nomeAttributo_log4j_tracciamento; this.jmxPdD_configurazioneSistema_nomeAttributo_log4j_dump = core.jmxPdD_configurazioneSistema_nomeAttributo_log4j_dump; this.jmxPdD_configurazioneSistema_nomeMetodo_checkConnettoreById = core.jmxPdD_configurazioneSistema_nomeMetodo_checkConnettoreById; + this.jmxPdD_configurazioneSistema_nomeMetodo_getCertificatiConnettoreById = core.jmxPdD_configurazioneSistema_nomeMetodo_getCertificatiConnettoreById; this.jmxPdD_configurazioneSistema_nomeRisorsaAccessoRegistroServizi = core.jmxPdD_configurazioneSistema_nomeRisorsaAccessoRegistroServizi; this.jmxPdD_configurazioneSistema_nomeRisorsaStatoServiziPdD = core.jmxPdD_configurazioneSistema_nomeRisorsaStatoServiziPdD; this.jmxPdD_configurazioneSistema_nomeAttributo_statoServizioPortaDelegata = core.jmxPdD_configurazioneSistema_nomeAttributo_statoServizioPortaDelegata; @@ -2244,6 +2249,7 @@ private void initCoreJmxResources() throws ControlStationCoreException { this.jmxPdD_configurazioneSistema_nomeAttributo_log4j_tracciamento.put(alias,consoleProperties.getJmxPdD_configurazioneSistema_nomeAttributo_log4jTracciamento(alias)); this.jmxPdD_configurazioneSistema_nomeAttributo_log4j_dump.put(alias,consoleProperties.getJmxPdD_configurazioneSistema_nomeAttributo_log4jDump(alias)); this.jmxPdD_configurazioneSistema_nomeMetodo_checkConnettoreById.put(alias,consoleProperties.getJmxPdD_configurazioneSistema_nomeMetodo_checkConnettoreById(alias)); + this.jmxPdD_configurazioneSistema_nomeMetodo_getCertificatiConnettoreById.put(alias,consoleProperties.getJmxPdD_configurazioneSistema_nomeMetodo_getCertificatiConnettoreById(alias)); this.jmxPdD_configurazioneSistema_nomeRisorsaAccessoRegistroServizi.put(alias,consoleProperties.getJmxPdD_configurazioneSistema_nomeRisorsaAccessoRegistroServizi(alias)); this.jmxPdD_configurazioneSistema_nomeRisorsaStatoServiziPdD.put(alias,consoleProperties.getJmxPdD_configurazioneSistema_nomeRisorsaStatoServiziPdD(alias)); this.jmxPdD_configurazioneSistema_nomeAttributo_statoServizioPortaDelegata.put(alias,consoleProperties.getJmxPdD_configurazioneSistema_nomeAttributo_statoServizioPortaDelegata(alias)); diff --git a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/ConsoleHelper.java b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/ConsoleHelper.java index 2c6a979510..45fd955c32 100644 --- a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/ConsoleHelper.java +++ b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/ConsoleHelper.java @@ -30,6 +30,7 @@ import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; +import java.net.URL; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Arrays; @@ -107,6 +108,7 @@ import org.openspcoop2.core.config.driver.DriverConfigurazioneNotFound; import org.openspcoop2.core.config.driver.db.IDServizioApplicativoDB; import org.openspcoop2.core.constants.CostantiConnettori; +import org.openspcoop2.core.constants.TipiConnettore; import org.openspcoop2.core.controllo_traffico.AttivazionePolicy; import org.openspcoop2.core.controllo_traffico.ConfigurazionePolicy; import org.openspcoop2.core.controllo_traffico.constants.RuoloPolicy; @@ -11148,7 +11150,8 @@ public boolean checkDataCors() throws Exception { return true; } - public void addDescrizioneVerificaConnettoreToDati(Vector dati, String server, String labelConnettore, Connettore connettore) throws Exception { + public void addDescrizioneVerificaConnettoreToDati(Vector dati, String server, String labelConnettore, + Connettore connettore, boolean registro, String aliasConnettore) throws Exception { if(server!=null && !"".equals(server)) { DataElement de = new DataElement(); @@ -11164,6 +11167,44 @@ public void addDescrizioneVerificaConnettoreToDati(Vector dati, Str de.setValue(labelConnettore); dati.add(de); + if(aliasConnettore!=null && !"".equals(aliasConnettore) && + (TipiConnettore.HTTP.getNome().equalsIgnoreCase(connettore.getTipo()) || + TipiConnettore.HTTPS.getNome().equalsIgnoreCase(connettore.getTipo())) + ){ + Map properties = connettore.getProperties(); + String location = properties!=null ? properties.get(CostantiConnettori.CONNETTORE_LOCATION) : null; + if(location!=null && !"".equals(location) && location.toLowerCase().startsWith("https")) { + String nomeConnettore = null; + try { + URL url = new URL( location ); + String host = url.getHost(); + if(host==null || "".equals(host)) { + throw new Exception("L'endpoint '"+host+"' non contiene un host"); + } + nomeConnettore = host; + int port = url.getPort(); + if(port>0 && port!=443) { + nomeConnettore=nomeConnettore+"_"+port; + } + + de = new DataElement(); + de.setType(DataElementType.LINK); + de.setValue(ConnettoriCostanti.LABEL_DOWNLOAD_CERTIFICATI_SERVER); + de.setUrl(ArchiviCostanti.SERVLET_NAME_DOCUMENTI_EXPORT, + new Parameter(ArchiviCostanti.PARAMETRO_ARCHIVI_ALLEGATO_TIPO_ACCORDO, ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_CONNETTORE_CERTIFICATO_SERVER), + new Parameter(ArchiviCostanti.PARAMETRO_ARCHIVI_ALLEGATO_TIPO_ACCORDO_TIPO_DOCUMENTO, ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_CONNETTORE_CERTIFICATO_SERVER), + new Parameter(ArchiviCostanti.PARAMETRO_ARCHIVI_CERTIFICATI_SERVER_ID_CONNETTORE, connettore.getId().longValue()+""), + new Parameter(ArchiviCostanti.PARAMETRO_ARCHIVI_CERTIFICATI_SERVER_TIPO_CONNETTORE_REGISTRO, registro ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED), + new Parameter(ArchiviCostanti.PARAMETRO_ARCHIVI_CERTIFICATI_SERVER_ALIAS_CONNETTORE, aliasConnettore), + new Parameter(ArchiviCostanti.PARAMETRO_ARCHIVI_CERTIFICATI_SERVER_NOME_CONNETTORE, nomeConnettore)); + dati.add(de); + + }catch(Exception e) { + this.log.error("Errore durante la comprensione dell'endpoint: "+e.getMessage(),e); + } + } + } + if(connettore.getProperties().containsKey(CostantiConnettori.CONNETTORE_CONNECTION_TIMEOUT)) { de = new DataElement(); diff --git a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/aps/AccordiServizioParteSpecificaCostanti.java b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/aps/AccordiServizioParteSpecificaCostanti.java index 84ef8b4ce4..a140ff9e21 100644 --- a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/aps/AccordiServizioParteSpecificaCostanti.java +++ b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/aps/AccordiServizioParteSpecificaCostanti.java @@ -154,6 +154,8 @@ public class AccordiServizioParteSpecificaCostanti { public final static String LABEL_APS_STATO = "Stato"; public final static String LABEL_APS_ESPORTA_SELEZIONATI = "Esporta"; public final static String LABEL_APS_ESPORTA_SELEZIONATI_ONCLICK = "Esporta('"+ArchiveType.ACCORDO_SERVIZIO_PARTE_SPECIFICA.name()+"')"; + public final static String LABEL_EROGAZIONI_ESPORTA_SELEZIONATI_ONCLICK = "Esporta('"+ArchiveType.EROGAZIONE.name()+"')"; + public final static String LABEL_FRUIZIONI_ESPORTA_SELEZIONATI_ONCLICK = "Esporta('"+ArchiveType.FRUIZIONE.name()+"')"; public final static String LABEL_APS_USA_VERSIONE_EROGATORE = "usa versione erogatore"; public final static String LABEL_APS_SPECIFICA_PORTI_ACCESSO = "Specifica dei Porti di Accesso"; public final static String LABEL_APS_SPECIFICA_PORTA_APPLICATIVA = "Configurazione"; diff --git a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/aps/erogazioni/ErogazioniHelper.java b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/aps/erogazioni/ErogazioniHelper.java index 1c9cd02f4d..cc0b7b3454 100644 --- a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/aps/erogazioni/ErogazioniHelper.java +++ b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/aps/erogazioni/ErogazioniHelper.java @@ -1090,7 +1090,12 @@ public void prepareErogazioniList(ISearch ricerca, List otherbott = new Vector(); DataElement de = new DataElement(); de.setValue(AccordiServizioParteSpecificaCostanti.LABEL_APS_ESPORTA_SELEZIONATI); - de.setOnClick(AccordiServizioParteSpecificaCostanti.LABEL_APS_ESPORTA_SELEZIONATI_ONCLICK); + if(gestioneFruitori) { + de.setOnClick(AccordiServizioParteSpecificaCostanti.LABEL_FRUIZIONI_ESPORTA_SELEZIONATI_ONCLICK); + } + else { + de.setOnClick(AccordiServizioParteSpecificaCostanti.LABEL_EROGAZIONI_ESPORTA_SELEZIONATI_ONCLICK); + } de.setDisabilitaAjaxStatus(); otherbott.addElement(de); ab.setBottoni(otherbott); diff --git a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/archivi/ArchiviCostanti.java b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/archivi/ArchiviCostanti.java index 5197a53a8e..a3ee764acc 100644 --- a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/archivi/ArchiviCostanti.java +++ b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/archivi/ArchiviCostanti.java @@ -141,6 +141,11 @@ public class ArchiviCostanti { public final static String PARAMETRO_ARCHIVI_ALLEGATO_ID_ACCORDO = "idAccordo"; public final static String PARAMETRO_ARCHIVI_ALLEGATO_TIPO_ACCORDO = "tipoDocumento"; public final static String PARAMETRO_ARCHIVI_ALLEGATO_TIPO_ACCORDO_TIPO_DOCUMENTO = "tipoDocumentoDaScaricare"; + + public final static String PARAMETRO_ARCHIVI_CERTIFICATI_SERVER_TIPO_CONNETTORE_REGISTRO = "tipoConn"; + public final static String PARAMETRO_ARCHIVI_CERTIFICATI_SERVER_ALIAS_CONNETTORE = "aliasConn"; + public final static String PARAMETRO_ARCHIVI_CERTIFICATI_SERVER_ID_CONNETTORE = "idConn"; + public final static String PARAMETRO_ARCHIVI_CERTIFICATI_SERVER_NOME_CONNETTORE = "nomeConn"; public final static String PARAMETRO_ARCHIVI_IMPORTER_MODALITA = "modalita"; public final static String PARAMETRO_ARCHIVI_PACKAGE_FILE = "theFile"; @@ -312,6 +317,8 @@ public class ArchiviCostanti { public static final String PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_SOGGETTO = "sogg"; public static final String PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_SERVIZIO_APPLICATIVO = "sa"; + public static final String PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_CONNETTORE_CERTIFICATO_SERVER = "certServer"; + public static final String PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_DOCUMENTO_CERTIFICATO_SSL = "sslCert"; public final static String[] PARAMETRO_VALORI_ARCHIVI_EXPORT_TIPO_DUMP = { ArchiveType.ALL.toString(), ArchiveType.ALL_WITHOUT_CONFIGURAZIONE.toString(), ArchiveType.CONFIGURAZIONE.toString() }; diff --git a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/archivi/ArchiviExporter.java b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/archivi/ArchiviExporter.java index 7a259d1eda..90b6b6099b 100644 --- a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/archivi/ArchiviExporter.java +++ b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/archivi/ArchiviExporter.java @@ -34,6 +34,7 @@ import org.openspcoop2.core.id.IDAccordo; import org.openspcoop2.core.id.IDAccordoCooperazione; +import org.openspcoop2.core.id.IDFruizione; import org.openspcoop2.core.id.IDGruppo; import org.openspcoop2.core.id.IDRuolo; import org.openspcoop2.core.id.IDScope; @@ -243,7 +244,18 @@ private void processRequest(HttpServletRequest request, HttpServletResponse resp AccordiServizioParteComuneCostanti.PARAMETRO_VALORE_APC_TIPO_ACCORDO_SERVIZIO_COMPOSTO; break; case ACCORDO_SERVIZIO_PARTE_SPECIFICA: - identificativi = exporterUtils.getIdsAccordiServizioParteSpecifica(objToExport); + case EROGAZIONE: + case FRUIZIONE: + + String tipologia = ServletUtils.getObjectFromSession(session, String.class, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE); + boolean gestioneFruitori = false; + if(tipologia!=null) { + if(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_FRUIZIONE.equals(tipologia)) { + gestioneFruitori = true; + } + } + + identificativi = exporterUtils.getIdsAccordiServizioParteSpecifica(objToExport, gestioneFruitori); Boolean vistaErogazioni = ServletUtils.getBooleanAttributeFromSession(ErogazioniCostanti.ASPS_EROGAZIONI_ATTRIBUTO_VISTA_EROGAZIONI, session); if(vistaErogazioni != null && vistaErogazioni.booleanValue()) { redirect = ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_LIST; @@ -399,6 +411,36 @@ private void processRequest(HttpServletRequest request, HttpServletResponse resp fileName +="."+extSingleArchive; } break; + case EROGAZIONE: + if(identificativi.size()>1){ + fileName = prefix+"Erogazioni."+ext; + } + else{ + IDServizio idServizio = ((IDServizio)identificativi.get(0)); + fileName = idServizio.getTipo()+idServizio.getNome(); + fileName+="_"+idServizio.getSoggettoErogatore().getTipo()+idServizio.getSoggettoErogatore().getNome(); + if(idServizio.getVersione()!=null && !"".equals(idServizio.getVersione())){ + fileName+="_"+idServizio.getVersione(); + } + fileName +="."+extSingleArchive; + } + break; + case FRUIZIONE: + if(identificativi.size()>1){ + fileName = prefix+"Fruizioni."+ext; + } + else{ + IDFruizione idFruizione = ((IDFruizione)identificativi.get(0)); + IDServizio idServizio = idFruizione.getIdServizio(); + fileName = idFruizione.getIdFruitore().getTipo()+idFruizione.getIdFruitore().getNome(); + fileName+="_"+idServizio.getTipo()+idServizio.getNome(); + fileName+="_"+idServizio.getSoggettoErogatore().getTipo()+idServizio.getSoggettoErogatore().getNome(); + if(idServizio.getVersione()!=null && !"".equals(idServizio.getVersione())){ + fileName+="_"+idServizio.getVersione(); + } + fileName +="."+extSingleArchive; + } + break; case SERVIZIO_APPLICATIVO: if(identificativi.size()>1){ fileName = prefix+"Applicativi."+ext; diff --git a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/archivi/DocumentoExporter.java b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/archivi/DocumentoExporter.java index 69830c7e66..90bc53a33f 100644 --- a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/archivi/DocumentoExporter.java +++ b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/archivi/DocumentoExporter.java @@ -62,6 +62,7 @@ import org.openspcoop2.core.registry.wsdl.AccordoServizioWrapperUtilities; import org.openspcoop2.message.OpenSPCoop2MessageFactory; import org.openspcoop2.message.xml.XMLUtils; +import org.openspcoop2.pdd.core.jmx.JMXUtils; import org.openspcoop2.protocol.basic.Costanti; import org.openspcoop2.protocol.engine.ProtocolFactoryManager; import org.openspcoop2.protocol.sdk.IProtocolFactory; @@ -81,6 +82,7 @@ import org.openspcoop2.web.ctrlstat.servlet.sa.ServiziApplicativiCore; import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCore; import org.openspcoop2.web.lib.mvc.PageData; +import org.openspcoop2.web.lib.mvc.ServletUtils; import org.slf4j.Logger; /** @@ -157,8 +159,8 @@ private void processRequest(HttpServletRequest request, HttpServletResponse resp String tipoSoggettoFruitore = archiviHelper.getParameter(ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_ACCORDO_TIPO_DOCUMENTO_WSDL_IMPLEMENTATIVO_TIPO_SOGGETTO_FRUITORE); String nomeSoggettoFruitore = archiviHelper.getParameter(ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_ACCORDO_TIPO_DOCUMENTO_WSDL_IMPLEMENTATIVO_NOME_SOGGETTO_FRUITORE); - int idAccordoInt = 0 ; - try{ idAccordoInt = Integer.parseInt(idAccordo); }catch(Exception e){ idAccordoInt = 0 ; } + long idAccordoLong = 0 ; + try{ idAccordoLong = Long.valueOf(idAccordo); }catch(Exception e){ idAccordoLong = 0 ; } ArchiviCore archiviCore = new ArchiviCore(); ProtocolPropertiesCore ppCore = new ProtocolPropertiesCore(archiviCore); @@ -167,7 +169,7 @@ private void processRequest(HttpServletRequest request, HttpServletResponse resp if( ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_ACCORDO_TIPO_DOCUMENTO_DOCUMENTO.equals(tipoDocumentoDaScaricare) ){ - int idAllegatoInt = Integer.parseInt(idAllegato); + long idAllegatoInt = Long.valueOf(idAllegato); if(ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_ACCORDO_PARTE_COMUNE.equals(tipoDocumento)){ Documento doc = archiviCore.getDocumento(idAllegatoInt,true); @@ -194,7 +196,7 @@ else if(ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_ACCORDO_COOPERAZI if(ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_ACCORDO_PARTE_COMUNE.equals(tipoDocumento)){ AccordiServizioParteComuneCore asCore = new AccordiServizioParteComuneCore(archiviCore); - AccordoServizioParteComune as = asCore.getAccordoServizioFull(idAccordoInt); + AccordoServizioParteComune as = asCore.getAccordoServizioFull(idAccordoLong); if( ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_ACCORDO_TIPO_DOCUMENTO_WSDL_DEFINITORIO.equals(tipoDocumentoDaScaricare) ){ fileName = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_WSDL_INTERFACCIA_DEFINITORIA; @@ -291,7 +293,7 @@ else if( ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_ACCORDO_TIPO_DOC else if(ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_ACCORDO_PARTE_SPECIFICA.equals(tipoDocumento)){ AccordiServizioParteSpecificaCore asCore = new AccordiServizioParteSpecificaCore(archiviCore); - AccordoServizioParteSpecifica as = asCore.getAccordoServizioParteSpecifica(idAccordoInt); + AccordoServizioParteSpecifica as = asCore.getAccordoServizioParteSpecifica(idAccordoLong); if( ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_ACCORDO_TIPO_DOCUMENTO_WSDL_IMPLEMENTATIVO_EROGATORE.equals(tipoDocumentoDaScaricare) ){ fileName = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_WSDL_IMPLEMENTATIVO_EROGATORE_WSDL; @@ -330,7 +332,7 @@ else if( ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_ACCORDO_TIPO_DOC } else if(ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_PROTOCOL_PROPERTY.equals(tipoDocumento)){ if(ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_DOCUMENTO_PROTOCOL_PROPERTY_BINARY.equals(tipoDocumentoDaScaricare)){ - int idAllegatoInt = Integer.parseInt(idAllegato); + long idAllegatoInt = Long.valueOf(idAllegato); ProtocolProperty bp = ppCore.getProtocolPropertyBinaria(idAllegatoInt); fileName = bp.getFile(); docBytes = bp.getByteFile(); @@ -936,6 +938,48 @@ else if(ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_PORTA_DELEGATA.eq throw new ServletException("Tipo documento ["+tipoDocumentoDaScaricare+"] non gestito per il tipo archivio ["+tipoDocumento+"]"); } } + else if(ArchiviCostanti.PARAMETRO_VALORE_ARCHIVI_ALLEGATO_TIPO_CONNETTORE_CERTIFICATO_SERVER.equals(tipoDocumento)){ + + String aliasForVerificaConnettore = archiviHelper.getParameter(ArchiviCostanti.PARAMETRO_ARCHIVI_CERTIFICATI_SERVER_ALIAS_CONNETTORE); + + String tipoConnettoreRegistro = archiviHelper.getParameter(ArchiviCostanti.PARAMETRO_ARCHIVI_CERTIFICATI_SERVER_TIPO_CONNETTORE_REGISTRO); + boolean connettoreRegistro = ServletUtils.isCheckBoxEnabled(tipoConnettoreRegistro); + String labelConnettore = connettoreRegistro ? "connettore del registro" : "connettore della configurazione"; + + String idConnettore = archiviHelper.getParameter(ArchiviCostanti.PARAMETRO_ARCHIVI_CERTIFICATI_SERVER_ID_CONNETTORE); + + String nameConnettore = archiviHelper.getParameter(ArchiviCostanti.PARAMETRO_ARCHIVI_CERTIFICATI_SERVER_NOME_CONNETTORE); + + fileName = nameConnettore + ".pem"; + + String risorsa = null; + if(connettoreRegistro) { + risorsa = archiviCore.getJmxPdD_configurazioneSistema_nomeRisorsaAccessoRegistroServizi(aliasForVerificaConnettore); + } + else { + risorsa = archiviCore.getJmxPdD_configurazioneSistema_nomeRisorsaConfigurazionePdD(aliasForVerificaConnettore); + } + + try{ + String stato = archiviCore.invokeJMXMethod(archiviCore.getGestoreRisorseJMX(aliasForVerificaConnettore), aliasForVerificaConnettore, archiviCore.getJmxPdD_configurazioneSistema_type(aliasForVerificaConnettore), + risorsa, + archiviCore.getJmxPdD_configurazioneSistema_nomeMetodo_getCertificatiConnettoreById(aliasForVerificaConnettore), + idConnettore+""); + if(stato==null) { + throw new ServletException("Recupero certificati server fallito"); + } + if(stato==null || stato.startsWith(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA)) { + throw new ServletException(stato); + } + else { + docBytes = stato.getBytes(); + } + }catch(Exception e){ + String msgErrore = "Errore durante il recupero dei certificati server del "+labelConnettore+" con id '"+idConnettore+"' (jmxResource '"+risorsa+"') (node:"+aliasForVerificaConnettore+"): "+e.getMessage(); + ControlStationCore.logError(msgErrore, e); + throw new ServletException(msgErrore); + } + } else{ throw new ServletException("Tipo archivio ["+tipoDocumento+"] non gestito (tipo documento: "+tipoDocumentoDaScaricare+")"); } diff --git a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/archivi/Exporter.java b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/archivi/Exporter.java index 74385f1f6e..c8f6a8cace 100644 --- a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/archivi/Exporter.java +++ b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/archivi/Exporter.java @@ -35,6 +35,7 @@ import org.apache.struts.action.ActionMapping; import org.openspcoop2.core.id.IDAccordo; import org.openspcoop2.core.id.IDAccordoCooperazione; +import org.openspcoop2.core.id.IDFruizione; import org.openspcoop2.core.id.IDServizio; import org.openspcoop2.core.id.IDServizioApplicativo; import org.openspcoop2.core.id.IDSoggetto; @@ -170,6 +171,8 @@ public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServlet } break; case ACCORDO_SERVIZIO_PARTE_SPECIFICA: + case EROGAZIONE: + case FRUIZIONE: String tipologia = ServletUtils.getObjectFromSession(session, String.class, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE); boolean gestioneFruitori = false; @@ -196,9 +199,15 @@ public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServlet provenienza = new Parameter(AccordiServizioParteSpecificaCostanti.LABEL_APS, AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_LIST); } } - identificativi = exporterUtils.getIdsAccordiServizioParteSpecifica(objToExport); + identificativi = exporterUtils.getIdsAccordiServizioParteSpecifica(objToExport, gestioneFruitori); for (Object id : identificativi) { - IDServizio idServizio = (IDServizio) id; + IDServizio idServizio = null; + if(gestioneFruitori) { + idServizio = ((IDFruizione) id).getIdServizio(); + } + else { + idServizio = (IDServizio) id; + } String protocollo = soggettiCore.getProtocolloAssociatoTipoSoggetto(idServizio.getSoggettoErogatore().getTipo()); if(protocolli.contains(protocollo)==false){ protocolli.add(protocollo); diff --git a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/archivi/ExporterUtils.java b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/archivi/ExporterUtils.java index 26a4af0794..7452780860 100644 --- a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/archivi/ExporterUtils.java +++ b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/archivi/ExporterUtils.java @@ -35,6 +35,7 @@ import org.openspcoop2.core.config.driver.DriverConfigurazioneNotFound; import org.openspcoop2.core.id.IDAccordo; import org.openspcoop2.core.id.IDAccordoCooperazione; +import org.openspcoop2.core.id.IDFruizione; import org.openspcoop2.core.id.IDGruppo; import org.openspcoop2.core.id.IDRuolo; import org.openspcoop2.core.id.IDScope; @@ -207,18 +208,43 @@ public List getIdsAccordiServizioParteComune(String ids) throws DriverRegistr return idsAccordi; } - public List getIdsAccordiServizioParteSpecifica(String ids) throws DriverRegistroServiziNotFound, DriverRegistroServiziException{ + public List getIdsAccordiServizioParteSpecifica(String ids, boolean isFruizione) throws DriverRegistroServiziNotFound, DriverRegistroServiziException{ List idsAccordi = new ArrayList(); + List fruizioni = new ArrayList(); ArrayList idsToExport = Utilities.parseIdsToRemove(ids); for (String id : idsToExport) { - if(id.contains("@")) { - // fruizioni - id = id.split("@")[0]; + try { + if(isFruizione) { + if(id.contains("@")==false) { + throw new DriverRegistroServiziException("atteso @"); + } + String idServ = id.split("@")[0]; + IDServizio idS = IDServizioFactory.getInstance().getIDServizioFromUri(idServ); + String idFruitore = id.split("@")[1]; + IDSoggetto fruitore = new IDSoggetto(idFruitore.split("/")[0], idFruitore.split("/")[1]); + IDFruizione idFruizione = new IDFruizione(); + idFruizione.setIdFruitore(fruitore); + idFruizione.setIdServizio(idS); + fruizioni.add(idFruizione); + } + else { + if(id.contains("@")) { + // fruizioni + id = id.split("@")[0]; + } + IDServizio idS = IDServizioFactory.getInstance().getIDServizioFromUri(id); + idsAccordi.add(idS); + } + }catch (Exception e) { + throw new DriverRegistroServiziException("Formato id '"+id+"' non valido: "+e.getMessage(),e); } - IDServizio idS = IDServizioFactory.getInstance().getIDServizioFromUri(id); - idsAccordi.add(idS); } - return idsAccordi; + if(isFruizione) { + return fruizioni; + } + else { + return idsAccordi; + } } public List getIdsAccordiCooperazione(String ids) throws DriverRegistroServiziNotFound, DriverRegistroServiziException{ diff --git a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/connettori/ConnettoriCostanti.java b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/connettori/ConnettoriCostanti.java index c0957753e2..2ab4cb3327 100644 --- a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/connettori/ConnettoriCostanti.java +++ b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/connettori/ConnettoriCostanti.java @@ -64,6 +64,7 @@ public class ConnettoriCostanti { public final static String LABEL_SERVER = "Applicativo Server"; public final static String LABEL_CONNETTORE = "Connettore"; + public final static String LABEL_DOWNLOAD_CERTIFICATI_SERVER = "Download Certificati Server"; public final static String LABEL_CONNETTORE_ABILITATO = "Abilitato"; public final static String LABEL_CONNETTORE_PROXY = "Proxy"; public final static String LABEL_CONNETTORE_HTTP = "Autenticazione Http"; diff --git a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/pa/PorteApplicativeVerificaConnettore.java b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/pa/PorteApplicativeVerificaConnettore.java index 3cfac38aef..46c0f987c2 100644 --- a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/pa/PorteApplicativeVerificaConnettore.java +++ b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/pa/PorteApplicativeVerificaConnettore.java @@ -277,7 +277,9 @@ public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServlet if(aliases.size()==1 || alias!=null) { - porteApplicativeHelper.addDescrizioneVerificaConnettoreToDati(dati, nomeServer, labelConnettore, connettore); + porteApplicativeHelper.addDescrizioneVerificaConnettoreToDati(dati, nomeServer, labelConnettore, connettore, false, + (CostantiControlStation.LABEL_VERIFICA_CONNETTORE_TUTTI_I_NODI.equals(alias)) ? aliases.get(0) : (alias!=null ? alias : aliases.get(0)) + ); if (!porteApplicativeHelper.isEditModeInProgress()) { diff --git a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/pd/PorteDelegateVerificaConnettore.java b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/pd/PorteDelegateVerificaConnettore.java index 69acdcb881..c1a35fac22 100644 --- a/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/pd/PorteDelegateVerificaConnettore.java +++ b/tools/web_interfaces/control_station/src/org/openspcoop2/web/ctrlstat/servlet/pd/PorteDelegateVerificaConnettore.java @@ -173,7 +173,9 @@ public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServlet if(aliases.size()==1 || alias!=null) { - porteDelegateHelper.addDescrizioneVerificaConnettoreToDati(dati, null, labelConnettore, connettore); + porteDelegateHelper.addDescrizioneVerificaConnettoreToDati(dati, null, labelConnettore, connettore, true, + (CostantiControlStation.LABEL_VERIFICA_CONNETTORE_TUTTI_I_NODI.equals(alias)) ? aliases.get(0) : (alias!=null ? alias : aliases.get(0)) + ); if (!porteDelegateHelper.isEditModeInProgress()) {