Исправление скриптов перемонтирования ресурсов

Добавлены запуск обновление nss кэша при входе в сеанс,
при разблокировки сеанса.
Добавлено понтирование ресурса remote от доменного пользователя,
перед тем как подключать пользовательские ресурсы.
Так же исправлено неправильное определение этапа загрузки системы
при запросе доменного пароля.
master3.3
Mike khiretskiy 11 years ago
parent 89d049f96f
commit b86851f830

@ -1059,7 +1059,7 @@ class Client(commandServer, encrypt, Desktop):
if remotePw:
self.printERROR(_("Wrong password"))
# не запрашвать пароль при загрузке системы
if not path.exists('/prc/self/fd/0') or \
if not path.exists('/proc/self/fd/0') or \
os.readlink('/proc/self/fd/0') != '/dev/console':
yield self.askPassword(\
_("Domain password for the desktop"),False)

@ -33,28 +33,74 @@ class ResourceRemounter:
Object contains one method for handle 'Resuming' dbus signal.
'handle_resuming' method checks and remounts user remote resources.
Also the object refreshes NSS-cache.
"""
def __init__(self,dv):
self.dv = dv
self.dv.defaultModule = 'client'
self.client = Client()
self.client.clVars = dv
self.check_server(True)
def check_server(self,refresh_nscd=False):
"""
Check the available of domain server and refresh nscd cache
"""
if self.client.checkDomainServer(
self.dv.Get('cl_remote_host'),
self.dv.Get('os_net_domain')):
try:
if refresh_nscd and path.exists(self.nscd_refresh):
os.system(self.nscd_refresh)
except:
pass
return True
return False
nscd_refresh = "/usr/sbin/nscd-refresh"
def remount_remote(self):
"""
Remount remote resource of the domain
"""
try:
self.client.mountRemoteRes(self.dv.Get('cl_remote_pw'),
self.dv.Get('cl_client_remote_path'),
self.dv.Get('cl_remote_host'))
except:
pass
def remount_user_resources(self):
"""
Remount user resource of the domain
"""
try:
self.client.mountUserDomainRes(self.dv.Get('ur_login'),
self.dv.Get('desktop.ur_password'),
int(self.dv.Get('ur_uid')),
int(self.dv.Get('ur_gid')),
"unix","share","homes","ftp")
except:
pass
def handle_resuming(self,statename):
print("Restoring remote mounts for user %s"%self.dv.Get('ur_login'))
# waiting for the domain
for wait in [1,2,5,10]:
if self.client.checkDomainServer(
self.dv.Get('cl_remote_host'),
self.dv.Get('os_net_domain')):
break
if self.check_server(True):
break
sleep(wait)
# check and remount remote resources
self.client.mountUserDomainRes(self.dv.Get('ur_login'),
self.dv.Get('desktop.ur_password'),
int(self.dv.Get('ur_uid')),
int(self.dv.Get('ur_gid')),
"unix","share","homes","ftp")
self.remount_remote()
self.remount_user_resources()
def unlock_screensaver(status):
"""
Handle screensaver unlock
"""
if status == 0:
self.check_server(True)
def main(argv):
# processing the user argument
@ -65,6 +111,7 @@ def main(argv):
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
bus = dbus.SystemBus()
sessionbus = dbus.SessionBus()
# initialization calculate datavars and quitting on an error
try:
dv = DataVars()
@ -81,6 +128,8 @@ def main(argv):
rm = ResourceRemounter(dv)
bus.add_signal_receiver(rm.handle_resuming,dbus_interface="org.freedesktop.UPower",
signal_name = "NotifyResume")
sessionbus.add_signal_receiver(rm.unlock_screensaver,dbus_interface="org.gnome.ScreenSaver",
signal_name = "ActiveChanged")
loop = gobject.MainLoop()
context = loop.get_context()
while True:

@ -19,7 +19,6 @@ source /usr/share/calculate/xdm/functions
if [[ "${DOMAIN_USER}" == "on" ]]
then
[ -x /usr/sbin/nscd-refresh ] && /usr/sbin/nscd-refresh
/usr/sbin/cl-client-resume-remount ${USER} &
fi

Loading…
Cancel
Save