From 4d2216c5c2aa999a590845057f9dccb81c5a5a75 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 15 Feb 2024 11:13:08 +0600 Subject: [PATCH 01/12] Password hiding function rework; Local config loading improvements, switching back for loading local config on startup --- source/ubl-settings-usergroups.c | 180 +++++++++++++++++++++---------- source/ubl-settings-usergroups.h | 3 +- 2 files changed, 126 insertions(+), 57 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index d26bc97..1a9f810 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -6,10 +6,48 @@ config main_config; int yon_load_proceed(YON_CONFIG_TYPE type){ yon_config_load_register(YON_CONFIG_DEFAULT,"users","DEFAULTPASSWD DEFAULTROOTPASSWD USERGROUPS DEFAULTUSER HASHPASSWD ADDADM",NULL); - if (yon_config_load_register_no_cleaning(type,"users","DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]","[system]","SYSTEMBOOT_STATEMODE","[save]","SAVE_ROOTCOPY_CHANGES",NULL)){ + yon_config_load_register_no_cleaning(type,"users","DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]","[system]","SYSTEMBOOT_STATEMODE","[save]","SAVE_ROOTCOPY_CHANGES",NULL); + if (type!=YON_CONFIG_GLOBAL){ + yon_config_load_register_no_cleaning(YON_CONFIG_GLOBAL,"users","DEFAULTPASSWD DEFAULTROOTPASSWD",NULL); + } + if (type==YON_CONFIG_LOCAL){ + int size; + config_str passwords = yon_config_load(get_passwords_command,&size); + for (int i=0;i5){ + char *temp = yon_char_append(local_value,parsed[5]); + free(local_value); + local_value=temp; + yon_config_set(key,yon_char_new(local_value)); + yon_config_set_status(key,0); + + } + + } else if (strstr(key,"GROUPADD[")){ + if (parsed_size>4){ + char *temp = yon_char_append(local_value,parsed[4]); + free(local_value); + local_value=temp; + yon_config_set(key,yon_char_new(local_value)); + yon_config_set_status(key,0); + + } + + } + yon_char_parsed_free(parsed,parsed_size); + free(key); + free(value); + } + } return 1; - } - return 0; + } + } @@ -34,13 +72,13 @@ void yon_interface_update(main_window *widgets){ login = yon_char_divide_search(parameters[0],"=",-1); login[strlen(login)-1]='\0'; } - if (!strcmp(parameters[1],"x")) parameters[1]=AUTOMATICALLY_LABEL; - if (!strcmp(parameters[2],"x")) parameters[2]=login; + if (parameters_size>1&&!strcmp(parameters[1],"x")) parameters[1]=AUTOMATICALLY_LABEL; + if (parameters_size>2&&!strcmp(parameters[2],"x")) parameters[2]=login; gtk_list_store_set(widgets->UsersList,&iter, 2,login, 3,parameters_size>0?parameters[0]:"", - 1,parameters_size>1?parameters[1]:"", - 4,parameters_size>2?parameters[2]:"", + 1,parameters_size>1&&!yon_char_is_empty(parameters[1])?parameters[1]:AUTOMATICALLY_LABEL, + 4,parameters_size>2&&!yon_char_is_empty(parameters[2])?parameters[2]:login, 5,parameters_size>3?!strcmp(parameters[3],"x")||!strcmp(parameters[3],"")?def_groups:parameters[3]:def_groups, 6,parameters_size>4?parameters[4]:"", 7,parameters_size>5?strcmp(parameters[5],"x")&&strcmp(parameters[5],"")? parameters[5][0]=='%'&¶meters[5][1]=='%'? UNENCRYPTED_LABEL: ENCRYPTED_LABEL : DEFAULT_USER_LABEL : DEFAULT_USER_LABEL, @@ -136,57 +174,91 @@ void yon_hide_passwords(template_saving_window *window){ char *new_value; gtk_tree_model_get(model,&iter,1,&name,2,&old_value,3,&new_value,-1); if (strstr(name,"USERADD[")){ - int size; - config_str parsed = yon_char_parse(new_value,&size,":"); - if (size>5 &&parsed[5][0] !='$'&&parsed[5][0]!='%'){ - parsed[5]="******"; - char *new_compare = yon_char_unite(!yon_char_is_empty(old_value)?"":"",!yon_char_is_empty(old_value)?old_value:"",!yon_char_is_empty(old_value)?"":"","\n",yon_char_parsed_to_string(parsed,size,":"),NULL); - gtk_list_store_set(window->list,&iter,7,new_compare,-1); - free(new_compare); - } else { - char *new_compare = yon_char_unite(!yon_char_is_empty(old_value)?"":"",!yon_char_is_empty(old_value)?old_value:"",!yon_char_is_empty(old_value)?"":"","\n",NULL); - gtk_list_store_set(window->list,&iter,7,new_compare,-1); - free(new_compare); - + char *old=NULL; + char *newv=NULL; + int size = 0; + if (!yon_char_is_empty(new_value)){ + config_str parsed = NULL; + parsed = yon_char_parse(new_value,&size,":"); + if (size>5&&!yon_char_is_empty(parsed[5])&&strcmp(parsed[5],"x")&&parsed[5][0]!='%'&&parsed[5][1]!='%'){ + free(new_value); + free(parsed[5]); + parsed[5]=yon_char_new("*******"); + new_value = yon_char_parsed_to_string(parsed,size,":"); + } else if (size>5&&!yon_char_is_empty(parsed[5])&&strcmp(parsed[5],"x")) { + free(new_value); + free(yon_char_divide(parsed[5],1)); + new_value = yon_char_parsed_to_string(parsed,size,":"); + } + if (parsed){ + yon_char_parsed_free(parsed,size); + } + } + if(!yon_char_is_empty(old_value)){ + old=yon_char_unite("",old_value,"",NULL); } + if(!yon_char_is_empty(new_value)){ + newv=new_value; + } + char *new_string = yon_char_unite(!yon_char_is_empty(old)?old:"","\n",!yon_char_is_empty(newv)?newv:"",NULL); + gtk_list_store_set(window->list,&iter,7,new_string,-1); } else if (strstr(name,"GROUPADD[")){ - int size; - config_str parsed = yon_char_parse(new_value,&size,":"); - if (size>4&&parsed[4][0] !='$'&&parsed[4][0]!='%'){ - parsed[4]="******"; - char *new_compare = yon_char_unite(!yon_char_is_empty(old_value)?"":"",!yon_char_is_empty(old_value)?old_value:"",!yon_char_is_empty(old_value)?"":"","\n",yon_char_parsed_to_string(parsed,size,":"),NULL); - gtk_list_store_set(window->list,&iter,7,new_compare,-1); - } else { - char *new_compare = yon_char_unite(!yon_char_is_empty(old_value)?"":"",!yon_char_is_empty(old_value)?old_value:"",!yon_char_is_empty(old_value)?"":"","\n",NULL); - gtk_list_store_set(window->list,&iter,7,new_compare,-1); - free(new_compare); - + char *old=NULL; + char *newv=NULL; + int size = 0; + if (new_value){ + config_str parsed = yon_char_parse(new_value,&size,":"); + free(new_value); + if (size>4&&!yon_char_is_empty(parsed[4])&&strcmp(parsed[4],"x")&&parsed[4][0]!='%'&&parsed[4][1]!='%'){ + free(parsed[4]); + parsed[4]=yon_char_new("*******"); + } + new_value = yon_char_parsed_to_string(parsed,size,":"); + } + if(!yon_char_is_empty(old_value)){ + old=yon_char_unite("",old_value,"",NULL); } + if(!yon_char_is_empty(new_value)){ + newv=new_value; + } + char *new_string = yon_char_unite(!yon_char_is_empty(old)?old:"","\n",!yon_char_is_empty(newv)?newv:"",NULL); + gtk_list_store_set(window->list,&iter,7,new_string,-1); + } else if (strstr(name,"DEFAULTPASSWD")){ - if (!yon_char_is_empty(new_value) && new_value[0] !='$'&&new_value[0]!='%'){ - char *new_compare = yon_char_unite("",old_value,"\n",NULL); - gtk_list_store_set(window->list,&iter,7,new_compare,-1); - free(new_compare); - } else { - char *new_compare = yon_char_unite("",old_value,"\n",NULL); - gtk_list_store_set(window->list,&iter,7,new_compare,-1); - free(new_compare); - + char *old=NULL; + char *newv=NULL; + if (!yon_char_is_empty(new_value)&&strlen(new_value)>2&&new_value[0]=='%'&&new_value[1]=='%'){ + free(yon_char_divide(new_value,1)); + newv=new_value; + } else if (!yon_char_is_empty(new_value)&&new_value[0]=='$') { + newv=new_value; + }else if (!yon_char_is_empty(new_value)){ + newv="*******"; + } + if (!yon_char_is_empty(old_value)){ + old = yon_char_unite("",old_value,"",NULL); } + char *new_string = yon_char_unite(!yon_char_is_empty(old)?old:"","\n",!yon_char_is_empty(newv)?newv:"",NULL); + gtk_list_store_set(window->list,&iter,7,new_string,-1); } else if (strstr(name,"DEFAULTROOTPASSWD")){ - if (!yon_char_is_empty(new_value) &&new_value[0] !='$'&&new_value[0]!='%'){ - char *new_compare = yon_char_unite("",old_value,"\n******",NULL); - gtk_list_store_set(window->list,&iter,7,new_compare,-1); - free(new_compare); - } else { - char *new_compare = yon_char_unite("",old_value,"\n******",NULL); - gtk_list_store_set(window->list,&iter,7,new_compare,-1); - free(new_compare); - + char *old=NULL; + char *newv=NULL; + if (!yon_char_is_empty(new_value)&&strlen(new_value)>2&&new_value[0]=='%'&&new_value[1]=='%'){ + free(yon_char_divide(new_value,1)); + newv=new_value; + } else if (!yon_char_is_empty(new_value)&&new_value[0]=='$') { + newv=new_value; + }else if (!yon_char_is_empty(new_value)){ + newv="*******"; + } + if (!yon_char_is_empty(old_value)){ + old = yon_char_unite("",old_value,"",NULL); } + char *new_string = yon_char_unite(!yon_char_is_empty(old)?old:"","\n",!yon_char_is_empty(newv)?newv:"",NULL); + gtk_list_store_set(window->list,&iter,7,new_string,-1); } } @@ -1341,7 +1413,7 @@ void on_user_save(GtkWidget *self, dictionary *dict){ return; } } else { - password="x"; + password=""; } username = (char*)gtk_entry_get_text(GTK_ENTRY(window->userUserNameEntry)); @@ -1491,7 +1563,7 @@ void on_user_save(GtkWidget *self, dictionary *dict){ yon_char_return_if_exist(create_system_user,""), yon_char_return_if_exist(create_ununique,""), yon_char_return_if_exist(do_not_check,""), - ":",yon_char_return_if_exist(password,"x"), + ":",yon_char_return_if_exist(password,""), ":",yon_char_return_if_exist(extra_options,""), NULL); @@ -1986,7 +2058,7 @@ void config_init(){ main_config.lock_save_global=0; main_config.lock_save_local=0; main_config.groups_size=0; - main_config.load_mode=0; + main_config.load_mode=1; main_config.hash_default_id=-1; main_config.groups = yon_file_open(groups_path,&main_config.groups_size); main_config.users = yon_file_open(users_path,&main_config.users_size); @@ -2126,8 +2198,7 @@ main_window *yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(on_config_global_load),widgets); g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(on_config_local_load),widgets); - main_config.load_mode=0; - yon_load_proceed(YON_CONFIG_GLOBAL); + yon_load_proceed(YON_CONFIG_LOCAL); yon_interface_update((main_window*)widgets); gtk_widget_realize(GTK_WIDGET(widgets->UsersTree)); yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->UsersTree)); @@ -2157,9 +2228,6 @@ int main(int argc, char *argv[]){ yon_ubl_setup_arguments(argc,argv,&unfound,&size,NULL); gtk_init(&argc,&argv); template_main_window *widgets = yon_ubl_window_setup(); - textdomain (template_ui_LocaleName); - yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); - textdomain (LocaleName); yon_main_window_complete((main_window*)widgets); yon_window_config_load(config_path); gtk_main(); diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index 052b548..d2b8c21 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -43,7 +43,8 @@ #define clear_config_local_command "ubconfig --target system remove TEMP_SECTION TEMP_PATAMETER" #define samba_sync_command(user) yon_char_unite("sudo smbpasswd -Las ",user,NULL) #define samba_sync_password_command(user, password) yon_char_unite("(echo \"",password,"\"; echo \"",password,"\") | sudo smbpasswd -Las ",user,NULL) - +#define get_passwords_command "ubconfig --target global get [users] USERADD[*] GROUPADD[*]" + #define groups_path "/etc/group" #define users_path "/etc/passwd" #define shadow_path "/etc/shadow" -- 2.35.1 From 6350def969d5f4f2c8e6d05bf70c28fa2d4cb795 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 15 Feb 2024 11:26:38 +0600 Subject: [PATCH 02/12] Fixed bug, caused changing of DEFAULTROOTPASSWD and DEFAULTPASSWD; Fixed password button sensitivity at additional settings window --- source/ubl-settings-usergroups.c | 15 ++++++++++----- ubl-settings-usergroups-additional-settings.glade | 2 -- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 1a9f810..2699740 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -751,6 +751,10 @@ ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_ char *default_user = yon_config_get_by_key("DEFAULTUSER"); if (!yon_char_is_empty(default_user)) gtk_entry_set_text(GTK_ENTRY(window->DefaultUserNameEntry),default_user); + + + g_signal_connect(G_OBJECT(window->RootPasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->RootPasswordButton); + g_signal_connect(G_OBJECT(window->DefaultPasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->DefaultPasswordButton); char *default_password = yon_config_get_by_key("DEFAULTPASSWD"); if (!yon_char_is_empty(default_password)){ gtk_entry_set_text(GTK_ENTRY(window->DefaultPasswordEntry),default_password); @@ -786,9 +790,7 @@ ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_ g_signal_connect(G_OBJECT(window->EncryptAllPasswordsButton),"clicked",G_CALLBACK(on_passwords_encrypt),NULL); - g_signal_connect(G_OBJECT(window->RootPasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->RootPasswordButton); g_signal_connect(G_OBJECT(window->PasswordHashCombo),"changed",G_CALLBACK(on_hash_changed),window); - g_signal_connect(G_OBJECT(window->DefaultPasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->DefaultPasswordButton); return window; } @@ -1109,11 +1111,14 @@ void on_password_changed(GtkEntry *self, ubl_settings_usergroups_password_window void on_password_accept(GtkWidget *self, dictionary *dict){ ubl_settings_usergroups_password_window *window = yon_dictionary_get_data(dict->first,ubl_settings_usergroups_password_window*); GtkEntry *entry = yon_dictionary_get_data(dict->first->next,GtkEntry*); - char *pasted_hash = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordHashEntry)); - if (!yon_char_is_empty(pasted_hash)){ + char *password = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry)); + if (yon_char_is_empty(password)){ + char *pasted_hash = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordHashEntry)); + if (!yon_char_is_empty(pasted_hash)){ gtk_entry_set_text(entry,pasted_hash); + } } else { - char *password = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry)); + if (yon_char_is_empty(password)){ yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(window->StatusBox),"password_empty",EMPTY_IMPORTANT_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); return; diff --git a/ubl-settings-usergroups-additional-settings.glade b/ubl-settings-usergroups-additional-settings.glade index c08282a..29db0df 100644 --- a/ubl-settings-usergroups-additional-settings.glade +++ b/ubl-settings-usergroups-additional-settings.glade @@ -164,7 +164,6 @@ True False True - 30 False * com.ublinux.ubl-settings-usergroups.key-symbolic @@ -242,7 +241,6 @@ True False True - 30 False * com.ublinux.ubl-settings-usergroups.key-symbolic -- 2.35.1 From a87797a83706f81f50034258390236b3be49fa64 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 15 Feb 2024 11:36:09 +0600 Subject: [PATCH 03/12] Added checking for --badnames parameter --- source/ubl-settings-usergroups.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 2699740..206a3a3 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -1397,8 +1397,12 @@ void on_user_save(GtkWidget *self, dictionary *dict){ } } + int do_not_check_actve = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userDontCheckCheck)); + if (do_not_check_actve) + do_not_check = " --badnames"; + login = (char*)gtk_entry_get_text(GTK_ENTRY(window->userLoginEntry)); - if (login[0]>'0'&&login[0]<'9'){ + if (login[0]>'0'&&login[0]<'9'&&!do_not_check_actve){ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),USER_BEGINS_WITH_DIGIT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_highlight_incorrect(window->userLoginEntry); return; @@ -1496,10 +1500,6 @@ void on_user_save(GtkWidget *self, dictionary *dict){ if (create_ununique_active) create_ununique = " --non-unique"; - int do_not_check_actve = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userDontCheckCheck)); - if (do_not_check_actve) - do_not_check = " --badnames"; - samba_sync = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBACheck)); samba_password_sync = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBAPasswordCheck)); if (samba_sync){ -- 2.35.1 From 810ded3acc336957699987e7cdf4c300a7a098ed Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 15 Feb 2024 12:31:38 +0600 Subject: [PATCH 04/12] Fixed crash --- source/ubl-settings-usergroups.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 206a3a3..5409f12 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -19,7 +19,7 @@ int yon_load_proceed(YON_CONFIG_TYPE type){ int parsed_size; char *local_value = yon_config_get_by_key(key); config_str parsed = yon_char_parse(value,&parsed_size,":"); - if (strstr(key,"USERADD[")){ + if (strstr(key,"USERADD[")&&local_value){ if (parsed_size>5){ char *temp = yon_char_append(local_value,parsed[5]); free(local_value); @@ -29,7 +29,7 @@ int yon_load_proceed(YON_CONFIG_TYPE type){ } - } else if (strstr(key,"GROUPADD[")){ + } else if (strstr(key,"GROUPADD[")&&local_value){ if (parsed_size>4){ char *temp = yon_char_append(local_value,parsed[4]); free(local_value); -- 2.35.1 From 300c1e5eaff4d6039c6469dcf9523f26d8b65c5b Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 16 Feb 2024 11:17:37 +0600 Subject: [PATCH 05/12] Removed saving of password to local config --- source/ubl-settings-usergroups.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 5409f12..2170701 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -280,10 +280,32 @@ void on_config_global_save(){ } void on_config_local_save(){ + int size; + config_str keys = yon_config_get_all_by_key("USERADD[",&size); + int passw_size; + config_str passwords = NULL; + for (int i=0;i5&&!yon_char_is_empty(parsed[5])){ + yon_char_parsed_add_or_create_if_exists(passwords,&passw_size,yon_char_new(parsed[5])); + parsed = yon_char_parsed_rip(parsed,&parsed_size,5); + yon_config_set(key,yon_char_parsed_to_string(parsed,parsed_size,":")); + } + free(key); + free(value); + } yon_accept_changes(); yon_samba_sync_proceed(); template_saving_window *window = yon_save_proceed("system",YON_CONFIG_LOCAL,"users", "DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL); if (window) yon_hide_passwords(window); + for (int i=0;i Date: Fri, 16 Feb 2024 12:24:18 +0600 Subject: [PATCH 06/12] Updated hash checking logics --- source/ubl-settings-usergroups.c | 16 ++++++++++++++-- source/ubl-settings-usergroups.h | 1 + 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 2170701..facf92a 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -74,6 +74,18 @@ void yon_interface_update(main_window *widgets){ } if (parameters_size>1&&!strcmp(parameters[1],"x")) parameters[1]=AUTOMATICALLY_LABEL; if (parameters_size>2&&!strcmp(parameters[2],"x")) parameters[2]=login; + char *pars = ""; + if (parameters_size>5&&strcmp(parameters[5],"x")&&strcmp(parameters[5],"")){ + if (!check_is_password_hash(parameters[5])){ + pars = ENCRYPTED_LABEL; + } else { + pars = UNENCRYPTED_LABEL; + + } + } else { + pars = DEFAULT_USER_LABEL; + + } gtk_list_store_set(widgets->UsersList,&iter, 2,login, 3,parameters_size>0?parameters[0]:"", @@ -81,7 +93,7 @@ void yon_interface_update(main_window *widgets){ 4,parameters_size>2&&!yon_char_is_empty(parameters[2])?parameters[2]:login, 5,parameters_size>3?!strcmp(parameters[3],"x")||!strcmp(parameters[3],"")?def_groups:parameters[3]:def_groups, 6,parameters_size>4?parameters[4]:"", - 7,parameters_size>5?strcmp(parameters[5],"x")&&strcmp(parameters[5],"")? parameters[5][0]=='%'&¶meters[5][1]=='%'? UNENCRYPTED_LABEL: ENCRYPTED_LABEL : DEFAULT_USER_LABEL : DEFAULT_USER_LABEL, + 7,pars, -1); if(parameters) free(parameters); @@ -632,7 +644,7 @@ void on_password_change(GtkWidget *self, dictionary *entry_dict){// if (!yon_char_is_empty(password)){ password = yon_char_new(password); if (main_config.load_mode==0){ - if (password[0]=='$'){ + if (!check_is_password_hash(password)){ gtk_entry_set_text(GTK_ENTRY(window->PasswordHashEntry),password); } else { if (password[0]=='%'&&password[1]=='%'){ diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index d2b8c21..1102986 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -44,6 +44,7 @@ #define samba_sync_command(user) yon_char_unite("sudo smbpasswd -Las ",user,NULL) #define samba_sync_password_command(user, password) yon_char_unite("(echo \"",password,"\"; echo \"",password,"\") | sudo smbpasswd -Las ",user,NULL) #define get_passwords_command "ubconfig --target global get [users] USERADD[*] GROUPADD[*]" +#define check_is_password_hash(password) system(yon_char_append("/lib/ublinux/functions is_hash_password ", password)) #define groups_path "/etc/group" #define users_path "/etc/passwd" -- 2.35.1 From 3ba9ee1d2ac7438181dce8b5b6c9e0baebd702d6 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 16 Feb 2024 14:26:22 +0600 Subject: [PATCH 07/12] Fixed update button loading mechanism --- source/ubl-settings-usergroups.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index facf92a..0638e37 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -2076,8 +2076,12 @@ void on_main_delete(GtkWidget *self, main_window *widgets){ } void on_config_update(GtkWidget *self, main_window *widgets){ - yon_config_load_register(main_config.load_mode==1?YON_CONFIG_LOCAL:YON_CONFIG_GLOBAL,"users","DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL); - yon_interface_update(widgets); + if (main_config.load_mode==0){ + on_config_global_load(NULL,widgets); + } else { + on_config_local_load(NULL,widgets); + } + // yon_interface_update(widgets); } -- 2.35.1 From 9931dd00a693f1b497315aa2547d1bee1f379ad5 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 16 Feb 2024 14:36:04 +0600 Subject: [PATCH 08/12] Moved 'extra options' entry to additional parameters section --- source/ubl-settings-usergroups.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 0638e37..39c7c19 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -1602,8 +1602,9 @@ void on_user_save(GtkWidget *self, dictionary *dict){ yon_char_return_if_exist(create_system_user,""), yon_char_return_if_exist(create_ununique,""), yon_char_return_if_exist(do_not_check,""), + !yon_char_is_empty(extra_options)?extra_options:"", + yon_char_return_if_exist(extra_options,""), ":",yon_char_return_if_exist(password,""), - ":",yon_char_return_if_exist(extra_options,""), NULL); yon_config_register(USERADD(login),"users",final_user); -- 2.35.1 From 8a39f88233a8bd13aab53f164fdae6fc00da1484 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 16 Feb 2024 14:56:38 +0600 Subject: [PATCH 09/12] Fixed hash checking --- source/ubl-settings-usergroups.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index 1102986..1925ece 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -44,7 +44,7 @@ #define samba_sync_command(user) yon_char_unite("sudo smbpasswd -Las ",user,NULL) #define samba_sync_password_command(user, password) yon_char_unite("(echo \"",password,"\"; echo \"",password,"\") | sudo smbpasswd -Las ",user,NULL) #define get_passwords_command "ubconfig --target global get [users] USERADD[*] GROUPADD[*]" -#define check_is_password_hash(password) system(yon_char_append("/lib/ublinux/functions is_hash_password ", password)) +#define check_is_password_hash(password) system(yon_char_unite("/lib/ublinux/functions is_hash_password '", password,"'",NULL)) #define groups_path "/etc/group" #define users_path "/etc/passwd" -- 2.35.1 From c7f2f9a067a18fafc22e553ad5a60fcd45ac8ced Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 16 Feb 2024 15:35:12 +0600 Subject: [PATCH 10/12] Password window rename --- source/ubl-settings-usergroups.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 39c7c19..7d35411 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -1201,7 +1201,7 @@ ubl_settings_usergroups_password_window *yon_ubl_settings_usergroups_password_ne g_signal_connect(G_OBJECT(window->PasswordHashEntry),"icon-press",G_CALLBACK(on_password_show_hide),NULL); g_signal_connect(G_OBJECT(window->PasswordEntry),"changed",G_CALLBACK(on_password_changed),window); g_signal_connect(G_OBJECT(window->RepeatPasswordEntry),"changed",G_CALLBACK(on_password_changed),window); - gtk_window_set_title(GTK_WINDOW(window->CreateGroupWindow),GROUPS_TITLE_LABEL); + gtk_window_set_title(GTK_WINDOW(window->CreateGroupWindow),PASSWORD_TITLE_LABEL); return window; } -- 2.35.1 From 60eabca9452c8f207e51d6caa723f7cfc30e30d1 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 16 Feb 2024 16:21:00 +0600 Subject: [PATCH 11/12] Password showing fix --- source/ubl-settings-usergroups.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 7d35411..f63f584 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -647,10 +647,7 @@ void on_password_change(GtkWidget *self, dictionary *entry_dict){// if (!check_is_password_hash(password)){ gtk_entry_set_text(GTK_ENTRY(window->PasswordHashEntry),password); } else { - if (password[0]=='%'&&password[1]=='%'){ - free(yon_char_divide(password,1)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->NoEncriptionCheck),1); - } gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),password); } } -- 2.35.1 From 9d78262ba70c2a734c8f58c795e0cf6c3b21dfa6 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 16 Feb 2024 17:57:04 +0600 Subject: [PATCH 12/12] Window rename --- source/ubl-settings-usergroups.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index f63f584..57983e3 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -502,6 +502,7 @@ yon_savasettings_window *yon_saving_settings_new(){ g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); gtk_widget_show(window->Window); yon_window_config_custom_window_setup(GTK_WINDOW(window->Window),"savingSettingsWindow"); + gtk_window_set_title(GTK_WINDOW(window->Window),SAVESETTINGS_TITLE_LABEL); char *string = yon_config_get_by_key("SAVE_ROOTCOPY_CHANGES"); if (!yon_char_is_empty(string)&&strstr(string,"/var/lib/samba")){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->SambaCheck),1); -- 2.35.1