# -*- 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 . core . server . func import Action , Tasks
from calculate . lib . cl_lang import setLocalTranslate , getLazyLocalTranslate
from calculate . lib . cl_template import TemplatesError
from calculate . lib . utils . files import FilesError
from calculate . lib . datavars import VariableError
from calculate . server . variables . action import Actions
from . . unix import UnixError , Unix
from calculate . ldap . ldap import LdapError , Ldap
from calculate . ldap . utils . cl_ldap_setup import MetaTasks
from calculate . ldap . utils . cl_ldap_setup import ClLdapSetupAction
from calculate . server . server import ServerError
_ = lambda x : x
setLocalTranslate ( ' cl_unix3 ' , sys . modules [ __name__ ] )
__ = getLazyLocalTranslate ( _ )
class ClUnixSetupAction ( Action ) :
"""
Действие обновление конфигурационных файлов
"""
# ошибки, которые отображаются без подробностей
native_error = ( FilesError ,
TemplatesError ,
VariableError ,
ServerError ,
UnixError ,
LdapError )
successMessage = None
failedMessage = __ ( " Failed to configure Unix server! " )
interruptMessage = __ ( " Unix server configuration manually interrupted " )
stop_tasks = [
]
meta_tasks = MetaTasks ( " Unix " )
uninstall_tasks = [
{ ' name ' : ' clear_creds ' ,
' method ' : ' Server.clear_service_data( " unix " ) '
} ,
{ ' name ' : ' unset_ldap ' ,
' method ' : ' Server.service_uninstall( " unix " ) '
} ,
]
# список задач для действия
tasks = [
{ ' name ' : ' set_ldif ' ,
' method ' : ' Unix.set_ldap_connection( '
' ldap.ld_admin_dn,ldap.ld_admin_pw) ' ,
} ,
{ ' name ' : ' remove_service ' ,
' condition ' : lambda Get : ( Get ( ' cl_unix_remove_set ' ) == ' on ' or
Get ( ' server.sr_unix_set ' ) != ' on ' )
} ,
{ ' name ' : ' remove_only ' ,
' message ' : _ ( " Removing Unix service " ) ,
' condition ' : lambda Get : ( Get ( ' cl_unix_remove_set ' ) == ' on ' and
Get ( ' server.sr_unix_set ' ) == ' on ' )
} ,
{ ' name ' : ' setup_service ' ,
' condition ' : lambda Get : Get ( ' server.sr_unix_set ' ) != ' on '
} ,
{ ' name ' : ' remove_service:remove_old_db ' ,
' method ' : ' Unix.remove_ldap_branch(ld_unix_dn) ' ,
' condition ' : lambda Get : Get ( ' server.sr_unix_set ' ) == ' on '
} ,
{ ' name ' : ' remove_service:uninstall ' ,
' tasks ' : uninstall_tasks ,
' condition ' : lambda Get : Get ( ' server.sr_unix_set ' ) == ' on '
} ,
{ ' name ' : ' setup_service:apply_ldif ' ,
' tasks ' : meta_tasks . ldif_task ( " ldap.ld_admin_dn,ldap.ld_admin_pw " ,
Actions . Setup )
} ,
{ ' name ' : ' setup_service:set_unix ' ,
' method ' : ' Server.service_install( " unix " ) '
} ,
{ ' name ' : ' generate_password ' ,
' message ' : _ ( " Create new password for Unix service " ) ,
' method ' : ' Unix.generate_password(ld_unix_bind_dn, '
' ld_unix_hash, " Unix " ) ' ,
' condition ' : lambda Get : Get ( ' cl_unix_pw_generate_set ' ) == ' on '
} ,
{ ' name ' : ' templates ' ,
' message ' : __ ( " System configuration " ) ,
' method ' : ' Server.applyTemplates(install.cl_source, '
' False,True,None,True,True) ' ,
} ,
{ ' name ' : ' restart_slapd ' ,
' message ' : __ ( " Restarting LDAP service " ) ,
' method ' : ' Server.restart_service( " %s " ) ' % Ldap . Service . LDAP ,
} ,
{ ' name ' : ' save_creds ' ,
' method ' : ' Server.save_service_data( " unix " , '
' ld_unix_bind_dn,ld_unix_pw) ' ,
' condition ' : lambda Get : Get ( ' cl_unix_remove_set ' ) != ' on '
} ,
{ ' name ' : ' success ' ,
' message ' : __ ( " Unix server configured! " ) ,
' condition ' : lambda Get : Get ( ' cl_unix_remove_set ' ) != ' on ' ,
' depend ' : ( Tasks . success ( ) & Tasks . hasnot ( " failed " ) )
} ,
{ ' name ' : ' success ' ,
' message ' : __ ( " Unix server removed! " ) ,
' condition ' : lambda Get : Get ( ' cl_unix_remove_set ' ) == ' on ' ,
' depend ' : ( Tasks . success ( ) & Tasks . hasnot ( " failed " ) )
}
# {'name': 'save_data',
# 'method': 'Unix.save_variables()'
# }
]
ClLdapSetupAction . register_stop ( stop_tasks )
ClLdapSetupAction . register_uninstall ( uninstall_tasks )