# -*- coding: utf-8 -*- # Copyright 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 from calculate.lib.datavars import VariableError, DataVarsError from calculate.core.server.func import WsdlBase, CustomButton from .unix import Unix, UnixError from calculate.ldap.ldap import LdapError from calculate.unix.variables.action import Actions from calculate.server.server import Server from calculate.server.variables.action import Actions as ServerActions from utils.cl_unix_setup import ClUnixSetupAction from utils.cl_unix_useradd import ClUnixUseraddAction from utils.cl_unix_usermod import ClUnixUsermodAction from utils.cl_unix_userdel import ClUnixUserdelAction from utils.cl_unix_passwd import ClUnixPasswdAction from utils.cl_unix_groupadd import ClUnixGroupaddAction from utils.cl_unix_groupmod import ClUnixGroupmodAction from utils.cl_unix_groupdel import ClUnixGroupdelAction from utils.cl_unix_groupshow import ClUnixGroupshowAction from utils.cl_unix_usershow import ClUnixUsershowAction from calculate.ldap.ldap import Ldap _ = lambda x: x from calculate.lib.cl_lang import setLocalTranslate, getLazyLocalTranslate setLocalTranslate('cl_unix3', sys.modules[__name__]) __ = getLazyLocalTranslate(_) class Wsdl(WsdlBase): methods = [ # # Настроить службу # { # идентификатор метода 'method_name': Unix.Method.Setup, # категория метода 'category': __('Setup Server'), # заголовок метода 'title': __("Unix Accounts"), # иконка для графической консоли 'image': 'calculate-unix-setup,preferences-system-login,ooo-base,' 'office-database', # метод присутствует в графической консоли 'gui': True, # консольная команда 'command': 'cl-unix-setup', # права для запуска метода 'rights': ['unix'], # объект содержащий модули для действия 'logic': {'Unix': Unix, 'Server': Server}, # описание действия 'action': ClUnixSetupAction, # объект переменных 'datavars': "unix", 'native_error': ( VariableError, DataVarsError, LdapError, UnixError), # значения по умолчанию для переменных этого метода 'setvars': {'cl_action!': ServerActions.Setup, 'server.cl_server_name': Unix.service_name, 'cl_unix_action': Actions.Setup, 'cl_autoupdate_set': 'on' # 'cl_dispatch_conf_default': "usenew" }, # описание груп (список лямбда функций) 'groups': [ lambda group: group( _("Unix Accounts"), brief=( 'ldap.ld_base_dn', 'server.sr_ldap_set', 'server.sr_unix_set', ), expert=('cl_unix_pw_generate_set', 'cl_unix_remove_set', 'cl_verbose_set',), hide=(), custom_buttons=[ CustomButton.run_method( Unix.Method.Setup, "but0", _("Remove"), CustomButton.Behavior.setvalue( 'cl_unix_remove_set', 'on'), lambda Get: Get('server.sr_unix_set') == 'on'), CustomButton.next_button("but1") ] ), ], 'depends': [Ldap.Method.Setup], 'brief': {'next': __("Run"), 'name': __("Setup Accounts Server"), } }, # # Добавить пользователя # { # идентификатор метода 'method_name': Unix.Method.UserAdd, # заголовок метода 'title': __("Add User"), # иконка для графической консоли 'image': None, # метод присутствует в графической консоли 'gui': True, # консольная команда 'command': 'cl-unix-useradd', # права для запуска метода 'rights': ['unix'], # объект содержащий модули для действия 'logic': {'Unix': Unix, 'Server': Server}, # описание действия 'action': ClUnixUseraddAction, # объект переменных 'datavars': "unix", 'native_error': ( VariableError, DataVarsError, LdapError, UnixError), # значения по умолчанию для переменных этого метода 'setvars': {'cl_action!': ServerActions.Setup, 'server.cl_server_name': Unix.service_name, 'cl_unix_action': Actions.UserAdd, 'cl_autoupdate_set': 'on', 'ldap.cl_ldap_bind_dn!': '{ld_unix_bind_dn}', 'ldap.cl_ldap_bind_pw!': '{ld_unix_pw}', # 'cl_dispatch_conf_default': "usenew" }, # описание груп (список лямбда функций) 'groups': [ lambda group: group( _("User"), brief=('ur_unix_login',), normal=( 'ur_unix_login', 'ur_unix_pw', 'ur_unix_comment', 'ur_unix_primary_group', 'ur_unix_groups', ), expert=( 'ur_unix_uid', 'ur_unix_home_path', 'ur_unix_shell', 'ur_unix_create_home_set', 'ur_unix_visible_set', 'ur_unix_skel', ), next_label=_("Run") ), ], 'depends': [Unix.Method.Setup], }, # # Добавить группу # { # идентификатор метода 'method_name': Unix.Method.GroupAdd, # заголовок метода 'title': __("Add Group"), # иконка для графической консоли 'image': None, # метод присутствует в графической консоли 'gui': True, # консольная команда 'command': 'cl-unix-groupadd', # права для запуска метода 'rights': ['unix'], # объект содержащий модули для действия 'logic': {'Unix': Unix, 'Server': Server}, # описание действия 'action': ClUnixGroupaddAction, # объект переменных 'datavars': "unix", 'native_error': ( VariableError, DataVarsError, LdapError, UnixError), # значения по умолчанию для переменных этого метода 'setvars': {'cl_action!': ServerActions.Setup, 'server.cl_server_name': Unix.service_name, 'cl_unix_action': Actions.GroupAdd, 'cl_autoupdate_set': 'on', 'ldap.cl_ldap_bind_dn!': '{ld_unix_bind_dn}', 'ldap.cl_ldap_bind_pw!': '{ld_unix_pw}', # 'cl_dispatch_conf_default': "usenew" }, # описание груп (список лямбда функций) 'groups': [ lambda group: group( _("Add New Group"), brief=(), hide=('ur_unix_base_dir',), normal=( 'ur_unix_group_name', 'ur_unix_group_id', 'ur_unix_group_comment', ), expert=(), next_label=_("Run") ), ], 'depends': [Unix.Method.Setup], }, # # Изменить параметры группы # { # идентификатор метода 'method_name': Unix.Method.GroupMod, # заголовок метода 'title': __("Modify Group"), # иконка для графической консоли 'image': None, # метод присутствует в графической консоли 'gui': True, # консольная команда 'command': 'cl-unix-groupmod', # права для запуска метода 'rights': ['unix'], # объект содержащий модули для действия 'logic': {'Unix': Unix, 'Server': Server}, # описание действия 'action': ClUnixGroupmodAction, # объект переменных 'datavars': "unix", 'native_error': ( VariableError, DataVarsError, LdapError, UnixError), # значения по умолчанию для переменных этого метода 'setvars': {'cl_action!': ServerActions.Setup, 'server.cl_server_name': Unix.service_name, 'cl_unix_action': Actions.GroupMod, 'cl_autoupdate_set': 'on', 'ldap.cl_ldap_bind_dn!': '{ld_unix_bind_dn}', 'ldap.cl_ldap_bind_pw!': '{ld_unix_pw}', # 'cl_dispatch_conf_default': "usenew" }, # описание груп (список лямбда функций) 'groups': [ lambda group: group( _("Group"), brief=('ur_unix_group_name_exists',), normal=( 'ur_unix_group_name_exists', 'ur_unix_group_newname', 'ur_unix_group_id', 'ur_unix_group_comment', 'ur_unix_group_users_replace', ), hide=('ur_unix_group_users_replace',), expert=( 'ur_unix_group_users_add', 'ur_unix_group_users_del', ), custom_buttons=[ CustomButton.run_method( Unix.Method.GroupShow, 'but0', _("Back")), CustomButton.run_method( Unix.Method.GroupDel, 'but1', _("Delete"), CustomButton.Behavior.linkerror( source='ur_unix_group_name_exists', target='ur_unix_group_newname')), CustomButton.run_method( Unix.Method.GroupMod, 'but2', _("Modify")), ] ), ], 'invalidators': { 'ur_unix_group_name_exists': ( 'ur_unix_group_id', 'ur_unix_group_comment', 'ur_unix_group_newname', 'ur_unix_group_users_replace', 'ur_unix_group_users_add', 'ur_unix_group_users_del',) }, 'depends': [Unix.Method.Setup], }, # # Удалить группу # { # идентификатор метода 'method_name': Unix.Method.GroupDel, # заголовок метода 'title': __("Delete Group"), # иконка для графической консоли 'image': None, # метод присутствует в графической консоли 'gui': True, # консольная команда 'command': 'cl-unix-groupdel', # права для запуска метода 'rights': ['unix'], # объект содержащий модули для действия 'logic': {'Unix': Unix, 'Server': Server}, # описание действия 'action': ClUnixGroupdelAction, # объект переменных 'datavars': "unix", 'native_error': ( VariableError, DataVarsError, LdapError, UnixError), # значения по умолчанию для переменных этого метода 'setvars': {'cl_action!': ServerActions.Setup, 'server.cl_server_name': Unix.service_name, 'cl_unix_action': Actions.GroupDel, 'cl_autoupdate_set': 'on', 'ldap.cl_ldap_bind_dn!': '{ld_unix_bind_dn}', 'ldap.cl_ldap_bind_pw!': '{ld_unix_pw}', # 'cl_dispatch_conf_default': "usenew" }, # описание груп (список лямбда функций) 'groups': [ lambda group: group( _("Group"), brief=(), normal=( 'ur_unix_group_name_exists', ), next_label=_("Run") ), ], 'depends': [Unix.Method.Setup] }, # # Изменить параметры пользователя # { # идентификатор метода 'method_name': Unix.Method.UserMod, # заголовок метода 'title': __("Modify User"), # иконка для графической консоли 'image': None, # метод присутствует в графической консоли 'gui': True, # консольная команда 'command': 'cl-unix-usermod', # права для запуска метода 'rights': ['unix'], # объект содержащий модули для действия 'logic': {'Unix': Unix, 'Server': Server}, # описание действия 'action': ClUnixUsermodAction, # объект переменных 'datavars': "unix", 'native_error': ( VariableError, DataVarsError, LdapError, UnixError), # значения по умолчанию для переменных этого метода 'setvars': {'cl_action!': ServerActions.Setup, 'server.cl_server_name': Unix.service_name, 'cl_unix_action': Actions.UserMod, 'cl_autoupdate_set': 'on', 'ldap.cl_ldap_bind_dn!': '{ld_unix_bind_dn}', 'ldap.cl_ldap_bind_pw!': '{ld_unix_pw}', # 'cl_dispatch_conf_default': "usenew" }, # описание груп (список лямбда функций) 'groups': [ lambda group: group( _("User"), normal=( 'ur_unix_login_exists', 'ur_unix_pw', 'ur_unix_primary_group', 'ur_unix_comment', 'ur_unix_groups', ), expert=( 'ur_unix_groups_add', 'ur_unix_groups_del', 'ur_unix_lock_set', 'ur_unix_pw_delete_set', 'ur_unix_visible_set', 'ur_unix_home_path', 'ur_unix_home_path_move', 'ur_unix_shell', ), custom_buttons=[ CustomButton.run_method(Unix.Method.UserShow, 'but0', _("Back")), CustomButton.run_method(Unix.Method.UserDel, 'but1', _("Delete")), CustomButton.run_method(Unix.Method.UserMod, 'but2', _("Modify")) ], next_label=_("Run") ), ], 'invalidators': { 'ur_unix_login_exists': ( 'ur_unix_primary_group', 'ur_unix_comment', 'ur_unix_groups', 'ur_unix_visible_set', 'ur_unix_lock_set', 'ur_unix_groups_add', 'ur_unix_groups_del', 'ur_unix_home_path', 'ur_unix_home_path_move', 'ur_unix_shell', 'ur_unix_pw_delete_set', ) }, 'depends': [Unix.Method.Setup] }, # # Удалить пользователя # { # идентификатор метода 'method_name': Unix.Method.UserDel, # заголовок метода 'title': __("Delete User"), # иконка для графической консоли 'image': None, # метод присутствует в графической консоли 'gui': True, # консольная команда 'command': 'cl-unix-userdel', # права для запуска метода 'rights': ['unix'], # объект содержащий модули для действия 'logic': {'Unix': Unix, 'Server': Server}, # описание действия 'action': ClUnixUserdelAction, # объект переменных 'datavars': "unix", 'native_error': ( VariableError, DataVarsError, LdapError, UnixError), # значения по умолчанию для переменных этого метода 'setvars': {'cl_action!': ServerActions.Setup, 'server.cl_server_name': Unix.service_name, 'cl_unix_action': Actions.UserDel, 'cl_autoupdate_set': 'on', 'ldap.cl_ldap_bind_dn!': '{ld_unix_bind_dn}', 'ldap.cl_ldap_bind_pw!': '{ld_unix_pw}', # 'cl_dispatch_conf_default': "usenew" }, # описание груп (список лямбда функций) 'groups': [ lambda group: group( _("User"), brief=(), normal=( 'ur_unix_login_exists', ), next_label=_("Run") ), ], 'depends': [Unix.Method.Setup] }, # # Сменить пароль пользователю # { # идентификатор метода 'method_name': Unix.Method.Passwd, # заголовок метода 'title': __("Password Modification"), # иконка для графической консоли 'image': None, # метод присутствует в графической консоли 'gui': False, # консольная команда 'command': 'cl-unix-passwd', # права для запуска метода 'rights': ['unix'], # объект содержащий модули для действия 'logic': {'Unix': Unix, 'Server': Server}, # описание действия 'action': ClUnixPasswdAction, # объект переменных 'datavars': "unix", 'native_error': ( VariableError, DataVarsError, LdapError, UnixError), # значения по умолчанию для переменных этого метода 'setvars': {'cl_action!': ServerActions.Setup, 'server.cl_server_name': Unix.service_name, 'cl_unix_action': Actions.Passwd, 'cl_autoupdate_set': 'on', 'ldap.cl_ldap_bind_dn!': '{ld_unix_bind_dn}', 'ldap.cl_ldap_bind_pw!': '{ld_unix_pw}', # 'cl_dispatch_conf_default': "usenew" }, # описание груп (список лямбда функций) 'groups': [ lambda group: group( _("User"), brief=(), normal=( 'ur_unix_login_exists', 'ur_unix_pw', 'ur_unix_pw_delete_set', 'ur_unix_lock_set' ), next_label=_("Run") ), ], 'depends': [Unix.Method.Setup] }, # # Просмотр групп # { # идентификатор метода 'method_name': Unix.Method.GroupShow, # категория метода 'category': __('Accounts Server'), # заголовок метода 'title': __("Unix Groups"), # иконка для графической консоли 'image': 'calculate-unix-groupshow,group,system-users', # метод присутствует в графической консоли 'gui': lambda Get: Get('server.sr_unix_set') == 'on', # консольная команда 'command': 'cl-unix-groupshow', # права для запуска метода 'rights': ['unix'], # объект содержащий модули для действия 'logic': {'Unix': Unix, 'Server': Server}, # описание действия 'action': ClUnixGroupshowAction, # объект переменных 'datavars': "unix", 'native_error': ( VariableError, DataVarsError, LdapError, UnixError), # значения по умолчанию для переменных этого метода 'setvars': {'cl_action!': ServerActions.Setup, 'server.cl_server_name': Unix.service_name, 'cl_unix_action': Actions.GroupShow, 'cl_autoupdate_set': 'on', 'core.cl_page_max!': '{ur_unix_group_count}', 'ldap.cl_ldap_bind_dn!': '{ld_unix_bind_dn}', 'ldap.cl_ldap_bind_pw!': '{ld_unix_pw}', # 'cl_dispatch_conf_default': "usenew" }, # описание груп (список лямбда функций) 'groups': [ lambda group: group( _("Groups"), brief=(), next_label=_("Show"), normal=( 'ur_unix_group_show', 'core.cl_page_count', 'core.cl_page_offset', ), expert=( 'cl_unix_group_filter_name', 'cl_unix_group_filter_id', 'cl_unix_group_filter_comment', 'cl_unix_group_filter_users', 'cl_unix_group_fields', ), custom_buttons=[ CustomButton.open_method(Unix.Method.GroupAdd, 'but0', _("Add Group")), CustomButton.run_method(Unix.Method.GroupShow, 'but1', _("Show")) ] ), ], 'depends': [Unix.Method.Setup] }, # # Просмотр пользователей # { # идентификатор метода 'method_name': Unix.Method.UserShow, # категория метода 'category': __('Accounts Server'), # заголовок метода 'title': __("Unix Users"), # иконка для графической консоли 'image': 'calculate-unix-usershow,user,stock_person,system-users', # метод присутствует в графической консоли 'gui': lambda Get: Get('server.sr_unix_set') == 'on', # консольная команда 'command': 'cl-unix-usershow', # права для запуска метода 'rights': ['unix'], # объект содержащий модули для действия 'logic': {'Unix': Unix, 'Server': Server}, # описание действия 'action': ClUnixUsershowAction, # объект переменных 'datavars': "unix", 'native_error': ( VariableError, DataVarsError, LdapError, UnixError), # значения по умолчанию для переменных этого метода 'setvars': {'cl_action!': ServerActions.Setup, 'server.cl_server_name': Unix.service_name, 'cl_unix_action': Actions.UserShow, 'cl_autoupdate_set': 'on', 'core.cl_page_max!': '{ur_unix_user_count}', 'ldap.cl_ldap_bind_dn!': '{ld_unix_bind_dn}', 'ldap.cl_ldap_bind_pw!': '{ld_unix_pw}', # 'cl_dispatch_conf_default': "usenew" }, # описание груп (список лямбда функций) 'groups': [ lambda group: group( _("Users"), brief=(), next_label=_("Show"), normal=( 'ur_unix_user_show', 'core.cl_page_count', 'core.cl_page_offset', ), expert=( 'cl_unix_user_filter_login', 'cl_unix_user_filter_pw_set', 'cl_unix_user_filter_comment', 'cl_unix_user_filter_uid', 'cl_unix_user_filter_gid', 'cl_unix_user_filter_groups', 'cl_unix_user_filter_home_path', 'cl_unix_user_filter_shell', 'cl_unix_user_filter_visible_set', 'cl_unix_user_filter_lock_set', 'cl_unix_user_fields', ), custom_buttons=[ CustomButton.open_method(Unix.Method.UserAdd, 'but0', _("Add User")), CustomButton.run_method(Unix.Method.UserShow, 'but1', _("Show")), ] ), ], 'depends': [Unix.Method.Setup] }, ]