From 4d88de29887b0b5ea0372532de59a1511222dc20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B0=D0=BC=D0=BE=D1=83=D0=BA=D0=B8=D0=BD=20=D0=90?= =?UTF-8?q?=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Wed, 2 Jun 2010 17:01:40 +0400 Subject: [PATCH] Added support /var/calculate/remote/calculate.env --- pym/cl_template.py | 15 +++++++++- pym/convertenv.py | 73 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 pym/convertenv.py diff --git a/pym/cl_template.py b/pym/cl_template.py index f1a2f9f..cc9a335 100644 --- a/pym/cl_template.py +++ b/pym/cl_template.py @@ -34,6 +34,8 @@ import cl_overriding from cl_utils import _error, _toUNICODE, getModeFile, removeDir, typeFile,\ scanDirectory, convertStrListDict +from convertenv import convertEnv + import cl_lang tr = cl_lang.lang() tr.setLocalDomain('cl_lib') @@ -2307,6 +2309,14 @@ class templateFunction(_error, _shareTemplate, _shareTermsFunction): self.valuesVarEnv = {} # Словарь хранения опций для функции info() self.optionsInfo = {} + # файл параметров сервисов + envFile = self.objVar.Get("cl_env_server_path") + # объект конвертирования из старого remote env файла + self.convObj = False + if os.access(envFile, os.R_OK): + self.convObj = False + elif os.access("/var/calculate/remote/calculate.env", os.R_OK): + self.convObj = convertEnv() def equalTerm(self, term, localVars): """Метод для вычисления выражения""" @@ -2909,7 +2919,10 @@ class templateFunction(_error, _shareTemplate, _shareTermsFunction): # файл /var/calculate/remote/server.env envFile = self.objVar.Get("cl_env_server_path") # получаем словарь всех информационных переменных - optInfo = self.objVar.GetRemoteInfo(envFile) + if self.convObj: + optInfo = self.convObj.convert() + else: + optInfo = self.objVar.GetRemoteInfo(envFile) if optInfo is False: self.printErrTemplate() cl_overriding.exit(1) diff --git a/pym/convertenv.py b/pym/convertenv.py new file mode 100644 index 0000000..e832c97 --- /dev/null +++ b/pym/convertenv.py @@ -0,0 +1,73 @@ +#-*- coding: utf-8 -*- + +# Copyright 2008-2010 Mir Calculate Ltd. http://www.calculate-linux.org +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys, os +from cl_template import iniParser +from cl_utils import convertStrListDict + +class convertEnv: + """Конвертирование переменных из /var/calculate/remote/calculate.env""" + envPath = "/var/calculate/remote/calculate.env" + convertData = {\ + "ur_organization":{"service":"mail","replace":"organization"}, + "ur_signature":{"service":"mail","replace":"signature"}, + "sr_mail_type":{"service":"mail","replace":"type"}, + "sr_mail_send_host":{"service":"mail","replace":"send_host"}, + "sr_mail_port":{"service":"mail","replace":"port"}, + "sr_mail_crypt":{"service":"mail","replace":"crypt"}, + "sr_mail_host":{"service":"mail","replace":"host"}, + "sr_mail_send_port":{"service":"mail","replace":"send_port"}, + "sr_mail_send_crypt":{"service":"mail","replace":"send_crypt"}, + "ld_unix_dn":{"service":"unix","replace":"dn"}, + "ld_bind_dn":{"service":"unix","replace":"bind_dn"}, + "ld_bind_pw":{"service":"unix","replace":"bind_pw"}, + "ld_services_dn":{"service":"ldap","replace":"services_dn"}, + "ld_base_dn":{"service":"ldap","replace":"base_dn"}, + "sr_jabber_crypt":{"service":"jabber","replace":"crypt"}, + "sr_jabber_host":{"service":"jabber","replace":"host"}, + "sr_jabber_port":{"service":"jabber","replace":"port"}, + "sr_samba_host":{"service":"samba","replace":"host"}, + "ld_samba_dn":{"service":"samba","replace":"dn"}, + "cl_remote_ftp":{"service":"ftp","replace":"host"}} + convertVars = {} + flagConverted = False + + def getVar(self, header, name): + """Получаем сконвертированную переменную""" + if not self.flagConverted: + self.convertVars = self.convert() + self.flagConverted = True + if header in self.convertVars.keys() and\ + name in self.convertVars[header]: + return self.convertVars[header][name] + else: + return "" + + def convert(self): + """Конвертирование переменных сервера в словарь новых переменных""" + parserObj = iniParser(self.envPath) + clientVars = parserObj.getAreaVars("client") + # convertVars = {"service":{"name":"value", ...}, ...} + convertVars = {} + for nameVar in clientVars.keys(): + if nameVar in self.convertData.keys(): + service = self.convertData[nameVar]["service"] + nameVarService = self.convertData[nameVar]["replace"] + value = convertStrListDict(clientVars[nameVar].encode("UTF-8")) + if not service in convertVars.keys(): + convertVars[service] = {} + convertVars[service][nameVarService] = value + return convertVars