Rename ~/.calculate.env to ~/.calculate/server.env

Change format server.env (plasma)
master
Самоукин Алексей 14 years ago
parent f708e6b610
commit 72c6c98b4c

@ -33,6 +33,8 @@ import stat
import subprocess import subprocess
import time import time
from encrypt import encrypt
Version = "calculate-client 2.1.10" Version = "calculate-client 2.1.10"
tr = cl_base.lang() tr = cl_base.lang()
@ -248,7 +250,7 @@ imp_cl_help = cl_utils2.cl_help
imp_cl_smcon = cl_utils2.cl_smartcon imp_cl_smcon = cl_utils2.cl_smartcon
class cl_client(imp_cl_err, imp_cl_xml, imp_cl_help, imp_cl_smcon): class cl_client(imp_cl_err, imp_cl_xml, imp_cl_help, imp_cl_smcon, encrypt):
"""Основной класс для работы клиентских приложений""" """Основной класс для работы клиентских приложений"""
# Пути к профилям объединяемых с системными # Пути к профилям объединяемых с системными
# относительный путь при объединении '/' # относительный путь при объединении '/'
@ -767,6 +769,37 @@ conjunction with the 'login' or 'logout'")
return False, errMessage return False, errMessage
return True, errMessage return True, errMessage
def getServerDataUser(self):
"""Получение имени LDAP сервера и DN пользователей под пользователем"""
fileName = "/etc/ldap.conf"
serverName = ""
usersDN = ""
strServer = ("host","HOST")
lenStrServer = len(strServer[0])
strDN = ("nss_base_passwd","NSS_BASE_PASSWD")
lenStrDN = len(strDN[0])
splList = (" ", "\t")
try:
for i in open(fileName):
if not serverName and\
filter(lambda x: i.startswith(x),strServer) and\
len(i)>lenStrServer:
spl = i[lenStrServer]
if spl in splList:
serverName = i.rpartition(spl)[2].strip()
if not usersDN and filter(lambda x: i.startswith(x), strDN) and\
len(i)>lenStrDN:
spl = i[lenStrDN]
if spl in splList:
usersDN = i.rpartition(spl)[2].partition('?')[0].strip()
if serverName and usersDN:
break
except:
self.printERROR(_("Can not open %s")%fileName)
return False
return (serverName, usersDN)
def setUserPasswordToServer(self, options): def setUserPasswordToServer(self, options):
"""Установка пароля пользователя на сервере""" """Установка пароля пользователя на сервере"""
# Проверяем на root # Проверяем на root
@ -775,21 +808,19 @@ conjunction with the 'login' or 'logout'")
self.printWARNING(\ self.printWARNING(\
_("The program can be executed from a non-root user")) _("The program can be executed from a non-root user"))
return False return False
# Создаем объект переменных
self.createClVars()
# DNS имя хоста # DNS имя хоста
server = self.clVars.Get("sr_samba_host") data = self.getServerDataUser()
if not server: if not data:
self.printERROR(_("The computer is not in domain")) self.printERROR(_("The computer is not in domain"))
self.printWARNING(_("Use passwd"))
return False return False
server, usersDN = data
# Получаем старый пароль пользователя # Получаем старый пароль пользователя
curPassword = self.getUserPassword(_("Enter current password")) curPassword = self.getUserPassword(_("Enter current password"))
if not curPassword: if not curPassword:
self.printERROR(_("Current password is empty")) self.printERROR(_("Current password is empty"))
return False return False
userDN = self.addDN("uid=%s"%os.environ["USER"], userDN = self.addDN("uid=%s"%os.environ["USER"], usersDN)
self.relUsersDN,
self.clVars.Get("ld_base_dn"))
# Проверяем в LDAP сервере текущий пароль пользователя # Проверяем в LDAP сервере текущий пароль пользователя
ret, err = self.checkUserPwdLDAP(server, userDN, curPassword) ret, err = self.checkUserPwdLDAP(server, userDN, curPassword)
if not ret: if not ret:
@ -801,18 +832,24 @@ conjunction with the 'login' or 'logout'")
password = self.getUserPwd(optPasswd, "p", False) password = self.getUserPwd(optPasswd, "p", False)
if password == False: if password == False:
return False return False
# Записываем пароль пользователя в переменную # ~/.calculate
self.clVars.Set("ur_pw", password) pathConfig = os.path.join(os.environ["HOME"],".calculate")
oldEnvPath = self.clVars.Get("cl_env_path") # Создаем директорию
fileEnvPath = os.path.join(os.environ["HOME"],".calculate.env") if not os.path.exists(pathConfig):
newEnvPath = [fileEnvPath]*3 os.makedirs(pathConfig)
self.clVars.Set("cl_env_path",newEnvPath,True)
# Переменные для записи в env файл # Переменные для записи в env файл
namesVars = ["ur_unix_hash","ur_samba_lm_hash","ur_samba_nt_hash"] varsConfig = {"unix_hash":self.getHashPasswd(password,"ssha"),
data = map(lambda x: (x,self.clVars.Get(x)), namesVars) "samba_lm_hash":self.getHashPasswd(password,"lm"),
for name, value in data: "samba_nt_hash":self.getHashPasswd(password,"nt")}
self.clVars.Write(name, value, True, "default","server") if filter(lambda x: not x, varsConfig.values()):
self.clVars.Set("cl_env_path",oldEnvPath,True) return False
# ~/.calculate/server.env
fileConfig = os.path.join(pathConfig,"server.env")
txtConfig = cl_base.iniParser(fileConfig)
if not txtConfig.setVar(["passwd","samba"], varsConfig):
self.printERROR(_("Can not write password variable in file %s")\
%fileConfig)
return False
self.printOK(_("Changed password of user %s")%os.environ["USER"] + \ self.printOK(_("Changed password of user %s")%os.environ["USER"] + \
" ...") " ...")
self.printWARNING(_("Password will be changed when you logout from the \ self.printWARNING(_("Password will be changed when you logout from the \
@ -1470,7 +1507,16 @@ or ld_bind_dn or ld_bind_pw")
def removePrivateFiles(self, userHome): def removePrivateFiles(self, userHome):
"""Удаление приватных файлов""" """Удаление приватных файлов"""
privateFiles = ['.kde4/share/apps/kwallet/kdewallet.kwl', privateFiles = ['.kde4/share/apps/kwallet/kdewallet.kwl',
'.calculate.env'] '.calculate/server.env']
# файлы в .ssh
sshHome = ".ssh"
sshPath = os.path.join(userHome,sshHome)
if os.path.isdir(sshPath):
# .ssh файлы относительно домашней директории пользователя
privateFiles += map(lambda x:os.path.join(sshHome,x),\
filter(lambda x:\
os.path.isfile(os.path.join(sshPath,x)),\
os.listdir(sshPath)))
for prFile in privateFiles: for prFile in privateFiles:
rmFile = os.path.join(userHome, prFile) rmFile = os.path.join(userHome, prFile)
if os.path.exists(rmFile): if os.path.exists(rmFile):
@ -2349,7 +2395,6 @@ or ld_bind_dn or ld_bind_pw")
--exclude="/.local/share/mime/mime.cache" \ --exclude="/.local/share/mime/mime.cache" \
--exclude="/.kde4/share/apps/nepomuk/repository/main/data" \ --exclude="/.kde4/share/apps/nepomuk/repository/main/data" \
--exclude="/.logout" \ --exclude="/.logout" \
--exclude="/.calculate.env" \
--exclude="/.Xauthority" \ --exclude="/.Xauthority" \
--filter="P /.googleearth" --filter="P /Home" --filter="P /Disks" \ --filter="P /.googleearth" --filter="P /Home" --filter="P /Disks" \
--filter="P /.local/share/akonadi/db_data" --filter="P /.VirtualBox" \ --filter="P /.local/share/akonadi/db_data" --filter="P /.VirtualBox" \
@ -2357,7 +2402,6 @@ or ld_bind_dn or ld_bind_pw")
--filter="P /.local/share/mime/mime.cache" \ --filter="P /.local/share/mime/mime.cache" \
--filter="P /.kde4/share/apps/nepomuk/repository/main/data" \ --filter="P /.kde4/share/apps/nepomuk/repository/main/data" \
--filter="P /.logout" \ --filter="P /.logout" \
--filter="P /.calculate.env" \
--filter="P /.Xauthority" \ --filter="P /.Xauthority" \
--filter="P /FTP" -a -x -v -v -v -v %s/ %s/' %(homeProfile,userHome) --filter="P /FTP" -a -x -v -v -v -v %s/ %s/' %(homeProfile,userHome)
elif sync == "logout": elif sync == "logout":

@ -17,10 +17,9 @@
import os import os
import re import re
import cl_base import cl_base
import encrypt
class fillVars(object, cl_base.glob_attr, encrypt.encrypt): class fillVars(object, cl_base.glob_attr):
def get_cl_profile_path(self): def get_cl_profile_path(self):
"""список накладываемых профилей при установке, наложении профилей""" """список накладываемых профилей при установке, наложении профилей"""
@ -208,33 +207,3 @@ class fillVars(object, cl_base.glob_attr, encrypt.encrypt):
if userJid: if userJid:
return userJid.partition('@')[2] return userJid.partition('@')[2]
return "" return ""
def get_ur_unix_hash(self):
"""Хеш пароля пользователя для сервиса Unix"""
userPwd = self.Get("ur_pw")
if not userPwd:
return ""
hashPwd = self.getHashPasswd(userPwd,"ssha")
if not hashPwd:
return ""
return hashPwd
def get_ur_samba_lm_hash(self):
"""LANMAN хеш пароля пользователя для сервиса Samba"""
userPwd = self.Get("ur_pw")
if not userPwd:
return ""
hashPwd = self.getHashPasswd(userPwd,"lm")
if not hashPwd:
return ""
return hashPwd
def get_ur_samba_nt_hash(self):
"""NT хеш пароля пользователя для сервиса Samba"""
userPwd = self.Get("ur_pw")
if not userPwd:
return ""
hashPwd = self.getHashPasswd(userPwd,"nt")
if not hashPwd:
return ""
return hashPwd

@ -152,14 +152,3 @@ class Data:
# порт подключения к сервису Proxy # порт подключения к сервису Proxy
sr_proxy_port = {'mode':"w"} sr_proxy_port = {'mode':"w"}
# открытый пароль пользователя, для генераци хешей
ur_pw = {'mode':"w"}
# хеш пароля пользователя для сервиса Unix
ur_unix_hash = {'mode':"w"}
# LANMAN хеш пароля пользователя для сервиса Samba
ur_samba_lm_hash = {'mode':"w"}
# NT хеш пароля пользователя для сервиса Samba
ur_samba_nt_hash = {'mode':"w"}
Loading…
Cancel
Save