|
|
|
#!/usr/bin/python
|
|
|
|
#-*- coding: utf-8 -*-
|
|
|
|
|
|
|
|
# Copyright 2009-2010 Mir Calculate. 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
|
|
|
|
import os
|
|
|
|
sys.path.insert(0,os.path.abspath('/usr/lib/calculate/calculate-lib/pym'))
|
|
|
|
sys.path.insert(0,os.path.abspath('/usr/lib/calculate/calculate-server/pym'))
|
|
|
|
import cl_base
|
|
|
|
# Логгирование
|
|
|
|
import cl_log
|
|
|
|
tr = cl_base.lang()
|
|
|
|
tr.setGlobalDomain('cl_server')
|
|
|
|
tr.setLanguage(sys.modules[__name__])
|
|
|
|
import cl_ldap
|
|
|
|
if __name__ == "__main__":
|
|
|
|
ldapObj = cl_ldap.cl_ldap("dhcp")
|
|
|
|
optObj = cl_ldap.tsOpt(ldapObj,[],False)
|
|
|
|
flagError = True
|
|
|
|
if not optObj.flagHelp:
|
|
|
|
obj = cl_ldap.servDhcp()
|
|
|
|
logFile = obj.errorLogFile
|
|
|
|
logFullFile = os.path.join(cl_log.log.logDir,logFile)
|
|
|
|
user = "dhcp"
|
|
|
|
uidAndGid = obj.getUserUidAndGid(user)
|
|
|
|
if not uidAndGid:
|
|
|
|
sys.exit(1)
|
|
|
|
uid, gid = uidAndGid
|
|
|
|
if os.getuid() == 0:
|
|
|
|
# Меняем владельца процесса на dhcp
|
|
|
|
try:
|
|
|
|
os.setgid(gid)
|
|
|
|
os.setuid(uid)
|
|
|
|
except:
|
|
|
|
print _("ERROR: Can not set owner") + \
|
|
|
|
" (dhcp:dhcp uid=%s,gid=%s) "%(uid, gid) +\
|
|
|
|
_("the this process")
|
|
|
|
sys.exit(1)
|
|
|
|
if os.getuid() != uid:
|
|
|
|
print _("ERROR: Owner this process not dhcp or root")
|
|
|
|
sys.exit(1)
|
|
|
|
if os.access(logFullFile, os.W_OK):
|
|
|
|
logObj = cl_log.log(logFile)
|
|
|
|
else:
|
|
|
|
logObj = False
|
|
|
|
if obj.addDNSRecordServer(optObj.opt, logObj):
|
|
|
|
flagError = False
|
|
|
|
if flagError:
|
|
|
|
sys.exit(1)
|
|
|
|
else:
|
|
|
|
sys.exit(0)
|
|
|
|
|