@ -226,7 +226,7 @@ void on_config_local_load(GtkWidget *, main_window *widgets){
textdomain ( template_ui_LocaleName ) ;
textdomain ( template_ui_LocaleName ) ;
yon_ubl_status_box_render ( LOCAL_LOAD_SUCCESS_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
yon_ubl_status_box_render ( LOCAL_LOAD_SUCCESS_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
textdomain ( LocaleName ) ;
textdomain ( LocaleName ) ;
main_config . load_mode = 1 ;
main_config . load_mode = YON_CONFIG_LOCAL ;
yon_interface_update ( widgets ) ;
yon_interface_update ( widgets ) ;
}
}
@ -235,7 +235,7 @@ void on_config_global_load(GtkWidget *, main_window *widgets){
textdomain ( template_ui_LocaleName ) ;
textdomain ( template_ui_LocaleName ) ;
yon_ubl_status_box_render ( GLOBAL_LOAD_SUCCESS_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
yon_ubl_status_box_render ( GLOBAL_LOAD_SUCCESS_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
textdomain ( LocaleName ) ;
textdomain ( LocaleName ) ;
main_config . load_mode = 0 ;
main_config . load_mode = YON_CONFIG_GLOBAL ;
yon_interface_update ( widgets ) ;
yon_interface_update ( widgets ) ;
}
}
@ -244,7 +244,7 @@ void on_config_custom_load(GtkWidget *,main_window *widgets){
textdomain ( template_ui_LocaleName ) ;
textdomain ( template_ui_LocaleName ) ;
yon_ubl_status_box_render ( GLOBAL_LOAD_SUCCESS_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
yon_ubl_status_box_render ( GLOBAL_LOAD_SUCCESS_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
textdomain ( LocaleName ) ;
textdomain ( LocaleName ) ;
main_config . load_mode = 3 ;
main_config . load_mode = YON_CONFIG_CUSTOM ;
yon_interface_update ( widgets ) ;
yon_interface_update ( widgets ) ;
}
}
@ -395,7 +395,7 @@ void yon_hide_passwords(template_saving_window *window){
free ( yon_char_divide ( new_value , 1 ) ) ;
free ( yon_char_divide ( new_value , 1 ) ) ;
newv = new_value ;
newv = new_value ;
} else if ( ! yon_char_is_empty ( new_value ) & & new_value [ 0 ] = = ' $ ' ) {
} else if ( ! yon_char_is_empty ( new_value ) & & new_value [ 0 ] = = ' $ ' ) {
if ( main_config . load_mode = = 1 ) {
if ( main_config . load_mode = = YON_CONFIG_LOCAL ) {
newv = new_value ;
newv = new_value ;
} else {
} else {
newv = " ******* " ;
newv = " ******* " ;
@ -404,7 +404,7 @@ void yon_hide_passwords(template_saving_window *window){
newv = " ******* " ;
newv = " ******* " ;
}
}
if ( ! yon_char_is_empty ( old_value ) ) {
if ( ! yon_char_is_empty ( old_value ) ) {
if ( main_config . load_mode = = 1 ) {
if ( main_config . load_mode = = YON_CONFIG_LOCAL ) {
old = yon_char_new ( " <s>*******</s> " ) ;
old = yon_char_new ( " <s>*******</s> " ) ;
} else {
} else {
@ -421,7 +421,7 @@ void yon_hide_passwords(template_saving_window *window){
free ( yon_char_divide ( new_value , 1 ) ) ;
free ( yon_char_divide ( new_value , 1 ) ) ;
newv = new_value ;
newv = new_value ;
} else if ( ! yon_char_is_empty ( new_value ) & & new_value [ 0 ] = = ' $ ' ) {
} else if ( ! yon_char_is_empty ( new_value ) & & new_value [ 0 ] = = ' $ ' ) {
if ( main_config . load_mode = = 1 ) {
if ( main_config . load_mode = = YON_CONFIG_LOCAL ) {
newv = new_value ;
newv = new_value ;
} else {
} else {
newv = " ******* " ;
newv = " ******* " ;
@ -430,7 +430,7 @@ void yon_hide_passwords(template_saving_window *window){
newv = " ******* " ;
newv = " ******* " ;
}
}
if ( ! yon_char_is_empty ( old_value ) ) {
if ( ! yon_char_is_empty ( old_value ) ) {
if ( main_config . load_mode = = 1 ) {
if ( main_config . load_mode = = YON_CONFIG_LOCAL ) {
old = yon_char_new ( " <s>*******</s> " ) ;
old = yon_char_new ( " <s>*******</s> " ) ;
} else {
} else {
old = yon_char_unite ( " <s> " , old_value , " </s> " , NULL ) ;
old = yon_char_unite ( " <s> " , old_value , " </s> " , NULL ) ;
@ -451,7 +451,7 @@ void on_save_done(main_window *widgets, config_str output, int size){
}
}
yon_char_parsed_free ( output , size ) ;
yon_char_parsed_free ( output , size ) ;
on_config_update ( NULL , widgets ) ;
on_config_update ( NULL , widgets ) ;
if ( main_config . load_mode = = 1 ) {
if ( main_config . load_mode = = YON_CONFIG_LOCAL ) {
yon_accept_changes ( ) ;
yon_accept_changes ( ) ;
yon_samba_sync_proceed ( ) ;
yon_samba_sync_proceed ( ) ;
}
}
@ -593,62 +593,159 @@ void on_delete_confirmation_delete_check(GtkCellRenderer *, char *path, yon_conf
}
}
char * yon_user_get_group_string ( char * user ) {
char * cur_user = config ( USERADD ( user ) ) ;
int size ;
config_str parsed = yon_char_parse ( cur_user , & size , " : " ) ;
if ( size > 2 & & ! yon_char_is_empty ( parsed [ 2 ] ) ) {
char * current_group = parsed [ 2 ] ;
size_t digits = 0 ;
for ( guint k = 0 ; k < strlen ( current_group ) ; k + + ) {
if ( g_ascii_isdigit ( current_group [ k ] ) ) {
digits + + ;
}
}
char * final_group_name = NULL ;
if ( digits & & digits = = strlen ( current_group ) ) {
for ( int i = 0 ; i < main_config . groups_size ; i + + ) {
int group_size = 0 ;
config_str groups_parsed = yon_char_parse ( main_config . groups [ i ] , & group_size , " : " ) ;
if ( group_size > 2 & & ! strcmp ( groups_parsed [ 2 ] , current_group ) ) {
final_group_name = yon_char_new ( groups_parsed [ 0 ] ) ;
if ( group_size ) yon_char_parsed_free ( groups_parsed , group_size ) ;
break ;
}
if ( group_size ) yon_char_parsed_free ( groups_parsed , group_size ) ;
}
} else {
final_group_name = yon_char_new ( current_group ) ;
}
return final_group_name ;
} else {
return user ;
}
return NULL ;
}
char * yon_user_check_groups ( GtkListStore * list , char * target ) {
char * final = " " ;
GtkTreeIter iter ;
GtkTreeModel * model = GTK_TREE_MODEL ( list ) ;
for_iter ( model , & iter ) {
char * name ;
char * group ;
gtk_tree_model_get ( model , & iter , 1 , & name , 6 , & group , - 1 ) ;
if ( ! strcmp ( group , target ) & & strcmp ( name , target ) ) {
char * temp = yon_char_unite ( final , ! yon_char_is_empty ( final ) ? " , " : " " , name , NULL ) ;
if ( ! yon_char_is_empty ( final ) ) free ( final ) ;
final = temp ;
}
}
return ! yon_char_is_empty ( final ) ? final : NULL ;
}
void yon_delete_confirmation_save ( GtkWidget * self , dictionary * dict ) {
void yon_delete_confirmation_save ( GtkWidget * self , dictionary * dict ) {
GtkTreeIter iter , itar ;
// GtkTreeIter iter,itar;
main_window * widgets = yon_dictionary_get_data ( dict - > first , main_window * ) ;
main_window * widgets = yon_dictionary_get_data ( dict - > first , main_window * ) ;
yon_confirmation_window * window = yon_dictionary_get_data ( dict - > first - > next , yon_confirmation_window * ) ;
yon_confirmation_window * window = yon_dictionary_get_data ( dict - > first - > next , yon_confirmation_window * ) ;
int valid = gtk_tree_model_get_iter_first ( GTK_TREE_MODEL ( widgets - > UsersList ) , & iter ) ;
// 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 ) ) {
// for (;valid;valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->UsersList),&iter)){
char * name ;
// char *name;
gtk_tree_model_get ( GTK_TREE_MODEL ( widgets - > UsersList ) , & iter , 2 , & name , - 1 ) ;
// gtk_tree_model_get(GTK_TREE_MODEL(widgets->UsersList),&iter,2,&name,-1);
int valid2 = gtk_tree_model_get_iter_first ( GTK_TREE_MODEL ( window - > list ) , & itar ) ;
// int valid2 = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&itar);
for ( ; valid2 ; valid2 = gtk_tree_model_iter_next ( GTK_TREE_MODEL ( window - > list ) , & itar ) ) {
// for (;valid2;valid2 = gtk_tree_model_iter_next(GTK_TREE_MODEL(window->list),&itar)){
char * name_check ;
// char *name_check;
int status , delete ;
// int status,delete;
gtk_tree_model_get ( GTK_TREE_MODEL ( window - > list ) , & itar , 0 , & delete , 1 , & name_check , 3 , & status , - 1 ) ;
// gtk_tree_model_get(GTK_TREE_MODEL(window->list),&itar,0,&delete,1,&name_check,3,&status,-1);
if ( ! strcmp ( name , name_check ) & & delete ) {
// if (!strcmp(name,name_check)&&delete){
// char *user = config(USERADD(name));
// gtk_list_store_remove(widgets->UsersList,&iter);
// int size;
// yon_config_remove_by_key(USERADD(name));
// config_str parsed = yon_char_parse(user,&size,":");
// yon_config_remove_by_key(USERSHADOW(name));
// if (size>3&&(strcmp(parsed[3],name)&&strcmp(parsed[2],parsed[3]))){
// yon_config_register(USERADD_SYNC(name),USERADD_SYNC_command(name),"");
// yon_ubl_status_box_spawn_infinite(window->)
// yon_config_remove_by_key(USERADD_SYNC(name));
// yon_config_remove_by_key(USERSHADOW_SYNC(name));
// gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->UsersList),&iter);
// if (status){
// if (yon_char_parsed_check_exist(main_config.remove_homes,main_config.homes_size,name)==-1){
// yon_char_parsed_add_or_create_if_exists(main_config.remove_homes,&main_config.homes_size,name);
// }
// }
gtk_list_store_remove ( widgets - > UsersList , & iter ) ;
// }
yon_config_remove_by_key ( USERADD ( name ) ) ;
// }
yon_config_remove_by_key ( USERSHADOW ( name ) ) ;
// }
yon_config_register ( USERADD_SYNC ( name ) , USERADD_SYNC_command ( name ) , " " ) ;
// }
yon_config_remove_by_key ( USERADD_SYNC ( name ) ) ;
yon_config_remove_by_key ( USERSHADOW_SYNC ( name ) ) ;
GtkTreeIter iter ;
gtk_tree_model_get_iter_first ( GTK_TREE_MODEL ( widgets - > UsersList ) , & iter ) ;
GtkTreeModel * model = GTK_TREE_MODEL ( window - > list ) ;
if ( status ) {
char * single_target = NULL ;
if ( yon_char_parsed_check_exist ( main_config . remove_homes , main_config . homes_size , name ) = = - 1 ) {
int founds = 0 ;
yon_char_parsed_add_or_create_if_exists ( main_config . remove_homes , & main_config . homes_size , name ) ;
char * depends = NULL ;
}
for_iter ( model , & iter ) {
int selected ;
char * target ;
char * group ;
gtk_tree_model_get ( model , & iter , 0 , & selected , 1 , & target , 6 , & group , - 1 ) ;
if ( selected ) {
if ( ( ! strcmp ( target , group ) ) ) {
depends = yon_user_check_groups ( window - > list , target ) ;
if ( ! yon_char_is_empty ( depends ) ) {
single_target = target ;
founds + + ;
}
}
}
}
}
}
}
}
char * name ;
if ( founds = = 1 ) {
if ( gtk_tree_model_get_iter_first ( GTK_TREE_MODEL ( widgets - > UsersList ) , & iter ) ) {
dialog_confirmation_data * data = yon_confirmation_dialog_data_new ( ) ;
gtk_tree_model_get ( GTK_TREE_MODEL ( widgets - > UsersList ) , & iter , 2 , & name , - 1 ) ;
data - > action_text = CONFIRMATION_GROUP_DEPENDS_SINGLE_LABEL ( single_target , depends ) ;
int valid2 = gtk_tree_model_get_iter_first ( GTK_TREE_MODEL ( window - > list ) , & itar ) ;
if ( yon_confirmation_dialog_call ( window - > Window , data ) ! = GTK_RESPONSE_ACCEPT ) {
for ( ; valid2 ; valid2 = gtk_tree_model_iter_next ( GTK_TREE_MODEL ( window - > list ) , & itar ) ) {
return ;
char * name_check ;
int status , delete ;
gtk_tree_model_get ( GTK_TREE_MODEL ( window - > list ) , & itar , 0 , & delete , 1 , & name_check , 3 , & status , - 1 ) ;
if ( ! strcmp ( name , name_check ) & & delete ) {
gtk_list_store_remove ( widgets - > UsersList , & iter ) ;
yon_config_remove_by_key ( USERADD ( name ) ) ;
yon_config_remove_by_key ( USERSHADOW ( name ) ) ;
gtk_tree_model_get_iter_first ( GTK_TREE_MODEL ( widgets - > UsersList ) , & iter ) ;
if ( status ) {
if ( yon_char_parsed_check_exist ( main_config . remove_homes , main_config . homes_size , name ) = = - 1 ) {
yon_char_parsed_add_or_create_if_exists ( main_config . remove_homes , & main_config . homes_size , name ) ;
}
}
} else if ( founds > 1 ) {
dialog_confirmation_data * data = yon_confirmation_dialog_data_new ( ) ;
data - > action_text = CONFIRMATION_GROUP_DEPENDS_MULTIPLE_LABEL ;
if ( yon_confirmation_dialog_call ( window - > Window , data ) ! = GTK_RESPONSE_ACCEPT ) {
return ;
}
}
}
}
for_iter ( model , & iter ) {
int selected ;
char * target ;
gtk_tree_model_get ( model , & iter , 0 , & selected , 1 , & target , - 1 ) ;
if ( selected ) {
yon_config_remove_by_key ( USERADD ( target ) ) ;
yon_config_remove_by_key ( USERSHADOW ( target ) ) ;
yon_config_remove_by_key ( USERADD_SYNC ( target ) ) ;
yon_config_remove_by_key ( USERSHADOW_SYNC ( target ) ) ;
}
}
}
}
yon_interface_update ( widgets ) ;
// char *name;
// if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->UsersList),&iter)){
// gtk_tree_model_get(GTK_TREE_MODEL(widgets->UsersList),&iter,2,&name,-1);
// int valid2 = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&itar);
// for (;valid2;valid2 = gtk_tree_model_iter_next(GTK_TREE_MODEL(window->list),&itar)){
// char *name_check;
// int status,delete;
// gtk_tree_model_get(GTK_TREE_MODEL(window->list),&itar,0,&delete,1,&name_check,3,&status,-1);
// if (!strcmp(name,name_check)&&delete){
// gtk_list_store_remove(widgets->UsersList,&iter);
// yon_config_remove_by_key(USERADD(name));
// yon_config_remove_by_key(USERSHADOW(name));
// gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->UsersList),&iter);
// if (status){
// if (yon_char_parsed_check_exist(main_config.remove_homes,main_config.homes_size,name)==-1){
// yon_char_parsed_add_or_create_if_exists(main_config.remove_homes,&main_config.homes_size,name);
// }
// }
// }
// }
// }
on_subwindow_close ( self ) ;
on_subwindow_close ( self ) ;
}
}
@ -737,8 +834,8 @@ void yon_delete_confirmation_open(main_window *widgets){
}
}
int valid = gtk_tree_model_get_iter_first ( GTK_TREE_MODEL ( widgets - > UsersList ) , & iter ) ;
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 ) ) {
for ( ; valid ; valid = gtk_tree_model_iter_next ( GTK_TREE_MODEL ( widgets - > UsersList ) , & iter ) ) {
char * name , * username , * parameters , * homedir = NULL ;
char * name , * username , * parameters , * homedir = NULL , * group = NULL ;
gtk_tree_model_get ( GTK_TREE_MODEL ( widgets - > UsersList ) , & iter , 2 , & name , 3 , & username , 6, & parameters , - 1 ) ;
gtk_tree_model_get ( GTK_TREE_MODEL ( widgets - > UsersList ) , & iter , 2 , & name , 3 , & username , 4, & group , 6, & parameters , - 1 ) ;
int size ;
int size ;
config_str home = yon_config_load ( get_home_command ( name ) , & size ) ;
config_str home = yon_config_load ( get_home_command ( name ) , & size ) ;
if ( size > 0 & & ! yon_char_is_empty ( home [ 0 ] ) ) {
if ( size > 0 & & ! yon_char_is_empty ( home [ 0 ] ) ) {
@ -751,7 +848,9 @@ void yon_delete_confirmation_open(main_window *widgets){
int status = 0 ;
int status = 0 ;
if ( homedir ) status = 1 ;
if ( homedir ) status = 1 ;
gtk_list_store_append ( window - > list , & itar ) ;
gtk_list_store_append ( window - > list , & itar ) ;
gtk_list_store_set ( window - > list , & itar , 0 , yon_char_parsed_check_exist ( chosen , chosen_size , name ) > - 1 ? 1 : 0 , 1 , name , 2 , homedir , 3 , 0 , 4 , yon_char_parsed_check_exist ( chosen , chosen_size , name ) > - 1 & & status ? 1 : 0 , 5 , username , - 1 ) ;
group = yon_user_get_group_string ( name ) ;
gtk_list_store_set ( window - > list , & itar , 0 , yon_char_parsed_check_exist ( chosen , chosen_size , name ) > - 1 ? 1 : 0 , 1 , name , 2 , homedir , 3 , 0 , 4 , yon_char_parsed_check_exist ( chosen , chosen_size , name ) > - 1 & & status ? 1 : 0 , 5 , username , 6 , group , - 1 ) ;
free ( name ) ;
free ( name ) ;
free ( username ) ;
free ( username ) ;
free ( parameters ) ;
free ( parameters ) ;
@ -1736,7 +1835,7 @@ void on_main_delete(GtkWidget *, main_window *widgets){
}
}
void on_config_update ( GtkWidget * , main_window * widgets ) {
void on_config_update ( GtkWidget * , main_window * widgets ) {
if ( main_config . load_mode = = 0 ) {
if ( main_config . load_mode = = YON_CONFIG_GLOBAL ) {
on_config_global_load ( NULL , widgets ) ;
on_config_global_load ( NULL , widgets ) ;
} else {
} else {
on_config_local_load ( NULL , widgets ) ;
on_config_local_load ( NULL , widgets ) ;
@ -1767,7 +1866,7 @@ void config_init(){
main_config . lock_save_local = 0 ;
main_config . lock_save_local = 0 ;
main_config . groups_size = 0 ;
main_config . groups_size = 0 ;
main_config . users_size = 0 ;
main_config . users_size = 0 ;
main_config . load_mode = 1 ;
main_config . load_mode = YON_CONFIG_LOCAL ;
main_config . hash_default_id = - 1 ;
main_config . hash_default_id = - 1 ;
main_config . save_config = 0 ;
main_config . save_config = 0 ;
main_config . groups = yon_file_open ( groups_path , & main_config . groups_size ) ;
main_config . groups = yon_file_open ( groups_path , & main_config . groups_size ) ;