Added sync with config functions; User's primary group syncs with configuration with user

pull/276/head
parent ea464151a7
commit aff5cb8edf
No known key found for this signature in database
GPG Key ID: FF1D842BF4DDE92B

@ -640,32 +640,9 @@ void on_user_save(GtkWidget *self, dictionary *dict){
on_subwindow_close(self);
}
void on_user_sync_with_config(GtkWidget *,main_window *widgets){
int active = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook));
switch (active){
case 2:{
GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore1);
GtkTreeIter iter,child;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemTree)),&model,&iter)){
char *target;
yon_tree_model_sort_filter_get_model_iter(GTK_TREE_MODEL_SORT(model),&iter,&child);
gtk_tree_model_get(GTK_TREE_MODEL(widgets->liststore1),&child,2,&target,-1);
dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
if (config(USERADD(target))){
data->action_text = SYSTEM_USER_SYNC_CONFIRMATION_LABEL(target);
data->data=NULL;
data->function=NULL;
} else {
data->action_text = SYSTEM_USER_ADD_CONFIRMATION_LABEL(target);
data->data=NULL;
data->function=NULL;
}
if (yon_confirmation_dialog_call(widgets->Window,data)!=GTK_RESPONSE_ACCEPT){
return;
}
char *user = yon_char_parsed_check_exist_begins_with(main_config.users,main_config.users_size,target);
char *shadow = yon_char_parsed_check_exist_begins_with(main_config.shadow,main_config.shadow_size,target);
int yon_system_user_sync(char *target_user){
char *user = yon_char_parsed_check_exist_begins_with(main_config.users,main_config.users_size,target_user);
char *shadow = yon_char_parsed_check_exist_begins_with(main_config.shadow,main_config.shadow_size,target_user);
yon_char_remove_last_symbol(user,'\n');
yon_char_remove_last_symbol(shadow,'\n');
int user_size=0;
@ -696,18 +673,70 @@ void on_user_sync_with_config(GtkWidget *,main_window *widgets){
free(optionals);
if (!yon_char_is_empty(config_user)){
char *user_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD(target));
yon_config_register(USERADD(target),user_command,config_user);
char *user_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD(target_user));
yon_config_register(USERADD(target_user),user_command,config_user);
free(config_user);
}
} else return 0;
if (!yon_char_is_empty(config_shadow)){
char *shadow_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERSHADOW(target));
yon_config_register(USERSHADOW(target),shadow_command,config_shadow);
char *shadow_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERSHADOW(target_user));
yon_config_register(USERSHADOW(target_user),shadow_command,config_shadow);
free(config_shadow);
} else return 0;
return 1;
}
int yon_system_group_sync(char *target_group){
char *group = yon_char_parsed_check_exist_begins_with(main_config.groups,main_config.groups_size,target_group);
char *group_shadow = yon_char_parsed_check_exist_begins_with(main_config.group_shadow,main_config.group_shadow_size,target_group);
yon_char_remove_last_symbol(group,'\n');
yon_char_remove_last_symbol(group_shadow,'\n');
int group_size=0;
int group_shadow_size=0;
config_str parsed = yon_char_parse(group,&group_size,":");
config_str parsed_shadow = yon_char_parse(group_shadow,&group_shadow_size,":");
char *config_group = yon_char_unite(yon_char_return_if_exist(parsed[3],""),
":",yon_char_return_if_exist(parsed[2],""),
"::",yon_char_return_if_exist(parsed_shadow[2],""),
":",strcmp(parsed[1],"x")?yon_char_return_if_exist(parsed[1],""):yon_char_return_if_exist(parsed_shadow[1],""),
NULL);
if (!yon_char_is_empty(config_group)){
char *group_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",GROUPADD(target_group));
yon_config_register(GROUPADD(target_group),group_command,config_group);
} else return 0;
return 1;
}
void on_user_sync_with_config(GtkWidget *,main_window *widgets){
int active = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook));
switch (active){
case 2:{
GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore1);
GtkTreeIter iter,child;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemTree)),&model,&iter)){
char *target, *group;
yon_tree_model_sort_filter_get_model_iter(GTK_TREE_MODEL_SORT(model),&iter,&child);
gtk_tree_model_get(GTK_TREE_MODEL(widgets->liststore1),&child,2,&target,4,&group,-1);
dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
if (config(USERADD(target))){
data->action_text = SYSTEM_USER_SYNC_CONFIRMATION_LABEL(target);
data->data=NULL;
data->function=NULL;
} else {
data->action_text = SYSTEM_USER_ADD_CONFIRMATION_LABEL(target);
data->data=NULL;
data->function=NULL;
}
if (yon_confirmation_dialog_call(widgets->Window,data)!=GTK_RESPONSE_ACCEPT){
return;
}
if (yon_system_user_sync(target)) {
yon_system_group_sync(group);
yon_interface_update(widgets);
}
yon_interface_update((main_window*)widgets);
}
}break;
case 3:{
GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore1);
@ -730,26 +759,11 @@ void on_user_sync_with_config(GtkWidget *,main_window *widgets){
if (yon_confirmation_dialog_call(widgets->Window,data)!=GTK_RESPONSE_ACCEPT){
return;
}
char *group = yon_char_parsed_check_exist_begins_with(main_config.groups,main_config.groups_size,target);
char *group_shadow = yon_char_parsed_check_exist_begins_with(main_config.group_shadow,main_config.group_shadow_size,target);
yon_char_remove_last_symbol(group,'\n');
yon_char_remove_last_symbol(group_shadow,'\n');
int group_size=0;
int group_shadow_size=0;
config_str parsed = yon_char_parse(group,&group_size,":");
config_str parsed_shadow = yon_char_parse(group_shadow,&group_shadow_size,":");
char *config_group = yon_char_unite(yon_char_return_if_exist(parsed[3],""),
":",yon_char_return_if_exist(parsed[2],""),
"::",yon_char_return_if_exist(parsed_shadow[2],""),
":",strcmp(parsed[1],"x")?yon_char_return_if_exist(parsed[1],""):yon_char_return_if_exist(parsed_shadow[1],""),
NULL);
if (!yon_char_is_empty(config_group)){
char *group_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",GROUPADD(target));
yon_config_register(GROUPADD(target),group_command,config_group);
if (yon_system_group_sync(target)){
yon_interface_update(widgets);
}
}
}break;
}
}

@ -622,4 +622,6 @@ void yon_shutdown_toggled(GtkWidget *self,ubl_settings_usergroups_additional_set
void yon_gtk_tree_view_select_first(GtkTreeView *target);
void on_date_format_changed(GtkWidget *, main_window *widgets);
char *yon_user_get_system_groups(char *target_login);
int yon_system_group_sync(char *group);
int yon_system_user_sync(char *user);
#endif
Loading…
Cancel
Save