PorteDelegateGestioneCors.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.List;
  22. import java.util.ArrayList;

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

  26. import org.apache.commons.lang.StringUtils;
  27. import org.apache.struts.action.Action;
  28. import org.apache.struts.action.ActionForm;
  29. import org.apache.struts.action.ActionForward;
  30. import org.apache.struts.action.ActionMapping;
  31. import org.openspcoop2.core.config.Configurazione;
  32. import org.openspcoop2.core.config.CorsConfigurazione;
  33. import org.openspcoop2.core.config.CorsConfigurazioneHeaders;
  34. import org.openspcoop2.core.config.CorsConfigurazioneMethods;
  35. import org.openspcoop2.core.config.CorsConfigurazioneOrigin;
  36. import org.openspcoop2.core.config.PortaDelegata;
  37. import org.openspcoop2.core.config.constants.StatoFunzionalita;
  38. import org.openspcoop2.core.config.constants.TipoGestioneCORS;
  39. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  40. import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
  41. import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
  42. import org.openspcoop2.web.ctrlstat.servlet.config.ConfigurazioneCore;
  43. import org.openspcoop2.web.lib.mvc.Costanti;
  44. import org.openspcoop2.web.lib.mvc.DataElement;
  45. import org.openspcoop2.web.lib.mvc.ForwardParams;
  46. import org.openspcoop2.web.lib.mvc.GeneralData;
  47. import org.openspcoop2.web.lib.mvc.PageData;
  48. import org.openspcoop2.web.lib.mvc.Parameter;
  49. import org.openspcoop2.web.lib.mvc.ServletUtils;
  50. import org.openspcoop2.web.lib.mvc.TipoOperazione;

  51. /**
  52.  * PorteDelegateGestioneCors
  53.  *
  54.  * @author Andrea Poli (apoli@link.it)
  55.  * @author Giuliano Pintori (pintori@link.it)
  56.  * @author $Author$
  57.  * @version $Rev$, $Date$
  58.  *
  59.  */
  60. public class PorteDelegateGestioneCors extends Action {

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

  63.         TipoOperazione tipoOperazione = TipoOperazione.OTHER;

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

  65.         // Inizializzo PageData
  66.         PageData pd = new PageData();

  67.         GeneralHelper generalHelper = new GeneralHelper(session);

  68.         // Inizializzo GeneralData
  69.         GeneralData gd = generalHelper.initGeneralData(request);

  70.         String userLogin = ServletUtils.getUserLoginFromSession(session);  

  71.         try {
  72.             PorteDelegateHelper porteDelegateHelper = new PorteDelegateHelper(request, pd, session);
  73.             // prelevo il flag che mi dice da quale pagina ho acceduto la sezione delle porte delegate
  74.             Integer parentPD = ServletUtils.getIntegerAttributeFromSession(PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT, session, request);
  75.             if(parentPD == null) parentPD = PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT_NONE;
  76.             String id = porteDelegateHelper.getParameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ID);
  77.             int idInt = Integer.parseInt(id);
  78.             String idSoggFruitore = porteDelegateHelper.getParameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ID_SOGGETTO);
  79.             String idAsps = porteDelegateHelper.getParameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ID_ASPS);
  80.             if(idAsps == null)
  81.                 idAsps = "";
  82.             String idFruizione= porteDelegateHelper.getParameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_ID_FRUIZIONE);
  83.             if(idFruizione == null)
  84.                 idFruizione = "";

  85.             // Preparo il menu
  86.             porteDelegateHelper.makeMenu();
  87.            
  88.             // Prendo il nome della porta
  89.             PorteDelegateCore porteDelegateCore = new PorteDelegateCore();
  90.             ConfigurazioneCore confCore = new ConfigurazioneCore(porteDelegateCore);

  91.             PortaDelegata portaDelegata = porteDelegateCore.getPortaDelegata(idInt);
  92.             String idporta = portaDelegata.getNome();
  93.            
  94.             boolean showStato = true;
  95.             String statoCorsPorta = porteDelegateHelper.getParameter(CostantiControlStation.PARAMETRO_CONFIGURAZIONE_CORS_STATO_PORTA);
  96.             String statoCorsTmp = porteDelegateHelper.getParameter(CostantiControlStation.PARAMETRO_CONFIGURAZIONE_CORS_STATO);
  97.             boolean corsStato = ServletUtils.isCheckBoxEnabled(statoCorsTmp);
  98.             String corsTipoTmp = porteDelegateHelper.getParameter(CostantiControlStation.PARAMETRO_CONFIGURAZIONE_CORS_TIPO);
  99.             TipoGestioneCORS corsTipo = corsTipoTmp != null ? TipoGestioneCORS.toEnumConstant(corsTipoTmp) : TipoGestioneCORS.GATEWAY;
  100.             String corsAllAllowOriginsTmp = porteDelegateHelper.getParameter(CostantiControlStation.PARAMETRO_CONFIGURAZIONE_CORS_ALL_ALLOW_ORIGINS);
  101.             boolean corsAllAllowOrigins = ServletUtils.isCheckBoxEnabled(corsAllAllowOriginsTmp);
  102.             String corsAllAllowHeadersTmp = porteDelegateHelper.getParameter(CostantiControlStation.PARAMETRO_CONFIGURAZIONE_CORS_ALL_ALLOW_HEADERS);
  103.             boolean corsAllAllowHeaders = ServletUtils.isCheckBoxEnabled(corsAllAllowHeadersTmp);
  104.             String corsAllAllowMethodsTmp = porteDelegateHelper.getParameter(CostantiControlStation.PARAMETRO_CONFIGURAZIONE_CORS_ALL_ALLOW_METHODS);
  105.             boolean corsAllAllowMethods = ServletUtils.isCheckBoxEnabled(corsAllAllowMethodsTmp);
  106.             String corsAllowHeaders =  porteDelegateHelper.getParameter(CostantiControlStation.PARAMETRO_CONFIGURAZIONE_CORS_ALLOW_HEADERS);
  107.             String corsAllowOrigins =  porteDelegateHelper.getParameter(CostantiControlStation.PARAMETRO_CONFIGURAZIONE_CORS_ALLOW_ORIGINS);
  108.             String corsAllowMethods =  porteDelegateHelper.getParameter(CostantiControlStation.PARAMETRO_CONFIGURAZIONE_CORS_ALLOW_METHODS);
  109.             String corsAllowCredentialTmp = porteDelegateHelper.getParameter(CostantiControlStation.PARAMETRO_CONFIGURAZIONE_CORS_ALLOW_CREDENTIALS);
  110.             boolean corsAllowCredential =  ServletUtils.isCheckBoxEnabled(corsAllowCredentialTmp);
  111.             String corsExposeHeaders = porteDelegateHelper.getParameter(CostantiControlStation.PARAMETRO_CONFIGURAZIONE_CORS_EXPOSE_HEADERS);
  112.             String corsMaxAgeTmp = porteDelegateHelper.getParameter(CostantiControlStation.PARAMETRO_CONFIGURAZIONE_CORS_MAX_AGE);
  113.             boolean corsMaxAge =  ServletUtils.isCheckBoxEnabled(corsMaxAgeTmp);
  114.             String corsMaxAgeSecondsTmp = porteDelegateHelper.getParameter(CostantiControlStation.PARAMETRO_CONFIGURAZIONE_CORS_MAX_AGE_SECONDS);
  115.             int corsMaxAgeSeconds = -1;
  116.             if(corsMaxAgeSecondsTmp != null) {
  117.                 try {
  118.                     corsMaxAgeSeconds = Integer.parseInt(corsMaxAgeSecondsTmp);
  119.                 }catch(Exception e) {
  120.                     // ignore
  121.                 }
  122.             }

  123.             CorsConfigurazione oldConfigurazione = portaDelegata.getGestioneCors();
  124.            
  125.             boolean initConfigurazione = false;
  126.             String postBackElementName = porteDelegateHelper.getPostBackElementName();
  127.             if(postBackElementName != null ){
  128.                 if(postBackElementName.equalsIgnoreCase(CostantiControlStation.PARAMETRO_CONFIGURAZIONE_CORS_STATO_PORTA)){
  129.                     initConfigurazione = true;
  130.                 }
  131.                
  132.                 if(postBackElementName.equalsIgnoreCase(CostantiControlStation.PARAMETRO_CONFIGURAZIONE_CORS_STATO)){
  133.                     if(!porteDelegateHelper.isCorsAbilitato(oldConfigurazione) && corsStato) {
  134.                         CorsConfigurazione configurazioneTmp = new CorsConfigurazione();
  135.                        
  136.                         corsTipo = configurazioneTmp.getTipo();
  137.                         if(configurazioneTmp.getTipo() != null && configurazioneTmp.getTipo().equals(TipoGestioneCORS.GATEWAY)) {

  138.                             corsAllAllowOrigins = true;
  139.                             if(configurazioneTmp.getAccessControlAllAllowOrigins() != null && configurazioneTmp.getAccessControlAllAllowOrigins().equals(StatoFunzionalita.DISABILITATO)) {
  140.                                 corsAllAllowOrigins = false;

  141.                                 configurazioneTmp.setAccessControlAllowOrigins(new CorsConfigurazioneOrigin());
  142.                                 corsAllowOrigins = StringUtils.join(configurazioneTmp.getAccessControlAllowOrigins().getOriginList(), ",");
  143.                             }

  144.                             corsAllAllowHeaders = false;
  145.                             if(configurazioneTmp.getAccessControlAllAllowHeaders() != null && configurazioneTmp.getAccessControlAllAllowHeaders().equals(StatoFunzionalita.ABILITATO)) {
  146.                                 corsAllAllowHeaders = true;
  147.                             }
  148.                             if(!corsAllAllowHeaders) {
  149.                                 configurazioneTmp.setAccessControlAllowHeaders(new CorsConfigurazioneHeaders());
  150.                                 corsAllowHeaders = StringUtils.join(configurazioneTmp.getAccessControlAllowHeaders().getHeaderList(), ",");
  151.                             }

  152.                             corsAllAllowMethods = false;
  153.                             if(configurazioneTmp.getAccessControlAllAllowMethods() != null && configurazioneTmp.getAccessControlAllAllowMethods().equals(StatoFunzionalita.ABILITATO)) {
  154.                                 corsAllAllowMethods = true;
  155.                             }
  156.                             if(!corsAllAllowMethods) {
  157.                                 configurazioneTmp.setAccessControlAllowMethods(new CorsConfigurazioneMethods());
  158.                                 corsAllowMethods = StringUtils.join(configurazioneTmp.getAccessControlAllowMethods().getMethodList(), ",");
  159.                             }

  160.                             configurazioneTmp.setAccessControlExposeHeaders(new CorsConfigurazioneHeaders());
  161.                             corsExposeHeaders = StringUtils.join(configurazioneTmp.getAccessControlExposeHeaders().getHeaderList(), ",");

  162.                             corsAllowCredential = false;
  163.                             if(configurazioneTmp.getAccessControlAllowCredentials() != null && configurazioneTmp.getAccessControlAllowCredentials().equals(StatoFunzionalita.ABILITATO)) {
  164.                                 corsAllowCredential = true;
  165.                             }

  166.                             corsMaxAge = false;
  167.                             corsMaxAgeSeconds = -1;
  168.                             if(configurazioneTmp.getAccessControlMaxAge() != null ) {
  169.                                 corsMaxAge = true;
  170.                                 corsMaxAgeSeconds = configurazioneTmp.getAccessControlMaxAge();
  171.                             }
  172.                         }
  173.                     }
  174.                 }
  175.             }
  176.            
  177.             // setto la barra del titolo
  178.             List<Parameter> lstParam = porteDelegateHelper.getTitoloPD(parentPD, idSoggFruitore, idAsps, idFruizione);
  179.            
  180.             String labelPerPorta = null;
  181.             if(parentPD!=null && (parentPD.intValue() == PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT_CONFIGURAZIONE)) {
  182.                 lstParam.remove(lstParam.size()-1);
  183.                 labelPerPorta = porteDelegateCore.getLabelRegolaMappingFruizionePortaDelegata(
  184.                         PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_CORS_CONFIGURAZIONE_CONFIG_DI,
  185.                         PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_CORS_CONFIGURAZIONE,
  186.                         portaDelegata);
  187.             }
  188.             else {
  189.                 labelPerPorta = PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_CORS_CONFIGURAZIONE_CONFIG_DI+idporta;
  190.             }
  191.            
  192.             if(labelPerPorta.contains(CostantiControlStation.LABEL_DEL_GRUPPO)) {
  193.                 labelPerPorta = labelPerPorta.substring(0, labelPerPorta.indexOf(CostantiControlStation.LABEL_DEL_GRUPPO));
  194.             }
  195.            
  196.             lstParam.add(new Parameter(labelPerPorta,  null));
  197.            
  198.             // imposto menu' contestuale
  199.             porteDelegateHelper.impostaComandiMenuContestualePD(idSoggFruitore, idAsps, idFruizione);
  200.            
  201.             // edit in progress
  202.             if (porteDelegateHelper.isEditModeInProgress()) {
  203.                 ServletUtils.setPageDataTitle(pd, lstParam);
  204.                
  205.                 if(statoCorsPorta == null) {
  206.                     if(oldConfigurazione == null) {
  207.                         statoCorsPorta = CostantiControlStation.VALUE_PARAMETRO_CORS_STATO_DEFAULT;
  208.                     } else {
  209.                         statoCorsPorta = CostantiControlStation.VALUE_PARAMETRO_CORS_STATO_RIDEFINITO;
  210.                         if(oldConfigurazione.getStato() != null && oldConfigurazione.getStato().equals(StatoFunzionalita.ABILITATO)) {
  211.                             corsStato = true;

  212.                             corsTipo = oldConfigurazione.getTipo();
  213.                             if(oldConfigurazione.getTipo() != null && oldConfigurazione.getTipo().equals(TipoGestioneCORS.GATEWAY)) {

  214.                                 corsAllAllowOrigins = true;
  215.                                 if(oldConfigurazione.getAccessControlAllAllowOrigins() != null && oldConfigurazione.getAccessControlAllAllowOrigins().equals(StatoFunzionalita.DISABILITATO)) {
  216.                                     corsAllAllowOrigins = false;

  217.                                     if(oldConfigurazione.getAccessControlAllowOrigins() != null) {
  218.                                         corsAllowOrigins = StringUtils.join(oldConfigurazione.getAccessControlAllowOrigins().getOriginList(), ",");
  219.                                     }
  220.                                 }

  221.                                 corsAllAllowHeaders = false;
  222.                                 if(oldConfigurazione.getAccessControlAllAllowHeaders() != null && oldConfigurazione.getAccessControlAllAllowHeaders().equals(StatoFunzionalita.ABILITATO)) {
  223.                                     corsAllAllowHeaders = true;
  224.                                 }
  225.                                 if(!corsAllAllowHeaders &&
  226.                                     oldConfigurazione.getAccessControlAllowHeaders() != null) {
  227.                                     corsAllowHeaders = StringUtils.join(oldConfigurazione.getAccessControlAllowHeaders().getHeaderList(), ",");
  228.                                 }

  229.                                 corsAllAllowMethods = false;
  230.                                 if(oldConfigurazione.getAccessControlAllAllowMethods() != null && oldConfigurazione.getAccessControlAllAllowMethods().equals(StatoFunzionalita.ABILITATO)) {
  231.                                     corsAllAllowMethods = true;
  232.                                 }
  233.                                 if(!corsAllAllowMethods &&
  234.                                     oldConfigurazione.getAccessControlAllowMethods() != null) {
  235.                                     corsAllowMethods = StringUtils.join(oldConfigurazione.getAccessControlAllowMethods().getMethodList(), ",");
  236.                                 }

  237.                                 if(oldConfigurazione.getAccessControlExposeHeaders() != null) {
  238.                                     corsExposeHeaders = StringUtils.join(oldConfigurazione.getAccessControlExposeHeaders().getHeaderList(), ",");
  239.                                 }

  240.                                 corsAllowCredential = false;
  241.                                 if(oldConfigurazione.getAccessControlAllowCredentials() != null && oldConfigurazione.getAccessControlAllowCredentials().equals(StatoFunzionalita.ABILITATO)) {
  242.                                     corsAllowCredential = true;
  243.                                 }

  244.                                 corsMaxAge = false;
  245.                                 corsMaxAgeSeconds = -1;
  246.                                 if(oldConfigurazione.getAccessControlMaxAge() != null ) {
  247.                                     corsMaxAge = true;
  248.                                     corsMaxAgeSeconds = oldConfigurazione.getAccessControlMaxAge();
  249.                                 }
  250.                             }

  251.                         }
  252.                     }
  253.                 }
  254.                
  255.                 if(initConfigurazione) {
  256.                     if(statoCorsPorta.equals(CostantiControlStation.VALUE_PARAMETRO_CORS_STATO_RIDEFINITO)) {
  257.                         Configurazione configurazione = confCore.getConfigurazioneGenerale();
  258.                         oldConfigurazione = configurazione.getGestioneCors();
  259.                         corsStato = false;
  260.                         if(oldConfigurazione != null) {
  261.                             if(oldConfigurazione.getStato() != null && oldConfigurazione.getStato().equals(StatoFunzionalita.ABILITATO)) {
  262.                                 corsStato = true;

  263.                                 corsTipo = oldConfigurazione.getTipo();
  264.                                 if(oldConfigurazione.getTipo() != null && oldConfigurazione.getTipo().equals(TipoGestioneCORS.GATEWAY)) {

  265.                                     corsAllAllowOrigins = true;
  266.                                     if(oldConfigurazione.getAccessControlAllAllowOrigins() != null && oldConfigurazione.getAccessControlAllAllowOrigins().equals(StatoFunzionalita.DISABILITATO)) {
  267.                                         corsAllAllowOrigins = false;

  268.                                         if(oldConfigurazione.getAccessControlAllowOrigins() != null) {
  269.                                             corsAllowOrigins = StringUtils.join(oldConfigurazione.getAccessControlAllowOrigins().getOriginList(), ",");
  270.                                         }
  271.                                     }

  272.                                     corsAllAllowHeaders = false;
  273.                                     if(oldConfigurazione.getAccessControlAllAllowHeaders() != null && oldConfigurazione.getAccessControlAllAllowHeaders().equals(StatoFunzionalita.ABILITATO)) {
  274.                                         corsAllAllowHeaders = true;
  275.                                     }
  276.                                     if(!corsAllAllowHeaders &&
  277.                                         oldConfigurazione.getAccessControlAllowHeaders() != null) {
  278.                                         corsAllowHeaders = StringUtils.join(oldConfigurazione.getAccessControlAllowHeaders().getHeaderList(), ",");
  279.                                     }

  280.                                     corsAllAllowMethods = false;
  281.                                     if(oldConfigurazione.getAccessControlAllAllowMethods() != null && oldConfigurazione.getAccessControlAllAllowMethods().equals(StatoFunzionalita.ABILITATO)) {
  282.                                         corsAllAllowMethods = true;
  283.                                     }
  284.                                     if(!corsAllAllowMethods &&
  285.                                         oldConfigurazione.getAccessControlAllowMethods() != null) {
  286.                                         corsAllowMethods = StringUtils.join(oldConfigurazione.getAccessControlAllowMethods().getMethodList(), ",");
  287.                                     }

  288.                                     if(oldConfigurazione.getAccessControlExposeHeaders() != null) {
  289.                                         corsExposeHeaders = StringUtils.join(oldConfigurazione.getAccessControlExposeHeaders().getHeaderList(), ",");
  290.                                     }

  291.                                     corsAllowCredential = false;
  292.                                     if(oldConfigurazione.getAccessControlAllowCredentials() != null && oldConfigurazione.getAccessControlAllowCredentials().equals(StatoFunzionalita.ABILITATO)) {
  293.                                         corsAllowCredential = true;
  294.                                     }

  295.                                     corsMaxAge = false;
  296.                                     corsMaxAgeSeconds = -1;
  297.                                     if(oldConfigurazione.getAccessControlMaxAge() != null ) {
  298.                                         corsMaxAge = true;
  299.                                         corsMaxAgeSeconds = oldConfigurazione.getAccessControlMaxAge();
  300.                                     }
  301.                                 }
  302.                             }
  303.                             else {
  304.                                 corsStato = true;
  305.                                
  306.                                 CorsConfigurazione configurazioneTmp = new CorsConfigurazione();
  307.                                
  308.                                 corsTipo = configurazioneTmp.getTipo();
  309.                                 if(configurazioneTmp.getTipo() != null && configurazioneTmp.getTipo().equals(TipoGestioneCORS.GATEWAY)) {

  310.                                     corsAllAllowOrigins = true;
  311.                                     if(configurazioneTmp.getAccessControlAllAllowOrigins() != null && configurazioneTmp.getAccessControlAllAllowOrigins().equals(StatoFunzionalita.DISABILITATO)) {
  312.                                         corsAllAllowOrigins = false;

  313.                                         configurazioneTmp.setAccessControlAllowOrigins(new CorsConfigurazioneOrigin());
  314.                                         corsAllowOrigins = StringUtils.join(configurazioneTmp.getAccessControlAllowOrigins().getOriginList(), ",");
  315.                                     }

  316.                                     corsAllAllowHeaders = false;
  317.                                     if(configurazioneTmp.getAccessControlAllAllowHeaders() != null && configurazioneTmp.getAccessControlAllAllowHeaders().equals(StatoFunzionalita.ABILITATO)) {
  318.                                         corsAllAllowHeaders = true;
  319.                                     }
  320.                                     if(!corsAllAllowHeaders) {
  321.                                         configurazioneTmp.setAccessControlAllowHeaders(new CorsConfigurazioneHeaders());
  322.                                         corsAllowHeaders = StringUtils.join(configurazioneTmp.getAccessControlAllowHeaders().getHeaderList(), ",");
  323.                                     }

  324.                                     corsAllAllowMethods = false;
  325.                                     if(configurazioneTmp.getAccessControlAllAllowMethods() != null && configurazioneTmp.getAccessControlAllAllowMethods().equals(StatoFunzionalita.ABILITATO)) {
  326.                                         corsAllAllowMethods = true;
  327.                                     }
  328.                                     if(!corsAllAllowMethods) {
  329.                                         configurazioneTmp.setAccessControlAllowMethods(new CorsConfigurazioneMethods());
  330.                                         corsAllowMethods = StringUtils.join(configurazioneTmp.getAccessControlAllowMethods().getMethodList(), ",");
  331.                                     }

  332.                                     configurazioneTmp.setAccessControlExposeHeaders(new CorsConfigurazioneHeaders());
  333.                                     corsExposeHeaders = StringUtils.join(configurazioneTmp.getAccessControlExposeHeaders().getHeaderList(), ",");

  334.                                     corsAllowCredential = false;
  335.                                     if(configurazioneTmp.getAccessControlAllowCredentials() != null && configurazioneTmp.getAccessControlAllowCredentials().equals(StatoFunzionalita.ABILITATO)) {
  336.                                         corsAllowCredential = true;
  337.                                     }

  338.                                     corsMaxAge = false;
  339.                                     corsMaxAgeSeconds = -1;
  340.                                     if(configurazioneTmp.getAccessControlMaxAge() != null ) {
  341.                                         corsMaxAge = true;
  342.                                         corsMaxAgeSeconds = configurazioneTmp.getAccessControlMaxAge();
  343.                                     }
  344.                                 }
  345.                             }
  346.                         }
  347.                     }
  348.                 }

  349.                 // preparo i campi
  350.                 List<DataElement> dati = new ArrayList<>();
  351.                 dati.add(ServletUtils.getDataElementForEditModeFinished());

  352.                 porteDelegateHelper.addConfigurazioneCorsPorteToDati(tipoOperazione, dati, showStato, statoCorsPorta,
  353.                         corsStato, corsTipo, corsAllAllowOrigins, corsAllAllowHeaders, corsAllAllowMethods,
  354.                         corsAllowHeaders, corsAllowOrigins, corsAllowMethods, corsAllowCredential, corsExposeHeaders, corsMaxAge, corsMaxAgeSeconds);
  355.                
  356.                 dati = porteDelegateHelper.addHiddenFieldsToDati(TipoOperazione.OTHER,id, idSoggFruitore, null,idAsps,
  357.                         idFruizione, portaDelegata.getTipoSoggettoProprietario(), portaDelegata.getNomeSoggettoProprietario(), dati);

  358.                 pd.setDati(dati);

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

  360.                 return ServletUtils.getStrutsForwardEditModeInProgress(mapping, PorteDelegateCostanti.OBJECT_NAME_PORTE_DELEGATE_GESTIONE_CORS, ForwardParams.OTHER(""));
  361.             }

  362.             // Controlli sui campi immessi
  363.             boolean isOk = porteDelegateHelper.checkDataConfigurazioneCorsPorta(tipoOperazione, showStato, statoCorsPorta);
  364.             if (!isOk) {

  365.                 ServletUtils.setPageDataTitle(pd, lstParam);

  366.                 // preparo i campi
  367.                 List<DataElement> dati = new ArrayList<>();
  368.                 dati.add(ServletUtils.getDataElementForEditModeFinished());
  369.                
  370.                 porteDelegateHelper.addConfigurazioneCorsPorteToDati(tipoOperazione, dati, showStato, statoCorsPorta,
  371.                         corsStato, corsTipo, corsAllAllowOrigins, corsAllAllowHeaders, corsAllAllowMethods,
  372.                         corsAllowHeaders, corsAllowOrigins, corsAllowMethods, corsAllowCredential, corsExposeHeaders, corsMaxAge, corsMaxAgeSeconds);
  373.                
  374.                 dati = porteDelegateHelper.addHiddenFieldsToDati(TipoOperazione.OTHER,id, idSoggFruitore, null,idAsps,
  375.                         idFruizione, portaDelegata.getTipoSoggettoProprietario(), portaDelegata.getNomeSoggettoProprietario(), dati);

  376.                 pd.setDati(dati);

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

  378.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping, PorteDelegateCostanti.OBJECT_NAME_PORTE_DELEGATE_GESTIONE_CORS, ForwardParams.OTHER(""));
  379.             }
  380.            
  381.             CorsConfigurazione newConfigurazione = null;
  382.             if(statoCorsPorta.equals(CostantiControlStation.VALUE_PARAMETRO_CORS_STATO_RIDEFINITO)) {
  383.                 // se ho confermato effettuo la modifica altrimenti torno direttamente alla lista
  384.                 newConfigurazione = porteDelegateHelper.getGestioneCors(corsStato, corsTipo, corsAllAllowOrigins, corsAllAllowHeaders, corsAllAllowMethods,
  385.                         corsAllowHeaders, corsAllowOrigins, corsAllowMethods, corsAllowCredential, corsExposeHeaders, corsMaxAge, corsMaxAgeSeconds);
  386.             }
  387.            
  388.             portaDelegata.setGestioneCors(newConfigurazione);

  389.             porteDelegateCore.performUpdateOperation(userLogin, porteDelegateHelper.smista(), portaDelegata);
  390.        
  391.             // Preparo la lista
  392.             pd.setMessage(PorteDelegateCostanti.LABEL_PORTE_DELEGATE_CORS_CON_SUCCESSO, Costanti.MESSAGE_TYPE_INFO);

  393.             portaDelegata = porteDelegateCore.getPortaDelegata(idInt);
  394.             idporta = portaDelegata.getNome();

  395.             ServletUtils.setPageDataTitle(pd, lstParam);

  396.             // preparo i campi
  397.             List<DataElement> dati = new ArrayList<>();
  398.             dati.add(ServletUtils.getDataElementForEditModeFinished());
  399.            
  400.             CorsConfigurazione configurazioneAggiornata  = portaDelegata.getGestioneCors();
  401.            
  402.             if(configurazioneAggiornata == null) {
  403.                 statoCorsPorta = CostantiControlStation.VALUE_PARAMETRO_CORS_STATO_DEFAULT;
  404.             } else {
  405.                 statoCorsPorta = CostantiControlStation.VALUE_PARAMETRO_CORS_STATO_RIDEFINITO;
  406.                 if(configurazioneAggiornata.getStato() != null && configurazioneAggiornata.getStato().equals(StatoFunzionalita.ABILITATO)) {
  407.                     corsStato = true;

  408.                     corsTipo = configurazioneAggiornata.getTipo();
  409.                     if(configurazioneAggiornata.getTipo() != null && configurazioneAggiornata.getTipo().equals(TipoGestioneCORS.GATEWAY)) {

  410.                         corsAllAllowOrigins = true;
  411.                         if(configurazioneAggiornata.getAccessControlAllAllowOrigins() != null && configurazioneAggiornata.getAccessControlAllAllowOrigins().equals(StatoFunzionalita.DISABILITATO)) {
  412.                             corsAllAllowOrigins = false;

  413.                             if(configurazioneAggiornata.getAccessControlAllowOrigins() != null) {
  414.                                 corsAllowOrigins = StringUtils.join(configurazioneAggiornata.getAccessControlAllowOrigins().getOriginList(), ",");
  415.                             }
  416.                         }

  417.                         corsAllAllowHeaders = false;
  418.                         if(configurazioneAggiornata.getAccessControlAllAllowHeaders() != null && configurazioneAggiornata.getAccessControlAllAllowHeaders().equals(StatoFunzionalita.ABILITATO)) {
  419.                             corsAllAllowHeaders = true;
  420.                         }
  421.                         if(!corsAllAllowHeaders &&
  422.                             configurazioneAggiornata.getAccessControlAllowHeaders() != null) {
  423.                             corsAllowHeaders = StringUtils.join(configurazioneAggiornata.getAccessControlAllowHeaders().getHeaderList(), ",");
  424.                         }

  425.                         corsAllAllowMethods = false;
  426.                         if(configurazioneAggiornata.getAccessControlAllAllowMethods() != null && configurazioneAggiornata.getAccessControlAllAllowMethods().equals(StatoFunzionalita.ABILITATO)) {
  427.                             corsAllAllowMethods = true;
  428.                         }
  429.                         if(!corsAllAllowMethods &&
  430.                             configurazioneAggiornata.getAccessControlAllowMethods() != null) {
  431.                             corsAllowMethods = StringUtils.join(configurazioneAggiornata.getAccessControlAllowMethods().getMethodList(), ",");
  432.                         }

  433.                         if(configurazioneAggiornata.getAccessControlExposeHeaders() != null) {
  434.                             corsExposeHeaders = StringUtils.join(configurazioneAggiornata.getAccessControlExposeHeaders().getHeaderList(), ",");
  435.                         }

  436.                         corsAllowCredential = false;
  437.                         if(configurazioneAggiornata.getAccessControlAllowCredentials() != null && configurazioneAggiornata.getAccessControlAllowCredentials().equals(StatoFunzionalita.ABILITATO)) {
  438.                             corsAllowCredential = true;
  439.                         }

  440.                         corsMaxAge = false;
  441.                         corsMaxAgeSeconds = -1;
  442.                         if(configurazioneAggiornata.getAccessControlMaxAge() != null ) {
  443.                             corsMaxAge = true;
  444.                             corsMaxAgeSeconds = configurazioneAggiornata.getAccessControlMaxAge();
  445.                         }
  446.                     }

  447.                 }
  448.             }
  449.            
  450.             porteDelegateHelper.addConfigurazioneCorsPorteToDati(tipoOperazione, dati, showStato, statoCorsPorta,
  451.                     corsStato, corsTipo, corsAllAllowOrigins, corsAllAllowHeaders, corsAllAllowMethods,
  452.                     corsAllowHeaders, corsAllowOrigins, corsAllowMethods, corsAllowCredential, corsExposeHeaders, corsMaxAge, corsMaxAgeSeconds);
  453.            
  454.             dati = porteDelegateHelper.addHiddenFieldsToDati(TipoOperazione.OTHER,id, idSoggFruitore, null,idAsps,
  455.                     idFruizione, portaDelegata.getTipoSoggettoProprietario(), portaDelegata.getNomeSoggettoProprietario(), dati);

  456.             pd.setDati(dati);

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

  458.             return ServletUtils.getStrutsForwardEditModeFinished(mapping, PorteDelegateCostanti.OBJECT_NAME_PORTE_DELEGATE_GESTIONE_CORS, ForwardParams.OTHER(""));
  459.         } catch (Exception e) {
  460.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  461.                     PorteDelegateCostanti.OBJECT_NAME_PORTE_DELEGATE_GESTIONE_CORS, ForwardParams.OTHER(""));
  462.         }
  463.     }

  464. }