X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=bin%2Fnameserver.py;h=58982b877103fa7bb7f179d6eb9524534aa4d7f6;hb=d8edd4804d9e6513a17c497c1a30326d4ba0d677;hp=fe20cebbaf90ac0f9223955d5a813c641fa57229;hpb=71d9ade1ecb75d95a2b284a4a041f8bf8ce6c8a9;p=modules%2Fkernel.git diff --git a/bin/nameserver.py b/bin/nameserver.py old mode 100755 new mode 100644 index fe20cebba..58982b877 --- a/bin/nameserver.py +++ b/bin/nameserver.py @@ -1,6 +1,5 @@ -#!/usr/bin/env python # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2021 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -8,7 +7,7 @@ # 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. +# 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 @@ -22,62 +21,37 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -import sys, os, re, socket +import os, sys, re, socket #import commands -from server import * -from Utils_Identity import getShortHostName +from server import Server +from salome_utils import getHostName from launchConfigureParser import verbose # ----------------------------------------------------------------------------- class NamingServer(Server): - XTERM="" - USER=os.getenv('USER') - if USER is None: - USER='anonymous' - #os.system("mkdir -m 777 -p /tmp/logs") - LOGDIR="/tmp/logs/" + USER - - def initNSArgs(self): - if sys.platform == "win32": - # temporarily using home directory for Namning Service logs - # to be replaced with TEMP later... - os.environ["BaseDir"]=os.environ["HOME"] - else: - os.environ["BaseDir"]="/tmp" - + #XTERM = "" + #USER = os.getenv('USER') + #if USER is None: + # USER = 'anonymous' + #os.system("mkdir -m 777 -p /tmp/logs") + #LOGDIR = "/tmp/logs/" + USER + + def initNSArgs(self): + from salome_utils import getLogDir + upath = getLogDir() try: - os.mkdir(os.environ["BaseDir"] + "/logs") - os.chmod(os.environ["BaseDir"] + "/logs", 0777) + os.makedirs(upath, mode=0o777) except: - #print "Can't create " + os.environ["BaseDir"] + "/logs" - pass + pass - upath = os.environ["BaseDir"] + "/logs/"; - if sys.platform == "win32": - upath += os.environ["Username"]; - else: - upath += os.environ["USER"]; + if verbose(): print("Name Service... ", end =' ') + hname = getHostName() - try: - os.mkdir(upath) - except: - #print "Can't create " + upath - pass - - if verbose(): print "Name Service... ", - #hname=os.environ["HOST"] #commands.getoutput("hostname") - if sys.platform == "win32": - hname=getShortHostName(); - else: - hname = socket.gethostname(); - #print "hname=",hname - - f=open(os.environ["OMNIORB_CONFIG"]) - ss=re.findall("NameService=corbaname::" + hname + ":\d+", f.read()) - if verbose(): print "ss = ", ss, - f.close() - sl=ss[0] + with open(os.environ["OMNIORB_CONFIG"]) as f: + ss = re.findall("NameService=corbaname::" + hname + ":\d+", f.read()) + if verbose(): print("ss = ", ss, end=' ') + sl = ss[0] ll = sl.split(':') aPort = ll[-1] #aPort=(ss.join().split(':'))[2]; @@ -88,46 +62,55 @@ class NamingServer(Server): # it is cleaner on linux and it is a fix for salome since it is impossible to # remove the log files if the corresponding omniNames has not been killed. # \end{E.A.} - - upath += "/omniNames_%s"%(aPort) + + upath = os.path.join(upath, "omniNames_%s"%(aPort)) try: - os.mkdir(upath) + os.mkdir(upath) except: - #print "Can't create " + upath - pass - + # print("Can't create " + upath) + pass + #os.system("touch " + upath + "/dummy") for fname in os.listdir(upath): try: - os.remove(upath + "/" + fname) + os.remove(upath + "/" + fname) except: pass #os.system("rm -f " + upath + "/omninames* " + upath + "/dummy " + upath + "/*.log") #aSedCommand="s/.*NameService=corbaname::" + hname + ":\([[:digit:]]*\)/\1/" - #print "sed command = ", aSedCommand + # print("sed command = ", aSedCommand) #aPort = commands.getoutput("sed -e\"" + aSedCommand + "\"" + os.environ["OMNIORB_CONFIG"]) - #print "port=", aPort + # print("port=", aPort) if sys.platform == "win32": - #print "start omniNames -start " + aPort + " -logdir " + upath - self.CMD=['omniNames', '-start' , aPort , '-nohostname', '-logdir' , os.path.realpath(upath), '-errlog', os.path.realpath(os.path.join(upath,'omniNameErrors.log'))] + # print("start omniNames -start " + aPort + " -logdir " + upath) + self.CMD = ['omniNames', '-start' , aPort , '-nohostname', '-logdir' , os.path.realpath(upath), '-errlog', os.path.realpath(os.path.join(upath,'omniNameErrors.log'))] #os.system("start omniNames -start " + aPort + " -logdir " + upath) else: - #self.CMD=['omniNames -start ' , aPort , ' -logdir ' , upath , ' &'] - self.CMD=['omniNames','-start' , aPort, '-logdir' , upath, '-errlog', upath+'/omniNameErrors.log'] - #os.system("omniNames -start " + aPort + " -logdir " + upath + " &") - - if verbose(): print "... ok" - if verbose(): print "to list contexts and objects bound into the context with the specified name : showNS " - - - def initArgs(self): + # get ip address on default interface (for instance eth0) to limit listening on this interface (cyber security request) + from subprocess import check_output + ips = check_output(['hostname', '--all-ip-addresses']) + if ips.strip(): + ipDefault = ips.split()[0].decode() + else: + ip = check_output(['hostname', '--ip-address']) + ipDefault = ip.split()[-1].decode() + self.CMD = ['omniNames','-start' , aPort] + self.CMD += ['-logdir' , upath, '-errlog', upath+'/omniNameErrors.log'] + + if verbose(): print("... ok") + if verbose(): print("to list contexts and objects bound into the context with the specified name : showNS ") + + + def initArgs(self): Server.initArgs(self) if sys.platform == "win32": - env_ld_library_path=['env', 'LD_LIBRARY_PATH=' + os.getenv("PATH")] + env_ld_library_path = ['env', 'LD_LIBRARY_PATH=' + os.getenv("PATH")] + elif sys.platform == "darwin": + env_ld_library_path = ['env', 'DYLD_LIBRARY_PATH=' + os.getenv("DYLD_LIBRARY_PATH"), 'DYLD_FALLBACK_LIBRARY_PATH=' + os.getenv("DYLD_FALLBACK_LIBRARY_PATH")] else: - env_ld_library_path=['env', 'LD_LIBRARY_PATH=' + os.getenv("LD_LIBRARY_PATH")] - self.CMD=['xterm', '-e']+ env_ld_library_path + ['python'] + env_ld_library_path = ['env', 'LD_LIBRARY_PATH=' + os.getenv("LD_LIBRARY_PATH")] + self.CMD = ['xterm', '-e']+ env_ld_library_path + ['python'] self.initNSArgs() # In LifeCycleCORBA, FactoryServer is started with rsh on the requested @@ -135,7 +118,7 @@ class NamingServer(Server): # Others Containers are started with start_impl method of FactoryServer Container. # For using rsh it is necessary to have in the ${HOME} directory a .rhosts file # Warning : on RedHat the file /etc/hosts contains by default a line like : -# 127.0.0.1 bordolex bordolex.paris1.matra-dtv.fr localhost.localdomain localhost +# 127.0.0.1 bordolex bordolex.paris1.matra-dtv.fr localhost.localdomain localhost # (bordolex is the station name). omniNames on bordolex will be accessible from other # computers only if the computer name is removed on that line like : # 127.0.0.1 bordolex.paris1.matra-dtv.fr localhost.localdomain localhost