From 3fc417018bb77f0e11e1c35e6254621bf5cc2eb4 Mon Sep 17 00:00:00 2001 From: Jean-Philippe ARGAUD Date: Thu, 20 Jan 2022 14:06:16 +0100 Subject: [PATCH] Complete SSL mode integration (OCC for Tuleap [bos #26460]) --- resources/CMakeLists.txt | 4 +- resources/{SalomeApp.xml => SalomeApp.xml.in} | 0 src/daSalome/daGUI/ADAO.py | 10 +++- src/daSalome/daGUI/ADAO_SalomeSessionless.py | 49 +++++++++++++++++++ src/daSalome/daGUI/CMakeLists.txt | 2 +- .../daGUI/daGuiImpl/adaoModuleHelper.py | 38 +++----------- 6 files changed, 69 insertions(+), 34 deletions(-) rename resources/{SalomeApp.xml => SalomeApp.xml.in} (100%) create mode 100644 src/daSalome/daGUI/ADAO_SalomeSessionless.py diff --git a/resources/CMakeLists.txt b/resources/CMakeLists.txt index 150d33f..2362c9f 100644 --- a/resources/CMakeLists.txt +++ b/resources/CMakeLists.txt @@ -20,7 +20,9 @@ if(ADAO_SALOME_MODULE) - install(FILES SalomeApp.xml ADAOCatalog.xml DESTINATION ${ADAO_RES_SALOME}) + install(FILES ADAOCatalog.xml DESTINATION ${ADAO_RES_SALOME}) + SALOME_CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/SalomeApp.xml.in ${CMAKE_CURRENT_BINARY_DIR}/SalomeApp.xml INSTALL ${ADAO_RES_SALOME}) + SALOME_CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/SalomeApp.xml.in ${CMAKE_CURRENT_BINARY_DIR}/SalomeAppSL.xml INSTALL ${ADAO_RES_SALOME}) else(ADAO_SALOME_MODULE) diff --git a/resources/SalomeApp.xml b/resources/SalomeApp.xml.in similarity index 100% rename from resources/SalomeApp.xml rename to resources/SalomeApp.xml.in diff --git a/src/daSalome/daGUI/ADAO.py b/src/daSalome/daGUI/ADAO.py index efd4aef..ecbe8e8 100644 --- a/src/daSalome/daGUI/ADAO.py +++ b/src/daSalome/daGUI/ADAO.py @@ -25,6 +25,7 @@ import ADAO_COMPONENT__POA import SALOME_ComponentPy import SALOME_DriverPy +import SALOME_Embedded_NamingService_ClientPy from daUtils.adaoLogger import * @@ -46,7 +47,14 @@ class ADAO(ADAO_COMPONENT__POA.ADAO_ENGINE, SALOME_DriverPy.SALOME_DriverPy_i.__init__(self, interfaceName) # On stocke dans l'attribut _naming_service, une ref sur le Naming Service - self._naming_service = SALOME_ComponentPy.SALOME_NamingServicePy_i( self._orb ) + # + emb_ns = self._contId.get_embedded_NS_if_ssl() + import CORBA + if CORBA.is_nil(emb_ns): + self._naming_service = SALOME_ComponentPy.SALOME_NamingServicePy_i( self._orb ) + else: + self._naming_service = SALOME_Embedded_NamingService_ClientPy.SALOME_Embedded_NamingService_ClientPy(emb_ns) + # def print_ping(): info("ADAO ENGINE Ping", "ENGINE") diff --git a/src/daSalome/daGUI/ADAO_SalomeSessionless.py b/src/daSalome/daGUI/ADAO_SalomeSessionless.py new file mode 100644 index 0000000..0cb504b --- /dev/null +++ b/src/daSalome/daGUI/ADAO_SalomeSessionless.py @@ -0,0 +1,49 @@ +# -*- coding: iso-8859-1 -*- +# Copyright (C) 2021 CEA/DEN, EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +def buildInstance(orb): + from ADAO import ADAO + + # set SSL mode, if not done yes + import KernelBasis + KernelBasis.setSSLMode(True) + + # check if ADAO is already registered + import KernelServices + try: + return KernelServices.RetrieveCompo("ADAO"), orb + except Exception: + pass + + # initialize and register ADAO engine + import PortableServer + obj = orb.resolve_initial_references("RootPOA") + poa = obj._narrow(PortableServer.POA) + pman = poa._get_the_POAManager() + pman.activate() + # + from SALOME_ContainerPy import SALOME_ContainerPy_SSL_i + cont = SALOME_ContainerPy_SSL_i(orb, poa, "FactoryServer") + conObj = poa.id_to_reference(poa.activate_object(cont)) + # + servant = ADAO(orb, poa, conObj, "FactoryServer", "ADAO_inst_1", "ADAO") + ret = servant.getCorbaRef() + KernelServices.RegisterCompo("ADAO", ret) + return ret, orb diff --git a/src/daSalome/daGUI/CMakeLists.txt b/src/daSalome/daGUI/CMakeLists.txt index f4e0798..310cdf6 100644 --- a/src/daSalome/daGUI/CMakeLists.txt +++ b/src/daSalome/daGUI/CMakeLists.txt @@ -20,7 +20,7 @@ if(ADAO_SALOME_MODULE) - install(FILES ADAOGUI.py ADAO.py DESTINATION ${ADAO_SCRIPT_PYTHON_SALOME}) + install(FILES ADAOGUI.py ADAO.py ADAO_SalomeSessionless.py DESTINATION ${ADAO_SCRIPT_PYTHON_SALOME}) else(ADAO_SALOME_MODULE) diff --git a/src/daSalome/daGUI/daGuiImpl/adaoModuleHelper.py b/src/daSalome/daGUI/daGuiImpl/adaoModuleHelper.py index feb76d7..cf651e5 100644 --- a/src/daSalome/daGUI/daGuiImpl/adaoModuleHelper.py +++ b/src/daSalome/daGUI/daGuiImpl/adaoModuleHelper.py @@ -29,7 +29,6 @@ __all__ = [ "modulePixmap", "verbose", "getORB", - "getNS", "getLCC", "getStudyManager", "getEngine", @@ -41,6 +40,7 @@ __all__ = [ from omniORB import CORBA from SALOME_NamingServicePy import SALOME_NamingServicePy_i from LifeCycleCORBA import LifeCycleCORBA +import salome import SALOMEDS import SALOMEDS_Attributes_idl from salome.kernel.studyedit import getStudyEditor @@ -119,47 +119,23 @@ def verbose(): ### # Get ORB reference ### -__orb__ = None def getORB(): - global __orb__ - if __orb__ is None: - __orb__ = CORBA.ORB_init( [''], CORBA.ORB_ID ) - pass - return __orb__ - -### -# Get naming service instance -### -__naming_service__ = None -def getNS(): - global __naming_service__ - if __naming_service__ is None: - __naming_service__ = SALOME_NamingServicePy_i( getORB() ) - pass - return __naming_service__ + salome.salome_init() + return salome.orb ## # Get life cycle CORBA instance ## -__lcc__ = None def getLCC(): - global __lcc__ - if __lcc__ is None: - __lcc__ = LifeCycleCORBA( getORB() ) - pass - return __lcc__ + salome.salome_init() + return salome.lcc ## # Get study manager ### -__study_manager__ = None def getStudyManager(): - global __study_manager__ - if __study_manager__ is None: - obj = getNS().Resolve( '/myStudyManager' ) - __study_manager__ = obj._narrow( SALOMEDS.StudyManager ) - pass - return __study_manager__ + salome.salome_init() + return salome.myStudy ### # Get OMA engine -- 2.39.2