Обновление утилит 3.1.7_alpha2

atratsevskiy
Mike khiretskiy 11 years ago
parent c95b808b83
commit 95d707151f

@ -8,6 +8,7 @@ AUX calculate-client-3.1.6-r1.patch 780 SHA256 ca64bf43d57074087fa46279ed2d8a12a
AUX calculate-client-3.1.6-r2.patch 2173 SHA256 d2b167af98dddb8f656b41b802293e717df637ee0e409c9fbbd252afd438fd37 SHA512 a6de3ba61e6940c2f269a2d22cdaeb3d980a6c354387ac6598137100782e837fa25f6f54e8043ed1d869d6c93f2fb35e6a40b2705240bb23b30ba5f255e1fdb6 WHIRLPOOL 64df8bed944d5da2f762c65130e4fedd5fdc61c5ca27d3ba652a2ae7e5e78c39018f29e4b611e3af868aab7ff575c41b7cfd163a21605487f200a312b740847a
AUX calculate-client-3.1.7_alpha1-r1.patch 319 SHA256 be0a3ac52e182b1a7462401812942015c75d5c1761fbe1f2bdf5ed722b3a68ac SHA512 2ce50acbdc7d70537ce12d2393e295a0e7a79364b781a42ee7dac4d7efa9d372d1a0591b93da3ad5b111875d8cdd5cb790fad1de9e08dc181d9ae43003ec9b43 WHIRLPOOL 0dde5508d5f71c6abf6e599d16aa64f2a778aee21c1d0a61cf1c1836bfbe5e0b8718173ca712ace8b9f07d1362cde419cf192af2d15f6c660e9527b8019913fe
AUX calculate-client-3.1.7_alpha2-r1.patch 990 SHA256 601ccaaab5f55fe9ad29a7f50cee155dd5e32561aa1b0238c02d6df31c94a1ac SHA512 ef4c1bdc7fe15b6cb3349e2da95680cbae674d80fdebb29cb2b07eb756b392ab7dcefeab95a679bd5958c696c3c1e3e79248468e3a6b6cd80957f2179f5bb201 WHIRLPOOL 0dbf102879fff22d263d8e1614f4f238d9f2500c3e0b09ecbea542b4025a60872df4de575cbcb71a2a4f301e377173067a1f2e7df2d62ca6e3a312615ce2572b
AUX calculate-client-3.1.7_alpha2-r2.patch 42362 SHA256 e449b5d47c3195a1fdcd857bdea4039788f75b30a8df8ee04afd132f44de9ff5 SHA512 d583f33ba22ca56fe3106022b9405558fa60022701b31fcfa2288da1a4cd7fd7bb4cd835dce6d662a760007563463f1cc787305ea933ff4f31faf2eefba897dc WHIRLPOOL bc45bc3cfae5f37d281561f075cb357f67f033d7ee2954ce07b98848968288b193058fe98b7e43e7534902e85ab244e1237d7dcf9167628f6c7d885460e0e461
DIST calculate-client-3.1.5.tar.bz2 31578 SHA256 4837b7c296bf4b3a1caa3e0e05156248ec5c32bd5c2e1dd7ae00391fb43f7a02 SHA512 9e3c88764fa7145b649e8348cba140a201de8715f60e48270e4da494fac03619314b9003761c43182d0a3665aba1af76344ca1defeac4b324de8d7c195d7844a WHIRLPOOL 75d00fa10b89be49d6449c24b3a53514ef761f227adb7bf6ef64fbb26ca29489badc6adcf7bba222adbca6a1451003efc39f947005f37aba46fddbabb36628fb
DIST calculate-client-3.1.6.tar.bz2 32036 SHA256 00b5ef665b9148f2b5acc913e59534e810ec0a6c93ee037ffc12852bba3ff290 SHA512 0547fd9320f49c1b628e446298366110dbf19eea94b8e2335ec311b69a33352b575eed3a23bbaf5c24ceb602c7166d1da5c7ea73859421b9b2d6955289956790 WHIRLPOOL d725b4396398def4eb6bc0cc6575430e46ec8bb7efefd721d3ee904c0644bbbf6fc87d43fbf9060e2c71465eaed2ff1522631522f2d829527874dd0a379a9488
DIST calculate-client-3.1.7_alpha1.tar.bz2 30055 SHA256 11d54a03bfab353cb305bd7c2d44ae46b6b8769a6a6147bc46abc063c9fe3bca SHA512 d40a1fe73ecc5dbd2d63547f8e9dfe84477a69c1dc4d6a4cffad8a290554fa389fb16d128a31c6044ed4fe9899354038e6b3e201175f6533a1f9203a391c6ecb WHIRLPOOL 89ff1a3b508e0a50c6730edde17f4e1c303eb8c100e339f582ee9c769f06156a53b5c54526f2c7fe215bd1924b3c048b7c0e8410f82d06ecd6e83be75cdb4632
@ -19,6 +20,7 @@ EBUILD calculate-client-3.1.6.ebuild 806 SHA256 e1fb90f3ff6e73a4a4d3abf66a8bca5a
EBUILD calculate-client-3.1.7_alpha1-r1.ebuild 948 SHA256 6bf8169618e987e5730f08a50da6eb209b0e531c6f94d76a508046260c4002a9 SHA512 c1aeefe49949de5f81e59243e30a1983df6654c48f817cf74dcaa869fc7924dee3dd2dba1f1a73b554d2d307362490bd95766d9ffe6558bf9378c081b110d0bf WHIRLPOOL df261015a88d7a4131d1d1521396142624be6911898c4fca816e11e6a1e1100286ae3a582a8b278fe2f0d7ad61a4b2dc29a956fda03288a1d5a35b94fccea62a
EBUILD calculate-client-3.1.7_alpha1.ebuild 804 SHA256 ca9b179186ea7c801de61b520f8820e0e2a0775fc27b71b2275a35c25e82fdee SHA512 6433322383b4397117c4ed417f3e4da8708a58256546e7785faf7bd837e278f194db6f60d84a6e1664f992c35ee27d23b56b2e4bae064a54cbe3ac57487d40ec WHIRLPOOL 61ca822797ebbe5117970323933a6836913a7880f153c92c39f88065bfa2522b37310971a08aa057c84fb47b5bb11ac4bc8519c2eaf6363d07d7d1f2e9011347
EBUILD calculate-client-3.1.7_alpha2-r1.ebuild 948 SHA256 190c1f72a745e5cac7836cfb42a9527b0f79d647a142ced153e70235f2cde6dd SHA512 7d3044fb17de19d4047e7edaf6bee8124f09bb6ae7ed62cae4bd13dee70c150281124b2af30045da72daf101128a6a80545df3f1f60f15358edc2a5dddd7255e WHIRLPOOL 89e91034e434c4dd8b79c0d91321fecb84f3328e8f625594b5f953d4defad81514ee449ce76d6e1341c8b00ce08dcbb6d68966593f7662b014ed1c8b0019852d
EBUILD calculate-client-3.1.7_alpha2-r2.ebuild 948 SHA256 d2a450d1c8423d696b8fbd2ad719a9aba4e5b5e7c3eb61ec87d2ad9feb51eaf5 SHA512 12a4548f3ce6eadd3996d78af26038a17a73140be77d7b83f63c1067957112bb1591dc0592bce580d8022008c0cf37775dafd1990d78d0ed3793f68024ba738c WHIRLPOOL c8afe2c60979be86b72384b7ece0c9f3ab2e08aca4c60810d0f32ec5f53c74e1318efa060fbecb952b2a0deb6b4f3338beece6926c8df9f7c125b40a7df56a41
EBUILD calculate-client-3.1.7_alpha2.ebuild 804 SHA256 f7ecfc4ae6cf39f2b14f5888fafe7558ff12881674b0b555d960d838dc4f9ea4 SHA512 ea2ddb82e1102583cfea936f229a936826351d6468a43c34ce22d6a9883220ae7dd4a19768cfa909e0278a8fecdd8a8c176070a728ff2f5402d62eadf4a4a8a3 WHIRLPOOL 6bbad294c7a0a063352a7256002734f1e8501c248acad6666113a4a4708377a430b4e670dbdde7ba7597b684bb4f6ee57f03972d8dac629b6b870ed0a284c361
EBUILD calculate-client-3.1.9999.ebuild 879 SHA256 37385187f78bb708669b5cd2742173b117bb482c784f8f481ab7388554476d65 SHA512 87ebc2dfa965a9bb9d24af13a611e83e412cbabb12957bb14e2a1cd8b9f1951efbf690dcfa8f73711a02cfd0afbc9e9f37209ba9a3884b018c41b3a46e2e847b WHIRLPOOL 349da1bcb076af176079473ccb2fd1a4e3d8eb3ec2a7a6102272d1dd1073a8c181c49e02c89ede4b5cd829856f0c0f5db877b89eb0c6335ad678e58902db293b
MISC ChangeLog 21989 SHA256 065aa2c75428e965caef0348105d8e5464d4103f5f2eb16bb626c7a9278208df SHA512 76ad69386d986e2e65448394d738b4d6abbeffb4af38f13dcfbfe8af64796c9b97eda68eb8cbf749fe7ef2711067da430af1cc1a764712e8df853451f903ab57 WHIRLPOOL 58b0a2837255a2eb67606072ac1a6a06e0db7079b563d3b4c9df45b5dbe0fad31c409800da635a337ad976b31bb08549e89063796e8217d46c83ba8b5e22e1b8

@ -0,0 +1,39 @@
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
EAPI="3"
SUPPORT_PYTHON_ABIS="1"
PYTHON_DEPEND="2:2.7"
RESTRICT_PYTHON_ABIS="2.4 2.5 2.6 3.*"
inherit distutils eutils
SRC_URI="ftp://ftp.calculate.ru/pub/calculate/calculate3/${PN}/${P}.tar.bz2"
DESCRIPTION="The program of setting and storing the user account in the domain"
HOMEPAGE="http://www.calculate-linux.org/main/en/calculate2"
LICENSE="Apache-2.0"
SLOT="3"
KEYWORDS=""
DEPEND="~sys-apps/calculate-desktop-3.1.7_alpha2
!<sys-apps/calculate-client-3.1.0
>=dev-python/python-ldap-2.0[ssl]
>=sys-auth/pam_ldap-180[ssl]
>=sys-auth/nss_ldap-239
>=sys-apps/keyexec-0.1.2
sys-apps/keyutils
sys-auth/pam_keystore
sys-auth/pam_client
dev-lang/swig"
RDEPEND="${DEPEND}"
src_unpack() {
unpack "${A}"
cd "${S}"
# apply revision changes
epatch "${FILESDIR}/calculate-client-3.1.7_alpha2-r2.patch"
}

@ -0,0 +1,816 @@
diff --git client/utils/cl_client.py client/utils/cl_client.py
index 7513bce..3104f65 100644
--- client/utils/cl_client.py
+++ client/utils/cl_client.py
@@ -1,6 +1,6 @@
#-*- coding: utf-8 -*-
-# Copyright 2010-2013 Calculate Ltd. http://www.calculate-linux.org
+# Copyright 2013 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.
@@ -24,7 +24,7 @@ from calculate.client.client import ClientError
from calculate.lib.cl_template import TemplatesError
from calculate.lib.utils.files import isMount
-setLocalTranslate('cl_desktop3',sys.modules[__name__])
+setLocalTranslate('cl_client3',sys.modules[__name__])
__ = getLazyLocalTranslate(_)
class ClClientAction(Action):
@@ -87,7 +87,8 @@ class ClClientAction(Action):
},
# наложить шаблоны если они не актуальны
{'name':'need_templates',
- 'condition':lambda Get:Get('cl_client_relevance_set') == 'off'
+ 'condition':lambda Get:Get('cl_client_relevance_set') == 'off',
+ 'depend':Tasks.success(inessential=['mount_remote'])
},
# проверить информацию для ldap расположенную в домене
{'name':'domain:check_domain_info',
@@ -146,341 +147,3 @@ class ClClientAction(Action):
'depend':Tasks.failed() & Tasks.hasnot("interrupt"),
},
]
-
-class ClClientSyncLoginAction(Action):
- """
- Синхронизировать локальный профиль с удаленным, подключить удаленные
- ресурсы пользователя
- """
- native_error = (FilesError,ClientError,DesktopError,TemplatesError)
-
- successMessage = None
- failedMessage = None
- interruptMessage = __("Synchronization manually interrupted")
-
- tasks = [
- # подключить удаленный ресурс домена
- {'name':'mount_remote',
- 'method':'Client.mountRemoteRes(cl_remote_pw,cl_client_remote_path,'
- 'cl_remote_host)',
- 'condition':lambda Get: (Get('cl_remote_host') and
- not isMount(Get('cl_client_remote_path'))),
- },
- # check on domain user
- {'name':'domain_user',
- 'condition':lambda Get: (Get('os_remote_auth') and
- Get('cl_remote_host') and
- Get('desktop.ur_domain_set') == 'on'),
- 'else_message':__("The local profile will be used")
- },
- {'name':'domain_user:create_home',
- 'message':__("Creating the home directory for {ur_login}"),
- 'method':'Client.createUserDirectory(ur_home_path,ur_uid,'
- 'ur_gid)',
- 'condition':lambda Get:not path.exists(Get('ur_home_path'))
- },
- # password in kernel key
- {'name':'domain_user:check_password',
- 'condition':lambda Get:Get('desktop.ur_password'),
- 'else_error':__("User password not found")
- },
- {'name':'ecryptfs',
- 'message':__("Mounting encrypted data"),
- 'method':'Desktop.createCryptDir(ur_login,ur_uid,ur_gid,'
- 'ur_home_path,True)',
- 'condition':lambda Get:(Get('desktop.ur_home_crypt_set') == 'on' and
- Get('install.cl_autologin') != Get('ur_login'))
- },
- {'name':'domain_user:add_to_cache',
- 'essential':False,
- 'method':'Client.cAddUserToCache(ur_login,desktop.ur_password)',
- 'failed_warning':__("Unable to cache user info")
- },
- # подключить удаленные ресурсы пользователя
- {'name':'domain_user:mount_resources',
- 'message':__("Mounting user resources"),
- 'method':'Client.mountUserDomainRes(ur_login,'
- 'desktop.ur_password,'
- 'ur_uid,ur_gid,"unix","share","homes","ftp")',
- },
- # проверка на попытку открыть вторую сессию для этого пользователя
- {'name':'two_session',
- 'error':__("Second X session for user %s cannot be opened."),
- 'condition':lambda Get:Get('ur_login') in \
- Get('desktop.cl_desktop_online_user') and \
- Get('cl_client_sync') == 'on'
- },
- {'name':'domain_user:domain_sync',
- 'method':'Client.setSyncStatus(ur_home_path,ur_uid,ur_gid,"process")',
- 'condition':lambda Get:Get('cl_client_sync') == 'on'
- },
- # подключить профиль пользователя на удаленном домене
- # если на нем находится актуальный профиль
- {'name':'domain_sync:repl_profile',
- 'method':'Client.mountUserDomainRes(ur_login,desktop.ur_password,'
- 'ur_uid,ur_gid,"unix","remote_profile")',
- 'condition':lambda Get:Get('cl_replication_host')
- },
- # проверить расхождение времени между серверами
- #{'name':'repl_profile:check_clock_scew',
- # 'method':'Client.checkClockScew('
- # 'failed_warning':__("Profile synchronization will be applied "
- # "without archiving")
- #},
- # отправить команду архивирования профиля на удаленном домене
- # если он новее локального профиля
- {'name':'repl_profile:pack_remote',
- 'method':'Client.packRemote("remote_profile",'
- 'cl_client_local_sync_time,cl_client_pack_time,'
- 'cl_client_profile_name,ur_uid,ur_gid)',
- 'condition':lambda Get:Get('cl_client_sync_replication_set') == 'on',
- 'else_message':__("The local user profile does not "
- "need to be synchronized with remote domain")
- },
- # монтируем профиль локального домена, если локальный профиль
- # старее удаленного доменного или актуальный профиль
- {'name':'domain_sync:mount_local',
- 'method':'Client.mountUserDomainRes(ur_login,desktop.ur_password,'
- 'ur_uid,ur_gid,"unix")',
- # нет более ранних ошибок и локальный профиль нуждается
- # в синхронизации с удаленным или профиль на локальном домене
- 'depend':(Tasks.success_all('mount_resources') &
- (Tasks.hasnot('repl_profile') |
- Tasks.has('pack_remote')))
- },
- # синхронизируем с профилем локального домена
- {'name':'mount_local!:sync_local',
- 'method':'Client.syncLoginProfile(cl_remote_host,ur_uid,'
- 'ur_gid,ur_home_path,"unix",cl_client_profile_name)',
- 'condition':lambda Get:Get('cl_client_sync_local_set') == 'on',
- 'else_message':__("The local user profile does not "
- "need to be synchronized with local domain")
- },
- # ошибка синхронизации с локальным доменом
- {'name':'local_sync_error',
- 'warning':__("Error synchronizing with the local server {cl_remote_host}"),
- 'depend':Tasks.failed_one_of("mount_local","sync_local")
- },
- # подключить удаленный профиль пользователя с "репликации"
- {'name':'repl_profile:repeat_repl_profile',
- 'method':'Client.mountUserDomainRes(ur_login,desktop.ur_password,'
- 'ur_uid,ur_gid,"remote_profile")',
- },
- # ждать архив от удаленного домена
- {'name':'pack_remote:wait_archive',
- 'message': __("Packing the archive on the server"),
- 'method':'Client.waitingArchFile(cl_client_pack_time,'
- 'cl_client_profile_name,"remote_profile")',
- 'failed_warning':__("Failed to find the profile "
- "archive from {cl_replication_host}")
- },
- # распаковать архив из удаленного домена и удалить
- # файлы которые отсутствуют в удаленном профиле
- {'name':'wait_archive:unpack_profile',
- 'message':__("Unpacking the profile"),
- 'method':'Client.unpackArch(ur_home_path,cl_client_pack_time,'
- 'cl_client_profile_name,"remote_profile")',
- 'failed_warning':__("Failed to unpack")
- },
- # удалить временные архивы
- {'name':'clean_archfiles',
- 'method':'Client.cleanArchs(cl_client_pack_time,'
- 'cl_client_profile_name,"remote_profile")',
- 'failed_warning':__("Unable to remove useless files"),
- 'essential':False,
- 'depend': Tasks.has('pack_remote')
- },
- # синхронизировать профиль с удаленным доменом в случае ошибки
- {'name':'repl_profile:sync_remote',
- 'method':'Client.syncLoginProfile(cl_replication_host,ur_uid,'
- 'ur_gid,ur_home_path,"remote_profile",'
- 'cl_client_profile_name)',
- 'depend':Tasks.failed_one_of('pack_remote','mount_local','sync_local',
- 'wait_archive','unpack_profile'),
- 'condition':lambda Select:isMount(
- Select('cl_client_user_mount_path',
- where='cl_client_user_mount_name',eq='remote_profile',
- limit=1))
- },
- # если синхронизация с удаленным доменом прошла с ошибкой
- # синхронизировать локальный профиль с локальным доменом
- # как запасной профиль
- {'name':'pack_remote:fallback_warning',
- 'warning':__("Error synchronizing with the remote server "
- "{cl_replication_host}"),
- 'depend': ~Tasks.success_one_of('unpack_profile','sync_remote')
- },
- {'name':'pack_remote:fallback_sync',
- 'method':'Client.syncLoginProfile(cl_remote_host,ur_uid,'
- 'ur_gid,ur_home_path,"unix",cl_client_profile_name)',
- 'depend': ~Tasks.success_one_of('unpack_profile','sync_remote')
- },
- # отключить профиль на удаленном домене
- {'name':'repl_profile!:umount_remote_profile',
- 'method':'Client.umountRemoteUserRes(True,"remote_profile")',
- },
- # сообщение о том, что будет использоваться запасной профиль
- # с локального домена
- {'name':'fallback_sync!:fallback_success',
- 'message': __("Get a user fallback profile from the "
- "{cl_remote_host} domain")
- },
- # ошибка синхронизации профиль не готов! к использованию
- {'name':'failed',
- 'error':__("Failed to get the user profile from the domain"),
- 'method':'Client.setSyncStatus(ur_home_path,ur_uid,ur_gid,"error")',
- 'depend':Tasks.failed_all('sync_remote','sync_local','fallback_sync') |
- (Tasks.hasnot('domain_sync') & Tasks.failed()) |
- Tasks.failed_one_of('mount_resources')
- },
- # распаковать ссылки
- {'name':'domain_sync:unpack_links',
- 'method':'Client.unpackLinks(ur_home_path)',
- 'failed_warning': __("Failed to unpack the links archive"),
- 'depend':Tasks.hasnot('failed')
- },
- # синхронизация профиля завершилась успешно
- {'name':'domain_sync:success_sync',
- 'message':__("Get the user profile from domain"),
- 'method':'Client.setSyncStatus(ur_home_path,ur_uid,ur_gid,"success")',
- 'depend': Tasks.success_all('sync_remote','unpack_links') |
- Tasks.success()
- },
- # во время синхронизации профиля произошли ошибки, которые не
- # гарантируют целостность профиля
- {'name':'domain_sync:error_sync',
- 'warning':__("Changings in the user profile will not "
- "be saved to the domain"),
- 'method':'Client.setSyncStatus(ur_home_path,ur_uid,ur_gid,"error")',
- 'depend': Tasks.hasnot('success_sync','failed')
- },
- # отключить ресурсы в случае ошибки
- {'name':'umount_remote_res',
- 'message':__("Umounting user resources"),
- 'method':'Client.umountUserRes(desktop.ur_mount_dirs)',
- 'depend':Tasks.has('failed')
- }
- ]
-
-
-class ClClientSyncLogoutAction(Action):
- """
- Синхронизировать локальный профиль с удаленным, отключить удаленные
- ресурсы пользователя
- """
- native_error = (FilesError,ClientError,DesktopError,TemplatesError)
-
- successMessage = None
- failedMessage = None
- interruptMessage = __("Synchronization manually interrupted")
-
- tasks = [
- # проверка доменный ли пользователь
- {'name':'domain_user',
- 'condition':lambda Get: (Get('os_remote_auth') and
- Get('cl_remote_host') and
- Get('desktop.ur_domain_set') == 'on'),
- 'else_message':__("The local profile is used")
- },
- # проверка на попытку отключить ресурсы пользователя в X сессии
- {'name':'domain_user:in_xsession',
- 'error':__("User {ur_login} is already in X session"),
- 'condition':lambda Get:Get('ur_login') in \
- Get('desktop.cl_desktop_online_user'),
- },
- # проверить наличие домашней директории
- {'name':'domain_user:check_homedir',
- 'condition':lambda Get:path.exists(Get('ur_home_path')),
- 'else_error':__("User home directory {ur_home_path} not found"),
- },
- # проверить наличие подключенных ресурсов
- {'name':'check_mount',
- 'condition':lambda Get:any(x and isMount(x)
- for x in Get('cl_client_user_mount_path')),
- 'else_error':__("User remote resources not found")
- },
- # установить время выхода из сеанса
- {'name':'domain_user:set_logout_date',
- 'method':'Client.setLogoutDate(ur_home_path,ur_uid,ur_gid)'
- },
- # выполнять ли синхронизацию
- {'name':'domain_user:domain_sync',
- 'condition':lambda Get:Get('cl_client_sync_status') == 'success' and
- Get('cl_client_sync') == 'on',
- 'else_warning':__("Profile will not be upload to domain")
- },
- # переместить файлы из профиля в Moved
- {'name':'domain_user:move_home_dir',
- 'message':__("Moving not profile files to Home/Moved directory"),
- 'method':'Client.moveHomeDir(ur_home_path,"Moved","homes",'
- 'cl_moved_skip_path)',
- },
- # архивировать симлинки
- {'name':'domain_sync:tar_symlinks',
- 'method':'Client.tarSymLinks(ur_uid,ur_gid,ur_home_path,'
- 'cl_sync_del_path,cl_sync_skip_path)',
- 'failed_error':_("Failed to make a links archive")
- },
- # закачать профиль пользователя в домен
- {'name':'domain_sync:sync_logout',
- 'method':'Client.syncLogoutProfile(cl_remote_host,ur_uid,'
- 'ur_gid,ur_home_path,"unix",cl_client_profile_name,'
- 'cl_client_symlinks)',
- },
- # удалить файлы, которые могут помешать следующему входу в сеанс
- {'name':'domain_sync:remove_noise_files',
- 'message':__("Removing hindering files"),
- 'method':'Client.removeNoiseFiles(ur_home_path)'
- },
- # удалить "личные" файлы
- {'name':'domain_sync:remove_private_files',
- 'message':__("Removing user private files"),
- 'method':'Client.removePrivateFiles(ur_home_path)'
- },
- # удалить пользовательские ключи ядра
- {'name':'skip:clear_user_key',
- 'message':__("Clearing user key"),
- 'method':'Client.clearUserKey(ur_login)'
- },
- # отключить пользовательские ресурсы
- {'name':'check_mount!:umount_user_res',
- 'message':__("Umounting user resources"),
- 'method':'Client.umountUserRes(desktop.ur_mount_dirs)',
- },
- # установить статус синхронизации
- {'name':'domain_sync:success_sync',
- 'message':__("Modified user profile saved in the domain"),
- 'method':'Client.setSyncStatus(ur_home_path,ur_uid,ur_gid,'
- '"success_logout")',
- 'depend': Tasks.success_all('sync_logout','check_mount')
- },
- {'name':'domain_sync:failed',
- 'error':__("Modified user profile saved in the domain with errors"),
- 'method':'Client.setSyncStatus(ur_home_path,ur_uid,ur_gid,'
- '"error")',
- 'depend': Tasks.hasnot('success_sync')
- },
- {'name':'umount_allres',
- 'method':'Desktop.umountUserRes(ur_home_path)',
- }
- ]
-
-class ClPasswdAction(Action):
- """
- Изменить пароль доменного пользователя
- """
- # ошибки, которые отображаются без подробностей
- native_error = (FilesError,DesktopError,TemplatesError)
-
- successMessage = (__("{cl_client_login}'s password changed\n"
- "The password will be changed when you log out"
- "from the X session"))
- failedMessage = __("Failed to change password")
- interruptMessage = __("Logout manually interrupted")
-
- # список задач для действия
- tasks = [
- {'name':'change_passwd',
- 'method':'Client.clientPasswd(cl_client_login,ur_uid,ur_gid,'
- 'ur_home_path,ur_user_new_pw,ur_user_pw)',
- }]
diff --git client/utils/cl_client_sync.py client/utils/cl_client_sync.py
new file mode 100644
index 0000000..b5f53bf
--- /dev/null
+++ client/utils/cl_client_sync.py
@@ -0,0 +1,345 @@
+#-*- coding: utf-8 -*-
+
+# Copyright 2013 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
+from os import path
+from calculate.core.server.func import Action,Tasks
+from calculate.lib.cl_lang import setLocalTranslate,getLazyLocalTranslate
+from calculate.lib.utils.files import FilesError
+from calculate.desktop.desktop import DesktopError
+from calculate.client.client import ClientError
+from calculate.lib.cl_template import TemplatesError
+
+setLocalTranslate('cl_client3',sys.modules[__name__])
+__ = getLazyLocalTranslate(_)
+
+class ClClientSyncLoginAction(Action):
+ """
+ Синхронизировать локальный профиль с удаленным, подключить удаленные
+ ресурсы пользователя
+ """
+ native_error = (FilesError,ClientError,DesktopError,TemplatesError)
+
+ successMessage = None
+ failedMessage = None
+ interruptMessage = __("Synchronization manually interrupted")
+
+ tasks = [
+ # подключить удаленный ресурс домена
+ {'name':'mount_remote',
+ 'method':'Client.mountRemoteRes(cl_remote_pw,cl_client_remote_path,'
+ 'cl_remote_host)',
+ 'condition':lambda Get: (Get('cl_remote_host') and
+ not isMount(Get('cl_client_remote_path'))),
+ },
+ # check on domain user
+ {'name':'domain_user',
+ 'condition':lambda Get: (Get('os_remote_auth') and
+ Get('cl_remote_host') and
+ Get('desktop.ur_domain_set') == 'on'),
+ 'else_message':__("The local profile will be used")
+ },
+ {'name':'domain_user:create_home',
+ 'message':__("Creating the home directory for {ur_login}"),
+ 'method':'Client.createUserDirectory(ur_home_path,ur_uid,'
+ 'ur_gid)',
+ 'condition':lambda Get:not path.exists(Get('ur_home_path'))
+ },
+ # password in kernel key
+ {'name':'domain_user:check_password',
+ 'condition':lambda Get:Get('desktop.ur_password'),
+ 'else_error':__("User password not found")
+ },
+ {'name':'ecryptfs',
+ 'message':__("Mounting encrypted data"),
+ 'method':'Desktop.createCryptDir(ur_login,ur_uid,ur_gid,'
+ 'ur_home_path,True)',
+ 'condition':lambda Get:(Get('desktop.ur_home_crypt_set') == 'on' and
+ Get('install.cl_autologin') != Get('ur_login'))
+ },
+ {'name':'domain_user:add_to_cache',
+ 'essential':False,
+ 'method':'Client.cAddUserToCache(ur_login,desktop.ur_password)',
+ 'failed_warning':__("Unable to cache user info")
+ },
+ # подключить удаленные ресурсы пользователя
+ {'name':'domain_user:mount_resources',
+ 'message':__("Mounting user resources"),
+ 'method':'Client.mountUserDomainRes(ur_login,'
+ 'desktop.ur_password,'
+ 'ur_uid,ur_gid,"unix","share","homes","ftp")',
+ },
+ # проверка на попытку открыть вторую сессию для этого пользователя
+ {'name':'two_session',
+ 'error':__("Second X session for user %s cannot be opened."),
+ 'condition':lambda Get:Get('ur_login') in \
+ Get('desktop.cl_desktop_online_user') and \
+ Get('cl_client_sync') == 'on'
+ },
+ {'name':'domain_user:domain_sync',
+ 'method':'Client.setSyncStatus(ur_home_path,ur_uid,ur_gid,"process")',
+ 'condition':lambda Get:Get('cl_client_sync') == 'on'
+ },
+ # подключить профиль пользователя на удаленном домене
+ # если на нем находится актуальный профиль
+ {'name':'domain_sync:repl_profile',
+ 'method':'Client.mountUserDomainRes(ur_login,desktop.ur_password,'
+ 'ur_uid,ur_gid,"unix","remote_profile")',
+ 'condition':lambda Get:Get('cl_replication_host')
+ },
+ # проверить расхождение времени между серверами
+ #{'name':'repl_profile:check_clock_scew',
+ # 'method':'Client.checkClockScew('
+ # 'failed_warning':__("Profile synchronization will be applied "
+ # "without archiving")
+ #},
+ # отправить команду архивирования профиля на удаленном домене
+ # если он новее локального профиля
+ {'name':'repl_profile:pack_remote',
+ 'method':'Client.packRemote("remote_profile",'
+ 'cl_client_local_sync_time,cl_client_pack_time,'
+ 'cl_client_profile_name,ur_uid,ur_gid)',
+ 'condition':lambda Get:Get('cl_client_sync_replication_set') == 'on',
+ 'else_message':__("The local user profile does not "
+ "need to be synchronized with remote domain")
+ },
+ # монтируем профиль локального домена, если локальный профиль
+ # старее удаленного доменного или актуальный профиль
+ {'name':'domain_sync:mount_local',
+ 'method':'Client.mountUserDomainRes(ur_login,desktop.ur_password,'
+ 'ur_uid,ur_gid,"unix")',
+ # нет более ранних ошибок и локальный профиль нуждается
+ # в синхронизации с удаленным или профиль на локальном домене
+ 'depend':(Tasks.success_all('mount_resources') &
+ (Tasks.hasnot('repl_profile') |
+ Tasks.has('pack_remote')))
+ },
+ # синхронизируем с профилем локального домена
+ {'name':'mount_local!:sync_local',
+ 'method':'Client.syncLoginProfile(cl_remote_host,ur_uid,'
+ 'ur_gid,ur_home_path,"unix",cl_client_profile_name)',
+ 'condition':lambda Get:Get('cl_client_sync_local_set') == 'on',
+ 'else_message':__("The local user profile does not "
+ "need to be synchronized with local domain")
+ },
+ # ошибка синхронизации с локальным доменом
+ {'name':'local_sync_error',
+ 'warning':__("Error synchronizing with the local server {cl_remote_host}"),
+ 'depend':Tasks.failed_one_of("mount_local","sync_local")
+ },
+ # подключить удаленный профиль пользователя с "репликации"
+ {'name':'repl_profile:repeat_repl_profile',
+ 'method':'Client.mountUserDomainRes(ur_login,desktop.ur_password,'
+ 'ur_uid,ur_gid,"remote_profile")',
+ },
+ # ждать архив от удаленного домена
+ {'name':'pack_remote:wait_archive',
+ 'message': __("Packing the archive on the server"),
+ 'method':'Client.waitingArchFile(cl_client_pack_time,'
+ 'cl_client_profile_name,"remote_profile")',
+ 'failed_warning':__("Failed to find the profile "
+ "archive from {cl_replication_host}")
+ },
+ # распаковать архив из удаленного домена и удалить
+ # файлы которые отсутствуют в удаленном профиле
+ {'name':'wait_archive:unpack_profile',
+ 'message':__("Unpacking the profile"),
+ 'method':'Client.unpackArch(ur_home_path,cl_client_pack_time,'
+ 'cl_client_profile_name,"remote_profile")',
+ 'failed_warning':__("Failed to unpack")
+ },
+ # удалить временные архивы
+ {'name':'clean_archfiles',
+ 'method':'Client.cleanArchs(cl_client_pack_time,'
+ 'cl_client_profile_name,"remote_profile")',
+ 'failed_warning':__("Unable to remove useless files"),
+ 'essential':False,
+ 'depend': Tasks.has('pack_remote')
+ },
+ # синхронизировать профиль с удаленным доменом в случае ошибки
+ {'name':'repl_profile:sync_remote',
+ 'method':'Client.syncLoginProfile(cl_replication_host,ur_uid,'
+ 'ur_gid,ur_home_path,"remote_profile",'
+ 'cl_client_profile_name)',
+ 'depend':Tasks.failed_one_of('pack_remote','mount_local','sync_local',
+ 'wait_archive','unpack_profile'),
+ 'condition':lambda Select:isMount(
+ Select('cl_client_user_mount_path',
+ where='cl_client_user_mount_name',eq='remote_profile',
+ limit=1))
+ },
+ # если синхронизация с удаленным доменом прошла с ошибкой
+ # синхронизировать локальный профиль с локальным доменом
+ # как запасной профиль
+ {'name':'pack_remote:fallback_warning',
+ 'warning':__("Error synchronizing with the remote server "
+ "{cl_replication_host}"),
+ 'depend': ~Tasks.success_one_of('unpack_profile','sync_remote')
+ },
+ {'name':'pack_remote:fallback_sync',
+ 'method':'Client.syncLoginProfile(cl_remote_host,ur_uid,'
+ 'ur_gid,ur_home_path,"unix",cl_client_profile_name)',
+ 'depend': ~Tasks.success_one_of('unpack_profile','sync_remote')
+ },
+ # отключить профиль на удаленном домене
+ {'name':'repl_profile!:umount_remote_profile',
+ 'method':'Client.umountRemoteUserRes(True,"remote_profile")',
+ },
+ # сообщение о том, что будет использоваться запасной профиль
+ # с локального домена
+ {'name':'fallback_sync!:fallback_success',
+ 'message': __("Get a user fallback profile from the "
+ "{cl_remote_host} domain")
+ },
+ # ошибка синхронизации профиль не готов! к использованию
+ {'name':'failed',
+ 'error':__("Failed to get the user profile from the domain"),
+ 'method':'Client.setSyncStatus(ur_home_path,ur_uid,ur_gid,"error")',
+ 'depend':Tasks.failed_all('sync_remote','sync_local','fallback_sync') |
+ (Tasks.hasnot('domain_sync') & Tasks.failed()) |
+ Tasks.failed_one_of('mount_resources')
+ },
+ # распаковать ссылки
+ {'name':'domain_sync:unpack_links',
+ 'method':'Client.unpackLinks(ur_home_path)',
+ 'failed_warning': __("Failed to unpack the links archive"),
+ 'depend':Tasks.hasnot('failed')
+ },
+ # синхронизация профиля завершилась успешно
+ {'name':'domain_sync:success_sync',
+ 'message':__("Get the user profile from domain"),
+ 'method':'Client.setSyncStatus(ur_home_path,ur_uid,ur_gid,"success")',
+ 'depend': Tasks.success_all('sync_remote','unpack_links') |
+ Tasks.success()
+ },
+ # во время синхронизации профиля произошли ошибки, которые не
+ # гарантируют целостность профиля
+ {'name':'domain_sync:error_sync',
+ 'warning':__("Changings in the user profile will not "
+ "be saved to the domain"),
+ 'method':'Client.setSyncStatus(ur_home_path,ur_uid,ur_gid,"error")',
+ 'depend': Tasks.hasnot('success_sync','failed')
+ },
+ # отключить ресурсы в случае ошибки
+ {'name':'umount_remote_res',
+ 'message':__("Umounting user resources"),
+ 'method':'Client.umountUserRes(desktop.ur_mount_dirs)',
+ 'depend':Tasks.has('failed')
+ }
+ ]
+
+
+class ClClientSyncLogoutAction(Action):
+ """
+ Синхронизировать локальный профиль с удаленным, отключить удаленные
+ ресурсы пользователя
+ """
+ native_error = (FilesError,ClientError,DesktopError,TemplatesError)
+
+ successMessage = None
+ failedMessage = None
+ interruptMessage = __("Synchronization manually interrupted")
+
+ tasks = [
+ # проверка доменный ли пользователь
+ {'name':'domain_user',
+ 'condition':lambda Get: (Get('os_remote_auth') and
+ Get('cl_remote_host') and
+ Get('desktop.ur_domain_set') == 'on'),
+ 'else_message':__("The local profile is used")
+ },
+ # проверка на попытку отключить ресурсы пользователя в X сессии
+ {'name':'domain_user:in_xsession',
+ 'error':__("User {ur_login} is already in X session"),
+ 'condition':lambda Get:Get('ur_login') in \
+ Get('desktop.cl_desktop_online_user'),
+ },
+ # проверить наличие домашней директории
+ {'name':'domain_user:check_homedir',
+ 'condition':lambda Get:path.exists(Get('ur_home_path')),
+ 'else_error':__("User home directory {ur_home_path} not found"),
+ },
+ # проверить наличие подключенных ресурсов
+ {'name':'check_mount',
+ 'condition':lambda Get:any(x and isMount(x)
+ for x in Get('cl_client_user_mount_path')),
+ 'else_error':__("User remote resources not found")
+ },
+ # установить время выхода из сеанса
+ {'name':'domain_user:set_logout_date',
+ 'method':'Client.setLogoutDate(ur_home_path,ur_uid,ur_gid)'
+ },
+ # выполнять ли синхронизацию
+ {'name':'domain_user:domain_sync',
+ 'condition':lambda Get:Get('cl_client_sync_status') == 'success' and
+ Get('cl_client_sync') == 'on',
+ 'else_warning':__("Profile will not be upload to domain")
+ },
+ # переместить файлы из профиля в Moved
+ {'name':'domain_user:move_home_dir',
+ 'message':__("Moving not profile files to Home/Moved directory"),
+ 'method':'Client.moveHomeDir(ur_home_path,"Moved","homes",'
+ 'cl_moved_skip_path)',
+ },
+ # архивировать симлинки
+ {'name':'domain_sync:tar_symlinks',
+ 'method':'Client.tarSymLinks(ur_uid,ur_gid,ur_home_path,'
+ 'cl_sync_del_path,cl_sync_skip_path)',
+ 'failed_error':_("Failed to make a links archive")
+ },
+ # закачать профиль пользователя в домен
+ {'name':'domain_sync:sync_logout',
+ 'method':'Client.syncLogoutProfile(cl_remote_host,ur_uid,'
+ 'ur_gid,ur_home_path,"unix",cl_client_profile_name,'
+ 'cl_client_symlinks)',
+ },
+ # удалить файлы, которые могут помешать следующему входу в сеанс
+ {'name':'domain_sync:remove_noise_files',
+ 'message':__("Removing hindering files"),
+ 'method':'Client.removeNoiseFiles(ur_home_path)'
+ },
+ # удалить "личные" файлы
+ {'name':'domain_sync:remove_private_files',
+ 'message':__("Removing user private files"),
+ 'method':'Client.removePrivateFiles(ur_home_path)'
+ },
+ # удалить пользовательские ключи ядра
+ {'name':'skip:clear_user_key',
+ 'message':__("Clearing user key"),
+ 'method':'Client.clearUserKey(ur_login)'
+ },
+ # отключить пользовательские ресурсы
+ {'name':'check_mount!:umount_user_res',
+ 'message':__("Umounting user resources"),
+ 'method':'Client.umountUserRes(desktop.ur_mount_dirs)',
+ },
+ # установить статус синхронизации
+ {'name':'domain_sync:success_sync',
+ 'message':__("Modified user profile saved in the domain"),
+ 'method':'Client.setSyncStatus(ur_home_path,ur_uid,ur_gid,'
+ '"success_logout")',
+ 'depend': Tasks.success_all('sync_logout','check_mount')
+ },
+ {'name':'domain_sync:failed',
+ 'error':__("Modified user profile saved in the domain with errors"),
+ 'method':'Client.setSyncStatus(ur_home_path,ur_uid,ur_gid,'
+ '"error")',
+ 'depend': Tasks.hasnot('success_sync')
+ },
+ {'name':'check_mount!:umount_allres',
+ 'method':'Desktop.umountUserRes(ur_home_path)',
+ }
+ ]
diff --git client/utils/cl_passwd.py client/utils/cl_passwd.py
new file mode 100644
index 0000000..18323eb
--- /dev/null
+++ client/utils/cl_passwd.py
@@ -0,0 +1,47 @@
+#-*- coding: utf-8 -*-
+
+# Copyright 2013 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
+from os import path
+from calculate.core.server.func import Action,Tasks
+from calculate.lib.cl_lang import setLocalTranslate,getLazyLocalTranslate
+from calculate.lib.utils.files import FilesError
+from calculate.desktop.desktop import DesktopError
+from calculate.client.client import ClientError
+from calculate.lib.cl_template import TemplatesError
+
+setLocalTranslate('cl_client3',sys.modules[__name__])
+__ = getLazyLocalTranslate(_)
+
+class ClPasswdAction(Action):
+ """
+ Изменить пароль доменного пользователя
+ """
+ # ошибки, которые отображаются без подробностей
+ native_error = (FilesError,DesktopError,TemplatesError,ClientError)
+
+ successMessage = (__("{cl_client_login}'s password changed\n"
+ "The password will be changed when you log out"
+ "from the X session"))
+ failedMessage = __("Failed to change password")
+ interruptMessage = __("Logout manually interrupted")
+
+ # список задач для действия
+ tasks = [
+ {'name':'change_passwd',
+ 'method':'Client.clientPasswd(cl_client_login,ur_uid,ur_gid,'
+ 'ur_home_path,ur_user_new_pw,ur_user_pw)',
+ }]
diff --git client/variables/client.py client/variables/client.py
index 88f7ab5..4620e81 100644
--- client/variables/client.py
+++ client/variables/client.py
@@ -296,6 +296,9 @@ class VariableClClientRelevanceSet(ReadonlyVariable):
# если изменился домен
if self.Get('cl_remote_host') != self.Get("os_remote_auth"):
return "off"
+ if (self.Get('cl_remote_host') and
+ not isMount(self.Get('cl_client_remote_path'))):
+ return "off"
currentVersion = self.Get("cl_ver")
# версия программы, который были наложены шаблоны
previousVersion = self.Get("os_remote_client")
diff --git client/wsdl_client.py client/wsdl_client.py
index 2bd0ee6..90b2302 100644
--- client/wsdl_client.py
+++ client/wsdl_client.py
@@ -19,15 +19,16 @@ from calculate.lib.datavars import VariableError, DataVarsError
from calculate.core.server.func import WsdlBase
from calculate.desktop.desktop import DesktopError
from client import ClientError
-from utils.cl_client import (ClClientAction, ClClientSyncLoginAction,
- ClClientSyncLogoutAction, ClPasswdAction)
+from utils.cl_client import ClClientAction
+from utils.cl_passwd import ClPasswdAction
+from utils.cl_client_sync import (ClClientSyncLoginAction,
+ ClClientSyncLogoutAction)
import calculate.desktop.desktop as desktop
import calculate.client.client as client
-import calculate.install.install as install
from calculate.lib.cl_lang import setLocalTranslate, getLazyLocalTranslate
-setLocalTranslate('cl_desktop3', sys.modules[__name__])
+setLocalTranslate('cl_client3', sys.modules[__name__])
__ = getLazyLocalTranslate(_)

@ -9,6 +9,7 @@ AUX calculate-desktop-3.1.6-r3.patch 4933 SHA256 bf7dab7ccd1c5f85dd14867200eff81
AUX calculate-desktop-3.1.6-r4.patch 7626 SHA256 090e972f5ffd59d874c5eb107d423c36d878082d3a929c6a2272d8ab7694de0d SHA512 b404f912d84b83defab928dc9b12e518c791cb413b3a0bad032639baed07e489284d7be99cae73c2eb8e5fd963a4033da371e63dab1b4fd166bc807db9e0ad8a WHIRLPOOL 90548428c83ff76874a453de9315cb6ff05f4dbdbc29a5e8839c5dfef404c24cf5d968ed014fd6903d0902baef8c4ef1bbe5e4db22c0e0fcfc1ad422201888ad
AUX calculate-desktop-3.1.7_alpha2-r1.patch 1955 SHA256 fd5f4f1786521d618dd2759d029666450daa13d6b3c6581e8add24c53b24b3bb SHA512 8cade53503a0999fadc1e217b303479d748f9bba571b46a6b63089e8ac83e37d6734e71cbe3c4b3870f750b8a76e81b849aee0fef7b8b8e7946aebdc21c2d8b8 WHIRLPOOL 013973d33f4a664e9f8c1dfcd63aa5efb934bb9e28a33e8908a690075160337ea56c1cc165c988f83a8e6b5177f9baa367720fde29ac5f63cc2284a7a1d4ce6b
AUX calculate-desktop-3.1.7_alpha2-r2.patch 4001 SHA256 2873c5fe8fa4f6be71781ae79159fde8df702f5cab6bbc8ac31336ec61235f44 SHA512 3111f8ceebe6fd17d4f17ed9bbc54af53f3643f6fa07125db112408c9e7b669aeb2d03a77bd24d67daa65e9421ddc35ff3dbf93b80448e85f4f95ab728205114 WHIRLPOOL 8747eeb835e6e8c70485c6c5f9d5765b3aa3be56c833c34f1768c11982ffd4e46dc9b83a35e64f8a23c3b6aa105ba3da3ed4d5303de71a5f2c356ca9eae59b46
AUX calculate-desktop-3.1.7_alpha2-r3.patch 4035 SHA256 0581fcf7a8f6228d240eba875830d3a32d267738441a1cb14058d11206ce1599 SHA512 064456a36943d5ae0ec787040a60902b5f6b870f91537807b42309eb04fde18ad1a4fa3575e7d7a16b62ddda7c32b1e7f25389a6353e1f4aee5f56ce72872e85 WHIRLPOOL 158ff3437b9cde790120271bcded5bfc15fffb70f4d1e05381cee3cd1bb0362e34c55bfbb333715d6f1b197356cd025454056bc1ed0589e05e6a47d9b4e3c8db
DIST calculate-desktop-3.1.5.tar.bz2 13368 SHA256 58630f5f47b5f5ffcc137a32a95b4077ac540c38ed619ab0bb5a3db51e1757f4 SHA512 2ea99d923a43de91a9791dfa71cc546af3f6ffba31859b895d7e03e1975fdcd43a63ef220eeefaee444f43eb33970a52f223dcbe420b3ab208c902f67ba7bbf1 WHIRLPOOL 418949fe17a2b0d9178a017a761e8cd9c2f1f926384d5c784e638598618f6f6f4ae36c469717adabbc9deacb32692a4fa05ed8cef5f477d14eba156257debbc9
DIST calculate-desktop-3.1.6.tar.bz2 15486 SHA256 46782f98e36239851cbc6c4f51003b0eccd319cb86f9eccfce3b87009b217954 SHA512 61ce9a4df56a2f745ea754aba6284c3a23cd7268424c4f4a18bc0ed11d39b8c0fbacf59c7c49aa68addb16ecaa16640ac0ba430aef22ab9b186b8f7e7d63e0b4 WHIRLPOOL d039df01e9abb76590dc72212719579dab14db9398d8a961f8c82c88e6ac1b65787dc70713bc593782b8582f1e2d12e7bbb1c216b92b7b2f47581916bd394812
DIST calculate-desktop-3.1.7_alpha1.tar.bz2 16658 SHA256 22b4a12f8d6fa7feeadf7683404304bc956338866f7c0dc7a15fe9d2a738e6c7 SHA512 466b015e58ed5c99bfcf458a6956896352d530ed94684b748a4551ee239c6cc5458eae860ccae0d98e0eaf018e9004668fd735e02724caf830796f2a70246ebb WHIRLPOOL 30e8113d61b5c3e0cd138d0011ad5fa0110069b4fdda3b155ce02ff58e5fcae09e5559ea1f1725be12eb7e6350d1c2cb4756a421d5727a460e19b949067e876c
@ -22,6 +23,7 @@ EBUILD calculate-desktop-3.1.6.ebuild 765 SHA256 02b68a3668c08466e55dae5fceecd5d
EBUILD calculate-desktop-3.1.7_alpha1.ebuild 761 SHA256 c6c79e09c4ef8a35269c8b3ebdffe56e1e8c695d0cc5a2961501f2e1270fa3f5 SHA512 043bb40c89fed025e574615e178a958a04f36cff6e8ad85bdeb320ea1bfd384d18c24a012f0e4c3383d510efdef3e60f1f4755afa7361e90caa31d5093636705 WHIRLPOOL 06a35dcffee31f987c9a92e04219fcaad49e7c80b3ffd71d1bb457a759bae734a4e76ccb3dd1419d1015531a8636d2e79669e2979722da10e2fa6d65508dccd6
EBUILD calculate-desktop-3.1.7_alpha2-r1.ebuild 906 SHA256 036ac091e41e4f797aadea07688051ff62e93a094357293bbf5c792a34c2344c SHA512 dd69d6b7c5bc749f5ab99b28b798f08134162af896a6d8da29bdf468b98f016cdb4174f52227f05a474e8a5894405899cfc093fbae83dd6e75a48dce693b47a0 WHIRLPOOL 525acf8aff4c8b1785a0fb5dfb5563b7cda933f69eb0befb0b11ccd1a72242310476de01cd9b4fa16850607f09f73240042d2a633c5a68ca5bea17e56d32e4bd
EBUILD calculate-desktop-3.1.7_alpha2-r2.ebuild 906 SHA256 4babec8e4ac50afedf8d6011e8415389114c8f68f6c971c0424466c2bbdf57bd SHA512 f06b6797608001bbc27a261aa8b459b7ffbb321bddac19f4eafff11e9ff51cefc9623dd7cb3c86ddeff24b28f0478b42c6dae9aa4242d40de1a415505cb3946e WHIRLPOOL eb6677bcc83a6c6919f96df24967a8d51b845edf5aca14ba6ae8f2fd9fb9b4417c6a804c916c302fadbc2955d85bd8208dca94a7cb1f26a826ea9522426b8f16
EBUILD calculate-desktop-3.1.7_alpha2-r3.ebuild 906 SHA256 922963fdbcccc69b6787cb65bdc5535c767c1c5113df54dcf80ced40f91b3cde SHA512 b682521c69f8a725561a12f47a89f52a8fa6e452945ac5a5bab7436f14490b889165ccb98db38cbcd2a1c971a849fad789b9724990ef053cf8d8960640a0a1bf WHIRLPOOL 889918dd568bd277ba8b0ed1cc9c440e9f519c7ef512b6c705f88f34944efeafa3f5e0911fc90d15a41b3033ba4a3e2645fd7b3e2c57a23958326af7384059d3
EBUILD calculate-desktop-3.1.7_alpha2.ebuild 761 SHA256 2cca3d7860eb91c04ad4df6aa09fa0834782f8befc5943cfc03a4f8d630a753f SHA512 f77103036195537faf8f11b72ae33db37751d9343cafedfb4f14d97f82a9b3d9b830e6acce8f508cc0435c2ba2767d48937a3cef9126f699ac1f7a45349a9a82 WHIRLPOOL 2ba1693b4407c5024b4eee4d57fb6cb21afc721ee469ab94af57a1a6a206aeddeb12a1894e994e38db29fb91f6c95b28aff7d3ebfb5d8c451c6dbf92bf2f12df
EBUILD calculate-desktop-3.1.9999.ebuild 976 SHA256 405de66b0f54804d4bc025fe786c21ca1a040d6a25928a535efbf84cacd7f505 SHA512 69ebfdc4c04f7c236f728c9938a5538b3822369cc1e1de2593a6e83178b5441ea2e37068ffcd9cf17aa92bcf00ee133ee98da0be5a5f591d69755e1159eeadac WHIRLPOOL c61f805379983ca23af188ff60a99511251a8afb27b75d0c1f08595012a579c42c2ef36603d837865a155706780ba413f0cac74457425eea0e0a59488e3dfda2
MISC ChangeLog 16440 SHA256 2a1c3211586d5dd10a249b61e4a8abf96a27a0c4d1706715b8a563bfa8aabf07 SHA512 962d9b69daeef659f2e1d6f2a5c974d6ed152d22fa9f0ed8c35d4c27e901f976167a2fc260a71c798be29d0161c7e90fa030957b2f74e25dcf35ecdb8fdc69e4 WHIRLPOOL df646b1f4c914fcb7142365b2110eb5112f7653cfddaf1b8a79f4a8f4ac99d50b6be59d3d593a8fb9e754ed92ebbe9a2cdebe320b0941d2ddd1bb9fba85c20b0

@ -0,0 +1,39 @@
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
EAPI="3"
SUPPORT_PYTHON_ABIS="1"
PYTHON_DEPEND="2:2.7"
RESTRICT_PYTHON_ABIS="2.4 2.5 2.6 3.*"
inherit distutils eutils
SRC_URI="ftp://ftp.calculate.ru/pub/calculate/calculate3/${PN}/${P}.tar.bz2"
DESCRIPTION="The program of the desktop configuration Calculate Linux"
HOMEPAGE="http://www.calculate-linux.org/main/en/calculate2"
LICENSE="Apache-2.0"
SLOT="3"
KEYWORDS=""
IUSE=""
DEPEND="~sys-apps/calculate-core-3.1.7_alpha2
>=dev-python/python-ldap-2.0[ssl]
media-gfx/feh
x11-apps/xmessage
!<sys-apps/calculate-desktop-3.1.0_alpha1
sys-apps/keyutils
sys-auth/pam_keystore
sys-auth/pam_client
dev-lang/swig"
RDEPEND="${DEPEND}"
src_unpack() {
unpack "${A}"
cd "${S}"
# apply revision changes
epatch "${FILESDIR}/calculate-desktop-3.1.7_alpha2-r3.patch"
}

@ -0,0 +1,82 @@
diff --git desktop/utils/cl_desktop.py desktop/utils/cl_desktop.py
index 28cecb5..239f4eb 100644
--- desktop/utils/cl_desktop.py
+++ desktop/utils/cl_desktop.py
@@ -59,19 +59,23 @@ class ClDesktopAction(Action):
# список задач для действия
tasks = [
+ # создать домашниюю директорию
{'name':'create_home',
'message':__("Creating the home directory for {ur_login}"),
'method':'Desktop.createUserDir(ur_login,ur_uid,ur_gid,ur_home_path)',
'condition':lambda dv:not path.exists(dv.Get('ur_home_path'))
},
+ # подключить шифрованные данные
{'name':'ecryptfs',
'message':__("Mounting encrypted data"),
'method':'Desktop.createCryptDir(ur_login,ur_uid,ur_gid,'
'ur_home_path,False)',
- 'condition':lambda Get:(not isMount(Get('ur_home_path')) and \
- Get('ur_home_crypt_set') == 'on' and
- Get('install.cl_autologin') != Get('ur_login'))
+ 'condition':lambda dv:(not isMount(dv.Get('ur_home_path')) and \
+ dv.Get('ur_home_crypt_set') == 'on' and
+ (not dv.isModuleInstalled("install") or
+ dv.Get('install.cl_autologin') != dv.Get('ur_login')))
},
+ # настроить пользовательских профиль шаблонами
{'name':'user_profile',
'message':__("Setting up the user profile"),
'method':'Desktop.applyTemplates(None,False,'\
@@ -79,9 +83,13 @@ class ClDesktopAction(Action):
'condition':lambda Get: Get('cl_desktop_force_setup_set') == 'on' or \
Get('cl_desktop_update_profile_set') == 'on'
},
+ # отключить ресурсы подключенные в каталоге пользователя
{'name':'umount_userres',
'message': _("Unmouning user resources"),
'method':'Desktop.umountUserRes(ur_mount_dirs)',
'condition': lambda dv:dv.Get('ur_mount_dirs'),
- 'depend': (Tasks.failed(),)}
+ 'depend': Tasks.failed()},
+ {'name':'ecryptfs:umount_homedir',
+ 'method':'Desktop.umountUserRes(ur_home_path)',
+ 'depend': Tasks.failed()}
]
diff --git desktop/variables/desktop.py desktop/variables/desktop.py
index 65f62cf..9009061 100644
--- desktop/variables/desktop.py
+++ desktop/variables/desktop.py
@@ -282,8 +282,8 @@ class VariableUrMountDirs(ReadonlyVariable):
x.startswith(mountRemoteProfileDir)),
map(lambda x: x.split(" ")[1],
readLinesFile('/proc/mounts'))))
- if isMount(homeDir):
- directories.append(homeDir)
+ #if isMount(homeDir):
+ # directories.append(homeDir)
return sorted(directories,reverse=True)
class VariableUrPassword(ReadonlyVariable):
diff --git desktop/wsdl_desktop.py desktop/wsdl_desktop.py
index 3cbb78c..e9b883a 100644
--- desktop/wsdl_desktop.py
+++ desktop/wsdl_desktop.py
@@ -20,7 +20,6 @@ from calculate.core.server.func import WsdlBase
from desktop import DesktopError
from utils.cl_desktop import ClDesktopLogoutAction,ClDesktopAction
import desktop
-import calculate.install.install as install
from calculate.lib.cl_lang import setLocalTranslate,getLazyLocalTranslate
setLocalTranslate('cl_desktop3',sys.modules[__name__])
@@ -81,7 +80,7 @@ class Wsdl(WsdlBase):
# права для запуска метода
'rights':['userconfigure'],
# объект содержащий модули для действия
- 'logic':{'Desktop':desktop.Desktop,'Install':install.Install},
+ 'logic':{'Desktop':desktop.Desktop},
# описание действия
'action':ClDesktopAction,
# объект переменных

@ -21,6 +21,7 @@ EBUILD calculate-utilities-3.1.7_alpha1-r1.ebuild 806 SHA256 b7f4d806560680041e5
EBUILD calculate-utilities-3.1.7_alpha1.ebuild 803 SHA256 a19a4ad685a2e3d6c399024bf59d965d66c0b8d57ce6fe237e3560a903d1eb55 SHA512 978392e2fa73b7b239326a237bf6e6173eefdaeaf2c2819fc8dcdfe6e8990f766d86fc15941e503d3b6a37621a042b35fbd00da36ea18c99e83ea9c4941f00c7 WHIRLPOOL 9981331bfe5af7e2ed2fefaaebbdaea5e7410ed0fe572bc752b42be8ddf2b69c52f6c59df7198081ed14e71b07042b0f5357a11293c137f2b6be5284b185b3e1
EBUILD calculate-utilities-3.1.7_alpha2-r1.ebuild 806 SHA256 8203bb6747853fd5cf98174e09ba773780dfe8e679e522c423cbd9f0b4503687 SHA512 6560e42afd8b17b5bda225a847c914e6372648a7c679e96a36733d9037dd42c14ef5b458d05dba8a45913f2c2a8c720258382d8cfa66c76691598efdeb0dbc2d WHIRLPOOL 0776caf04dc4c0eb284295e9c1cc81b8076f86939dd432d5040eb9d9eedadb5eded199ffa3d73008b121a7b98bfb65e293e991d4722acfa6ed33e64524803afb
EBUILD calculate-utilities-3.1.7_alpha2-r2.ebuild 809 SHA256 aa87579efeb4dbfe454e71dabf4ee0d8b91b3fa6049dfdea3a8bf76cebd6d546 SHA512 171d9c7e442580ed3595bca276937fda3d911c04c0333015777e261696bce5ee316fed4f12cba67ce560ea0cf16ad33e355ce1e9090d500d014b08c088efbf09 WHIRLPOOL c129fda362a73225784a089a51ab9c0d2d91afcff2d651d1d05e3825666712616ae8f8c5955288ffeb8b6ee83025f240601e4ea94376d00a18936227bf18a490
EBUILD calculate-utilities-3.1.7_alpha2-r3.ebuild 809 SHA256 6bca3fb93e3ca34d6765e718c2378cb84b7236b83f1cc87cd21e143a70af482d SHA512 117629746a7a9c2a408d659db6813b87bbe0ab8181571b83ea5d43d5f9b6ea401bfce0027d66f2dda2b55531cbb3da5bd60f8630d4afc7fb5341980c8bc69905 WHIRLPOOL d5c8498e3d28b69d132b4f56600fbf64e1351ec930c88e7dbbecb531e53e9af55ccef57239972c3634ca365c7e4084f127c6a7e0d4443ce7ecc30186cd24cfdc
EBUILD calculate-utilities-3.1.7_alpha2.ebuild 803 SHA256 e2b135402d6282093f5fa070344e0ef547a19bec68c3ee947a9627ac8d1b514a SHA512 7040a6a609871974360fafc3ed8bc234f0ed801c9ba5f0a99dbb97fae580d4eede321cd66dd98dbea0cb1527960f19e0ff18d53ec4aeb08b36378ab00b61abba WHIRLPOOL e1a369f0053835ad20c0dcced73135a9c92bfab002908533764a0ecc32cba91d7df168bc25ac73b219415f9026b90c88c855f62490493500d670685472377dc7
EBUILD calculate-utilities-3.1.9999.ebuild 800 SHA256 9de4807341cb552ef8d4f702e9c4a0ca10c52c9d532cc2eb741cea29b92f09b5 SHA512 b35ed4d49c4943a5ad375e646bece419271900c50301153408b30dede0fe834e098baaa42a21c130730c0bc32ba09decc588277da6782d2010c18c9d8df679ae WHIRLPOOL 78e2c5ee8ef8356c4fc0275f920177778925278cad78585ed37c08048241f775030e59a0ced0696fba6379741fe865dc339d190c46b5f2173097328a73c64a24
MISC ChangeLog 38731 SHA256 7e70a0bc1f3b34c0011f3874773a698a4bb96eb6d3dad10903575156bb8578bc SHA512 2de466ea990b9eac702b81fd097c3f5d06d1f4db1a4bd1d1b7380b45e551f6fd62c16564ecfc810246157d3ef1113ae373041580e70981d44752e50ed6134bc0 WHIRLPOOL 5ca0cee1ad0e9419f91ec11a9629b9a29db9fcbed4f5ae0aef1f8a2170ff58112c8580d61884c56ee410a0abc201fa8f4419cea35077fc8bb84e733f6fa6f4db

@ -0,0 +1,26 @@
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
EAPI=4
DESCRIPTION="Calculate Utilities meta package"
HOMEPAGE="http://www.calculate-linux.org/main/en/calculate2"
SRC_URI=""
LICENSE="Apache-2.0"
SLOT="3"
KEYWORDS=""
IUSE="cl_consolegui cl_client cl_desktop cl_console"
RDEPEND="${RDEPEND}
=sys-apps/calculate-install-3.1.7_alpha2
=sys-apps/calculate-i18n-3.1.7_alpha2
=sys-apps/calculate-lib-3.1.7_alpha2
=sys-apps/calculate-core-3.1.7_alpha2
=sys-apps/calculate-update-3.1.7_alpha2
cl_client? ( =sys-apps/calculate-client-3.1.7_alpha2-r2 )
cl_desktop? ( =sys-apps/calculate-desktop-3.1.7_alpha2-r3 )
cl_consolegui? ( =sys-apps/calculate-console-gui-3.1.7_alpha2 )
cl_console? ( =sys-apps/calculate-console-3.1.7_alpha2 )
"
Loading…
Cancel
Save