From 74d0ffc91c4d9f73d1f8f826cb904818a595a09e Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 22 May 2025 12:05:19 +0600 Subject: [PATCH] Changed group password --- source/ubl-settings-usergroups-group.c | 29 +++++++++-- source/ubl-settings-usergroups.c | 51 ++++++++++++++++---- source/ubl-settings-usergroups.h | 1 + ubl-settings-usergroups-group-creation.glade | 7 ++- 4 files changed, 71 insertions(+), 17 deletions(-) diff --git a/source/ubl-settings-usergroups-group.c b/source/ubl-settings-usergroups-group.c index 5f6a2da..182d78b 100644 --- a/source/ubl-settings-usergroups-group.c +++ b/source/ubl-settings-usergroups-group.c @@ -193,9 +193,11 @@ void on_group_save(GtkWidget *self, dictionary *dict){ int password_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->PasswordCombo)); - if (password_active == 1) { - password = "!*"; - } else if (password_active == 2){ + if (password_active == 0){ + password = ""; + } else if (password_active ==5){ + password = " "; + } else if (password_active == 1){ password = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry)); if (yon_char_is_empty(password)){ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); @@ -203,8 +205,25 @@ void on_group_save(GtkWidget *self, dictionary *dict){ yon_ubl_status_highlight_incorrect(window->PasswordEntry); return; } - } else { - password=""; + } else if (password_active==2){ + password = "!*"; + } else if (password_active ==3){ + password = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry)); + if (password[0]!='!') { + char *temp = yon_char_append("!",password); + password=temp; + } + } else if (password_active == 4){ + password = yon_char_new((char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry))); + if (yon_char_is_empty(password)){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->PasswordEntry); + gtk_notebook_set_current_page(GTK_NOTEBOOK(window->MainNotebook),0); + return; + } + if (password[0]=='!'){ + free(yon_char_divide(password,0)); + } } final_string = yon_char_unite(yon_char_return_if_exist(group_users,""), ":",yon_char_return_if_exist(gid,"x"), diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 3875555..ed7e20c 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -110,8 +110,12 @@ void yon_interface_update(main_window *widgets){ if (!check_is_password_hash(parameters[5])&¶meters[5][0]!='%'&¶meters[5][1]!='%'){ pars = ENCRYPTED_LABEL; - } else if (!strcmp(parameters[5],"!*")){ + } else if (!strcmp(parameters[5]," ")){ pars = NO_PASSWORD_LABEL; + } else if (!strcmp(parameters[5],"!*")){ + pars = DENY_LOGIN_LABEL; + } else if (parameters[5][0]=='!'){ + pars = BLOCK_LOGIN_LABEL; } else { pars = UNENCRYPTED_LABEL; @@ -158,8 +162,12 @@ void yon_interface_update(main_window *widgets){ if (parameters_size>4&&strcmp(parameters[4],"x")&&strcmp(parameters[4],"")){ if (!check_is_password_hash(parameters[4])&¶meters[4][0]!='%'&¶meters[4][1]!='%'){ pars = ENCRYPTED_LABEL; - } else if (!strcmp(parameters[4],"!*")||!strcmp(parameters[4],"*")||!strcmp(parameters[4],"!")){ + } else if (!strcmp(parameters[4]," ")){ pars = NO_PASSWORD_LABEL; + } else if (!strcmp(parameters[4],"!*")){ + pars = DENY_LOGIN_LABEL; + } else if (parameters[4][0]=='!'){ + pars = BLOCK_LOGIN_LABEL; } else { pars = UNENCRYPTED_LABEL; @@ -1702,14 +1710,37 @@ void on_main_edit(GtkWidget *, main_window *widgets){ } } if (size>4){ - if (!yon_char_is_empty(parsed[4])){ - if (!strcmp(parsed[4],"!*")||!strcmp(parsed[4],"!")||!strcmp(parsed[4],"*")){ - gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordCombo),1); - gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),""); - } else if (strcmp(parsed[4],"x")){ - gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),parsed[4]); - gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordCombo),2); - + if (strcmp(parsed[4]," ")&&!yon_char_check_begins_with(parsed[4],"!")&&!yon_char_check_begins_with(parsed[4],"*")&&!yon_char_check_begins_with(parsed[4],"%%")){ + if (check_is_password_hash(parsed[4])){ + char *temp = yon_char_append("%%",parsed[4]); + free(parsed[4]); + parsed[4]=temp; + } + } + window->old_password=yon_char_new(parsed[4]); + if (strcmp(parsed[4],"x")&&strcmp(parsed[4],"")){ + if (!yon_char_is_empty(parsed[4])){ + if (check_is_password_hash(parsed[4])){ + if (yon_char_check_begins_with(parsed[4],"%%")==-1){ + char *temp = yon_char_append("%%",parsed[4]); + free(parsed[4]); + parsed[4]=temp; + } + } + if (!strcmp(parsed[4],"!*")){ + gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordCombo),2); + } else if (!strcmp(parsed[4]," ")) { + gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordCombo),5); + } else if (parsed[4][0]=='!'){ + char *password_or = yon_char_new(parsed[4]); + free(yon_char_divide(password_or,0)); + gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),password_or); + gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordCombo),3); + free(password_or); + } else { + gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),parsed[4]); + gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordCombo),1); + } } } } else { diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index f3820bf..c8fbb7c 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -307,6 +307,7 @@ typedef struct{ GtkWidget *MainNotebook; char *last_gid; + char *old_password; } ubl_settings_usergroups_group_creation_window; typedef struct{ diff --git a/ubl-settings-usergroups-group-creation.glade b/ubl-settings-usergroups-group-creation.glade index d50bf79..e4b169b 100644 --- a/ubl-settings-usergroups-group-creation.glade +++ b/ubl-settings-usergroups-group-creation.glade @@ -1,5 +1,5 @@ - + @@ -353,8 +353,11 @@ 0 Default - No password required Set a password + Deny login + Block login with password + Unblock login with password + No password required