PorteDelegateConnettoreDefault.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.pd;

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

  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.CoreException;
  35. import org.openspcoop2.core.commons.Filtri;
  36. import org.openspcoop2.core.commons.Liste;
  37. import org.openspcoop2.core.config.PortaDelegata;
  38. import org.openspcoop2.core.config.driver.DriverConfigurazioneNotFound;
  39. import org.openspcoop2.core.config.utils.UpdateProprietaOggetto;
  40. import org.openspcoop2.core.constants.CostantiConnettori;
  41. import org.openspcoop2.core.constants.TipiConnettore;
  42. import org.openspcoop2.core.controllo_traffico.ConfigurazioneGenerale;
  43. import org.openspcoop2.core.id.IDPortaDelegata;
  44. import org.openspcoop2.core.id.IDServizio;
  45. import org.openspcoop2.core.id.IDSoggetto;
  46. import org.openspcoop2.core.mapping.MappingFruizionePortaDelegata;
  47. import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
  48. import org.openspcoop2.core.registry.ConfigurazioneServizioAzione;
  49. import org.openspcoop2.core.registry.Connettore;
  50. import org.openspcoop2.core.registry.Fruitore;
  51. import org.openspcoop2.core.registry.beans.AccordoServizioParteComuneSintetico;
  52. import org.openspcoop2.core.registry.driver.IDAccordoFactory;
  53. import org.openspcoop2.core.registry.driver.IDServizioFactory;
  54. import org.openspcoop2.message.constants.ServiceBinding;
  55. import org.openspcoop2.utils.BooleanNullable;
  56. import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
  57. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  58. import org.openspcoop2.web.ctrlstat.costanti.ConnettoreServletType;
  59. import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
  60. import org.openspcoop2.web.ctrlstat.plugins.ExtendedConnettore;
  61. import org.openspcoop2.web.ctrlstat.plugins.servlet.ServletExtendedConnettoreUtils;
  62. import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
  63. import org.openspcoop2.web.ctrlstat.servlet.apc.AccordiServizioParteComuneCore;
  64. import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaCore;
  65. import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaCostanti;
  66. import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaHelper;
  67. import org.openspcoop2.web.ctrlstat.servlet.config.ConfigurazioneCore;
  68. import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoreStatusParams;
  69. import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriCostanti;
  70. import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriHelper;
  71. import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCore;
  72. import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCostanti;
  73. import org.openspcoop2.web.lib.mvc.Costanti;
  74. import org.openspcoop2.web.lib.mvc.DataElement;
  75. import org.openspcoop2.web.lib.mvc.ForwardParams;
  76. import org.openspcoop2.web.lib.mvc.GeneralData;
  77. import org.openspcoop2.web.lib.mvc.PageData;
  78. import org.openspcoop2.web.lib.mvc.Parameter;
  79. import org.openspcoop2.web.lib.mvc.ServletUtils;
  80. import org.openspcoop2.web.lib.mvc.TipoOperazione;
  81. import org.openspcoop2.web.lib.users.dao.PermessiUtente;


  82. /**    
  83.  * PorteDelegateConnettoreDefault
  84.  *
  85.  * @author Pintori Giuliano (pintori@link.it)
  86.  * @author $Author$
  87.  * @version $Rev$, $Date$
  88.  */
  89. public class PorteDelegateConnettoreDefault extends Action {

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

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

  93.         // Inizializzo PageData
  94.         PageData pd = new PageData();

  95.         GeneralHelper generalHelper = new GeneralHelper(session);

  96.         // Inizializzo GeneralData
  97.         GeneralData gd = generalHelper.initGeneralData(request);
  98.        
  99.         try {
  100.            
  101.             PorteDelegateHelper porteDelegateHelper = new PorteDelegateHelper(request, pd, session);
  102.             // prelevo il flag che mi dice da quale pagina ho acceduto la sezione delle porte delegate
  103.             Integer parentPD = ServletUtils.getIntegerAttributeFromSession(PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT, session, request);
  104.             if(parentPD == null) parentPD = PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT_NONE;
  105.            
  106.             String idTab = porteDelegateHelper.getParameter(CostantiControlStation.PARAMETRO_ID_TAB);
  107.             if(!porteDelegateHelper.isModalitaCompleta() && StringUtils.isNotEmpty(idTab)) {
  108.                 ServletUtils.setObjectIntoSession(request, session, idTab, CostantiControlStation.PARAMETRO_ID_TAB);
  109.             }
  110.            
  111.             // Preparo il menu
  112.             porteDelegateHelper.makeMenu();
  113.                        
  114.             String id = porteDelegateHelper.getParameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ID);
  115.             int idInt = Integer.parseInt(id);
  116.             String idSoggFruitore = porteDelegateHelper.getParameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ID_SOGGETTO);
  117.             String idAsps = porteDelegateHelper.getParameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ID_ASPS);
  118.             if(idAsps == null)
  119.                 idAsps = "";
  120.             String idFruizione= porteDelegateHelper.getParameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ID_FRUIZIONE);
  121.             if(idFruizione == null)
  122.                 idFruizione = "";

  123.             Properties parametersPOST = null;
  124.            
  125.             String endpointtype = porteDelegateHelper.readEndPointType();
  126.             String tipoconn = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TIPO_PERSONALIZZATO );
  127.             String autenticazioneHttp = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_ENDPOINT_TYPE_ENABLE_HTTP);

  128.             String connettoreDebug = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_DEBUG);
  129.            
  130.             // token policy
  131.             String autenticazioneTokenS = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TOKEN_POLICY_STATO);
  132.             boolean autenticazioneToken = ServletUtils.isCheckBoxEnabled(autenticazioneTokenS);
  133.             String tokenPolicy = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TOKEN_POLICY);
  134.                        
  135.             // proxy
  136.             String proxyEnabled = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_ENABLED);
  137.             String proxyHostname = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_HOSTNAME);
  138.             String proxyPort = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_PORT);
  139.             String proxyUsername = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_USERNAME);
  140.             String proxyPassword = porteDelegateHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_PASSWORD);

  141.             // tempi risposta
  142.             String tempiRispostaEnabled = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TEMPI_RISPOSTA_REDEFINE);
  143.             String tempiRispostaConnectionTimeout = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TEMPI_RISPOSTA_CONNECTION_TIMEOUT);
  144.             String tempiRispostaReadTimeout = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TEMPI_RISPOSTA_READ_TIMEOUT);
  145.             String tempiRispostaTempoMedioRisposta = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TEMPI_RISPOSTA_TEMPO_MEDIO_RISPOSTA);
  146.            
  147.             // opzioni avanzate
  148.             String transferMode = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_OPZIONI_AVANZATE_TRANSFER_MODE);
  149.             String transferModeChunkSize = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_OPZIONI_AVANZATE_TRANSFER_CHUNK_SIZE);
  150.             String redirectMode = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_OPZIONI_AVANZATE_REDIRECT_MODE);
  151.             String redirectMaxHop = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_OPZIONI_AVANZATE_REDIRECT_MAX_HOP);
  152.             String opzioniAvanzate = ConnettoriHelper.getOpzioniAvanzate(porteDelegateHelper, transferMode, redirectMode);

  153.             String user= null;
  154.             String password =null;
  155.            
  156.             // http
  157.             String url = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_URL  );
  158.             if(TipiConnettore.HTTP.toString().equals(endpointtype)){
  159.                 user = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_INVOCAZIONE_CREDENZIALI_AUTENTICAZIONE_USERNAME);
  160.                 password = porteDelegateHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_INVOCAZIONE_CREDENZIALI_AUTENTICAZIONE_PASSWORD);
  161.             }
  162.            
  163.             // api key
  164.             String autenticazioneApiKey = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_ENDPOINT_TYPE_ENABLE_API_KEY);
  165.             String apiKeyHeader = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_HEADER);
  166.             if(apiKeyHeader==null || StringUtils.isEmpty(apiKeyHeader)) {
  167.                 apiKeyHeader = CostantiConnettori.DEFAULT_HEADER_API_KEY;
  168.             }
  169.             String apiKeyValue = porteDelegateHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_VALUE);
  170.             String appIdHeader = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_APP_ID_HEADER);
  171.             if(appIdHeader==null || StringUtils.isEmpty(appIdHeader)) {
  172.                 appIdHeader = CostantiConnettori.DEFAULT_HEADER_APP_ID;
  173.             }
  174.             String appIdValue = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_APP_ID_VALUE);
  175.             String useOAS3NamesTmp = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_NOMI_OAS);
  176.             boolean useOAS3Names=true;
  177.             if(useOAS3NamesTmp!=null && StringUtils.isNotEmpty(useOAS3NamesTmp)) {
  178.                 useOAS3Names = ServletUtils.isCheckBoxEnabled(useOAS3NamesTmp);
  179.             }
  180.             else {
  181.                 useOAS3Names = porteDelegateHelper.isAutenticazioneApiKeyUseOAS3Names(apiKeyHeader, appIdHeader);
  182.             }
  183.             String useAppIdTmp = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_USE_APP_ID);
  184.             boolean useAppId=false;
  185.             if(useAppIdTmp!=null && StringUtils.isNotEmpty(useAppIdTmp)) {
  186.                 useAppId = ServletUtils.isCheckBoxEnabled(useAppIdTmp);
  187.             }
  188.             else {
  189.                 useAppId = porteDelegateHelper.isAutenticazioneApiKeyUseAppId(appIdValue);
  190.             }

  191.             // jms
  192.             String nomeCodaJms = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_NOME_CODA);
  193.             String tipoJms = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_TIPO_CODA);
  194.             String initcont = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_INIT_CTX);
  195.             String urlpgk = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_URL_PKG);
  196.             String provurl = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_PROVIDER_URL);
  197.             String connfact = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_CONNECTION_FACTORY);
  198.             String tipoSendas = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_TIPO_OGGETTO_JMS);
  199.             if(TipiConnettore.JMS.toString().equals(endpointtype)){
  200.                 user = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_USERNAME);
  201.                 password = porteDelegateHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_PASSWORD);
  202.             }

  203.             // https
  204.             String httpsurl = url;
  205.             String httpstipologia = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_SSL_TYPE );
  206.             String httpshostverifyS = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_HOST_VERIFY);
  207.             String httpsTrustVerifyCertS = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_VERIFY_CERTS );
  208.             boolean httpsTrustVerifyCert = ServletUtils.isCheckBoxEnabled(httpsTrustVerifyCertS);
  209.             String httpspath = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_STORE_LOCATION );
  210.             String httpstipo = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_STORE_TYPE);
  211.             String httpspwd = porteDelegateHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_STORE_PASSWORD);
  212.             String httpsalgoritmo = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_MANAGEMENT_ALGORITM);
  213.             String httpsstatoS = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_STATO);
  214.             String httpskeystore = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEYSTORE_CLIENT_AUTH_MODE);
  215.             String httpspwdprivatekeytrust = porteDelegateHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_PASSWORD_PRIVATE_KEY_STORE);
  216.             String httpspathkey = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEY_STORE_LOCATION);
  217.             String httpstipokey = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEY_STORE_TYPE);
  218.             String httpspwdkey = porteDelegateHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEY_STORE_PASSWORD);
  219.             String httpspwdprivatekey = porteDelegateHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_PASSWORD_PRIVATE_KEY_KEYSTORE);
  220.             String httpsalgoritmokey = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEY_MANAGEMENT_ALGORITM);
  221.             String httpsKeyAlias = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_ALIAS_PRIVATE_KEY_KEYSTORE);
  222.             String httpsTrustStoreCRLs = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_STORE_CRL);
  223.             String httpsTrustStoreOCSPPolicy = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_STORE_OCSP_POLICY);
  224.             String httpsKeyStoreBYOKPolicy = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEY_STORE_BYOK_POLICY);
  225.             if(TipiConnettore.HTTPS.toString().equals(endpointtype)){
  226.                 user = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_INVOCAZIONE_CREDENZIALI_AUTENTICAZIONE_USERNAME);
  227.                 password = porteDelegateHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_INVOCAZIONE_CREDENZIALI_AUTENTICAZIONE_PASSWORD);
  228.             }
  229.            
  230.             // file
  231.             String requestOutputFileName = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_FILE_NAME);
  232.             String requestOutputFileNamePermissions = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_FILE_NAME_PERMISSIONS);
  233.             String requestOutputFileNameHeaders = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_FILE_NAME_HEADERS);
  234.             String requestOutputFileNameHeadersPermissions = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_FILE_NAME_HEADERS_PERMISSIONS);
  235.             String requestOutputParentDirCreateIfNotExists = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_AUTO_CREATE_DIR);
  236.             String requestOutputOverwriteIfExists = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_OVERWRITE_FILE_NAME);
  237.             String responseInputMode = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_RESPONSE_INPUT_MODE);
  238.             String responseInputFileName = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_RESPONSE_INPUT_FILE_NAME);
  239.             String responseInputFileNameHeaders = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_RESPONSE_INPUT_FILE_NAME_HEADERS);
  240.             String responseInputDeleteAfterRead = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_RESPONSE_INPUT_FILE_NAME_DELETE_AFTER_READ);
  241.             String responseInputWaitTime = porteDelegateHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_RESPONSE_INPUT_WAIT_TIME);

  242.             //status
  243.             ConnettoreStatusParams connettoreStatusParams = ConnettoreStatusParams.fillFrom(porteDelegateHelper);
  244.            
  245.             boolean servizioApplicativoServerEnabled = false;
  246.             String servizioApplicativoServer = null;
  247.            
  248.             boolean httpshostverify = false;
  249.             if (httpshostverifyS != null && httpshostverifyS.equals(Costanti.CHECK_BOX_ENABLED))
  250.                 httpshostverify = true;
  251.             boolean httpsstato = false;
  252.             if (httpsstatoS != null && httpsstatoS.equals(Costanti.CHECK_BOX_ENABLED))
  253.                 httpsstato = true;

  254.             Boolean isConnettoreCustomUltimaImmagineSalvata = null;
  255.            
  256.             boolean forceEnableConnettore = false;
  257.             if( (!porteDelegateHelper.isModalitaCompleta())) {
  258.                 forceEnableConnettore = true;
  259.             }
  260.            
  261.             boolean datiInvocazione = ServletUtils.isCheckBoxEnabled(porteDelegateHelper.getParameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_CONFIGURAZIONE_DATI_INVOCAZIONE));
  262.            
  263.             boolean postBackViaPost = true;
  264.            
  265.             Connettore conTmp = null;
  266.             List<ExtendedConnettore> listExtendedConnettore =
  267.                     ServletExtendedConnettoreUtils.getExtendedConnettore(conTmp, ConnettoreServletType.ACCORDO_SERVIZIO_PARTE_SPECIFICA_PORTA_APPLICATIVA_ADD, porteDelegateHelper,
  268.                             parametersPOST, (endpointtype==null), endpointtype); // uso endpointtype per capire se è la prima volta che entro
  269.            
  270.             // Prendo il nome della porta
  271.             PorteDelegateCore porteDelegateCore = new PorteDelegateCore();
  272.             AccordiServizioParteSpecificaCore apsCore = new AccordiServizioParteSpecificaCore(porteDelegateCore);
  273.             SoggettiCore soggettiCore = new SoggettiCore(porteDelegateCore);
  274.            
  275.             IDSoggetto idSoggettoFruitore = null;
  276.             if(porteDelegateCore.isRegistroServiziLocale()){
  277.                 org.openspcoop2.core.registry.Soggetto soggetto = soggettiCore.getSoggettoRegistro(Integer.parseInt(idSoggFruitore));
  278.                 idSoggettoFruitore = new IDSoggetto(soggetto.getTipo(), soggetto.getNome());
  279.             }else{
  280.                 org.openspcoop2.core.config.Soggetto soggetto = soggettiCore.getSoggetto(Integer.parseInt(idSoggFruitore));
  281.                 idSoggettoFruitore = new IDSoggetto(soggetto.getTipo(), soggetto.getNome());
  282.             }

  283.             PortaDelegata portaDelegata = porteDelegateCore.getPortaDelegata(idInt);
  284.             if(portaDelegata==null) {
  285.                 throw new DriverConfigurazioneNotFound("Porta Delegata con id '"+idInt+"' non trovata");
  286.             }
  287.             String idporta = portaDelegata.getNome();
  288.            
  289.             AccordoServizioParteSpecifica asps = null;
  290.             IDServizio idServizio = null;
  291.             if(idAsps!=null && !"".equals(idAsps)) {
  292.                 asps = apsCore.getAccordoServizioParteSpecifica(Long.parseLong(idAsps));
  293.                 idServizio = IDServizioFactory.getInstance().getIDServizioFromAccordo(asps);
  294.             }
  295.             else {
  296.                 idServizio = IDServizioFactory.getInstance().getIDServizioFromValues(portaDelegata.getServizio().getTipo(),
  297.                         portaDelegata.getServizio().getNome(),
  298.                         new IDSoggetto(portaDelegata.getSoggettoErogatore().getTipo(), portaDelegata.getSoggettoErogatore().getNome()),
  299.                         portaDelegata.getServizio().getVersione());
  300.             }
  301.            
  302.             String protocollo = apsCore.getProtocolloAssociatoTipoServizio(idServizio.getTipo());
  303.            
  304.             boolean forceHttps = false;
  305.             boolean forceHttpsClient = false;
  306.             boolean forcePDND = false;
  307.             boolean forceOAuth = false;
  308.             if(asps!=null && porteDelegateHelper.isProfiloModIPA(protocollo)) {
  309.                 forceHttps = porteDelegateHelper.forceHttpsProfiloModiPA();
  310.                
  311.                 BooleanNullable forceHttpsClientWrapper = BooleanNullable.NULL();
  312.                 BooleanNullable forcePDNDWrapper = BooleanNullable.NULL();
  313.                 BooleanNullable forceOAuthWrapper = BooleanNullable.NULL();
  314.                
  315.                 List<String> azioniList = null;
  316.                 if(portaDelegata!=null && portaDelegata.getAzione()!=null && portaDelegata.getAzione().sizeAzioneDelegataList()>0) {
  317.                     azioniList = portaDelegata.getAzione().getAzioneDelegataList();
  318.                 }
  319.                
  320.                 porteDelegateHelper.readModIConfiguration(forceHttpsClientWrapper, forcePDNDWrapper, forceOAuthWrapper,
  321.                         IDAccordoFactory.getInstance().getIDAccordoFromUri(asps.getAccordoServizioParteComune()), asps.getPortType(),
  322.                         azioniList);
  323.                
  324.                 if(forceHttpsClientWrapper.getValue()!=null) {
  325.                     forceHttpsClient = forceHttpsClientWrapper.getValue().booleanValue();
  326.                 }
  327.                 if(forcePDNDWrapper.getValue()!=null) {
  328.                     forcePDND = forcePDNDWrapper.getValue().booleanValue();
  329.                 }
  330.                 if(forceOAuthWrapper.getValue()!=null) {
  331.                     forceOAuth = forceOAuthWrapper.getValue().booleanValue();
  332.                 }
  333.                
  334.             }
  335.            
  336.             String modalita = porteDelegateHelper.getParameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_MODALITA_CONNETTORE);
  337.            
  338.             String [] modalitaLabels = { PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_MODALITA_CONNETTORE_DEFAULT, PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_MODALITA_CONNETTORE_RIDEFINITO };
  339.             String [] modalitaValues = { PorteDelegateCostanti.VALUE_PARAMETRO_PORTE_DELEGATE_MODALITA_CONNETTORE_DEFAULT, PorteDelegateCostanti.VALUE_PARAMETRO_PORTE_DELEGATE_MODALITA_CONNETTORE_RIDEFINITO };
  340.            
  341.             String postBackElementName = porteDelegateHelper.getPostBackElementName();
  342.             boolean initConnettore = false;
  343.             // Controllo se ho modificato l'azione allora ricalcolo il nome
  344.             if(postBackElementName != null &&
  345.                 postBackElementName.equalsIgnoreCase(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_MODALITA_CONNETTORE) &&
  346.                 // devo resettare il connettore
  347.                 modalita.equals(PorteDelegateCostanti.VALUE_PARAMETRO_PORTE_DELEGATE_MODALITA_CONNETTORE_RIDEFINITO)) {
  348.                 initConnettore = true;
  349.             }
  350.            
  351.             List<Parameter> lstParam = porteDelegateHelper.getTitoloPD(parentPD, idSoggFruitore, idAsps, idFruizione);
  352.            
  353.             String connettoreLabelDi = PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_CONNETTORE_DEFAULT_DI;
  354.             String connettoreLabel = PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_CONNETTORE_DEFAULT;
  355.             if(!porteDelegateHelper.isModalitaCompleta()) {
  356.                 connettoreLabelDi = PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_CONNETTORE_DI;
  357.                 connettoreLabel = PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_CONNETTORE;
  358.             }
  359.            
  360.             String labelPerPorta = null;
  361.             if(parentPD!=null && (parentPD.intValue() == PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT_CONFIGURAZIONE)) {
  362.                 labelPerPorta = porteDelegateCore.getLabelRegolaMappingFruizionePortaDelegata(
  363.                         connettoreLabelDi,
  364.                         connettoreLabel,
  365.                         portaDelegata);
  366.             }
  367.             else {
  368.                 labelPerPorta = connettoreLabelDi+idporta;
  369.             }
  370.            
  371.             lstParam.add(new Parameter(labelPerPorta,  null));
  372.            
  373.             // setto la barra del titolo
  374.             ServletUtils.setPageDataTitle(pd, lstParam);
  375.            
  376.             // imposto menu' contestuale
  377.             porteDelegateHelper.impostaComandiMenuContestualePD(idSoggFruitore, idAsps, idFruizione);
  378.            
  379.             String servletConnettore = null;
  380.             Parameter[] parametriServletConnettore =null;
  381.            
  382.             asps = apsCore.getServizio(idServizio,false);
  383.             AccordiServizioParteComuneCore apcCore = new AccordiServizioParteComuneCore(porteDelegateCore);
  384.             AccordoServizioParteComuneSintetico aspc = apcCore.getAccordoServizioSintetico(porteDelegateHelper.getIDAccordoFromUri(asps.getAccordoServizioParteComune()));
  385.             ServiceBinding serviceBinding = porteDelegateCore.toMessageServiceBinding(aspc.getServiceBinding());
  386.            
  387.             if( porteDelegateHelper.isEditModeInProgress()){
  388.                
  389.                 if(modalita == null) {
  390.                     modalita = PorteDelegateCostanti.VALUE_PARAMETRO_PORTE_DELEGATE_MODALITA_CONNETTORE_DEFAULT;
  391.                 }
  392.                
  393.                 // solo in modalita' nuova
  394.                 if(initConnettore) {
  395.                     tipoconn = "";
  396.                     url = "";
  397.                     nomeCodaJms = "";
  398.                     user = "";
  399.                     password = "";
  400.                     initcont = "";
  401.                     urlpgk = "";
  402.                     provurl = "";
  403.                     connfact = "";
  404.                     httpsurl = "";
  405.                     httpstipologia = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_TYPE;
  406.                     httpshostverifyS = Costanti.CHECK_BOX_ENABLED_TRUE;
  407.                     httpshostverify = true;
  408.                     httpsTrustVerifyCert = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_TRUST_VERIFY_CERTS;
  409.                     httpspath = "";
  410.                     httpstipo = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_TIPOLOGIA_KEYSTORE_TYPE;
  411.                     httpspwd = "";
  412.                     httpsstato = false;
  413.                     httpskeystore = AccordiServizioParteSpecificaCostanti.DEFAULT_VALUE_DEFAULT;
  414.                     httpspwdprivatekeytrust = "";
  415.                     httpspathkey = "";
  416.                     httpstipokey =ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_TIPOLOGIA_KEYSTORE_TYPE;
  417.                     httpspwdkey = "";
  418.                     httpspwdprivatekey = "";
  419.                    
  420.                     if(endpointtype==null) {
  421.                         if(!porteDelegateHelper.isModalitaCompleta()) {
  422.                             endpointtype = TipiConnettore.HTTP.getNome();
  423.                         }
  424.                         else {
  425.                             endpointtype = AccordiServizioParteSpecificaCostanti.DEFAULT_VALUE_DISABILITATO;
  426.                         }
  427.                     }
  428.                    
  429.                     // default
  430.                     if(httpsalgoritmo==null || "".equals(httpsalgoritmo)){
  431.                         httpsalgoritmo = TrustManagerFactory.getDefaultAlgorithm();
  432.                     }
  433.                     if(httpsalgoritmokey==null || "".equals(httpsalgoritmokey)){
  434.                         httpsalgoritmokey = KeyManagerFactory.getDefaultAlgorithm();
  435.                     }
  436.                     if(httpstipologia==null || "".equals(httpstipologia)){
  437.                         httpstipologia = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_TYPE;
  438.                     }
  439.                     if(httpshostverifyS==null || "".equals(httpshostverifyS)){
  440.                         httpshostverifyS = Costanti.CHECK_BOX_ENABLED_TRUE;
  441.                         httpshostverify = ServletUtils.isCheckBoxEnabled(httpshostverifyS);
  442.                     }
  443.                     if(httpsTrustVerifyCertS==null || "".equals(httpsTrustVerifyCertS)){
  444.                         httpsTrustVerifyCertS = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_TRUST_VERIFY_CERTS ? Costanti.CHECK_BOX_ENABLED_TRUE : Costanti.CHECK_BOX_DISABLED;
  445.                         httpsTrustVerifyCert = ServletUtils.isCheckBoxEnabled(httpsTrustVerifyCertS);
  446.                     }
  447.                    
  448.                     tipoSendas = ConnettoriCostanti.TIPO_SEND_AS[0];
  449.                     tipoJms = ConnettoriCostanti.TIPI_CODE_JMS[0];

  450.                     autenticazioneHttp = porteDelegateHelper.getAutenticazioneHttp(autenticazioneHttp, endpointtype, user);
  451.                                    
  452.                     tempiRispostaEnabled = null;
  453.                     ConfigurazioneCore configCore = new ConfigurazioneCore(soggettiCore);
  454.                     ConfigurazioneGenerale configGenerale = configCore.getConfigurazioneControlloTraffico();
  455.                     tempiRispostaConnectionTimeout = configGenerale.getTempiRispostaFruizione().getConnectionTimeout().intValue()+"";
  456.                     tempiRispostaReadTimeout = configGenerale.getTempiRispostaFruizione().getReadTimeout().intValue()+"";
  457.                     tempiRispostaTempoMedioRisposta = configGenerale.getTempiRispostaFruizione().getTempoMedioRisposta().intValue()+"";

  458.                 }
  459.                 // Devo cmq rileggere i valori se non definiti
  460.                 if(tempiRispostaConnectionTimeout==null || "".equals(tempiRispostaConnectionTimeout)
  461.                         ||
  462.                         tempiRispostaReadTimeout==null || "".equals(tempiRispostaReadTimeout)
  463.                         ||
  464.                         tempiRispostaTempoMedioRisposta==null || "".equals(tempiRispostaTempoMedioRisposta) ){
  465.                     ConfigurazioneCore configCore = new ConfigurazioneCore(soggettiCore);
  466.                     ConfigurazioneGenerale configGenerale = configCore.getConfigurazioneControlloTraffico();
  467.                     if(tempiRispostaConnectionTimeout==null || "".equals(tempiRispostaConnectionTimeout) ) {
  468.                         tempiRispostaConnectionTimeout = configGenerale.getTempiRispostaFruizione().getConnectionTimeout().intValue()+"";
  469.                     }
  470.                     if(tempiRispostaReadTimeout==null || "".equals(tempiRispostaReadTimeout) ) {
  471.                         tempiRispostaReadTimeout = configGenerale.getTempiRispostaFruizione().getReadTimeout().intValue()+"";
  472.                     }
  473.                     if(tempiRispostaTempoMedioRisposta==null || "".equals(tempiRispostaTempoMedioRisposta) ) {
  474.                         tempiRispostaTempoMedioRisposta = configGenerale.getTempiRispostaFruizione().getTempoMedioRisposta().intValue()+"";
  475.                     }
  476.                 }
  477.                
  478.                
  479.                 // preparo i campi
  480.                 List<DataElement> dati = new ArrayList<>();
  481.                 dati.add(ServletUtils.getDataElementForEditModeFinished());
  482.                
  483.                 dati = porteDelegateHelper.addHiddenFieldsToDati(TipoOperazione.OTHER,id, idSoggFruitore, null,idAsps,
  484.                         idFruizione, portaDelegata.getTipoSoggettoProprietario(), portaDelegata.getNomeSoggettoProprietario(), dati);
  485.                
  486.                 dati = porteDelegateHelper.addConnettoreDefaultRidefinitoToDati(dati,TipoOperazione.OTHER, modalita, modalitaValues,modalitaLabels,false,servletConnettore,parametriServletConnettore);
  487.                
  488.                
  489.                 if(modalita.equals(PorteDelegateCostanti.VALUE_PARAMETRO_PORTE_DELEGATE_MODALITA_CONNETTORE_RIDEFINITO)) {
  490.                    
  491.                     dati = porteDelegateHelper.addEndPointToDati(dati, serviceBinding, connettoreDebug, endpointtype, autenticazioneHttp,
  492.                             null,//(porteDelegateHelper.isModalitaCompleta() || !multitenant)?null:AccordiServizioParteSpecificaCostanti.LABEL_APS_APPLICATIVO_INTERNO_PREFIX ,
  493.                             url, nomeCodaJms,
  494.                             tipoJms, user,
  495.                             password, initcont, urlpgk,
  496.                             provurl, connfact, tipoSendas,
  497.                             AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS_FRUITORI,TipoOperazione.OTHER,
  498.                             httpsurl, httpstipologia, httpshostverify,
  499.                             httpsTrustVerifyCert, httpspath, httpstipo, httpspwd,
  500.                             httpsalgoritmo, httpsstato, httpskeystore,
  501.                             httpspwdprivatekeytrust, httpspathkey,
  502.                             httpstipokey, httpspwdkey,
  503.                             httpspwdprivatekey, httpsalgoritmokey,
  504.                             httpsKeyAlias, httpsTrustStoreCRLs, httpsTrustStoreOCSPPolicy, httpsKeyStoreBYOKPolicy,
  505.                             tipoconn, PorteDelegateCostanti.SERVLET_NAME_PORTE_DELEGATE_CONNETTORE_DEFAULT, null, null,
  506.                             null, null, null, null, null, null, false,
  507.                             isConnettoreCustomUltimaImmagineSalvata,
  508.                             proxyEnabled, proxyHostname, proxyPort, proxyUsername, proxyPassword,
  509.                             tempiRispostaEnabled, tempiRispostaConnectionTimeout, tempiRispostaReadTimeout, tempiRispostaTempoMedioRisposta,
  510.                             opzioniAvanzate, transferMode, transferModeChunkSize, redirectMode, redirectMaxHop,
  511.                             requestOutputFileName, requestOutputFileNamePermissions, requestOutputFileNameHeaders, requestOutputFileNameHeadersPermissions,
  512.                             requestOutputParentDirCreateIfNotExists,requestOutputOverwriteIfExists,
  513.                             responseInputMode, responseInputFileName, responseInputFileNameHeaders, responseInputDeleteAfterRead, responseInputWaitTime,
  514.                             autenticazioneToken,tokenPolicy,forcePDND,forceOAuth,
  515.                             listExtendedConnettore, forceEnableConnettore,
  516.                             protocollo, forceHttps, forceHttpsClient, false, servizioApplicativoServerEnabled,servizioApplicativoServer, null,
  517.                             autenticazioneApiKey, useOAS3Names, useAppId, apiKeyHeader, apiKeyValue, appIdHeader, appIdValue,
  518.                             connettoreStatusParams,
  519.                             postBackViaPost);
  520.                 }

  521.                 pd.setDati(dati);
  522.                
  523.                 if(modalita.equals(PorteDelegateCostanti.VALUE_PARAMETRO_PORTE_DELEGATE_MODALITA_CONNETTORE_DEFAULT)) {
  524.                     pd.disableOnlyButton();
  525.                 }
  526.                
  527.                 ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  528.                 // Forward control to the specified success URI
  529.                 return ServletUtils.getStrutsForwardEditModeInProgress(mapping, PorteDelegateCostanti.OBJECT_NAME_PORTE_DELEGATE_CONNETTORE_DEFAULT, ForwardParams.OTHER(""));
  530.             }
  531.            

  532.             // Controlli sui campi immessi
  533.             boolean isOk = porteDelegateHelper.connettoreDefaultRidefinitoCheckData(TipoOperazione.OTHER, modalita);
  534.            
  535.             if(isOk && modalita.equals(PorteDelegateCostanti.VALUE_PARAMETRO_PORTE_DELEGATE_MODALITA_CONNETTORE_RIDEFINITO)) {
  536.                 isOk = porteDelegateHelper.endPointCheckData(serviceBinding, protocollo, false,
  537.                         endpointtype, url, nomeCodaJms, tipoJms,
  538.                         user, password, initcont, urlpgk, provurl, connfact,
  539.                         tipoSendas, httpsurl, httpstipologia, httpshostverify,
  540.                         httpsTrustVerifyCert, httpspath, httpstipo, httpspwd, httpsalgoritmo, httpsstato,
  541.                         httpskeystore, httpspwdprivatekeytrust, httpspathkey,
  542.                         httpstipokey, httpspwdkey,
  543.                         httpspwdprivatekey, httpsalgoritmokey,
  544.                         httpsKeyAlias, httpsTrustStoreCRLs, httpsTrustStoreOCSPPolicy, httpsKeyStoreBYOKPolicy,
  545.                         tipoconn,autenticazioneHttp,
  546.                         proxyEnabled, proxyHostname, proxyPort, proxyUsername, proxyPassword,
  547.                         tempiRispostaEnabled, tempiRispostaConnectionTimeout, tempiRispostaReadTimeout, tempiRispostaTempoMedioRisposta,
  548.                         opzioniAvanzate, transferMode, transferModeChunkSize, redirectMode, redirectMaxHop,
  549.                         requestOutputFileName, requestOutputFileNamePermissions, requestOutputFileNameHeaders, requestOutputFileNameHeadersPermissions,
  550.                         requestOutputParentDirCreateIfNotExists,requestOutputOverwriteIfExists,
  551.                         responseInputMode, responseInputFileName, responseInputFileNameHeaders, responseInputDeleteAfterRead, responseInputWaitTime,
  552.                         autenticazioneToken,tokenPolicy,
  553.                         autenticazioneApiKey, useOAS3Names, useAppId, apiKeyHeader, apiKeyValue, appIdHeader, appIdValue,
  554.                         listExtendedConnettore,servizioApplicativoServerEnabled,servizioApplicativoServer);
  555.             }
  556.            
  557.             if(!isOk) {
  558.                 // preparo i campi
  559.                 List<DataElement> dati = new ArrayList<>();

  560.                 dati.add(ServletUtils.getDataElementForEditModeFinished());
  561.                
  562.                 dati = porteDelegateHelper.addHiddenFieldsToDati(TipoOperazione.OTHER,id, idSoggFruitore, null,idAsps,
  563.                         idFruizione, portaDelegata.getTipoSoggettoProprietario(), portaDelegata.getNomeSoggettoProprietario(), dati);
  564.                
  565.                 dati = porteDelegateHelper.addConnettoreDefaultRidefinitoToDati(dati,TipoOperazione.OTHER, modalita, modalitaValues,modalitaLabels,false,servletConnettore,parametriServletConnettore);
  566.                
  567.                 if(modalita.equals(PorteDelegateCostanti.VALUE_PARAMETRO_PORTE_DELEGATE_MODALITA_CONNETTORE_RIDEFINITO)) {
  568.                     dati = porteDelegateHelper.addEndPointToDati(dati, serviceBinding, connettoreDebug, endpointtype, autenticazioneHttp,
  569.                             null,//(porteDelegateHelper.isModalitaCompleta() || !multitenant)?null:AccordiServizioParteSpecificaCostanti.LABEL_APS_APPLICATIVO_INTERNO_PREFIX ,
  570.                             url, nomeCodaJms,
  571.                             tipoJms, user,
  572.                             password, initcont, urlpgk,
  573.                             provurl, connfact, tipoSendas,
  574.                             AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS_FRUITORI,TipoOperazione.OTHER,
  575.                             httpsurl, httpstipologia, httpshostverify,
  576.                             httpsTrustVerifyCert, httpspath, httpstipo, httpspwd,
  577.                             httpsalgoritmo, httpsstato, httpskeystore,
  578.                             httpspwdprivatekeytrust, httpspathkey,
  579.                             httpstipokey, httpspwdkey,
  580.                             httpspwdprivatekey, httpsalgoritmokey,
  581.                             httpsKeyAlias, httpsTrustStoreCRLs, httpsTrustStoreOCSPPolicy, httpsKeyStoreBYOKPolicy,
  582.                             tipoconn, PorteDelegateCostanti.SERVLET_NAME_PORTE_DELEGATE_CONNETTORE_DEFAULT, null, null,
  583.                             null, null, null, null, null, null, false,
  584.                             isConnettoreCustomUltimaImmagineSalvata,
  585.                             proxyEnabled, proxyHostname, proxyPort, proxyUsername, proxyPassword,
  586.                             tempiRispostaEnabled, tempiRispostaConnectionTimeout, tempiRispostaReadTimeout, tempiRispostaTempoMedioRisposta,
  587.                             opzioniAvanzate, transferMode, transferModeChunkSize, redirectMode, redirectMaxHop,
  588.                             requestOutputFileName, requestOutputFileNamePermissions, requestOutputFileNameHeaders, requestOutputFileNameHeadersPermissions,
  589.                             requestOutputParentDirCreateIfNotExists,requestOutputOverwriteIfExists,
  590.                             responseInputMode, responseInputFileName, responseInputFileNameHeaders, responseInputDeleteAfterRead, responseInputWaitTime,
  591.                             autenticazioneToken,tokenPolicy,forcePDND,forceOAuth,
  592.                             listExtendedConnettore, forceEnableConnettore,
  593.                             protocollo, forceHttps, forceHttpsClient, false, servizioApplicativoServerEnabled,servizioApplicativoServer, null,
  594.                             autenticazioneApiKey, useOAS3Names, useAppId, apiKeyHeader, apiKeyValue, appIdHeader, appIdValue,
  595.                             connettoreStatusParams,
  596.                             postBackViaPost);
  597.                 }

  598.                 pd.setDati(dati);

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

  600.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping, PorteDelegateCostanti.OBJECT_NAME_PORTE_DELEGATE_CONNETTORE_DEFAULT,    ForwardParams.OTHER(""));
  601.             }
  602.            

  603.             // Connettore
  604.             Connettore connettore = new Connettore();
  605.             if (endpointtype.equals(ConnettoriCostanti.DEFAULT_CONNETTORE_TYPE_CUSTOM))
  606.                 connettore.setTipo(tipoconn);
  607.             else
  608.                 connettore.setTipo(endpointtype);
  609.    
  610.             porteDelegateHelper.fillConnettore(connettore, connettoreDebug, endpointtype, endpointtype, tipoconn, url,
  611.                     nomeCodaJms, tipoJms, user, password,
  612.                     initcont, urlpgk, url, connfact,
  613.                     tipoSendas, httpsurl, httpstipologia, httpshostverify,
  614.                     httpsTrustVerifyCert, httpspath, httpstipo,
  615.                     httpspwd, httpsalgoritmo, httpsstato,
  616.                     httpskeystore, httpspwdprivatekeytrust,
  617.                     httpspathkey, httpstipokey,
  618.                     httpspwdkey, httpspwdprivatekey,
  619.                     httpsalgoritmokey,
  620.                     httpsKeyAlias, httpsTrustStoreCRLs, httpsTrustStoreOCSPPolicy, httpsKeyStoreBYOKPolicy,
  621.                     proxyEnabled, proxyHostname, proxyPort, proxyUsername, proxyPassword,
  622.                     tempiRispostaEnabled, tempiRispostaConnectionTimeout, tempiRispostaReadTimeout, tempiRispostaTempoMedioRisposta,
  623.                     opzioniAvanzate, transferMode, transferModeChunkSize, redirectMode, redirectMaxHop,
  624.                     requestOutputFileName, requestOutputFileNamePermissions, requestOutputFileNameHeaders, requestOutputFileNameHeadersPermissions,
  625.                     requestOutputParentDirCreateIfNotExists,requestOutputOverwriteIfExists,
  626.                     responseInputMode, responseInputFileName, responseInputFileNameHeaders, responseInputDeleteAfterRead, responseInputWaitTime,
  627.                     tokenPolicy,
  628.                     apiKeyHeader, apiKeyValue, appIdHeader, appIdValue,
  629.                     connettoreStatusParams,
  630.                     listExtendedConnettore);
  631.            
  632.             Fruitore fruitore = null;
  633.             for (Fruitore fruitoreCheck : asps.getFruitoreList()) {
  634.                 if(fruitoreCheck.getTipo().equals(idSoggettoFruitore.getTipo()) && fruitoreCheck.getNome().equals(idSoggettoFruitore.getNome())) {
  635.                     fruitore = fruitoreCheck;
  636.                     break;
  637.                 }
  638.             }
  639.             if(fruitore==null) {
  640.                 throw new CoreException("Fruitore con id '"+idSoggettoFruitore.getTipo()+"/"+idSoggettoFruitore.getNome()+"' non trovato");
  641.             }
  642.            
  643.             ConfigurazioneServizioAzione configurazioneAzione = new ConfigurazioneServizioAzione();
  644.             configurazioneAzione.setConnettore(connettore);
  645.             for (int i = 0; i < portaDelegata.getAzione().sizeAzioneDelegataList(); i++) {
  646.                 configurazioneAzione.addAzione(portaDelegata.getAzione().getAzioneDelegata(i));
  647.             }
  648.             fruitore.addConfigurazioneAzione(configurazioneAzione);
  649.            
  650.             String userLogin = ServletUtils.getUserLoginFromSession(session);
  651.            
  652.             IDPortaDelegata idPD = new IDPortaDelegata();
  653.             idPD.setNome(portaDelegata.getNome());
  654.             UpdateProprietaOggetto updateProprietaOggetto = new UpdateProprietaOggetto(idPD, userLogin);
  655.            
  656.             porteDelegateCore.performUpdateOperation(userLogin, porteDelegateHelper.smista(), asps, updateProprietaOggetto);
  657.            
  658.             // Preparo la lista
  659.             ConsoleSearch ricerca = (ConsoleSearch) ServletUtils.getSearchObjectFromSession(request, session, ConsoleSearch.class);


  660.             List<PortaDelegata> lista = null;
  661.             int idLista = -1;
  662.            
  663.             switch (parentPD) {
  664.             case PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT_CONFIGURAZIONE:
  665.                
  666.                 int idAspsInt = Integer.parseInt(idAsps);
  667.                
  668.                 AccordiServizioParteSpecificaHelper apsHelper = new AccordiServizioParteSpecificaHelper(request, pd, session);
  669.                
  670.                 if(datiInvocazione) {
  671.                    
  672.                     String tipologia = ServletUtils.getObjectFromSession(request, session, String.class, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE);
  673.                     boolean gestioneFruitori = false;
  674.                     if(tipologia!=null &&
  675.                         AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_FRUIZIONE.equals(tipologia)) {
  676.                         gestioneFruitori = true;
  677.                     }
  678.                     if(gestioneFruitori) {
  679.                        
  680.                         idLista = Liste.SERVIZI;
  681.                        
  682.                         ricerca = apsHelper.checkSearchParameters(idLista, ricerca);
  683.                        
  684.                         ricerca.addFilter(idLista, Filtri.FILTRO_DOMINIO, SoggettiCostanti.SOGGETTO_DOMINIO_ESTERNO_VALUE);
  685.                        
  686.                         String superUser =   ServletUtils.getUserLoginFromSession(session);
  687.                         PermessiUtente pu = ServletUtils.getUserFromSession(request, session).getPermessi();
  688.                         boolean [] permessi = new boolean[2];
  689.                         permessi[0] = pu.isServizi();
  690.                         permessi[1] = pu.isAccordiCooperazione();
  691.                         List<AccordoServizioParteSpecifica> lista2 = null;
  692.                         if(apsCore.isVisioneOggettiGlobale(superUser)){
  693.                             lista2 = apsCore.soggettiServizioList(null, ricerca,permessi, gestioneFruitori, false);
  694.                         }else{
  695.                             lista2 = apsCore.soggettiServizioList(superUser, ricerca, permessi, gestioneFruitori, false);
  696.                         }

  697.                         apsHelper.prepareServiziList(ricerca, lista2);
  698.                        
  699.                     }
  700.                     else {
  701.                    
  702.                         idLista = Liste.SERVIZI_FRUITORI;
  703.                         ricerca = porteDelegateHelper.checkSearchParameters(idLista, ricerca);
  704.                        
  705.                         List<Fruitore> listaFruitori = apsCore.serviziFruitoriList(idAspsInt, ricerca);
  706.                         apsHelper.prepareServiziFruitoriList(listaFruitori, idAsps, ricerca);
  707.                        
  708.                     }
  709.                 }
  710.                 else {
  711.                     idLista = Liste.CONFIGURAZIONE_FRUIZIONE;
  712.                     ricerca = porteDelegateHelper.checkSearchParameters(idLista, ricerca);
  713.                    
  714.                     List<MappingFruizionePortaDelegata> listaMapping = apsCore.serviziFruitoriMappingList((long) Integer.parseInt(idFruizione), idSoggettoFruitore, idServizio, ricerca);
  715.                     apsHelper.serviziFruitoriMappingList(listaMapping, idAsps, idSoggFruitore, idSoggettoFruitore, idFruizione, ricerca);
  716.                 }
  717.                
  718.                 break;
  719.             case PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT_SOGGETTO:
  720.                 idLista = Liste.PORTE_DELEGATE_BY_SOGGETTO;
  721.                 ricerca = porteDelegateHelper.checkSearchParameters(idLista, ricerca);
  722.                 lista = porteDelegateCore.porteDelegateList(Integer.parseInt(idSoggFruitore), ricerca);
  723.                 porteDelegateHelper.preparePorteDelegateList(ricerca, lista,idLista);
  724.                 break;
  725.             case PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT_NONE:
  726.             default:
  727.                 idLista = Liste.PORTE_DELEGATE;
  728.                 ricerca = porteDelegateHelper.checkSearchParameters(idLista, ricerca);
  729.                 lista = porteDelegateCore.porteDelegateList(null, ricerca);
  730.                 porteDelegateHelper.preparePorteDelegateList(ricerca, lista,idLista);
  731.                 break;
  732.             }

  733.             ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  734.            
  735.             ForwardParams fwP = ForwardParams.OTHER("");
  736.             if(!porteDelegateHelper.isModalitaCompleta()) {
  737.                 fwP = PorteDelegateCostanti.TIPO_OPERAZIONE_CONFIGURAZIONE;
  738.             }
  739.            
  740.             // Forward control to the specified success URI
  741.             return ServletUtils.getStrutsForwardEditModeFinished(mapping, PorteDelegateCostanti.OBJECT_NAME_PORTE_DELEGATE_CONNETTORE_DEFAULT, fwP);
  742.         } catch (Exception e) {
  743.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,    PorteDelegateCostanti.OBJECT_NAME_PORTE_DELEGATE_CONNETTORE_DEFAULT,    ForwardParams.OTHER(""));
  744.         }  
  745.     }
  746. }