SoggettiVerificaCertificati.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.soggetti;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.openspcoop2.core.commons.Filtri;
import org.openspcoop2.core.commons.Liste;
import org.openspcoop2.core.id.IDSoggetto;
import org.openspcoop2.core.registry.CredenzialiSoggetto;
import org.openspcoop2.core.registry.ProtocolProperty;
import org.openspcoop2.core.registry.Soggetto;
import org.openspcoop2.core.registry.constants.PddTipologia;
import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
import org.openspcoop2.protocol.sdk.IProtocolFactory;
import org.openspcoop2.protocol.sdk.constants.ConsoleOperationType;
import org.openspcoop2.protocol.sdk.properties.ConsoleConfiguration;
import org.openspcoop2.protocol.sdk.properties.IConsoleDynamicConfiguration;
import org.openspcoop2.protocol.sdk.properties.ProtocolProperties;
import org.openspcoop2.protocol.sdk.registry.IConfigIntegrationReader;
import org.openspcoop2.protocol.sdk.registry.IRegistryReader;
import org.openspcoop2.protocol.sdk.registry.RegistryNotFound;
import org.openspcoop2.utils.UtilsException;
import org.openspcoop2.utils.certificate.ArchiveLoader;
import org.openspcoop2.utils.certificate.Certificate;
import org.openspcoop2.web.ctrlstat.core.CertificateChecker;
import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
import org.openspcoop2.web.ctrlstat.dao.PdDControlStation;
import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
import org.openspcoop2.web.ctrlstat.servlet.config.ConfigurazioneCore;
import org.openspcoop2.web.ctrlstat.servlet.config.ConfigurazioneCostanti;
import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriCostanti;
import org.openspcoop2.web.ctrlstat.servlet.pdd.PddCore;
import org.openspcoop2.web.ctrlstat.servlet.protocol_properties.ProtocolPropertiesCostanti;
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.ForwardParams;
import org.openspcoop2.web.lib.mvc.GeneralData;
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;
/**
* SoggettiVerificaCertificati
*
* @author Andrea Poli (poli@link.it)
* @author Giuliano Pintori (pintori@link.it)
* @author $Author$
* @version $Rev$, $Date$
*
*/
public class SoggettiVerificaCertificati extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpSession session = request.getSession(true);
// Inizializzo PageData
PageData pd = new PageData();
GeneralHelper generalHelper = new GeneralHelper(session);
// Inizializzo GeneralData
GeneralData gd = generalHelper.initGeneralData(request);
try {
SoggettiHelper soggettiHelper = new SoggettiHelper(request, pd, session);
String id = soggettiHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_ID);
long idSogg = Long.parseLong(id);
String nomeprov = soggettiHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_NOME);
String tipoprov = soggettiHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_TIPO);
String alias = soggettiHelper.getParameter(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_SISTEMA_NODO_CLUSTER);
// Preparo il menu
soggettiHelper.makeMenu();
SoggettiCore soggettiCore = new SoggettiCore();
ConfigurazioneCore confCore = new ConfigurazioneCore(soggettiCore);
PddCore pddCore = new PddCore(soggettiCore);
String verificaCertificatiFromLista = soggettiHelper.getParameter(CostantiControlStation.PARAMETRO_VERIFICA_CERTIFICATI_FROM_LISTA);
boolean arrivoDaLista = "true".equalsIgnoreCase(verificaCertificatiFromLista);
// Prendo la lista di aliases
List<String> aliases = confCore.getJmxPdDAliases();
if(aliases==null || aliases.isEmpty()){
throw new Exception("Pagina non prevista, la sezione configurazione non permette di accedere a questa pagina, se la configurazione non e' corretta");
}
Soggetto soggettoRegistry = null;
org.openspcoop2.core.config.Soggetto soggettoConfig = null;
if(soggettiCore.isRegistroServiziLocale()){
soggettoRegistry = soggettiCore.getSoggettoRegistro(idSogg);
}
soggettoConfig = soggettiCore.getSoggetto(idSogg);
if(soggettiCore.isRegistroServiziLocale()){
nomeprov = soggettoRegistry.getNome();
tipoprov = soggettoRegistry.getTipo();
}
else{
nomeprov = soggettoConfig.getNome();
tipoprov = soggettoConfig.getTipo();
}
String protocollo = soggettiCore.getProtocolloAssociatoTipoSoggetto(tipoprov);
List<Parameter> parametersServletSoggettoChange = new ArrayList<>();
Parameter pIdSoggetto = new Parameter(SoggettiCostanti.PARAMETRO_SOGGETTO_ID, id);
Parameter pNomeSoggetto = new Parameter(SoggettiCostanti.PARAMETRO_SOGGETTO_NOME, nomeprov);
Parameter pTipoSoggetto = new Parameter(SoggettiCostanti.PARAMETRO_SOGGETTO_TIPO, tipoprov);
parametersServletSoggettoChange.add(pIdSoggetto);
parametersServletSoggettoChange.add(pNomeSoggetto);
parametersServletSoggettoChange.add(pTipoSoggetto);
// setto la barra del titolo
List<Parameter> listParameter = new ArrayList<>();
listParameter.add(new Parameter(SoggettiCostanti.LABEL_SOGGETTI, SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST));
String labelSoggetto = null;
if(soggettoRegistry!=null) {
labelSoggetto = soggettiHelper.getLabelNomeSoggetto(protocollo, soggettoRegistry.getTipo() , soggettoRegistry.getNome());
}
else {
labelSoggetto = tipoprov+"/"+nomeprov;
}
if(arrivoDaLista) {
String labelVerifica = SoggettiCostanti.LABEL_SOGGETTI_VERIFICA_CERTIFICATI_DI + labelSoggetto;
listParameter.add(new Parameter(labelVerifica, null));
}
else {
listParameter.add(new Parameter(labelSoggetto,
SoggettiCostanti.SERVLET_NAME_SOGGETTI_CHANGE,
new Parameter(SoggettiCostanti.PARAMETRO_SOGGETTO_ID,soggettoRegistry.getId()+""),
new Parameter(SoggettiCostanti.PARAMETRO_SOGGETTO_NOME,soggettoRegistry.getNome()),
new Parameter(SoggettiCostanti.PARAMETRO_SOGGETTO_TIPO,soggettoRegistry.getTipo())));
String labelVerifica = SoggettiCostanti.LABEL_SOGGETTI_VERIFICA_CERTIFICATI;
listParameter.add(new Parameter(labelVerifica, null));
}
// setto la barra del titolo
ServletUtils.setPageDataTitle(pd, listParameter );
List<DataElement> dati = new ArrayList<>();
dati.add(ServletUtils.getDataElementForEditModeFinished());
// -- raccolgo dati
boolean ssl = false;
boolean sslManuale = false;
int countSsl = 0;
if(soggettoRegistry!=null) {
for (int i = 0; i < soggettoRegistry.sizeCredenzialiList(); i++) {
CredenzialiSoggetto c = soggettoRegistry.getCredenziali(i);
if(org.openspcoop2.core.registry.constants.CredenzialeTipo.SSL.equals(c.getTipo())) {
if(c.getCertificate()!=null) {
ssl = true;
countSsl++;
}
else {
sslManuale=true;
}
}
}
}
boolean piuCertificatiAssociatiEntita = countSsl>1;
boolean verificaCertificatiEffettuata = false;
if(!ssl) {
if(sslManuale) {
pd.setMessage(CostantiControlStation.LABEL_VERIFICA_CERTIFICATI_PRESENTE_SOLO_CONFIGURAZIONE_MANUALE,
Costanti.MESSAGE_TYPE_INFO);
}
else {
pd.setMessage(CostantiControlStation.LABEL_VERIFICA_CERTIFICATI_NON_PRESENTI,
Costanti.MESSAGE_TYPE_INFO);
}
pd.disableEditMode();
verificaCertificatiEffettuata = true;
}
else {
boolean sceltaClusterId = soggettiCore.isVerificaCertificatiSceltaClusterId();
if(aliases.size()==1 || alias!=null || !sceltaClusterId) {
if(alias==null && !sceltaClusterId) {
alias = CostantiControlStation.LABEL_VERIFICA_CONNETTORE_TUTTI_I_NODI;
}
// -- verifica
List<String> aliasesForCheck = new ArrayList<>();
boolean all = false;
if(aliases.size()==1) {
aliasesForCheck.add(aliases.get(0));
}
else if(CostantiControlStation.LABEL_VERIFICA_CONNETTORE_TUTTI_I_NODI.equals(alias)) {
aliasesForCheck.addAll(aliases);
all = true;
}
else {
aliasesForCheck.add(alias);
}
CertificateChecker certificateChecker = null;
if(all) {
certificateChecker = soggettiCore.getJmxPdDCertificateChecker();
}
else {
certificateChecker = soggettiCore.newJmxPdDCertificateChecker(aliasesForCheck);
}
StringBuilder sbDetailsError = new StringBuilder();
int sogliaWarningGiorni = soggettiCore.getVerificaCertificatiWarningExpirationDays();
String posizioneErrore = null;
String extraErrore = null;
// verifica sl
StringBuilder sbDetailsWarningSsl = new StringBuilder();
String posizioneWarningSsl = null;
if(ssl) {
certificateChecker.checkSoggetto(sbDetailsError, sbDetailsWarningSsl,
ssl, soggettoRegistry,
sogliaWarningGiorni);
if(sbDetailsError.length()>0) {
posizioneErrore = labelSoggetto;
}
else if(sbDetailsWarningSsl.length()>0) {
posizioneWarningSsl = labelSoggetto;
}
}
// analisi warning
String warning = null;
String posizioneWarning = null;
String extraWarning = null;
if(sbDetailsError.length()<=0 &&
sbDetailsWarningSsl.length()>0) {
warning = sbDetailsWarningSsl.toString();
posizioneWarning = posizioneWarningSsl;
}
// esito
List<String> formatIds = new ArrayList<>();
soggettiCore.formatVerificaCertificatiEsito(pd, formatIds,
(sbDetailsError.length()>0 ? sbDetailsError.toString() : null), extraErrore, posizioneErrore,
warning, extraWarning, posizioneWarning,
piuCertificatiAssociatiEntita);
pd.disableEditMode();
verificaCertificatiEffettuata = true;
} else {
DataElement deTestConnettivita = new DataElement();
deTestConnettivita.setType(DataElementType.TITLE);
deTestConnettivita.setLabel(SoggettiCostanti.LABEL_SOGGETTI_VERIFICA_CERTIFICATI);
dati.add(deTestConnettivita);
soggettiHelper.addVerificaCertificatoSceltaAlias(aliases, dati);
}
}
pd.setLabelBottoneInvia(CostantiControlStation.LABEL_CONFIGURAZIONE_VERIFICA_CONNETTORE_BOTTONE);
dati = soggettiHelper.addSoggettoHiddenToDati(dati, id,nomeprov, tipoprov);
DataElement de = new DataElement();
de.setValue(arrivoDaLista+"");
de.setType(DataElementType.HIDDEN);
de.setName(CostantiControlStation.PARAMETRO_VERIFICA_CERTIFICATI_FROM_LISTA);
dati.add(de);
pd.setDati(dati);
if(verificaCertificatiEffettuata) {
// verifica richiesta dal link nella lista, torno alla lista
if(arrivoDaLista) {
String filterDominioInterno = soggettiHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_FILTER_DOMINIO_INTERNO);
boolean forceFilterDominioInterno = false;
if("true".equalsIgnoreCase(filterDominioInterno)) {
forceFilterDominioInterno = true;
}
boolean multiTenant = soggettiCore.isMultitenant();
String userLogin = ServletUtils.getUserLoginFromSession(session);
ConsoleSearch ricerca = (ConsoleSearch) ServletUtils.getSearchObjectFromSession(request, session, ConsoleSearch.class);
int idLista = Liste.SOGGETTI;
// poiche' esistono filtri che hanno necessita di postback salvo in sessione
List<Soggetto> lista = null;
if(soggettiCore.isRegistroServiziLocale() &&
!ServletUtils.isSearchDone(soggettiHelper)) {
lista = ServletUtils.getRisultatiRicercaFromSession(request, session, idLista, Soggetto.class);
}
ricerca = soggettiHelper.checkSearchParameters(idLista, ricerca);
if(forceFilterDominioInterno) {
ricerca.addFilter(idLista, Filtri.FILTRO_DOMINIO, SoggettiCostanti.SOGGETTO_DOMINIO_OPERATIVO_VALUE);
}
else if(!multiTenant && !soggettiHelper.isModalitaCompleta()) {
ricerca.addFilter(idLista, Filtri.FILTRO_DOMINIO, SoggettiCostanti.SOGGETTO_DOMINIO_ESTERNO_VALUE);
}
if(soggettiCore.isRegistroServiziLocale()){
if(lista==null) {
if(soggettiCore.isVisioneOggettiGlobale(userLogin)){
lista = soggettiCore.soggettiRegistroList(null, ricerca);
}else{
lista = soggettiCore.soggettiRegistroList(userLogin, ricerca);
}
}
if(!soggettiHelper.isPostBackFilterElement()) {
ServletUtils.setRisultatiRicercaIntoSession(request, session, idLista, lista); // salvo poiche' esistono filtri che hanno necessita di postback
}
soggettiHelper.prepareSoggettiList(lista, ricerca);
}
else{
List<org.openspcoop2.core.config.Soggetto> listaConfig = null;
if(soggettiCore.isVisioneOggettiGlobale(userLogin)){
listaConfig = soggettiCore.soggettiList(null, ricerca);
}else{
listaConfig = soggettiCore.soggettiList(userLogin, ricerca);
}
soggettiHelper.prepareSoggettiConfigList(listaConfig, ricerca);
}
ServletUtils.setSearchObjectIntoSession(request, session, ricerca);
ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
return ServletUtils.getStrutsForwardEditModeFinished(mapping, SoggettiCostanti.OBJECT_NAME_SOGGETTI_VERIFICA_CERTIFICATI, CostantiControlStation.TIPO_OPERAZIONE_VERIFICA_CERTIFICATI);
}
// verifica richiesta dal dettaglio, torno al dettaglio
else {
// setto la barra del titolo
ServletUtils.setPageDataTitle_ServletChange(pd, SoggettiCostanti.LABEL_SOGGETTI,
SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST,
soggettiHelper.getLabelNomeSoggetto(protocollo, tipoprov , nomeprov));
String portadom = null;
String descr = null;
String versioneProtocollo = null;
String pdd = null;
String codiceIpa = null;
String pdUrlPrefixRewriter = null;
String paUrlPrefixRewriter = null;
String dominio = null;
boolean isRouter = false;
boolean privato = false;
String tipoauthSoggetto = null;
String utenteSoggetto = null;
String passwordSoggetto = null;
String subjectSoggetto = null;
String issuerSoggetto = null;
String principalSoggetto = null;
String multipleApiKey = null;
String appId = null;
String apiKey = null;
BinaryParameter tipoCredenzialiSSLFileCertificato = soggettiHelper.getBinaryParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO);
String tipoCredenzialiSSLSorgente = null;
String tipoCredenzialiSSLAliasCertificato = null;
String tipoCredenzialiSSLAliasCertificatoSubject= null;
String tipoCredenzialiSSLAliasCertificatoIssuer= null;
String tipoCredenzialiSSLAliasCertificatoType= null;
String tipoCredenzialiSSLAliasCertificatoVersion= null;
String tipoCredenzialiSSLAliasCertificatoSerialNumber= null;
String tipoCredenzialiSSLAliasCertificatoSelfSigned= null;
String tipoCredenzialiSSLAliasCertificatoNotBefore= null;
String tipoCredenzialiSSLAliasCertificatoNotAfter = null;
String tipoCredenzialiSSLVerificaTuttiICampi = null;
String tipoCredenzialiSSLConfigurazioneManualeSelfSigned= null;
org.openspcoop2.utils.certificate.ArchiveType tipoCredenzialiSSLTipoArchivio = org.openspcoop2.utils.certificate.ArchiveType.CER;
String tipoCredenzialiSSLFileCertificatoPassword = null;
List<String> listaAliasEstrattiCertificato = new ArrayList<>();
String tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_NO_WIZARD;
String changepwd = null;
boolean isSupportatoAutenticazioneSoggetti = soggettiCore.isSupportatoAutenticazioneSoggetti(protocollo);
boolean isSupportatoCodiceIPA = soggettiCore.isSupportatoCodiceIPA(protocollo);
boolean isSupportatoIdentificativoPorta = soggettiCore.isSupportatoIdentificativoPorta(protocollo);
String nomePddGestioneLocale = null;
if(!pddCore.isGestionePddAbilitata(soggettiHelper)){
nomePddGestioneLocale = pddCore.getNomePddOperativa();
if(nomePddGestioneLocale==null) {
throw new Exception("Non รจ stata rilevata una pdd di tipologia 'operativo'");
}
}
if(soggettiCore.isRegistroServiziLocale()){
portadom = soggettoRegistry.getIdentificativoPorta();
descr = soggettoRegistry.getDescrizione();
pdd = soggettoRegistry.getPortaDominio();
if(!pddCore.isGestionePddAbilitata(soggettiHelper)){
if(pddCore.isPddEsterna(pdd)) {
dominio = SoggettiCostanti.SOGGETTO_DOMINIO_ESTERNO_VALUE;
}
else {
dominio = SoggettiCostanti.SOGGETTO_DOMINIO_OPERATIVO_VALUE;
}
}
versioneProtocollo = soggettoRegistry.getVersioneProtocollo();
privato = soggettoRegistry.getPrivato()!=null && soggettoRegistry.getPrivato();
codiceIpa = soggettoRegistry.getCodiceIpa();
if(isSupportatoAutenticazioneSoggetti){
if (tipoauthSoggetto == null){
CredenzialiSoggetto credenziali = null;
if(soggettoRegistry.sizeCredenzialiList()>0) {
credenziali = soggettoRegistry.getCredenziali(0);
}
if (credenziali != null){
if(credenziali.getTipo()!=null)
tipoauthSoggetto = credenziali.getTipo().toString();
utenteSoggetto = credenziali.getUser();
passwordSoggetto = credenziali.getPassword();
if(tipoauthSoggetto!=null && ConnettoriCostanti.AUTENTICAZIONE_TIPO_BASIC.equals(tipoauthSoggetto)){
tipoCredenzialiSSLVerificaTuttiICampi = credenziali.isCertificateStrictVerification() ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED;
}
else if(tipoauthSoggetto!=null && ConnettoriCostanti.AUTENTICAZIONE_TIPO_APIKEY.equals(tipoauthSoggetto)){
tipoCredenzialiSSLVerificaTuttiICampi = credenziali.isCertificateStrictVerification() ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED;
multipleApiKey = credenziali.isAppId() ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED;
appId = credenziali.getUser();
apiKey = credenziali.getPassword();
}
principalSoggetto = credenziali.getUser();
if(credenziali.getCertificate() != null) {
tipoCredenzialiSSLFileCertificato.setValue(credenziali.getCertificate());
tipoCredenzialiSSLSorgente = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO;
tipoCredenzialiSSLVerificaTuttiICampi = credenziali.isCertificateStrictVerification() ? Costanti.CHECK_BOX_ENABLED :Costanti.CHECK_BOX_DISABLED;
try {
Certificate cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLFileCertificato.getValue());
tipoCredenzialiSSLAliasCertificatoIssuer = cSelezionato.getCertificate().getIssuer().getNameNormalized();
tipoCredenzialiSSLAliasCertificatoSubject = cSelezionato.getCertificate().getSubject().getNameNormalized();
tipoCredenzialiSSLAliasCertificatoSelfSigned = cSelezionato.getCertificate().isSelfSigned() ? CostantiControlStation.LABEL_SI : CostantiControlStation.LABEL_NO;
tipoCredenzialiSSLAliasCertificatoSerialNumber = cSelezionato.getCertificate().getSerialNumber() + "";
tipoCredenzialiSSLAliasCertificatoType = cSelezionato.getCertificate().getType();
tipoCredenzialiSSLAliasCertificatoVersion = cSelezionato.getCertificate().getVersion() + "";
SimpleDateFormat sdf = new SimpleDateFormat(SoggettiChangeStrutsBean.CERTIFICATE_FORMAT);
tipoCredenzialiSSLAliasCertificatoNotBefore = sdf.format(cSelezionato.getCertificate().getNotBefore());
tipoCredenzialiSSLAliasCertificatoNotAfter = sdf.format(cSelezionato.getCertificate().getNotAfter());
}catch(UtilsException e) {
pd.setMessage("Il Certificato selezionato non è valido: "+e.getMessage());
tipoCredenzialiSSLAliasCertificato = "";
tipoCredenzialiSSLAliasCertificatoSubject= "";
tipoCredenzialiSSLAliasCertificatoIssuer= "";
tipoCredenzialiSSLAliasCertificatoType= "";
tipoCredenzialiSSLAliasCertificatoVersion= "";
tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
tipoCredenzialiSSLAliasCertificatoNotBefore= "";
tipoCredenzialiSSLAliasCertificatoNotAfter = "";
}
} else {
subjectSoggetto = credenziali.getSubject();
issuerSoggetto = credenziali.getIssuer();
tipoCredenzialiSSLSorgente = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_CONFIGURAZIONE_MANUALE;
tipoCredenzialiSSLConfigurazioneManualeSelfSigned = ( subjectSoggetto != null && subjectSoggetto.equals(issuerSoggetto)) ? Costanti.CHECK_BOX_ENABLED :Costanti.CHECK_BOX_DISABLED;
}
}
}
if (tipoauthSoggetto == null) {
tipoauthSoggetto = ConnettoriCostanti.AUTENTICAZIONE_TIPO_NESSUNA;
}
}
}
else{
portadom = soggettoConfig.getIdentificativoPorta();
descr = soggettoConfig.getDescrizione();
isRouter = soggettoConfig.getRouter();
}
pdUrlPrefixRewriter = soggettoConfig.getPdUrlPrefixRewriter();
paUrlPrefixRewriter = soggettoConfig.getPaUrlPrefixRewriter();
boolean isPddEsterna = pddCore.isPddEsterna(pdd);
if(isSupportatoAutenticazioneSoggetti &&
isPddEsterna &&
tipoauthSoggetto==null && ConnettoriCostanti.AUTENTICAZIONE_TIPO_NESSUNA.equals(tipoauthSoggetto)){
tipoauthSoggetto = soggettiCore.getAutenticazione_generazioneAutomaticaPorteApplicative();
}
IDSoggetto idSoggetto = new IDSoggetto(tipoprov,nomeprov);
List<String> tipiSoggetti = soggettiCore.getTipiSoggettiGestitiProtocollo(protocollo);
List<String> versioniProtocollo = null;
if(soggettiHelper.isModalitaAvanzata()){
versioniProtocollo = soggettiCore.getVersioniProtocollo(protocollo);
}else {
versioniProtocollo = new ArrayList<>();
versioneProtocollo = soggettiCore.getVersioneDefaultProtocollo(protocollo);
versioniProtocollo.add(versioneProtocollo);
}
List<String> listaTipiProtocollo = soggettiCore.getProtocolli(request, session);
boolean pddOperativa = false;
if(soggettoRegistry.getPortaDominio()!=null && !"".equals(soggettoRegistry.getPortaDominio())){
PdDControlStation pddCtrlstat = pddCore.getPdDControlStation(soggettoRegistry.getPortaDominio());
pddOperativa = PddTipologia.OPERATIVO.toString().equals(pddCtrlstat.getTipo());
}
String [] pddList = null;
if(!pddOperativa && soggettoRegistry.getPortaDominio()!=null) {
pddList = new String[1];
pddList[0] = soggettoRegistry.getPortaDominio();
}
String [] pddEsterneList = null;
org.openspcoop2.core.registry.Connettore connettore = null;
if(soggettiCore.isRegistroServiziLocale()){
connettore = soggettoRegistry.getConnettore();
}
int numPA = 0;
int numPD = 0;
ProtocolProperties protocolProperties = null;
List<ProtocolProperty> oldProtocolPropertyList = null;
IConsoleDynamicConfiguration consoleDynamicConfiguration = null;
IRegistryReader registryReader = null;
IConfigIntegrationReader configRegistryReader = null;
ConsoleConfiguration consoleConfiguration = null;
ConsoleOperationType consoleOperationType = ConsoleOperationType.CHANGE;
try{
IProtocolFactory<?> protocolFactory = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(protocollo);
consoleDynamicConfiguration = protocolFactory.createDynamicConfigurationConsole();
registryReader = soggettiCore.getRegistryReader(protocolFactory);
configRegistryReader = soggettiCore.getConfigIntegrationReader(protocolFactory);
consoleConfiguration = consoleDynamicConfiguration.getDynamicConfigSoggetto(consoleOperationType, soggettiHelper,
registryReader, configRegistryReader, idSoggetto);
Soggetto soggetto = registryReader.getSoggetto(idSoggetto);
oldProtocolPropertyList = soggetto.getProtocolPropertyList();
protocolProperties = soggettiHelper.estraiProtocolPropertiesDaRequest(consoleConfiguration, consoleOperationType);
}catch(RegistryNotFound r){
// ignore
}
Properties propertiesProprietario = new Properties();
propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_ID_PROPRIETARIO, id);
propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_TIPO_PROPRIETARIO, ProtocolPropertiesCostanti.PARAMETRO_PP_TIPO_PROPRIETARIO_VALUE_SOGGETTO);
propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_NOME_PROPRIETARIO, tipoprov + "/" + nomeprov);
propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_URL_ORIGINALE_CHANGE, URLEncoder.encode( SoggettiCostanti.SERVLET_NAME_SOGGETTI_CHANGE + "?" + request.getQueryString(), "UTF-8"));
propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_PROTOCOLLO, protocollo);
boolean visualizzaModificaCertificato = false;
boolean visualizzaAddCertificato = false;
Integer numeroCertificati = soggettoRegistry.sizeCredenzialiList();
if(soggettoRegistry.sizeCredenzialiList()>0) {
visualizzaAddCertificato = true;
if(soggettoRegistry.sizeCredenzialiList() == 1) { // se ho definito solo un certificato c'e' il link diretto alla modifica
visualizzaModificaCertificato = true;
}
}
String servletCredenzialiList = SoggettiCostanti.SERVLET_NAME_SOGGETTI_CREDENZIALI_LIST;
String servletCredenzialiAdd = SoggettiCostanti.SERVLET_NAME_SOGGETTI_CREDENZIALI_ADD;
List<Parameter> parametersServletCredenzialiList = new ArrayList<>();
parametersServletCredenzialiList.add(pIdSoggetto);
parametersServletCredenzialiList.add(pNomeSoggetto);
parametersServletCredenzialiList.add(pTipoSoggetto);
dati.add(ServletUtils.getDataElementForEditModeFinished());
// update della configurazione
consoleDynamicConfiguration.updateDynamicConfigSoggetto(consoleConfiguration, consoleOperationType, soggettiHelper, protocolProperties,
registryReader, configRegistryReader, idSoggetto);
dati = soggettiHelper.addSoggettiToDati(TipoOperazione.CHANGE, dati, nomeprov, tipoprov, portadom, descr,
isRouter, tipiSoggetti, versioneProtocollo, privato, codiceIpa, versioniProtocollo,
isSupportatoCodiceIPA, isSupportatoIdentificativoPorta,
pddList,pddEsterneList,nomePddGestioneLocale,pdd,id,nomeprov,tipoprov,connettore,
numPD,pdUrlPrefixRewriter,numPA,paUrlPrefixRewriter,listaTipiProtocollo,protocollo,
isSupportatoAutenticazioneSoggetti,utenteSoggetto,passwordSoggetto,subjectSoggetto,principalSoggetto,tipoauthSoggetto,
isPddEsterna,null,dominio,tipoCredenzialiSSLSorgente, tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato, tipoCredenzialiSSLFileCertificatoPassword, listaAliasEstrattiCertificato,
tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLAliasCertificatoSubject, tipoCredenzialiSSLAliasCertificatoIssuer,
tipoCredenzialiSSLAliasCertificatoType, tipoCredenzialiSSLAliasCertificatoVersion, tipoCredenzialiSSLAliasCertificatoSerialNumber,
tipoCredenzialiSSLAliasCertificatoSelfSigned, tipoCredenzialiSSLAliasCertificatoNotBefore, tipoCredenzialiSSLAliasCertificatoNotAfter,
tipoCredenzialiSSLVerificaTuttiICampi, tipoCredenzialiSSLConfigurazioneManualeSelfSigned, issuerSoggetto,tipoCredenzialiSSLWizardStep,
changepwd,
multipleApiKey, appId, apiKey,
visualizzaModificaCertificato, visualizzaAddCertificato, servletCredenzialiList, parametersServletCredenzialiList, numeroCertificati, servletCredenzialiAdd, soggettoRegistry.sizeProprietaList());
// aggiunta campi custom
dati = soggettiHelper.addProtocolPropertiesToDatiRegistry(dati, consoleConfiguration,consoleOperationType, protocolProperties,oldProtocolPropertyList,propertiesProprietario);
pd.setDati(dati);
ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
return ServletUtils.getStrutsForwardEditModeFinished(mapping, SoggettiCostanti.OBJECT_NAME_SOGGETTI, ForwardParams.CHANGE());
}
}
else {
ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
return ServletUtils.getStrutsForwardEditModeFinished(mapping, SoggettiCostanti.OBJECT_NAME_SOGGETTI_VERIFICA_CERTIFICATI, ForwardParams.OTHER(""));
}
} catch (Exception e) {
return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping, SoggettiCostanti.OBJECT_NAME_SOGGETTI_VERIFICA_CERTIFICATI, ForwardParams.OTHER(""));
}
}
}