diff --git a/usr/share/ahenk/ahenkd.py b/usr/share/ahenk/ahenkd.py index 28f9433..2689662 100644 --- a/usr/share/ahenk/ahenkd.py +++ b/usr/share/ahenk/ahenkd.py @@ -147,7 +147,7 @@ class AhenkDaemon(BaseDaemon): def check_registration(self): """ docstring""" # max_attempt_number = int(System.Hardware.Network.interface_size()) * 3 - max_attempt_number = 4 + max_attempt_number = 2 # self.logger.debug() # logger = Scope.getInstance().getLogger() registration = Scope.get_instance().get_registration() diff --git a/usr/share/ahenk/base/agreement/ahenkmessage.py b/usr/share/ahenk/base/agreement/ahenkmessage.py index 71bd5a2..e477f2c 100644 --- a/usr/share/ahenk/base/agreement/ahenkmessage.py +++ b/usr/share/ahenk/base/agreement/ahenkmessage.py @@ -31,11 +31,12 @@ class AskRegister(): tk.Label(self.master, text="* Yetkili Kullanıcı : ").grid(row=1) tk.Label(self.master, text="* Parola : ").grid(row=2) - tk.Label(self.master, textvariable= self.text, fg="red").grid(row=3,columnspan=2) + self.e2 = tk.Entry(self.master) self.e3 = tk.Entry(show="*") + tk.Label(self.master, textvariable=self.text, fg="red").grid(row=3, columnspan=2) # self.var1 = IntVar() # Checkbutton(self.master, text="Active Directory", variable=self.var1, command=self.check1).grid(row=3, column=0, stick=tk.W, # pady=4) diff --git a/usr/share/ahenk/base/command/command_runner.py b/usr/share/ahenk/base/command/command_runner.py index cf60e0a..e961449 100644 --- a/usr/share/ahenk/base/command/command_runner.py +++ b/usr/share/ahenk/base/command/command_runner.py @@ -130,7 +130,7 @@ class CommandRunner(object): agreement_choice = True if agreement_choice is True or System.Ahenk.agreement() != '1': - self.db_service.delete('session', 'username=\'{0}\''.format(username)) + self.db_service.delete('session', '1=1') self.logger.info( 'Display is {0}, desktop env is {1} for {2}'.format(display, desktop, diff --git a/usr/share/ahenk/base/execution/execution_manager.py b/usr/share/ahenk/base/execution/execution_manager.py index c44f4ef..23eca4d 100644 --- a/usr/share/ahenk/base/execution/execution_manager.py +++ b/usr/share/ahenk/base/execution/execution_manager.py @@ -405,6 +405,7 @@ class ExecutionManager(object): def unregister(self, msg): j = json.loads(msg) status = str(j['status']).lower() + directory_server = str(j['directoryServer']) # user_name = self.db_service.select_one_result('session', 'username', " 1=1 order by id desc ") # display = self.db_service.select_one_result('session', 'display', " 1=1 order by id desc ") if 'not_authorized' == str(status): @@ -428,10 +429,10 @@ class ExecutionManager(object): "Değişikliklerin etkili olması için sistem yeniden başlatılacaktır. Lütfen bekleyiniz...", ""): registration = Scope.get_instance().get_registration() - registration.purge_and_unregister() + registration.purge_and_unregister(directory_server) else: registration = Scope.get_instance().get_registration() - registration.purge_and_unregister() + registration.purge_and_unregister(directory_server) def json_to_task_bean(self, json_data, file_server_conf=None): diff --git a/usr/share/ahenk/base/messaging/messaging.py b/usr/share/ahenk/base/messaging/messaging.py index e875b5d..398e0f9 100644 --- a/usr/share/ahenk/base/messaging/messaging.py +++ b/usr/share/ahenk/base/messaging/messaging.py @@ -187,8 +187,11 @@ class Messaging(object): self.logger.debug('pout : ' + str(pout)) field_values = pout.split(' ') user_registration_info = list(field_values) - data['userName'] = user_registration_info[0]; - data['userPassword'] = user_registration_info[1]; + if len(user_registration_info) > 1 : + data['userName'] = user_registration_info[0]; + data['userPassword'] = user_registration_info[1]; + else: + return None else: data['userName'] = usernameForCheck; data['userPassword'] = passwordForCheck; diff --git a/usr/share/ahenk/base/registration/registration.py b/usr/share/ahenk/base/registration/registration.py index 724a6ad..aa3c59b 100644 --- a/usr/share/ahenk/base/registration/registration.py +++ b/usr/share/ahenk/base/registration/registration.py @@ -534,6 +534,7 @@ class Registration: self.util.execute(change_home.format(new_home_dir, new_username)) self.logger.debug("User: '{0}' will be enabled and changed username and home directory of username".format(p.pw_name)) + def disable_local_users(self): passwd_cmd = 'passwd -l {}' change_home = 'usermod -m -d {0} {1}' @@ -557,7 +558,6 @@ class Registration: Util.execute(change_home.format(new_home_dir, new_username)) Util.execute(change_permisson.format(new_home_dir)) - def change_permissions_for_local_users(self): add_user_conf_file = "/etc/adduser.conf" file_dir_mode = open(add_user_conf_file, 'r') diff --git a/usr/share/ahenk/base/util/util.py b/usr/share/ahenk/base/util/util.py index fe1acc3..0be4356 100644 --- a/usr/share/ahenk/base/util/util.py +++ b/usr/share/ahenk/base/util/util.py @@ -339,7 +339,6 @@ class Util: @staticmethod def send_notify(title, body, display, user, icon=None, timeout=5000): - inner_command = 'notify-send "{0}" "{1}" -t {2}'.format(title, body, timeout) if icon: inner_command += ' -i {0}'.format(icon) @@ -350,15 +349,14 @@ class Util: @staticmethod def show_message(username, display, message='', title=''): ask_path = Util.get_ask_path_file()+ 'confirm.py' - Scope.get_instance().get_logger().debug('DISPLAYYYY --------->>>>>>>>: ' + str(display)) - if display is None: display_number = Util.get_username_display() else: display_number = display try: - + if Util.get_desktop_env() == "gnome": + display_number = Util.get_username_display_gnome(username) if username is not None: command = 'su - {0} -c \'python3 {1} \"{2}\" \"{3}\" \"{4}\"\''.format(username, ask_path, message, title, display_number) @@ -370,24 +368,21 @@ class Util: return False else: return None - else: return None except Exception as e : print("Error when showing message " + str(e)) - return None - - @staticmethod - def show_registration_message(login_user_name,message,title,host=None): - - ask_path = Util.get_ask_path_file()+ 'ahenkmessage.py' - + def show_registration_message(login_user_name, message, title, host=None): + ask_path = Util.get_ask_path_file() + 'ahenkmessage.py' # display_number = ":0" display_number = Util.get_username_display() + if Util.get_desktop_env() == "gnome": + display_number = Util.get_username_display_gnome(login_user_name) + if host is None: command = 'su - {0} -c \"python3 {1} \'{2}\' \'{3}\' \'{4}\' \"'.format(login_user_name, ask_path, message, title, display_number) @@ -397,27 +392,23 @@ class Util: message, title, host, display_number) result_code, p_out, p_err = Util.execute(command) - pout = str(p_out).replace('\n', '') - return pout @staticmethod def show_unregistration_message(login_user_name,display_number,message,title): - ask_path = Util.get_ask_path_file()+ 'unregistrationmessage.py' + if Util.get_desktop_env() == "gnome": + display_number = Util.get_username_display_gnome(login_user_name) command = 'su - {0} -c \"python3 {1} \'{2}\' \'{3}\' \'{4}\' \"'.format(login_user_name, ask_path, message, title, display_number) result_code, p_out, p_err = Util.execute(command) - pout = str(p_out).replace('\n', '') - return pout @staticmethod def get_username_display(): result_code, p_out, p_err = Util.execute("who | awk '{print $1, $5}' | sed 's/(://' | sed 's/)//'", result=True) - result = [] lines = str(p_out).split('\n') for line in lines: diff --git a/usr/share/ahenk/plugins/ldap/delete_agent.py b/usr/share/ahenk/plugins/ldap/delete_agent.py index 89085d1..9722e5b 100644 --- a/usr/share/ahenk/plugins/ldap/delete_agent.py +++ b/usr/share/ahenk/plugins/ldap/delete_agent.py @@ -1,66 +1,44 @@ #!/usr/bin/python3 # -*- coding: utf-8 -*- -# Author: Edip YILDIZ -# Author: Tuncay ÇOLAK - +# Author: Hasan Kara from base.model.enum.content_type import ContentType -import json, threading - +import json +from base.scope import Scope from base.plugin.abstract_plugin import AbstractPlugin - -import threading +from base.registration.registration import Registration -class MoveAgent(AbstractPlugin): +class DeleteAgent(AbstractPlugin): def __init__(self, data, context): super(AbstractPlugin, self).__init__() + scope = Scope.get_instance() self.data = data self.context = context self.logger = self.get_logger() self.message_code = self.get_message_code() - - - def update_dn(self, jid, newDn): - cols = ['dn']; - values = [newDn] - return self.db_service.update('registration', cols, values, 'jid=\''+jid+'\'') - - - - def getCnFromDn(self,dn): - if dn !=None and str(dn) !="": - dnStrArr = str(dn).split(",") - if len(dnStrArr)>0: - return dnStrArr[0] - - def handle_task(self): try: dn = self.data['dn'] - newParentDn = self.data['newParentDn'] - - jid= self.db_service.select_one_result('registration','jid','registered = 1') - - newDn=str(dn).replace(dn, self.getCnFromDn(dn)+ str(newParentDn)) - - self.update_dn(jid,newDn) + directory_server = self.data['directory_server'] + registration = Scope.get_instance().get_registration() + registration.purge_and_unregister(directory_server) self.context.create_response(code=self.message_code.TASK_PROCESSED.value, - message='Ahenk başarı ile taşındı.', - data=json.dumps({'Dn': newDn}), + message='Ahenk başarı ile silindi.', + data=json.dumps({'Dn': dn}), content_type=ContentType.APPLICATION_JSON.value) - except Exception as e: - self.logger.error(" error on handle xmessage task. Error: " + str(e)) + self.logger.error(" error on handle deleting agent. Error: " + str(e)) self.context.create_response(code=self.message_code.TASK_ERROR.value, - message='Ahenk taşınırken hata olustu' + str(e), + message='Ahenk silinirken hata olustu' + str(e), content_type=ContentType.APPLICATION_JSON.value) def handle_task(task, context): - cls = MoveAgent(task, context) + cls = DeleteAgent(task, context) cls.handle_task() + diff --git a/usr/share/ahenk/plugins/ldap/move_agent.py b/usr/share/ahenk/plugins/ldap/move_agent.py index 89085d1..a647ec1 100644 --- a/usr/share/ahenk/plugins/ldap/move_agent.py +++ b/usr/share/ahenk/plugins/ldap/move_agent.py @@ -1,17 +1,13 @@ #!/usr/bin/python3 # -*- coding: utf-8 -*- -# Author: Edip YILDIZ -# Author: Tuncay ÇOLAK +# Author: Hasan Kara from base.model.enum.content_type import ContentType -import json, threading - +import json from base.plugin.abstract_plugin import AbstractPlugin -import threading - class MoveAgent(AbstractPlugin): def __init__(self, data, context): @@ -21,46 +17,57 @@ class MoveAgent(AbstractPlugin): self.logger = self.get_logger() self.message_code = self.get_message_code() - - - def update_dn(self, jid, newDn): - cols = ['dn']; - values = [newDn] + def update_dn(self, jid, new_dn): + cols = ['dn'] + values = [new_dn] return self.db_service.update('registration', cols, values, 'jid=\''+jid+'\'') - - - def getCnFromDn(self,dn): - if dn !=None and str(dn) !="": - dnStrArr = str(dn).split(",") - if len(dnStrArr)>0: - return dnStrArr[0] - + def get_cn_from_dn(self, dn): + if dn != None and str(dn) != "": + dn_str_arr = str(dn).split(",") + if len(dn_str_arr) > 0: + return dn_str_arr[0] def handle_task(self): try: dn = self.data['dn'] - newParentDn = self.data['newParentDn'] + new_parent_dn = self.data['new_parent_dn'] + directory_server = self.data['directory_server'] - jid= self.db_service.select_one_result('registration','jid','registered = 1') + jid = self.db_service.select_one_result('registration', 'jid', 'registered = 1') + new_dn = str(dn).replace(dn, self.get_cn_from_dn(dn) + ',' + str(new_parent_dn)) + self.update_dn(jid, new_dn) - newDn=str(dn).replace(dn, self.getCnFromDn(dn)+ str(newParentDn)) + if directory_server == "LDAP": + # update SSSD conf agent DN + sssd_config_file_path = "/etc/sssd/sssd.conf" + file_sssd = open(sssd_config_file_path, 'r') + file_data = file_sssd.read() + old_dn_in_sssd = "" + new_dn_in_sssd = "ldap_default_bind_dn = " + new_dn + "\n" + with open(sssd_config_file_path) as fp: + for line in fp: + if line.startswith('ldap_default_bind_dn'): + old_dn_in_sssd = line + file_data = file_data.replace(old_dn_in_sssd, new_dn_in_sssd) - self.update_dn(jid,newDn) + file_sssd.close() + file_sssd = open(sssd_config_file_path, 'w') + file_sssd.write(file_data) + file_sssd.close() self.context.create_response(code=self.message_code.TASK_PROCESSED.value, message='Ahenk başarı ile taşındı.', - data=json.dumps({'Dn': newDn}), + data=json.dumps({'Dn': new_dn}), content_type=ContentType.APPLICATION_JSON.value) - except Exception as e: - self.logger.error(" error on handle xmessage task. Error: " + str(e)) + self.logger.error("Error occured while moving agent. Error: " + str(e)) self.context.create_response(code=self.message_code.TASK_ERROR.value, message='Ahenk taşınırken hata olustu' + str(e), content_type=ContentType.APPLICATION_JSON.value) - def handle_task(task, context): cls = MoveAgent(task, context) cls.handle_task() +