ServiziApplicativiHelper.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2024 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.web.ctrlstat.servlet.sa;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;
import org.openspcoop2.core.commons.Filtri;
import org.openspcoop2.core.commons.ISearch;
import org.openspcoop2.core.commons.Liste;
import org.openspcoop2.core.commons.SearchUtils;
import org.openspcoop2.core.config.Connettore;
import org.openspcoop2.core.config.Credenziali;
import org.openspcoop2.core.config.GenericProperties;
import org.openspcoop2.core.config.InvocazionePorta;
import org.openspcoop2.core.config.InvocazioneServizio;
import org.openspcoop2.core.config.PortaApplicativa;
import org.openspcoop2.core.config.PortaApplicativaServizioApplicativo;
import org.openspcoop2.core.config.PortaDelegata;
import org.openspcoop2.core.config.PortaDelegataServizioApplicativo;
import org.openspcoop2.core.config.Proprieta;
import org.openspcoop2.core.config.RispostaAsincrona;
import org.openspcoop2.core.config.ServizioApplicativo;
import org.openspcoop2.core.config.constants.CostantiConfigurazione;
import org.openspcoop2.core.config.constants.CredenzialeTipo;
import org.openspcoop2.core.config.constants.StatoFunzionalita;
import org.openspcoop2.core.config.constants.TipologiaErogazione;
import org.openspcoop2.core.config.constants.TipologiaFruizione;
import org.openspcoop2.core.config.driver.DriverConfigurazioneException;
import org.openspcoop2.core.config.driver.DriverConfigurazioneNotFound;
import org.openspcoop2.core.config.driver.FiltroRicercaPorteApplicative;
import org.openspcoop2.core.config.driver.FiltroRicercaPorteDelegate;
import org.openspcoop2.core.config.driver.db.IDServizioApplicativoDB;
import org.openspcoop2.core.constants.CostantiLabel;
import org.openspcoop2.core.constants.TipiConnettore;
import org.openspcoop2.core.id.IDPortaApplicativa;
import org.openspcoop2.core.id.IDPortaDelegata;
import org.openspcoop2.core.id.IDServizio;
import org.openspcoop2.core.id.IDServizioApplicativo;
import org.openspcoop2.core.id.IDSoggetto;
import org.openspcoop2.core.mapping.MappingErogazionePortaApplicativa;
import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
import org.openspcoop2.core.registry.Ruolo;
import org.openspcoop2.core.registry.Soggetto;
import org.openspcoop2.core.registry.constants.PddTipologia;
import org.openspcoop2.core.registry.driver.DriverRegistroServiziException;
import org.openspcoop2.core.registry.driver.DriverRegistroServiziNotFound;
import org.openspcoop2.core.registry.driver.IDServizioFactory;
import org.openspcoop2.message.constants.ServiceBinding;
import org.openspcoop2.protocol.engine.ConfigurazioneFiltroServiziApplicativi;
import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
import org.openspcoop2.protocol.sdk.IProtocolFactory;
import org.openspcoop2.protocol.sdk.config.IProtocolConfiguration;
import org.openspcoop2.protocol.sdk.constants.ProfiloDiCollaborazione;
import org.openspcoop2.utils.certificate.ArchiveLoader;
import org.openspcoop2.utils.certificate.ArchiveType;
import org.openspcoop2.utils.certificate.Certificate;
import org.openspcoop2.utils.certificate.KeystoreParams;
import org.openspcoop2.utils.certificate.byok.BYOKManager;
import org.openspcoop2.utils.crypt.PasswordGenerator;
import org.openspcoop2.utils.crypt.PasswordVerifier;
import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
import org.openspcoop2.web.ctrlstat.core.ControlStationCoreException;
import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
import org.openspcoop2.web.ctrlstat.costanti.InUsoType;
import org.openspcoop2.web.ctrlstat.driver.DriverControlStationException;
import org.openspcoop2.web.ctrlstat.driver.DriverControlStationNotFound;
import org.openspcoop2.web.ctrlstat.plugins.ExtendedConnettore;
import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaCostanti;
import org.openspcoop2.web.ctrlstat.servlet.aps.erogazioni.ErogazioniCostanti;
import org.openspcoop2.web.ctrlstat.servlet.archivi.ArchiviCostanti;
import org.openspcoop2.web.ctrlstat.servlet.archivi.ExporterUtils;
import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoreStatusParams;
import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriCostanti;
import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriHelper;
import org.openspcoop2.web.ctrlstat.servlet.pa.PorteApplicativeCostanti;
import org.openspcoop2.web.ctrlstat.servlet.ruoli.RuoliCostanti;
import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCostanti;
import org.openspcoop2.web.lib.mvc.AreaBottoni;
import org.openspcoop2.web.lib.mvc.BinaryParameter;
import org.openspcoop2.web.lib.mvc.Costanti;
import org.openspcoop2.web.lib.mvc.DataElement;
import org.openspcoop2.web.lib.mvc.DataElementType;
import org.openspcoop2.web.lib.mvc.PageData;
import org.openspcoop2.web.lib.mvc.Parameter;
import org.openspcoop2.web.lib.mvc.ServletUtils;
import org.openspcoop2.web.lib.mvc.TipoOperazione;
/**
* ServiziApplicativiHelper
*
* @author Poli Andrea (apoli@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class ServiziApplicativiHelper extends ConnettoriHelper {
public ServiziApplicativiHelper(HttpServletRequest request, PageData pd,
HttpSession session) throws Exception {
super(request, pd, session);
}
public ServiziApplicativiHelper(ControlStationCore core, HttpServletRequest request, PageData pd,
HttpSession session) throws Exception {
super(core, request, pd, session);
}
// Controlla i dati dell'invocazione servizio del servizioApplicativo
public boolean servizioApplicativoEndPointCheckData(String protocollo, List<ExtendedConnettore> listExtendedConnettore, ServizioApplicativo saOld)
throws Exception {
try{
String sbustamento= this.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_SBUSTAMENTO_SOAP);
String sbustamentoInformazioniProtocolloRichiesta = this.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_SBUSTAMENTO_INFO_PROTOCOLLO_RICHIESTA);
String getmsg = this.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_MESSAGE_BOX);
String getmsgUsername = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_USERNAME);
String getmsgPassword = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_PASSWORD);
String tipoauth = this.getParameter(ConnettoriCostanti.PARAMETRO_INVOCAZIONE_CREDENZIALI_TIPO_AUTENTICAZIONE);
if (tipoauth == null) {
tipoauth = ConnettoriCostanti.DEFAULT_AUTENTICAZIONE_TIPO;
}
String utente = this.getParameter(ConnettoriCostanti.PARAMETRO_INVOCAZIONE_CREDENZIALI_AUTENTICAZIONE_USERNAME);
String password = this.getLockedParameter(ConnettoriCostanti.PARAMETRO_INVOCAZIONE_CREDENZIALI_AUTENTICAZIONE_PASSWORD);
// String confpw = this.getParameter("confpw");
String servizioApplicativoServerEnabledS = this.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_ABILITA_USO_APPLICATIVO_SERVER);
boolean servizioApplicativoServerEnabled = ServletUtils.isCheckBoxEnabled(servizioApplicativoServerEnabledS);
// String servizioApplicativoServer = this.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_ID_APPLICATIVO_SERVER);
if(!servizioApplicativoServerEnabled) {
// Campi obbligatori
if (tipoauth.equals("")) {
this.pd.setMessage("Dati incompleti. È necessario indicare il Tipo");
return false;
}
if (tipoauth.equals(CostantiConfigurazione.CREDENZIALE_BASIC.toString()) && (utente.equals("") || password.equals("") /*
* ||
* confpw
* .
* equals
* (
* ""
* )
*/)) {
String tmpElenco = "";
if (utente.equals("")) {
tmpElenco = ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_USERNAME;
}
if (password.equals("")) {
if (tmpElenco.equals("")) {
tmpElenco = ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_PASSWORD;
} else {
tmpElenco = tmpElenco + ", "+ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_PASSWORD;
}
}
/*
* if (confpw.equals("")) { if (tmpElenco.equals("")) { tmpElenco =
* "Conferma password"; } else { tmpElenco = tmpElenco + ", Conferma
* password"; } }
*/
this.pd.setMessage("Dati incompleti. È necessario indicare: " + tmpElenco);
return false;
}
// Controllo che non ci siano spazi nei campi di testo
if (tipoauth.equals(CostantiConfigurazione.CREDENZIALE_BASIC.toString()) && ((utente.indexOf(" ") != -1) || (password.indexOf(" ") != -1))) {
this.pd.setMessage("Non inserire spazi nei campi di testo");
return false;
}
// Controllo che i campi DataElementType.SELECT abbiano uno dei valori ammessi
if (!CostantiConfigurazione.ABILITATO.toString().equals(getmsg) && !CostantiConfigurazione.DISABILITATO.toString().equals(getmsg)) {
this.pd.setMessage("Servizio '"+ServiziApplicativiCostanti.LABEL_SERVIZIO_MESSAGE_BOX+"' dev'essere "+CostantiConfigurazione.ABILITATO+" o "+CostantiConfigurazione.DISABILITATO);
return false;
}
if (getmsg!=null && getmsg.equals(CostantiConfigurazione.ABILITATO.toString()) ){
boolean add = true;
if(saOld!=null && saOld.getInvocazionePorta()!=null && saOld.getInvocazionePorta().sizeCredenzialiList()>0) {
Credenziali c = saOld.getInvocazionePorta().getCredenziali(0);
if(CredenzialeTipo.BASIC.equals(c.getTipo())) {
add = false;
}
}
boolean encryptEnabled = this.saCore.isApplicativiPasswordEncryptEnabled();
boolean validaPassword = false;
if(add || !encryptEnabled) {
validaPassword = true;
}
else {
String changePwd = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CHANGE_PASSWORD);
if(ServletUtils.isCheckBoxEnabled(changePwd)) {
validaPassword = true;
}
}
boolean passwordEmpty = false;
if(validaPassword) {
if(getmsgPassword==null || getmsgPassword.equals("")) {
passwordEmpty = true;
}
}
if(getmsgUsername==null || "".equals(getmsgUsername)) {
this.pd.setMessage("Dati incompleti. È necessario indicare 'Username' per il servizio '"+ServiziApplicativiCostanti.LABEL_SERVIZIO_MESSAGE_BOX+"'");
return false;
}
if(passwordEmpty) {
this.pd.setMessage("Dati incompleti. È necessario indicare 'Password' per il servizio '"+ServiziApplicativiCostanti.LABEL_SERVIZIO_MESSAGE_BOX+"'");
return false;
}
if (((getmsgUsername.indexOf(" ") != -1) || (validaPassword && getmsgPassword.indexOf(" ") != -1))) {
this.pd.setMessage("Non inserire spazi nei campi di testo");
return false;
}
if(validaPassword) {
PasswordVerifier passwordVerifier = this.saCore.getApplicativiPasswordVerifier();
if(passwordVerifier!=null){
StringBuilder motivazioneErrore = new StringBuilder();
if(passwordVerifier.validate(getmsgUsername, getmsgPassword, motivazioneErrore)==false){
this.pd.setMessage(motivazioneErrore.toString());
return false;
}
}
}
// recupera lista servizi applicativi con stesse credenziali
boolean checkPassword = this.saCore.isApplicativiCredenzialiBasicCheckUniqueUsePassword(); // la password non viene utilizzata per riconoscere se l'username e' già utilizzato.
List<ServizioApplicativo> saList = this.saCore.servizioApplicativoWithCredenzialiBasicList(getmsgUsername, getmsgPassword, checkPassword);
for (int i = 0; i < saList.size(); i++) {
ServizioApplicativo sa = saList.get(i);
if(saOld!=null && saOld.getId().longValue() == sa.getId().longValue()) {
continue;
}
// Messaggio di errore
IDSoggetto idSoggettoProprietario = new IDSoggetto(sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario());
String labelSoggetto = this.getLabelNomeSoggetto(idSoggettoProprietario);
if(sa.getTipo()!=null && StringUtils.isNotEmpty(sa.getTipo())) {
this.pd.setMessage("L'applicativo "+sa.getNome()+" (soggetto: "+labelSoggetto+") possiede già l'utente (http-basic) indicato");
}
else {
IDServizioApplicativo idSA = new IDServizioApplicativo();
idSA.setIdSoggettoProprietario(idSoggettoProprietario);
idSA.setNome(sa.getNome());
List<IDPortaApplicativa> list = this.porteApplicativeCore.porteApplicativeWithApplicativoErogatore(idSA);
String labelErogazione = sa.getNome();
if(list!=null && !list.isEmpty()) {
try {
PortaApplicativa paFound = this.porteApplicativeCore.getPortaApplicativa(list.get(0));
MappingErogazionePortaApplicativa mappingPA = this.porteApplicativeCore.getMappingErogazionePortaApplicativa(paFound);
labelErogazione = this.getLabelIdServizio(mappingPA.getIdServizio());
if(!mappingPA.isDefault()) {
labelErogazione = labelErogazione+" (gruppo:"+mappingPA.getDescrizione()+")";
}
}catch(Throwable t) {
this.logError("Errore durante l'identificazione dell'erogazione: "+t.getMessage(),t);
}
}
this.pd.setMessage("L'erogazione "+labelErogazione+" possiede già l'utente (http-basic) indicato per il servizio '"+ServiziApplicativiCostanti.LABEL_SERVIZIO_MESSAGE_BOX+"'");
}
return false;
}
}
if (!tipoauth.equals(CostantiConfigurazione.CREDENZIALE_BASIC.toString()) &&
!tipoauth.equals(CostantiConfigurazione.CREDENZIALE_SSL.toString()) &&
!tipoauth.equals("nessuna")) {
this.pd.setMessage("Tipo Autenticazione dev'essere "+CostantiConfigurazione.CREDENZIALE_BASIC.toString()+", "
+ ""+CostantiConfigurazione.CREDENZIALE_SSL.toString()+" o nessuna");
return false;
}
if (!sbustamento.equals(CostantiConfigurazione.ABILITATO.toString()) && !sbustamento.equals(CostantiConfigurazione.DISABILITATO.toString())) {
this.pd.setMessage("Sbustamento SOAP dev'essere "+CostantiConfigurazione.ABILITATO+" o "+CostantiConfigurazione.DISABILITATO);
return false;
}
if (!sbustamentoInformazioniProtocolloRichiesta.equals(CostantiConfigurazione.ABILITATO.toString()) && !sbustamentoInformazioniProtocolloRichiesta.equals(CostantiConfigurazione.DISABILITATO.toString())) {
this.pd.setMessage("Sbustamento Informazioni del Protocollo dev'essere "+CostantiConfigurazione.ABILITATO+" o "+CostantiConfigurazione.DISABILITATO);
return false;
}
// Controllo che le password corrispondano
/*
* if (tipoauth.equals("basic") && !password.equals(confpw)) {
* this.pd.setMessage("Le password non corrispondono"); return false; }
*/
}
if (!this.endPointCheckData(null, protocollo, true, listExtendedConnettore)) {
return false;
}
return true;
} catch (Exception e) {
this.logError("Exception: " + e.getMessage(), e);
throw new Exception(e.getMessage(),e);
}
}
public List<DataElement> addServizioApplicativoToDati(List<DataElement> dati, String oldNomeSA, String nome, String descrizione, String tipoENomeSoggetto, String fault, TipoOperazione tipoOperazione,
long idSA, Boolean contaListe,String[] soggettiList,String[] soggettiListLabel, String provider, String dominio,
String utente,String password, String subject, String principal, String tipoauth,
String faultactor,String genericfault,String prefixfault, String invrif, String sbustamentoInformazioniProtocolloRisposta,
String servlet,String id, String nomeProtocollo,
String ruoloFruitore, String ruoloErogatore,
String sbustamento, String sbustamentoInformazioniProtocolloRichiesta, String getmsg,
String invrifRichiesta, String risprif,
String endpointtype, String autenticazioneHttp, String url, String nomeCodaJMS, String tipoCodaJMS,
String userRichiesta, String passwordRichiesta, String initcont, String urlpgk,
String provurl, String connfact, String sendas,
String httpsurl, String httpstipologia, boolean httpshostverify,
boolean httpsTrustVerifyCert, String httpspath, String httpstipo, String httpspwd,
String httpsalgoritmo, boolean httpsstato, String httpskeystore,
String httpspwdprivatekeytrust, String httpspathkey,
String httpstipokey, String httpspwdkey,
String httpspwdprivatekey, String httpsalgoritmokey,
String httpsKeyAlias, String httpsTrustStoreCRLs, String httpsTrustStoreOCSPPolicy, String httpsKeyStoreBYOKPolicy,
String tipoconn,
String connettoreDebug,
Boolean isConnettoreCustomUltimaImmagineSalvata,
String proxyEnabled, String proxyHost, String proxyPort, String proxyUsername, String proxyPassword,
String tempiRispostaEnabled, String tempiRispostaConnectionTimeout, String tempiRispostaReadTimeout, String tempiRispostaTempoMedioRisposta,
String opzioniAvanzate, String transferMode, String transferModeChunkSize, String redirectMode, String redirectMaxHop,
String requestOutputFileName, String requestOutputFileNamePermissions, String requestOutputFileNameHeaders, String requestOutputFileNameHeadersPermissions,
String requestOutputParentDirCreateIfNotExists,String requestOutputOverwriteIfExists,
String responseInputMode, String responseInputFileName, String responseInputFileNameHeaders, String responseInputDeleteAfterRead, String responseInputWaitTime,
String tipoProtocollo, List<String> listaTipiProtocollo, List<ExtendedConnettore> listExtendedConnettore,String tipoCredenzialiSSLSorgente, ArchiveType tipoCredenzialiSSLTipoArchivio, BinaryParameter tipoCredenzialiSSLFileCertificato,
String tipoCredenzialiSSLFileCertificatoPassword,
List<String> listaAliasEstrattiCertificato, String tipoCredenzialiSSLAliasCertificato, String tipoCredenzialiSSLAliasCertificatoSubject, String tipoCredenzialiSSLAliasCertificatoIssuer,
String tipoCredenzialiSSLAliasCertificatoType, String tipoCredenzialiSSLAliasCertificatoVersion, String tipoCredenzialiSSLAliasCertificatoSerialNumber, String tipoCredenzialiSSLAliasCertificatoSelfSigned,
String tipoCredenzialiSSLAliasCertificatoNotBefore, String tipoCredenzialiSSLAliasCertificatoNotAfter, String tipoCredenzialiSSLVerificaTuttiICampi, String tipoCredenzialiSSLConfigurazioneManualeSelfSigned,
String issuer,String tipoCredenzialiSSLStatoElaborazioneCertificato,
String changepwd,
String multipleApiKey, String appId, String apiKey,
boolean autenticazioneToken, String tokenPolicy, String tipoSA, boolean useAsClient,
boolean integrationManagerEnabled,
boolean visualizzaModificaCertificato, boolean visualizzaAddCertificato, String servletCredenzialiList, List<Parameter> parametersServletCredenzialiList, Integer numeroCertificati, String servletCredenzialiAdd,
String tokenPolicySA, String tokenClientIdSA, boolean tokenWithHttpsEnabledByConfigSA,
String autenticazioneApiKey, boolean useOAS3Names, boolean useAppId, String apiKeyHeader, String apiKeyValue, String appIdHeader, String appIdValue,
ConnettoreStatusParams connettoreStatusParams) throws Exception {
if(oldNomeSA!=null && invrifRichiesta!=null) {
// nop
}
ServizioApplicativo sa = null;
if(TipoOperazione.CHANGE.equals(tipoOperazione)){
sa = this.saCore.getServizioApplicativo(idSA);
if(sa==null) {
throw new ControlStationCoreException("Servizi applicativo con id '"+idSA+"' non trovato");
}
IDServizioApplicativo idServizioApplicativo = new IDServizioApplicativo();
idServizioApplicativo.setNome(sa.getNome());
idServizioApplicativo.setIdSoggettoProprietario(new IDSoggetto(sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario()));
String labelApplicativo = (this.isSoggettoMultitenantSelezionato() ? sa.getNome() : this.getLabelServizioApplicativoConDominioSoggetto(idServizioApplicativo));
Parameter pSAId = new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID, sa.getId()+"");
Parameter pSAIdSoggetto = new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER, sa.getIdSoggetto()+"");
Parameter pDominio = new Parameter(SoggettiCostanti.PARAMETRO_SOGGETTO_DOMINIO, dominio);
List<Parameter> listaParametriChange = new ArrayList<>();
listaParametriChange.add(pSAId);
listaParametriChange.add(pSAIdSoggetto);
listaParametriChange.add(pDominio);
// In Uso Button
this.addComandoInUsoButton(labelApplicativo,
idSA+"",
InUsoType.SERVIZIO_APPLICATIVO);
// Verifica Certificati
if(this.core.isApplicativiVerificaCertificati()) {
// Verifica certificati visualizzato solo se il soggetto ha credenziali https
boolean ssl = false;
InvocazionePorta ip = sa.getInvocazionePorta();
for (int i = 0; i < ip.sizeCredenzialiList(); i++) {
Credenziali c = ip.getCredenziali(i);
if(org.openspcoop2.core.config.constants.CredenzialeTipo.SSL.equals(c.getTipo())) {
//&& c.getCertificate()!=null) { non viene ritornato dalla lista
ssl = true;
}
}
// Verifica configurazione modi di sicurezza
boolean modi = this.core.isProfiloModIPA(tipoProtocollo);
boolean sicurezzaMessaggioModi = false;
boolean server = ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_SERVER.equals(sa.getTipo());
if(modi){
KeystoreParams keystoreParams = org.openspcoop2.protocol.utils.ModIUtils.getApplicativoKeystoreParams(sa.getProtocolPropertyList());
sicurezzaMessaggioModi = keystoreParams!= null;
}
if(ssl || sicurezzaMessaggioModi || server) {
this.pd.addComandoVerificaCertificatiElementoButton(ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_VERIFICA_CERTIFICATI, listaParametriChange);
}
}
// Verifica connettività
if(ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_SERVER.equals(sa.getTipo())) {
List<Parameter> listaParametriVerificaConnettivitaChange = new ArrayList<>();
listaParametriVerificaConnettivitaChange.addAll(listaParametriChange);
listaParametriVerificaConnettivitaChange.add(new Parameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTIVITA, "true"));
this.pd.addComandoVerificaConnettivitaElementoButton(ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_VERIFICA_CERTIFICATI, listaParametriVerificaConnettivitaChange);
}
// se e' abilitata l'opzione reset cache per elemento, visualizzo il comando nell'elenco dei comandi disponibili nella lista
if(this.core.isElenchiVisualizzaComandoResetCacheSingoloElemento()){
listaParametriChange.add(new Parameter(CostantiControlStation.PARAMETRO_ELIMINA_ELEMENTO_DALLA_CACHE, "true"));
this.pd.addComandoResetCacheElementoButton(ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE, listaParametriChange);
}
// Proprieta Button
if(sa!=null && this.existsProprietaOggetto(sa.getProprietaOggetto(), sa.getDescrizione())) {
this.addComandoProprietaOggettoButton(labelApplicativo,
idSA+"", InUsoType.SERVIZIO_APPLICATIVO);
}
}
if(ruoloFruitore==null){
ruoloFruitore = TipologiaFruizione.DISABILITATO.getValue();
}
if(ruoloErogatore==null){
ruoloErogatore = TipologiaErogazione.DISABILITATO.getValue();
}
boolean multitenant = this.saCore.isMultitenant();
boolean configurazioneStandardNonApplicabile = false;
// prelevo il flag che mi dice da quale pagina ho acceduto la sezione
Integer parentSA = ServletUtils.getIntegerAttributeFromSession(ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT, this.session, this.request);
if(parentSA == null) parentSA = ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_NONE;
Boolean useIdSoggObject = parentSA == ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_SOGGETTO;
boolean useIdSogg = false;
if(useIdSoggObject!=null) {
useIdSogg = useIdSoggObject.booleanValue();
}
IProtocolFactory<?> p = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(tipoProtocollo);
IProtocolConfiguration config = p.createProtocolConfiguration();
if(TipoOperazione.CHANGE.equals(tipoOperazione)){
DataElement de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID);
de.setValue(id);
de.setType(DataElementType.HIDDEN);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID);
dati.add(de);
}
DataElement de = new DataElement();
if(this.isModalitaCompleta()) {
de.setLabel(ServiziApplicativiCostanti.LABEL_SERVIZIO_APPLICATIVO);
}
else {
de.setLabel(ServiziApplicativiCostanti.LABEL_APPLICATIVO);
}
de.setType(DataElementType.TITLE);
dati.add(de);
if(!useIdSogg) {
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROTOCOLLO);
boolean showProtocolli = TipoOperazione.CHANGE.equals(tipoOperazione) && (this.core.countProtocolli(this.request, this.session)>1);
if( (listaTipiProtocollo != null && listaTipiProtocollo.size() > 1) || showProtocolli){
if(TipoOperazione.CHANGE.equals(tipoOperazione)){
DataElement deLABEL = new DataElement();
deLABEL.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROTOCOLLO);
deLABEL.setType(DataElementType.TEXT);
deLABEL.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROTOCOLLO+CostantiControlStation.PARAMETRO_SUFFIX_LABEL);
deLABEL.setValue(this.getLabelProtocollo(tipoProtocollo));
dati.add(deLABEL);
de.setValue(tipoProtocollo);
de.setType(DataElementType.HIDDEN);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROTOCOLLO);
}else {
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROTOCOLLO);
de.setValues(listaTipiProtocollo);
de.setLabels(this.getLabelsProtocolli(listaTipiProtocollo));
de.setSelected(tipoProtocollo);
de.setType(DataElementType.SELECT);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROTOCOLLO);
de.setPostBack(true);
}
} else {
de.setValue(tipoProtocollo);
de.setType(DataElementType.HIDDEN);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROTOCOLLO);
}
de.setSize(this.getSize());
dati.add(de);
}
boolean dominioEsterno = false;
boolean isSupportatoAutenticazioneApplicativiEsterni = this.saCore.isSupportatoAutenticazioneApplicativiEsterniErogazione(nomeProtocollo);
if(isSupportatoAutenticazioneApplicativiEsterni) {
de = new DataElement();
de.setLabel(SoggettiCostanti.LABEL_PARAMETRO_SOGGETTO_DOMINIO);
de.setName(SoggettiCostanti.PARAMETRO_SOGGETTO_DOMINIO);
if(TipoOperazione.CHANGE.equals(tipoOperazione)){
de.setType(DataElementType.HIDDEN);
de.setValue(dominio);
dati.add(de);
de = new DataElement();
de.setType(DataElementType.TEXT);
de.setLabel(SoggettiCostanti.LABEL_PARAMETRO_SOGGETTO_DOMINIO);
de.setName(SoggettiCostanti.PARAMETRO_SOGGETTO_DOMINIO+CostantiControlStation.PARAMETRO_SUFFIX_LABEL);
String valueDom = dominio;
String [] sdValues = SoggettiCostanti.getSoggettiDominiValue();
String [] sdLabels = SoggettiCostanti.getSoggettiDominiLabel();
for (int i = 0; i < sdValues.length; i++) {
if(sdValues[i].equals(dominio)) {
valueDom = sdLabels[i];
break;
}
}
de.setValue(valueDom);
}
else {
de.setType(DataElementType.SELECT);
de.setValues(SoggettiCostanti.getSoggettiDominiValue());
de.setLabels(SoggettiCostanti.getSoggettiDominiLabel());
de.setSelected(dominio);
de.setPostBack(true);
}
dominioEsterno = SoggettiCostanti.SOGGETTO_DOMINIO_ESTERNO_VALUE.equals(dominio);
dati.add(de);
}
String oldtipoauth = null;
String nomePdd = null;
// se operazione change visualizzo i link per invocazione servizio,
// risposta asincrona
// e ruoli
if (TipoOperazione.CHANGE.equals(tipoOperazione)) {
if(sa==null) {
sa = this.saCore.getServizioApplicativo(idSA);
}
String tipoSoggetto = null;
String nomeSoggetto = null;
if(this.core.isRegistroServiziLocale()){
Soggetto soggetto = this.soggettiCore.getSoggettoRegistro(sa.getIdSoggetto());
tipoSoggetto = soggetto.getTipo();
nomeSoggetto = soggetto.getNome();
nomePdd = soggetto.getPortaDominio();
}
else{
org.openspcoop2.core.config.Soggetto soggetto = this.soggettiCore.getSoggetto(sa.getIdSoggetto());
tipoSoggetto = soggetto.getTipo();
nomeSoggetto = soggetto.getNome();
}
// oldtipoauth
if(sa.getInvocazionePorta()!=null && sa.getInvocazionePorta().sizeCredenzialiList()>0) {
// prendo il primo
CredenzialeTipo tipo = sa.getInvocazionePorta().getCredenziali(0).getTipo();
if(tipo!=null) {
oldtipoauth = tipo.getValue();
}
else {
oldtipoauth = ConnettoriCostanti.AUTENTICAZIONE_TIPO_NESSUNA;
}
}
// soggetto proprietario
de = new DataElement();
if(multitenant && !this.isSoggettoMultitenantSelezionato()) {
de.setType(DataElementType.TEXT);
}
else if(isSupportatoAutenticazioneApplicativiEsterni) {
de.setType(DataElementType.TEXT);
}
else {
de.setType(DataElementType.HIDDEN);
}
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);
de.setValue(tipoENomeSoggetto);
dati.add(de);
if(this.isModalitaCompleta()) {
de = new DataElement();
de.setType(DataElementType.LINK);
de.setValue(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_VISUALIZZA_DATI_PROVIDER);
de.setUrl(SoggettiCostanti.SERVLET_NAME_SOGGETTI_CHANGE,
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID, sa.getIdSoggetto()+""),
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_TIPO_SOGGETTO, tipoSoggetto),
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_NOME_SOGGETTO, nomeSoggetto)
);
dati.add(de);
}
de = new DataElement();
de.setType(DataElementType.HIDDEN);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);
de.setValue(provider);
dati.add(de);
}else{
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);
// Aggiunta di un servizio applicativo passando dal menu'
if(!useIdSogg){
boolean visualizzaSoggetto = isSupportatoAutenticazioneApplicativiEsterni;
if(visualizzaSoggetto) {
if(!dominioEsterno) {
visualizzaSoggetto = soggettiList!=null && soggettiList.length>1;
}
}
if((multitenant && !this.isSoggettoMultitenantSelezionato()) || visualizzaSoggetto) {
de.setType(DataElementType.SELECT);
de.setPostBack(true);
de.setValues(soggettiList);
de.setLabels(soggettiListLabel);
// selezion il provider (se)/che era stato precedentemente
// selezionato
// fix 2866
if ((provider != null) && !provider.equals("")) {
de.setSelected(provider);
}
}
else {
de.setType(DataElementType.HIDDEN);
de.setValue(provider);
}
} else {
de.setType(DataElementType.HIDDEN);
de.setValue(provider);
dati.add(de);
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);
// Aggiunta di un servizio applicativo passando dalla schermata soggetti
org.openspcoop2.core.config.Soggetto sog = this.soggettiCore.getSoggetto(Integer.parseInt(provider));
de.setType(DataElementType.TEXT);
de.setValue(this.getLabelNomeSoggetto(tipoProtocollo, sog.getTipo(), sog.getNome()));
de.setSize(this.getSize());
}
dati.add(de);
}
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_NOME);
de.setValue(nome);
de.setSize(this.getSize());
de.setType(DataElementType.TEXT_EDIT);
de.setRequired(true);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_NOME);
dati.add(de);
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_DESCRIZIONE);
de.setValue(descrizione);
de.setType(DataElementType.TEXT_AREA);
de.setRows(2);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_DESCRIZIONE);
de.setSize( getSize());
dati.add(de);
boolean applicativiServerEnabled = this.saCore.isApplicativiServerEnabled(this);
// Tipo SA
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_TIPO);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_TIPO_SA);
de.setSize(this.getSize());
boolean applicativoServerSelezionabile = true;
if(isSupportatoAutenticazioneApplicativiEsterni &&
PddTipologia.ESTERNO.toString().equals(dominio)){
applicativoServerSelezionabile = false;
tipoSA = ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_CLIENT;
}
if(applicativiServerEnabled) {
if(tipoOperazione.equals(TipoOperazione.ADD) && applicativoServerSelezionabile) {
de.setSelected(tipoSA);
de.setType(DataElementType.SELECT);
de.setLabels(ServiziApplicativiCostanti.getLabelsServiziApplicativiTipo());
de.setValues(ServiziApplicativiCostanti.getValuesServiziApplicativiTipo());
de.setPostBack(true);
} else {
de.setValue(tipoSA);
de.setType(DataElementType.HIDDEN);
dati.add(de);
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_TIPO);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_TIPO_SA+CostantiControlStation.PARAMETRO_SUFFIX_LABEL);
de.setType(DataElementType.TEXT);
de.setValue(this.getTipo(tipoSA, (applicativiServerEnabled && useAsClient)));
}
} else {
de.setType(DataElementType.HIDDEN);
de.setValue(tipoSA);
}
dati.add(de);
if (!this.isModalitaCompleta()) {
//
// de = new DataElement();
// de.setLabel(ServiziApplicativiCostanti.LABEL_FRUITORE);
// de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_RUOLO_FRUITORE);
// de.setPostBack(true);
// de.setType(DataElementType.CHECKBOX);
// if(!TipologiaFruizione.DISABILITATO.equals(ruoloFruitore)){
// de.setSelected(true);
// }
// dati.add(de);
//
// de = new DataElement();
// de.setLabel(ServiziApplicativiCostanti.LABEL_EROGATORE);
// de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_RUOLO_EROGATORE);
// de.setPostBack(true);
// de.setType(DataElementType.CHECKBOX);
// if(!TipologiaErogazione.DISABILITATO.equals(ruoloErogatore)){
// de.setSelected(true);
// }
// dati.add(de);
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_TIPOLOGIA);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_RUOLO_SA);
//de.setPostBack(true);
//de.setType(DataElementType.SELECT);
//de.setValues(ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_RUOLO);
// forzo HIDDEN sempre a meno che non e' in modalita' completa
de.setType(DataElementType.HIDDEN);
if(!TipologiaFruizione.DISABILITATO.equals(ruoloFruitore) && !TipologiaErogazione.DISABILITATO.equals(ruoloErogatore)){
if(!applicativiServerEnabled) {
de.setLabel(null);
de.setValue(CostantiControlStation.LABEL_CONFIGURAZIONE_IMPOSTATA_MODALITA_AVANZATA_SHORT_MESSAGE);
de.setType(DataElementType.TEXT);
de.setPostBack(false);
configurazioneStandardNonApplicabile = true;
}
}
else if(!TipologiaFruizione.DISABILITATO.equals(ruoloFruitore)){
de.setValue(ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_RUOLO_FRUITORE);
if(!applicativiServerEnabled) {
if(tipoauth==null || tipoauth.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_NESSUNA)){
tipoauth = this.saCore.getAutenticazione_generazioneAutomaticaPorteDelegate();
}
} else {
if(ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_CLIENT.equals(tipoSA)) {
if(tipoauth==null || tipoauth.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_NESSUNA)){
tipoauth = this.saCore.getAutenticazione_generazioneAutomaticaPorteDelegate();
}
}
}
}
else if(!TipologiaErogazione.DISABILITATO.equals(ruoloErogatore)){
de.setValue(ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_RUOLO_EROGATORE);
if( (endpointtype==null || TipiConnettore.DISABILITATO.getNome().equals(endpointtype))
&&
(getmsg==null || CostantiConfigurazione.DISABILITATO.equals(getmsg))){
// forzo connettoreAbilitato
this.pd.setMessage("Abilitare il servizio di IntegrationManager prima di disabilitare il connettore");
endpointtype = TipiConnettore.HTTP.getNome();
}
}
else{
// VECCHIO DEFAULT
// de.setSelected(ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_RUOLO_EROGATORE);
// // forzo default
// ruoloErogatore = TipologiaErogazione.TRASPARENTE.getValue();
// // forzo connettoreAbilitato
// endpointtype = TipiConnettore.HTTP.getNome();
de.setValue(ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_RUOLO_FRUITORE);
// forzo default
ruoloFruitore = TipologiaFruizione.NORMALE.getValue();
if(tipoauth==null || tipoauth.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_NESSUNA)){
tipoauth = this.saCore.getAutenticazione_generazioneAutomaticaPorteDelegate();
// label del tasto invia
if(tipoauth.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL) && StringUtils.isNotEmpty(tipoCredenzialiSSLStatoElaborazioneCertificato) && ( tipoCredenzialiSSLStatoElaborazioneCertificato.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO)
||tipoCredenzialiSSLStatoElaborazioneCertificato.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_PASSWORD_NON_PRESENTE)
|| tipoCredenzialiSSLStatoElaborazioneCertificato.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO)
)) {
if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO)) {
this.pd.setLabelBottoneInvia(ConnettoriCostanti.LABEL_BUTTON_INVIA_CARICA_CERTIFICATO);
}
}
}
de.setType(DataElementType.HIDDEN);
}
dati.add(de);
}// fine !modalitàCompleta
// Link Proprieta
if(tipoOperazione.equals(TipoOperazione.CHANGE)) {
de = new DataElement();
de.setType(DataElementType.LINK);
List<Parameter> parametersServletSAChange = new ArrayList<>();
Parameter pIdSA = new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID, sa.getId()+"");
parametersServletSAChange.add(pIdSA);
int idProv = sa.getIdSoggetto().intValue();
Parameter pIdSoggettoSA = new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER, idProv+"");
parametersServletSAChange.add(pIdSoggettoSA);
if(dominio != null) {
Parameter pDominio = new Parameter(SoggettiCostanti.PARAMETRO_SOGGETTO_DOMINIO, dominio);
parametersServletSAChange.add(pDominio);
}
de.setUrl(ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_PROPRIETA_LIST, parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()]));
if (contaListe) {
de.setValue(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROPRIETA+"(" + sa.sizeProprietaList() + ")");
} else {
de.setValue(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROPRIETA);
}
dati.add(de);
}
boolean showLinkInvocazioneServizio = false;
boolean showLinkRispostaAsincrona = false;
boolean supportAsincroni = false;
if (TipoOperazione.CHANGE.equals(tipoOperazione)) {
if (this.isModalitaCompleta() && !this.pddCore.isPddEsterna(nomePdd)) {
showLinkInvocazioneServizio = true;
showLinkRispostaAsincrona = true;
}
else {
if(!this.pddCore.isPddEsterna(nomePdd)){
List<ServiceBinding> serviceBindingListProtocollo = this.core.getServiceBindingListProtocollo(nomeProtocollo);
for (ServiceBinding serviceBinding : serviceBindingListProtocollo) {
supportAsincroni = this.core.isProfiloDiCollaborazioneSupportatoDalProtocollo(nomeProtocollo,serviceBinding, ProfiloDiCollaborazione.ASINCRONO_ASIMMETRICO)
|| this.core.isProfiloDiCollaborazioneSupportatoDalProtocollo(nomeProtocollo, serviceBinding, ProfiloDiCollaborazione.ASINCRONO_SIMMETRICO);
if(supportAsincroni) {
break;
}
}
}
}
}
if(supportAsincroni) {
RispostaAsincrona rispAsin = sa.getRispostaAsincrona();
Connettore connettoreRis = rispAsin != null ? rispAsin.getConnettore() : null;
StatoFunzionalita getMSGRisp = rispAsin != null ? rispAsin.getGetMessage() : null;
boolean attualeConnettoreDisabilitato = (connettoreRis == null || TipiConnettore.DISABILITATO.getNome().equals(connettoreRis.getTipo())) && CostantiConfigurazione.DISABILITATO.equals(getMSGRisp);
if(!attualeConnettoreDisabilitato || !this.isModalitaStandard()) {
de = new DataElement();
de.setType(DataElementType.LINK);
de.setLabel(ServiziApplicativiCostanti.LABEL_RISPOSTA_ASINCRONA);
if(this.pddCore.isPddEsterna(nomePdd)){
de.setType(DataElementType.TEXT);
de.setValue("(non presente)");
}
else{
if (attualeConnettoreDisabilitato) {
// de.setValue(CostantiConfigurazione.DISABILITATO);
de.setValue(ServiziApplicativiCostanti.LABEL_RISPOSTA_ASINCRONA+" (disabilitato)");
} else {
// de.setValue("visualizza");
de.setValue(ServiziApplicativiCostanti.LABEL_RISPOSTA_ASINCRONA+" (visualizza)");
}
de.setUrl(ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_ENDPOINT_RISPOSTA,
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER,sa.getIdSoggetto()+""),
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_NOME_SERVIZIO_APPLICATIVO,sa.getNome()),
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO,sa.getId()+""));
}
dati.add(de);
}
}
boolean showFruitore = false;
boolean showErogatore = false;
boolean connettoreErogatoreForceEnabled = false;
if(applicativiServerEnabled) {
showFruitore = ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_CLIENT.equals(tipoSA);
showErogatore = ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_SERVER.equals(tipoSA);
if(
//va visualizzato comunque se già configurato: !this.isModalitaStandard() &&
getmsg!=null && CostantiConfigurazione.ABILITATO.toString().equals(getmsg)) {
connettoreErogatoreForceEnabled = false;
}
else {
connettoreErogatoreForceEnabled = true;
if(TipiConnettore.DISABILITATO.getNome().equals(endpointtype)) {
endpointtype = TipiConnettore.HTTP.getNome();
}
}
}
else {
showFruitore = !TipologiaFruizione.DISABILITATO.equals(ruoloFruitore);
showErogatore = this.isModalitaStandard() && !TipologiaErogazione.DISABILITATO.equals(ruoloErogatore);
}
boolean postBackViaPost = false;
if(showErogatore) {
postBackViaPost = true;
}
// ************ FRUITORE ********************
if (this.isModalitaCompleta() || showFruitore) {
// if(this.isModalitaStandard()){
// de = new DataElement();
// de.setLabel(ServiziApplicativiCostanti.LABEL_FRUITORE);
// de.setType(DataElementType.TITLE);
// dati.add(de);
//
// de = new DataElement();
// de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_SBUSTAMENTO_INFO_PROTOCOLLO + " '" + nomeProtocollo + "' Risposta");
// de.setType(DataElementType.SELECT);
// de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_SBUSTAMENTO_INFO_PROTOCOLLO_RISPOSTA);
// de.setValues(ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_SBUSTAMENTO_PROTOCOLLO);
// de.setSelected(sbustamentoInformazioniProtocolloRisposta);
// dati.add(de);
// }
// else{
// de = new DataElement();
// de.setLabel(ServiziApplicativiCostanti.LABEL_CREDENZIALI_ACCESSO_PORTA);
// de.setType(DataElementType.TITLE);
// dati.add(de);
// }
// Credenziali di accesso
if (utente == null) {
utente = "";
}
if (password == null) {
password = "";
}
if (subject == null) {
subject = "";
}
if (principal == null) {
principal = "";
}
boolean showLabelCredenzialiAccesso = true;
boolean visualizzaTipoAutenticazione = true;
String titleConfigSslCredenziali = null;
String subtitleConfigSslCredenziali = null;
boolean dominioEsternoProfiloModIPA = dominioEsterno && this.isProfiloModIPA(nomeProtocollo);
if(dominioEsternoProfiloModIPA) {
visualizzaTipoAutenticazione = false;
boolean trovato = false;
for (String tipoAuthModIEsterno: ConnettoriCostanti.CREDENZIALI_MODI_ESTERNO_VALUES) {
if(tipoAuthModIEsterno.equals(tipoauth)) {
trovato = true;
}
}
if(!trovato && !ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN.equals(tipoauth)) {
tipoauth = ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL;
}
String label = CostantiLabel.MODIPA_PROTOCOL_LABEL;
if(label!=null && !"".equals(label)) {
showLabelCredenzialiAccesso = false;
titleConfigSslCredenziali = label;
}
subtitleConfigSslCredenziali = CostantiLabel.MODIPA_SICUREZZA_MESSAGGIO_SUBTITLE_LABEL;
}
if(!dominioEsternoProfiloModIPA) {
dati = this.addCredenzialiToDati(tipoOperazione, dati, tipoauth, oldtipoauth, utente, password, subject, principal, servlet, showLabelCredenzialiAccesso, null, false, visualizzaTipoAutenticazione, null, true,
tipoCredenzialiSSLSorgente, tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato, tipoCredenzialiSSLFileCertificatoPassword,listaAliasEstrattiCertificato,
tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLAliasCertificatoSubject, tipoCredenzialiSSLAliasCertificatoIssuer,
tipoCredenzialiSSLAliasCertificatoType, tipoCredenzialiSSLAliasCertificatoVersion, tipoCredenzialiSSLAliasCertificatoSerialNumber,
tipoCredenzialiSSLAliasCertificatoSelfSigned, tipoCredenzialiSSLAliasCertificatoNotBefore, tipoCredenzialiSSLAliasCertificatoNotAfter,
tipoCredenzialiSSLVerificaTuttiICampi, tipoCredenzialiSSLConfigurazioneManualeSelfSigned, issuer, tipoCredenzialiSSLStatoElaborazioneCertificato,
changepwd,
multipleApiKey, appId, apiKey,
subtitleConfigSslCredenziali, visualizzaModificaCertificato, visualizzaAddCertificato, servletCredenzialiList, parametersServletCredenzialiList, numeroCertificati, servletCredenzialiAdd,
true, tokenPolicySA, tokenClientIdSA, tokenWithHttpsEnabledByConfigSA,
dominioEsterno, tipoProtocollo,
postBackViaPost);
}
else {
// aggiungo dopo il link sui ruoli
}
if (TipoOperazione.CHANGE.equals(tipoOperazione)) {
de = new DataElement();
de.setLabel(RuoliCostanti.LABEL_RUOLI);
de.setType(DataElementType.TITLE);
dati.add(de);
de = new DataElement();
de.setType(DataElementType.LINK);
if(useIdSogg){
de.setUrl(ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_RUOLI_LIST,
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO,sa.getId()+""),
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER,sa.getIdSoggetto()+""));
}
else{
if(this.isModalitaCompleta()) {
de.setUrl(ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_RUOLI_LIST,
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO,sa.getId()+""));
}
else {
// Imposto Accesso da Change!
de.setUrl(ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_RUOLI_LIST,
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO,sa.getId()+""),
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_RUOLI_ACCESSO_DA_CHANGE,Costanti.CHECK_BOX_ENABLED));
}
}
if (contaListe) {
// BugFix OP-674
//List<String> lista1 = this.saCore.servizioApplicativoRuoliList(sa.getId(),new Search(true));
ConsoleSearch searchForCount = new ConsoleSearch(true,1);
this.saCore.servizioApplicativoRuoliList(sa.getId(),searchForCount);
//int numRuoli = lista1.size();
int numRuoli = searchForCount.getNumEntries(Liste.SERVIZIO_APPLICATIVO_RUOLI);
ServletUtils.setDataElementVisualizzaLabel(de,(long)numRuoli);
} else
ServletUtils.setDataElementVisualizzaLabel(de);
dati.add(de);
}
if(dominioEsternoProfiloModIPA) {
if(showLabelCredenzialiAccesso == false) {
de = new DataElement();
de.setLabel(titleConfigSslCredenziali);
de.setType(DataElementType.TITLE);
dati.add(de);
}
dati = this.addCredenzialiToDati(tipoOperazione, dati, tipoauth, oldtipoauth, utente, password, subject, principal, servlet, showLabelCredenzialiAccesso, null, false, visualizzaTipoAutenticazione, null, true,
tipoCredenzialiSSLSorgente, tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato, tipoCredenzialiSSLFileCertificatoPassword,listaAliasEstrattiCertificato,
tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLAliasCertificatoSubject, tipoCredenzialiSSLAliasCertificatoIssuer,
tipoCredenzialiSSLAliasCertificatoType, tipoCredenzialiSSLAliasCertificatoVersion, tipoCredenzialiSSLAliasCertificatoSerialNumber,
tipoCredenzialiSSLAliasCertificatoSelfSigned, tipoCredenzialiSSLAliasCertificatoNotBefore, tipoCredenzialiSSLAliasCertificatoNotAfter,
tipoCredenzialiSSLVerificaTuttiICampi, tipoCredenzialiSSLConfigurazioneManualeSelfSigned, issuer, tipoCredenzialiSSLStatoElaborazioneCertificato,
changepwd,
multipleApiKey, appId, apiKey,
subtitleConfigSslCredenziali, visualizzaModificaCertificato, visualizzaAddCertificato, servletCredenzialiList, parametersServletCredenzialiList, numeroCertificati, servletCredenzialiAdd,
true, tokenPolicySA, tokenClientIdSA, tokenWithHttpsEnabledByConfigSA,
dominioEsterno, tipoProtocollo,
postBackViaPost);
}
}
else {
// Devo far vedere il link dei ruoli anche se il server è utilizzabile come client
if (TipoOperazione.CHANGE.equals(tipoOperazione) && applicativiServerEnabled && ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_SERVER.equals(tipoSA) && useAsClient) {
de = new DataElement();
de.setLabel(RuoliCostanti.LABEL_RUOLI);
de.setType(DataElementType.TITLE);
dati.add(de);
de = new DataElement();
de.setType(DataElementType.LINK);
if(useIdSogg){
de.setUrl(ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_RUOLI_LIST,
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO,sa.getId()+""),
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER,sa.getIdSoggetto()+""));
}
else{
if(this.isModalitaCompleta()) {
de.setUrl(ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_RUOLI_LIST,
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO,sa.getId()+""));
}
else {
// Imposto Accesso da Change!
de.setUrl(ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_RUOLI_LIST,
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO,sa.getId()+""),
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_RUOLI_ACCESSO_DA_CHANGE,Costanti.CHECK_BOX_ENABLED));
}
}
if (contaListe) {
// BugFix OP-674
//List<String> lista1 = this.saCore.servizioApplicativoRuoliList(sa.getId(),new Search(true));
ConsoleSearch searchForCount = new ConsoleSearch(true,1);
this.saCore.servizioApplicativoRuoliList(sa.getId(),searchForCount);
//int numRuoli = lista1.size();
int numRuoli = searchForCount.getNumEntries(Liste.SERVIZIO_APPLICATIVO_RUOLI);
ServletUtils.setDataElementVisualizzaLabel(de,(long)numRuoli);
} else
ServletUtils.setDataElementVisualizzaLabel(de);
dati.add(de);
}
}
boolean avanzatoFruitore = this.isModalitaAvanzata() &&
!TipologiaFruizione.DISABILITATO.equals(ruoloFruitore);
boolean faultChoice = avanzatoFruitore && config.isSupportoSceltaFault();
if (faultChoice) {
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_ERRORE_APPLICATIVO);
de.setType(DataElementType.TITLE);
dati.add(de);
}
if (TipoOperazione.ADD.equals(tipoOperazione)) {
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_FAULT);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_FAULT);
if (faultChoice) {
de.setType(DataElementType.SELECT);
de.setValues(ServiziApplicativiCostanti.getServiziApplicativiFault());
de.setSelected(fault);
}
else{
de.setType(DataElementType.HIDDEN);
de.setValue(fault);
}
dati.add(de);
}
else{
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_FAULT);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_FAULT);
if (faultChoice) {
de.setType(DataElementType.SELECT);
de.setValues(ServiziApplicativiCostanti.getServiziApplicativiFault());
de.setSelected(fault);
if(postBackViaPost) {
de.setPostBack_viaPOST(true);
}
else {
de.setPostBack(true);
}
}
else{
de.setType(DataElementType.HIDDEN);
de.setValue(fault);
}
dati.add(de);
if (fault.equals(ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_FAULT_SOAP)) {
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_FAULT_ACTOR);
de.setValue(faultactor);
if (faultChoice) {
de.setType(DataElementType.TEXT_EDIT);
}
else{
de.setType(DataElementType.HIDDEN);
}
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_FAULT_ACTOR);
de.setSize(this.getSize());
dati.add(de);
}
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_FAULT_GENERIC_CODE);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_FAULT_GENERIC_CODE);
if (faultChoice) {
de.setType(DataElementType.SELECT);
de.setValues(ServiziApplicativiCostanti.getServiziApplicativiFaultGenericCode());
de.setSelected(genericfault);
}
else{
de.setType(DataElementType.HIDDEN);
de.setValue(genericfault);
}
dati.add(de);
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_FAULT_PREFIX);
de.setValue(prefixfault);
if (faultChoice) {
de.setType(DataElementType.TEXT_EDIT);
}
else{
de.setType(DataElementType.HIDDEN);
}
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_FAULT_PREFIX);
de.setSize(this.getSize());
dati.add(de);
}
if( (this.isModalitaCompleta() && !TipoOperazione.ADD.equals(tipoOperazione)) ||
(avanzatoFruitore && config.isSupportoSbustamentoProtocollo()) ) {
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_TRATTAMENTO_MESSAGGIO);
de.setType(DataElementType.TITLE);
dati.add(de);
}
de = new DataElement();
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_SBUSTAMENTO_INFO_PROTOCOLLO_RISPOSTA);
de.setLabel(ServiziApplicativiCostanti.getLabelSbustamentoProtocollo(nomeProtocollo));
if(avanzatoFruitore && config.isSupportoSbustamentoProtocollo()){
de.setType(DataElementType.SELECT);
de.setValues(ServiziApplicativiCostanti.getServiziApplicativiSbustamentoProtocollo());
de.setSelected(sbustamentoInformazioniProtocolloRisposta);
}
else {
de.setType(DataElementType.HIDDEN);
de.setValue(sbustamentoInformazioniProtocolloRisposta);
}
dati.add(de);
if (this.isModalitaCompleta()==false) {
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_INVIO_PER_RIFERIMENTO);
de.setType(DataElementType.HIDDEN);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_INVIO_PER_RIFERIMENTO_RISPOSTA);
de.setValue(invrif == null || "".equals(invrif) ? CostantiConfigurazione.DISABILITATO.toString() : invrif);
dati.add(de);
} else {
if (!TipoOperazione.ADD.equals(tipoOperazione)) {
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_INVIO_PER_RIFERIMENTO);
de.setType(DataElementType.SELECT);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_INVIO_PER_RIFERIMENTO_RISPOSTA);
de.setValues(ServiziApplicativiCostanti.getServiziApplicativiInvioPerRiferimento());
de.setSelected(invrif);
dati.add(de);
}else{
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_INVIO_PER_RIFERIMENTO);
de.setType(DataElementType.HIDDEN);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_INVIO_PER_RIFERIMENTO_RISPOSTA);
de.setValue(invrif == null || "".equals(invrif) ? ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_INVIO_PER_RIFERIMENTO_DISABILITATO : invrif);
dati.add(de);
}
}
// se operazione change visualizzo i link per invocazione servizio,
// risposta asincrona
if (showLinkInvocazioneServizio || showLinkRispostaAsincrona) {
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_INFO_INTEGRAZIONE);
de.setType(DataElementType.TITLE);
dati.add(de);
// invocazione servizio
if(showLinkInvocazioneServizio) {
InvocazioneServizio invServ = sa.getInvocazioneServizio();
Connettore connettoreInv = invServ != null ? invServ.getConnettore() : null;
StatoFunzionalita getMSGInv = invServ != null ? invServ.getGetMessage() : null;
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_INVOCAZIONE_SERVIZIO);
de.setType(DataElementType.LINK);
if(this.pddCore.isPddEsterna(nomePdd)){
de.setType(DataElementType.TEXT);
de.setValue("(non presente)");
} else {
if ((connettoreInv == null || TipiConnettore.DISABILITATO.getNome().equals(connettoreInv.getTipo())) && CostantiConfigurazione.DISABILITATO.equals(getMSGInv)) {
de.setValue(ServiziApplicativiCostanti.LABEL_INVOCAZIONE_SERVIZIO+" (disabilitato)");
} else {
de.setValue(ServiziApplicativiCostanti.LABEL_INVOCAZIONE_SERVIZIO+" (visualizza)");
}
de.setUrl(ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_ENDPOINT,
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER,sa.getIdSoggetto()+""),
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_NOME_SERVIZIO_APPLICATIVO,sa.getNome()),
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO,sa.getId()+"")
);
}
dati.add(de);
}
// risposta asincrona
if(showLinkRispostaAsincrona) {
RispostaAsincrona rispAsin = sa.getRispostaAsincrona();
Connettore connettoreRis = rispAsin != null ? rispAsin.getConnettore() : null;
StatoFunzionalita getMSGRisp = rispAsin != null ? rispAsin.getGetMessage() : null;
de = new DataElement();
de.setType(DataElementType.LINK);
de.setLabel(ServiziApplicativiCostanti.LABEL_RISPOSTA_ASINCRONA);
if(this.pddCore.isPddEsterna(nomePdd)){
de.setType(DataElementType.TEXT);
de.setValue("(non presente)");
}
else{
if ((connettoreRis == null || TipiConnettore.DISABILITATO.getNome().equals(connettoreRis.getTipo())) && CostantiConfigurazione.DISABILITATO.equals(getMSGRisp)) {
// de.setValue(CostantiConfigurazione.DISABILITATO);
de.setValue(ServiziApplicativiCostanti.LABEL_RISPOSTA_ASINCRONA+" (disabilitato)");
} else {
// de.setValue("visualizza");
de.setValue(ServiziApplicativiCostanti.LABEL_RISPOSTA_ASINCRONA+" (visualizza)");
}
de.setUrl(ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_ENDPOINT_RISPOSTA,
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER,sa.getIdSoggetto()+""),
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_NOME_SERVIZIO_APPLICATIVO,sa.getNome()),
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO,sa.getId()+""));
}
dati.add(de);
}
}
// ************ EROGATORE ********************
if(showErogatore){
boolean servizioApplicativoServerEnabled = false;
if (utente == null) {
utente = "";
}
if (password == null) {
password = "";
}
this.addEndPointToDati(dati,id,nome,sbustamento,sbustamentoInformazioniProtocolloRichiesta,
getmsg, utente, password, true, invrif,risprif,nomeProtocollo,false,true, true,
parentSA,null,null,servizioApplicativoServerEnabled,
tipoSA, useAsClient,
integrationManagerEnabled,
tipoOperazione, tipoCredenzialiSSLVerificaTuttiICampi, changepwd,
postBackViaPost);
if(!applicativiServerEnabled && TipologiaFruizione.DISABILITATO.equals(ruoloFruitore) &&
CostantiConfigurazione.ABILITATO.equals(getmsg)){
if(tipoauth==null || tipoauth.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_NESSUNA)){
tipoauth = this.saCore.getAutenticazione_generazioneAutomaticaPorteDelegate();
}
// Credenziali di accesso
// if (utente == null) {
// utente = "";
// }
// if (password == null) {
// password = "";
// }
if (subject == null) {
subject = "";
}
if (principal == null) {
principal = "";
}
dati = this.addCredenzialiToDati(tipoOperazione, dati, tipoauth, oldtipoauth, utente, password, subject, principal, servlet, true, null, false, true, null, true,
tipoCredenzialiSSLSorgente, tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato, tipoCredenzialiSSLFileCertificatoPassword, listaAliasEstrattiCertificato,
tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLAliasCertificatoSubject, tipoCredenzialiSSLAliasCertificatoIssuer,
tipoCredenzialiSSLAliasCertificatoType, tipoCredenzialiSSLAliasCertificatoVersion, tipoCredenzialiSSLAliasCertificatoSerialNumber,
tipoCredenzialiSSLAliasCertificatoSelfSigned, tipoCredenzialiSSLAliasCertificatoNotBefore, tipoCredenzialiSSLAliasCertificatoNotAfter,
tipoCredenzialiSSLVerificaTuttiICampi, tipoCredenzialiSSLConfigurazioneManualeSelfSigned, issuer, tipoCredenzialiSSLStatoElaborazioneCertificato,
changepwd,
multipleApiKey, appId, apiKey,
visualizzaModificaCertificato, visualizzaAddCertificato, servletCredenzialiList, parametersServletCredenzialiList, numeroCertificati, servletCredenzialiAdd,
true, tokenPolicySA, tokenClientIdSA, tokenWithHttpsEnabledByConfigSA,
dominioEsterno, tipoProtocollo,
postBackViaPost
);
}
dati = this.addEndPointToDati(dati, null, connettoreDebug, endpointtype, autenticazioneHttp, "",//ServiziApplicativiCostanti.LABEL_EROGATORE+" ",
url, nomeCodaJMS,
tipoCodaJMS, userRichiesta, passwordRichiesta, initcont, urlpgk, provurl,
connfact, sendas, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI, TipoOperazione.CHANGE,
httpsurl, httpstipologia, httpshostverify,
httpsTrustVerifyCert, httpspath, httpstipo, httpspwd,
httpsalgoritmo, httpsstato, httpskeystore,
httpspwdprivatekeytrust, httpspathkey,
httpstipokey, httpspwdkey,
httpspwdprivatekey, httpsalgoritmokey,
httpsKeyAlias, httpsTrustStoreCRLs, httpsTrustStoreOCSPPolicy, httpsKeyStoreBYOKPolicy,
tipoconn, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_ENDPOINT,
nome, id, null, null, null, null,
null, null, true,
isConnettoreCustomUltimaImmagineSalvata,
proxyEnabled, proxyHost, proxyPort, proxyUsername, proxyPassword,
tempiRispostaEnabled, tempiRispostaConnectionTimeout, tempiRispostaReadTimeout, tempiRispostaTempoMedioRisposta,
opzioniAvanzate, transferMode, transferModeChunkSize, redirectMode, redirectMaxHop,
requestOutputFileName, requestOutputFileNamePermissions, requestOutputFileNameHeaders, requestOutputFileNameHeadersPermissions,
requestOutputParentDirCreateIfNotExists,requestOutputOverwriteIfExists,
responseInputMode, responseInputFileName, responseInputFileNameHeaders, responseInputDeleteAfterRead, responseInputWaitTime,
autenticazioneToken, tokenPolicy, false, false,
listExtendedConnettore, connettoreErogatoreForceEnabled,
nomeProtocollo, false, false
, false, servizioApplicativoServerEnabled, null, null,
autenticazioneApiKey, useOAS3Names, useAppId, apiKeyHeader, apiKeyValue, appIdHeader, appIdValue,
connettoreStatusParams,
postBackViaPost
);
}
if(configurazioneStandardNonApplicabile){
this.pd.setMessage(CostantiControlStation.LABEL_CONFIGURAZIONE_IMPOSTATA_MODALITA_AVANZATA_LONG_MESSAGE,Costanti.MESSAGE_TYPE_INFO);
this.pd.disableEditMode();
for (int i = 0; i < dati.size(); i++) {
DataElement deCheck = dati.get(i);
if(ConnettoriCostanti.PARAMETRO_CONNETTORE_ABILITA_USO_APPLICATIVO_SERVER.equals(deCheck.getName())) {
dati.remove(i);
break;
}
}
}
return dati;
}
public boolean servizioApplicativoCheckData(TipoOperazione tipoOperazione, String[] soggettiList, long idProvOld,
String ruoloFruitoreParam, String ruoloErogatore, List<ExtendedConnettore> listExtendedConnettore,
ServizioApplicativo saOld, StringBuilder sbWarningChange)
throws Exception {
try {
if(ruoloFruitoreParam!=null) {
// nop
}
String tipoSA = this.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_TIPO_SA);
boolean isApplicativiServerEnabled = this.saCore.isApplicativiServerEnabled(this);
boolean useAsClient = false;
if(isApplicativiServerEnabled &&
tipoSA.equals(ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_SERVER)) {
String tmp = this.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_UTILIZZABILE_COME_CLIENT);
useAsClient = ServletUtils.isCheckBoxEnabled(tmp);
}
if(ruoloErogatore==null){
ruoloErogatore = TipologiaErogazione.DISABILITATO.getValue();
}
String nome = this.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_NOME);
String provider = this.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);
String descrizione = this.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_DESCRIZIONE);
int newProv = 0;
if (provider == null) {
provider = "";
} else {
newProv = Integer.parseInt(provider);
}
String fault = this.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_FAULT);
/** String tipoauth = this.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_TIPO_AUTENTICAZIONE_SA);
// if (tipoauth == null) {
// tipoauth = ServiziApplicativiCostanti.DEFAULT_SERVIZI_APPLICATIVI_TIPO_AUTENTICAZIONE;
// }
// String utente = this.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_AUTENTICAZIONE_USERNAME_SA);
// String password = this.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_AUTENTICAZIONE_PASSWORD_SA);
// // String confpw = this.getParameter("confpw");
// String subject = this.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_AUTENTICAZIONE_SUBJECT_SA);*/
// Campi obbligatori
if (nome.equals("") || (tipoOperazione.equals(TipoOperazione.ADD) && provider.equals(""))) {
String tmpElenco = "";
if (nome.equals("")) {
tmpElenco = ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_NOME;
}
if (tipoOperazione.equals(TipoOperazione.ADD) && provider.equals("")) {
if (tmpElenco.equals("")) {
tmpElenco = ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER;
} else {
tmpElenco = tmpElenco + ", "+ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER;
}
}
this.pd.setMessage("Dati incompleti. È necessario indicare: " + tmpElenco);
return false;
}
// descrizione
if( (descrizione!=null && StringUtils.isNotEmpty(descrizione))
&&
(!this.checkLength4000(descrizione, ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_DESCRIZIONE))
){
return false;
}
// Controllo che non ci siano spazi nei campi di testo
if (nome.indexOf(" ") != -1 || nome.indexOf('\"') != -1) {
this.pd.setMessage("Non inserire spazi o doppi apici nei campi di testo");
return false;
}
if(this.checkIntegrationEntityName(nome, ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_NOME)==false){
return false;
}
if(this.checkLength255(nome, ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_NOME)==false) {
return false;
}
/** if (tipoauth.equals(ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_TIPO_AUTENTICAZIONE_BASIC) && ((utente.indexOf(" ") != -1) || (password.indexOf(" ") != -1))) {
// this.pd.setMessage("Non inserire spazi nei campi di testo");
// return false;
// }*/
/**if (tipoauth.equals("ssl") && (subject.indexOf(" ") != -1)) {
this.pd.setMessage("Non inserire spazi nei campi di testo");
return false;
}*/
// Controllo che i campi DataElementType.SELECT abbiano uno dei valori ammessi
if (!fault.equals(ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_FAULT_SOAP) && !fault.equals(ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_FAULT_XML)) {
this.pd.setMessage("Modalità di fault dev'essere "+
ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_FAULT_SOAP+" o "+ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_FAULT_XML);
return false;
}
/** if (!tipoauth.equals(ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_TIPO_AUTENTICAZIONE_BASIC) &&
// !tipoauth.equals(ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_TIPO_AUTENTICAZIONE_SSL) &&
// !tipoauth.equals(ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_TIPO_AUTENTICAZIONE_NESSUNA)) {
// this.pd.setMessage("Tipo dev'essere "+
// ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_TIPO_AUTENTICAZIONE_BASIC+", "+
// ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_TIPO_AUTENTICAZIONE_SSL+" o "+
// ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_TIPO_AUTENTICAZIONE_NESSUNA);
// return false;
// }*/
// Controllo che le password corrispondano
/**
* if (tipoauth.equals("basic") && !password.equals(confpw)) {
* this.pd.setMessage("Le password non corrispondono"); return
* false; }
*/
// Controllo che il provider appartenga alla lista di
// providers disponibili
if (tipoOperazione.equals(TipoOperazione.ADD)) {
boolean trovatoProv = false;
if(soggettiList!=null) {
for (int i = 0; i < soggettiList.length; i++) {
String tmpSogg = soggettiList[i];
if (tmpSogg.equals(provider)) {
trovatoProv = true;
}
}
}
if (!trovatoProv) {
this.pd.setMessage("Il soggetto dev'essere scelto tra quelli definiti nel pannello Soggetti");
return false;
}
}
if (tipoOperazione.equals(TipoOperazione.CHANGE)) {
if(isApplicativiServerEnabled && ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_SERVER.equals(tipoSA) && !useAsClient &&
saOld.getInvocazionePorta()!=null && saOld.getInvocazionePorta().getRuoli()!=null && saOld.getInvocazionePorta().getRuoli().sizeRuoloList()>0) {
this.pd.setMessage("Prima di disabilitare l'opzione '"+ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_UTILIZZABILE_COME_CLIENT+"' devono essere rimossi i ruoli assegnati all'applicativo");
return false;
}
}
IDSoggetto ids = null;
String portaDominioSoggetto = null;
if(this.core.isRegistroServiziLocale()){
Soggetto mySogg = this.soggettiCore.getSoggettoRegistro(newProv);
ids = new IDSoggetto(mySogg.getTipo(), mySogg.getNome());
portaDominioSoggetto = mySogg.getPortaDominio();
}else{
org.openspcoop2.core.config.Soggetto mySogg = this.soggettiCore.getSoggetto(newProv);
ids = new IDSoggetto(mySogg.getTipo(), mySogg.getNome());
}
IDServizioApplicativo idSA = new IDServizioApplicativo();
idSA.setIdSoggettoProprietario(ids);
idSA.setNome(nome);
String protocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(idSA.getIdSoggettoProprietario().getTipo());
boolean dominioEsternoModI = this.isProfiloModIPA(protocollo) && this.pddCore.isPddEsterna(portaDominioSoggetto);
// Se tipoOp = add, controllo che il servizioApplicativo non sia
// gia'
// stato registrato
if (tipoOperazione.equals(TipoOperazione.ADD)) {
boolean giaRegistrato = this.saCore.existsServizioApplicativo(idSA);
if (giaRegistrato) {
this.pd.setMessage("Il Servizio Applicativo " + nome + " è già stato registrato per il soggetto scelto.");
return false;
}
}
else if(tipoOperazione.equals(TipoOperazione.CHANGE)) {
long idSa = 0;
boolean giaRegistrato = this.saCore.existsServizioApplicativo(idSA);
if (giaRegistrato) {
ServizioApplicativo sa = this.saCore.getServizioApplicativo(idSA);
idSa = sa.getId().longValue();
if ( saOld==null || (saOld.getId().longValue() != idSa)) {
this.pd.setMessage("Il Servizio Applicativo " + nome + " è già stato registrato per il soggetto scelto.");
return false;
}
}
}
if (tipoOperazione.equals(TipoOperazione.CHANGE)) {
String oldTipoAuth = null;
String oldTokenPolicy = null;
TipologiaFruizione tipologiaFruizione = null;
if(saOld!=null) {
tipologiaFruizione = TipologiaFruizione.toEnumConstant(saOld.getTipologiaFruizione());
}
if(tipologiaFruizione!=null && !TipologiaFruizione.DISABILITATO.equals(tipologiaFruizione) &&
saOld.getInvocazionePorta()!=null && saOld.getInvocazionePorta().sizeCredenzialiList()>0) {
// prendo il primo
CredenzialeTipo tipo = saOld.getInvocazionePorta().getCredenziali(0).getTipo();
if(tipo!=null) {
oldTipoAuth = tipo.getValue();
}
else {
oldTipoAuth = ConnettoriCostanti.AUTENTICAZIONE_TIPO_NESSUNA;
}
oldTokenPolicy = saOld.getInvocazionePorta().getCredenziali(0).getTokenPolicy();
}
String tipoauthAttuale = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_TIPO_AUTENTICAZIONE);
String tipoauth = tipoauthAttuale;
boolean tokenWithHttpsEnabledByConfigSA = ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL_E_TOKEN_PDND.equals(tipoauth) || ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL_E_TOKEN_OAUTH.equals(tipoauth);
if(tokenWithHttpsEnabledByConfigSA) {
tipoauth = ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL;
}
boolean tokenModiPDNDOauth = ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN_PDND.equals(tipoauth) || ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN_OAUTH.equals(tipoauth);
if(tokenModiPDNDOauth) {
tipoauth = ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN;
}
boolean changeTipoAuth = false;
if(oldTipoAuth!=null && !oldTipoAuth.equals(tipoauth)) {
changeTipoAuth=true;
}
boolean segnalaWarning = false;
if(changeTipoAuth && oldTokenPolicy!=null) {
boolean tokenWithHttsSupportato = false;
boolean dominioEsterno = this.pddCore.isPddEsterna(portaDominioSoggetto);
if(dominioEsterno && protocollo!=null) {
ProtocolFactoryManager protocolFactoryManager = ProtocolFactoryManager.getInstance();
tokenWithHttsSupportato = protocolFactoryManager.getProtocolFactoryByName(protocollo).createProtocolConfiguration().isSupportatoAutenticazioneApplicativiHttpsConToken();
}
boolean tokenModIPDND = this.saCore.isPolicyGestioneTokenPDND(oldTokenPolicy);
if(tokenWithHttsSupportato) {
if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL.equals(oldTipoAuth)) {
if(tokenModIPDND) {
oldTipoAuth = ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL_E_TOKEN_PDND;
}
else {
oldTipoAuth = ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL_E_TOKEN_OAUTH;
}
}
else {
if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN.equals(oldTipoAuth)){
if(tokenModIPDND) {
oldTipoAuth = ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN_PDND;
}
else {
oldTipoAuth = ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN_OAUTH;
}
}
}
}
if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN_PDND.equals(oldTipoAuth) && ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL_E_TOKEN_PDND.equals(tipoauthAttuale)) {
// aggiungere il certificato deve essere possibile
changeTipoAuth=false;
}
else if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL_E_TOKEN_PDND.equals(oldTipoAuth) && ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN_PDND.equals(tipoauthAttuale)) {
// eliminare il certificato non andrebbe permesso se usato
// questo vincolo viene rilasciato per consentirlo da console,
// tanto poi eventualmente il runtime lo segnala e una nuova aggiunta dell'applicativo non è concessa nell'erogazione che richiede il certificato.
// mentre quello autorizzato andrà poi eliminato.
segnalaWarning = true;
}
else if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN_OAUTH.equals(oldTipoAuth) && ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL_E_TOKEN_OAUTH.equals(tipoauthAttuale)) {
// aggiungere il certificato deve essere possibile
changeTipoAuth=false;
}
else if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL_E_TOKEN_OAUTH.equals(oldTipoAuth) && ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN_OAUTH.equals(tipoauthAttuale)) {
// eliminare il certificato non andrebbe permesso se usato
// questo vincolo viene rilasciato per consentirlo da console,
// tanto poi eventualmente il runtime lo segnala e una nuova aggiunta dell'applicativo non è concessa nell'erogazione che richiede il certificato.
// mentre quello autorizzato andrà poi eliminato.
segnalaWarning = true;
}
}
if(changeTipoAuth) {
// controllo che non sia usato in qualche PD
StringBuilder sbWarningDetails = new StringBuilder();
FiltroRicercaPorteDelegate filtro = new FiltroRicercaPorteDelegate();
filtro.setTipoSoggetto(idSA.getIdSoggettoProprietario().getTipo());
filtro.setNomeSoggetto(idSA.getIdSoggettoProprietario().getNome());
filtro.setNomeServizioApplicativo(idSA.getNome());
List<IDPortaDelegata> list = this.porteDelegateCore.getAllIdPorteDelegate(filtro);
if(list!=null && list.size()>0) {
String msg = "l'applicativo viene utilizzato all'interno del controllo degli accessi (autorizzazione trasporto) di "+
list.size()+" fruizion"+(list.size()>1?"i":"e");
if(segnalaWarning) {
if(sbWarningDetails.length()>0) {
sbWarningDetails.append(org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE);
}
sbWarningDetails.append("- "+msg);
}
else {
this.pd.setMessage("Non è possibile modificare il tipo di credenziali poichè "+msg);
return false;
}
}
String tipoTrasporto = "trasporto";
if(this.isProfiloModIPA(protocollo)) {
tipoTrasporto = "messaggio";
}
FiltroRicercaPorteApplicative filtroPA = new FiltroRicercaPorteApplicative();
IDServizioApplicativo idServizioApplicativoAutorizzato = new IDServizioApplicativo();
idServizioApplicativoAutorizzato.setIdSoggettoProprietario(new IDSoggetto(idSA.getIdSoggettoProprietario().getTipo(), idSA.getIdSoggettoProprietario().getNome()));
idServizioApplicativoAutorizzato.setNome(idSA.getNome());
filtroPA.setIdServizioApplicativoAutorizzato(idServizioApplicativoAutorizzato);
List<IDPortaApplicativa> listPA = this.porteApplicativeCore.getAllIdPorteApplicative(filtroPA);
if(listPA!=null && listPA.size()>0) {
String msg = "l'applicativo viene utilizzato all'interno del controllo degli accessi (autorizzazione "+tipoTrasporto+") di "+
listPA.size()+" erogazion"+(listPA.size()>1?"i":"e");
if(segnalaWarning) {
if(sbWarningDetails.length()>0) {
sbWarningDetails.append(org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE);
}
sbWarningDetails.append("- "+msg);
}
else {
this.pd.setMessage("Non è possibile modificare il tipo di credenziali poichè "+msg);
return false;
}
}
filtro = new FiltroRicercaPorteDelegate();
filtro.setTipoSoggetto(idSA.getIdSoggettoProprietario().getTipo());
filtro.setNomeSoggetto(idSA.getIdSoggettoProprietario().getNome());
filtro.setNomeServizioApplicativoToken(idSA.getNome());
list = this.porteDelegateCore.getAllIdPorteDelegate(filtro);
if(list!=null && !list.isEmpty()) {
String msg = "l'applicativo viene utilizzato all'interno del controllo degli accessi (autorizzazione token) di "+
list.size()+" fruizion"+(list.size()>1?"i":"e");
if(segnalaWarning) {
if(sbWarningDetails.length()>0) {
sbWarningDetails.append(org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE);
}
sbWarningDetails.append("- "+msg);
}
else {
this.pd.setMessage("Non è possibile modificare il tipo di credenziali poichè "+msg);
return false;
}
}
filtroPA = new FiltroRicercaPorteApplicative();
filtroPA.setIdServizioApplicativoAutorizzatoToken(idServizioApplicativoAutorizzato);
listPA = this.porteApplicativeCore.getAllIdPorteApplicative(filtroPA);
if(listPA!=null && !listPA.isEmpty()) {
String msg = "l'applicativo viene utilizzato all'interno del controllo degli accessi (autorizzazione token) di "+
listPA.size()+" erogazion"+(listPA.size()>1?"i":"e");
if(segnalaWarning) {
if(sbWarningDetails.length()>0) {
sbWarningDetails.append(org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE);
}
sbWarningDetails.append("- "+msg);
}
else {
this.pd.setMessage("Non è possibile modificare il tipo di credenziali poichè "+msg);
return false;
}
}
if(segnalaWarning && sbWarningDetails.length()>0) {
sbWarningChange.append("Il certificato di firma dell'applicativo potrebbe essere richiesto per fruire di una API.");
sbWarningChange.append(org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE);
sbWarningChange.append("Verificare le configurazioni dove risulta associato l'applicativo:");
sbWarningChange.append(org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE);
sbWarningChange.append(sbWarningDetails.toString());
}
}
}
// Se tipoOp = change, se sto cambiando provider controllo che
// il servizioApplicativo non sia associato al vecchio provider
// Ovvero, che non sia associato ad una delle porte delegate
// o applicative del vecchio provider
if (tipoOperazione.equals(TipoOperazione.CHANGE)) {
String nomeProv = "";
boolean servizioApplicativoInUso = false;
if (newProv != idProvOld) {
// Prendo nome e tipo del provider
org.openspcoop2.core.config.Soggetto oldSogg = this.soggettiCore.getSoggetto(idProvOld);
nomeProv = oldSogg.getTipo() + "/" + oldSogg.getNome();
for (int i = 0; i < oldSogg.sizePortaDelegataList(); i++) {
PortaDelegata pde = oldSogg.getPortaDelegata(i);
for (int j = 0; j < pde.sizeServizioApplicativoList(); j++) {
PortaDelegataServizioApplicativo tmpSA = pde.getServizioApplicativo(j);
if (nome.equals(tmpSA.getNome())) {
servizioApplicativoInUso = true;
break;
}
}
if (servizioApplicativoInUso)
break;
}
if (!servizioApplicativoInUso) {
for (int i = 0; i < oldSogg.sizePortaApplicativaList(); i++) {
PortaApplicativa pa = oldSogg.getPortaApplicativa(i);
for (int j = 0; j < pa.sizeServizioApplicativoList(); j++) {
PortaApplicativaServizioApplicativo tmpSA = pa.getServizioApplicativo(j);
if (nome.equals(tmpSA.getNome())) {
servizioApplicativoInUso = true;
break;
}
}
if (servizioApplicativoInUso)
break;
}
}
}
if (servizioApplicativoInUso) {
this.pd.setMessage("Il Servizio Applicativo " + nome + " è già stato associato ad alcune porte delegate e/o applicative del Soggetto " + nomeProv + ". Se si desidera modificare il Soggetto, è necessario eliminare prima tutte le occorrenze del Servizio Applicativo");
return false;
}
}
boolean oldPasswordCifrata = false;
if(saOld!=null && saOld.getInvocazionePorta()!=null && saOld.getInvocazionePorta().sizeCredenzialiList()>0 && saOld.getInvocazionePorta().getCredenziali(0).isCertificateStrictVerification()) {
oldPasswordCifrata = true;
}
boolean encryptEnabled = this.saCore.isApplicativiPasswordEncryptEnabled();
if(this.credenzialiCheckData(tipoOperazione,oldPasswordCifrata, encryptEnabled, this.saCore.getApplicativiPasswordVerifier())==false){
return false;
}
String tipoauth = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_TIPO_AUTENTICAZIONE);
if (tipoauth == null) {
tipoauth = ConnettoriCostanti.DEFAULT_AUTENTICAZIONE_TIPO;
}
String utente = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_USERNAME);
String password = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_PASSWORD);
String subject = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_SUBJECT);
String issuer = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_ISSUER);
if("".equals(issuer)) {
issuer = null;
}
String principal = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_PRINCIPAL);
String tokenPolicy = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_TOKEN_POLICY);
String tokenClientId = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_TOKEN_CLIENT_ID);
@SuppressWarnings("unused")
boolean tokenByPDND = ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL_E_TOKEN_PDND.equals(tipoauth) || ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN_PDND.equals(tipoauth);
boolean tokenWithHttpsEnabledByConfigSA = ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL_E_TOKEN_PDND.equals(tipoauth) || ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL_E_TOKEN_OAUTH.equals(tipoauth);
if(tokenWithHttpsEnabledByConfigSA) {
tipoauth = ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL;
}
boolean tokenModiPDNDOauth = ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN_PDND.equals(tipoauth) || ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN_OAUTH.equals(tipoauth);
if(tokenModiPDNDOauth) {
tipoauth = ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN;
}
// Se sono presenti credenziali, controllo che non siano gia'
// utilizzate da altri soggetti
if (tipoauth.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_BASIC)) {
// recupera lista servizi applicativi con stesse credenziali
boolean checkPassword = this.saCore.isApplicativiCredenzialiBasicCheckUniqueUsePassword(); // la password non viene utilizzata per riconoscere se l'username e' già utilizzato.
List<ServizioApplicativo> saList = this.saCore.servizioApplicativoWithCredenzialiBasicList(utente, password, checkPassword);
String portaDominio = null;
if(this.core.isRegistroServiziLocale()){
Soggetto soggettoToCheck = tipoOperazione.equals(TipoOperazione.CHANGE) ?
this.soggettiCore.getSoggettoRegistro(idProvOld) : this.soggettiCore.getSoggettoRegistro(newProv);
portaDominio = soggettoToCheck.getPortaDominio();
}
for (int i = 0; i < saList.size(); i++) {
ServizioApplicativo sa = saList.get(i);
/**String tipoNomeSoggetto = null;*/
if(!this.core.isSinglePdD()){
// bugfix #66
// controllo se soggetto appartiene a nal diversi, in tal
// caso e' possibile
// avere stesse credenziali
// Raccolgo informazioni soggetto
Soggetto tmpSoggettoProprietarioSa = this.soggettiCore.getSoggettoRegistro(sa.getIdSoggetto());
/**tipoNomeSoggetto = tmpSoggettoProprietarioSa.getTipo() + "/" + tmpSoggettoProprietarioSa.getNome();*/
// se appartengono a nal diversi allora va bene continuo
if (!portaDominio.equals(tmpSoggettoProprietarioSa.getPortaDominio()))
continue;
}
else{
/**org.openspcoop2.core.config.Soggetto tmpSoggettoProprietarioSa = this.soggettiCore.getSoggetto(sa.getIdSoggetto());
//tipoNomeSoggetto = tmpSoggettoProprietarioSa.getTipo() + "/" + tmpSoggettoProprietarioSa.getNome();*/
}
if ((tipoOperazione.equals(TipoOperazione.CHANGE)) && (nome.equals(sa.getNome())) && (idProvOld == sa.getIdSoggetto())) {
continue;
}
if(saOld!=null && tipoOperazione.equals(TipoOperazione.CHANGE) && saOld.getId().longValue() == sa.getId().longValue()) {
continue;
}
// Messaggio di errore
String labelSoggetto = this.getLabelNomeSoggetto(new IDSoggetto(sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario()));
if(sa.getTipo()!=null && StringUtils.isNotEmpty(sa.getTipo())) {
this.pd.setMessage("L'applicativo "+sa.getNome()+" (soggetto: "+labelSoggetto+") possiede già l'utente (http-basic) indicato");
}
else {
this.pd.setMessage("L'erogazione "+sa.getNome()+" possiede già l'utente (http-basic) indicato per il servizio '"+ServiziApplicativiCostanti.LABEL_SERVIZIO_MESSAGE_BOX+"'");
}
return false;
}
if(!this.soggettiCore.isSoggettiApplicativiCredenzialiBasicPermitSameCredentials()) {
// Verifico soggetti
boolean checkPasswordSoggetti = this.soggettiCore.isSoggettiCredenzialiBasicCheckUniqueUsePassword(); // la password non viene utilizzata per riconoscere se l'username e' già utilizzato.
Soggetto soggettoAutenticato = this.soggettiCore.soggettoWithCredenzialiBasic(utente, password, checkPasswordSoggetti);
// Messaggio di errore
if(soggettoAutenticato!=null){
String labelSoggettoAutenticato = this.getLabelNomeSoggetto(new IDSoggetto(soggettoAutenticato.getTipo(), soggettoAutenticato.getNome()));
this.pd.setMessage("Il soggetto "+labelSoggettoAutenticato+" possiede già l'utente (http-basic) indicato");
return false;
}
}
}
else if (tipoauth.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_APIKEY)) {
// Univocita garantita dal meccanismo di generazione delle chiavi
/**
// Viene calcolato String appId = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_APP_ID);
String multipleApiKeys = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_MULTIPLE_API_KEYS);
// recupera lista servizi applicativi con stesse credenziali
boolean multipleApiKeysEnabled = ServletUtils.isCheckBoxEnabled(multipleApiKeys);
String appId = this.saCore.toAppId(protocollo, idSA, multipleApiKeysEnabled);
List<ServizioApplicativo> saList = this.saCore.servizioApplicativoWithCredenzialiApiKeyList(appId,multipleApiKeysEnabled);
String portaDominio = null;
if(this.core.isRegistroServiziLocale()){
Soggetto soggettoToCheck = tipoOperazione.equals(TipoOperazione.CHANGE) ?
this.soggettiCore.getSoggettoRegistro(idProvOld) : this.soggettiCore.getSoggettoRegistro(newProv);
portaDominio = soggettoToCheck.getPortaDominio();
}
for (int i = 0; i < saList.size(); i++) {
ServizioApplicativo sa = saList.get(i);
//String tipoNomeSoggetto = null;
if(!this.core.isSinglePdD()){
// bugfix #66
// controllo se soggetto appartiene a nal diversi, in tal
// caso e' possibile
// avere stesse credenziali
// Raccolgo informazioni soggetto
Soggetto tmpSoggettoProprietarioSa = this.soggettiCore.getSoggettoRegistro(sa.getIdSoggetto());
//tipoNomeSoggetto = tmpSoggettoProprietarioSa.getTipo() + "/" + tmpSoggettoProprietarioSa.getNome();
// se appartengono a nal diversi allora va bene continuo
if (!portaDominio.equals(tmpSoggettoProprietarioSa.getPortaDominio()))
continue;
}
else{
//org.openspcoop2.core.config.Soggetto tmpSoggettoProprietarioSa = this.soggettiCore.getSoggetto(sa.getIdSoggetto());
//tipoNomeSoggetto = tmpSoggettoProprietarioSa.getTipo() + "/" + tmpSoggettoProprietarioSa.getNome();
}
if ((tipoOperazione.equals(TipoOperazione.CHANGE)) && (nome.equals(sa.getNome())) && (idProvOld == sa.getIdSoggetto())) {
continue;
}
if(saOld!=null && tipoOperazione.equals(TipoOperazione.CHANGE) && saOld.getId().longValue() == sa.getId().longValue()) {
continue;
}
// Messaggio di errore
String labelSoggetto = this.getLabelNomeSoggetto(new IDSoggetto(sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario()));
String tipoCredenzialiApiKey = ServletUtils.isCheckBoxEnabled(multipleApiKeys) ? ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_MULTIPLE_API_KEYS_DESCR : ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_API_KEY;
this.pd.setMessage("L'applicativo "+sa.getNome()+" (soggetto: "+labelSoggetto+") possiede già una credenziale '"+tipoCredenzialiApiKey+"' con identico '"+ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_APP_ID+"'");
return false;
}
*/
}
else if (tipoauth.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL) &&
!tokenWithHttpsEnabledByConfigSA // se e' abilitato il token non deve essere controllata l'univocita' del certificato
) {
String tipoCredenzialiSSLSorgente = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL);
if(tipoCredenzialiSSLSorgente == null) {
tipoCredenzialiSSLSorgente = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_CONFIGURAZIONE_MANUALE;
}
String tipoCredenzialiSSLConfigurazioneManualeSelfSigned= this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_MANUALE_SELF_SIGNED);
if (tipoCredenzialiSSLConfigurazioneManualeSelfSigned == null) {
tipoCredenzialiSSLConfigurazioneManualeSelfSigned = Costanti.CHECK_BOX_ENABLED;
}
String details = "";
List<ServizioApplicativo> saList = null;
String tipoSsl = null;
Certificate cSelezionato = null;
boolean strictVerifier = false;
if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_CONFIGURAZIONE_MANUALE)) {
saList = this.saCore.servizioApplicativoWithCredenzialiSslList(subject,issuer,
dominioEsternoModI ? ConfigurazioneFiltroServiziApplicativi.getFiltroApplicativiModIFirma() : ConfigurazioneFiltroServiziApplicativi.getFiltroApplicativiHttps());
tipoSsl = "subject/issuer";
}
else {
BinaryParameter tipoCredenzialiSSLFileCertificato = this.getBinaryParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO);
String tipoCredenzialiSSLVerificaTuttiICampi = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI);
strictVerifier = ServletUtils.isCheckBoxEnabled(tipoCredenzialiSSLVerificaTuttiICampi);
String tipoCredenzialiSSLTipoArchivioS = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_TIPO_ARCHIVIO);
String tipoCredenzialiSSLFileCertificatoPassword = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO_PASSWORD);
String tipoCredenzialiSSLAliasCertificato = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO);
if (tipoCredenzialiSSLAliasCertificato == null) {
tipoCredenzialiSSLAliasCertificato = "";
}
org.openspcoop2.utils.certificate.ArchiveType tipoCredenzialiSSLTipoArchivio= null;
if(tipoCredenzialiSSLTipoArchivioS == null) {
tipoCredenzialiSSLTipoArchivio = org.openspcoop2.utils.certificate.ArchiveType.CER;
} else {
tipoCredenzialiSSLTipoArchivio = org.openspcoop2.utils.certificate.ArchiveType.valueOf(tipoCredenzialiSSLTipoArchivioS);
}
byte [] archivio = tipoCredenzialiSSLFileCertificato.getValue();
if(TipoOperazione.CHANGE.equals(tipoOperazione) && archivio==null) {
archivio = saOld.getInvocazionePorta().getCredenziali(0).getCertificate();
}
if(tipoCredenzialiSSLTipoArchivio.equals(org.openspcoop2.utils.certificate.ArchiveType.CER)) {
cSelezionato = ArchiveLoader.load(archivio);
}else {
cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLTipoArchivio, archivio, tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLFileCertificatoPassword);
}
saList = this.saCore.servizioApplicativoWithCredenzialiSslList(cSelezionato.getCertificate(), strictVerifier,
dominioEsternoModI ? ConfigurazioneFiltroServiziApplicativi.getFiltroApplicativiModIFirma() : ConfigurazioneFiltroServiziApplicativi.getFiltroApplicativiHttps());
if(!strictVerifier && saList!=null && !saList.isEmpty()) {
List<ServizioApplicativo> saListCheck = this.saCore.servizioApplicativoWithCredenzialiSslList(cSelezionato.getCertificate(), true,
dominioEsternoModI ? ConfigurazioneFiltroServiziApplicativi.getFiltroApplicativiModIFirma() : ConfigurazioneFiltroServiziApplicativi.getFiltroApplicativiHttps());
if(saListCheck==null || saListCheck.isEmpty() ) {
details=ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_DETAILS;
}
}
tipoSsl = "certificato";
}
String portaDominio = null;
if(this.core.isRegistroServiziLocale()){
Soggetto soggettoToCheck = tipoOperazione.equals(TipoOperazione.CHANGE) ?
this.soggettiCore.getSoggettoRegistro(idProvOld) : this.soggettiCore.getSoggettoRegistro(newProv);
portaDominio = soggettoToCheck.getPortaDominio();
}
if(saList!=null) {
for (int i = 0; i < saList.size(); i++) {
ServizioApplicativo sa = saList.get(i);
/**String tipoNomeSoggetto = null;*/
if(!this.core.isSinglePdD()){
// bugfix #66
// controllo se soggetto appartiene a nal diversi, in tal
// caso e' possibile
// avere stesse credenziali
// Raccolgo informazioni soggetto
Soggetto tmpSoggettoProprietarioSa = this.soggettiCore.getSoggettoRegistro(sa.getIdSoggetto());
/**tipoNomeSoggetto = tmpSoggettoProprietarioSa.getTipo() + "/" + tmpSoggettoProprietarioSa.getNome();*/
// se appartengono a nal diversi allora va bene continuo
if (!portaDominio.equals(tmpSoggettoProprietarioSa.getPortaDominio()))
continue;
}else{
/**org.openspcoop2.core.config.Soggetto tmpSoggettoProprietarioSa = this.soggettiCore.getSoggetto(sa.getIdSoggetto());
//tipoNomeSoggetto = tmpSoggettoProprietarioSa.getTipo() + "/" + tmpSoggettoProprietarioSa.getNome();*/
}
if ((tipoOperazione.equals(TipoOperazione.CHANGE)) && (nome.equals(sa.getNome())) && (idProvOld == sa.getIdSoggetto())) {
continue;
}
if(saOld!=null && tipoOperazione.equals(TipoOperazione.CHANGE) && saOld.getId().longValue() == sa.getId().longValue()) {
continue;
}
// Raccolgo informazioni soggetto
// Messaggio di errore
String labelSoggetto = this.getLabelNomeSoggetto(new IDSoggetto(sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario()));
this.pd.setMessage("L'applicativo "+sa.getNome()+" (soggetto: "+labelSoggetto+") possiede già le credenziali ssl ("+tipoSsl+") indicate."+details);
return false;
}
}
if(!tokenWithHttpsEnabledByConfigSA && // se e' abilitato il token non deve essere controllata l'univocita' del certificato)
!this.soggettiCore.isSoggettiApplicativiCredenzialiSslPermitSameCredentials() &&
!dominioEsternoModI
) {
// Verifico soggetti
details = "";
Soggetto soggettoAutenticato = null;
if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_CONFIGURAZIONE_MANUALE)) {
// recupero soggetto con stesse credenziali
soggettoAutenticato = this.soggettiCore.getSoggettoRegistroAutenticatoSsl(subject, issuer);
tipoSsl = "subject/issuer";
} else {
/**soggettoAutenticato = this.soggettiCore.getSoggettoRegistroAutenticatoSsl(cSelezionato.getCertificate(), strictVerifier);*/
// Fix: usando il metodo sopra e' permesso caricare due soggetti con lo stesso certificato (anche serial number) uno in strict e uno no, e questo e' sbagliato.
List<org.openspcoop2.core.registry.Soggetto> soggettiAutenticati = this.soggettiCore.soggettoWithCredenzialiSslList(cSelezionato.getCertificate(), strictVerifier);
if(soggettiAutenticati!=null && !soggettiAutenticati.isEmpty()) {
soggettoAutenticato = soggettiAutenticati.get(0);
if(!strictVerifier) {
List<org.openspcoop2.core.registry.Soggetto> soggettiAutenticatiCheck = this.soggettiCore.soggettoWithCredenzialiSslList(cSelezionato.getCertificate(), true);
if(soggettiAutenticatiCheck==null || soggettiAutenticatiCheck.isEmpty() ) {
details=ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_DETAILS;
}
}
}
tipoSsl = "certificato";
}
// Messaggio di errore
if(soggettoAutenticato!=null){
String labelSoggettoAutenticato = this.getLabelNomeSoggetto(new IDSoggetto(soggettoAutenticato.getTipo(), soggettoAutenticato.getNome()));
this.pd.setMessage("Il soggetto "+labelSoggettoAutenticato+" possiede già le credenziali ssl ("+tipoSsl+") indicate."+details);
return false;
}
}
}
else if (tipoauth.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_PRINCIPAL)) {
// recupera lista servizi applicativi con stesse credenziali
List<ServizioApplicativo> saList = this.saCore.servizioApplicativoWithCredenzialiPrincipalList(principal);
String portaDominio = null;
if(this.core.isRegistroServiziLocale()){
Soggetto soggettoToCheck = tipoOperazione.equals(TipoOperazione.CHANGE) ?
this.soggettiCore.getSoggettoRegistro(idProvOld) : this.soggettiCore.getSoggettoRegistro(newProv);
portaDominio = soggettoToCheck.getPortaDominio();
}
for (int i = 0; i < saList.size(); i++) {
ServizioApplicativo sa = saList.get(i);
/**String tipoNomeSoggetto = null;*/
if(!this.core.isSinglePdD()){
// bugfix #66
// controllo se soggetto appartiene a nal diversi, in tal
// caso e' possibile
// avere stesse credenziali
// Raccolgo informazioni soggetto
Soggetto tmpSoggettoProprietarioSa = this.soggettiCore.getSoggettoRegistro(sa.getIdSoggetto());
/**tipoNomeSoggetto = tmpSoggettoProprietarioSa.getTipo() + "/" + tmpSoggettoProprietarioSa.getNome();*/
// se appartengono a nal diversi allora va bene continuo
if (!portaDominio.equals(tmpSoggettoProprietarioSa.getPortaDominio()))
continue;
}
else{
/**org.openspcoop2.core.config.Soggetto tmpSoggettoProprietarioSa = this.soggettiCore.getSoggetto(sa.getIdSoggetto());
//tipoNomeSoggetto = tmpSoggettoProprietarioSa.getTipo() + "/" + tmpSoggettoProprietarioSa.getNome();*/
}
if ((tipoOperazione.equals(TipoOperazione.CHANGE)) && (nome.equals(sa.getNome())) && (idProvOld == sa.getIdSoggetto())) {
continue;
}
if(saOld!=null && tipoOperazione.equals(TipoOperazione.CHANGE) && saOld.getId().longValue() == sa.getId().longValue()) {
continue;
}
// Messaggio di errore
String labelSoggetto = this.getLabelNomeSoggetto(new IDSoggetto(sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario()));
this.pd.setMessage("L'applicativo "+sa.getNome()+" (soggetto: "+labelSoggetto+") possiede già il principal indicato");
return false;
}
if(!this.soggettiCore.isSoggettiApplicativiCredenzialiPrincipalPermitSameCredentials()) {
// Verifico applicativi
Soggetto soggettoAutenticato = this.soggettiCore.getSoggettoRegistroAutenticatoPrincipal(principal);
// Messaggio di errore
if(soggettoAutenticato!=null){
String labelSoggettoAutenticato = this.getLabelNomeSoggetto(new IDSoggetto(soggettoAutenticato.getTipo(), soggettoAutenticato.getNome()));
this.pd.setMessage("Il soggetto "+labelSoggettoAutenticato+" possiede già il principal indicato");
return false;
}
}
}
//else per gestire la possibilita' con https
if (ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN.equals(tipoauth) || tokenWithHttpsEnabledByConfigSA) {
if(tokenPolicy==null || StringUtils.isEmpty(tokenPolicy) || CostantiControlStation.DEFAULT_VALUE_NON_SELEZIONATO.equals(tokenPolicy)) {
this.pd.setMessage("TokenPolicy non indicata");
}
if(ControlStationCore.isAPIMode()) {
// Altrimenti la select list è valorizzata con quelli esistenti
GenericProperties gp = null;
try {
gp = this.confCore.getGenericProperties(tokenPolicy, org.openspcoop2.pdd.core.token.Costanti.TIPOLOGIA, false);
}catch(DriverConfigurazioneNotFound notFound) {}
if(gp==null) {
this.pd.setMessage("TokenPolicy indicata '"+tokenPolicy+"' non esiste");
return false;
}
}
// recupera lista servizi applicativi con stesse credenziali
List<ServizioApplicativo> saList = this.saCore.servizioApplicativoWithCredenzialiTokenList(tokenPolicy, tokenClientId);
String portaDominio = null;
if(this.core.isRegistroServiziLocale()){
Soggetto soggettoToCheck = tipoOperazione.equals(TipoOperazione.CHANGE) ?
this.soggettiCore.getSoggettoRegistro(idProvOld) : this.soggettiCore.getSoggettoRegistro(newProv);
portaDominio = soggettoToCheck.getPortaDominio();
}
for (int i = 0; i < saList.size(); i++) {
ServizioApplicativo sa = saList.get(i);
/**String tipoNomeSoggetto = null;*/
if(!this.core.isSinglePdD()){
// bugfix #66
// controllo se soggetto appartiene a nal diversi, in tal
// caso e' possibile
// avere stesse credenziali
// Raccolgo informazioni soggetto
Soggetto tmpSoggettoProprietarioSa = this.soggettiCore.getSoggettoRegistro(sa.getIdSoggetto());
/**tipoNomeSoggetto = tmpSoggettoProprietarioSa.getTipo() + "/" + tmpSoggettoProprietarioSa.getNome();*/
// se appartengono a nal diversi allora va bene continuo
if (!portaDominio.equals(tmpSoggettoProprietarioSa.getPortaDominio()))
continue;
}
else{
/**org.openspcoop2.core.config.Soggetto tmpSoggettoProprietarioSa = this.soggettiCore.getSoggetto(sa.getIdSoggetto());
//tipoNomeSoggetto = tmpSoggettoProprietarioSa.getTipo() + "/" + tmpSoggettoProprietarioSa.getNome();*/
}
if ((tipoOperazione.equals(TipoOperazione.CHANGE)) && (nome.equals(sa.getNome())) && (idProvOld == sa.getIdSoggetto())) {
continue;
}
if(saOld!=null && tipoOperazione.equals(TipoOperazione.CHANGE) && saOld.getId().longValue() == sa.getId().longValue()) {
continue;
}
// Messaggio di errore
String labelSoggetto = this.getLabelNomeSoggetto(new IDSoggetto(sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario()));
if(protocollo!=null && this.core.isProfiloModIPA(protocollo)) {
this.pd.setMessage("L'applicativo "+sa.getNome()+" (soggetto: "+labelSoggetto+") possiede già l'identificativo client indicato");
}
else {
this.pd.setMessage("L'applicativo "+sa.getNome()+" (soggetto: "+labelSoggetto+") possiede già le credenziali indicate");
}
return false;
}
String oldTokenPolicy = null;
if (tipoOperazione.equals(TipoOperazione.CHANGE)) {
if(saOld!=null && saOld.getInvocazionePorta()!=null && saOld.getInvocazionePorta().sizeCredenzialiList()>0) {
// prendo il primo
oldTokenPolicy = saOld.getInvocazionePorta().getCredenziali(0).getTokenPolicy();
}
}
if(oldTokenPolicy!=null && !oldTokenPolicy.equals(tokenPolicy)) {
// controllo che non sia usato in qualche PD
FiltroRicercaPorteDelegate filtro = new FiltroRicercaPorteDelegate();
filtro.setTipoSoggetto(idSA.getIdSoggettoProprietario().getTipo());
filtro.setNomeSoggetto(idSA.getIdSoggettoProprietario().getNome());
filtro.setNomeServizioApplicativo(idSA.getNome());
List<IDPortaDelegata> list = this.porteDelegateCore.getAllIdPorteDelegate(filtro);
if(list!=null && !list.isEmpty()) {
this.pd.setMessage("Non è possibile modificare la token policy poichè l'applicativo viene utilizzato all'interno del controllo degli accessi (autorizzazione trasporto) di "+
list.size()+" fruizion"+(list.size()>1?"i":"e"));
return false;
}
String tipoTrasporto = "trasporto";
if(this.isProfiloModIPA(protocollo)) {
tipoTrasporto = "messaggio";
}
FiltroRicercaPorteApplicative filtroPA = new FiltroRicercaPorteApplicative();
IDServizioApplicativo idServizioApplicativoAutorizzato = new IDServizioApplicativo();
idServizioApplicativoAutorizzato.setIdSoggettoProprietario(new IDSoggetto(idSA.getIdSoggettoProprietario().getTipo(), idSA.getIdSoggettoProprietario().getNome()));
idServizioApplicativoAutorizzato.setNome(idSA.getNome());
filtroPA.setIdServizioApplicativoAutorizzato(idServizioApplicativoAutorizzato);
List<IDPortaApplicativa> listPA = this.porteApplicativeCore.getAllIdPorteApplicative(filtroPA);
if(listPA!=null && !listPA.isEmpty()) {
this.pd.setMessage("Non è possibile modificare la token policy poichè l'applicativo viene utilizzato all'interno del controllo degli accessi (autorizzazione "+tipoTrasporto+") di "+
listPA.size()+" erogazion"+(listPA.size()>1?"i":"e"));
return false;
}
filtro = new FiltroRicercaPorteDelegate();
filtro.setTipoSoggetto(idSA.getIdSoggettoProprietario().getTipo());
filtro.setNomeSoggetto(idSA.getIdSoggettoProprietario().getNome());
filtro.setNomeServizioApplicativoToken(idSA.getNome());
list = this.porteDelegateCore.getAllIdPorteDelegate(filtro);
if(list!=null && !list.isEmpty()) {
this.pd.setMessage("Non è possibile modificare la token policy poichè l'applicativo viene utilizzato all'interno del controllo degli accessi (autorizzazione token) di "+
list.size()+" fruizion"+(list.size()>1?"i":"e"));
return false;
}
filtroPA = new FiltroRicercaPorteApplicative();
filtroPA.setIdServizioApplicativoAutorizzatoToken(idServizioApplicativoAutorizzato);
listPA = this.porteApplicativeCore.getAllIdPorteApplicative(filtroPA);
if(listPA!=null && !listPA.isEmpty()) {
this.pd.setMessage("Non è possibile modificare la token policy poichè l'applicativo viene utilizzato all'interno del controllo degli accessi (autorizzazione token) di "+
listPA.size()+" erogazion"+(listPA.size()>1?"i":"e"));
return false;
}
}
}
// erogatore
boolean validaEndPoint = this.isModalitaStandard() && !TipologiaErogazione.DISABILITATO.equals(ruoloErogatore);
if(isApplicativiServerEnabled) {
validaEndPoint = ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_SERVER.equals(tipoSA);
}
if(validaEndPoint){
boolean isOk = this.servizioApplicativoEndPointCheckData(protocollo, listExtendedConnettore, saOld);
if (!isOk) {
return false;
}
}
return true;
} catch (Exception e) {
this.logError("Exception: " + e.getMessage(), e);
throw new Exception(e.getMessage(),e);
}
}
private void addFilterRuoloServizioApplicativo(String ruoloSA, boolean postBack) throws Exception{
try {
String [] tmp = ServiziApplicativiCostanti.getServiziApplicativiRuolo();
String [] values = new String[tmp.length + 1];
String [] labels = new String[tmp.length + 1];
labels[0] = ServiziApplicativiCostanti.LABEL_PARAMETRO_FILTRO_RUOLO_QUALSIASI;
values[0] = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_SERVICE_BINDING_QUALSIASI;
for (int i =0; i < tmp.length ; i ++) {
labels[i+1] = tmp[i];
values[i+1] = tmp[i];
}
String selectedValue = ruoloSA != null ? ruoloSA : CostantiControlStation.DEFAULT_VALUE_PARAMETRO_SERVICE_BINDING_QUALSIASI;
String label = ServiziApplicativiCostanti.LABEL_TIPOLOGIA;
this.pd.addFilter(Filtri.FILTRO_RUOLO_SERVIZIO_APPLICATIVO, label, selectedValue, values, labels, postBack, this.getSize());
} catch (Exception e) {
this.logError("Exception: " + e.getMessage(), e);
throw new Exception(e.getMessage(),e);
}
}
private void addFilterTipoServizioApplicativo(String tipoSA, boolean postBack) throws Exception{
try {
String [] tmp_labels = ServiziApplicativiCostanti.getLabelsServiziApplicativiTipo();
String [] tmp_values = ServiziApplicativiCostanti.getValuesServiziApplicativiTipo();
String [] values = new String[tmp_values.length + 1];
String [] labels = new String[tmp_labels.length + 1];
labels[0] = ServiziApplicativiCostanti.LABEL_PARAMETRO_FILTRO_RUOLO_QUALSIASI;
values[0] = ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_QUALSIASI;
for (int i =0; i < tmp_labels.length ; i ++) {
labels[i+1] = tmp_labels[i];
values[i+1] = tmp_values[i];
}
String selectedValue = tipoSA != null ? tipoSA : ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_QUALSIASI;
String label = ServiziApplicativiCostanti.LABEL_TIPO;
this.pd.addFilter(Filtri.FILTRO_TIPO_SERVIZIO_APPLICATIVO, label, selectedValue, values, labels, postBack, this.getSize());
} catch (Exception e) {
this.logError("Exception: " + e.getMessage(), e);
throw new Exception(e.getMessage(),e);
}
}
public void prepareServizioApplicativoList(ISearch ricerca, List<ServizioApplicativo> lista, boolean useIdSoggetto) throws Exception {
prepareServizioApplicativoList(ricerca, lista, useIdSoggetto, true);
}
public void prepareServizioApplicativoList(ISearch ricerca, List<ServizioApplicativo> lista, boolean useIdSoggetto, boolean readProvider) throws Exception {
try {
boolean modalitaCompleta = this.isModalitaCompleta();
String idProvider = null;
if(readProvider) {
idProvider = this.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);
}
boolean multitenant = this.saCore.isMultitenant();
// prelevo il flag che mi dice da quale pagina ho acceduto la sezione
Integer parentSA = ServletUtils.getIntegerAttributeFromSession(ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT, this.session, this.request);
if(parentSA == null) parentSA = ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_NONE;
Boolean useIdSoggObject = parentSA == ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_SOGGETTO;
boolean useIdSogg = false;
if(useIdSoggObject!=null) {
useIdSogg = useIdSoggObject.booleanValue();
}
if(useIdSogg){
Parameter pProvider = new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER, idProvider);
ServletUtils.addListElementIntoSession(this.request, this.session, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI,pProvider );
}else
ServletUtils.addListElementIntoSession(this.request, this.session, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI);
Boolean contaListe = ServletUtils.getContaListeFromSession(this.session);
@SuppressWarnings("unused")
Boolean singlePdD = ServletUtils.getObjectFromSession(this.request, this.session, Boolean.class, CostantiControlStation.SESSION_PARAMETRO_SINGLE_PDD);
if(!modalitaCompleta && !useIdSogg) {
this.pd.setCustomListViewName(ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_NOME_VISTA_CUSTOM_LISTA);
}
// Prendo il soggetto
String tmpTitle = null;
String protocolloSoggetto = null;
boolean supportAsincroni = true;
if(useIdSogg){
if(this.core.isRegistroServiziLocale()){
Soggetto tmpSogg = this.soggettiCore.getSoggettoRegistro(Integer.parseInt(idProvider));
protocolloSoggetto = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(tmpSogg.getTipo());
tmpTitle = this.getLabelNomeSoggetto(protocolloSoggetto, tmpSogg.getTipo() , tmpSogg.getNome());
}else{
org.openspcoop2.core.config.Soggetto tmpSogg = this.soggettiCore.getSoggetto(Integer.parseInt(idProvider));
protocolloSoggetto = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(tmpSogg.getTipo());
tmpTitle = this.getLabelNomeSoggetto(protocolloSoggetto, tmpSogg.getTipo() , tmpSogg.getNome());
}
List<ServiceBinding> serviceBindingListProtocollo = this.core.getServiceBindingListProtocollo(protocolloSoggetto);
for (ServiceBinding serviceBinding : serviceBindingListProtocollo) {
supportAsincroni = this.core.isProfiloDiCollaborazioneSupportatoDalProtocollo(protocolloSoggetto,serviceBinding, ProfiloDiCollaborazione.ASINCRONO_ASIMMETRICO)
|| this.core.isProfiloDiCollaborazioneSupportatoDalProtocollo(protocolloSoggetto, serviceBinding, ProfiloDiCollaborazione.ASINCRONO_SIMMETRICO);
}
if(!supportAsincroni &&
this.isModalitaAvanzata()){
supportAsincroni = this.core.isElenchiSAAsincroniNonSupportatiVisualizzaRispostaAsincrona();
}
}
int idLista = useIdSogg ? Liste.SERVIZI_APPLICATIVI_BY_SOGGETTO : Liste.SERVIZIO_APPLICATIVO;
int limit = ricerca.getPageSize(idLista);
int offset = ricerca.getIndexIniziale(idLista);
String search = ServletUtils.getSearchFromSession(ricerca, idLista);
String filterProtocollo = null;
String filterSoggetto = null;
boolean profiloSelezionato = false;
boolean supportatoAutenticazioneApplicativiEsterni = false;
String protocolloS = null;
if(!useIdSogg) {
filterProtocollo = addFilterProtocol(ricerca, idLista, true);
protocolloS = filterProtocollo;
if(protocolloS==null) {
// significa che e' stato selezionato un protocollo nel menu in alto a destra
List<String> protocolli = this.core.getProtocolli(this.request, this.session);
if(protocolli!=null && protocolli.size()==1) {
protocolloS = protocolli.get(0);
}
}
if(protocolloS!=null && ! "".equals(protocolloS)) {
supportatoAutenticazioneApplicativiEsterni = this.saCore.isSupportatoAutenticazioneApplicativiEsterniErogazione(protocolloS); // devono essere fatti vedere tutti i soggetti, anche quelli esterni.
}
if( (filterProtocollo!=null &&
//!"".equals(filterProtocollo) &&
!CostantiControlStation.DEFAULT_VALUE_PARAMETRO_PROTOCOLLO_QUALSIASI.equals(filterProtocollo))
||
(filterProtocollo==null && protocolloS!=null)
) {
profiloSelezionato = true;
}
if( profiloSelezionato &&
(!this.isSoggettoMultitenantSelezionato() || supportatoAutenticazioneApplicativiEsterni)) {
boolean soloSoggettiOperativi = true;
if(supportatoAutenticazioneApplicativiEsterni) {
soloSoggettiOperativi = false;
}
filterSoggetto = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_SOGGETTO);
this.addFilterSoggetto(filterSoggetto,protocolloS,soloSoggettiOperativi,true);
}
}
if(this.isSoggettoMultitenantSelezionato()){
filterSoggetto = getSoggettoMultitenantSelezionato();
}
String filterDominio = null;
if(this.core.isGestionePddAbilitata(this)==false && multitenant && supportatoAutenticazioneApplicativiEsterni) {
filterDominio = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_DOMINIO);
addFilterDominio(filterDominio, true);
}
if(modalitaCompleta) {
String filterRuoloSA = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_RUOLO_SERVIZIO_APPLICATIVO);
this.addFilterRuoloServizioApplicativo(filterRuoloSA,false);
}
boolean applicativiServerEnabled = this.core.isApplicativiServerEnabled(this);
String filterTipoSA = null;
if(applicativiServerEnabled) {
filterTipoSA = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_TIPO_SERVIZIO_APPLICATIVO);
this.addFilterTipoServizioApplicativo(filterTipoSA, true);
}
String filterTipoCredenziali = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_TIPO_CREDENZIALI);
this.addFilterTipoCredenziali(filterTipoCredenziali,true,true);
if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN.equals(filterTipoCredenziali)) {
String filterCredenzialeTokenPolicy = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CREDENZIALE_TOKEN_POLICY);
this.addFilterCredenzialeTokenPolicy(filterCredenzialeTokenPolicy, false);
}
String filterCredenziale = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CREDENZIALE);
this.addFilterCredenziale(filterTipoCredenziali, filterCredenziale);
String filterCredenzialeIssuer = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CREDENZIALE_ISSUER);
this.addFilterCredenzialeIssuer(filterTipoCredenziali, filterCredenzialeIssuer);
String filterRuolo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_RUOLO);
addFilterRuolo(filterRuolo, false);
String filterGruppo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_GRUPPO);
addFilterGruppo(filterProtocollo, filterGruppo, true);
String filterApiContesto = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_API_CONTESTO);
this.addFilterApiContesto(filterApiContesto, true);
if(profiloSelezionato &&
filterApiContesto!=null &&
//!"".equals(filterApiContesto) &&
!CostantiControlStation.DEFAULT_VALUE_PARAMETRO_API_CONTESTO_QUALSIASI.equals(filterApiContesto)) {
String filterApiImplementazione = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_API_IMPLEMENTAZIONE);
this.addFilterApiImplementazione(filterProtocollo, filterSoggetto, filterGruppo, filterApiContesto, filterApiImplementazione, false);
}
else {
SearchUtils.clearFilter(ricerca, idLista, Filtri.FILTRO_API_IMPLEMENTAZIONE);
}
// filtro sui connettori solo se tipoSA = qualsiasi o server
if(applicativiServerEnabled &&
(filterTipoSA ==null || (ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_QUALSIASI.equals(filterTipoSA) ||
ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_SERVER.equals(filterTipoSA)))
){
// **** filtro connettore ****
// nuovi filtri connettore
this.addFilterSubtitle(ConnettoriCostanti.NAME_SUBTITLE_DATI_CONNETTORE, ConnettoriCostanti.LABEL_SUBTITLE_DATI_CONNETTORE, false);
// filtro tipo connettore con voce IM solo sulle erogazioni
String filterTipoConnettore = this.addFilterTipoConnettore(ricerca, idLista, true);
// filtro plugin
this.addFilterConnettorePlugin(ricerca, idLista, filterTipoConnettore);
// filtro debug
if(!this.isModalitaStandard()) {
this.addFilterConnettoreDebug(ricerca, idLista, filterTipoConnettore);
}
// filtro token policy
this.addFilterConnettoreTokenPolicy(ricerca, idLista, filterTipoConnettore);
// filtro endpoint
this.addFilterConnettoreEndpoint(ricerca, idLista, filterTipoConnettore);
// filtro keystore
this.addFilterConnettoreKeystore(ricerca, idLista, filterTipoConnettore);
// imposto apertura sezione
this.impostaAperturaSubtitle(ConnettoriCostanti.NAME_SUBTITLE_DATI_CONNETTORE);
// **** fine filtro connettore ****
}
// filtri modipa solo se tipoSA = client o qualsiasi
if(filterTipoSA ==null || (ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_QUALSIASI.equals(filterTipoSA) ||
ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_CLIENT.equals(filterTipoSA))) {
// filtri MODIPA da visualizzare solo se non e' stato selezionato un protocollo in alto a dx (opzione pilota da file di proprieta')
// oppure e' selezionato MODIPA
// oppure non e' stato selezionato un protocollo in alto e nessun protocollo nei filtri (opzione pilota da file di proprieta')
// oppure MODIPA nei filtri
boolean profiloModipaSelezionato = false;
// solo se il protocollo modipa e' caricato faccio la verifica
if(this.core.getProtocolli().contains(CostantiControlStation.DEFAULT_VALUE_PARAMETRO_PROTOCOLLO_MODIPA)) {
List<String> profiloModipaSelezionatoOpzioniAccettate = new ArrayList<>();
profiloModipaSelezionatoOpzioniAccettate.add(CostantiControlStation.DEFAULT_VALUE_PARAMETRO_PROTOCOLLO_MODIPA);
if(this.core.isModipaFiltroRicercaProfiloQualsiasiVisualizzaDatiModi()) {
profiloModipaSelezionatoOpzioniAccettate.add(CostantiControlStation.DEFAULT_VALUE_PARAMETRO_PROTOCOLLO_QUALSIASI);
}
if( (filterProtocollo!=null && profiloModipaSelezionatoOpzioniAccettate.contains(filterProtocollo))
||
(filterProtocollo==null && protocolloS!=null && profiloModipaSelezionatoOpzioniAccettate.contains(protocolloS))
) {
profiloModipaSelezionato = true;
}
}
if(profiloModipaSelezionato) {
// **** filtro modi ****
this.addFilterSubtitle(CostantiControlStation.NAME_SUBTITLE_FILTRI_MODIPA, CostantiControlStation.LABEL_SUBTITLE_FILTRI_MODIPA, false);
// ulteriore condizione per la visualizzazione della sezione e' che il Dominio non deve essere esterno
if(!this.core.isGestionePddAbilitata(this) && multitenant) {
if(!SoggettiCostanti.SOGGETTO_DOMINIO_ESTERNO_VALUE.equals(filterDominio)) {
// filtro sicurezza messaggio
String sicurezzaMessaggio = this.addFilterModISicurezzaMessaggioSA(ricerca, idLista, true);
if(sicurezzaMessaggio!=null && !CostantiControlStation.DEFAULT_VALUE_PARAMETRO_SOGGETTO_QUALSIASI.equals(sicurezzaMessaggio) &&
StatoFunzionalita.ABILITATO.getValue().equals(sicurezzaMessaggio)) {
// filtro keystore
this.addFilterModIKeystorePath(ricerca, idLista);
this.addFilterModIKeystoreSubject(ricerca, idLista);
this.addFilterModIKeystoreIssuer(ricerca, idLista);
}
// filtro sicurezza token
String sicurezzaToken = this.addFilterModISicurezzaTokenSA(ricerca, idLista, true);
if(sicurezzaToken!=null && !CostantiControlStation.DEFAULT_VALUE_PARAMETRO_SOGGETTO_QUALSIASI.equals(sicurezzaToken) &&
StatoFunzionalita.ABILITATO.getValue().equals(sicurezzaToken)) {
// filtro token
this.addFilterModITokenPolicy(ricerca, idLista, false);
this.addFilterModITokenClientId(ricerca, idLista);
}
}
}
// filtro audience
this.addFilterModIAudience(ricerca, idLista, true, null, filterDominio);
// imposto apertura sezione
this.impostaAperturaSubtitle(CostantiControlStation.NAME_SUBTITLE_FILTRI_MODIPA);
// **** fine filtro modi ****
}
}
String protocolloPerFiltroProprieta = protocolloS;
// valorizzato con il protocollo nel menu in alto a destra oppure null, controllo se e' stato selezionato nel filtro di ricerca
if(protocolloPerFiltroProprieta == null) {
if(
//"".equals(filterProtocollo) ||
CostantiControlStation.DEFAULT_VALUE_PARAMETRO_PROTOCOLLO_QUALSIASI.equals(filterProtocollo)) {
protocolloPerFiltroProprieta = null;
} else {
protocolloPerFiltroProprieta = filterProtocollo;
}
}
String soggettoPerFiltroProprieta = null;
if(profiloSelezionato) {
// soggetto non selezionato nel menu' in alto a dx
if(!this.isSoggettoMultitenantSelezionato()) {
soggettoPerFiltroProprieta = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_SOGGETTO);
if(
//"".equals(soggettoPerFiltroProprieta) ||
CostantiControlStation.DEFAULT_VALUE_PARAMETRO_SOGGETTO_QUALSIASI.equals(soggettoPerFiltroProprieta)) {
soggettoPerFiltroProprieta = null;
}
} else {
soggettoPerFiltroProprieta = this.getSoggettoMultitenantSelezionato();
}
}
// **** filtro proprieta ****
List<String> nomiProprieta = this.nomiProprietaSA(protocolloPerFiltroProprieta,soggettoPerFiltroProprieta);
if(nomiProprieta != null && !nomiProprieta.isEmpty()) {
this.addFilterSubtitle(CostantiControlStation.NAME_SUBTITLE_PROPRIETA, CostantiControlStation.LABEL_SUBTITLE_PROPRIETA, false);
// filtro nome
this.addFilterProprietaNome(ricerca, idLista, nomiProprieta);
// filtro valore
this.addFilterProprietaValore(ricerca, idLista, nomiProprieta);
// imposto apertura sezione
this.impostaAperturaSubtitle(CostantiControlStation.NAME_SUBTITLE_PROPRIETA);
}
// **** fine filtro proprieta ****
this.pd.setIndex(offset);
this.pd.setPageSize(limit);
this.pd.setNumEntries(ricerca.getNumEntries(idLista));
// setto la barra del titolo
String labelApplicativi = ServiziApplicativiCostanti.LABEL_SERVIZI_APPLICATIVI;
String labelApplicativiDi = ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_DI;
if(!modalitaCompleta) {
labelApplicativi = ServiziApplicativiCostanti.LABEL_APPLICATIVI;
labelApplicativiDi = ServiziApplicativiCostanti.LABEL_PARAMETRO_APPLICATIVI_DI;
}
if(!useIdSogg){
this.pd.setSearchLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_NOME);
if (search.equals("")) {
this.pd.setSearchDescription("");
ServletUtils.setPageDataTitle(this.pd,
new Parameter(labelApplicativi,ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST));
}
else{
ServletUtils.setPageDataTitle(this.pd,
new Parameter(labelApplicativi,ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST),
new Parameter(Costanti.PAGE_DATA_TITLE_LABEL_RISULTATI_RICERCA,null));
}
} else {
List<Parameter> lstParam = new ArrayList<>();
lstParam.add(new Parameter(SoggettiCostanti.LABEL_SOGGETTI, SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST));
this.pd.setSearchLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_NOME);
if(search.equals("")){
this.pd.setSearchDescription("");
lstParam.add(new Parameter(labelApplicativiDi + tmpTitle,null));
}else{
lstParam.add(new Parameter(labelApplicativiDi + tmpTitle,
ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST ,
new Parameter( ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER, idProvider)));
lstParam.add(new Parameter(PorteApplicativeCostanti.LABEL_PORTE_APPLICATIVE_RISULTATI_RICERCA, null));
}
ServletUtils.setPageDataTitle(this.pd, lstParam.toArray(new Parameter[lstParam.size()]));
}
// controllo eventuali risultati ricerca
if (!search.equals("")) {
ServletUtils.enabledPageDataSearch(this.pd, labelApplicativi, search);
}
boolean showProtocolli = this.core.countProtocolli(this.request, this.session)>1;
supportatoAutenticazioneApplicativiEsterni = false;
if (lista != null) {
Iterator<ServizioApplicativo> it = lista.iterator();
while (it.hasNext()) {
ServizioApplicativo sa = it.next();
String protocolloCheck = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(sa.getTipoSoggettoProprietario());
if(this.saCore.isSupportatoAutenticazioneApplicativiEsterniErogazione(protocolloCheck)) {
supportatoAutenticazioneApplicativiEsterni = true;
break;
}
}
}
// setto le label delle colonne
this.setLabelColonne(modalitaCompleta, useIdSogg, multitenant, supportatoAutenticazioneApplicativiEsterni, showProtocolli, supportAsincroni);
// preparo i dati
List<List<DataElement>> dati = new ArrayList<>();
if (lista != null) {
Iterator<ServizioApplicativo> it = lista.iterator();
while (it.hasNext()) {
List<DataElement> e = (!modalitaCompleta && !useIdSogg) ?
this.creaEntryCustom(multitenant, useIdSogg, showProtocolli, supportatoAutenticazioneApplicativiEsterni, applicativiServerEnabled, it) :
this.creaEntry(modalitaCompleta, multitenant, useIdSogg, contaListe, supportAsincroni, showProtocolli, supportatoAutenticazioneApplicativiEsterni, applicativiServerEnabled, it);
dati.add(e);
}
}
this.pd.setDati(dati);
this.pd.setAddButton(true);
// preparo bottoni
if(lista!=null && !lista.isEmpty()){
if (this.core.isShowPulsantiImportExport()) {
ExporterUtils exporterUtils = new ExporterUtils(this.archiviCore);
if(exporterUtils.existsAtLeastOneExportMode(org.openspcoop2.protocol.sdk.constants.ArchiveType.SERVIZIO_APPLICATIVO, this.request, this.session)){
List<AreaBottoni> bottoni = new ArrayList<>();
AreaBottoni ab = new AreaBottoni();
List<DataElement> otherbott = new ArrayList<>();
DataElement de = new DataElement();
de.setValue(ServiziApplicativiCostanti.LABEL_SERVIZI_APPLICATIVI_ESPORTA_SELEZIONATI);
de.setOnClick(ServiziApplicativiCostanti.LABEL_SERVIZI_APPLICATIVI_ESPORTA_SELEZIONATI_ONCLICK);
de.setDisabilitaAjaxStatus();
otherbott.add(de);
ab.setBottoni(otherbott);
bottoni.add(ab);
this.pd.setAreaBottoni(bottoni);
}
}
}
} catch (Exception e) {
this.logError("Exception: " + e.getMessage(), e);
throw new Exception(e.getMessage(),e);
}
}
private List<DataElement> creaEntry(boolean modalitaCompleta, boolean multitenant, Boolean useIdSogg,
Boolean contaListe, boolean supportAsincroni, boolean showProtocolli, boolean supportatoAutenticazioneApplicativiEsterni, boolean applicativiServerEnabled,
Iterator<ServizioApplicativo> it) throws DriverRegistroServiziNotFound, DriverRegistroServiziException,
DriverControlStationException, DriverControlStationNotFound, Exception, DriverConfigurazioneException {
ServizioApplicativo sa = it.next();
List<DataElement> e = new ArrayList<>();
DataElement de = new DataElement();
de.setType(DataElementType.HIDDEN);
de.setValue("" + sa.getId());
e.add(de);
String protocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(sa.getTipoSoggettoProprietario());
IDSoggetto idSoggettoProprietario = new IDSoggetto(sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario());
Soggetto soggettoProprietario = this.soggettiCore.getSoggettoRegistro(idSoggettoProprietario);
String dominio = this.pddCore.isPddEsterna(soggettoProprietario.getPortaDominio()) ? SoggettiCostanti.SOGGETTO_DOMINIO_ESTERNO_VALUE : SoggettiCostanti.SOGGETTO_DOMINIO_OPERATIVO_VALUE;
de = new DataElement();
de.setUrl(ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE,
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID, sa.getId()+""),
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER, sa.getIdSoggetto()+""),
new Parameter(SoggettiCostanti.PARAMETRO_SOGGETTO_DOMINIO, dominio));
de.setSize(this.core.getElenchiMenuIdentificativiLunghezzaMassima());
de.setValue(sa.getNome());
de.setIdToRemove(sa.getId().toString());
e.add(de);
if(!useIdSogg && (
(multitenant && !this.isSoggettoMultitenantSelezionato())
||
(supportatoAutenticazioneApplicativiEsterni)
)) {
de = new DataElement();
if(modalitaCompleta) {
de.setUrl(SoggettiCostanti.SERVLET_NAME_SOGGETTI_CHANGE,
new Parameter(SoggettiCostanti.PARAMETRO_SOGGETTO_ID, sa.getIdSoggetto()+""),
new Parameter(SoggettiCostanti.PARAMETRO_SOGGETTO_NOME, sa.getNomeSoggettoProprietario()),
new Parameter(SoggettiCostanti.PARAMETRO_SOGGETTO_TIPO, sa.getTipoSoggettoProprietario()));
}
de.setValue(this.getLabelNomeSoggetto(protocollo, sa.getTipoSoggettoProprietario() , sa.getNomeSoggettoProprietario()));
e.add(de);
}
if( showProtocolli ) {
de = new DataElement();
de.setValue(this.getLabelProtocollo(protocollo));
e.add(de);
}
boolean pddEsterna = false;
if(this.core.isRegistroServiziLocale()){
IDSoggetto tmpIDS = new IDSoggetto(sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario());
Soggetto tmpSogg = this.soggettiCore.getSoggettoRegistro(tmpIDS);
String nomePdd = tmpSogg.getPortaDominio();
if(this.pddCore.isPddEsterna(nomePdd)){
pddEsterna = true;
}
}
// Tipo
boolean isServer = false;
if(applicativiServerEnabled) {
de = new DataElement();
isServer = ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_SERVER.equals(sa.getTipo());
String tipoLabel = this.getTipo(sa);
if(sa.isUseAsClient()) {
isServer = false;
// tipoLabel = tipoLabel+" / "+ServiziApplicativiCostanti.LABEL_SERVIZI_APPLICATIVI_TIPO_CLIENT; gia aggiunto in metodo getTipo
}
de.setValue(tipoLabel);
e.add(de);
}
if(!modalitaCompleta) {
de = new DataElement();
if(isServer) {
de.setValue("-");
}
else {
if(useIdSogg){
de.setUrl(ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_RUOLI_LIST,
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO,sa.getId()+""),
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER,sa.getIdSoggetto()+""));
}
else{
de.setUrl(ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_RUOLI_LIST,
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO,sa.getId()+""));
}
if (contaListe) {
// BugFix OP-674
//List<String> lista1 = this.saCore.servizioApplicativoRuoliList(sa.getId(),new Search(true));
ConsoleSearch searchForCount = new ConsoleSearch(true,1);
this.saCore.servizioApplicativoRuoliList(sa.getId(),searchForCount);
//int numRuoli = lista1.size();
int numRuoli = searchForCount.getNumEntries(Liste.SERVIZIO_APPLICATIVO_RUOLI);
ServletUtils.setDataElementVisualizzaLabel(de,(long)numRuoli);
} else
ServletUtils.setDataElementVisualizzaLabel(de);
}
e.add(de);
}
if (modalitaCompleta){
de = new DataElement();
de.setValue(this.getTipologia(sa));
e.add(de);
}
if (modalitaCompleta){
de = new DataElement();
// se la pdd e' esterna non e' possibile modificare il
// connettore invocazione servizio
if (pddEsterna) {
de.setValue("-");// non visualizzo nulla e il link e'
// disabilitato
} else {
de.setUrl(ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_ENDPOINT,
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_NOME_SERVIZIO_APPLICATIVO, sa.getNome()),
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO, sa.getId()+""),
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER, sa.getIdSoggetto()+""));
InvocazioneServizio is = sa.getInvocazioneServizio();
if (is == null) {
de.setValue(CostantiConfigurazione.ABILITATO.toString());
} else {
org.openspcoop2.core.config.Connettore connettore = is.getConnettore();
boolean connettoreDisabilitato = ((CostantiConfigurazione.DISABILITATO.equals(connettore.getTipo())) || ("".equals(connettore.getTipo())) || (connettore.getTipo() == null));
boolean messageBoxDisabilitato = ((CostantiConfigurazione.DISABILITATO.equals(is.getGetMessage())) || (is.getGetMessage() == null) || ("".equals(is.getGetMessage().getValue())));
if ( connettoreDisabilitato && messageBoxDisabilitato) {
de.setValue(CostantiConfigurazione.DISABILITATO.toString());
} else {
if(connettoreDisabilitato){
de.setValue(ServiziApplicativiCostanti.LABEL_CONNETTORE_ABILITATO_SOLO_IM);
}
else{
de.setValue(CostantiConfigurazione.ABILITATO.toString());
}
}
}
}
e.add(de);
}
if(supportAsincroni && modalitaCompleta){
de = new DataElement();
// se la pdd e' esterna non e' possibile modificare il
// connettore risposta asincrona
boolean supportoAsincronoPuntualeSoggetto = true;
if(useIdSogg==false){
String protocolloPuntuale = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(sa.getTipoSoggettoProprietario());
List<ServiceBinding> serviceBindingListProtocollo = this.core.getServiceBindingListProtocollo(protocolloPuntuale);
for (ServiceBinding serviceBinding : serviceBindingListProtocollo) {
supportoAsincronoPuntualeSoggetto = this.core.isProfiloDiCollaborazioneSupportatoDalProtocollo(protocolloPuntuale,serviceBinding, ProfiloDiCollaborazione.ASINCRONO_ASIMMETRICO)
|| this.core.isProfiloDiCollaborazioneSupportatoDalProtocollo(protocolloPuntuale, serviceBinding, ProfiloDiCollaborazione.ASINCRONO_SIMMETRICO);
}
if(supportoAsincronoPuntualeSoggetto==false){
if (this.isModalitaAvanzata()){
supportoAsincronoPuntualeSoggetto = this.core.isElenchiSAAsincroniNonSupportatiVisualizzaRispostaAsincrona();
}
}
}
if (pddEsterna || !supportoAsincronoPuntualeSoggetto) {
de.setValue("-");// non visualizzo nulla e il link e'
// disabilitato
} else {
de.setUrl(ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_ENDPOINT_RISPOSTA,
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_NOME_SERVIZIO_APPLICATIVO, sa.getNome()),
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO, sa.getId()+""),
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER, sa.getIdSoggetto()+""));
RispostaAsincrona ra = sa.getRispostaAsincrona();
if (ra == null) {
de.setValue(CostantiConfigurazione.DISABILITATO.toString());
} else {
org.openspcoop2.core.config.Connettore connettore = ra.getConnettore();
boolean connettoreDisabilitato = ((CostantiConfigurazione.DISABILITATO.equals(connettore.getTipo())) || ("".equals(connettore.getTipo())) || (connettore.getTipo() == null));
boolean messageBoxDisabilitato = ((CostantiConfigurazione.DISABILITATO.equals(ra.getGetMessage())) || (ra.getGetMessage() == null) || ("".equals(ra.getGetMessage().getValue())) );
if ( connettoreDisabilitato && messageBoxDisabilitato) {
de.setValue(CostantiConfigurazione.DISABILITATO.toString());
} else {
if(connettoreDisabilitato){
de.setValue(ServiziApplicativiCostanti.LABEL_CONNETTORE_ABILITATO_SOLO_IM);
}
else{
de.setValue(CostantiConfigurazione.ABILITATO.toString());
}
}
}
}
e.add(de);
}
return e;
}
private List<DataElement> creaEntryCustom(boolean multitenant, Boolean useIdSoggParam, boolean showProtocolli, boolean supportatoAutenticazioneApplicativiEsterni,
boolean applicativiServerEnabled, Iterator<ServizioApplicativo> it) throws DriverRegistroServiziNotFound, DriverRegistroServiziException,
DriverControlStationException, DriverControlStationNotFound, DriverConfigurazioneException {
ServizioApplicativo sa = it.next();
List<DataElement> e = new ArrayList<>();
String protocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(sa.getTipoSoggettoProprietario());
IDSoggetto idSoggettoProprietario = new IDSoggetto(sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario());
Soggetto soggettoProprietario = this.soggettiCore.getSoggettoRegistro(idSoggettoProprietario);
String dominio = this.pddCore.isPddEsterna(soggettoProprietario.getPortaDominio()) ? SoggettiCostanti.SOGGETTO_DOMINIO_ESTERNO_VALUE : SoggettiCostanti.SOGGETTO_DOMINIO_OPERATIVO_VALUE;
Parameter pSAId = new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID, sa.getId()+"");
Parameter pSAIdSoggetto = new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER, sa.getIdSoggetto()+"");
Parameter pDominio = new Parameter(SoggettiCostanti.PARAMETRO_SOGGETTO_DOMINIO, dominio);
List<Parameter> listaParametriChange = new ArrayList<>();
listaParametriChange.add(pSAId);
listaParametriChange.add(pSAIdSoggetto);
listaParametriChange.add(pDominio);
// TITOLO (nome + soggetto)
String nome = sa.getNome();
DataElement de = new DataElement();
de.setUrl(ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE, pSAId, pSAIdSoggetto, pDominio);
de.setSize(this.core.getElenchiMenuIdentificativiLunghezzaMassima());
de.setIdToRemove(sa.getId().toString());
de.setType(DataElementType.TITLE);
boolean useIdSogg = false;
if(useIdSoggParam!=null) {
useIdSogg = useIdSoggParam.booleanValue();
}
if(!useIdSogg && ((multitenant && !this.isSoggettoMultitenantSelezionato()) || (supportatoAutenticazioneApplicativiEsterni))) {
nome = nome + "@" + this.getLabelNomeSoggetto(protocollo, sa.getTipoSoggettoProprietario() , sa.getNomeSoggettoProprietario());
}
de.setValue(nome);
e.add(de);
// Metadati (profilo + tipo)
String tipoLabel = "";
boolean isServer = false;
if(applicativiServerEnabled || showProtocolli) {
de = new DataElement();
boolean addMetadati = true;
if(applicativiServerEnabled) {
isServer = ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_SERVER.equals(sa.getTipo());
tipoLabel = this.getTipo(sa);
if(sa.isUseAsClient()) {
isServer = false;
//tipoLabel = tipoLabel+" / "+ServiziApplicativiCostanti.LABEL_SERVIZI_APPLICATIVI_TIPO_CLIENT; gia aggiunto in metodo getTipo
}
if(showProtocolli) {
String labelProtocollo =this.getLabelProtocollo(protocollo);
de.setValue(MessageFormat.format(ServiziApplicativiCostanti.MESSAGE_METADATI_SERVIZIO_APPLICATIVO_CON_PROFILO, labelProtocollo, tipoLabel));
} else {
de.setValue(MessageFormat.format(ServiziApplicativiCostanti.MESSAGE_METADATI_SERVIZIO_APPLICATIVO_SENZA_PROFILO, tipoLabel));
}
} else {
if(showProtocolli) {
String labelProtocollo =this.getLabelProtocollo(protocollo);
de.setValue(MessageFormat.format(ServiziApplicativiCostanti.MESSAGE_METADATI_SERVIZIO_APPLICATIVO_SOLO_PROFILO, labelProtocollo));
} else {
de.setValue(ServiziApplicativiCostanti.MESSAGE_METADATI_SERVIZIO_APPLICATIVO_VUOTI);
addMetadati = false;
}
}
de.setType(DataElementType.SUBTITLE);
if(addMetadati)
e.add(de);
}
// Ruoli e' come i tag per ora
if(!isServer) {
List<String> listaRuoli = this.saCore.servizioApplicativoRuoliList(sa.getId(),new ConsoleSearch(true));
for (int j = 0; j < listaRuoli.size(); j++) {
String ruolo = listaRuoli.get(j);
de = new DataElement();
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_RUOLO + "_" + j);
de.setType(DataElementType.BUTTON);
de.setLabel(ruolo);
/** int indexOf = ruoliDisponibili.indexOf(ruolo);
// if(indexOf == -1)
// indexOf = 0;
//
// indexOf = indexOf % CostantiControlStation.NUMERO_GRUPPI_CSS;*/
de.setStyleClass("ruolo-label-info-0"); /**+indexOf);*/
de.setUrl(ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_RUOLI_LIST,
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO, sa.getId()+""));
de.setToolTip(RuoliCostanti.LABEL_RUOLI);
e.add(de);
}
}
IDServizioApplicativo idServizioApplicativo = new IDServizioApplicativo();
idServizioApplicativo.setNome(sa.getNome());
idServizioApplicativo.setIdSoggettoProprietario(new IDSoggetto(sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario()));
listaParametriChange.add(new Parameter(CostantiControlStation.PARAMETRO_VERIFICA_CERTIFICATI_FROM_LISTA, "true"));
listaParametriChange.add(new Parameter(CostantiControlStation.PARAMETRO_RESET_CACHE_FROM_LISTA, "true"));
// In Uso Button
this.addInUsoButton(e,
(this.isSoggettoMultitenantSelezionato() ? sa.getNome() : this.getLabelServizioApplicativoConDominioSoggetto(idServizioApplicativo)),
sa.getId()+"", InUsoType.SERVIZIO_APPLICATIVO);
// Verifica certificati visualizzato solo se l'applicativo ha credenziali https oppure una configurazione modi di sicurezza
if(this.core.isApplicativiVerificaCertificati()) {
// Verifica certificati visualizzato solo se il soggetto ha credenziali https
boolean ssl = false;
InvocazionePorta ip = sa.getInvocazionePorta();
for (int i = 0; i < ip.sizeCredenzialiList(); i++) {
Credenziali c = ip.getCredenziali(i);
if(org.openspcoop2.core.config.constants.CredenzialeTipo.SSL.equals(c.getTipo())) {
//&& c.getCertificate()!=null) { non viene ritornato dalla lista
ssl = true;
}
}
// Verifica configurazione modi di sicurezza
boolean modi = this.core.isProfiloModIPA(protocollo);
boolean sicurezzaMessaggioModi = false;
boolean server = ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_SERVER.equals(sa.getTipo());
if(modi){
KeystoreParams keystoreParams = org.openspcoop2.protocol.utils.ModIUtils.getApplicativoKeystoreParams(sa.getProtocolPropertyList());
sicurezzaMessaggioModi = keystoreParams!= null;
}
if(ssl || sicurezzaMessaggioModi || server) {
this.addVerificaCertificatiButton(e, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_VERIFICA_CERTIFICATI, listaParametriChange);
}
}
// Verifica connettività
if(ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_SERVER.equals(sa.getTipo())) {
List<Parameter> listaParametriVerificaConnettivitaChange = new ArrayList<>();
listaParametriVerificaConnettivitaChange.addAll(listaParametriChange);
listaParametriVerificaConnettivitaChange.add(new Parameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTIVITA, "true"));
this.addVerificaConnettivitaButton(e, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_VERIFICA_CERTIFICATI, listaParametriVerificaConnettivitaChange);
}
// se e' abilitata l'opzione reset cache per elemento, visualizzo il comando nell'elenco dei comandi disponibili nella lista
if(this.core.isElenchiVisualizzaComandoResetCacheSingoloElemento()){
this.addComandoResetCacheButton(e, (this.isSoggettoMultitenantSelezionato() ? sa.getNome() : this.getLabelServizioApplicativoConDominioSoggetto(idServizioApplicativo)),
ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE, listaParametriChange);
}
// Proprieta Button
/**if(this.existsProprietaOggetto(sa.getProprietaOggetto(), sa.getDescrizione())) {
** la lista non riporta le proprietà. Ma esistono e poi sarà la servlet a gestirlo
*/
this.addProprietaOggettoButton(e, (this.isSoggettoMultitenantSelezionato() ? sa.getNome() : this.getLabelServizioApplicativoConDominioSoggetto(idServizioApplicativo)),
sa.getId()+"", InUsoType.SERVIZIO_APPLICATIVO);
return e;
}
private void setLabelColonne(boolean modalitaCompleta, boolean useIdSogg, boolean multitenant, boolean supportatoAutenticazioneApplicativiEsterni, boolean showProtocolli, boolean supportAsincroni) {
if(!modalitaCompleta && !useIdSogg) {
List<String> labels = new ArrayList<>();
// labels.add("");//ServiziApplicativiCostanti.LABEL_SA_STATO); // colonna info
labels.add(ServiziApplicativiCostanti.LABEL_APPLICATIVI);
this.pd.setLabels(labels.toArray(new String[1]));
} else {
List<String> labels = new ArrayList<>();
labels.add(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_NOME);
if(!useIdSogg && (
(multitenant && !this.isSoggettoMultitenantSelezionato())
||
(supportatoAutenticazioneApplicativiEsterni)
)) {
labels.add(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);
}
if( showProtocolli ) {
labels.add(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROTOCOLLO_COMPACT);
}
if(this.core.isApplicativiServerEnabled(this)) {
labels.add(ServiziApplicativiCostanti.LABEL_TIPO);
}
if(!modalitaCompleta) {
labels.add(RuoliCostanti.LABEL_RUOLI);
}
if(modalitaCompleta) {
labels.add(ServiziApplicativiCostanti.LABEL_TIPOLOGIA);
}
if (modalitaCompleta){
labels.add(ServiziApplicativiCostanti.LABEL_INVOCAZIONE_SERVIZIO);
}
if(supportAsincroni && modalitaCompleta){
labels.add(ServiziApplicativiCostanti.LABEL_RISPOSTA_ASINCRONA);
}
this.pd.setLabels(labels.toArray(new String[1]));
}
}
private String getTipo(ServizioApplicativo sa){
return getTipo(sa.getTipo(),sa.isUseAsClient());
}
private String getTipo(String tipo, boolean useServerAsClient){
if(tipo == null)
return ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_TIPO_NON_CONFIGURATO;
if(tipo.equals(ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_CLIENT))
return ServiziApplicativiCostanti.LABEL_SERVIZI_APPLICATIVI_TIPO_CLIENT;
else if(tipo.equals(ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_SERVER)) {
if(useServerAsClient) {
return ServiziApplicativiCostanti.LABEL_SERVIZI_APPLICATIVI_TIPO_SERVER+" / "+ServiziApplicativiCostanti.LABEL_SERVIZI_APPLICATIVI_TIPO_CLIENT;
}
else {
return ServiziApplicativiCostanti.LABEL_SERVIZI_APPLICATIVI_TIPO_SERVER;
}
}
return tipo;
}
private String getTipologia(ServizioApplicativo sa){
String ruoloFruitore = sa.getTipologiaFruizione();
String ruoloErogatore = sa.getTipologiaErogazione();
TipologiaFruizione tipologiaFruizione = TipologiaFruizione.toEnumConstant(ruoloFruitore);
TipologiaErogazione tipologiaErogazione = TipologiaErogazione.toEnumConstant(ruoloErogatore);
if(tipologiaFruizione==null){
// cerco di comprenderlo dalla configurazione del sa
if(sa.getInvocazionePorta()!=null && sa.getInvocazionePorta().sizeCredenzialiList()>0){
tipologiaFruizione = TipologiaFruizione.NORMALE;
}
else{
tipologiaFruizione = TipologiaFruizione.DISABILITATO;
}
}
if(tipologiaErogazione==null){
// cerco di comprenderlo dalla configurazione del sa
if(sa.getInvocazioneServizio()!=null){
if(StatoFunzionalita.ABILITATO.equals(sa.getInvocazioneServizio().getGetMessage())){
tipologiaErogazione = TipologiaErogazione.MESSAGE_BOX;
}
else if(sa.getInvocazioneServizio().getConnettore()!=null &&
!TipiConnettore.DISABILITATO.getNome().equals(sa.getInvocazioneServizio().getConnettore().getTipo())){
tipologiaErogazione = TipologiaErogazione.TRASPARENTE;
}
else{
tipologiaErogazione = TipologiaErogazione.DISABILITATO;
}
}
else{
tipologiaErogazione = TipologiaErogazione.DISABILITATO;
}
}
if(!TipologiaFruizione.DISABILITATO.equals(tipologiaFruizione) &&
!TipologiaErogazione.DISABILITATO.equals(tipologiaErogazione) ){
return ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_RUOLO_FRUITORE + "/" + ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_RUOLO_EROGATORE;
}
else if(!TipologiaFruizione.DISABILITATO.equals(tipologiaFruizione)){
return ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_RUOLO_FRUITORE;
}
else if(!TipologiaErogazione.DISABILITATO.equals(tipologiaErogazione)){
return ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_RUOLO_EROGATORE;
}
else{
return ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_RUOLO_NON_CONFIGURATO;
}
}
public void addEndPointToDati(List<DataElement> dati,
String idsil,String nomeservizioApplicativo,String sbustamento,String sbustamentoInformazioniProtocolloRichiesta,
String getmsg,String usernameGetMsg, String passwordGetMsg,boolean gestioneCredenzialiGetMsg,
String invrif,String risprif, String nomeProtocollo, boolean showName,
boolean isInvocazioneServizio, boolean showTitleTrattamentoMessaggio,
Integer parentSA, ServiceBinding serviceBinding,
String accessoDaAPSParametro, boolean servizioApplicativoServerEnabled,
String tipoSA, boolean useAsClient,
boolean integrationManagerEnabled,
TipoOperazione tipoOperazione, String tipoCredenzialiSSLVerificaTuttiICampi, String changepwd,
boolean postBackViaPost) throws Exception{
if(servizioApplicativoServerEnabled) {
this.addEndPointToDatiAsHidden(dati, idsil, nomeservizioApplicativo, sbustamento,
sbustamentoInformazioniProtocolloRichiesta, getmsg, usernameGetMsg, passwordGetMsg,
gestioneCredenzialiGetMsg, invrif, risprif, nomeProtocollo, showName, isInvocazioneServizio,
showTitleTrattamentoMessaggio, parentSA, serviceBinding, accessoDaAPSParametro, servizioApplicativoServerEnabled);
return;
}
IProtocolFactory<?> protocolFactory = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(nomeProtocollo);
IProtocolConfiguration config = protocolFactory.createProtocolConfiguration();
DataElement de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO);
de.setValue(idsil);
de.setType(DataElementType.HIDDEN);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO);
dati.add(de);
if(accessoDaAPSParametro!=null && !"".equals(accessoDaAPSParametro)) {
de = new DataElement();
de.setType(DataElementType.HIDDEN);
de.setValue(accessoDaAPSParametro);
de.setName(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORE_DA_LISTA_APS);
dati.add(de);
}
boolean showFromConfigurazione = false;
if(parentSA!=null && (parentSA.intValue() == ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_CONFIGURAZIONE)) {
showFromConfigurazione = true;
}
if(showName && !showFromConfigurazione){
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_SERVIZIO_APPLICATIVO);
de.setType(DataElementType.TITLE);
dati.add(de);
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_NOME);
de.setValue(nomeservizioApplicativo);
de.setType(DataElementType.TEXT);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_NOME_SERVIZIO_APPLICATIVO);
de.setSize(this.getSize());
dati.add(de);
}
boolean sbustamentoSoapEnabled = !this.isModalitaStandard() && (serviceBinding == null || serviceBinding.equals(ServiceBinding.SOAP));
boolean sbustamentoProtocolloEnabled = !this.isModalitaStandard() && config.isSupportoSbustamentoProtocollo();
//controllo aggiunta sezione trattamento messaggio appare se c'e' almeno un elemento sui 4 previsti che puo' essere visualizzato.
showTitleTrattamentoMessaggio = showTitleTrattamentoMessaggio && (
sbustamentoSoapEnabled ||
sbustamentoProtocolloEnabled ||
this.isModalitaCompleta()
);
if(showTitleTrattamentoMessaggio){
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_TRATTAMENTO_MESSAGGIO);
de.setType(DataElementType.TITLE);
dati.add(de);
}
String[] tipoSbustamentoSOAP = { CostantiConfigurazione.ABILITATO.toString(), CostantiConfigurazione.DISABILITATO.toString() };
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_SBUSTAMENTO_SOAP);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_SBUSTAMENTO_SOAP);
if(sbustamentoSoapEnabled) {
de.setType(DataElementType.SELECT);
de.setValues(tipoSbustamentoSOAP);
if(sbustamento==null){
de.setSelected(CostantiConfigurazione.DISABILITATO.toString());
}else{
de.setSelected(sbustamento);
}
} else {
de.setType(DataElementType.HIDDEN);
if(sbustamento==null){
de.setValue(CostantiConfigurazione.DISABILITATO.toString());
}else{
de.setValue(sbustamento);
}
}
dati.add(de);
String[] tipoSbustamentoInformazioniProtocollo = { CostantiConfigurazione.ABILITATO.toString(), CostantiConfigurazione.DISABILITATO.toString() };
de = new DataElement();
if(nomeProtocollo!=null && !"".equals(nomeProtocollo)){
de.setLabel(ServiziApplicativiCostanti.getLabelSbustamentoProtocollo(nomeProtocollo));
}else{
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_SBUSTAMENTO_INFO_PROTOCOLLO_INFO_PROTOCOLLO);
}
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_SBUSTAMENTO_INFO_PROTOCOLLO_RICHIESTA);
if(sbustamentoProtocolloEnabled) {
de.setType(DataElementType.SELECT);
de.setValues(tipoSbustamentoInformazioniProtocollo);
if(sbustamentoInformazioniProtocolloRichiesta==null){
de.setSelected(CostantiConfigurazione.ABILITATO.toString());
}else{
de.setSelected(sbustamentoInformazioniProtocolloRichiesta);
}
}
else {
de.setType(DataElementType.HIDDEN);
if(sbustamentoInformazioniProtocolloRichiesta==null){
de.setValue(CostantiConfigurazione.ABILITATO.toString());
}else{
de.setValue(sbustamentoInformazioniProtocolloRichiesta);
}
}
dati.add(de);
if (!this.isModalitaCompleta()) {
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_INVIO_PER_RIFERIMENTO);
de.setType(DataElementType.HIDDEN);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_INVIO_PER_RIFERIMENTO_RICHIESTA);
de.setValue(invrif);
dati.add(de);
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_RISPOSTA_PER_RIFERIMENTO);
de.setType(DataElementType.HIDDEN);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_RISPOSTA_PER_RIFERIMENTO);
de.setValue(risprif);
dati.add(de);
} else {
String[] tipoInvRif = { CostantiConfigurazione.ABILITATO.toString(), CostantiConfigurazione.DISABILITATO.toString() };
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_INVIO_PER_RIFERIMENTO);
de.setType(DataElementType.SELECT);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_INVIO_PER_RIFERIMENTO_RICHIESTA);
de.setValues(tipoInvRif);
if(invrif==null){
de.setSelected(CostantiConfigurazione.DISABILITATO.toString());
}else{
de.setSelected(invrif);
}
dati.add(de);
String[] tipoRispRif = { CostantiConfigurazione.ABILITATO.toString(), CostantiConfigurazione.DISABILITATO.toString() };
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_RISPOSTA_PER_RIFERIMENTO);
de.setType(DataElementType.SELECT);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_RISPOSTA_PER_RIFERIMENTO);
de.setValues(tipoRispRif);
if(risprif==null){
de.setSelected(CostantiConfigurazione.DISABILITATO.toString());
}else{
de.setSelected(risprif);
}
dati.add(de);
}
if(integrationManagerEnabled) {
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_SERVIZIO_MESSAGE_BOX);
de.setType(DataElementType.TITLE);
dati.add(de);
}
String[] tipoGM = { CostantiConfigurazione.ABILITATO.toString(), CostantiConfigurazione.DISABILITATO.toString() };
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_MESSAGE_BOX);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_MESSAGE_BOX);
if(integrationManagerEnabled) {
de.setType(DataElementType.SELECT);
de.setValues(tipoGM);
if(getmsg==null){
de.setSelected(CostantiConfigurazione.DISABILITATO.toString());
}else{
de.setSelected(getmsg);
}
if(postBackViaPost) {
de.setPostBack_viaPOST(true);
}
else {
de.setPostBack(true);
}
} else {
de.setType(DataElementType.HIDDEN);
if(getmsg==null){
de.setValue(CostantiConfigurazione.DISABILITATO.toString());
}else{
de.setValue(getmsg);
}
}
dati.add(de);
if(gestioneCredenzialiGetMsg && CostantiConfigurazione.ABILITATO.toString().equals(getmsg)) {
de = new DataElement();
de.setLabel(ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_USERNAME);
de.setValue(StringEscapeUtils.escapeHtml(usernameGetMsg));
if(integrationManagerEnabled) {
de.setType(DataElementType.TEXT_EDIT);
}
else {
de.setType(DataElementType.HIDDEN);
}
de.setName(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_USERNAME);
de.setSize(this.getSize());
de.setRequired(true);
dati.add(de);
boolean change = TipoOperazione.CHANGE.equals(tipoOperazione);
boolean passwordCifrata = ServletUtils.isCheckBoxEnabled(tipoCredenzialiSSLVerificaTuttiICampi); // tipoCredenzialiSSLVerificaTuttiICampi usata come informazione per sapere se una password e' cifrata o meno
if(change && passwordCifrata) {
try {
long idS = -1;
if(idsil!=null) {
idS = Long.valueOf(idsil);
}
if(idS>0) {
ServizioApplicativo oldSA = this.saCore.getServizioApplicativo(idS);
boolean oldIMState = false;
if(isInvocazioneServizio) {
oldIMState = oldSA.getInvocazioneServizio()!=null && oldSA.getInvocazioneServizio().getGetMessage()!=null &&
StatoFunzionalita.ABILITATO.equals(oldSA.getInvocazioneServizio().getGetMessage());
}
else {
oldIMState = oldSA.getRispostaAsincrona()!=null && oldSA.getRispostaAsincrona().getGetMessage()!=null &&
StatoFunzionalita.ABILITATO.equals(oldSA.getRispostaAsincrona().getGetMessage());
}
if(!oldIMState) {
// se prima di questa modifica l'integration manager non era abilitato, devo far impostare la password
passwordCifrata = false;
}
}
}catch(Throwable t) {}
}
if(change && passwordCifrata ){
DataElement deModifica = new DataElement();
deModifica.setLabel(ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_MODIFICA_PASSWORD);
deModifica.setType(DataElementType.CHECKBOX);
deModifica.setName(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CHANGE_PASSWORD);
deModifica.setPostBack(true);
deModifica.setSelected(changepwd);
deModifica.setSize(this.getSize());
dati.add(deModifica);
DataElement deCifratura = new DataElement();
deCifratura.setName(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI);
deCifratura.setType(DataElementType.HIDDEN);
deCifratura.setValue(tipoCredenzialiSSLVerificaTuttiICampi);
dati.add(deCifratura);
}
if( (!change) || (!passwordCifrata) || (ServletUtils.isCheckBoxEnabled(changepwd)) ){
de = new DataElement();
if(ServletUtils.isCheckBoxEnabled(changepwd)) {
de.setLabel(ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_NUOVA_PASSWORD);
}
else {
de.setLabel(ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_PASSWORD);
}
if(change && passwordCifrata && ServletUtils.isCheckBoxEnabled(changepwd) ){
de.setValue(null); // non faccio vedere una password cifrata
}
else{
de.setValue(StringEscapeUtils.escapeHtml(passwordGetMsg));
}
if(integrationManagerEnabled) {
//de.setType(DataElementType.TEXT_EDIT);
// Nuova visualizzazione Password con bottone genera password
de.setType(DataElementType.CRYPT);
de.getPassword().setVisualizzaPasswordChiaro(true);
de.getPassword().setVisualizzaBottoneGeneraPassword(true);
PasswordVerifier passwordVerifier = null;
boolean isBasicPasswordEnableConstraints = this.connettoriCore.isApplicativiBasicPasswordEnableConstraints();
int lunghezzaPasswordGenerate= this.connettoriCore.getApplicativiBasicLunghezzaPasswordGenerate();
if(isBasicPasswordEnableConstraints) {
passwordVerifier = this.connettoriCore.getApplicativiPasswordVerifier();
}
if(passwordVerifier != null) {
PasswordGenerator passwordGenerator = new PasswordGenerator(passwordVerifier);
de.getPassword().setPasswordGenerator(passwordGenerator);
de.setNote(passwordVerifier.help(org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE));
}
de.getPassword().getPasswordGenerator().setDefaultLength(lunghezzaPasswordGenerate);
}
else {
de.setType(DataElementType.HIDDEN);
}
de.setName(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_PASSWORD);
de.setSize(this.getSize());
de.setRequired(true);
dati.add(de);
}
else {
de = new DataElement();
de.setType(DataElementType.HIDDEN);
de.setName(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_PASSWORD);
de.setValue(StringEscapeUtils.escapeHtml(passwordGetMsg));
dati.add(de);
}
if(ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_SERVER.equals(tipoSA)) {
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_UTILIZZABILE_COME_CLIENT);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_UTILIZZABILE_COME_CLIENT);
de.setType(DataElementType.CHECKBOX);
de.setSelected(useAsClient);
//de.setPostBack(true); Non abilitare senno spunta il link 'ruoli' prima di aver salvata effettivamente l'opzione usaComeClient
dati.add(de);
}
}
}
public void addEndPointToDatiAsHidden(List<DataElement> dati,
String idsil,String nomeservizioApplicativo,String sbustamento,String sbustamentoInformazioniProtocolloRichiesta,
String getmsg,String usernameGetMsg, String passwordGetMsg,boolean gestioneCredenzialiGetMsg,
String invrif,String risprif, String nomeProtocollo, boolean showName,
boolean isInvocazioneServizio, boolean showTitleTrattamentoMessaggio,
Integer parentSA, ServiceBinding serviceBinding,
String accessoDaAPSParametro, boolean servizioApplicativoServerEnabled) throws Exception{
IProtocolFactory<?> protocolFactory = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(nomeProtocollo);
IProtocolConfiguration config = protocolFactory.createProtocolConfiguration();
DataElement de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO);
de.setValue(idsil);
de.setType(DataElementType.HIDDEN);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO);
dati.add(de);
if(accessoDaAPSParametro!=null && !"".equals(accessoDaAPSParametro)) {
de = new DataElement();
de.setType(DataElementType.HIDDEN);
de.setValue(accessoDaAPSParametro);
de.setName(PorteApplicativeCostanti.PARAMETRO_PORTE_APPLICATIVE_CONNETTORE_DA_LISTA_APS);
dati.add(de);
}
boolean showFromConfigurazione = false;
if(parentSA!=null && (parentSA.intValue() == ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_CONFIGURAZIONE)) {
showFromConfigurazione = true;
}
if(showName && !showFromConfigurazione){
// de = new DataElement();
// de.setLabel(ServiziApplicativiCostanti.LABEL_SERVIZIO_APPLICATIVO);
// de.setType(DataElementType.TITLE);
// dati.add(de);
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_NOME);
de.setValue(nomeservizioApplicativo);
de.setType(DataElementType.HIDDEN);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_NOME_SERVIZIO_APPLICATIVO);
de.setSize(this.getSize());
dati.add(de);
}
boolean sbustamentoSoapEnabled = !this.isModalitaStandard() && (serviceBinding == null || serviceBinding.equals(ServiceBinding.SOAP));
boolean sbustamentoProtocolloEnabled = !this.isModalitaStandard() && config.isSupportoSbustamentoProtocollo();
//controllo aggiunta sezione trattamento messaggio appare se c'e' almeno un elemento sui 4 previsti che puo' essere visualizzato.
showTitleTrattamentoMessaggio = showTitleTrattamentoMessaggio && (
sbustamentoSoapEnabled ||
sbustamentoProtocolloEnabled ||
this.isModalitaCompleta()
);
// if(showTitleTrattamentoMessaggio){
// de = new DataElement();
// de.setLabel(ServiziApplicativiCostanti.LABEL_TRATTAMENTO_MESSAGGIO);
// de.setType(DataElementType.TITLE);
// dati.add(de);
// }
// String[] tipoSbustamentoSOAP = { CostantiConfigurazione.ABILITATO.toString(), CostantiConfigurazione.DISABILITATO.toString() };
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_SBUSTAMENTO_SOAP);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_SBUSTAMENTO_SOAP);
// if(sbustamentoSoapEnabled) {
// de.setType(DataElementType.SELECT);
// de.setValues(tipoSbustamentoSOAP);
// if(sbustamento==null){
// de.setSelected(CostantiConfigurazione.DISABILITATO.toString());
// }else{
// de.setSelected(sbustamento);
// }
// } else {
de.setType(DataElementType.HIDDEN);
if(sbustamento==null){
de.setValue(CostantiConfigurazione.DISABILITATO.toString());
}else{
de.setValue(sbustamento);
}
// }
dati.add(de);
// String[] tipoSbustamentoInformazioniProtocollo = { CostantiConfigurazione.ABILITATO.toString(), CostantiConfigurazione.DISABILITATO.toString() };
de = new DataElement();
// if(nomeProtocollo!=null && !"".equals(nomeProtocollo)){
// de.setLabel(ServiziApplicativiCostanti.getLabelSbustamentoProtocollo(nomeProtocollo));
// }else{
// de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_SBUSTAMENTO_INFO_PROTOCOLLO_INFO_PROTOCOLLO);
// }
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_SBUSTAMENTO_INFO_PROTOCOLLO_RICHIESTA);
// if(sbustamentoProtocolloEnabled) {
// de.setType(DataElementType.SELECT);
// de.setValues(tipoSbustamentoInformazioniProtocollo);
// if(sbustamentoInformazioniProtocolloRichiesta==null){
// de.setSelected(CostantiConfigurazione.ABILITATO.toString());
// }else{
// de.setSelected(sbustamentoInformazioniProtocolloRichiesta);
// }
// }
// else {
de.setType(DataElementType.HIDDEN);
if(sbustamentoInformazioniProtocolloRichiesta==null){
de.setValue(CostantiConfigurazione.ABILITATO.toString());
}else{
de.setValue(sbustamentoInformazioniProtocolloRichiesta);
}
// }
dati.add(de);
// if (!this.isModalitaCompleta()) {
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_INVIO_PER_RIFERIMENTO);
de.setType(DataElementType.HIDDEN);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_INVIO_PER_RIFERIMENTO_RICHIESTA);
if(invrif==null){
de.setSelected(CostantiConfigurazione.DISABILITATO.toString());
}else{
de.setSelected(invrif);
}
dati.add(de);
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_RISPOSTA_PER_RIFERIMENTO);
de.setType(DataElementType.HIDDEN);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_RISPOSTA_PER_RIFERIMENTO);
if(risprif==null){
de.setSelected(CostantiConfigurazione.DISABILITATO.toString());
}else{
de.setSelected(risprif);
}
dati.add(de);
// } else {
// String[] tipoInvRif = { CostantiConfigurazione.ABILITATO.toString(), CostantiConfigurazione.DISABILITATO.toString() };
// de = new DataElement();
// de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_INVIO_PER_RIFERIMENTO);
// de.setType(DataElementType.SELECT);
// de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_INVIO_PER_RIFERIMENTO_RICHIESTA);
// de.setValues(tipoInvRif);
// if(invrif==null){
// de.setSelected(CostantiConfigurazione.DISABILITATO.toString());
// }else{
// de.setSelected(invrif);
// }
// dati.add(de);
//
// String[] tipoRispRif = { CostantiConfigurazione.ABILITATO.toString(), CostantiConfigurazione.DISABILITATO.toString() };
// de = new DataElement();
// de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_RISPOSTA_PER_RIFERIMENTO);
// de.setType(DataElementType.SELECT);
// de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_RISPOSTA_PER_RIFERIMENTO);
// de.setValues(tipoRispRif);
// if(risprif==null){
// de.setSelected(CostantiConfigurazione.DISABILITATO.toString());
// }else{
// de.setSelected(risprif);
// }
// dati.add(de);
// }
// boolean integrationManagerEnabled = !this.isModalitaStandard() && this.core.isIntegrationManagerEnabled();
// if(integrationManagerEnabled) {
// de = new DataElement();
// de.setLabel(ServiziApplicativiCostanti.LABEL_SERVIZIO_MESSAGE_BOX);
// de.setType(DataElementType.TITLE);
// dati.add(de);
// }
// String[] tipoGM = { CostantiConfigurazione.ABILITATO.toString(), CostantiConfigurazione.DISABILITATO.toString() };
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_MESSAGE_BOX);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_MESSAGE_BOX);
// if(integrationManagerEnabled) {
// de.setType(DataElementType.SELECT);
// de.setValues(tipoGM);
// if(getmsg==null){
// de.setSelected(CostantiConfigurazione.DISABILITATO.toString());
// }else{
// de.setSelected(getmsg);
// }
// de.setPostBack(true);
// } else {
de.setType(DataElementType.HIDDEN);
if(getmsg==null){
de.setValue(CostantiConfigurazione.DISABILITATO.toString());
}else{
de.setValue(getmsg);
}
// }
dati.add(de);
if(gestioneCredenzialiGetMsg && CostantiConfigurazione.ABILITATO.toString().equals(getmsg)) {
de = new DataElement();
de.setLabel(ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_USERNAME);
de.setValue(StringEscapeUtils.escapeHtml(usernameGetMsg));
// if(!this.isModalitaStandard()) {
// de.setType(DataElementType.TEXT_EDIT);
// }
// else {
de.setType(DataElementType.HIDDEN);
// }
de.setName(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_USERNAME);
de.setSize(this.getSize());
// de.setRequired(true);
dati.add(de);
de = new DataElement();
de.setLabel(ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_PASSWORD);
de.setValue(StringEscapeUtils.escapeHtml(passwordGetMsg));
// if(!this.isModalitaStandard()) {
// de.setType(DataElementType.TEXT_EDIT);
// }
// else {
de.setType(DataElementType.HIDDEN);
// }
de.setName(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_PASSWORD);
de.setSize(this.getSize());
// de.setRequired(true);
dati.add(de);
}
}
public List<DataElement> addHiddenFieldsToDati(List<DataElement> dati, String provider,
String idAsps, String idPorta){
DataElement de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);
de.setValue(provider);
de.setType(DataElementType.HIDDEN);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);
dati.add(de);
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_ASPS);
de.setValue(idAsps);
de.setType(DataElementType.HIDDEN);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_ASPS);
dati.add(de);
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_PORTA);
de.setValue(idPorta);
de.setType(DataElementType.HIDDEN);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_PORTA);
dati.add(de);
return dati;
}
public void prepareRuoliList(ISearch ricerca, List<String> lista)
throws Exception {
try {
String idsil = this.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO);
String idProvider = this.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);
String accessDaChangeTmp = this.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_RUOLI_ACCESSO_DA_CHANGE);
boolean accessDaChange = ServletUtils.isCheckBoxEnabled(accessDaChangeTmp);
// prelevo il flag che mi dice da quale pagina ho acceduto la sezione
Integer parentSA = ServletUtils.getIntegerAttributeFromSession(ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT, this.session, this.request);
if(parentSA == null) parentSA = ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_NONE;
Boolean useIdSogg = parentSA == ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_SOGGETTO;
Parameter pSA = new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO, idsil);
if(useIdSogg){
Parameter pProvider = new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER, idProvider);
ServletUtils.addListElementIntoSession(this.request, this.session, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI_RUOLI,pSA,pProvider );
}else
ServletUtils.addListElementIntoSession(this.request, this.session, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI_RUOLI,pSA,
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_RUOLI_ACCESSO_DA_CHANGE, accessDaChangeTmp));
int idLista = Liste.SERVIZIO_APPLICATIVO_RUOLI;
int limit = ricerca.getPageSize(idLista);
int offset = ricerca.getIndexIniziale(idLista);
String search = ServletUtils.getSearchFromSession(ricerca, idLista);
this.pd.setIndex(offset);
this.pd.setPageSize(limit);
this.pd.setNumEntries(ricerca.getNumEntries(idLista));
// Prendo il servizio applicativo
int idSilInt = Integer.parseInt(idsil);
ServizioApplicativo sa = this.saCore.getServizioApplicativo(idSilInt);
String nomeservizioApplicativo = sa.getNome();
// Prendo il soggetto
String tipoENomeSoggetto = null;
String nomeProtocollo = null;
if(useIdSogg){
if(this.core.isRegistroServiziLocale()){
Soggetto tmpSogg = this.soggettiCore.getSoggettoRegistro(Integer.parseInt(idProvider));
nomeProtocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(tmpSogg.getTipo());
tipoENomeSoggetto = this.getLabelNomeSoggetto(nomeProtocollo, tmpSogg.getTipo() , tmpSogg.getNome());
}else{
org.openspcoop2.core.config.Soggetto tmpSogg = this.soggettiCore.getSoggetto(Integer.parseInt(idProvider));
nomeProtocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(tmpSogg.getTipo());
tipoENomeSoggetto = this.getLabelNomeSoggetto(nomeProtocollo, tmpSogg.getTipo() , tmpSogg.getNome());
}
}
// setto la barra del titolo
List<Parameter> listSA = new ArrayList<>();
listSA.add(new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID, idsil));
listSA.add(new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID_SERVIZIO_APPLICATIVO, idsil));
if(useIdSogg){
listSA.add(new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER, idProvider));
}
String labelApplicativi = ServiziApplicativiCostanti.LABEL_SERVIZI_APPLICATIVI;
String labelApplicativiDi = ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_DI;
if(this.isModalitaCompleta()==false) {
labelApplicativi = ServiziApplicativiCostanti.LABEL_APPLICATIVI;
labelApplicativiDi = ServiziApplicativiCostanti.LABEL_PARAMETRO_APPLICATIVI_DI;
}
if(accessDaChange) {
ServletUtils.setPageDataTitle_ServletFirst(this.pd, labelApplicativi,
ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST);
ServletUtils.appendPageDataTitle(this.pd,
new Parameter(nomeservizioApplicativo,
ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE,
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID, sa.getId()+""),
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER, sa.getIdSoggetto()+"")));
ServletUtils.appendPageDataTitle(this.pd,
new Parameter(RuoliCostanti.LABEL_RUOLI, null));
}
else {
if(!useIdSogg){
if (search.equals("")) {
this.pd.setSearchDescription("");
ServletUtils.setPageDataTitle(this.pd,
new Parameter(labelApplicativi,ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST),
new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_RUOLI_DI + nomeservizioApplicativo,
ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE,
listSA));
}
else{
ServletUtils.setPageDataTitle(this.pd,
new Parameter(labelApplicativi,ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST),
new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_RUOLI_DI + nomeservizioApplicativo,
ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE,
listSA),
new Parameter(Costanti.PAGE_DATA_TITLE_LABEL_RISULTATI_RICERCA,null));
}
} else {
List<Parameter> lstParam = new ArrayList<>();
lstParam.add(new Parameter(SoggettiCostanti.LABEL_SOGGETTI, SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST));
lstParam.add(new Parameter(labelApplicativiDi + tipoENomeSoggetto,
ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST,
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER,idProvider)));
if(search.equals("")){
this.pd.setSearchDescription("");
lstParam.add(new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_RUOLI_DI + nomeservizioApplicativo,
ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE,
listSA));
}else{
lstParam.add(new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_RUOLI_DI + nomeservizioApplicativo,
ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE,
listSA));
lstParam.add(new Parameter(Costanti.PAGE_DATA_TITLE_LABEL_RISULTATI_RICERCA, null));
}
ServletUtils.setPageDataTitle(this.pd, lstParam.toArray(new Parameter[lstParam.size()]));
}
}
// controllo eventuali risultati ricerca
this.pd.setSearchLabel(CostantiControlStation.LABEL_PARAMETRO_RUOLO);
if (!search.equals("")) {
ServletUtils.enabledPageDataSearch(this.pd, RuoliCostanti.LABEL_RUOLI, search);
}
// setto le label delle colonne
String[] labels = {
CostantiControlStation.LABEL_PARAMETRO_RUOLO
};
this.pd.setLabels(labels);
// preparo i dati
List<List<DataElement>> dati = new ArrayList<>();
if (lista != null) {
Iterator<String> it = lista.iterator();
while (it.hasNext()) {
String ruolo = it.next();
List<DataElement> e = new ArrayList<>();
DataElement de = new DataElement();
de.setValue(ruolo);
de.setIdToRemove(ruolo);
if(!this.isModalitaCompleta()) {
Ruolo ruoloObj = this.ruoliCore.getRuolo(ruolo);
Parameter pIdRuolo = new Parameter(RuoliCostanti.PARAMETRO_RUOLO_ID, ruoloObj.getId()+"");
String url = new Parameter("", RuoliCostanti.SERVLET_NAME_RUOLI_CHANGE , pIdRuolo).getValue();
String tooltip = ruolo;
this.newDataElementVisualizzaInNuovoTab(de, url, tooltip);
}
e.add(de);
dati.add(e);
}
}
this.pd.setDati(dati);
this.pd.setAddButton(true);
} catch (Exception e) {
this.logError("Exception: " + e.getMessage(), e);
throw new Exception(e.getMessage(),e);
}
}
public List<Parameter> getTitoloSA(Integer parentSA, String idsogg, String idAsps, String idPorta) throws Exception, DriverRegistroServiziNotFound, DriverRegistroServiziException {
if(parentSA==null) {
throw new Exception("Param parentSA is null");
}
if(idsogg==null) {
throw new Exception("Param idsogg is null");
}
String soggettoTitle = null;
if(this.core.isRegistroServiziLocale()){
Soggetto mySogg = this.soggettiCore.getSoggettoRegistro(Integer.parseInt(idsogg));
String protocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(mySogg.getTipo());
soggettoTitle = this.getLabelNomeSoggetto(protocollo, mySogg.getTipo() , mySogg.getNome());
}
else{
org.openspcoop2.core.config.Soggetto mySogg = this.soggettiCore.getSoggetto(Integer.parseInt(idsogg));
String protocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(mySogg.getTipo());
soggettoTitle = this.getLabelNomeSoggetto(protocollo, mySogg.getTipo() , mySogg.getNome());
}
return _getTitoloSA(parentSA, idsogg, idAsps, soggettoTitle,idPorta);
}
private List<Parameter> _getTitoloSA(Integer parentSA, String idsogg, String idAsps, String soggettoTitle, String idPorta) throws Exception, DriverRegistroServiziNotFound, DriverRegistroServiziException {
if(parentSA==null) {
throw new Exception("Param parentSA is null");
}
List<Parameter> lstParam = new ArrayList<>();
switch (parentSA) {
case ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_CONFIGURAZIONE:
// Prendo il nome e il tipo del servizio
AccordoServizioParteSpecifica asps = this.apsCore.getAccordoServizioParteSpecifica(Integer.parseInt(idAsps));
String servizioTmpTile = this.getLabelIdServizio(asps);
Parameter pIdServizio = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID, asps.getId()+ "");
Parameter pNomeServizio = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_NOME_SERVIZIO, asps.getNome());
Parameter pTipoServizio = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_SERVIZIO, asps.getTipo());
Parameter pIdsoggErogatore = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID_SOGGETTO_EROGATORE, ""+asps.getIdSoggetto());
Boolean vistaErogazioni = ServletUtils.getBooleanAttributeFromSession(ErogazioniCostanti.ASPS_EROGAZIONI_ATTRIBUTO_VISTA_EROGAZIONI, this.session, this.request).getValue();
if(vistaErogazioni != null && vistaErogazioni.booleanValue()) {
lstParam.add(new Parameter(ErogazioniCostanti.LABEL_ASPS_EROGAZIONI, ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_LIST));
lstParam.add(new Parameter(servizioTmpTile, ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_CHANGE, pIdServizio,pNomeServizio, pTipoServizio));
} else {
lstParam.add(new Parameter(AccordiServizioParteSpecificaCostanti.LABEL_APS, AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_LIST));
}
//lstParam.add(new Parameter(AccordiServizioParteSpecificaCostanti.LABEL_APS_CONFIGURAZIONI_DI + servizioTmpTile,
lstParam.add(new Parameter(ErogazioniCostanti.LABEL_ASPS_GESTIONE_CONFIGURAZIONI,
AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_PORTE_APPLICATIVE_LIST ,pIdServizio,pNomeServizio, pTipoServizio, pIdsoggErogatore));
break;
case ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_SOGGETTO:
lstParam.add(new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_SOGGETTI, SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST));
lstParam.add(new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_DI + soggettoTitle,
ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST,
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER,idsogg)));
break;
case ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_NONE:
default:
String labelApplicativi = ServiziApplicativiCostanti.LABEL_SERVIZI_APPLICATIVI;
if(this.isModalitaCompleta()==false) {
labelApplicativi = ServiziApplicativiCostanti.LABEL_APPLICATIVI;
}
lstParam.add(new Parameter(labelApplicativi,ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST));
break;
}
return lstParam;
}
public void impostaSADefaultAlleConfigurazioniCheUsanoConnettoreDelMappingDiDefault(String idAsps, PortaApplicativa pa, ServizioApplicativo sa, List<Object> oggettiDaAggiornare) throws DriverConfigurazioneException, Exception,
DriverRegistroServiziNotFound, DriverRegistroServiziException, DriverConfigurazioneNotFound {
// se ho modificato un mapping di default aggiorno le porte che hanno il utilizzano la configurazione di default
MappingErogazionePortaApplicativa mappingErogazionePortaApplicativa = this.porteApplicativeCore.getMappingErogazionePortaApplicativa(pa);
if(mappingErogazionePortaApplicativa.isDefault()) {
String nomeSA = sa.getNome();
String tipoSA = sa.getTipo();
String servizioApplicativoDefault = pa.getServizioApplicativoDefault();
List<MappingErogazionePortaApplicativa> listaMappingErogazionePortaApplicativa = new ArrayList<>();
// lettura delle configurazioni associate
AccordoServizioParteSpecifica asps = this.apsCore.getAccordoServizioParteSpecifica(Integer.parseInt(idAsps));
IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromAccordo(asps);
listaMappingErogazionePortaApplicativa = this.apsCore.mappingServiziPorteAppList(idServizio,asps.getId(), null);
for(MappingErogazionePortaApplicativa mappinErogazione : listaMappingErogazionePortaApplicativa) {
// scarto il default
if(!mappinErogazione.isDefault()) {
PortaApplicativa portaApplicativaTmp = this.porteApplicativeCore.getPortaApplicativa(mappinErogazione.getIdPortaApplicativa());
// la porta e' da aggiorare se e' default oppure ridefinita e il SA originale e' lo stesso
if((portaApplicativaTmp.getServizioApplicativoDefault() != null && servizioApplicativoDefault != null &&
portaApplicativaTmp.getServizioApplicativoDefault().equals(servizioApplicativoDefault) ) ){
// prelevo l'associazione con il vecchio servizio applicativo
PortaApplicativaServizioApplicativo paSAtmpInner = null;
for (PortaApplicativaServizioApplicativo paSAInner : portaApplicativaTmp.getServizioApplicativoList()) {
if(paSAInner.getNome().equals(nomeSA)) {
paSAtmpInner = paSAInner;
break;
}
}
if(paSAtmpInner!= null) {
// se ho modificato il server che sto utilizzando lo rimuovo
if(ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_SERVER.equals(tipoSA)){
portaApplicativaTmp.getServizioApplicativoList().remove(paSAtmpInner);
}
}
// nuovo SA da aggiungere
PortaApplicativaServizioApplicativo paSAInner = new PortaApplicativaServizioApplicativo();
paSAInner.setNome(servizioApplicativoDefault);
portaApplicativaTmp.getServizioApplicativoList().add(paSAInner);
portaApplicativaTmp.setServizioApplicativoDefault(null);
oggettiDaAggiornare.add(portaApplicativaTmp);
}
}
}
}
}
public void impostaSAServerAlleConfigurazioniCheUsanoConnettoreDelMappingDiDefault(String idAsps, String nuovoSAServer, PortaApplicativa pa, ServizioApplicativo sa,
List<Object> oggettiDaAggiornare)
throws DriverConfigurazioneException, Exception, DriverRegistroServiziNotFound,
DriverRegistroServiziException, DriverConfigurazioneNotFound {
// se ho modificato un mapping di default aggiorno le porte che hanno il utilizzano la configurazione di default
MappingErogazionePortaApplicativa mappingErogazionePortaApplicativa = this.porteApplicativeCore.getMappingErogazionePortaApplicativa(pa);
if(mappingErogazionePortaApplicativa.isDefault()) {
String servizioApplicativoDefault = pa.getServizioApplicativoDefault();
List<MappingErogazionePortaApplicativa> listaMappingErogazionePortaApplicativa = new ArrayList<>();
// lettura delle configurazioni associate
AccordoServizioParteSpecifica asps = this.apsCore.getAccordoServizioParteSpecifica(Integer.parseInt(idAsps));
IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromAccordo(asps);
listaMappingErogazionePortaApplicativa = this.apsCore.mappingServiziPorteAppList(idServizio,asps.getId(), null);
for(MappingErogazionePortaApplicativa mappinErogazione : listaMappingErogazionePortaApplicativa) {
// scarto il default
if(!mappinErogazione.isDefault()) {
PortaApplicativa portaApplicativaTmp = this.porteApplicativeCore.getPortaApplicativa(mappinErogazione.getIdPortaApplicativa());
// la porta e' da aggiorare se e' default oppure ridefinita e il SA originale e' lo stesso
if((portaApplicativaTmp.getServizioApplicativoDefault() == null && servizioApplicativoDefault == null) ||
(portaApplicativaTmp.getServizioApplicativoDefault() != null && servizioApplicativoDefault != null &&
portaApplicativaTmp.getServizioApplicativoDefault().equals(servizioApplicativoDefault) ) ){
// prelevo l'associazione con il vecchio servizio applicativo
PortaApplicativaServizioApplicativo paSAtmpInner = null;
for (PortaApplicativaServizioApplicativo paSAInner : portaApplicativaTmp.getServizioApplicativoList()) {
if(paSAInner.getNome().equals(sa.getNome())) {
paSAtmpInner = paSAInner;
break;
}
}
if(paSAtmpInner!= null) {
// se ho modificato il server che sto utilizzando lo rimuovo
if(ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_SERVER.equals(sa.getTipo())){
portaApplicativaTmp.getServizioApplicativoList().remove(paSAtmpInner);
} else {
// SA di default da conservare
portaApplicativaTmp.getServizioApplicativoList().remove(paSAtmpInner);
portaApplicativaTmp.setServizioApplicativoDefault(sa.getNome());
}
}
// nuovo SA da aggiungere
PortaApplicativaServizioApplicativo paSAInner = new PortaApplicativaServizioApplicativo();
paSAInner.setNome(nuovoSAServer);
portaApplicativaTmp.getServizioApplicativoList().add(paSAInner);
oggettiDaAggiornare.add(portaApplicativaTmp);
}
}
}
}
}
public static String[] toArray(List<IDServizioApplicativoDB> listIDSa) {
if(listIDSa==null || listIDSa.isEmpty()) {
return null;
}
String [] l = new String [listIDSa.size()];
for (int i = 0; i < listIDSa.size(); i++) {
l[i] = listIDSa.get(i).getNome();
}
return l;
}
public void prepareServizioApplicativoCredenzialiList(ServizioApplicativo sa, String id) throws Exception {
try {
boolean modalitaCompleta = this.isModalitaCompleta();
String idProvider = this.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);
// prelevo il flag che mi dice da quale pagina ho acceduto la sezione
Integer parentSA = ServletUtils.getIntegerAttributeFromSession(ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT, this.session, this.request);
if(parentSA == null) parentSA = ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_NONE;
Boolean useIdSogg = parentSA == ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_SOGGETTO;
IDSoggetto idSoggettoProprietario = new IDSoggetto(sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario());
Soggetto soggettoProprietario = this.soggettiCore.getSoggettoRegistro(idSoggettoProprietario);
String dominio = this.pddCore.isPddEsterna(soggettoProprietario.getPortaDominio()) ? SoggettiCostanti.SOGGETTO_DOMINIO_ESTERNO_VALUE : SoggettiCostanti.SOGGETTO_DOMINIO_OPERATIVO_VALUE;
List<Parameter> parametersServletSAChange = new ArrayList<>();
Parameter pIdSA = new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID, sa.getId()+"");
parametersServletSAChange.add(pIdSA);
Parameter pIdSoggettoSA = new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER, sa.getIdSoggetto()+"");
parametersServletSAChange.add(pIdSoggettoSA);
if(dominio != null) {
Parameter pDominio = new Parameter(SoggettiCostanti.PARAMETRO_SOGGETTO_DOMINIO, dominio);
parametersServletSAChange.add(pDominio);
}
if(useIdSogg){
Parameter pProvider = new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER, idProvider);
List<Parameter> parametersServletSAChangeProvider = new ArrayList<>();
parametersServletSAChangeProvider.add(pProvider);
parametersServletSAChangeProvider.addAll(parametersServletSAChange);
ServletUtils.addListElementIntoSession(this.request, this.session, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI_CREDENZIALI, parametersServletSAChangeProvider.toArray(new Parameter[parametersServletSAChangeProvider.size()]));
}else
ServletUtils.addListElementIntoSession(this.request, this.session, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI_CREDENZIALI, parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()]));
// Prendo il soggetto
String tmpTitle = null;
String protocolloSoggetto = null;
boolean supportAsincroni = true;
if(useIdSogg){
if(this.core.isRegistroServiziLocale()){
Soggetto tmpSogg = this.soggettiCore.getSoggettoRegistro(Integer.parseInt(idProvider));
protocolloSoggetto = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(tmpSogg.getTipo());
tmpTitle = this.getLabelNomeSoggetto(protocolloSoggetto, tmpSogg.getTipo() , tmpSogg.getNome());
}else{
org.openspcoop2.core.config.Soggetto tmpSogg = this.soggettiCore.getSoggetto(Integer.parseInt(idProvider));
protocolloSoggetto = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(tmpSogg.getTipo());
tmpTitle = this.getLabelNomeSoggetto(protocolloSoggetto, tmpSogg.getTipo() , tmpSogg.getNome());
}
List<ServiceBinding> serviceBindingListProtocollo = this.core.getServiceBindingListProtocollo(protocolloSoggetto);
for (ServiceBinding serviceBinding : serviceBindingListProtocollo) {
supportAsincroni = this.core.isProfiloDiCollaborazioneSupportatoDalProtocollo(protocolloSoggetto,serviceBinding, ProfiloDiCollaborazione.ASINCRONO_ASIMMETRICO)
|| this.core.isProfiloDiCollaborazioneSupportatoDalProtocollo(protocolloSoggetto, serviceBinding, ProfiloDiCollaborazione.ASINCRONO_SIMMETRICO);
}
if(supportAsincroni==false){
if (this.isModalitaAvanzata()){
supportAsincroni = this.core.isElenchiSAAsincroniNonSupportatiVisualizzaRispostaAsincrona();
}
}
}
this.pd.setIndex(0);
this.pd.setPageSize(sa.getInvocazionePorta().sizeCredenzialiList());
this.pd.setNumEntries(sa.getInvocazionePorta().sizeCredenzialiList());
// ricerca disattivata
ServletUtils.disabledPageDataSearch(this.pd);
// setto la barra del titolo
String labelApplicativi = ServiziApplicativiCostanti.LABEL_SERVIZI_APPLICATIVI;
String labelApplicativiDi = ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_DI;
if(modalitaCompleta==false) {
labelApplicativi = ServiziApplicativiCostanti.LABEL_APPLICATIVI;
labelApplicativiDi = ServiziApplicativiCostanti.LABEL_PARAMETRO_APPLICATIVI_DI;
}
if(!useIdSogg){
ServletUtils.setPageDataTitle(this.pd,
new Parameter(labelApplicativi, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST),
new Parameter(sa.getNome(), ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE, parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()])),
new Parameter(ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_CERTIFICATI, null)
);
} else {
String provider = this.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);
ServletUtils.setPageDataTitle(this.pd,
new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_SOGGETTI, SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST),
new Parameter(labelApplicativiDi + tmpTitle,
ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST,
new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER,provider)),
new Parameter(sa.getNome(), ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE, parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()])),
new Parameter(ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_CERTIFICATI, null)
);
}
// setto le label delle colonne
List<String> labels = new ArrayList<>();
labels.add(ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_PRINCIPALE);
labels.add(ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_SUBJECT);
labels.add(ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_ISSUER);
labels.add(ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI);
labels.add(ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_NOT_BEFORE);
labels.add(ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_NOT_AFTER);
this.pd.setLabels(labels.toArray(new String[1]));
// preparo i dati
List<List<DataElement>> dati = new ArrayList<>();
List<Credenziali> lista = sa.getInvocazionePorta().getCredenzialiList();
int i = 0;
if (lista != null) {
Iterator<Credenziali> it = lista.iterator();
while (it.hasNext()) {
List<DataElement> e = new ArrayList<>();
Credenziali credenziali = it.next();
Certificate cSelezionato = ArchiveLoader.load(credenziali.getCertificate());
String tipoCredenzialiSSLAliasCertificatoIssuer = cSelezionato.getCertificate().getIssuer().getNameNormalized();
String tipoCredenzialiSSLAliasCertificatoSubject = cSelezionato.getCertificate().getSubject().getNameNormalized();
boolean verificaTuttiCampi = credenziali.getCertificateStrictVerification();
Date notBefore = cSelezionato.getCertificate().getNotBefore();
String tipoCredenzialiSSLAliasCertificatoNotBefore = this.getSdfCredenziali().format(notBefore);
Date notAfter = cSelezionato.getCertificate().getNotAfter();
String tipoCredenzialiSSLAliasCertificatoNotAfter = this.getSdfCredenziali().format(notAfter);
Parameter pIdCredenziale = new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_CREDENZIALI_ID, i+"");
List<Parameter> parametersServletCredenzialeChange = new ArrayList<>();
parametersServletCredenzialeChange.add(pIdCredenziale);
parametersServletCredenzialeChange.addAll(parametersServletSAChange);
parametersServletCredenzialeChange.add(new Parameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO_MULTI_AGGIORNA,Costanti.CHECK_BOX_ENABLED));
// Principale: si/no
DataElement de = new DataElement();
de.setType(DataElementType.TEXT);
de.setValue(i == 0 ? CostantiControlStation.LABEL_SI : CostantiControlStation.LABEL_NO);
de.allineaTdAlCentro();
de.setWidthPx(60);
e.add(de);
// Subject con link edit
de = new DataElement();
de.setUrl(ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CREDENZIALI_CHANGE,
parametersServletCredenzialeChange.toArray(new Parameter[parametersServletCredenzialeChange.size()]));
de.setSize(ConnettoriCostanti.NUMERO_CARATTERI_SUBJECT_DA_VISUALIZZARE_IN_LISTA_CERTIFICATI);
de.setValue(StringEscapeUtils.escapeHtml(tipoCredenzialiSSLAliasCertificatoSubject));
de.setToolTip(StringEscapeUtils.escapeHtml(tipoCredenzialiSSLAliasCertificatoSubject));
de.setIdToRemove(i+"");
e.add(de);
// Issuer
de = new DataElement();
String issuerValue = StringEscapeUtils.escapeHtml(tipoCredenzialiSSLAliasCertificatoIssuer);
if(issuerValue.length() > ConnettoriCostanti.NUMERO_CARATTERI_SUBJECT_DA_VISUALIZZARE_IN_LISTA_CERTIFICATI) {
issuerValue = issuerValue.substring(0,(ConnettoriCostanti.NUMERO_CARATTERI_SUBJECT_DA_VISUALIZZARE_IN_LISTA_CERTIFICATI-3)) + "...";
}
de.setValue(issuerValue);
de.setToolTip(StringEscapeUtils.escapeHtml(tipoCredenzialiSSLAliasCertificatoIssuer));
e.add(de);
// verifica tutti i campi
de = new DataElement();
de.setType(DataElementType.TEXT);
de.setValue(verificaTuttiCampi ? ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI_ENABLE :
ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI_DISABLE);
de.allineaTdAlCentro();
de.setWidthPx(70);
e.add(de);
// not before
de = new DataElement();
if(verificaTuttiCampi) {
de.setValue(tipoCredenzialiSSLAliasCertificatoNotBefore);
}
else {
de.setValue("-");
}
de.setType(DataElementType.TEXT);
de.allineaTdAlCentro();
de.setWidthPx(140);
if(verificaTuttiCampi && notBefore.after(new Date())) {
// bold
de.setLabelStyleClass(Costanti.INPUT_TEXT_BOLD_CSS_CLASS);
de.setWidthPx(150);
}
e.add(de);
// not after
de = new DataElement();
if(verificaTuttiCampi) {
de.setValue(tipoCredenzialiSSLAliasCertificatoNotAfter);
}
else {
de.setValue("-");
}
de.setType(DataElementType.TEXT);
de.allineaTdAlCentro();
de.setWidthPx(140);
if(verificaTuttiCampi && notAfter.before(new Date())) {
// bold e rosso
de.setLabelStyleClass(Costanti.INPUT_TEXT_BOLD_RED_CSS_CLASS);
de.setWidthPx(150);
}
e.add(de);
dati.add(e);
i++;
}
}
this.pd.setDati(dati);
this.pd.setAddButton(true);
} catch (Exception e) {
this.logError("Exception: " + e.getMessage(), e);
throw new Exception(e.getMessage(),e);
}
}
public List<DataElement> addServizioApplicativoHiddenToDati(List<DataElement> dati, String idSA, String idSoggettoSA, String dominio, String nomeSA) throws Exception {
DataElement de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID);
de.setValue(idSA);
de.setType(DataElementType.HIDDEN);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID);
dati.add(de);
if(idSoggettoSA != null) {
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);
de.setValue(idSoggettoSA);
de.setType(DataElementType.HIDDEN);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);
dati.add(de);
}
if(dominio != null) {
de = new DataElement();
de.setLabel(SoggettiCostanti.PARAMETRO_SOGGETTO_DOMINIO);
de.setValue(dominio);
de.setType(DataElementType.HIDDEN);
de.setName(SoggettiCostanti.PARAMETRO_SOGGETTO_DOMINIO);
dati.add(de);
}
if(nomeSA != null) {
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_NOME);
de.setValue(nomeSA);
de.setType(DataElementType.HIDDEN);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_NOME);
dati.add(de);
}
return dati;
}
public boolean servizioApplicativoCredenzialiCertificatiCheckData(TipoOperazione tipoOperazione, long idProvOld, ServizioApplicativo saOld, int idxCertificato, String protocollo, int idxCredenziale) throws Exception {
try {
String nome = this.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_NOME);
String provider = this.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);
int newProv = 0;
if (provider != null) {
newProv = Integer.parseInt(provider);
}
String tipoCredenzialiSSLSorgente = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL);
if(tipoCredenzialiSSLSorgente == null) {
tipoCredenzialiSSLSorgente = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_CONFIGURAZIONE_MANUALE;
}
String tipoCredenzialiSSLConfigurazioneManualeSelfSigned= this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_MANUALE_SELF_SIGNED);
if (tipoCredenzialiSSLConfigurazioneManualeSelfSigned == null) {
tipoCredenzialiSSLConfigurazioneManualeSelfSigned = Costanti.CHECK_BOX_ENABLED;
}
String subject = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_SUBJECT);
String issuer = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_ISSUER);
if("".equals(issuer)) {
issuer = null;
}
boolean tokenWithHttpsEnabledByConfigSA = false;
if(saOld!=null && saOld.getInvocazionePorta()!=null && saOld.getInvocazionePorta().sizeCredenzialiList()>0) {
Credenziali c = saOld.getInvocazionePorta().getCredenziali(0);
if(c!=null && c.getTokenPolicy()!=null && StringUtils.isNotEmpty(c.getTokenPolicy())) {
// se entro in questa servlet sono sicuramente con credenziale ssl, se esiste anche token policy abbiamo la combo
tokenWithHttpsEnabledByConfigSA = true;
}
}
boolean dominioEsternoModI = false;
if(saOld!=null) {
Soggetto soggetto = this.soggettiCore.getSoggettoRegistro(saOld.getIdSoggetto());
dominioEsternoModI = this.isProfiloModIPA(protocollo) && this.pddCore.isPddEsterna(soggetto.getPortaDominio());
}
String details = "";
List<ServizioApplicativo> saList = null;
String tipoSsl = null;
Certificate cSelezionato = null;
boolean strictVerifier = false;
if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_CONFIGURAZIONE_MANUALE)) {
saList = this.saCore.servizioApplicativoWithCredenzialiSslList(subject,issuer,
dominioEsternoModI ? ConfigurazioneFiltroServiziApplicativi.getFiltroApplicativiModIFirma() : ConfigurazioneFiltroServiziApplicativi.getFiltroApplicativiHttps());
tipoSsl = "subject/issuer";
}
else {
BinaryParameter tipoCredenzialiSSLFileCertificato = this.getBinaryParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO);
String tipoCredenzialiSSLVerificaTuttiICampi = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI);
strictVerifier = ServletUtils.isCheckBoxEnabled(tipoCredenzialiSSLVerificaTuttiICampi);
String tipoCredenzialiSSLTipoArchivioS = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_TIPO_ARCHIVIO);
String tipoCredenzialiSSLFileCertificatoPassword = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO_PASSWORD);
String tipoCredenzialiSSLAliasCertificato = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO);
if (tipoCredenzialiSSLAliasCertificato == null) {
tipoCredenzialiSSLAliasCertificato = "";
}
org.openspcoop2.utils.certificate.ArchiveType tipoCredenzialiSSLTipoArchivio= null;
if(tipoCredenzialiSSLTipoArchivioS == null) {
tipoCredenzialiSSLTipoArchivio = org.openspcoop2.utils.certificate.ArchiveType.CER;
} else {
tipoCredenzialiSSLTipoArchivio = org.openspcoop2.utils.certificate.ArchiveType.valueOf(tipoCredenzialiSSLTipoArchivioS);
}
byte [] archivio = tipoCredenzialiSSLFileCertificato.getValue();
if(TipoOperazione.CHANGE.equals(tipoOperazione) && archivio==null) {
archivio = saOld.getInvocazionePorta().getCredenziali(idxCertificato).getCertificate();
}
if(tipoCredenzialiSSLTipoArchivio.equals(org.openspcoop2.utils.certificate.ArchiveType.CER)) {
cSelezionato = ArchiveLoader.load(archivio);
}else {
cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLTipoArchivio, archivio, tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLFileCertificatoPassword);
}
saList = this.saCore.servizioApplicativoWithCredenzialiSslList(cSelezionato.getCertificate(), strictVerifier,
dominioEsternoModI ? ConfigurazioneFiltroServiziApplicativi.getFiltroApplicativiModIFirma() : ConfigurazioneFiltroServiziApplicativi.getFiltroApplicativiHttps());
if(!strictVerifier && saList!=null && !saList.isEmpty()) {
List<ServizioApplicativo> saListCheck = this.saCore.servizioApplicativoWithCredenzialiSslList(cSelezionato.getCertificate(), true,
dominioEsternoModI ? ConfigurazioneFiltroServiziApplicativi.getFiltroApplicativiModIFirma() : ConfigurazioneFiltroServiziApplicativi.getFiltroApplicativiHttps());
if(saListCheck==null || saListCheck.isEmpty() ) {
details=ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_DETAILS;
}
}
tipoSsl = "certificato";
}
String portaDominio = null;
if(this.core.isRegistroServiziLocale()){
Soggetto soggettoToCheck = tipoOperazione.equals(TipoOperazione.CHANGE) ?
this.soggettiCore.getSoggettoRegistro(idProvOld) : this.soggettiCore.getSoggettoRegistro(newProv);
portaDominio = soggettoToCheck.getPortaDominio();
}
if(saList!=null &&
!tokenWithHttpsEnabledByConfigSA // se e' abilitato il token non deve essere controllata l'univocita' del certificato
) {
for (int i = 0; i < saList.size(); i++) {
ServizioApplicativo sa = saList.get(i);
if(!this.core.isSinglePdD()){
// bugfix #66
// controllo se soggetto appartiene a nal diversi, in tal
// caso e' possibile
// avere stesse credenziali
// Raccolgo informazioni soggetto
Soggetto tmpSoggettoProprietarioSa = this.soggettiCore.getSoggettoRegistro(sa.getIdSoggetto());
// se appartengono a nal diversi allora va bene continuo
if (!portaDominio.equals(tmpSoggettoProprietarioSa.getPortaDominio()))
continue;
}
if ((tipoOperazione.equals(TipoOperazione.CHANGE)) && (nome.equals(sa.getNome())) && (idProvOld == sa.getIdSoggetto())) {
continue;
}
if(saOld!=null && tipoOperazione.equals(TipoOperazione.CHANGE) && saOld.getId().longValue() == sa.getId().longValue()) {
continue;
}
// Raccolgo informazioni soggetto
// Messaggio di errore
String labelSoggetto = this.getLabelNomeSoggetto(new IDSoggetto(sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario()));
this.pd.setMessage("L'applicativo "+sa.getNome()+" (soggetto: "+labelSoggetto+") possiede già le credenziali ssl ("+tipoSsl+") indicate."+details);
return false;
}
}
if(!tokenWithHttpsEnabledByConfigSA && // se e' abilitato il token non deve essere controllata l'univocita' del certificato)
!this.soggettiCore.isSoggettiApplicativiCredenzialiSslPermitSameCredentials() &&
!dominioEsternoModI) {
// Verifico soggetti
details = "";
Soggetto soggettoAutenticato = null;
List<org.openspcoop2.core.registry.Soggetto> soggettiAutenticati = null;
if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_CONFIGURAZIONE_MANUALE)) {
// recupero soggetto con stesse credenziali
soggettoAutenticato = this.soggettiCore.getSoggettoRegistroAutenticatoSsl(subject, issuer);
tipoSsl = "subject/issuer";
} else {
soggettiAutenticati = this.soggettiCore.soggettoWithCredenzialiSslList(cSelezionato.getCertificate(), strictVerifier);
if(soggettiAutenticati!=null && !soggettiAutenticati.isEmpty()) {
soggettoAutenticato = soggettiAutenticati.get(0);
if(!strictVerifier) {
List<org.openspcoop2.core.registry.Soggetto> soggettiAutenticatiCheck = this.soggettiCore.soggettoWithCredenzialiSslList(cSelezionato.getCertificate(), true);
if(soggettiAutenticatiCheck==null || soggettiAutenticatiCheck.isEmpty() ) {
details=ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_DETAILS;
}
}
}
tipoSsl = "certificato";
}
// Messaggio di errore
if(soggettoAutenticato!=null){
String labelSoggettoAutenticato = this.getLabelNomeSoggetto(new IDSoggetto(soggettoAutenticato.getTipo(), soggettoAutenticato.getNome()));
this.pd.setMessage("Il soggetto "+labelSoggettoAutenticato+" possiede già le credenziali ssl ("+tipoSsl+") indicate."+details);
return false;
}
}
// Verifico che non sia già associato all'applicativo
String actionConfirm = this.getParameter(Costanti.PARAMETRO_ACTION_CONFIRM);
boolean promuoviInCorso = false;
if(actionConfirm != null && actionConfirm.equals(Costanti.PARAMETRO_ACTION_CONFIRM_VALUE_OK)){
promuoviInCorso = true;
}
String aggiornatoCertificatoPrecaricatoTmp = this.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO_MULTI_AGGIORNA);
boolean aggiornatoCertificatoPrecaricato = ServletUtils.isCheckBoxEnabled(aggiornatoCertificatoPrecaricatoTmp);
if(!promuoviInCorso && !aggiornatoCertificatoPrecaricato && cSelezionato!=null &&
/**saList!=null && !saList.isEmpty()) {*/
saOld!=null
) {
// dovrebbe essere 1 grazie al precedente controllo
ServizioApplicativo saCheck = saOld; /** saList.get(0);*/
if(saCheck.getInvocazionePorta()!=null && saCheck.getInvocazionePorta().sizeCredenzialiList()>0) {
int i = 0;
for (Credenziali c : saCheck.getInvocazionePorta().getCredenzialiList()) {
Certificate check = ArchiveLoader.load(c.getCertificate());
if(check.getCertificate().equals(cSelezionato.getCertificate()) && i!=idxCredenziale) {
this.pd.setMessage("Il certificato selezionato risulta già associato all'applicativo");
return false;
}
i++;
}
}
}
return true;
} catch (Exception e) {
this.logError("Exception: " + e.getMessage(), e);
throw new Exception(e.getMessage(),e);
}
}
public List<DataElement> addProprietaToDati(TipoOperazione tipoOp, int size, String nome, String valore, List<DataElement> dati) {
DataElement de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROPRIETA);
de.setType(DataElementType.TITLE);
dati.add(de);
de = new DataElement();
de.setLabel(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROP_NOME);
de.setValue(nome);
if(TipoOperazione.ADD.equals(tipoOp)){
de.setType(DataElementType.TEXT_EDIT);
de.setRequired(true);
}
else{
de.setType(DataElementType.TEXT);
}
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROP_NOME);
de.setSize(size);
dati.add(de);
de = new DataElement();
de.setLabel(CostantiControlStation.LABEL_PARAMETRO_VALORE);
de.setName(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROP_VALORE);
this.core.getLockUtilities().lockProperty(de, valore);
de.setRequired(true);
de.setSize(size);
dati.add(de);
return dati;
}
public boolean serviziApplicativiProprietaCheckData(TipoOperazione tipoOp) throws DriverControlStationException {
try {
String id = this.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID);
int idServizioApplicativo = Integer.parseInt(id);
String nome = this.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROP_NOME);
String valore = this.getLockedParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROP_VALORE, false);
// Campi obbligatori
if (nome.equals("") || valore.equals("")) {
String tmpElenco = "";
if (nome.equals("")) {
tmpElenco = ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROP_NOME;
}
if (valore.equals("")) {
if (tmpElenco.equals("")) {
tmpElenco = ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROP_VALORE;
} else {
tmpElenco = tmpElenco + ", " + ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROP_VALORE;
}
}
this.pd.setMessage(MessageFormat.format(ServiziApplicativiCostanti.MESSAGGIO_ERRORE_DATI_INCOMPLETI_E_NECESSARIO_INDICARE_XX, tmpElenco));
return false;
}
if (nome.indexOf(" ") != -1) {
this.pd.setMessage(CostantiControlStation.MESSAGGIO_ERRORE_NON_INSERIRE_SPAZI_NEI_CAMPI_DI_TESTO);
return false;
}
if(!this.checkLength255(nome, ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROP_NOME)) {
return false;
}
if( !this.core.getDriverBYOKUtilities().isEnabledBYOK() || !this.core.getDriverBYOKUtilities().isWrappedWithAnyPolicy(valore) ){
if (valore.indexOf(" ") != -1) {
this.pd.setMessage(CostantiControlStation.MESSAGGIO_ERRORE_NON_INSERIRE_SPAZI_NEI_CAMPI_DI_TESTO);
return false;
}
if(!this.checkLength4000(valore, ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROP_VALORE)) {
return false;
}
}
// Se tipoOp = add, controllo che la property non sia gia'
// stata
// registrata per l'applicativo
if (tipoOp.equals(TipoOperazione.ADD)) {
boolean giaRegistrato = false;
ServizioApplicativo sa = this.saCore.getServizioApplicativo(idServizioApplicativo);
String nomeporta = sa.getNome();
for (int i = 0; i < sa.sizeProprietaList(); i++) {
Proprieta tmpProp = sa.getProprieta(i);
if (nome.equals(tmpProp.getNome())) {
giaRegistrato = true;
break;
}
}
if (giaRegistrato) {
this.pd.setMessage(MessageFormat.format(
ServiziApplicativiCostanti.MESSAGGIO_ERRORE_LA_PROPRIETA_XX_E_GIA_STATO_ASSOCIATA_AL_SA_YY, nome,
nomeporta));
return false;
}
}
return true;
} catch (Exception e) {
this.logError("Exception: " + e.getMessage(), e);
throw new DriverControlStationException(e.getMessage(),e);
}
}
public void prepareServiziApplicativiProprietaList(ServizioApplicativo sa, ConsoleSearch ricerca, List<Proprieta> lista) throws DriverControlStationException {
try {
boolean modalitaCompleta = this.isModalitaCompleta();
String idProvider = this.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);
// prelevo il flag che mi dice da quale pagina ho acceduto la sezione
Integer parentSA = ServletUtils.getIntegerAttributeFromSession(ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT, this.session, this.request);
if(parentSA == null) parentSA = ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_NONE;
Boolean useIdSogg = parentSA == ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_SOGGETTO;
IDSoggetto idSoggettoProprietario = new IDSoggetto(sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario());
Soggetto soggettoProprietario = this.soggettiCore.getSoggettoRegistro(idSoggettoProprietario);
String dominio = this.pddCore.isPddEsterna(soggettoProprietario.getPortaDominio()) ? SoggettiCostanti.SOGGETTO_DOMINIO_ESTERNO_VALUE : SoggettiCostanti.SOGGETTO_DOMINIO_OPERATIVO_VALUE;
List<Parameter> parametersServletSAChange = new ArrayList<>();
Parameter pIdSA = new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID, sa.getId()+"");
parametersServletSAChange.add(pIdSA);
Parameter pIdSoggettoSA = new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER, sa.getIdSoggetto()+"");
parametersServletSAChange.add(pIdSoggettoSA);
if(dominio != null) {
Parameter pDominio = new Parameter(SoggettiCostanti.PARAMETRO_SOGGETTO_DOMINIO, dominio);
parametersServletSAChange.add(pDominio);
}
if(useIdSogg!=null && useIdSogg.booleanValue()){
Parameter pProvider = new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER, idProvider);
List<Parameter> parametersServletSAChangeProvider = new ArrayList<>();
parametersServletSAChangeProvider.add(pProvider);
parametersServletSAChangeProvider.addAll(parametersServletSAChange);
ServletUtils.addListElementIntoSession(this.request, this.session, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI_PROPRIETA, parametersServletSAChangeProvider.toArray(new Parameter[parametersServletSAChangeProvider.size()]));
}else
ServletUtils.addListElementIntoSession(this.request, this.session, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI_PROPRIETA, parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()]));
int idLista = Liste.SERVIZI_APPLICATIVI_PROP;
int limit = ricerca.getPageSize(idLista);
int offset = ricerca.getIndexIniziale(idLista);
String search = ServletUtils.getSearchFromSession(ricerca, idLista);
this.pd.setIndex(offset);
this.pd.setPageSize(limit);
this.pd.setNumEntries(ricerca.getNumEntries(idLista));
// Prendo il soggetto
String tmpTitle = null;
String protocolloSoggetto = null;
boolean supportAsincroni = true;
if(useIdSogg!=null && useIdSogg.booleanValue()){
if(this.core.isRegistroServiziLocale()){
Soggetto tmpSogg = this.soggettiCore.getSoggettoRegistro(Integer.parseInt(idProvider));
protocolloSoggetto = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(tmpSogg.getTipo());
tmpTitle = this.getLabelNomeSoggetto(protocolloSoggetto, tmpSogg.getTipo() , tmpSogg.getNome());
}else{
org.openspcoop2.core.config.Soggetto tmpSogg = this.soggettiCore.getSoggetto(Integer.parseInt(idProvider));
protocolloSoggetto = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(tmpSogg.getTipo());
tmpTitle = this.getLabelNomeSoggetto(protocolloSoggetto, tmpSogg.getTipo() , tmpSogg.getNome());
}
List<ServiceBinding> serviceBindingListProtocollo = this.core.getServiceBindingListProtocollo(protocolloSoggetto);
for (ServiceBinding serviceBinding : serviceBindingListProtocollo) {
supportAsincroni = this.core.isProfiloDiCollaborazioneSupportatoDalProtocollo(protocolloSoggetto,serviceBinding, ProfiloDiCollaborazione.ASINCRONO_ASIMMETRICO)
|| this.core.isProfiloDiCollaborazioneSupportatoDalProtocollo(protocolloSoggetto, serviceBinding, ProfiloDiCollaborazione.ASINCRONO_SIMMETRICO);
}
if(!supportAsincroni &&
this.isModalitaAvanzata()){
supportAsincroni = this.core.isElenchiSAAsincroniNonSupportatiVisualizzaRispostaAsincrona();
}
}
if(supportAsincroni) {
// nop
}
// setto la barra del titolo
String labelApplicativi = ServiziApplicativiCostanti.LABEL_SERVIZI_APPLICATIVI;
String labelApplicativiDi = ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_DI;
if(!modalitaCompleta) {
labelApplicativi = ServiziApplicativiCostanti.LABEL_APPLICATIVI;
labelApplicativiDi = ServiziApplicativiCostanti.LABEL_PARAMETRO_APPLICATIVI_DI;
}
List<Parameter> lstParam = new ArrayList<>();
if(useIdSogg==null || !useIdSogg.booleanValue()){
lstParam.add(new Parameter(labelApplicativi, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST));
lstParam.add(new Parameter(sa.getNome(), ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE, parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()])));
} else {
String provider = this.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);
lstParam.add(new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_SOGGETTI, SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST));
lstParam.add(new Parameter(labelApplicativiDi + tmpTitle, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST, new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER,provider)));
lstParam.add(new Parameter(sa.getNome(), ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE, parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()])));
}
this.pd.setSearchLabel(PorteApplicativeCostanti.LABEL_PARAMETRO_PORTE_APPLICATIVE_NOME);
if(search.equals("")){
this.pd.setSearchDescription("");
lstParam.add(new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROPRIETA, null));
}else{
lstParam.add(new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROPRIETA,
ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_PROPRIETA_LIST, parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()])));
lstParam.add(new Parameter(PorteApplicativeCostanti.LABEL_PORTE_APPLICATIVE_RISULTATI_RICERCA, null));
}
// setto la barra del titolo
ServletUtils.setPageDataTitle(this.pd, lstParam.toArray(new Parameter[lstParam.size()]));
// controllo eventuali risultati ricerca
if (!search.equals("")) {
ServletUtils.enabledPageDataSearch(this.pd, ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROPRIETA, search);
}
// setto le label delle colonne
String valueLabel = ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROP_VALORE;
String[] labels = { ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_PROP_NOME, valueLabel };
this.pd.setLabels(labels);
// preparo i dati
List<List<DataElement>> dati = new ArrayList<>();
if (lista != null) {
Iterator<Proprieta> it = lista.iterator();
while (it.hasNext()) {
Proprieta ssp = it.next();
List<DataElement> e = new ArrayList<>();
Parameter pNomeProprieta = new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROP_NOME, ssp.getNome());
List<Parameter> parametersServletProprietaChange = new ArrayList<>();
parametersServletProprietaChange.add(pNomeProprieta);
parametersServletProprietaChange.addAll(parametersServletSAChange);
DataElement de = new DataElement();
de.setUrl(ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_PROPRIETA_CHANGE,
parametersServletProprietaChange.toArray(new Parameter[parametersServletProprietaChange.size()]));
de.setValue(ssp.getNome());
de.setIdToRemove(ssp.getNome());
e.add(de);
de = new DataElement();
if(ssp.getValore()!=null) {
if(StringUtils.isNotEmpty(ssp.getValore()) &&
BYOKManager.isEnabledBYOK() &&
this.core.getDriverBYOKUtilities().isWrappedWithAnyPolicy(ssp.getValore())) {
de.setValue(CostantiControlStation.VALORE_CIFRATO);
}
else {
de.setValue(ssp.getValore());
}
}
e.add(de);
dati.add(e);
}
}
this.pd.setDati(dati);
this.pd.setAddButton(true);
} catch (Exception e) {
this.logError("Exception: " + e.getMessage(), e);
throw new DriverControlStationException(e.getMessage(),e);
}
}
public void addDescrizioneVerificaConnettivitaToDati(List<DataElement> dati, Connettore connettore,
String server, String aliasConnettore) throws Exception {
List<Parameter> downloadCertServerParameters = new ArrayList<>();
downloadCertServerParameters.add(new Parameter(ArchiviCostanti.PARAMETRO_ARCHIVI_CERTIFICATI_SERVER_ID_CONNETTORE, connettore.getId().longValue()+""));
this.addDescrizioneVerificaConnettivitaToDati(dati, connettore,
server, false, aliasConnettore,
downloadCertServerParameters,
true, false);
}
}