SoggettiEndPoint.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.List;
  23. import java.util.Map;

  24. import javax.net.ssl.KeyManagerFactory;
  25. import javax.net.ssl.TrustManagerFactory;
  26. import javax.servlet.http.HttpServletRequest;
  27. import javax.servlet.http.HttpServletResponse;
  28. import javax.servlet.http.HttpSession;

  29. import org.apache.commons.lang.StringUtils;
  30. import org.apache.struts.action.Action;
  31. import org.apache.struts.action.ActionForm;
  32. import org.apache.struts.action.ActionForward;
  33. import org.apache.struts.action.ActionMapping;
  34. import org.openspcoop2.core.commons.Liste;
  35. import org.openspcoop2.core.config.constants.CostantiConfigurazione;
  36. import org.openspcoop2.core.constants.CostantiConnettori;
  37. import org.openspcoop2.core.constants.CostantiDB;
  38. import org.openspcoop2.core.constants.TipiConnettore;
  39. import org.openspcoop2.core.constants.TransferLengthModes;
  40. import org.openspcoop2.core.controllo_traffico.ConfigurazioneGenerale;
  41. import org.openspcoop2.core.registry.Connettore;
  42. import org.openspcoop2.core.registry.Soggetto;
  43. import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
  44. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  45. import org.openspcoop2.web.ctrlstat.costanti.ConnettoreServletType;
  46. import org.openspcoop2.web.ctrlstat.dao.SoggettoCtrlStat;
  47. import org.openspcoop2.web.ctrlstat.plugins.ExtendedConnettore;
  48. import org.openspcoop2.web.ctrlstat.plugins.servlet.ServletExtendedConnettoreUtils;
  49. import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
  50. import org.openspcoop2.web.ctrlstat.servlet.config.ConfigurazioneCore;
  51. import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoreStatusParams;
  52. import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriCostanti;
  53. import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriHelper;
  54. import org.openspcoop2.web.lib.mvc.Costanti;
  55. import org.openspcoop2.web.lib.mvc.DataElement;
  56. import org.openspcoop2.web.lib.mvc.DataElementType;
  57. import org.openspcoop2.web.lib.mvc.GeneralData;
  58. import org.openspcoop2.web.lib.mvc.PageData;
  59. import org.openspcoop2.web.lib.mvc.ServletUtils;
  60. import org.openspcoop2.web.lib.mvc.TipoOperazione;

  61. /**
  62.  * soggettiEndPoint
  63.  *
  64.  * @author Andrea Poli (apoli@link.it)
  65.  * @author Stefano Corallo (corallo@link.it)
  66.  * @author Sandra Giangrandi (sandra@link.it)
  67.  * @author $Author$
  68.  * @version $Rev$, $Date$
  69.  *
  70.  */
  71. public final class SoggettiEndPoint extends Action {

  72.     @Override
  73.     public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {

  74.         HttpSession session = request.getSession(true);

  75.         // Inizializzo PageData
  76.         PageData pd = new PageData();

  77.         GeneralHelper generalHelper = new GeneralHelper(session);

  78.         // Inizializzo GeneralData
  79.         GeneralData gd = generalHelper.initGeneralData(request);

  80.         try {

  81.             SoggettiHelper soggettiHelper = new SoggettiHelper(request, pd, session);
  82.            
  83.             String id = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_ID);
  84.             long idLong = Long.parseLong(id);
  85.                
  86.             String endpointtype = soggettiHelper.readEndPointType();
  87.             String tipoconn = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TIPO_PERSONALIZZATO);
  88.             String autenticazioneHttp = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_ENDPOINT_TYPE_ENABLE_HTTP);
  89.             String user = null;
  90.             String password = null;
  91.            
  92.             String connettoreDebug = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_DEBUG);
  93.            
  94.             // token policy
  95.             String autenticazioneTokenS = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TOKEN_POLICY_STATO);
  96.             boolean autenticazioneToken = ServletUtils.isCheckBoxEnabled(autenticazioneTokenS);
  97.             String tokenPolicy = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TOKEN_POLICY);
  98.             boolean forcePDND = false;
  99.             boolean forceOAuth = false;
  100.            
  101.             // proxy
  102.             String proxyEnabled = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_ENABLED);
  103.             String proxyHostname = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_HOSTNAME);
  104.             String proxyPort = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_PORT);
  105.             String proxyUsername = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_USERNAME);
  106.             String proxyPassword = soggettiHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_PASSWORD);
  107.            
  108.             // tempi risposta
  109.             String tempiRispostaEnabled = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TEMPI_RISPOSTA_REDEFINE);
  110.             String tempiRispostaConnectionTimeout = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TEMPI_RISPOSTA_CONNECTION_TIMEOUT);
  111.             String tempiRispostaReadTimeout = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TEMPI_RISPOSTA_READ_TIMEOUT);
  112.             String tempiRispostaTempoMedioRisposta = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TEMPI_RISPOSTA_TEMPO_MEDIO_RISPOSTA);
  113.            
  114.             // opzioni avanzate
  115.             String transferMode = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_OPZIONI_AVANZATE_TRANSFER_MODE);
  116.             String transferModeChunkSize = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_OPZIONI_AVANZATE_TRANSFER_CHUNK_SIZE);
  117.             String redirectMode = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_OPZIONI_AVANZATE_REDIRECT_MODE);
  118.             String redirectMaxHop = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_OPZIONI_AVANZATE_REDIRECT_MAX_HOP);
  119.             String opzioniAvanzate = ConnettoriHelper.getOpzioniAvanzate(soggettiHelper,transferMode, redirectMode);
  120.            
  121.             // http
  122.             String url = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_URL);
  123.             if(TipiConnettore.HTTP.toString().equals(endpointtype)){
  124.                 user = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_INVOCAZIONE_CREDENZIALI_AUTENTICAZIONE_USERNAME);
  125.                 password = soggettiHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_INVOCAZIONE_CREDENZIALI_AUTENTICAZIONE_PASSWORD);
  126.             }
  127.            
  128.             // api key
  129.             String autenticazioneApiKey = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_ENDPOINT_TYPE_ENABLE_API_KEY);
  130.             String apiKeyHeader = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_HEADER);
  131.             if(apiKeyHeader==null || StringUtils.isEmpty(apiKeyHeader)) {
  132.                 apiKeyHeader = CostantiConnettori.DEFAULT_HEADER_API_KEY;
  133.             }
  134.             String apiKeyValue = soggettiHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_VALUE);
  135.             String appIdHeader = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_APP_ID_HEADER);
  136.             if(appIdHeader==null || StringUtils.isEmpty(appIdHeader)) {
  137.                 appIdHeader = CostantiConnettori.DEFAULT_HEADER_APP_ID;
  138.             }
  139.             String appIdValue = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_APP_ID_VALUE);
  140.             String useOAS3NamesTmp = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_NOMI_OAS);
  141.             boolean useOAS3Names=true;
  142.             if(useOAS3NamesTmp!=null && StringUtils.isNotEmpty(useOAS3NamesTmp)) {
  143.                 useOAS3Names = ServletUtils.isCheckBoxEnabled(useOAS3NamesTmp);
  144.             }
  145.             else {
  146.                 useOAS3Names = soggettiHelper.isAutenticazioneApiKeyUseOAS3Names(apiKeyHeader, appIdHeader);
  147.             }
  148.             String useAppIdTmp = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_USE_APP_ID);
  149.             boolean useAppId=false;
  150.             if(useAppIdTmp!=null && StringUtils.isNotEmpty(useAppIdTmp)) {
  151.                 useAppId = ServletUtils.isCheckBoxEnabled(useAppIdTmp);
  152.             }
  153.             else {
  154.                 useAppId = soggettiHelper.isAutenticazioneApiKeyUseAppId(appIdValue);
  155.             }
  156.            
  157.             // jms
  158.             String nome = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_NOME_CODA);
  159.             String tipo = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_TIPO_CODA);
  160.             String initcont = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_INIT_CTX);
  161.             String urlpgk = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_URL_PKG);
  162.             String provurl = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_PROVIDER_URL);
  163.             String connfact = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_CONNECTION_FACTORY);
  164.             String sendas = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_TIPO_OGGETTO_JMS);
  165.             if(TipiConnettore.JMS.toString().equals(endpointtype)){
  166.                 user = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_USERNAME);
  167.                 password = soggettiHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_PASSWORD);
  168.             }
  169.            
  170.             // https
  171.             String httpsurl = url;
  172.             String httpstipologia = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_SSL_TYPE);
  173.             String httpshostverifyS = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_HOST_VERIFY);
  174.             boolean httpshostverify = ServletUtils.isCheckBoxEnabled(httpshostverifyS);
  175.             String httpsTrustVerifyCertS = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_VERIFY_CERTS );
  176.             boolean httpsTrustVerifyCert = ServletUtils.isCheckBoxEnabled(httpsTrustVerifyCertS);
  177.             String httpspath = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_STORE_LOCATION);
  178.             String httpstipo = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_STORE_TYPE);
  179.             String httpspwd = soggettiHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_STORE_PASSWORD);
  180.             String httpsalgoritmo = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_MANAGEMENT_ALGORITM);
  181.             String httpsstatoS = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_STATO);
  182.             boolean httpsstato = ServletUtils.isCheckBoxEnabled(httpsstatoS);
  183.             String httpskeystore = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEYSTORE_CLIENT_AUTH_MODE);
  184.             String httpspwdprivatekeytrust = soggettiHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_PASSWORD_PRIVATE_KEY_STORE);
  185.             String httpspathkey = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEY_STORE_LOCATION);
  186.             String httpstipokey = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEY_STORE_TYPE);
  187.             String httpspwdkey = soggettiHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEY_STORE_PASSWORD);
  188.             String httpspwdprivatekey = soggettiHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_PASSWORD_PRIVATE_KEY_KEYSTORE);
  189.             String httpsalgoritmokey = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEY_MANAGEMENT_ALGORITM);
  190.             String httpsKeyAlias = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_ALIAS_PRIVATE_KEY_KEYSTORE);
  191.             String httpsTrustStoreCRLs = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_STORE_CRL);
  192.             String httpsTrustStoreOCSPPolicy = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_STORE_OCSP_POLICY);
  193.             String httpsKeyStoreBYOKPolicy = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEY_STORE_BYOK_POLICY);
  194.             if(TipiConnettore.HTTPS.toString().equals(endpointtype)){
  195.                 user = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_INVOCAZIONE_CREDENZIALI_AUTENTICAZIONE_USERNAME);
  196.                 password = soggettiHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_INVOCAZIONE_CREDENZIALI_AUTENTICAZIONE_PASSWORD);
  197.             }
  198.            
  199.             // file
  200.             String requestOutputFileName = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_FILE_NAME);
  201.             String requestOutputFileNamePermissions = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_FILE_NAME_PERMISSIONS);
  202.             String requestOutputFileNameHeaders = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_FILE_NAME_HEADERS);
  203.             String requestOutputFileNameHeadersPermissions = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_FILE_NAME_HEADERS_PERMISSIONS);
  204.             String requestOutputParentDirCreateIfNotExists = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_AUTO_CREATE_DIR);
  205.             String requestOutputOverwriteIfExists = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_OVERWRITE_FILE_NAME);
  206.             String responseInputMode = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_RESPONSE_INPUT_MODE);
  207.             String responseInputFileName = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_RESPONSE_INPUT_FILE_NAME);
  208.             String responseInputFileNameHeaders = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_RESPONSE_INPUT_FILE_NAME_HEADERS);
  209.             String responseInputDeleteAfterRead = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_RESPONSE_INPUT_FILE_NAME_DELETE_AFTER_READ);
  210.             String responseInputWaitTime = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_RESPONSE_INPUT_WAIT_TIME);

  211.             // status
  212.             ConnettoreStatusParams connettoreStatusParams = ConnettoreStatusParams.fillFrom(soggettiHelper);
  213.                        
  214.             boolean postBackViaPost = true;
  215.            
  216.             // Preparo il menu
  217.             soggettiHelper.makeMenu();

  218.             // Prendo nome, tipo e pdd dal db
  219.             SoggettiCore soggettiCore = new SoggettiCore();        
  220.            
  221.             SoggettoCtrlStat scs = soggettiCore.getSoggettoCtrlStat(idLong);
  222.             Soggetto ss = scs.getSoggettoReg();
  223.             org.openspcoop2.core.config.Soggetto ssconf = scs.getSoggettoConf();
  224.             String nomeprov = scs.getNome();
  225.             String tipoprov = scs.getTipo();
  226.             String protocollo = soggettiCore.getProtocolloAssociatoTipoSoggetto(tipoprov);
  227.             String tmpTitle = soggettiHelper.getLabelNomeSoggetto(protocollo, tipoprov , nomeprov);
  228.             Connettore c = ss.getConnettore();
  229.            
  230.             Boolean isConnettoreCustomUltimaImmagineSalvata = c.getCustom();

  231.             List<ExtendedConnettore> listExtendedConnettore =
  232.                     ServletExtendedConnettoreUtils.getExtendedConnettore(c, ConnettoreServletType.SOGGETTO, soggettiHelper,
  233.                             (endpointtype==null), endpointtype); // uso endpointtype per capire se è la prima volta che entro
  234.            
  235.             // Se idhid = null, devo visualizzare la pagina per la
  236.             // modifica dati
  237.             if(soggettiHelper.isEditModeInProgress()){
  238.                
  239.                 // setto la barra del titolo
  240.                 ServletUtils.setPageDataTitle_ServletChange(pd, SoggettiCostanti.LABEL_SOGGETTI,
  241.                         SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST, "Connettore di " + tmpTitle);
  242.            
  243.                 if (endpointtype == null) {
  244.                     if ( (c.getCustom()!=null && c.getCustom()) &&
  245.                             !c.getTipo().equals(TipiConnettore.HTTPS.toString()) &&
  246.                             !c.getTipo().equals(TipiConnettore.FILE.toString()) &&
  247.                             !c.getTipo().equals(TipiConnettore.STATUS.toString())) {
  248.                         endpointtype = TipiConnettore.CUSTOM.toString();
  249.                         tipoconn = c.getTipo();
  250.                     } else
  251.                         endpointtype = c.getTipo();
  252.                 }
  253.                 Map<String, String> props = c.getProperties();
  254.                
  255.                 if(connettoreDebug==null && props!=null){
  256.                     String v = props.get(CostantiDB.CONNETTORE_DEBUG);
  257.                     if(v!=null){
  258.                         if("true".equals(v)){
  259.                             connettoreDebug = Costanti.CHECK_BOX_ENABLED;
  260.                         }
  261.                         else{
  262.                             connettoreDebug = Costanti.CHECK_BOX_DISABLED;
  263.                         }
  264.                     }
  265.                 }
  266.                
  267.                 if(proxyEnabled==null && props!=null){
  268.                     String v = props.get(CostantiDB.CONNETTORE_PROXY_TYPE);
  269.                     if(v!=null && !"".equals(v)){
  270.                         proxyEnabled = Costanti.CHECK_BOX_ENABLED_TRUE;
  271.                        
  272.                         // raccolgo anche altre proprietà
  273.                         v = props.get(CostantiDB.CONNETTORE_PROXY_HOSTNAME);
  274.                         if(v!=null && !"".equals(v)){
  275.                             proxyHostname = v.trim();
  276.                         }
  277.                         v = props.get(CostantiDB.CONNETTORE_PROXY_PORT);
  278.                         if(v!=null && !"".equals(v)){
  279.                             proxyPort = v.trim();
  280.                         }
  281.                         v = props.get(CostantiDB.CONNETTORE_PROXY_USERNAME);
  282.                         if(v!=null && !"".equals(v)){
  283.                             proxyUsername = v.trim();
  284.                         }
  285.                         v = props.get(CostantiDB.CONNETTORE_PROXY_PASSWORD);
  286.                         if(v!=null && !"".equals(v)){
  287.                             proxyPassword = v.trim();
  288.                         }
  289.                     }
  290.                 }
  291.                
  292.                 if(tempiRispostaEnabled == null ||
  293.                         tempiRispostaConnectionTimeout==null || "".equals(tempiRispostaConnectionTimeout)
  294.                         ||
  295.                         tempiRispostaReadTimeout==null || "".equals(tempiRispostaReadTimeout)
  296.                         ||
  297.                         tempiRispostaTempoMedioRisposta==null || "".equals(tempiRispostaTempoMedioRisposta) ){
  298.                    
  299.                     ConfigurazioneCore configCore = new ConfigurazioneCore(soggettiCore);
  300.                     ConfigurazioneGenerale configGenerale = configCore.getConfigurazioneControlloTraffico();
  301.                    
  302.                     if( props!=null ) {
  303.                         if(tempiRispostaConnectionTimeout==null || "".equals(tempiRispostaConnectionTimeout) ) {
  304.                             String v = props.get(CostantiDB.CONNETTORE_CONNECTION_TIMEOUT);
  305.                             if(v!=null && !"".equals(v)){
  306.                                 tempiRispostaConnectionTimeout = v.trim();
  307.                                 tempiRispostaEnabled =  Costanti.CHECK_BOX_ENABLED_TRUE;
  308.                             }
  309.                             else {
  310.                                 tempiRispostaConnectionTimeout = configGenerale.getTempiRispostaFruizione().getConnectionTimeout().intValue()+"";
  311.                             }
  312.                         }
  313.                         if(tempiRispostaReadTimeout==null || "".equals(tempiRispostaReadTimeout) ) {
  314.                             String v = props.get(CostantiDB.CONNETTORE_READ_CONNECTION_TIMEOUT);
  315.                             if(v!=null && !"".equals(v)){
  316.                                 tempiRispostaReadTimeout = v.trim();
  317.                                 tempiRispostaEnabled =  Costanti.CHECK_BOX_ENABLED_TRUE;
  318.                             }
  319.                             else {
  320.                                 tempiRispostaReadTimeout = configGenerale.getTempiRispostaFruizione().getReadTimeout().intValue()+"";
  321.                             }
  322.                         }
  323.                         if(tempiRispostaTempoMedioRisposta==null || "".equals(tempiRispostaTempoMedioRisposta) ) {
  324.                             String v = props.get(CostantiDB.CONNETTORE_TEMPO_MEDIO_RISPOSTA);
  325.                             if(v!=null && !"".equals(v)){
  326.                                 tempiRispostaTempoMedioRisposta = v.trim();
  327.                                 tempiRispostaEnabled =  Costanti.CHECK_BOX_ENABLED_TRUE;
  328.                             }
  329.                             else {
  330.                                 tempiRispostaTempoMedioRisposta = configGenerale.getTempiRispostaFruizione().getTempoMedioRisposta().intValue()+"";
  331.                             }
  332.                         }
  333.                     }
  334.                     else {
  335.                         if(tempiRispostaConnectionTimeout==null || "".equals(tempiRispostaConnectionTimeout) ) {
  336.                             tempiRispostaConnectionTimeout = configGenerale.getTempiRispostaFruizione().getConnectionTimeout().intValue()+"";
  337.                         }
  338.                         if(tempiRispostaReadTimeout==null || "".equals(tempiRispostaReadTimeout) ) {
  339.                             tempiRispostaReadTimeout = configGenerale.getTempiRispostaFruizione().getReadTimeout().intValue()+"";
  340.                         }
  341.                         if(tempiRispostaTempoMedioRisposta==null || "".equals(tempiRispostaTempoMedioRisposta) ) {
  342.                             tempiRispostaTempoMedioRisposta = configGenerale.getTempiRispostaFruizione().getTempoMedioRisposta().intValue()+"";
  343.                         }
  344.                     }
  345.                 }
  346.                
  347.                 if(transferMode==null && props!=null){
  348.                     String v = props.get(CostantiDB.CONNETTORE_HTTP_DATA_TRANSFER_MODE);
  349.                     if(v!=null && !"".equals(v)){
  350.                        
  351.                         transferMode = v.trim();
  352.                        
  353.                         if(TransferLengthModes.TRANSFER_ENCODING_CHUNKED.getNome().equals(transferMode)){
  354.                             // raccolgo anche altra proprietà correlata
  355.                             v = props.get(CostantiDB.CONNETTORE_HTTP_DATA_TRANSFER_MODE_CHUNK_SIZE);
  356.                             if(v!=null && !"".equals(v)){
  357.                                 transferModeChunkSize = v.trim();
  358.                             }
  359.                         }
  360.                        
  361.                     }
  362.                 }
  363.                
  364.                 if(redirectMode==null && props!=null){
  365.                     String v = props.get(CostantiDB.CONNETTORE_HTTP_REDIRECT_FOLLOW);
  366.                     if(v!=null && !"".equals(v)){
  367.                        
  368.                         if("true".equalsIgnoreCase(v.trim()) || CostantiConfigurazione.ABILITATO.getValue().equalsIgnoreCase(v.trim())){
  369.                             redirectMode = CostantiConfigurazione.ABILITATO.getValue();
  370.                         }
  371.                         else{
  372.                             redirectMode = CostantiConfigurazione.DISABILITATO.getValue();
  373.                         }                  
  374.                        
  375.                         if(CostantiConfigurazione.ABILITATO.getValue().equals(redirectMode)){
  376.                             // raccolgo anche altra proprietà correlata
  377.                             v = props.get(CostantiDB.CONNETTORE_HTTP_REDIRECT_MAX_HOP);
  378.                             if(v!=null && !"".equals(v)){
  379.                                 redirectMaxHop = v.trim();
  380.                             }
  381.                         }
  382.                        
  383.                     }
  384.                 }
  385.                
  386.                 if(tokenPolicy==null && props!=null){
  387.                     String v = props.get(CostantiDB.CONNETTORE_TOKEN_POLICY);
  388.                     if(v!=null && !"".equals(v)){
  389.                         tokenPolicy = v;
  390.                         autenticazioneToken = true;
  391.                     }
  392.                 }
  393.                
  394.                 opzioniAvanzate = ConnettoriHelper.getOpzioniAvanzate(soggettiHelper,transferMode, redirectMode);
  395.                
  396.                 if (url == null) {
  397.                     url = props.get(CostantiDB.CONNETTORE_HTTP_LOCATION);
  398.                 }
  399.                
  400.                 if (nome == null) {
  401.                     nome = props.get(CostantiDB.CONNETTORE_JMS_NOME);
  402.                     tipo = props.get(CostantiDB.CONNETTORE_JMS_TIPO);
  403.                     String userTmp = props.get(CostantiDB.CONNETTORE_USER);
  404.                     if(userTmp!=null && !"".equals(userTmp)){
  405.                         user = userTmp;
  406.                     }
  407.                     String passwordTmp = props.get(CostantiDB.CONNETTORE_PWD);
  408.                     if(passwordTmp!=null && !"".equals(passwordTmp)){
  409.                         password = passwordTmp;
  410.                     }
  411.                     initcont = props.get(CostantiDB.CONNETTORE_JMS_CONTEXT_JAVA_NAMING_FACTORY_INITIAL);
  412.                     urlpgk = props.get(CostantiDB.CONNETTORE_JMS_CONTEXT_JAVA_NAMING_FACTORY_URL_PKG);
  413.                     provurl = props.get(CostantiDB.CONNETTORE_JMS_CONTEXT_JAVA_NAMING_PROVIDER_URL);
  414.                     connfact = props.get(CostantiDB.CONNETTORE_JMS_CONNECTION_FACTORY);
  415.                     sendas = props.get(CostantiDB.CONNETTORE_JMS_SEND_AS);
  416.                 }
  417.                
  418.                 autenticazioneHttp = soggettiHelper.getAutenticazioneHttp(autenticazioneHttp, endpointtype, user);
  419.                
  420.                 if(autenticazioneApiKey==null || StringUtils.isEmpty(autenticazioneApiKey)) {
  421.                     apiKeyHeader = props.get(CostantiDB.CONNETTORE_APIKEY_HEADER);
  422.                     apiKeyValue = props.get(CostantiDB.CONNETTORE_APIKEY);
  423.                     appIdHeader = props.get(CostantiDB.CONNETTORE_APIKEY_APPID_HEADER);
  424.                     appIdValue = props.get(CostantiDB.CONNETTORE_APIKEY_APPID);
  425.                    
  426.                     autenticazioneApiKey = soggettiHelper.getAutenticazioneApiKey(autenticazioneApiKey, endpointtype, apiKeyValue);
  427.                     if(ServletUtils.isCheckBoxEnabled(autenticazioneApiKey)) {
  428.                         useOAS3Names = soggettiHelper.isAutenticazioneApiKeyUseOAS3Names(apiKeyHeader, appIdHeader);
  429.                         useAppId = soggettiHelper.isAutenticazioneApiKeyUseAppId(appIdValue);
  430.                     }
  431.                     else {
  432.                         apiKeyValue=null;
  433.                         apiKeyHeader=null;
  434.                         appIdHeader=null;
  435.                         appIdValue=null;
  436.                     }
  437.                 }
  438.                
  439.                 if (httpstipologia == null) {
  440.                     httpsurl = props.get(CostantiDB.CONNETTORE_HTTPS_LOCATION);
  441.                     httpstipologia = props.get(CostantiDB.CONNETTORE_HTTPS_SSL_TYPE);
  442.                     httpshostverifyS = props.get(CostantiDB.CONNETTORE_HTTPS_HOSTNAME_VERIFIER);
  443.                     if(httpshostverifyS!=null){
  444.                         httpshostverify = Boolean.valueOf(httpshostverifyS);
  445.                     }
  446.                     httpsTrustVerifyCertS = props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_ALL_CERTS);
  447.                     if(httpsTrustVerifyCertS!=null){
  448.                         httpsTrustVerifyCert = !Boolean.valueOf(httpsTrustVerifyCertS);
  449.                     }
  450.                     else {
  451.                         httpsTrustVerifyCert = true; // backward compatibility
  452.                     }
  453.                     httpspath = props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_STORE_LOCATION);
  454.                     httpstipo = props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_STORE_TYPE);
  455.                     httpspwd = props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_STORE_PASSWORD);
  456.                     httpsalgoritmo = props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_MANAGEMENT_ALGORITM);
  457.                     httpspwdprivatekeytrust = props.get(CostantiDB.CONNETTORE_HTTPS_KEY_PASSWORD);
  458.                     httpspathkey = props.get(CostantiDB.CONNETTORE_HTTPS_KEY_STORE_LOCATION);
  459.                     httpstipokey = props.get(CostantiDB.CONNETTORE_HTTPS_KEY_STORE_TYPE);
  460.                     httpspwdkey = props.get(CostantiDB.CONNETTORE_HTTPS_KEY_STORE_PASSWORD);
  461.                     httpspwdprivatekey = props.get(CostantiDB.CONNETTORE_HTTPS_KEY_PASSWORD);
  462.                     httpsalgoritmokey = props.get(CostantiDB.CONNETTORE_HTTPS_KEY_MANAGEMENT_ALGORITM);
  463.                     httpsKeyAlias = props.get(CostantiDB.CONNETTORE_HTTPS_KEY_ALIAS);
  464.                     httpsTrustStoreCRLs = props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_STORE_CRLS);
  465.                     httpsTrustStoreOCSPPolicy = props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_STORE_OCSP_POLICY);
  466.                     httpsKeyStoreBYOKPolicy = props.get(CostantiDB.CONNETTORE_HTTPS_KEY_STORE_BYOK_POLICY);
  467.                     if (httpspathkey == null) {
  468.                         httpsstato = false;
  469.                         httpskeystore = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_KEYSTORE_CLIENT_AUTH_MODE_DEFAULT;
  470.                     } else {
  471.                         httpsstato = true;
  472.                         if (httpspathkey.equals(httpspath) &&
  473.                                 httpstipokey.equals(httpstipo) &&
  474.                                 (
  475.                                     (httpspwdkey!=null && httpspwdkey.equals(httpspwd))
  476.                                     ||
  477.                                     (httpspwdkey==null && httpspwd==null)
  478.                                 )
  479.                             )
  480.                             httpskeystore = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_KEYSTORE_CLIENT_AUTH_MODE_DEFAULT;
  481.                         else
  482.                             httpskeystore = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_KEYSTORE_CLIENT_AUTH_MODE_RIDEFINISCI;
  483.                     }
  484.                 }
  485.                
  486.                 // default
  487.                 if(httpsalgoritmo==null || "".equals(httpsalgoritmo)){
  488.                     httpsalgoritmo = TrustManagerFactory.getDefaultAlgorithm();
  489.                 }
  490.                 if(httpsalgoritmokey==null || "".equals(httpsalgoritmokey)){
  491.                     httpsalgoritmokey = KeyManagerFactory.getDefaultAlgorithm();
  492.                 }
  493.                 if(httpstipologia==null || "".equals(httpstipologia)){
  494.                     httpstipologia = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_TYPE;
  495.                 }
  496.                 if(httpshostverifyS==null || "".equals(httpshostverifyS)){
  497.                     httpshostverifyS = Costanti.CHECK_BOX_ENABLED_TRUE;
  498.                     httpshostverify = ServletUtils.isCheckBoxEnabled(httpshostverifyS);
  499.                 }
  500.                 if(httpsTrustVerifyCertS==null || "".equals(httpsTrustVerifyCertS)){
  501.                     httpsTrustVerifyCertS = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_TRUST_VERIFY_CERTS ? Costanti.CHECK_BOX_ENABLED_TRUE : Costanti.CHECK_BOX_DISABLED;
  502.                     httpsTrustVerifyCert = ServletUtils.isCheckBoxEnabled(httpsTrustVerifyCertS);
  503.                 }

  504.                 // file
  505.                 if(responseInputMode==null && props!=null){
  506.                    
  507.                     requestOutputFileName = props.get(CostantiDB.CONNETTORE_FILE_REQUEST_OUTPUT_FILE);  
  508.                     requestOutputFileNamePermissions = props.get(CostantiDB.CONNETTORE_FILE_REQUEST_OUTPUT_FILE_PERMISSIONS);
  509.                     requestOutputFileNameHeaders = props.get(CostantiDB.CONNETTORE_FILE_REQUEST_OUTPUT_FILE_HEADERS);  
  510.                     requestOutputFileNameHeadersPermissions = props.get(CostantiDB.CONNETTORE_FILE_REQUEST_OUTPUT_FILE_HEADERS_PERMISSIONS);
  511.                     String v = props.get(CostantiDB.CONNETTORE_FILE_REQUEST_OUTPUT_AUTO_CREATE_DIR);
  512.                     if(v!=null && !"".equals(v) &&
  513.                         ("true".equalsIgnoreCase(v) || CostantiConfigurazione.ABILITATO.getValue().equalsIgnoreCase(v) )
  514.                         ){
  515.                         requestOutputParentDirCreateIfNotExists = Costanti.CHECK_BOX_ENABLED_TRUE;
  516.                     }                  
  517.                     v = props.get(CostantiDB.CONNETTORE_FILE_REQUEST_OUTPUT_OVERWRITE_FILE);
  518.                     if(v!=null && !"".equals(v) &&
  519.                         ("true".equalsIgnoreCase(v) || CostantiConfigurazione.ABILITATO.getValue().equalsIgnoreCase(v) )
  520.                         ){
  521.                         requestOutputOverwriteIfExists = Costanti.CHECK_BOX_ENABLED_TRUE;
  522.                     }  
  523.                    
  524.                     v = props.get(CostantiDB.CONNETTORE_FILE_RESPONSE_INPUT_MODE);
  525.                     if(v!=null && !"".equals(v) &&
  526.                         ("true".equalsIgnoreCase(v) || CostantiConfigurazione.ABILITATO.getValue().equalsIgnoreCase(v) )
  527.                         ){
  528.                         responseInputMode = CostantiConfigurazione.ABILITATO.getValue();
  529.                     }
  530.                     if(CostantiConfigurazione.ABILITATO.getValue().equals(responseInputMode)){                      
  531.                         responseInputFileName = props.get(CostantiDB.CONNETTORE_FILE_RESPONSE_INPUT_FILE);
  532.                         responseInputFileNameHeaders = props.get(CostantiDB.CONNETTORE_FILE_RESPONSE_INPUT_FILE_HEADERS);
  533.                         v = props.get(CostantiDB.CONNETTORE_FILE_RESPONSE_INPUT_FILE_DELETE_AFTER_READ);
  534.                         if(v!=null && !"".equals(v) &&
  535.                             ("true".equalsIgnoreCase(v) || CostantiConfigurazione.ABILITATO.getValue().equalsIgnoreCase(v) )
  536.                             ){
  537.                             responseInputDeleteAfterRead = Costanti.CHECK_BOX_ENABLED_TRUE;
  538.                         }                      
  539.                         responseInputWaitTime = props.get(CostantiDB.CONNETTORE_FILE_RESPONSE_INPUT_WAIT_TIME);                    
  540.                     }
  541.                    
  542.                 }
  543.                
  544.                 // preparo i campi
  545.                 List<DataElement> dati = new ArrayList<>();

  546.                 dati.add(ServletUtils.getDataElementForEditModeFinished());
  547.                
  548.                 DataElement de = new DataElement();
  549.                 de.setLabel(ConnettoriCostanti.PARAMETRO_CONNETTORE_ID);
  550.                 de.setValue(id);
  551.                 de.setType(DataElementType.HIDDEN);
  552.                 de.setName(ConnettoriCostanti.PARAMETRO_CONNETTORE_ID);
  553.                 dati.add(de);

  554.                 dati = soggettiHelper.addEndPointToDati(dati, null, connettoreDebug, endpointtype, autenticazioneHttp, null,
  555.                         url, nome,
  556.                         tipo, user, password, initcont, urlpgk, provurl,
  557.                         connfact, sendas, SoggettiCostanti.OBJECT_NAME_SOGGETTI,TipoOperazione.CHANGE,
  558.                         httpsurl, httpstipologia, httpshostverify,
  559.                         httpsTrustVerifyCert, httpspath, httpstipo, httpspwd,
  560.                         httpsalgoritmo, httpsstato, httpskeystore,
  561.                         httpspwdprivatekeytrust, httpspathkey,
  562.                         httpstipokey, httpspwdkey,
  563.                         httpspwdprivatekey, httpsalgoritmokey,
  564.                         httpsKeyAlias, httpsTrustStoreCRLs, httpsTrustStoreOCSPPolicy, httpsKeyStoreBYOKPolicy,
  565.                         tipoconn, SoggettiCostanti.SERVLET_NAME_SOGGETTI_ENDPOINT, id, nomeprov,
  566.                         tipoprov, null, null, null, null, null, true,
  567.                         isConnettoreCustomUltimaImmagineSalvata,
  568.                         proxyEnabled, proxyHostname, proxyPort, proxyUsername, proxyPassword,
  569.                         tempiRispostaEnabled, tempiRispostaConnectionTimeout, tempiRispostaReadTimeout, tempiRispostaTempoMedioRisposta,
  570.                         opzioniAvanzate, transferMode, transferModeChunkSize, redirectMode, redirectMaxHop,
  571.                         requestOutputFileName, requestOutputFileNamePermissions, requestOutputFileNameHeaders, requestOutputFileNameHeadersPermissions,
  572.                         requestOutputParentDirCreateIfNotExists,requestOutputOverwriteIfExists,
  573.                         responseInputMode, responseInputFileName, responseInputFileNameHeaders, responseInputDeleteAfterRead, responseInputWaitTime,
  574.                         autenticazioneToken,tokenPolicy, forcePDND, forceOAuth,
  575.                         listExtendedConnettore, false,
  576.                         protocollo, false, false
  577.                         , false, false, null, null,
  578.                         autenticazioneApiKey, useOAS3Names, useAppId, apiKeyHeader, apiKeyValue, appIdHeader, appIdValue,
  579.                         connettoreStatusParams,
  580.                         postBackViaPost
  581.                         );

  582.                 pd.setDati(dati);

  583.                 ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  584.                
  585.                 return ServletUtils.getStrutsForwardEditModeInProgress(mapping, SoggettiCostanti.OBJECT_NAME_SOGGETTI, SoggettiCostanti.TIPO_OPERAZIONE_ENDPOINT);
  586.             }

  587.             // Controlli sui campi immessi
  588.             boolean isOk = soggettiHelper.soggettiEndPointCheckData(TipoOperazione.CHANGE,listExtendedConnettore,tipoprov,nomeprov);
  589.             if (!isOk) {
  590.                
  591.                 // setto la barra del titolo
  592.                 ServletUtils.setPageDataTitle_ServletChange(pd, SoggettiCostanti.LABEL_SOGGETTI,
  593.                         SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST, "Connettore di " + tmpTitle);

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

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

  597.                 DataElement de = new DataElement();
  598.                 de.setLabel(ConnettoriCostanti.PARAMETRO_CONNETTORE_ID);
  599.                 de.setValue(id);
  600.                 de.setType(DataElementType.HIDDEN);
  601.                 de.setName(ConnettoriCostanti.PARAMETRO_CONNETTORE_ID);
  602.                 dati.add(de);

  603.                 dati = soggettiHelper.addEndPointToDati(dati, null, connettoreDebug, endpointtype, autenticazioneHttp, null,
  604.                         url, nome,
  605.                         tipo, user, password, initcont, urlpgk, provurl,
  606.                         connfact, sendas, SoggettiCostanti.OBJECT_NAME_SOGGETTI,TipoOperazione.CHANGE,
  607.                         httpsurl, httpstipologia, httpshostverify,
  608.                         httpsTrustVerifyCert, httpspath, httpstipo, httpspwd,
  609.                         httpsalgoritmo, httpsstato, httpskeystore,
  610.                         httpspwdprivatekeytrust, httpspathkey,
  611.                         httpstipokey, httpspwdkey,
  612.                         httpspwdprivatekey, httpsalgoritmokey,
  613.                         httpsKeyAlias, httpsTrustStoreCRLs, httpsTrustStoreOCSPPolicy, httpsKeyStoreBYOKPolicy,
  614.                         tipoconn, SoggettiCostanti.SERVLET_NAME_SOGGETTI_ENDPOINT, id, nomeprov,
  615.                         tipoprov, null, null, null, null, null, true,
  616.                         isConnettoreCustomUltimaImmagineSalvata,
  617.                         proxyEnabled, proxyHostname, proxyPort, proxyUsername, proxyPassword,
  618.                         tempiRispostaEnabled, tempiRispostaConnectionTimeout, tempiRispostaReadTimeout, tempiRispostaTempoMedioRisposta,
  619.                         opzioniAvanzate, transferMode, transferModeChunkSize, redirectMode, redirectMaxHop,
  620.                         requestOutputFileName, requestOutputFileNamePermissions, requestOutputFileNameHeaders, requestOutputFileNameHeadersPermissions,
  621.                         requestOutputParentDirCreateIfNotExists,requestOutputOverwriteIfExists,
  622.                         responseInputMode, responseInputFileName, responseInputFileNameHeaders, responseInputDeleteAfterRead, responseInputWaitTime,
  623.                         autenticazioneToken,tokenPolicy, forcePDND, forceOAuth,
  624.                         listExtendedConnettore, false,
  625.                         protocollo, false, false
  626.                         , false, false, null, null,
  627.                         autenticazioneApiKey, useOAS3Names, useAppId, apiKeyHeader, apiKeyValue, appIdHeader, appIdValue,
  628.                         connettoreStatusParams,
  629.                         postBackViaPost
  630.                         );

  631.                 pd.setDati(dati);

  632.                 ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  633.                
  634.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping, SoggettiCostanti.OBJECT_NAME_SOGGETTI, SoggettiCostanti.TIPO_OPERAZIONE_ENDPOINT);
  635.             }

  636.             // Modifico i dati del soggetto nel db
  637.             String oldConnT = c.getTipo();
  638.             if ((c.getCustom()!=null && c.getCustom()) &&
  639.                     !c.getTipo().equals(TipiConnettore.HTTPS.toString()) &&
  640.                     !c.getTipo().equals(TipiConnettore.FILE.toString()) &&
  641.                     !c.getTipo().equals(TipiConnettore.STATUS.toString()))
  642.                 oldConnT = TipiConnettore.CUSTOM.toString();
  643.             soggettiHelper.fillConnettore(c, connettoreDebug, endpointtype, oldConnT, tipoconn, url, nome, tipo, user,
  644.                     password, initcont, urlpgk, provurl, connfact, sendas,
  645.                     httpsurl, httpstipologia, httpshostverify,
  646.                     httpsTrustVerifyCert, httpspath, httpstipo, httpspwd, httpsalgoritmo, httpsstato,
  647.                     httpskeystore, httpspwdprivatekeytrust, httpspathkey,
  648.                     httpstipokey, httpspwdkey,
  649.                     httpspwdprivatekey, httpsalgoritmokey,
  650.                     httpsKeyAlias, httpsTrustStoreCRLs, httpsTrustStoreOCSPPolicy, httpsKeyStoreBYOKPolicy,
  651.                     proxyEnabled, proxyHostname, proxyPort, proxyUsername, proxyPassword,
  652.                     tempiRispostaEnabled, tempiRispostaConnectionTimeout, tempiRispostaReadTimeout, tempiRispostaTempoMedioRisposta,
  653.                     opzioniAvanzate, transferMode, transferModeChunkSize, redirectMode, redirectMaxHop,
  654.                     requestOutputFileName, requestOutputFileNamePermissions, requestOutputFileNameHeaders, requestOutputFileNameHeadersPermissions,
  655.                     requestOutputParentDirCreateIfNotExists,requestOutputOverwriteIfExists,
  656.                     responseInputMode, responseInputFileName, responseInputFileNameHeaders, responseInputDeleteAfterRead, responseInputWaitTime,
  657.                     tokenPolicy,
  658.                     apiKeyHeader, apiKeyValue, appIdHeader, appIdValue,
  659.                     connettoreStatusParams,
  660.                     listExtendedConnettore);
  661.             ss.setConnettore(c);
  662.             SoggettoCtrlStat newCsc = new SoggettoCtrlStat(ss, ssconf);

  663.             String userLogin = ServletUtils.getUserLoginFromSession(session);
  664.            
  665.             soggettiCore.performUpdateOperation(userLogin, soggettiHelper.smista(), newCsc);

  666.             // Preparo la lista
  667.             ConsoleSearch ricerca = (ConsoleSearch) ServletUtils.getSearchObjectFromSession(request, session, ConsoleSearch.class);
  668.            

  669.             int idLista = Liste.SOGGETTI;
  670.             ricerca = soggettiHelper.checkSearchParameters(idLista, ricerca);
  671.             if(soggettiCore.isRegistroServiziLocale()){
  672.                 List<Soggetto> lista = null;
  673.                 if(soggettiCore.isVisioneOggettiGlobale(userLogin)){
  674.                     lista = soggettiCore.soggettiRegistroList(null, ricerca);
  675.                 }else{
  676.                     lista = soggettiCore.soggettiRegistroList(userLogin, ricerca);
  677.                 }
  678.                 soggettiHelper.prepareSoggettiList(lista, ricerca);
  679.             }
  680.             else{
  681.                 List<org.openspcoop2.core.config.Soggetto> lista = null;
  682.                 if(soggettiCore.isVisioneOggettiGlobale(userLogin)){
  683.                     lista = soggettiCore.soggettiList(null, ricerca);
  684.                 }else{
  685.                     lista = soggettiCore.soggettiList(userLogin, ricerca);
  686.                 }
  687.                 soggettiHelper.prepareSoggettiConfigList(lista, ricerca);
  688.             }
  689.            
  690.             ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  691.            
  692.             return ServletUtils.getStrutsForwardEditModeFinished(mapping, SoggettiCostanti.OBJECT_NAME_SOGGETTI, SoggettiCostanti.TIPO_OPERAZIONE_ENDPOINT);

  693.         } catch (Exception e) {
  694.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  695.                     SoggettiCostanti.OBJECT_NAME_SOGGETTI,SoggettiCostanti.TIPO_OPERAZIONE_ENDPOINT);
  696.         }
  697.     }

  698. }