diff --git a/bin/cl-client-resume-remount b/bin/cl-client-resume-remount deleted file mode 100644 index 20ffd60..0000000 --- a/bin/cl-client-resume-remount +++ /dev/null @@ -1,161 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -# Copyright 2013-2016 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 __future__ - -import gobject - -import dbus -import os -from os import path -import dbus.mainloop.glib -from calculate.lib.datavars import DataVars, VariableError -from calculate.client.client import Client -from argparse import ArgumentParser -from time import sleep - - -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. - """ - nscd_refresh = "/usr/sbin/nscd-refresh" - - 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')): - if refresh_nscd and path.exists(self.nscd_refresh): - os.system(self.nscd_refresh) - return True - return False - - 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 Exception: - 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 Exception: - pass - - def handle_resuming(self, statename): - """ - Handle PrepareForSleep statename(True) sleep, statename(False) resume - """ - resume = not bool(statename) - print("Restoring remote mounts for user %s" % self.dv.Get('ur_login')) - if resume: - # lazy umount domain user resources, and remote - for rpath in self.dv.Get('client.cl_client_user_mount_path'): - if rpath: - os.system("/bin/umount -l %s &>/dev/null"%rpath) - os.system("/bin/umount -l %s &>/dev/null"%"/var/calculate/remote") - - # waiting for the domain - for wait in [1, 2, 5, 5, 10, 10, 15]: - try: - if self.check_server(True): - break - except Exception: - pass - sleep(wait) - - # wait for netmount - netmount_stopping = '/run/openrc/stopping/netmount' - for wait in range(0, 20): - if not path.exists(netmount_stopping): - break - sleep(1) - - # check and remount remote resources - self.remount_remote() - self.remount_user_resources() - - -def main(argv): - # processing the user argument - argp = ArgumentParser(add_help=True) - argp.add_argument("user", help="tracked user", metavar="USER") - namespace = argp.parse_args(argv[1:]) - - dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) - - bus = dbus.SystemBus() - # initialization calculate datavars and quitting on an error - try: - dv = DataVars() - dv.importData() - dv.flIniFile() - dv.Set('ur_login', namespace.user) - # pre-calculate values - for vn in ("ur_uid", "ur_gid", - "client.cl_client_user_mount_path", - "client.cl_client_user_mount_resource", - "client.cl_client_user_mount_host", - "client.cl_client_user_mount_name"): - dv.Get(vn) - if dv.Get('desktop.ur_domain_set') == 'off': - print("%s isn't a domain user" % namespace.user) - sys.exit(0) - except VariableError as e: - sys.stderr.write(str(e) + '\n') - sys.exit(1) - - rm = ResourceRemounter(dv) - bus.add_signal_receiver(rm.handle_resuming, - dbus_interface="org.freedesktop.ConsoleKit.Manager", - signal_name="PrepareForSleep") - loop = gobject.MainLoop() - context = loop.get_context() - while True: - # need for dbus processing - context.iteration(1) - sleep(1) - - -if __name__ == '__main__': - main(sys.argv) diff --git a/data/login.d/15resume_remount b/data/login.d/15resume_remount deleted file mode 100644 index bc11c26..0000000 --- a/data/login.d/15resume_remount +++ /dev/null @@ -1,22 +0,0 @@ -#! /bin/sh -# Copyright 2013-2016 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. - -run_script() { - if [[ "${DOMAIN_USER}" == "on" ]] - then - /usr/sbin/cl-client-resume-remount ${USER} & - fi - return 0 -} diff --git a/data/logout.d/15resume_remount b/data/logout.d/15resume_remount deleted file mode 100644 index a31b2f9..0000000 --- a/data/logout.d/15resume_remount +++ /dev/null @@ -1,23 +0,0 @@ -#! /bin/sh -# Copyright 2013-2016 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. - -run_script() { - if [[ "${DOMAIN_USER}" == "on" ]] - then - pkill -f "cl-client-resume-remount ${USER}" - fi - - return 0 -} diff --git a/setup.py b/setup.py index 4846253..9f99b2b 100755 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ # setup.py --- Setup script for calculate-desktop -# Copyright 2012-2016 Mir Calculate. http://www.calculate-linux.org +# Copyright 2012-2021 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. @@ -30,12 +30,8 @@ from distutils.util import change_root, convert_path data_files = [('/etc/init.d', [('data/client',0755)]), ('/usr/share/calculate/xdm/login.d', ['data/login.d/10client']), - ('/usr/share/calculate/xdm/login.d', - ['data/login.d/15resume_remount']), ('/usr/share/calculate/xdm/logout.d', ['data/logout.d/10client']), - ('/usr/share/calculate/xdm/logout.d', - ['data/logout.d/15resume_remount']), ('/usr/share/calculate/xdm/',[('data/wait_domain',0755)])] class install_data(module_install_data.install_data):