SoggettiAdd.java

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


  20. package org.openspcoop2.web.ctrlstat.servlet.soggetti;

  21. import java.util.ArrayList;
  22. import java.util.Collections;
  23. import java.util.List;

  24. import javax.servlet.http.HttpServletRequest;
  25. import javax.servlet.http.HttpServletResponse;
  26. import javax.servlet.http.HttpSession;

  27. import org.apache.commons.lang.StringUtils;
  28. import org.apache.struts.action.Action;
  29. import org.apache.struts.action.ActionForm;
  30. import org.apache.struts.action.ActionForward;
  31. import org.apache.struts.action.ActionMapping;
  32. import org.openspcoop2.core.commons.Liste;
  33. import org.openspcoop2.core.constants.CostantiDB;
  34. import org.openspcoop2.core.id.IDSoggetto;
  35. import org.openspcoop2.core.registry.Connettore;
  36. import org.openspcoop2.core.registry.CredenzialiSoggetto;
  37. import org.openspcoop2.core.registry.Property;
  38. import org.openspcoop2.core.registry.Soggetto;
  39. import org.openspcoop2.core.registry.constants.CredenzialeTipo;
  40. import org.openspcoop2.core.registry.constants.PddTipologia;
  41. import org.openspcoop2.pdd.core.autenticazione.ApiKey;
  42. import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
  43. import org.openspcoop2.protocol.sdk.ProtocolException;
  44. import org.openspcoop2.protocol.sdk.constants.ConsoleOperationType;
  45. import org.openspcoop2.protocol.sdk.properties.ProtocolPropertiesUtils;
  46. import org.openspcoop2.utils.UtilsException;
  47. import org.openspcoop2.utils.certificate.ArchiveLoader;
  48. import org.openspcoop2.utils.certificate.ArchiveType;
  49. import org.openspcoop2.utils.certificate.Certificate;
  50. import org.openspcoop2.utils.certificate.KeystoreType;
  51. import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
  52. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  53. import org.openspcoop2.web.ctrlstat.core.ControlStationCoreException;
  54. import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
  55. import org.openspcoop2.web.ctrlstat.dao.PdDControlStation;
  56. import org.openspcoop2.web.ctrlstat.dao.SoggettoCtrlStat;
  57. import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
  58. import org.openspcoop2.web.ctrlstat.servlet.OggettoDialogEnum;
  59. import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriCostanti;
  60. import org.openspcoop2.web.ctrlstat.servlet.pdd.PddCore;
  61. import org.openspcoop2.web.ctrlstat.servlet.sa.ServiziApplicativiCore;
  62. import org.openspcoop2.web.lib.mvc.BinaryParameter;
  63. import org.openspcoop2.web.lib.mvc.Costanti;
  64. import org.openspcoop2.web.lib.mvc.DataElement;
  65. import org.openspcoop2.web.lib.mvc.ForwardParams;
  66. import org.openspcoop2.web.lib.mvc.GeneralData;
  67. import org.openspcoop2.web.lib.mvc.MessageType;
  68. import org.openspcoop2.web.lib.mvc.PageData;
  69. import org.openspcoop2.web.lib.mvc.Parameter;
  70. import org.openspcoop2.web.lib.mvc.ServletUtils;
  71. import org.openspcoop2.web.lib.mvc.TipoOperazione;

  72. /**
  73.  * soggettiAdd
  74.  *
  75.  * @author Andrea Poli (apoli@link.it)
  76.  * @author Stefano Corallo (corallo@link.it)
  77.  * @author Sandra Giangrandi (sandra@link.it)
  78.  * @author $Author$
  79.  * @version $Rev$, $Date$
  80.  *
  81.  */
  82. public final class SoggettiAdd extends Action {

  83.     @Override
  84.     public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
  85.         HttpSession session = request.getSession(true);

  86.         // Inizializzo PageData
  87.         PageData pd = new PageData();

  88.         GeneralHelper generalHelper = new GeneralHelper(session);

  89.         // Inizializzo GeneralData
  90.         GeneralData gd = generalHelper.initGeneralData(request);

  91.         SoggettiAddStrutsBean strutsBean = new SoggettiAddStrutsBean();
  92.        
  93.         // Parametri Protocol Properties relativi al tipo di operazione e al tipo di visualizzazione
  94.         strutsBean.consoleOperationType = ConsoleOperationType.ADD;

  95.         // Parametri relativi al tipo operazione
  96.         TipoOperazione tipoOp = TipoOperazione.ADD;

  97.         try {
  98.             SoggettiHelper soggettiHelper = new SoggettiHelper(request, pd, session);
  99.            
  100.             strutsBean.protocollo = soggettiHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_PROTOCOLLO);
  101.             strutsBean.nomeprov = soggettiHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_NOME);
  102.             strutsBean.tipoprov = soggettiHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_TIPO);
  103.             strutsBean.tipologia = soggettiHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_TIPOLOGIA);
  104.             strutsBean.portadom = soggettiHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_CODICE_PORTA);
  105.             strutsBean.descr = soggettiHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_DESCRIZIONE);
  106.             strutsBean.versioneProtocollo = soggettiHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_VERSIONE_PROTOCOLLO);
  107.             strutsBean.pdd = soggettiHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_PDD);
  108.             String isRouterParameter = soggettiHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_IS_ROUTER);
  109.             String isPrivatoParameter = soggettiHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_IS_PRIVATO);
  110.             strutsBean.privato = ServletUtils.isCheckBoxEnabled(isPrivatoParameter);
  111.             strutsBean.codiceIpa = soggettiHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_CODICE_IPA);
  112.             strutsBean.pdUrlPrefixRewriter = soggettiHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_PD_URL_PREFIX_REWRITER);
  113.             strutsBean.paUrlPrefixRewriter = soggettiHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_PA_URL_PREFIX_REWRITER);
  114.             strutsBean.isRouter = ServletUtils.isCheckBoxEnabled(isRouterParameter);
  115.             strutsBean.dominio = soggettiHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_DOMINIO);

  116.             String userLogin = ServletUtils.getUserLoginFromSession(session);
  117.             strutsBean.singlePdD = ServletUtils.getObjectFromSession(request, session, Boolean.class, CostantiControlStation.SESSION_PARAMETRO_SINGLE_PDD);

  118.             strutsBean.editMode = soggettiHelper.getParameter(Costanti.DATA_ELEMENT_EDIT_MODE_NAME);

  119.             strutsBean.tipoauthSoggetto = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_TIPO_AUTENTICAZIONE);
  120.             strutsBean.utenteSoggetto = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_USERNAME);
  121.             strutsBean.passwordSoggetto = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_PASSWORD);
  122.             strutsBean.subjectSoggetto = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_SUBJECT);
  123.             strutsBean.principalSoggetto = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_PRINCIPAL);
  124.            
  125.             String changepwd = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CHANGE_PASSWORD);
  126.                        
  127.             String tipoCredenzialiSSLSorgente = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL);
  128.             if(tipoCredenzialiSSLSorgente == null) {
  129.                 tipoCredenzialiSSLSorgente = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO;
  130.             }
  131.             String tipoCredenzialiSSLTipoArchivioS = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_TIPO_ARCHIVIO);
  132.             org.openspcoop2.utils.certificate.ArchiveType tipoCredenzialiSSLTipoArchivio= null;
  133.             if(tipoCredenzialiSSLTipoArchivioS == null) {
  134.                 tipoCredenzialiSSLTipoArchivio = org.openspcoop2.utils.certificate.ArchiveType.CER;
  135.             } else {
  136.                 tipoCredenzialiSSLTipoArchivio = org.openspcoop2.utils.certificate.ArchiveType.valueOf(tipoCredenzialiSSLTipoArchivioS);
  137.             }
  138.             BinaryParameter tipoCredenzialiSSLFileCertificato = soggettiHelper.getBinaryParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO);
  139.             String tipoCredenzialiSSLFileCertificatoPassword = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO_PASSWORD);
  140.             List<String> listaAliasEstrattiCertificato = new ArrayList<>();
  141.             String tipoCredenzialiSSLAliasCertificato = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO);
  142.             if (tipoCredenzialiSSLAliasCertificato == null) {
  143.                 tipoCredenzialiSSLAliasCertificato = "";
  144.             }
  145.             String tipoCredenzialiSSLAliasCertificatoSubject= soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_SUBJECT);
  146.             String tipoCredenzialiSSLAliasCertificatoIssuer= soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_ISSUER);
  147.             String tipoCredenzialiSSLAliasCertificatoType= soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_TYPE);
  148.             String tipoCredenzialiSSLAliasCertificatoVersion= soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_VERSION);
  149.             String tipoCredenzialiSSLAliasCertificatoSerialNumber= soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_SERIAL_NUMBER);
  150.             String tipoCredenzialiSSLAliasCertificatoSelfSigned= soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_SELF_SIGNED);
  151.             String tipoCredenzialiSSLAliasCertificatoNotBefore= soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_NOT_BEFORE);
  152.             String tipoCredenzialiSSLAliasCertificatoNotAfter = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_NOT_AFTER);
  153.             String tipoCredenzialiSSLVerificaTuttiICampi = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI);
  154.             if (
  155.                     (tipoCredenzialiSSLVerificaTuttiICampi == null || StringUtils.isEmpty(tipoCredenzialiSSLVerificaTuttiICampi))
  156.                     &&
  157.                     ( (soggettiHelper.isEditModeInProgress() && soggettiHelper.getPostBackElementName()==null)
  158.                         ||
  159.                          SoggettiCostanti.PARAMETRO_SOGGETTO_DOMINIO.equalsIgnoreCase(soggettiHelper.getPostBackElementName())
  160.                          ||
  161.                          SoggettiCostanti.PARAMETRO_SOGGETTO_TIPOLOGIA.equalsIgnoreCase(soggettiHelper.getPostBackElementName())
  162.                     )
  163.                 ){ // prima volta
  164.                 tipoCredenzialiSSLVerificaTuttiICampi = ConnettoriCostanti.DEFAULT_VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI;
  165.             }
  166.             String tipoCredenzialiSSLConfigurazioneManualeSelfSigned= soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_MANUALE_SELF_SIGNED);
  167.             if (tipoCredenzialiSSLConfigurazioneManualeSelfSigned == null) {
  168.                 tipoCredenzialiSSLConfigurazioneManualeSelfSigned = Costanti.CHECK_BOX_DISABLED;
  169.             }
  170.             String issuerSoggetto = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_ISSUER);

  171.             String tipoCredenzialiSSLWizardStep = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP);
  172.             if (tipoCredenzialiSSLWizardStep == null) {
  173.                 tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_NO_WIZARD;
  174.             }
  175.             String oldTipoCredenzialiSSLWizardStep = tipoCredenzialiSSLWizardStep;

  176.             String multipleApiKey = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_MULTIPLE_API_KEYS);
  177.             String appId = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_APP_ID);
  178.             String apiKey = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_API_KEY);
  179.            
  180.             boolean visualizzaModificaCertificato = false;
  181.             boolean visualizzaAddCertificato = false;
  182.             String servletCredenzialiList = null;
  183.             List<Parameter> parametersServletCredenzialiList = null;
  184.             Integer numeroCertificati = 0;
  185.             String servletCredenzialiAdd = null;
  186.            
  187.             boolean isRouter = ServletUtils.isCheckBoxEnabled(isRouterParameter);

  188.             // Preparo il menu
  189.             soggettiHelper.makeMenu();

  190.             // Prendo la lista di pdd e la metto in un array
  191.             String[] pddList = null;
  192.             String[] pddEsterneList = null;
  193.             List<String> tipiSoggetti = null;
  194.             int totPdd = 1;
  195.             String nomePddGestioneLocale = null;
  196.             List<String> versioniProtocollo = null;

  197.             SoggettiCore soggettiCore = new SoggettiCore();
  198.             PddCore pddCore = new PddCore(soggettiCore);
  199.             ServiziApplicativiCore saCore = new ServiziApplicativiCore(soggettiCore);

  200.             // Tipi protocollo supportati
  201.             List<String> listaTipiProtocollo = soggettiCore.getProtocolli(request, session);
  202.             // primo accesso
  203.             if(strutsBean.protocollo == null){
  204.                 strutsBean.protocollo = soggettiCore.getProtocolloDefault(request, session, null);
  205.             }

  206.             if(soggettiCore.isRegistroServiziLocale()){
  207.                 List<PdDControlStation> lista = new ArrayList<>();

  208.                 // aggiungo un elemento di comodo
  209.                 PdDControlStation tmp = new PdDControlStation();
  210.                 tmp.setNome("-");
  211.                 lista.add(tmp);

  212.                 // aggiungo gli altri elementi
  213.                 if(soggettiCore.isVisioneOggettiGlobale(userLogin)){
  214.                     lista.addAll(pddCore.pddList(null, new ConsoleSearch(true)));
  215.                 }else{
  216.                     lista.addAll(pddCore.pddList(userLogin, new ConsoleSearch(true)));
  217.                 }

  218.                 totPdd = lista.size();

  219.                 pddList = new String[lista.size()];

  220.                 int i = 0;
  221.                 List<String> pddEsterne = new ArrayList<>();
  222.                 pddEsterne.add("-");
  223.                 for (PdDControlStation pddTmp : lista) {
  224.                     pddList[i] = pddTmp.getNome();
  225.                     i++;
  226.                     if(strutsBean.singlePdD!=null && strutsBean.singlePdD.booleanValue() && (nomePddGestioneLocale==null) && (PddTipologia.OPERATIVO.toString().equals(pddTmp.getTipo())) ){
  227.                         nomePddGestioneLocale = pddTmp.getNome();
  228.                     }
  229.                     if(strutsBean.singlePdD!=null && strutsBean.singlePdD.booleanValue() && PddTipologia.ESTERNO.toString().equals(pddTmp.getTipo())){
  230.                         pddEsterne.add(pddTmp.getNome());
  231.                     }
  232.                 }
  233.                 pddEsterneList = pddEsterne.toArray(new String[1]);

  234.                 // Gestione pdd
  235.                 if(!soggettiCore.isGestionePddAbilitata(soggettiHelper)) {

  236.                     if(nomePddGestioneLocale==null) {
  237.                         throw new ControlStationCoreException("Non è stata rilevata una pdd di tipologia 'operativo'");
  238.                     }

  239.                     if(SoggettiCostanti.SOGGETTO_DOMINIO_OPERATIVO_VALUE.equals(strutsBean.dominio)) {
  240.                         strutsBean.pdd = nomePddGestioneLocale;
  241.                     }
  242.                     else {
  243.                         strutsBean.pdd = null;
  244.                     }
  245.                 }
  246.             }

  247.             //Carico la lista dei tipi di soggetti gestiti dal protocollo
  248.             tipiSoggetti = soggettiCore.getTipiSoggettiGestitiProtocollo(strutsBean.protocollo);

  249.             // lista tipi
  250.             //          tipiSoggetti = soggettiCore.getTipiSoggettiGestiti(); // all tipi soggetti gestiti
  251.             if(strutsBean.tipoprov==null){
  252.                 strutsBean.tipoprov = soggettiCore.getTipoSoggettoDefaultProtocollo(strutsBean.protocollo);
  253.             }

  254.             String postBackElementName = soggettiHelper.getPostBackElementName();
  255.             String labelButtonSalva = Costanti.LABEL_MONITOR_BUTTON_INVIA;

  256.             // Controllo se ho modificato il protocollo, ricalcolo il default della versione del protocollo
  257.             if(postBackElementName != null ){
  258.                 if(postBackElementName.equalsIgnoreCase(SoggettiCostanti.PARAMETRO_SOGGETTO_DOMINIO)){
  259.                     strutsBean.tipoauthSoggetto = null;
  260.                     strutsBean.tipologia = SoggettiCostanti.SOGGETTO_RUOLO_EROGATORE;
  261.                 }
  262.                
  263.                 if(postBackElementName.equalsIgnoreCase(SoggettiCostanti.PARAMETRO_SOGGETTO_PROTOCOLLO)){
  264.                     strutsBean.versioneProtocollo = null;
  265.                     // cancello file temporanei
  266.                     soggettiHelper.deleteProtocolPropertiesBinaryParameters();
  267.                 }  
  268.                
  269.                 if(postBackElementName.equalsIgnoreCase(SoggettiCostanti.PARAMETRO_SOGGETTO_TIPOLOGIA)){
  270.                     strutsBean.tipoauthSoggetto = null;
  271.                 }  

  272.                 // tipo autenticazione
  273.                 if(postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_TIPO_AUTENTICAZIONE)){
  274.                     if(strutsBean.tipoauthSoggetto!=null && strutsBean.tipoauthSoggetto.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL)) {
  275.                         // reset impostazioni sezione ssl
  276.                         tipoCredenzialiSSLSorgente = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO;
  277.                         tipoCredenzialiSSLTipoArchivio = ArchiveType.CER;
  278.                         tipoCredenzialiSSLVerificaTuttiICampi = ConnettoriCostanti.DEFAULT_VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI;
  279.                         tipoCredenzialiSSLAliasCertificato = "";
  280.                         tipoCredenzialiSSLAliasCertificatoSubject= "";
  281.                         tipoCredenzialiSSLAliasCertificatoIssuer= "";
  282.                         tipoCredenzialiSSLAliasCertificatoType= "";
  283.                         tipoCredenzialiSSLAliasCertificatoVersion= "";
  284.                         tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  285.                         tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  286.                         tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  287.                         tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  288.                         listaAliasEstrattiCertificato = new ArrayList<>();
  289.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO;
  290.                     } else {
  291.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_NO_WIZARD;
  292.                     }
  293.                 }

  294.                 // tipo di configurazione SSL
  295.                 if(postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL) ||
  296.                         postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO_LINK_MODIFICA)) {
  297.                     listaAliasEstrattiCertificato = new ArrayList<>();
  298.                     tipoCredenzialiSSLTipoArchivio = ArchiveType.CER;
  299.                     tipoCredenzialiSSLVerificaTuttiICampi = ConnettoriCostanti.DEFAULT_VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI;
  300.                     tipoCredenzialiSSLAliasCertificato = "";
  301.                     tipoCredenzialiSSLAliasCertificatoSubject= "";
  302.                     tipoCredenzialiSSLAliasCertificatoIssuer= "";
  303.                     tipoCredenzialiSSLAliasCertificatoType= "";
  304.                     tipoCredenzialiSSLAliasCertificatoVersion= "";
  305.                     tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  306.                     tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  307.                     tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  308.                     tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  309.                     soggettiHelper.deleteBinaryParameters(tipoCredenzialiSSLFileCertificato);
  310.                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO;

  311.                     if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_CONFIGURAZIONE_MANUALE)) {
  312.                         strutsBean.subjectSoggetto = "";
  313.                         issuerSoggetto = "";
  314.                         tipoCredenzialiSSLConfigurazioneManualeSelfSigned = Costanti.CHECK_BOX_DISABLED;
  315.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_NO_WIZARD;
  316.                     }
  317.                 }

  318.                 // cambio il tipo archivio butto via il vecchio certificato            
  319.                 if(postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_TIPO_ARCHIVIO)) {
  320.                     soggettiHelper.deleteBinaryParameters(tipoCredenzialiSSLFileCertificato);
  321.                     tipoCredenzialiSSLAliasCertificato = "";
  322.                     tipoCredenzialiSSLAliasCertificatoSubject= "";
  323.                     tipoCredenzialiSSLAliasCertificatoIssuer= "";
  324.                     tipoCredenzialiSSLAliasCertificatoType= "";
  325.                     tipoCredenzialiSSLAliasCertificatoVersion= "";
  326.                     tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  327.                     tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  328.                     tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  329.                     tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  330.                     listaAliasEstrattiCertificato = new ArrayList<>();
  331.                     tipoCredenzialiSSLVerificaTuttiICampi = ConnettoriCostanti.DEFAULT_VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI;
  332.                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO;
  333.                 }

  334.                 // selezione alias
  335.                 if(postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO)) {
  336.                     if(StringUtils.isNotEmpty(tipoCredenzialiSSLAliasCertificato)) {
  337.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK;
  338.                     } else {
  339.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ALIAS_NON_SCELTO;
  340.                     }
  341.                     tipoCredenzialiSSLAliasCertificatoSubject= "";
  342.                     tipoCredenzialiSSLAliasCertificatoIssuer= "";
  343.                     tipoCredenzialiSSLAliasCertificatoType= "";
  344.                     tipoCredenzialiSSLAliasCertificatoVersion= "";
  345.                     tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  346.                     tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  347.                     tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  348.                     tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  349.                 }
  350.                
  351.                 // apikey
  352.                 if(postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_MULTIPLE_API_KEYS)) {
  353.                     appId = null;
  354.                     apiKey = null;
  355.                 }
  356.             }

  357.             if(strutsBean.versioneProtocollo == null){
  358.                 strutsBean.versioneProtocollo = soggettiCore.getVersioneDefaultProtocollo(strutsBean.protocollo);
  359.             }

  360.             if(soggettiHelper.isModalitaAvanzata()){
  361.                 versioniProtocollo = soggettiCore.getVersioniProtocollo(strutsBean.protocollo);
  362.             }else {
  363.                 versioniProtocollo = new ArrayList<>();
  364.                 versioniProtocollo.add(strutsBean.versioneProtocollo);
  365.             }
  366.             boolean isSupportatoCodiceIPA = soggettiCore.isSupportatoCodiceIPA(strutsBean.protocollo);
  367.             boolean isSupportatoIdentificativoPorta = soggettiCore.isSupportatoIdentificativoPorta(strutsBean.protocollo);

  368.             boolean isSupportatoAutenticazioneSoggetti = soggettiCore.isSupportatoAutenticazioneSoggetti(strutsBean.protocollo);
  369.             boolean isPddEsterna = pddCore.isPddEsterna(strutsBean.pdd);
  370.             if(isSupportatoAutenticazioneSoggetti){
  371.                 if(isPddEsterna){

  372.                     if(strutsBean.tipologia==null || "".equals(strutsBean.tipologia)){
  373.                         strutsBean.tipologia = SoggettiCostanti.SOGGETTO_RUOLO_EROGATORE;
  374.                     }

  375.                     if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_NESSUNA.equals(strutsBean.tipoauthSoggetto) &&
  376.                             !saCore.isSupportatoAutenticazioneApplicativiEsterniErogazione(strutsBean.protocollo)){
  377.                         strutsBean.tipoauthSoggetto = null;
  378.                     }
  379.                 }
  380.                 if (strutsBean.tipoauthSoggetto == null) {
  381.                     if(isPddEsterna){

  382.                         if(SoggettiCostanti.SOGGETTO_RUOLO_FRUITORE.equals(strutsBean.tipologia) || SoggettiCostanti.SOGGETTO_RUOLO_ENTRAMBI.equals(strutsBean.tipologia)){
  383.                             strutsBean.tipoauthSoggetto = soggettiCore.getAutenticazione_generazioneAutomaticaPorteApplicative();
  384.                         }else{
  385.                             strutsBean.tipoauthSoggetto = ConnettoriCostanti.AUTENTICAZIONE_TIPO_NESSUNA;
  386.                         }                      
  387.                     }
  388.                     else{
  389.                         strutsBean.tipoauthSoggetto = ConnettoriCostanti.AUTENTICAZIONE_TIPO_NESSUNA;
  390.                     }
  391.                 }
  392.             }

  393.             boolean checkWizard = false;
  394.             if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL.equals(strutsBean.tipoauthSoggetto)) {
  395.                 if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO)) {
  396.                     if(tipoCredenzialiSSLFileCertificato.getValue() != null && tipoCredenzialiSSLFileCertificato.getValue().length > 0) {
  397.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ALIAS_NON_SCELTO;
  398.                         if(!tipoCredenzialiSSLTipoArchivio.equals(ArchiveType.CER)) {
  399.                             if(StringUtils.isNotEmpty(tipoCredenzialiSSLFileCertificatoPassword) ||
  400.                                     (KeystoreType.JKS.isType(tipoCredenzialiSSLTipoArchivio.name()) && !soggettiCore.isLoadCertificateWizardJksPasswordRequiredRequired()) ||
  401.                                     (KeystoreType.PKCS12.isType(tipoCredenzialiSSLTipoArchivio.name()) && !soggettiCore.isLoadCertificateWizardPkcs12PasswordRequiredRequired())
  402.                                     ) {
  403.                                 try {
  404.                                     listaAliasEstrattiCertificato = ArchiveLoader.readAliases(tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato.getValue(), tipoCredenzialiSSLFileCertificatoPassword);
  405.                                     Collections.sort(listaAliasEstrattiCertificato);
  406.    
  407.                                     //se ho un solo alias lo imposto
  408.                                     if(!listaAliasEstrattiCertificato.isEmpty() && listaAliasEstrattiCertificato.size() == 1) {
  409.                                         tipoCredenzialiSSLAliasCertificato = listaAliasEstrattiCertificato.get(0);
  410.                                     }
  411.                                    
  412.                                     // ho appena caricato il file devo solo far vedere la form senza segnalare il messaggio di errore
  413.                                     if(oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO)
  414.                                             ||oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_PASSWORD_NON_PRESENTE)
  415.                                             || oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO)) {
  416.                                         checkWizard = true;
  417.                                         if(listaAliasEstrattiCertificato.size() > 1) {
  418.                                             pd.setMessage("Il file caricato contiene pi&ugrave; certificati, selezionare un'"+ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO, MessageType.INFO);
  419.                                         }  
  420.                                     }
  421.                                 }catch(UtilsException e) {
  422.                                     pd.setMessage("Il Certificato selezionato non &egrave; valido: "+e.getMessage());
  423.                                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO;
  424.                                     tipoCredenzialiSSLAliasCertificato = "";
  425.                                     tipoCredenzialiSSLAliasCertificatoSubject= "";
  426.                                     tipoCredenzialiSSLAliasCertificatoIssuer= "";
  427.                                     tipoCredenzialiSSLAliasCertificatoType= "";
  428.                                     tipoCredenzialiSSLAliasCertificatoVersion= "";
  429.                                     tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  430.                                     tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  431.                                     tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  432.                                     tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  433.                                 }
  434.    
  435.                                 if(!listaAliasEstrattiCertificato.isEmpty() && StringUtils.isNotEmpty(tipoCredenzialiSSLAliasCertificato)) {
  436.                                     try {
  437.                                         Certificate cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato.getValue(), tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLFileCertificatoPassword);
  438.                                         tipoCredenzialiSSLAliasCertificatoIssuer = cSelezionato.getCertificate().getIssuer().getNameNormalized();
  439.                                         tipoCredenzialiSSLAliasCertificatoSubject = cSelezionato.getCertificate().getSubject().getNameNormalized();
  440.                                         tipoCredenzialiSSLAliasCertificatoSelfSigned = cSelezionato.getCertificate().isSelfSigned() ? CostantiControlStation.LABEL_SI : CostantiControlStation.LABEL_NO;
  441.                                         tipoCredenzialiSSLAliasCertificatoSerialNumber = cSelezionato.getCertificate().getSerialNumber() + "";
  442.                                         tipoCredenzialiSSLAliasCertificatoType = cSelezionato.getCertificate().getType();
  443.                                         tipoCredenzialiSSLAliasCertificatoVersion = cSelezionato.getCertificate().getVersion() + "";
  444.                                         tipoCredenzialiSSLAliasCertificatoNotBefore = strutsBean.sdf.format(cSelezionato.getCertificate().getNotBefore());
  445.                                         tipoCredenzialiSSLAliasCertificatoNotAfter = strutsBean.sdf.format(cSelezionato.getCertificate().getNotAfter());
  446.                                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK;
  447.                                     }catch(UtilsException e) {
  448.                                         pd.setMessage("Il Certificato selezionato non &egrave; valido: "+e.getMessage());
  449.                                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO;
  450.                                         tipoCredenzialiSSLAliasCertificato = "";
  451.                                         tipoCredenzialiSSLAliasCertificatoSubject= "";
  452.                                         tipoCredenzialiSSLAliasCertificatoIssuer= "";
  453.                                         tipoCredenzialiSSLAliasCertificatoType= "";
  454.                                         tipoCredenzialiSSLAliasCertificatoVersion= "";
  455.                                         tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  456.                                         tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  457.                                         tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  458.                                         tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  459.                                     }
  460.                                 }
  461.                             } else {
  462.                                 tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_PASSWORD_NON_PRESENTE;
  463.                             }
  464.                         } else {
  465.                             try {
  466.                                 Certificate cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLFileCertificato.getValue());
  467.                                 tipoCredenzialiSSLAliasCertificatoIssuer = cSelezionato.getCertificate().getIssuer().getNameNormalized();
  468.                                 tipoCredenzialiSSLAliasCertificatoSubject = cSelezionato.getCertificate().getSubject().getNameNormalized();
  469.                                 tipoCredenzialiSSLAliasCertificatoSelfSigned = cSelezionato.getCertificate().isSelfSigned() ? CostantiControlStation.LABEL_SI : CostantiControlStation.LABEL_NO;
  470.                                 tipoCredenzialiSSLAliasCertificatoSerialNumber = cSelezionato.getCertificate().getSerialNumber() + "";
  471.                                 tipoCredenzialiSSLAliasCertificatoType = cSelezionato.getCertificate().getType();
  472.                                 tipoCredenzialiSSLAliasCertificatoVersion = cSelezionato.getCertificate().getVersion() + "";
  473.                                 tipoCredenzialiSSLAliasCertificatoNotBefore = strutsBean.sdf.format(cSelezionato.getCertificate().getNotBefore());
  474.                                 tipoCredenzialiSSLAliasCertificatoNotAfter = strutsBean.sdf.format(cSelezionato.getCertificate().getNotAfter());
  475.                                
  476.                                 // dalla seconda volta che passo, posso salvare, la prima mostro il recap del certificato estratto
  477.                                
  478.                                 if(oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK_TIPO_CER)||
  479.                                         oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK)) {
  480.                                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK;
  481.                                 } else {
  482.                                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK_TIPO_CER;
  483.                                     checkWizard = true;
  484.                                 }
  485.                             }catch(UtilsException e) {
  486.                                 pd.setMessage("Il Certificato selezionato non &egrave; valido: "+e.getMessage());
  487.                                 tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO;
  488.                                 tipoCredenzialiSSLAliasCertificato = "";
  489.                                 tipoCredenzialiSSLAliasCertificatoSubject= "";
  490.                                 tipoCredenzialiSSLAliasCertificatoIssuer= "";
  491.                                 tipoCredenzialiSSLAliasCertificatoType= "";
  492.                                 tipoCredenzialiSSLAliasCertificatoVersion= "";
  493.                                 tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  494.                                 tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  495.                                 tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  496.                                 tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  497.                             }
  498.                         }
  499.                     } else {
  500.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO;
  501.                     }
  502.                 }
  503.                
  504.                 if(StringUtils.isNotEmpty(tipoCredenzialiSSLWizardStep) && ( tipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO)
  505.                         ||tipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_PASSWORD_NON_PRESENTE)
  506.                         || tipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO)
  507.                         )) {
  508.                     if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO)) {
  509.                         labelButtonSalva = ConnettoriCostanti.LABEL_BUTTON_INVIA_CARICA_CERTIFICATO;
  510.                     }
  511.                 }else {
  512.                     labelButtonSalva = Costanti.LABEL_MONITOR_BUTTON_INVIA;
  513.                 }
  514.             } else {
  515.                 labelButtonSalva = Costanti.LABEL_MONITOR_BUTTON_INVIA;
  516.             }
  517.            
  518.             if(labelButtonSalva!= null) {
  519.                 pd.setLabelBottoneInvia(labelButtonSalva);
  520.             }

  521.             IDSoggetto idSoggetto = new IDSoggetto(strutsBean.tipoprov,strutsBean.nomeprov);
  522.             strutsBean.protocolFactory  = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(strutsBean.protocollo);
  523.             strutsBean.consoleDynamicConfiguration =  strutsBean.protocolFactory.createDynamicConfigurationConsole();
  524.             strutsBean.registryReader = soggettiCore.getRegistryReader(strutsBean.protocolFactory);
  525.             strutsBean.configRegistryReader = soggettiCore.getConfigIntegrationReader(strutsBean.protocolFactory);
  526.             strutsBean.consoleConfiguration = strutsBean.consoleDynamicConfiguration.getDynamicConfigSoggetto(strutsBean.consoleOperationType, soggettiHelper,
  527.                     strutsBean.registryReader, strutsBean.configRegistryReader, idSoggetto);
  528.             strutsBean.protocolProperties = soggettiHelper.estraiProtocolPropertiesDaRequest(strutsBean.consoleConfiguration, strutsBean.consoleOperationType);

  529.             boolean multipleApiKeysEnabled = false;
  530.             boolean appIdModificabile = ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_APP_ID_MODIFICABILE;
  531.             if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_APIKEY.equals(strutsBean.tipoauthSoggetto)) {
  532.                 multipleApiKeysEnabled = ServletUtils.isCheckBoxEnabled(multipleApiKey);
  533.                 if(appIdModificabile && multipleApiKeysEnabled) {
  534.                     boolean soggettoDefined =
  535.                             idSoggetto!=null &&
  536.                             idSoggetto.getTipo()!=null && !"".equals(idSoggetto.getTipo()) &&
  537.                             idSoggetto.getNome()!=null && !"".equals(idSoggetto.getNome());
  538.                     if(appId==null || "".equals(appId)) {
  539.                         if(soggettoDefined) {
  540.                             appId = soggettiCore.toAppId(strutsBean.protocollo, idSoggetto, multipleApiKeysEnabled);
  541.                         }
  542.                     }
  543.                 }
  544.             }
  545.            
  546.             // Se nomehid = null, devo visualizzare la pagina per l'inserimento dati
  547.            
  548.             if(ServletUtils.isEditModeInProgress(strutsBean.editMode) || checkWizard){

  549.                 // setto la barra del titolo
  550.                 ServletUtils.setPageDataTitle_ServletAdd(pd, SoggettiCostanti.LABEL_SOGGETTI, SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST);

  551.                 // preparo i campi
  552.                 List<DataElement> dati = new ArrayList<>();

  553.                 dati.add(ServletUtils.getDataElementForEditModeFinished());

  554.                 if(strutsBean.nomeprov==null){
  555.                     strutsBean.nomeprov = "";
  556.                     idSoggetto = new IDSoggetto(strutsBean.tipoprov,strutsBean.nomeprov);
  557.                 }
  558.                 if(strutsBean.portadom==null){
  559.                     strutsBean.portadom = "";
  560.                 }
  561.                 if(strutsBean.descr==null){
  562.                     strutsBean.descr = "";
  563.                 }

  564.                 // update della configurazione
  565.                 strutsBean.consoleDynamicConfiguration.updateDynamicConfigSoggetto(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, soggettiHelper, strutsBean.protocolProperties,
  566.                         strutsBean.registryReader, strutsBean.configRegistryReader, idSoggetto);
  567.                 dati = soggettiHelper.addSoggettiToDati(TipoOperazione.ADD,dati, strutsBean.nomeprov, strutsBean.tipoprov, strutsBean.portadom, strutsBean.descr,
  568.                         isRouter, tipiSoggetti, strutsBean.versioneProtocollo, strutsBean.privato,strutsBean.codiceIpa,versioniProtocollo,
  569.                         isSupportatoCodiceIPA, isSupportatoIdentificativoPorta,
  570.                         pddList,pddEsterneList,nomePddGestioneLocale, strutsBean.pdd,
  571.                         listaTipiProtocollo, strutsBean.protocollo ,
  572.                         isSupportatoAutenticazioneSoggetti,strutsBean.utenteSoggetto,strutsBean.passwordSoggetto,strutsBean.subjectSoggetto,strutsBean.principalSoggetto,strutsBean.tipoauthSoggetto,
  573.                         isPddEsterna,strutsBean.tipologia,strutsBean.dominio,
  574.                         tipoCredenzialiSSLSorgente, tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato, tipoCredenzialiSSLFileCertificatoPassword, listaAliasEstrattiCertificato,
  575.                         tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLAliasCertificatoSubject, tipoCredenzialiSSLAliasCertificatoIssuer,
  576.                         tipoCredenzialiSSLAliasCertificatoType, tipoCredenzialiSSLAliasCertificatoVersion, tipoCredenzialiSSLAliasCertificatoSerialNumber,
  577.                         tipoCredenzialiSSLAliasCertificatoSelfSigned, tipoCredenzialiSSLAliasCertificatoNotBefore, tipoCredenzialiSSLAliasCertificatoNotAfter,
  578.                         tipoCredenzialiSSLVerificaTuttiICampi, tipoCredenzialiSSLConfigurazioneManualeSelfSigned, issuerSoggetto,tipoCredenzialiSSLWizardStep,
  579.                         changepwd,
  580.                         multipleApiKey, appId, apiKey,
  581.                         visualizzaModificaCertificato, visualizzaAddCertificato, servletCredenzialiList, parametersServletCredenzialiList, numeroCertificati, servletCredenzialiAdd);

  582.                 // aggiunta campi custom
  583.                 dati = soggettiHelper.addProtocolPropertiesToDatiRegistry(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties);

  584.                 pd.setDati(dati);

  585.                 ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);

  586.                 return ServletUtils.getStrutsForwardEditModeInProgress(mapping, SoggettiCostanti.OBJECT_NAME_SOGGETTI, ForwardParams.ADD());
  587.             }

  588.             // Controlli sui campi immessi
  589.             boolean isOk = soggettiHelper.soggettiCheckData(tipoOp, null, strutsBean.tipoprov, strutsBean.nomeprov, strutsBean.codiceIpa, strutsBean.pdUrlPrefixRewriter, strutsBean.paUrlPrefixRewriter,
  590.                     null, false, strutsBean.descr, strutsBean.pdd);

  591.             boolean singlePdD = strutsBean.singlePdD!=null && strutsBean.singlePdD.booleanValue();
  592.             if (isOk &&
  593.                 soggettiCore.isRegistroServiziLocale() &&
  594.                     !singlePdD) {
  595.                 isOk = false;
  596.                 // Controllo che pdd appartenga alla lista di pdd
  597.                 // esistenti
  598.                 for (int i = 0; i < totPdd; i++) {
  599.                     String tmpPdd = pddList[i];
  600.                     if (tmpPdd.equals(strutsBean.pdd) && !strutsBean.pdd.equals("-")) {
  601.                         isOk = true;
  602.                     }
  603.                 }
  604.                 if (!isOk) {
  605.                     pd.setMessage("La Porta di Dominio dev'essere scelta tra quelle definite nel pannello Porte di Dominio");
  606.                 }
  607.             }

  608.             // updateDynamic
  609.             if(isOk) {
  610.                 strutsBean.consoleDynamicConfiguration.updateDynamicConfigSoggetto(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, soggettiHelper, strutsBean.protocolProperties,
  611.                         strutsBean.registryReader, strutsBean.configRegistryReader, idSoggetto);
  612.             }
  613.            
  614.             // Validazione base dei parametri custom
  615.             if(isOk){
  616.                 try{
  617.                     soggettiHelper.validaProtocolProperties(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, strutsBean.protocolProperties);
  618.                 }catch(ProtocolException e){
  619.                     ControlStationCore.getLog().error(e.getMessage(),e);
  620.                     pd.setMessage(e.getMessage());
  621.                     isOk = false;
  622.                 }
  623.             }

  624.             // Valido i parametri custom se ho gia' passato tutta la validazione prevista
  625.             if(isOk){
  626.                 try{
  627.                     //validazione campi dinamici
  628.                     strutsBean.consoleDynamicConfiguration.validateDynamicConfigSoggetto(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, soggettiHelper, strutsBean.protocolProperties,
  629.                             strutsBean.registryReader, strutsBean.configRegistryReader, idSoggetto);  
  630.                 }catch(ProtocolException e){
  631.                     ControlStationCore.getLog().error(e.getMessage(),e);
  632.                     pd.setMessage(e.getMessage());
  633.                     isOk = false;
  634.                 }
  635.             }

  636.             if (!isOk) {

  637.                 // setto la barra del titolo
  638.                 ServletUtils.setPageDataTitle_ServletAdd(pd, SoggettiCostanti.LABEL_SOGGETTI, SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST);

  639.                 // preparo i campi
  640.                 List<DataElement> dati = new ArrayList<>();

  641.                 dati.add(ServletUtils.getDataElementForEditModeFinished());

  642.                 // update della configurazione
  643.                 strutsBean.consoleDynamicConfiguration.updateDynamicConfigSoggetto(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, soggettiHelper, strutsBean.protocolProperties,
  644.                         strutsBean.registryReader, strutsBean.configRegistryReader, idSoggetto);

  645.                 dati = soggettiHelper.addSoggettiToDati(TipoOperazione.ADD,dati, strutsBean.nomeprov, strutsBean.tipoprov, strutsBean.portadom, strutsBean.descr,
  646.                         isRouter, tipiSoggetti, strutsBean.versioneProtocollo, strutsBean.privato,strutsBean.codiceIpa,versioniProtocollo,
  647.                         isSupportatoCodiceIPA, isSupportatoIdentificativoPorta,
  648.                         pddList,pddEsterneList,nomePddGestioneLocale, strutsBean.pdd,  
  649.                         listaTipiProtocollo, strutsBean.protocollo,
  650.                         isSupportatoAutenticazioneSoggetti,strutsBean.utenteSoggetto,strutsBean.passwordSoggetto,strutsBean.subjectSoggetto,strutsBean.principalSoggetto,strutsBean.tipoauthSoggetto,
  651.                         isPddEsterna,strutsBean.tipologia,strutsBean.dominio,
  652.                         tipoCredenzialiSSLSorgente, tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato, tipoCredenzialiSSLFileCertificatoPassword, listaAliasEstrattiCertificato,
  653.                         tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLAliasCertificatoSubject, tipoCredenzialiSSLAliasCertificatoIssuer,
  654.                         tipoCredenzialiSSLAliasCertificatoType, tipoCredenzialiSSLAliasCertificatoVersion, tipoCredenzialiSSLAliasCertificatoSerialNumber,
  655.                         tipoCredenzialiSSLAliasCertificatoSelfSigned, tipoCredenzialiSSLAliasCertificatoNotBefore, tipoCredenzialiSSLAliasCertificatoNotAfter,
  656.                         tipoCredenzialiSSLVerificaTuttiICampi, tipoCredenzialiSSLConfigurazioneManualeSelfSigned, issuerSoggetto,tipoCredenzialiSSLWizardStep,
  657.                         changepwd,
  658.                         multipleApiKey, appId, apiKey,
  659.                         visualizzaModificaCertificato, visualizzaAddCertificato, servletCredenzialiList, parametersServletCredenzialiList, numeroCertificati, servletCredenzialiAdd);

  660.                 // aggiunta campi custom
  661.                 dati = soggettiHelper.addProtocolPropertiesToDatiRegistry(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties);

  662.                 pd.setDati(dati);

  663.                 ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);

  664.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping, SoggettiCostanti.OBJECT_NAME_SOGGETTI, ForwardParams.ADD());
  665.             }

  666.             // Inserisco il soggetto nel db
  667.             if (strutsBean.codiceIpa==null || strutsBean.codiceIpa.equals("")) {
  668.                 strutsBean.codiceIpa = soggettiCore.getCodiceIPADefault(strutsBean.protocollo, idSoggetto, false);
  669.             }

  670.             if (strutsBean.portadom==null || strutsBean.portadom.equals("")) {
  671.                 strutsBean.portadom=soggettiCore.getIdentificativoPortaDefault(strutsBean.protocollo, idSoggetto);
  672.             }

  673.             boolean secret = false;
  674.             String secretPassword  = null;
  675.             String secretUser = null;
  676.             boolean secretAppId = false;
  677.            
  678.             // utilizzo il soggetto del registro che e' un
  679.             // sovrainsieme di quello del config
  680.             Soggetto soggettoRegistro = null;
  681.             if(soggettiCore.isRegistroServiziLocale()){
  682.                 soggettoRegistro = new Soggetto();
  683.             }
  684.             org.openspcoop2.core.config.Soggetto soggettoConfig = new org.openspcoop2.core.config.Soggetto();

  685.             // imposto soggettoRegistro
  686.             if(soggettiCore.isRegistroServiziLocale()){
  687.                 soggettoRegistro.setNome(strutsBean.nomeprov);
  688.                 soggettoRegistro.setTipo(strutsBean.tipoprov);
  689.                 soggettoRegistro.setDescrizione(strutsBean.descr);
  690.                 soggettoRegistro.setVersioneProtocollo(strutsBean.versioneProtocollo);
  691.                 soggettoRegistro.setIdentificativoPorta(strutsBean.portadom);
  692.                 soggettoRegistro.setCodiceIpa(strutsBean.codiceIpa);

  693.                 if(!pddCore.isGestionePddAbilitata(soggettiHelper)){
  694.                     if(SoggettiCostanti.SOGGETTO_DOMINIO_OPERATIVO_VALUE.equals(strutsBean.dominio)) {
  695.                         strutsBean.pdd = nomePddGestioneLocale;
  696.                     }
  697.                     else {
  698.                         strutsBean.pdd = null;
  699.                     }
  700.                 }

  701.                 if(soggettiCore.isSinglePdD()){
  702.                     if (strutsBean.pdd==null || strutsBean.pdd.equals("-"))
  703.                         soggettoRegistro.setPortaDominio(null);
  704.                     else
  705.                         soggettoRegistro.setPortaDominio(strutsBean.pdd);
  706.                 }else{
  707.                     soggettoRegistro.setPortaDominio(strutsBean.pdd);
  708.                 }
  709.                 soggettoRegistro.setSuperUser(userLogin);
  710.                 soggettoRegistro.setPrivato(strutsBean.privato);

  711.                 if(isSupportatoAutenticazioneSoggetti){
  712.                     if(strutsBean.tipoauthSoggetto!=null && !"".equals(strutsBean.tipoauthSoggetto) && !ConnettoriCostanti.AUTENTICAZIONE_TIPO_NESSUNA.equals(strutsBean.tipoauthSoggetto)){
  713.                         CredenzialiSoggetto credenziali = new CredenzialiSoggetto();
  714.                         credenziali.setTipo(CredenzialeTipo.toEnumConstant(strutsBean.tipoauthSoggetto));
  715.                         credenziali.setUser(strutsBean.utenteSoggetto);
  716.                         if(strutsBean.principalSoggetto!=null && !"".equals(strutsBean.principalSoggetto)){
  717.                             credenziali.setUser(strutsBean.principalSoggetto); // al posto di user
  718.                         }
  719.                         credenziali.setPassword(strutsBean.passwordSoggetto);

  720.                         ApiKey apiKeyGenerated = null;
  721.                         if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_APIKEY.equals(strutsBean.tipoauthSoggetto)) {
  722.                             credenziali.setAppId(multipleApiKeysEnabled);
  723.                             if(multipleApiKeysEnabled) {
  724.                                 apiKeyGenerated = soggettiCore.newMultipleApiKey();
  725.                                 if(!appIdModificabile) {
  726.                                     appId = soggettiCore.toAppId(strutsBean.protocollo, idSoggetto, multipleApiKeysEnabled);
  727.                                 }
  728.                             }
  729.                             else {
  730.                                 appId = soggettiCore.toAppId(strutsBean.protocollo, idSoggetto, multipleApiKeysEnabled);
  731.                                 apiKeyGenerated = soggettiCore.newApiKey(strutsBean.protocollo, idSoggetto);
  732.                             }
  733.                             credenziali.setUser(appId);
  734.                             credenziali.setPassword(apiKeyGenerated.getPassword());
  735.                         }
  736.                         else {
  737.                             credenziali.setAppId(false);
  738.                         }
  739.                        
  740.                         if(soggettiCore.isSoggettiPasswordEncryptEnabled()) {
  741.                             if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_BASIC.equals(strutsBean.tipoauthSoggetto) || ConnettoriCostanti.AUTENTICAZIONE_TIPO_APIKEY.equals(strutsBean.tipoauthSoggetto)) {
  742.                                 secret = true;
  743.                                 secretUser = credenziali.getUser();
  744.                                 if (apiKeyGenerated!=null) {
  745.                                     secretPassword = apiKeyGenerated.getApiKey();
  746.                                 }
  747.                                 else {
  748.                                     secretPassword = credenziali.getPassword();
  749.                                 }
  750.                                 secretAppId = credenziali.isAppId();
  751.                             }
  752.                         }
  753.                        
  754.                         if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL.equals(strutsBean.tipoauthSoggetto)) {
  755.                             if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO)) {
  756.                                 Certificate cSelezionato = null;
  757.                                 if(tipoCredenzialiSSLTipoArchivio.equals(ArchiveType.CER)) {
  758.                                     cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLFileCertificato.getValue());
  759.                                 }else {
  760.                                     cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato.getValue(), tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLFileCertificatoPassword);
  761.                                 }

  762.                                 credenziali.setCertificateStrictVerification(ServletUtils.isCheckBoxEnabled(tipoCredenzialiSSLVerificaTuttiICampi));
  763.                                 credenziali.setCnIssuer(cSelezionato.getCertificate().getIssuer().getCN());
  764.                                 credenziali.setCnSubject(cSelezionato.getCertificate().getSubject().getCN());
  765.                                 credenziali.setCertificate(cSelezionato.getCertificate().getCertificate().getEncoded());
  766.                             } else { // configurazione manuale
  767.                                 credenziali.setSubject(strutsBean.subjectSoggetto);
  768.                                 if(ServletUtils.isCheckBoxEnabled(tipoCredenzialiSSLConfigurazioneManualeSelfSigned)) {
  769.                                     credenziali.setIssuer(strutsBean.subjectSoggetto);
  770.                                 } else {
  771.                                     credenziali.setIssuer(issuerSoggetto);
  772.                                 }
  773.                             }
  774.                         }

  775.                         soggettoRegistro.addCredenziali(credenziali);
  776.                     }
  777.                     else{
  778.                         soggettoRegistro.getCredenzialiList().clear();
  779.                     }
  780.                 }
  781.             }

  782.             Connettore connettore = null;
  783.             if(soggettiCore.isRegistroServiziLocale()){
  784.                 connettore = new Connettore();
  785.                 connettore.setTipo(CostantiDB.CONNETTORE_TIPO_DISABILITATO);
  786.             }

  787.             singlePdD = strutsBean.singlePdD!=null && strutsBean.singlePdD.booleanValue();
  788.             if ( !singlePdD && soggettiCore.isRegistroServiziLocale() && !strutsBean.pdd.equals("-")) {

  789.                 PdDControlStation aPdD = pddCore.getPdDControlStation(strutsBean.pdd);
  790.                 int porta = aPdD.getPorta() <= 0 ? 80 : aPdD.getPorta();

  791.                 // nel caso in cui e' stata selezionato un nal
  792.                 // e la PdD e' di tipo operativo oppure non-operativo
  793.                 // allora setto come default il tipo HTTP
  794.                 // altrimenti il connettore e' disabilitato
  795.                 String tipoPdD = aPdD.getTipo();
  796.                 if ((tipoPdD != null) && (!strutsBean.singlePdD) && (tipoPdD.equals(PddTipologia.OPERATIVO.toString()) || tipoPdD.equals(PddTipologia.NONOPERATIVO.toString()))) {
  797.                     String ipPdd = aPdD.getIp();

  798.                     String url = aPdD.getProtocollo() + "://" + ipPdd + ":" + porta + "/" + soggettiCore.getSuffissoConnettoreAutomatico();
  799.                     url = url.replace(CostantiControlStation.PLACEHOLDER_SOGGETTO_ENDPOINT_CREAZIONE_AUTOMATICA,
  800.                             soggettiCore.getWebContextProtocolAssociatoTipoSoggetto(strutsBean.tipoprov));
  801.                     connettore.setTipo(CostantiDB.CONNETTORE_TIPO_HTTP);

  802.                     Property property = new Property();
  803.                     property.setNome(CostantiDB.CONNETTORE_HTTP_LOCATION);
  804.                     property.setValore(url);
  805.                     connettore.addProperty(property);
  806.                 }

  807.             }

  808.             if(soggettiCore.isRegistroServiziLocale()){
  809.                 soggettoRegistro.setConnettore(connettore);
  810.             }

  811.             // imposto soggettoConfig
  812.             soggettoConfig.setNome(strutsBean.nomeprov);
  813.             soggettoConfig.setTipo(strutsBean.tipoprov);
  814.             soggettoConfig.setDescrizione(strutsBean.descr);
  815.             soggettoConfig.setIdentificativoPorta(strutsBean.portadom);
  816.             soggettoConfig.setRouter(strutsBean.isRouter);
  817.             soggettoConfig.setSuperUser(userLogin);

  818.             //imposto properties custom
  819.             if(soggettoRegistro!=null) {
  820.                 soggettoRegistro.setProtocolPropertyList(ProtocolPropertiesUtils.toProtocolPropertiesRegistry(strutsBean.protocolProperties, strutsBean.consoleOperationType,null));
  821.             }


  822.             SoggettoCtrlStat sog = new SoggettoCtrlStat(soggettoRegistro, soggettoConfig);
  823.             // eseguo le operazioni
  824.             soggettiCore.performCreateOperation(userLogin, soggettiHelper.smista(), sog);

  825.             // cancello file temporanei
  826.             soggettiHelper.deleteBinaryProtocolPropertiesTmpFiles(strutsBean.protocolProperties);
  827.             soggettiHelper.deleteBinaryParameters(tipoCredenzialiSSLFileCertificato);

  828.             // Messaggio 'Please Copy'
  829.             if(secret) {
  830.                 soggettiHelper.setSecretPleaseCopy(secretPassword, secretUser, secretAppId, strutsBean.tipoauthSoggetto, OggettoDialogEnum.SOGGETTO, sog.getNome());
  831.             }
  832.                                    
  833.             // recupero la lista dei soggetti
  834.             ConsoleSearch ricerca = (ConsoleSearch) ServletUtils.getSearchObjectFromSession(request, session, ConsoleSearch.class);

  835.             if(soggettiCore.isSetSearchAfterAdd()) {
  836.                 soggettiCore.setSearchAfterAdd(Liste.SOGGETTI, soggettoConfig.getNome(), request, session, ricerca);
  837.             }
  838.            
  839.             // la lista dei soggetti del registro e' un sovrainsieme
  840.             // di quella di config
  841.             // cioe' ha piu informazioni, ma lo stesso numero di
  842.             // soggetti.
  843.             // quindi posso utilizzare solo quella
  844.             if(soggettiCore.isRegistroServiziLocale()){
  845.                 List<Soggetto> listaSoggettiRegistro = null;
  846.                 if(soggettiCore.isVisioneOggettiGlobale(userLogin)){
  847.                     listaSoggettiRegistro = soggettiCore.soggettiRegistroList(null, ricerca);
  848.                 }else{
  849.                     listaSoggettiRegistro = soggettiCore.soggettiRegistroList(userLogin, ricerca);
  850.                 }

  851.                 soggettiHelper.prepareSoggettiList(listaSoggettiRegistro, ricerca);
  852.             }
  853.             else{
  854.                 List<org.openspcoop2.core.config.Soggetto> listaSoggettiConfig = null;
  855.                 if(soggettiCore.isVisioneOggettiGlobale(userLogin)){
  856.                     listaSoggettiConfig = soggettiCore.soggettiList(null, ricerca);
  857.                 }else{
  858.                     listaSoggettiConfig = soggettiCore.soggettiList(userLogin, ricerca);
  859.                 }

  860.                 soggettiHelper.prepareSoggettiConfigList(listaSoggettiConfig, ricerca);
  861.             }

  862.             if(!pddCore.isPddEsterna(strutsBean.pdd)) {
  863.                 generalHelper = new GeneralHelper(session);
  864.                 gd = generalHelper.initGeneralData(request); // re-inizializzo per ricalcolare il menu in alto a destra
  865.             }

  866.             ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);

  867.             return ServletUtils.getStrutsForwardEditModeFinished(mapping, SoggettiCostanti.OBJECT_NAME_SOGGETTI, ForwardParams.ADD());

  868.         } catch (Exception e) {
  869.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  870.                     SoggettiCostanti.OBJECT_NAME_SOGGETTI, ForwardParams.ADD());
  871.         }
  872.     }
  873. }