ConfigurazioneSistema.java
- /*
- * GovWay - A customizable API Gateway
- * https://govway.org
- *
- * Copyright (c) 2005-2025 Link.it srl (https://link.it).
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3, as published by
- * the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- package org.openspcoop2.pdd.core.jmx;
- import java.security.Provider;
- import java.security.Security;
- import java.sql.Connection;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Collections;
- import java.util.Enumeration;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Map;
- import java.util.Properties;
- import java.util.Set;
- import java.util.concurrent.Callable;
- import javax.crypto.Cipher;
- import javax.management.Attribute;
- import javax.management.AttributeList;
- import javax.management.AttributeNotFoundException;
- import javax.management.DynamicMBean;
- import javax.management.InvalidAttributeValueException;
- import javax.management.JMException;
- import javax.management.MBeanAttributeInfo;
- import javax.management.MBeanConstructorInfo;
- import javax.management.MBeanException;
- import javax.management.MBeanInfo;
- import javax.management.MBeanOperationInfo;
- import javax.management.MBeanParameterInfo;
- import javax.management.NotificationBroadcasterSupport;
- import javax.management.ReflectionException;
- import org.openspcoop2.core.byok.BYOKWrappedValue;
- import org.openspcoop2.core.commons.CoreException;
- import org.openspcoop2.core.config.GenericProperties;
- import org.openspcoop2.core.config.Property;
- import org.openspcoop2.core.config.driver.DriverConfigurazioneNotFound;
- import org.openspcoop2.core.constants.CostantiDB;
- import org.openspcoop2.core.id.IDSoggetto;
- import org.openspcoop2.message.OpenSPCoop2MessageFactory;
- import org.openspcoop2.pdd.config.ConfigurazionePdDManager;
- import org.openspcoop2.pdd.config.DBManager;
- import org.openspcoop2.pdd.config.OpenSPCoop2Properties;
- import org.openspcoop2.pdd.config.Resource;
- import org.openspcoop2.pdd.core.CostantiPdD;
- import org.openspcoop2.pdd.core.byok.BYOKMapProperties;
- import org.openspcoop2.pdd.core.byok.DriverBYOK;
- import org.openspcoop2.pdd.core.byok.DriverBYOKUtilities;
- import org.openspcoop2.pdd.logger.OpenSPCoop2Logger;
- import org.openspcoop2.pdd.logger.filetrace.FileTraceConfig;
- import org.openspcoop2.pdd.logger.filetrace.FileTraceGovWayState;
- import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
- import org.openspcoop2.protocol.manifest.Context;
- import org.openspcoop2.protocol.sdk.IProtocolFactory;
- import org.openspcoop2.utils.Utilities;
- import org.openspcoop2.utils.UtilsException;
- import org.openspcoop2.utils.UtilsMultiException;
- import org.openspcoop2.utils.certificate.hsm.HSMManager;
- import org.openspcoop2.utils.certificate.ocsp.OCSPManager;
- import org.openspcoop2.utils.datasource.DataSourceFactory;
- import org.openspcoop2.utils.date.DateUtils;
- import org.openspcoop2.utils.io.Base64Utilities;
- import org.openspcoop2.utils.io.HexBinaryUtilities;
- import org.openspcoop2.utils.jdbc.JDBCUtilities;
- import org.openspcoop2.utils.properties.MapProperties;
- import org.openspcoop2.utils.resources.CharsetUtilities;
- import org.openspcoop2.utils.resources.MapReader;
- import org.openspcoop2.utils.transport.http.SSLConstants;
- import org.openspcoop2.utils.transport.http.SSLUtilities;
- import org.slf4j.Logger;
- import com.sun.xml.messaging.saaj.soap.SOAPDocumentImpl;
- /**
- * Implementazione JMX per la gestione della Configurazione di Sistema della Porta
- *
- * @author Poli Andrea (apoli@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class ConfigurazioneSistema extends NotificationBroadcasterSupport implements DynamicMBean {
- private static final String LUNGHEZZA_PARAMETRI_ERRORE = "] Lunghezza parametri non corretta: ";
- private static final String CHIAVE = "Chiave";
-
- /** Nomi metodi */
- public static final String VERSIONE_PDD = "getVersionePdD";
- public static final String VERSIONE_BASE_DATI = "getVersioneBaseDati";
- public static final String VERSIONE_JAVA = "getVersioneJava";
- public static final String VENDOR_JAVA = "getVendorJava";
- public static final String TIPO_DATABASE = "getTipoDatabase";
- public static final String INFORMAZIONI_DATABASE = "getInformazioniDatabase";
- public static final String INFORMAZIONI_SSL = "getInformazioniSSL";
- public static final String INFORMAZIONI_COMPLETE_SSL = "getInformazioniCompleteSSL";
- public static final String INFORMAZIONI_CRYPTOGRAPHY_KEY_LENGTH = "getInformazioniCryptographyKeyLength";
- public static final String INFORMAZIONI_CHARSET = "getInformazioniCharset";
- public static final String INFORMAZIONI_INTERNAZIONALIZZAZIONE = "getInformazioniInternazionalizzazione";
- public static final String INFORMAZIONI_COMPLETE_INTERNAZIONALIZZAZIONE = "getInformazioniCompleteInternazionalizzazione";
- public static final String INFORMAZIONI_TIMEZONE= "getInformazioniTimeZone";
- public static final String INFORMAZIONI_COMPLETE_TIMEZONE = "getInformazioniCompleteTimeZone";
- public static final String INFORMAZIONI_PROPRIETA_JAVA_NETWORKING= "getInformazioniProprietaJavaNetworking";
- public static final String INFORMAZIONI_COMPLETE_PROPRIETA_JAVA_NETWORKING= "getInformazioniCompleteProprietaJavaNetworking";
- public static final String INFORMAZIONI_PROPRIETA_JAVA_ALTRO= "getInformazioniProprietaJavaAltro";
- public static final String INFORMAZIONI_PROPRIETA_SISTEMA= "getInformazioniProprietaSistema";
- public static final String MESSAGE_FACTORY = "getMessageFactory";
- public static final String DIRECTORY_CONFIGURAZIONE = "getDirectoryConfigurazione";
- public static final String PROTOCOLS = "getPluginProtocols";
- public static final String INFORMAZIONI_INSTALLAZIONE = "getInformazioniInstallazione";
- public static final String FILE_TRACE_CONFIG = "getFileTrace";
- public static final String FILE_TRACE_UPDATE = "updateFileTrace";
- public static final String BYOK_WRAP = "wrapKey";
- public static final String BYOK_WRAP_BASE64 = "wrapBase64Key";
- public static final String BYOK_WRAP_HEX = "wrapHexKey";
- public static final String BYOK_UNWRAP = "unwrapKey";
- public static final String BYOK_UNWRAP_BASE64 = "unwrapKeyAsBase64";
- public static final String BYOK_UNWRAP_HEX = "unwrapKeyAsHex";
-
- private static boolean includePassword = false;
- public static boolean isIncludePassword() {
- return includePassword;
- }
- public static void setIncludePassword(boolean includePassword) {
- ConfigurazioneSistema.includePassword = includePassword;
- }
- /** getAttribute */
- @Override
- public Object getAttribute(String attributeName) throws AttributeNotFoundException,MBeanException,ReflectionException{
- if( (attributeName==null) || (attributeName.equals("")) )
- throw new IllegalArgumentException("Il nome dell'attributo e' nullo o vuoto");
- throw new AttributeNotFoundException("Attributo "+attributeName+" non trovato");
- }
- /** getAttributes */
- @Override
- public AttributeList getAttributes(String [] attributesNames){
- if(attributesNames==null)
- throw new IllegalArgumentException("Array nullo");
- AttributeList list = new AttributeList();
- for (int i=0; i<attributesNames.length; i++){
- try{
- list.add(new Attribute(attributesNames[i],getAttribute(attributesNames[i])));
- }catch(JMException ex){
- // ignore
- }
- }
- return list;
- }
- /** setAttribute */
- @Override
- public void setAttribute(Attribute attribute) throws AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException{
- if( attribute==null )
- throw new IllegalArgumentException("Il nome dell'attributo e' nullo");
- try{
- throw new AttributeNotFoundException("Attributo "+attribute.getName()+" non trovato");
- }catch(ClassCastException ce){
- throw new InvalidAttributeValueException("il tipo "+attribute.getValue().getClass()+" dell'attributo "+attribute.getName()+" non e' valido");
- }catch(JMException j){
- throw new MBeanException(j);
- }
- }
- /** setAttributes */
- @Override
- public AttributeList setAttributes(AttributeList list){
- if(list==null)
- throw new IllegalArgumentException("Lista degli attributi e' nulla");
- AttributeList ret = new AttributeList();
- Iterator<?> it = ret.iterator();
- while(it.hasNext()){
- try{
- Attribute attribute = (Attribute) it.next();
- setAttribute(attribute);
- ret.add(attribute);
- }catch(JMException ex){
- // ignore
- }
- }
- return ret;
- }
- /** invoke */
- @Override
- public Object invoke(String actionName, Object[]params, String[]signature) throws MBeanException,ReflectionException{
- if( (actionName==null) || (actionName.equals("")) )
- throw new IllegalArgumentException("Nessuna operazione definita");
- if(actionName.equals(VERSIONE_PDD)){
- return this.getVersionePdD();
- }
- else if(actionName.equals(VERSIONE_BASE_DATI)){
- return this.getVersioneBaseDati();
- }
- else if(actionName.equals(VERSIONE_JAVA)){
- return this.getVersioneJava();
- }
-
- else if(actionName.equals(VENDOR_JAVA)){
- return this.getVendorJava();
- }
- else if(actionName.equals(TIPO_DATABASE)){
- return this.getTipoDatabase();
- }
- else if(actionName.equals(INFORMAZIONI_DATABASE)){
- return this.getInformazioniDatabase();
- }
-
- else if(actionName.equals(INFORMAZIONI_SSL)){
- return this.getInformazioniSSL(false,false,false,false);
- }
-
- else if(actionName.equals(INFORMAZIONI_COMPLETE_SSL)){
- return this.getInformazioniSSL(true,true,true,true);
- }
-
- else if(actionName.equals(INFORMAZIONI_CRYPTOGRAPHY_KEY_LENGTH)){
- return this.getInformazioniCryptographyKeyLength();
- }
-
- else if(actionName.equals(INFORMAZIONI_CHARSET)){
- return this.getInformazioniCharset();
- }
-
- else if(actionName.equals(INFORMAZIONI_INTERNAZIONALIZZAZIONE)){
- return this.getInformazioniInternazionalizzazione(false);
- }
-
- else if(actionName.equals(INFORMAZIONI_COMPLETE_INTERNAZIONALIZZAZIONE)){
- return this.getInformazioniInternazionalizzazione(true);
- }
-
- else if(actionName.equals(INFORMAZIONI_TIMEZONE)){
- return this.getInformazioniTimeZone(false);
- }
-
- else if(actionName.equals(INFORMAZIONI_COMPLETE_TIMEZONE)){
- return this.getInformazioniTimeZone(true);
- }
-
- else if(actionName.equals(INFORMAZIONI_PROPRIETA_JAVA_NETWORKING)){
- return this.getInformazioniProprietaJava(false, true,false,ConfigurazioneSistema.includePassword);
- }
-
- else if(actionName.equals(INFORMAZIONI_COMPLETE_PROPRIETA_JAVA_NETWORKING)){
- return this.getInformazioniProprietaJava(true, true,false,ConfigurazioneSistema.includePassword);
- }
-
- else if(actionName.equals(INFORMAZIONI_PROPRIETA_JAVA_ALTRO)){
- return this.getInformazioniProprietaJava(true, false, true,ConfigurazioneSistema.includePassword);
- }
-
- else if(actionName.equals(INFORMAZIONI_PROPRIETA_SISTEMA)){
- return this.getInformazioniProprietaSistema();
- }
-
- else if(actionName.equals(MESSAGE_FACTORY)){
- return this.getMessageFactory();
- }
-
- else if(actionName.equals(DIRECTORY_CONFIGURAZIONE)){
- return this.getDirectoryConfigurazione();
- }
-
- else if(actionName.equals(PROTOCOLS)){
- return this.getPluginProtocols();
- }
-
- else if(actionName.equals(INFORMAZIONI_INSTALLAZIONE)){
- return this.getInformazioniInstallazione();
- }
-
- else if(actionName.equals(FILE_TRACE_CONFIG)){
- return this.getFileTrace();
- }
-
- else if(actionName.equals(FILE_TRACE_UPDATE)){
- return this.updateFileTrace();
- }
-
- else if(actionName.equals(BYOK_UNWRAP)){
-
- if(params.length != 1)
- throw new MBeanException(new Exception("["+BYOK_UNWRAP+LUNGHEZZA_PARAMETRI_ERRORE+params.length));
-
- String param1 = null;
- if(params[0]!=null && !"".equals(params[0])){
- param1 = (String)params[0];
- }
-
- return this.byokUnwrap(param1);
- }
-
- else if(actionName.equals(BYOK_UNWRAP_BASE64)){
-
- if(params.length != 1)
- throw new MBeanException(new Exception("["+BYOK_UNWRAP_BASE64+LUNGHEZZA_PARAMETRI_ERRORE+params.length));
-
- String param1 = null;
- if(params[0]!=null && !"".equals(params[0])){
- param1 = (String)params[0];
- }
-
- return this.byokBase64Unwrap(param1);
- }
-
- else if(actionName.equals(BYOK_UNWRAP_HEX)){
-
- if(params.length != 1)
- throw new MBeanException(new Exception("["+BYOK_UNWRAP_HEX+LUNGHEZZA_PARAMETRI_ERRORE+params.length));
-
- String param1 = null;
- if(params[0]!=null && !"".equals(params[0])){
- param1 = (String)params[0];
- }
-
- return this.byokHexUnwrap(param1);
- }
-
- else if(actionName.equals(BYOK_WRAP)){
-
- if(params.length != 1)
- throw new MBeanException(new Exception("["+BYOK_WRAP+LUNGHEZZA_PARAMETRI_ERRORE+params.length));
-
- String param1 = null;
- if(params[0]!=null && !"".equals(params[0])){
- param1 = (String)params[0];
- }
-
- return this.byokWrap(param1);
- }
-
- else if(actionName.equals(BYOK_WRAP_BASE64)){
-
- if(params.length != 1)
- throw new MBeanException(new Exception("["+BYOK_WRAP_BASE64+LUNGHEZZA_PARAMETRI_ERRORE+params.length));
-
- String param1 = null;
- if(params[0]!=null && !"".equals(params[0])){
- param1 = (String)params[0];
- }
-
- return this.byokWrapBase64Key(param1);
- }
-
- else if(actionName.equals(BYOK_WRAP_HEX)){
-
- if(params.length != 1)
- throw new MBeanException(new Exception("["+BYOK_WRAP_HEX+LUNGHEZZA_PARAMETRI_ERRORE+params.length));
-
- String param1 = null;
- if(params[0]!=null && !"".equals(params[0])){
- param1 = (String)params[0];
- }
-
- return this.byokWrapHexKey(param1);
- }
- throw new UnsupportedOperationException("Operazione "+actionName+" sconosciuta");
- }
- /* MBean info */
- @Override
- public MBeanInfo getMBeanInfo(){
- // Descrizione della classe nel MBean
- String className = this.getClass().getName();
- String description = "Configurazione di Sistema ("+this.openspcoopProperties.getVersione()+")";
- // VERSIONE_PDD
- MBeanOperationInfo versionePddOp = new MBeanOperationInfo(VERSIONE_PDD,"Visualizza la versione di GovWay",
- null,
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // VERSIONE_BASE_DATI
- MBeanOperationInfo versioneBaseDatiOp = new MBeanOperationInfo(VERSIONE_BASE_DATI,"Visualizza la versione della base dati",
- null,
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // VERSIONE_JAVA
- MBeanOperationInfo versioneJavaOp = new MBeanOperationInfo(VERSIONE_JAVA,"Visualizza la versione di Java",
- null,
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // VENDOR_JAVA
- MBeanOperationInfo vendorJavaOp = new MBeanOperationInfo(VENDOR_JAVA,"Visualizza le informazioni sul vendor di Java",
- null,
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // TIPO_DATABASE
- MBeanOperationInfo versioneTipoDatabaseOp = new MBeanOperationInfo(TIPO_DATABASE,"Visualizza il tipo di Database",
- null,
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // INFORMAZIONI_DATABASE
- MBeanOperationInfo informazioniDatabaseOp = new MBeanOperationInfo(INFORMAZIONI_DATABASE,"Visualizza le informazioni sul Database",
- null,
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // INFORMAZIONI_SSL
- MBeanOperationInfo informazioniSSLOp = new MBeanOperationInfo(INFORMAZIONI_SSL,"Visualizza le informazioni sulle connessioni SSL",
- null,
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // INFORMAZIONI_COMPLETE_SSL
- MBeanOperationInfo informazioniCompleteSSLOp = new MBeanOperationInfo(INFORMAZIONI_COMPLETE_SSL,"Visualizza le informazioni complete di algoritmi sulle connessioni SSL",
- null,
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // INFORMAZIONI_CRYPTOGRAPHY_KEY_LENGTH
- MBeanOperationInfo informazioniCRYPTOOp = new MBeanOperationInfo(INFORMAZIONI_CRYPTOGRAPHY_KEY_LENGTH,"Visualizza le informazioni sulla lunghezza delle chiavi di cifratura",
- null,
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // INFORMAZIONI_CHARSET
- MBeanOperationInfo informazioniCHARSETOp = new MBeanOperationInfo(INFORMAZIONI_CHARSET,"Visualizza le informazioni sul Charset",
- null,
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // INFORMAZIONI_INTERNAZIONALIZZAZIONE
- MBeanOperationInfo informazioniINTERNAZIONALIZZAZIONEOp = new MBeanOperationInfo(INFORMAZIONI_INTERNAZIONALIZZAZIONE,"Visualizza le informazioni sull'internazionalizzazione",
- null,
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // INFORMAZIONI_COMPLETE_INTERNAZIONALIZZAZIONE
- MBeanOperationInfo informazioniCompleteINTERNAZIONALIZZAZIONEOp = new MBeanOperationInfo(INFORMAZIONI_COMPLETE_INTERNAZIONALIZZAZIONE,"Visualizza le informazioni complete sull'internazionalizzazione",
- null,
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // INFORMAZIONI_TIMEZONE
- MBeanOperationInfo informazioniTIMEZONEOp = new MBeanOperationInfo(INFORMAZIONI_TIMEZONE,"Visualizza le informazioni sul TimeZone",
- null,
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // INFORMAZIONI_COMPLETE_TIMEZONE
- MBeanOperationInfo informazioniCompleteTIMEZONEOp = new MBeanOperationInfo(INFORMAZIONI_COMPLETE_TIMEZONE,"Visualizza le informazioni complete sul TimeZone",
- null,
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // INFORMAZIONI_PROPRIETA_JAVA_NETWORKING
- MBeanOperationInfo informazioniProprietaJavaNetworkingOp = new MBeanOperationInfo(INFORMAZIONI_PROPRIETA_JAVA_NETWORKING,"Visualizza le proprietà java riguardanti il networking",
- null,
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // INFORMAZIONI_COMPLETE_PROPRIETA_JAVA_NETWORKING
- MBeanOperationInfo informazioniCompleteProprietaJavaNetworkingOp = new MBeanOperationInfo(INFORMAZIONI_COMPLETE_PROPRIETA_JAVA_NETWORKING,"Visualizza tutte le proprietà java riguardanti il networking",
- null,
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // INFORMAZIONI_PROPRIETA_JAVA_ALTRO
- MBeanOperationInfo informazioniProprietaJavaAltroOp = new MBeanOperationInfo(INFORMAZIONI_PROPRIETA_JAVA_ALTRO,"Visualizza le proprietà java escluse quelle riguardanti il networking",
- null,
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // INFORMAZIONI_PROPRIETA_SISTEMA
- MBeanOperationInfo informazioniProprietaSistemaOp = new MBeanOperationInfo(INFORMAZIONI_PROPRIETA_SISTEMA,"Visualizza le proprietà di sistema",
- null,
- String.class.getName(),
- MBeanOperationInfo.ACTION);
- // MESSAGE_FACTORY
- MBeanOperationInfo messageFactoryOp = new MBeanOperationInfo(MESSAGE_FACTORY,"Visualizza la MessageFactory utilizzata dal prodotto",
- null,
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // DIRECTORY_CONFIGURAZIONE
- MBeanOperationInfo confDirectoryOp = new MBeanOperationInfo(DIRECTORY_CONFIGURAZIONE,"Visualizza la directory di configurazione",
- null,
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // PROTOCOLS
- MBeanOperationInfo protocolsOp = new MBeanOperationInfo(PROTOCOLS,"Visualizza i protocolli installati",
- null,
- String.class.getName(),
- MBeanOperationInfo.ACTION);
- // FILE_TRACE_CONFIG
- MBeanOperationInfo fileTraceConfigOp = new MBeanOperationInfo(FILE_TRACE_CONFIG,"Visualizza il path della configurazione del FileTrace",
- null,
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // FILE_TRACE_UPDATE
- MBeanOperationInfo fileTraceUpdateOp = new MBeanOperationInfo(FILE_TRACE_UPDATE,"Aggiorna la configurazione del FileTrace",
- null,
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // BYOK_UNWRAP
- MBeanOperationInfo byokUnwrapOp = new MBeanOperationInfo(BYOK_UNWRAP,"Effettua l'unwrap della chiave fornita",
- new MBeanParameterInfo[]{
- new MBeanParameterInfo("key",String.class.getName(),CHIAVE),
- },
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // BYOK_UNWRAP_BASE64
- MBeanOperationInfo byokBase64UnwrapOp = new MBeanOperationInfo(BYOK_UNWRAP_BASE64,"Effettua l'unwrap della chiave fornita (ritorna codificata in base64)",
- new MBeanParameterInfo[]{
- new MBeanParameterInfo("key",String.class.getName(),CHIAVE),
- },
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // BYOK_UNWRAP_HEX
- MBeanOperationInfo byokHexUnwrapOp = new MBeanOperationInfo(BYOK_UNWRAP_HEX,"Effettua l'unwrap della chiave fornita (ritorna codificata in hex)",
- new MBeanParameterInfo[]{
- new MBeanParameterInfo("key",String.class.getName(),CHIAVE),
- },
- String.class.getName(),
- MBeanOperationInfo.ACTION);
- // BYOK_WRAP
- MBeanOperationInfo byokWrapOp = new MBeanOperationInfo(BYOK_WRAP,"Effettua il wrap della chiave fornita",
- new MBeanParameterInfo[]{
- new MBeanParameterInfo("key",String.class.getName(),CHIAVE),
- },
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // BYOK_WRAP_BASE64
- MBeanOperationInfo byokWrapBase64KeyOp = new MBeanOperationInfo(BYOK_WRAP_BASE64,"Effettua il wrap della chiave fornita codificata in base64",
- new MBeanParameterInfo[]{
- new MBeanParameterInfo("key",String.class.getName(),"Chiave codificata in base64"),
- },
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // BYOK_WRAP_HEX
- MBeanOperationInfo byokWrapHexKeyOp = new MBeanOperationInfo(BYOK_WRAP_HEX,"Effettua il wrap della chiave fornita codificata in esadecimale",
- new MBeanParameterInfo[]{
- new MBeanParameterInfo("key",String.class.getName(),"Chiave codificata in hex"),
- },
- String.class.getName(),
- MBeanOperationInfo.ACTION);
-
- // Mbean costruttore
- MBeanConstructorInfo defaultConstructor = new MBeanConstructorInfo("Default Constructor","Crea e inizializza una nuova istanza del MBean",null);
- // Lista attributi
- MBeanAttributeInfo[] attributes = null;
- // Lista Costruttori
- MBeanConstructorInfo[] constructors = new MBeanConstructorInfo[]{defaultConstructor};
- // Lista operazioni
- MBeanOperationInfo[] operations = new MBeanOperationInfo[]{versionePddOp,versioneBaseDatiOp,vendorJavaOp,versioneJavaOp,
- versioneTipoDatabaseOp,informazioniDatabaseOp,informazioniSSLOp,informazioniCompleteSSLOp,informazioniCRYPTOOp,
- informazioniCHARSETOp, informazioniINTERNAZIONALIZZAZIONEOp,informazioniCompleteINTERNAZIONALIZZAZIONEOp,
- informazioniTIMEZONEOp, informazioniCompleteTIMEZONEOp,
- informazioniProprietaJavaNetworkingOp, informazioniCompleteProprietaJavaNetworkingOp,
- informazioniProprietaJavaAltroOp, informazioniProprietaSistemaOp,
- messageFactoryOp,confDirectoryOp,protocolsOp,
- fileTraceConfigOp, fileTraceUpdateOp,
- byokUnwrapOp, byokBase64UnwrapOp, byokHexUnwrapOp,
- byokWrapOp, byokWrapBase64KeyOp, byokWrapHexKeyOp};
- return new MBeanInfo(className,description,attributes,constructors,operations,null);
- }
- /* Variabili per la gestione JMX */
- private Logger log;
- org.openspcoop2.pdd.config.OpenSPCoop2Properties openspcoopProperties = null;
- /* Costruttore */
- public ConfigurazioneSistema(){
- this.log = OpenSPCoop2Logger.getLoggerOpenSPCoopCore();
- this.openspcoopProperties = org.openspcoop2.pdd.config.OpenSPCoop2Properties.getInstance();
- }
- /* Metodi di management JMX */
- public String getVersionePdD(){
- try{
- return OpenSPCoop2Properties.getVersionePdD(this.openspcoopProperties);
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage();
- }
- }
- public String getVersioneBaseDati(){
- try{
- boolean isNodoRun = true;
- VersioneBaseDatiChecker versioneBaseDatiChecker = new VersioneBaseDatiChecker(this.openspcoopProperties, isNodoRun);
- return Utilities.execute(5, versioneBaseDatiChecker);
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage();
- }
- }
- public String getVersioneJava(){
- try{
- String v = System.getProperty("java.version");
- if(v!=null && !"".equals(v)){
- return v;
- }
- throw new CoreException("Versione di Java non disponibile");
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage();
- }
- }
-
- public String getVendorJava(){
- try{
- String v = System.getProperty("java.vendor");
- if(v==null || "".equals(v)){
- v = System.getProperty("java.vm.vendor");
- }
- if(v==null || "".equals(v)){
- v = null;
- }
-
- String name = System.getProperty("java.vm.name");
- if(name==null || "".equals(name)){
- name = null;
- }
-
- if(v!=null && name!=null){
- return v + " " + name;
- }
- else if(v!=null){
- return v;
- }
- else if(name!=null){
- return name;
- }
-
- throw new CoreException("Vendor Java non disponibile");
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage();
- }
- }
- public String getTipoDatabase(){
- try{
- if(this.openspcoopProperties!=null){
- return this.openspcoopProperties.getDatabaseType();
- }
- throw new CoreException("Tipo di Database non disponibile");
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage();
- }
- }
- public String getInformazioniDatabase(){
- try{
- InformazioniDatabaseChecker versioneBaseDatiChecker = new InformazioniDatabaseChecker(this.openspcoopProperties);
- return Utilities.execute(5, versioneBaseDatiChecker);
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage();
- }
- }
-
- public Map<String, String> getInformazioniAltriDatabase(){
- Map<String, String> map = null;
- try{
- if(DataSourceFactory.sizeDatasources()>0) {
- List<String> jndiNames = DataSourceFactory.getJndiNameDatasources();
- if(jndiNames!=null && !jndiNames.isEmpty()) {
- map = new HashMap<>();
- for (String jndiName : jndiNames) {
- addInformazioniAltriDatabase(map, jndiName);
- }
- return map;
- }
- }
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- }
- return map;
- }
- private void addInformazioniAltriDatabase(Map<String, String> map, String jndiName){
- try{
- map.put(jndiName, DataSourceFactory.getInstance(jndiName).getInformazioniDatabase());
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- map.put(jndiName, JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage());
- }
- }
-
- public String getInformazioniSSL(boolean cipherSuites, boolean providerInfo, boolean hsmInfo, boolean ocspInfo){
- try{
- StringBuilder bf = new StringBuilder();
- bf.append("SupportedProtocols: "+SSLUtilities.getSSLSupportedProtocols());
- bf.append("\n");
- // Molto verboso
- if(cipherSuites){
- bf.append("SupportedCipherSuites: "+SSLUtilities.getSSLSupportedCipherSuites());
- bf.append("\n");
- }
- addInformazioniSSL(bf, cipherSuites);
- if(providerInfo){
- bf.append("\n");
- bf.append("Providers: "+SSLUtilities.getSSLProvidersName());
- bf.append("\n");
- List<Provider> lProviders = SSLUtilities.getSSLProviders();
- for (Provider provider : lProviders) {
- printSSLProviderInfo(provider, bf);
- }
- }
-
- if(hsmInfo) {
- bf.append("\n");
- HSMManager hsmManager = HSMManager.getInstance();
- if(hsmManager!=null) {
- bf.append("HSM Keystore registered: "+hsmManager.getKeystoreTypes());
- }
- else {
- bf.append("HSM disabled");
- }
- bf.append("\n");
- }
-
-
- if(ocspInfo) {
- bf.append("\n");
- OCSPManager ocspManager = OCSPManager.getInstance();
- if(ocspManager!=null) {
- bf.append("OCSP policy registered: "+ocspManager.getOCSPConfigTypes());
- }
- else {
- bf.append("OCSP disabled");
- }
- bf.append("\n");
- }
-
- if(bf.length()<=0){
- throw new CoreException("Non sono disponibili informazioni sul contesto SSL");
- }else{
- return bf.toString();
- }
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage();
- }
- }
- private void addInformazioniSSL(StringBuilder bf, boolean cipherSuites) throws UtilsException {
- List<String> p = SSLUtilities.getSSLSupportedProtocols();
- if(p!=null && !p.isEmpty()){
- for (String protocol : p) {
- if(cipherSuites){
- bf.append("\n");
- }
- printSSLInfo(protocol, bf, cipherSuites);
- }
- // Per retrocompatibilità verifico anche alias SSL e TLS in modo da sapere come si comportano se sono stati associati a delle configurazioni
- addInformazioniSSL(p, bf, cipherSuites);
- }
- }
- private void addInformazioniSSL(List<String> p, StringBuilder bf, boolean cipherSuites) {
- if(!p.contains(SSLConstants.PROTOCOL_TLS)){
- if(cipherSuites){
- bf.append("\n");
- }
- printSSLInfo(SSLConstants.PROTOCOL_TLS, bf, cipherSuites);
- }
- if(!p.contains(SSLConstants.PROTOCOL_SSL)){
- if(cipherSuites){
- bf.append("\n");
- }
- printSSLInfo(SSLConstants.PROTOCOL_SSL, bf, cipherSuites);
- }
- }
- private void printSSLInfo(String protocol,StringBuilder bf,boolean cipherSuites){
- bf.append(protocol+": ");
- try{
- bf.append(SSLUtilities.getSSLEnabledProtocols(protocol));
- }catch(Exception n){
- bf.append(n.getMessage());
- }
- bf.append("\n");
- if(cipherSuites){
- bf.append("CipherSuites: ");
- try{
- bf.append(SSLUtilities.getSSLEnabledCipherSuites(protocol));
- }catch(Exception n){
- bf.append(n.getMessage());
- }
- bf.append("\n");
- }
- }
- private void printSSLProviderInfo(Provider provider,StringBuilder bf){
- bf.append("\n");
- bf.append(provider.getName());
- bf.append("\n");
- bf.append("Versione: v").append(provider.getVersionStr()).append(" ");
- bf.append(provider.getInfo());
- bf.append("\n");
- try{
- List<String> serviceTypes = SSLUtilities.getServiceTypes(provider);
- bf.append("ServiceTypes: "+serviceTypes);
- bf.append("\n");
- for (String serviceType : serviceTypes) {
- bf.append(serviceType+" Algorithms: "+SSLUtilities.getServiceTypeAlgorithms(provider, serviceType));
- bf.append("\n");
- }
- }catch(Exception n){
- bf.append(n.getMessage());
- }
- }
-
- public String getInformazioniCryptographyKeyLength(){
- try{
- StringBuilder bf = new StringBuilder();
- Set<?> algorithms = Security.getAlgorithms("Cipher");
- if(algorithms!=null && !algorithms.isEmpty()){
- Iterator<?> it = algorithms.iterator();
- while (it.hasNext()) {
- String algorithm = (String) it.next();
- bf.append(algorithm).append(": ");
- addInformazioniCryptographyKeyLength(bf, algorithm);
- bf.append("\n");
- }
- }
- if(bf.length()<=0){
- throw new CoreException("Non sono disponibili informazioni sulla lunghezza delle chiavi di cifratura");
- }else{
- return bf.toString();
- }
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage();
- }
- }
- private void addInformazioniCryptographyKeyLength(StringBuilder bf, String algorithm){
- try{
- bf.append(Cipher.getMaxAllowedKeyLength(algorithm));
- bf.append(" bit");
- }catch(Exception e){
- bf.append(e.getMessage());
- }
- }
-
- public String getInformazioniCharset(){
- try{
- StringBuilder bf = new StringBuilder();
-
- bf.append("Property 'file.encoding': ").append(CharsetUtilities.getDefaultCharsetByProperties()).append("\n");
- bf.append("java.io.Reader: ").append(CharsetUtilities.getDefaultCharsetByCode()).append("\n");
- bf.append("java.nio.charset.Charset: ").append(CharsetUtilities.getDefaultCharsetByCharset()).append("\n");
-
- if(bf.length()<=0){
- throw new CoreException("Non sono disponibili informazioni sul charset");
- }else{
- return bf.toString();
- }
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage();
- }
- }
-
- public String getInformazioniInternazionalizzazione(boolean all){
- try{
- StringBuilder bf = new StringBuilder();
-
- StringBuilder bfInternal = new StringBuilder();
- Utilities.toString(java.util.Locale.getDefault(), bfInternal, "\n");
- if(bfInternal.length()>0){
- if(all){
- bf.append("DEFAULT ");
- }
- bf.append(bfInternal.toString());
- }
- if(all){
- addInformazioniInternazionalizzazione(bf);
- }
-
- if(bf.length()<=0){
- throw new CoreException("Non sono disponibili informazioni sulla internazionalizzazione");
- }else{
- return bf.toString();
- }
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage();
- }
- }
- private void addInformazioniInternazionalizzazione(StringBuilder bf){
- java.util.Locale [] l = java.util.Locale.getAvailableLocales();
- if(l!=null){
- List<String> ll = new ArrayList<>();
- Map<String,java.util.Locale> llMap = new HashMap<>();
- for (int i = 0; i < l.length; i++) {
- ll.add(l[i].getDisplayName());
- llMap.put(l[i].getDisplayName(), l[i]);
- }
- Collections.sort(ll);
- for (String name : ll) {
- java.util.Locale locale = llMap.get(name);
- if(bf.length()>0){
- bf.append("\n");
- }
- Utilities.toString(locale, bf, "\n");
- }
- }
- }
-
- public String getInformazioniTimeZone(boolean all){
- try{
- StringBuilder bf = new StringBuilder();
-
- StringBuilder bfInternal = new StringBuilder();
- Utilities.toString(java.util.TimeZone.getDefault(), bfInternal, all);
- if(bfInternal.length()>0){
- if(all){
- bf.append("DEFAULT ");
- }
- bf.append(bfInternal.toString());
- }
-
- if(all){
- addInformazioniTimeZone(bf, all);
- }
-
- if(bf.length()>0){
- bf.append("\n");
- }
- bf.append("DateTimeFormatter: "+DateUtils.getDEFAULT_DATA_ENGINE_TYPE());
-
- if(bf.length()<=0){
- throw new CoreException("Non sono disponibili informazioni sulla internazionalizzazione");
- }else{
- return bf.toString();
- }
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage();
- }
- }
- private void addInformazioniTimeZone(StringBuilder bf, boolean all){
- String [] ids = java.util.TimeZone.getAvailableIDs();
- if(ids!=null){
- List<String> ll = new ArrayList<>();
- if(ids.length>0) {
- ll.addAll(Arrays.asList(ids));
- }
- Collections.sort(ll);
- for (String id : ll) {
- if(bf.length()>0){
- bf.append("\n");
- }
- Utilities.toString(java.util.TimeZone.getTimeZone(id), bf, all);
- }
- }
- }
-
- private boolean isPasswordProperty(String key, boolean java) {
-
- try {
- MapProperties mapProperties = MapProperties.getInstance();
- if(mapProperties!=null && !MapProperties.OBFUSCATED_MODE_NON_INIZIALIZZATO.equals(mapProperties.getObfuscateModeDescription())) {
- List<String> mapObfuscateKey = java ? mapProperties.getJavaMap().keys() : mapProperties.getEnvMap().keys();
- if(mapObfuscateKey.contains(key)) {
- return false; // gestione effettuata dentro il file govway.map
- }
- }
-
- BYOKMapProperties secretsProperties = BYOKMapProperties.getInstance();
- if(secretsProperties!=null && !MapProperties.OBFUSCATED_MODE_NON_INIZIALIZZATO.equals(secretsProperties.getObfuscateModeDescription())) {
- List<String> secretsObfuscateKey = java ? secretsProperties.getJavaMap().keys() : secretsProperties.getEnvMap().keys();
- if(secretsObfuscateKey.contains(key)) {
- return false; // gestione effettuata dentro il file govway.secrets
- }
- }
- }catch(Exception e) {
- // ignore
- }
-
- return key.toLowerCase().contains("password");
- }
- private boolean isNetworkProperties(boolean allNetwork, String key) {
- boolean net = key.startsWith("java.net.") ||
- key.startsWith("javax.net.") ||
- key.startsWith("networkaddress.") ||
- key.startsWith("http.") ||
- key.startsWith("https.");
-
- if(allNetwork) {
- return net
- ||
- (
- key.startsWith("ftp.") ||
- key.startsWith("socks") ||
- key.startsWith("sun.net.") // implement specific
- );
- }
- else {
- return net;
- }
-
- }
-
- public String getInformazioniProprietaJava(boolean allNetwork, boolean includeNetwork, boolean includeNotNetwork, boolean includePassword){
- try{
- StringBuilder bf = new StringBuilder();
-
- if(System.getSecurityManager()!=null) {
- bf.append("SecurityManager=").append(System.getSecurityManager().getClass().getName());
- }
- else {
- bf.append("SecurityManager non attivo");
- }
-
- Properties p = System.getProperties();
- List<String> ll = new ArrayList<>();
- addInformazioniProprietaJava(allNetwork, includeNetwork, includeNotNetwork, includePassword,
- p, ll);
- Collections.sort(ll);
- if(!ll.isEmpty()) {
- bf.append("\n"); // Separo security manager
- }
-
- printProprietaJava(ll, bf, p);
-
- if(bf.length()<=0){
- throw new CoreException("Non sono disponibili proprietà java");
- }else{
- return bf.toString();
- }
-
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage();
- }
- }
- private void printProprietaJava(List<String> ll, StringBuilder bf, Properties p) throws UtilsException {
- MapProperties mapProperties = MapProperties.getInstance();
- List<String> mapObfuscateKey = null;
- if(mapProperties.isObfuscatedModeEnabled()) {
- mapObfuscateKey = mapProperties.getObfuscatedJavaKeys();
- }
-
- BYOKMapProperties secretsProperties = BYOKMapProperties.getInstance();
- List<String> secretsObfuscateKey = null;
- if(secretsProperties.isObfuscatedModeEnabled()) {
- /**secretsObfuscateKey = secretsProperties.getObfuscatedJavaKeys(); Tutte le variabili definite in secrets sono da offuscare*/
- secretsObfuscateKey = secretsProperties.getJavaMap().keys();
- }
-
- List<String> govwayEncryptedProperties = getGovwayEncryptedProperties();
-
- for (String key : ll) {
-
- Object value = p.get(key);
- if(value instanceof String) {
- if(mapObfuscateKey!=null && mapObfuscateKey.contains(key)) {
- value = mapProperties.obfuscateJavaProperty(key, (String)value);
- }
- else if(secretsObfuscateKey!=null && secretsObfuscateKey.contains(key)) {
- value = secretsProperties.obfuscateJavaProperty(key, (String)value);
- }
- else if(govwayEncryptedProperties!=null && govwayEncryptedProperties.contains(key)) {
- value = obfuscateGovWayEncryptedProperty(mapProperties, key, (String)value);
- }
- }
-
- if(bf.length()>0){
- bf.append("\n");
- }
- bf.append(key).append("=").append(value);
- }
- }
- private void addInformazioniProprietaJava(boolean allNetwork, boolean includeNetwork, boolean includeNotNetwork, boolean includePassword,
- Properties p, List<String> ll) throws CoreException{
- Iterator<Object> keys = p.keySet().iterator();
- while (keys.hasNext()) {
- Object o = keys.next();
- if(!(o instanceof String)) {
- continue;
- }
- String key = (String) o;
- addInformazioniProprietaJava(allNetwork, includeNetwork, includeNotNetwork, includePassword,
- ll, key);
- }
- }
- private void addInformazioniProprietaJava(boolean allNetwork, boolean includeNetwork, boolean includeNotNetwork, boolean includePassword,
- List<String> ll, String key) throws CoreException{
- if(!includeNetwork && !includeNotNetwork) {
- throw new CoreException("Invocazione errata, almeno un parametro deve essere abilitato");
- }
- else if(includeNetwork && !includeNotNetwork) {
- if(this.isNetworkProperties(allNetwork, key)&&
- (includePassword || !isPasswordProperty(key, true))
- ){
- ll.add(key);
- }
- }
- else if(
- // includeNotNetwork && sempre true
- !includeNetwork) {
- addInformazioniProprietaJavaIncludeNotNetwork(ll, key);
- }
- else {
- if(includePassword || !isPasswordProperty(key, true)) {
- ll.add(key);
- }
- }
- }
- private void addInformazioniProprietaJavaIncludeNotNetwork(List<String> ll, String key) {
- if(
- (!this.isNetworkProperties(true, key)) &&
- (includePassword || !isPasswordProperty(key, true))
- ){
- ll.add(key);
- }
- }
-
- public String getInformazioniProprietaSistema(){
- try{
- StringBuilder bf = new StringBuilder();
-
- if(System.getSecurityManager()!=null) {
- bf.append("SecurityManager=").append(System.getSecurityManager().getClass().getName());
- }
- else {
- bf.append("SecurityManager non attivo");
- }
-
- Map<String, String> map = System.getenv();
- Iterator<String> keys = map.keySet().iterator();
- List<String> ll = new ArrayList<>();
- while (keys.hasNext()) {
- String key = keys.next();
- ll.add(key);
- }
- Collections.sort(ll);
- if(!ll.isEmpty()) {
- bf.append("\n"); // Separo security manager
- }
-
- printProprietaSistema(ll, bf, map);
-
- if(bf.length()<=0){
- throw new CoreException("Non sono disponibili proprietà di sistema");
- }else{
- return bf.toString();
- }
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage();
- }
- }
- private void printProprietaSistema(List<String> ll, StringBuilder bf, Map<String, String> map) throws UtilsException {
- MapProperties mapProperties = MapProperties.getInstance();
- List<String> mapObfuscateKey = null;
- if(mapProperties!=null && mapProperties.isObfuscatedModeEnabled()) {
- mapObfuscateKey = mapProperties.getObfuscatedEnvKeys();
- }
-
- BYOKMapProperties secretsProperties = BYOKMapProperties.getInstance();
- List<String> secretsObfuscateKey = null;
- if(secretsProperties!=null && secretsProperties.isObfuscatedModeEnabled()) {
- /**secretsObfuscateKey = secretsProperties.getObfuscatedEnvKeys(); Tutte le variabili definite in secrets sono da offuscare*/
- secretsObfuscateKey = secretsProperties.getEnvMap().keys();
- }
-
- /** Vengono impostate come proprieta java List<String> govwayEncryptedProperties = getGovwayEncryptedProperties();*/
-
- for (String key : ll) {
-
- String value = map.get(key);
- if(mapObfuscateKey!=null && mapObfuscateKey.contains(key)) {
- value = mapProperties.obfuscateEnvProperty(key, value);
- }
- else if(secretsObfuscateKey!=null && secretsObfuscateKey.contains(key)) {
- value = secretsProperties.obfuscateEnvProperty(key, value);
- }
- /** Vengono impostate come proprieta java else if(govwayEncryptedProperties!=null && govwayEncryptedProperties.contains(key)) {
- value = obfuscateGovWayEncryptedProperty(mapProperties, key, value);
- }*/
-
- if(bf.length()>0){
- bf.append("\n");
- }
- bf.append(key).append("=").append(value);
- }
- }
-
- private List<String> getGovwayEncryptedProperties() throws UtilsException{
- List<String> govwayEncryptedProperties = null;
- ConfigurazionePdDManager configurazionePdDManager = ConfigurazionePdDManager.getInstance();
- if(configurazionePdDManager!=null) {
- try {
- govwayEncryptedProperties = configurazionePdDManager.getEncryptedSystemPropertiesPdD();
- }catch(Exception e) {
- throw new UtilsException(e.getMessage(),e);
- }
- }
- return govwayEncryptedProperties;
- }
- private String obfuscateGovWayEncryptedProperty(MapProperties mapProperties, String key, String value) throws UtilsException {
- if(mapProperties!=null && mapProperties.isObfuscatedModeEnabled()) {
- value = mapProperties.obfuscateEnvProperty(key, value);
- }
- else {
- try {
- value = MapProperties.obfuscateByDigest(value);
- }catch(Exception e) {
- if(this.log!=null) {
- this.log.error(e.getMessage(),e);
- }
- value = "---***---***";
- }
- }
- return value;
- }
-
- public String getMessageFactory(){
- try{
- StringBuilder sb = new StringBuilder();
- OpenSPCoop2MessageFactory factory = OpenSPCoop2MessageFactory.getDefaultMessageFactory();
-
- String docOp2 = factory.getDocumentBuilderFactoryClass();
- String docSaaj = SOAPDocumentImpl.newInstanceDocumentBuilderFactory().getClass().getName();
- sb.append("DocumentBuilderFactory:").append(docSaaj).append(" ");
- if(!docSaaj.equals(docOp2)) {
- sb.append("OpenSPCoop2DocumentBuilderFactory:").append(docOp2).append(" ");
-
- }
-
- String saxOp2 = factory.getSAXParserFactoryClass();
- String saxSaaj = SOAPDocumentImpl.newInstanceSAXParserFactory().getClass().getName();
- sb.append("SAXParserFactory:").append(saxSaaj).append(" ");
- if(!saxSaaj.equals(saxOp2)) {
- sb.append("OpenSPCoop2SAXParserFactory:").append(saxOp2).append(" ");
-
- }
-
- return sb.toString();
-
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage();
- }
- }
-
- public String getDirectoryConfigurazione(){
- try{
- if(this.openspcoopProperties!=null){
-
- StringBuilder bf = new StringBuilder();
- if(System.getenv(CostantiPdD.OPENSPCOOP2_LOCAL_HOME)!=null){
- if(bf.length()>0){
- bf.append("\n");
- }
- bf.append("SystemProperty["+CostantiPdD.OPENSPCOOP2_LOCAL_HOME+"]=["+System.getenv(CostantiPdD.OPENSPCOOP2_LOCAL_HOME)+"]");
- }
- if(System.getProperty(CostantiPdD.OPENSPCOOP2_LOCAL_HOME)!=null){
- if(bf.length()>0){
- bf.append("\n");
- }
- bf.append("JavaProperty["+CostantiPdD.OPENSPCOOP2_LOCAL_HOME+"]=["+System.getProperty(CostantiPdD.OPENSPCOOP2_LOCAL_HOME)+"]");
- }
- if(bf.length()>0){
- bf.append("\n");
- }
- bf.append("GovWayProperties["+this.openspcoopProperties.getRootDirectory()+"]");
-
- return bf.toString();
- }
- throw new CoreException("Directory di Configurazione non disponibile");
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage();
- }
- }
-
- public String getPluginProtocols(){
- try{
- MapReader<String, IProtocolFactory<?>> prots = ProtocolFactoryManager.getInstance().getProtocolFactories();
- if(prots.size()<=0){
- throw new CoreException("No protocol installed");
- }
- else{
- StringBuilder bfProtocols = new StringBuilder();
- addPluginProtocols(prots, bfProtocols);
- return bfProtocols.toString();
- }
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage();
- }
- }
- private void addPluginProtocols(MapReader<String, IProtocolFactory<?>> prots, StringBuilder bfProtocols){
- Enumeration<String> keys = prots.keys();
- while (keys.hasMoreElements()) {
- String key = keys.nextElement();
- IProtocolFactory<?> pf = prots.get(key);
- addPluginProtocols(key, pf, bfProtocols);
- }
- }
- private void addPluginProtocols(String key, IProtocolFactory<?> pf, StringBuilder bfProtocols){
- if(pf.getManifest().getWeb().getEmptyContext()!=null && pf.getManifest().getWeb().getEmptyContext().isEnabled()){
- if(bfProtocols.length()>0){
- bfProtocols.append("\n");
- }
- bfProtocols.append("\"\" (protocol:"+key+")");
- }
- if(pf.getManifest().getWeb().sizeContextList()>0){
- for (Context context : pf.getManifest().getWeb().getContextList()) {
- if(bfProtocols.length()>0){
- bfProtocols.append("\n");
- }
- bfProtocols.append(context.getName()+" (protocol:"+key+")");
- }
- }
- }
- public String getInformazioniInstallazione(){
- try {
- List<GenericProperties> installerProperties = ConfigurazionePdDManager.getInstance().getGenericProperties(CostantiPdD.TIPOLOGIA_INSTALLER);
- if(installerProperties==null || installerProperties.isEmpty()) {
- throw new DriverConfigurazioneNotFound();
- }
- StringBuilder bf = new StringBuilder();
- // raccolto id
- List<String> ids = new ArrayList<>();
- for (int i = 0; i < installerProperties.size(); i++) {
- ids.add(installerProperties.get(i).getNome());
- }
- Collections.sort(ids, Collections.reverseOrder());
- for (String name : ids) {
- addInformazioniInstallazioneProperty(installerProperties, name, bf);
- }
-
- if(bf.length()>0) {
- return bf.toString();
- }
- else {
- return "Informazioni non presenti";
- }
-
- }catch(DriverConfigurazioneNotFound notFound) {
- return "Informazioni non presenti";
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage();
- }
-
- }
- private void addInformazioniInstallazioneProperty(List<GenericProperties> installerProperties, String name, StringBuilder bf) {
- for (GenericProperties gp : installerProperties) {
- if(gp.getNome().equals(name)) {
- addInformazioniInstallazioneProperty(gp, bf);
- break;
- }
- }
- }
- private void addInformazioniInstallazioneProperty(GenericProperties gp, StringBuilder bf) {
- if(bf.length()>0) {
- bf.append("\n");
- }
- bf.append(gp.getDescrizione());
- bf.append("\n");
-
- List<String> idParams = new ArrayList<>();
- for (Property p : gp.getPropertyList()) {
- idParams.add(p.getNome());
- }
- Collections.sort(idParams);
- for (String idP : idParams) {
- for (Property p : gp.getPropertyList()) {
- if(addInformazioniInstallazioneProperty(p, idP, bf)) {
- break;
- }
- }
- }
- }
- private boolean addInformazioniInstallazioneProperty(Property p, String idP, StringBuilder bf) {
- if(p.getNome().equals(idP)) {
-
- if(p.getNome().endsWith("-000:sezione")) {
- bf.append(p.getValore());
- bf.append("\n");
- }
- else {
- bf.append("\t");
- String [] split = p.getNome().split(":");
- if(split!=null && split.length==3) {
- bf.append(split[1]);
- bf.append(" (");
- bf.append(split[2]);
- bf.append(") = ");
- }
- else {
- bf.append(p.getNome());
- bf.append(" = ");
- }
- bf.append(p.getValore());
- bf.append("\n");
- }
-
- return true;
- }
- return false;
- }
-
- public String getFileTrace(){
- try {
- FileTraceGovWayState state = this.openspcoopProperties.getFileTraceGovWayState();
- return state.toString();
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage();
- }
- }
-
- public String updateFileTrace(){
- try {
- if(this.openspcoopProperties.isTransazioniFileTraceEnabled()){
- FileTraceConfig.update(this.openspcoopProperties.getTransazioniFileTraceConfig(), true);
- return JMXUtils.MSG_OPERAZIONE_EFFETTUATA_SUCCESSO;
- }
- else {
- throw new CoreException("Funzionalità 'FileTrace' disabilitata");
- }
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage();
- }
- }
-
- private void checkByokJmx(boolean wrap) throws CoreException {
- boolean enabled = wrap ? this.openspcoopProperties.isBYOKJmxWrapEnbled() : this.openspcoopProperties.isBYOKJmxUnwrapEnbled();
- if(!enabled) {
- throw new CoreException("not enabled");
- }
- }
-
- public String byokUnwrap(String value){
- try {
- checkByokJmx(false);
-
- DriverBYOK driverBYOK = DriverBYOKUtilities.newInstanceDriverBYOKRuntimeNodeForJmxOperation(this.log, false, true);
- if(driverBYOK!=null) {
- return driverBYOK.unwrapAsString(value, true);
- }
- return value;
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage();
- }
- }
-
- public String byokBase64Unwrap(String value){
- try {
- checkByokJmx(false);
-
- DriverBYOK driverBYOK = DriverBYOKUtilities.newInstanceDriverBYOKRuntimeNodeForJmxOperation(this.log, false, true);
- if(driverBYOK!=null) {
- byte [] c = driverBYOK.unwrap(value, true);
- return Base64Utilities.encodeAsString(c);
- }
- return value;
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage();
- }
- }
-
- public String byokHexUnwrap(String value){
- try {
- checkByokJmx(false);
-
- DriverBYOK driverBYOK = DriverBYOKUtilities.newInstanceDriverBYOKRuntimeNodeForJmxOperation(this.log, false, true);
- if(driverBYOK!=null) {
- byte [] c = driverBYOK.unwrap(value, true);
- return HexBinaryUtilities.encodeAsString(c);
- }
- return value;
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage();
- }
- }
-
- public String byokWrap(String value){
- try {
- checkByokJmx(true);
-
- DriverBYOK driverBYOK = DriverBYOKUtilities.newInstanceDriverBYOKRuntimeNodeForJmxOperation(this.log, true, false);
- if(driverBYOK!=null) {
- BYOKWrappedValue v = driverBYOK.wrap(value);
- if(v!=null) {
- return v.getWrappedValue();
- }
- else {
- return null;
- }
- }
- return value;
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage();
- }
- }
-
- public String byokWrapBase64Key(String value){
- try {
- checkByokJmx(true);
-
- byte[] decoded = Base64Utilities.decode(value);
-
- DriverBYOK driverBYOK = DriverBYOKUtilities.newInstanceDriverBYOKRuntimeNodeForJmxOperation(this.log, true, false);
- if(driverBYOK!=null) {
- BYOKWrappedValue v = driverBYOK.wrap(decoded);
- if(v!=null) {
- return v.getWrappedValue();
- }
- else {
- return null;
- }
- }
- return value;
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage();
- }
- }
-
- public String byokWrapHexKey(String value){
- try {
- checkByokJmx(true);
-
- byte[] decoded = HexBinaryUtilities.decode(value);
-
- DriverBYOK driverBYOK = DriverBYOKUtilities.newInstanceDriverBYOKRuntimeNodeForJmxOperation(this.log, true, false);
- if(driverBYOK!=null) {
- BYOKWrappedValue v = driverBYOK.wrap(decoded);
- if(v!=null) {
- return v.getWrappedValue();
- }
- else {
- return null;
- }
- }
- return value;
- }catch(Exception e){
- this.log.error(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage(),e);
- return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+e.getMessage();
- }
- }
- }
- class VersioneBaseDatiChecker implements Callable<String>{
- private OpenSPCoop2Properties openspcoopProperties;
- private boolean isNodoRun;
- public VersioneBaseDatiChecker(OpenSPCoop2Properties openspcoopProperties, boolean isNodoRun) {
- this.openspcoopProperties = openspcoopProperties;
- this.isNodoRun = isNodoRun;
- }
-
- @Override
- public String call() throws Exception {
-
- if(!DBManager.isInitialized()){
- throw new CoreException("Inizializzazione DBManager non effettuata");
- }
- DBManager dbManager = DBManager.getInstance();
- Resource resource = null;
- IDSoggetto dominio = this.openspcoopProperties.getIdentitaPortaDefaultWithoutProtocol();
- String modulo = this.getClass().getName();
- try{
- resource = dbManager.getResource(dominio, modulo, null);
- Connection c = (Connection) resource.getResource();
-
- StringBuilder bf = new StringBuilder();
- checkTable(c, bf);
- if(bf.length()<=0){
- throw new CoreException("BaseDati non possiede informazioni sul versionamento");
- }else{
- return bf.toString();
- }
- }finally{
- try{
- dbManager.releaseResource(dominio, modulo, resource);
- }catch(Exception eClose){
- // close
- }
- }
-
- }
-
- private void checkTable(Connection c, StringBuilder bf) throws UtilsMultiException, SQLException {
- PreparedStatement pstmt = null;
- ResultSet rs = null;
- try{
- String table1 = this.isNodoRun ? CostantiDB.DB_INFO : CostantiDB.DB_INFO_CONSOLE;
- String sql = "select * from "+table1 +" order by id DESC";
- pstmt = c.prepareStatement(sql);
- try {
- rs = pstmt.executeQuery();
- while (rs.next()) {
- int majorVersion = rs.getInt("major_version");
- int minorVersion = rs.getInt("minor_version");
- String details = rs.getString("notes");
- if(bf.length()>0){
- bf.append("\n");
- }
- bf.append("["+majorVersion+"."+minorVersion+"] "+details);
- }
- }catch(Throwable t) {
-
- JDBCUtilities.closeResources(rs, pstmt);
- rs=null;
- pstmt=null;
-
- checkTable2(c, bf, t);
- }
- }finally{
- try{
- if(rs!=null)
- rs.close();
- }catch(Exception eClose){
- // close
- }
- try{
- if(pstmt!=null)
- pstmt.close();
- }catch(Exception eClose){
- // close
- }
- }
- }
- private void checkTable2(Connection c, StringBuilder bf, Throwable t) throws UtilsMultiException, SQLException {
- PreparedStatement pstmt = null;
- ResultSet rs = null;
- try{
- String table2 = this.isNodoRun ? CostantiDB.DB_INFO_CONSOLE : CostantiDB.DB_INFO;
- String sql = "select * from "+table2 +" order by id DESC";
- pstmt = c.prepareStatement(sql);
- rs = pstmt.executeQuery();
- try {
- while (rs.next()) {
- int majorVersion = rs.getInt("major_version");
- int minorVersion = rs.getInt("minor_version");
- String details = rs.getString("notes");
- if(bf.length()>0){
- bf.append("\n");
- }
- bf.append("["+majorVersion+"."+minorVersion+"] "+details);
- }
- }catch(Throwable tInternal) {
- throw new UtilsMultiException(t,tInternal);
- }
- }finally{
- JDBCUtilities.closeResources(rs, pstmt);
- }
- }
-
- }
- class InformazioniDatabaseChecker implements Callable<String>{
- private OpenSPCoop2Properties openspcoopProperties;
- public InformazioniDatabaseChecker(OpenSPCoop2Properties openspcoopProperties) {
- this.openspcoopProperties = openspcoopProperties;
- }
-
- @Override
- public String call() throws Exception {
- if(!DBManager.isInitialized()){
- throw new CoreException("Inizializzazione DBManager non effettuata");
- }
- DBManager dbManager = DBManager.getInstance();
- Resource resource = null;
- if(this.openspcoopProperties==null) {
- throw new CoreException("Inizializzazione OpenSPCoop2Properties non effettuata");
- }
- IDSoggetto dominio = this.openspcoopProperties.getIdentitaPortaDefaultWithoutProtocol();
- String modulo = this.getClass().getName();
- StringBuilder bf = new StringBuilder();
- if(this.openspcoopProperties.getDatabaseType()!=null){
- bf.append("TipoDatabase: "+this.openspcoopProperties.getDatabaseType());
- }
- else{
- throw new CoreException("Tipo di Database non disponibile");
- }
- try{
- resource = dbManager.getResource(dominio, modulo, null);
- Connection c = (Connection) resource.getResource();
- JDBCUtilities.addInformazioniDatabaseFromMetaData(c, bf);
-
- if(bf.length()<=0){
- throw new CoreException("Non sono disponibili informazioni sul database");
- }else{
- return bf.toString();
- }
- }finally{
- try{
- dbManager.releaseResource(dominio, modulo, resource);
- }catch(Exception eClose){
- // close
- }
- }
- }
-
- }