Sync with config buttons done

pull/193/head
Ivan Dmitrievich Yartsev 11 months ago
parent c543e08672
commit 3c2e630e5a

@ -149,7 +149,6 @@ void yon_interface_update(main_window *widgets){
if (parameters_size>1&&!strcmp(parameters[1],"x")) parameters[1]=""; if (parameters_size>1&&!strcmp(parameters[1],"x")) parameters[1]="";
char *pars=""; char *pars="";
if (parameters_size>4&&strcmp(parameters[4],"x")&&strcmp(parameters[4],"")){ if (parameters_size>4&&strcmp(parameters[4],"x")&&strcmp(parameters[4],"")){
if (!check_is_password_hash(parameters[4])&&parameters[4][0]!='%'&&parameters[4][1]!='%'){ if (!check_is_password_hash(parameters[4])&&parameters[4][0]!='%'&&parameters[4][1]!='%'){
pars = ENCRYPTED_LABEL; pars = ENCRYPTED_LABEL;
} else { } else {
@ -2110,7 +2109,7 @@ void on_user_save(GtkWidget *self, dictionary *dict){
if (user_shell_active>0){ if (user_shell_active>0){
char *shell_string = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->userShellCombo)); char *shell_string = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->userShellCombo));
if (strcmp(shell_string,SET_LABEL)){ if (strcmp(shell_string,SET_LABEL)){
user_shell = yon_char_unite("--shell ",shell_string,NULL); user_shell = yon_char_unite("--shell ",shell_string," ",NULL);
} else { } else {
user_shell = yon_char_unite("--shell ",(char*)gtk_entry_get_text(GTK_ENTRY(window->userShellEntry)),NULL); user_shell = yon_char_unite("--shell ",(char*)gtk_entry_get_text(GTK_ENTRY(window->userShellEntry)),NULL);
} }
@ -2800,7 +2799,7 @@ void on_config_update(GtkWidget *, main_window *widgets){
void on_user_sync_with_config(GtkWidget *,main_window *widgets){ void on_user_sync_with_config(GtkWidget *,main_window *widgets){
int active = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook)); int active = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook));
switch (active){ switch (active){
case 2: case 2:{
GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore1); GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore1);
GtkTreeIter iter; GtkTreeIter iter;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemTree)),&model,&iter)){ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemTree)),&model,&iter)){
@ -2819,40 +2818,59 @@ void on_user_sync_with_config(GtkWidget *,main_window *widgets){
if (yon_confirmation_dialog_call(widgets->Window,&data)!=GTK_RESPONSE_ACCEPT){ if (yon_confirmation_dialog_call(widgets->Window,&data)!=GTK_RESPONSE_ACCEPT){
return; return;
} }
int size; int user_size;
config_str passwd_users = yon_file_open(users_path,&size); int shadow_size;
int active_usr = yon_char_parsed_strstr(passwd_users,size,target); config_str user = yon_config_load(yon_debug_output("%s\n",get_system_user_command(target)),&user_size);
int cur_size; if (user_size>0){
if (size){ yon_char_remove_last_symbol(user[0],'\n');
yon_char_remove_last_symbol(passwd_users[active_usr],'\n'); free(yon_char_divide_search(user[0],"=",-1));
config_str cur_user = yon_char_parse(passwd_users[active_usr],&cur_size,":"); yon_char_remove_brackets(user[0]);
int final_size=0; char *user_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD(target));
config_str final_user_parsed = NULL; yon_config_register(USERADD(target),user_command,user[0]);
yon_char_parsed_add_or_create_if_exists(final_user_parsed,&final_size,cur_user[4]); }
yon_char_parsed_add_or_create_if_exists(final_user_parsed,&final_size,cur_user[3]); config_str shadow = yon_config_load(yon_debug_output("%s\n",get_system_shadow_command(target)),&shadow_size);
yon_char_parsed_add_or_create_if_exists(final_user_parsed,&final_size,"x"); if (shadow_size>0){
char *extra_groups = yon_char_unite(!yon_char_is_empty(cur_user[6])?"--shell ":"",!yon_char_is_empty(cur_user[6])?cur_user[6]:"",!yon_char_is_empty(cur_user[6])?" ":"",!yon_char_is_empty(cur_user[5])?"--home-dir ":"",!yon_char_is_empty(cur_user[5])?cur_user[5]:"",NULL); yon_char_remove_last_symbol(shadow[0],'\n');
yon_char_parsed_add_or_create_if_exists(final_user_parsed,&final_size,extra_groups); free(yon_char_divide_search(shadow[0],"=",-1));
yon_char_parsed_add_or_create_if_exists(final_user_parsed,&final_size,cur_user[1]); yon_char_remove_brackets(shadow[0]);
char *final_user = yon_char_parsed_to_string(final_user_parsed,final_size,":"); char *shadow_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERSHADOW(target));
if (config(USERADD(target))){ yon_config_register(USERSHADOW(target),shadow_command,shadow[0]);
char *final_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD_SYNC(target));
yon_config_register(USERADD_SYNC(target),final_command,final_user);
} else {
char *final_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD(target));
yon_config_register(USERADD(target),final_command,final_user);
}
// int shadow_size;
// config_str shadow = yon_file_open(shadow_path,&shadow_size);
} }
} }
yon_interface_update((main_window*)widgets); yon_interface_update((main_window*)widgets);
break; }break;
case 3: case 3:{
break; GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore1);
GtkTreeIter iter;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemGroupsTree)),&model,&iter)){
char *target;
gtk_tree_model_get(model,&iter,1,&target,-1);
dialog_confirmation_data data;
if (config(USERADD(target))){
data.action_text = SYSTEM_GROUP_SYNC_CONFIRMATION_LABEL(target);
data.data=NULL;
data.function=NULL;
} else {
data.action_text = SYSTEM_GROUP_ADD_CONFIRMATION_LABEL(target);
data.data=NULL;
data.function=NULL;
}
if (yon_confirmation_dialog_call(widgets->Window,&data)!=GTK_RESPONSE_ACCEPT){
return;
}
int group_size;
config_str group = yon_config_load(get_system_group_command(target),&group_size);
if (group_size>0){
yon_char_remove_last_symbol(group[0],'\n');
free(yon_char_divide_search(group[0],"=",-1));
yon_char_remove_brackets(group[0]);
char *group_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD(target));
yon_config_register(GROUPADD(target),group_command,group[0]);
}
}
}break;
} }
} }

@ -47,6 +47,10 @@
#define get_passwords_command "ubconfig --target global get [users] USERADD[*] GROUPADD[*]" #define get_passwords_command "ubconfig --target global get [users] USERADD[*] GROUPADD[*]"
#define check_is_password_hash(password) system(yon_char_unite("/lib/ublinux/functions is_hash_password '", password,"'",NULL)) #define check_is_password_hash(password) system(yon_char_unite("/lib/ublinux/functions is_hash_password '", password,"'",NULL))
#define get_system_user_command(target) yon_char_unite("/usr/lib/ublinux/functions get_conf_useradd_from_system ",target,NULL)
#define get_system_shadow_command(target) yon_char_unite("/usr/lib/ublinux/functions get_conf_usershadow_from_system ",target,NULL)
#define get_system_group_command(target) yon_char_unite("/usr/lib/ublinux/functions get_conf_groupadd_from_system ",target,NULL)
#define groups_path "/etc/group" #define groups_path "/etc/group"
#define users_path "/etc/passwd" #define users_path "/etc/passwd"
#define shadow_path "/etc/shadow" #define shadow_path "/etc/shadow"

@ -53,6 +53,8 @@
#define SYSTEM_USER_ADD_CONFIRMATION_LABEL(target) yon_char_unite(_("This user doesn't exist in configuration. Are you sure want to add user")," ",target," ", _("to configuration?"),NULL) #define SYSTEM_USER_ADD_CONFIRMATION_LABEL(target) yon_char_unite(_("This user doesn't exist in configuration. Are you sure want to add user")," ",target," ", _("to configuration?"),NULL)
#define SYSTEM_USER_SYNC_CONFIRMATION_LABEL(target) yon_char_unite(_("This user exists in configuration. Are you sure want to update user")," ",target," ", _("data at configuration?"),NULL) #define SYSTEM_USER_SYNC_CONFIRMATION_LABEL(target) yon_char_unite(_("This user exists in configuration. Are you sure want to update user")," ",target," ", _("data at configuration?"),NULL)
#define SYSTEM_GROUP_SYNC_CONFIRMATION_LABEL(target) yon_char_unite(_("This group doesn't exist in configuration. Are you sure want to add group")," ",target," ", _("to configuration?"),NULL)
#define SYSTEM_GROUP_ADD_CONFIRMATION_LABEL(target) yon_char_unite(_("This group exists in configuration. Are you sure want to update group")," ",target," ", _("data at configuration?"),NULL)
//ubl-settings-usergroups-additional-settings.glade //ubl-settings-usergroups-additional-settings.glade

Loading…
Cancel
Save