User creation saving and loading fixes

pull/14/head
parent facbc4d227
commit edbf519c38

@ -938,6 +938,8 @@ void on_user_save(GtkWidget *self, dictionary *dict){
yon_config_register(USERADD(login),"users",final_user); yon_config_register(USERADD(login),"users",final_user);
yon_config_register(USERSHADOW(login),"users",shadow_string); yon_config_register(USERSHADOW(login),"users",shadow_string);
GtkTreeIter iter; GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(widgets->UsersList);
if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->UsersTree)),&model,&iter))
gtk_list_store_append(widgets->UsersList,&iter); gtk_list_store_append(widgets->UsersList,&iter);
gtk_list_store_set(widgets->UsersList,&iter,1,yon_char_return_if_exist(uid_string,""),2,yon_char_return_if_exist(login,""),3,yon_char_return_if_exist(username,""),4,yon_char_return_if_exist(main_group,""),5,yon_char_return_if_exist(additional_groups,""),6,yon_char_unite(yon_char_return_if_exist(user_home,""),yon_char_return_if_exist(user_shell,""),yon_char_return_if_exist(create_system_user,""),yon_char_return_if_exist(create_ununique,""),yon_char_return_if_exist(do_not_check,""),NULL),7,yon_char_return_if_exist(gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->userPasswordCombo)),""),-1); gtk_list_store_set(widgets->UsersList,&iter,1,yon_char_return_if_exist(uid_string,""),2,yon_char_return_if_exist(login,""),3,yon_char_return_if_exist(username,""),4,yon_char_return_if_exist(main_group,""),5,yon_char_return_if_exist(additional_groups,""),6,yon_char_unite(yon_char_return_if_exist(user_home,""),yon_char_return_if_exist(user_shell,""),yon_char_return_if_exist(create_system_user,""),yon_char_return_if_exist(create_ununique,""),yon_char_return_if_exist(do_not_check,""),NULL),7,yon_char_return_if_exist(gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->userPasswordCombo)),""),-1);
on_subwindow_close(self); on_subwindow_close(self);
@ -1070,11 +1072,13 @@ void on_main_edit(GtkWidget *self, main_window *widgets){
for (int i=0;i<params_size;i++){ for (int i=0;i<params_size;i++){
if (!strcmp(parameters_substring[i],"--home-dir")){ if (!strcmp(parameters_substring[i],"--home-dir")){
gtk_entry_set_text(GTK_ENTRY(window->userHomeEntry),parameters_substring[i+1]); gtk_entry_set_text(GTK_ENTRY(window->userHomeEntry),parameters_substring[i+1]);
gtk_combo_box_set_active(GTK_COMBO_BOX(window->userHomeCombo),2);
i++; i++;
} else if (!strcmp(parameters_substring[i],"--shell")||!strcmp(parameters_substring[i],"-s")){ } else if (!strcmp(parameters_substring[i],"--shell")||!strcmp(parameters_substring[i],"-s")){
int active = yon_gtk_combo_box_text_find(window->userShellCombo,parameters_substring[i+1]); int active = yon_gtk_combo_box_text_find(window->userShellCombo,parameters_substring[i+1]);
if (!active){ if (!active){
gtk_entry_set_text(GTK_ENTRY(window->userShellEntry),parameters_substring[i+1]); gtk_entry_set_text(GTK_ENTRY(window->userShellEntry),parameters_substring[i+1]);
gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->userShellCombo),"Set");
} }
i++; i++;
@ -1084,6 +1088,8 @@ void on_main_edit(GtkWidget *self, main_window *widgets){
gtk_combo_box_set_active(GTK_COMBO_BOX(window->userHomeCombo),2); gtk_combo_box_set_active(GTK_COMBO_BOX(window->userHomeCombo),2);
}else if (!strcmp(parameters_substring[i],"--no-user-group")||!strcmp(parameters_substring[i],"-N")){ }else if (!strcmp(parameters_substring[i],"--no-user-group")||!strcmp(parameters_substring[i],"-N")){
// gtk // gtk
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userGroupsCheck),0);
gtk_entry_set_text(GTK_ENTRY(window->userGroupsEntry),"");
}else if (!strcmp(parameters_substring[i],"--non-unique")||!strcmp(parameters_substring[i],"-o")){ }else if (!strcmp(parameters_substring[i],"--non-unique")||!strcmp(parameters_substring[i],"-o")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userCreateUnuniqueCheck),1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userCreateUnuniqueCheck),1);
}else if (!strcmp(parameters_substring[i],"--badnames")){ }else if (!strcmp(parameters_substring[i],"--badnames")){
@ -1187,8 +1193,35 @@ void on_main_delete(GtkWidget *self, main_window *widgets){
} }
} }
void on_config_update(){ 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);
GtkTreeIter iter;
int size;
config_str users = yon_config_get_all_by_key("USERADD",&size);
for (int i=0;i<size;i++){
char *value = yon_char_new(users[i]);
char *login = yon_char_divide_search(value,"\"",-1);
free(yon_char_divide_search(login,"[",-1));
login = yon_char_divide_search(login,"]",-1);
if (value[strlen(value)-1]=='\"') value[strlen(value)-1]='\0';
int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->UsersList),&iter);
for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->UsersList),&iter)){
char *name;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->UsersList),&iter,2,&name,-1);
if (!strcmp(name,login)){
int parsed_size;
config_str parsed = yon_char_parse(value,&parsed_size,":");
gtk_list_store_set(widgets->UsersList,&iter,
1,parsed_size>1?parsed[1]:"",
3,parsed_size>0?parsed[0]:"",
4,parsed_size>2?parsed[2]:"",
5,parsed_size>3?parsed[3]:"",
6,parsed_size>4?parsed[4]:"",
7,parsed_size>5?!strcmp(parsed[5],"x")||!strcmp(parsed[5],"")?DEFAULT_USER_LABEL:SET_PASSWORD_LABEL:NO_PASSWORD_LABEL,
-1);
}
}
}
} }
@ -1304,6 +1337,7 @@ void yon_main_window_complete(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->button3),"clicked",G_CALLBACK(on_standard_groups_open),widgets); g_signal_connect(G_OBJECT(widgets->button3),"clicked",G_CALLBACK(on_standard_groups_open),widgets);
g_signal_connect(G_OBJECT(widgets->button2),"clicked",G_CALLBACK(on_ubl_settings_usergroups_additional_settings_open),widgets); g_signal_connect(G_OBJECT(widgets->button2),"clicked",G_CALLBACK(on_ubl_settings_usergroups_additional_settings_open),widgets);
g_signal_connect(G_OBJECT(widgets->button1),"clicked",G_CALLBACK(on_settings_usergroups_system_open),widgets); g_signal_connect(G_OBJECT(widgets->button1),"clicked",G_CALLBACK(on_settings_usergroups_system_open),widgets);
g_signal_connect(G_OBJECT(widgets->UpdateButton),"clicked",G_CALLBACK(on_config_update),widgets);
g_signal_connect(G_OBJECT(widgets->SaveMenuItem),"activate",G_CALLBACK(on_config_save),widgets); g_signal_connect(G_OBJECT(widgets->SaveMenuItem),"activate",G_CALLBACK(on_config_save),widgets);
g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem),"activate",G_CALLBACK(on_config_global_save),widgets); g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem),"activate",G_CALLBACK(on_config_global_save),widgets);
g_signal_connect(G_OBJECT(widgets->SaveLocalMenuItem),"activate",G_CALLBACK(on_config_local_save),widgets); g_signal_connect(G_OBJECT(widgets->SaveLocalMenuItem),"activate",G_CALLBACK(on_config_local_save),widgets);

@ -763,7 +763,7 @@
<item>/usr/bin/nologin</item> <item>/usr/bin/nologin</item>
<item>/usr/bin/git-shell</item> <item>/usr/bin/git-shell</item>
<item>/usr/bin/zsh</item> <item>/usr/bin/zsh</item>
<item translatable="yes">Set</item> <item id="Set" translatable="yes">Set</item>
</items> </items>
</object> </object>
<packing> <packing>

Loading…
Cancel
Save