@ -18,6 +18,7 @@ void yon_interface_update(main_window *widgets){
gtk_list_store_clear ( widgets - > GroupsList ) ;
int size ;
GtkTreeIter iter ;
char * def_groups = yon_config_get_by_key ( " USERGROUPS " ) ;
config_str users = yon_config_get_all_by_key ( " USERADD " , & size ) ;
if ( users ) {
for ( int i = 0 ; i < size ; i + + ) {
@ -40,7 +41,7 @@ void yon_interface_update(main_window *widgets){
3 , parameters_size > 0 ? parameters [ 0 ] : " " ,
1 , parameters_size > 1 ? parameters [ 1 ] : " " ,
4 , parameters_size > 2 ? parameters [ 2 ] : " " ,
5 , parameters_size > 3 ? parameters [ 3 ] : " " ,
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 ] = = ' % ' & & parameters [ 5 ] [ 1 ] = = ' % ' ? UNENCRYPTED_LABEL : ENCRYPTED_LABEL : DEFAULT_USER_LABEL : DEFAULT_USER_LABEL ,
- 1 ) ;
@ -103,8 +104,6 @@ if (main_config.sync_users){
int size ;
config_str parsed = yon_char_parse ( main_config . sync_users [ i ] , & size , " : " ) ;
if ( ! yon_char_is_empty ( parsed [ 1 ] ) ) {
if ( parsed [ 1 ] [ 0 ] = = ' ' & & parsed [ 1 ] [ 1 ] = = ' . ' & & parsed [ 1 ] [ 2 ] = = ' ' )
free ( parsed [ 1 ] = yon_char_divide ( parsed [ 1 ] , 3 ) ) ;
if ( system ( samba_sync_password_command ( parsed [ 0 ] , parsed [ 1 ] ) ) ) { } ;
} else {
@ -127,22 +126,92 @@ void yon_accept_changes(){
}
}
void yon_hide_passwords ( template_saving_window * window ) {
GtkTreeModel * model = GTK_TREE_MODEL ( window - > list ) ;
GtkTreeIter iter ;
int valid = gtk_tree_model_get_iter_first ( model , & iter ) ;
for ( ; valid ; valid = gtk_tree_model_iter_next ( model , & iter ) ) {
char * name ;
char * old_value ;
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 ) ? " <s> " : " " , ! yon_char_is_empty ( old_value ) ? old_value : " " , ! yon_char_is_empty ( old_value ) ? " </s> " : " " , " \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 ) ? " <s> " : " " , ! yon_char_is_empty ( old_value ) ? old_value : " " , ! yon_char_is_empty ( old_value ) ? " </s> " : " " , " \n " , NULL ) ;
gtk_list_store_set ( window - > list , & iter , 7 , new_compare , - 1 ) ;
free ( new_compare ) ;
}
} 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 ) ? " <s> " : " " , ! yon_char_is_empty ( old_value ) ? old_value : " " , ! yon_char_is_empty ( old_value ) ? " </s> " : " " , " \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 ) ? " <s> " : " " , ! yon_char_is_empty ( old_value ) ? old_value : " " , ! yon_char_is_empty ( old_value ) ? " </s> " : " " , " \n " , NULL ) ;
gtk_list_store_set ( window - > list , & iter , 7 , new_compare , - 1 ) ;
free ( new_compare ) ;
}
} else if ( strstr ( name , " DEFAULTPASSWD " ) ) {
if ( ! yon_char_is_empty ( new_value ) & & new_value [ 0 ] ! = ' $ ' & & new_value [ 0 ] ! = ' % ' ) {
char * new_compare = yon_char_unite ( " <s> " , old_value , " </s> \n " , NULL ) ;
gtk_list_store_set ( window - > list , & iter , 7 , new_compare , - 1 ) ;
free ( new_compare ) ;
} else {
char * new_compare = yon_char_unite ( " <s> " , old_value , " </s> \n " , NULL ) ;
gtk_list_store_set ( window - > list , & iter , 7 , new_compare , - 1 ) ;
free ( new_compare ) ;
}
} else if ( strstr ( name , " DEFAULTROOTPASSWD " ) ) {
if ( ! yon_char_is_empty ( new_value ) & & new_value [ 0 ] ! = ' $ ' & & new_value [ 0 ] ! = ' % ' ) {
char * new_compare = yon_char_unite ( " <s> " , old_value , " </s> \n ****** " , NULL ) ;
gtk_list_store_set ( window - > list , & iter , 7 , new_compare , - 1 ) ;
free ( new_compare ) ;
} else {
char * new_compare = yon_char_unite ( " <s> " , old_value , " </s> \n ****** " , NULL ) ;
gtk_list_store_set ( window - > list , & iter , 7 , new_compare , - 1 ) ;
free ( new_compare ) ;
}
}
}
}
void on_config_save ( ) {
yon_accept_changes ( ) ;
yon_samba_sync_proceed ( ) ;
yon_save_proceed ( NULL , YON_CONFIG_BOTH , " users " , " DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*] " , NULL ) ;
template_saving_window * window = yon_save_proceed ( NULL , YON_CONFIG_BOTH , " users " , " DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*] " , NULL ) ;
if ( window ) yon_hide_passwords ( window ) ;
}
void on_config_global_save ( ) {
yon_accept_changes ( ) ;
yon_samba_sync_proceed ( ) ;
yon_save_proceed ( " global " , YON_CONFIG_GLOBAL , " users " , " DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*] " , NULL ) ;
template_saving_window * window = yon_save_proceed ( " global " , YON_CONFIG_GLOBAL , " users " , " DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*] " , NULL ) ;
if ( window ) yon_hide_passwords ( window ) ;
}
void on_config_local_save ( ) {
yon_accept_changes ( ) ;
yon_samba_sync_proceed ( ) ;
yon_save_proceed ( " system " , YON_CONFIG_LOCAL , " users " , " DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*] " , NULL ) ;
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 ) ;
}
void on_saving_settings_save ( GtkWidget * self , yon_savasettings_window * window ) {
@ -229,21 +298,22 @@ void yon_delete_confirmation_save(GtkWidget *self, dictionary *dict){
}
}
char * name ;
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 ) ;
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 ) ;
}
}
}
}
@ -272,6 +342,7 @@ yon_confirmation_window *yon_delete_confirmation_new(){
void yon_delete_confirmation_open ( main_window * widgets ) {
yon_confirmation_window * window = yon_delete_confirmation_new ( ) ;
gtk_window_set_transient_for ( GTK_WINDOW ( window - > Window ) , GTK_WINDOW ( widgets - > Window ) ) ;
GtkTreeIter iter , itar ;
dictionary * dict = NULL ;
yon_dictionary_add_or_create_if_exists_with_data ( dict , " widgets " , widgets ) ;
@ -419,6 +490,12 @@ void on_groups_multiple_clicked(GtkWidget *self, GtkEntry *output_target){
gtk_window_set_title ( GTK_WINDOW ( window - > GroupsWindow ) , ADDITIONAL_GROUPS_TITLE_LABEL ) ;
gtk_label_set_text ( GTK_LABEL ( window - > HeaderLabel ) , ADDITIONAL_GROUPS_TITLE_LABEL ) ;
GtkTreeIter iter , itar ;
char * output = ( char * ) gtk_entry_get_text ( output_target ) ;
int size = 0 ;
config_str parsed = NULL ;
if ( ! yon_char_is_empty ( output ) ) {
parsed = yon_char_parse ( output , & size , " , " ) ;
}
int valid = gtk_tree_model_get_iter_first ( GTK_TREE_MODEL ( main_config . groups_list ) , & iter ) ;
for ( ; valid ; valid = gtk_tree_model_iter_next ( GTK_TREE_MODEL ( main_config . groups_list ) , & iter ) ) {
char * groupname ;
@ -427,6 +504,16 @@ void on_groups_multiple_clicked(GtkWidget *self, GtkEntry *output_target){
gtk_list_store_set ( window - > list , & itar , 1 , groupname , - 1 ) ;
free ( groupname ) ;
}
valid = gtk_tree_model_get_iter_first ( GTK_TREE_MODEL ( window - > list ) , & iter ) ;
for ( ; valid ; valid = gtk_tree_model_iter_next ( GTK_TREE_MODEL ( window - > list ) , & iter ) ) {
char * groupname ;
gtk_tree_model_get ( GTK_TREE_MODEL ( window - > list ) , & iter , 1 , & groupname , - 1 ) ;
if ( parsed ) {
if ( yon_char_parsed_check_exist ( parsed , size , groupname ) > - 1 ) {
gtk_list_store_set ( window - > list , & iter , 0 , 1 , - 1 ) ;
}
}
}
dictionary * dict = NULL ;
yon_dictionary_add_or_create_if_exists_with_data ( dict , " window " , window ) ;
yon_dictionary_add_or_create_if_exists_with_data ( dict , " output " , output_target ) ;
@ -442,11 +529,26 @@ void on_passwords_encrypt(){
}
}
void on_password_change ( GtkWidget * self , dictionary * entry_dict ) {
void on_password_change ( GtkWidget * self , dictionary * entry_dict ) { //
GtkComboBox * combo = yon_dictionary_get_data ( entry_dict - > first , GtkComboBox * ) ;
GtkEntry * output_target = yon_dictionary_get_data ( entry_dict - > first - > next , GtkEntry * ) ;
ubl_settings_usergroups_password_window * window = yon_ubl_settings_usergroups_password_new ( ) ;
dictionary * dict = NULL ;
char * password = ( char * ) gtk_entry_get_text ( output_target ) ;
if ( ! yon_char_is_empty ( password ) ) {
password = yon_char_new ( password ) ;
if ( main_config . load_mode = = 0 ) {
if ( password [ 0 ] = = ' $ ' ) {
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 ) ;
}
}
}
yon_dictionary_add_or_create_if_exists_with_data ( dict , " window " , window ) ;
yon_dictionary_add_or_create_if_exists_with_data ( dict , " target " , output_target ) ;
g_signal_connect ( G_OBJECT ( window - > UserOkButton ) , " clicked " , G_CALLBACK ( on_password_accept ) , dict ) ;
@ -581,13 +683,13 @@ ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_
if ( ! yon_char_is_empty ( default_password ) ) {
gtk_entry_set_text ( GTK_ENTRY ( window - > DefaultPasswordEntry ) , default_password ) ;
if ( ! yon_config_check_ignore ( " DEFAULTPASSWD " ) )
gtk_combo_box_set_active ( GTK_COMBO_BOX ( window - > DefaultPasswordCombo ) , 3 ) ;
gtk_combo_box_set_active ( GTK_COMBO_BOX ( window - > DefaultPasswordCombo ) , 2 ) ;
}
char * root_password = yon_config_get_by_key ( " DEFAULTROOTPASSWD " ) ;
if ( ! yon_char_is_empty ( root_password ) ) {
gtk_entry_set_text ( GTK_ENTRY ( window - > RootPasswordEntry ) , root_password ) ;
if ( ! yon_config_check_ignore ( " DEFAULTROOTPASSWD " ) )
gtk_combo_box_set_active ( GTK_COMBO_BOX ( window - > RootPasswordCombo ) , 3 ) ;
gtk_combo_box_set_active ( GTK_COMBO_BOX ( window - > RootPasswordCombo ) , 2 ) ;
}
char * is_k_admin = yon_config_get_by_key ( " ADDADM " ) ;
if ( ! yon_char_is_empty ( is_k_admin ) )
@ -633,6 +735,12 @@ void on_user_choose(GtkWidget *self, GtkEntry *target){
gtk_label_set_text ( GTK_LABEL ( window - > HeaderLabel ) , GROUP_USERS_TITLE_LABEL ) ;
gtk_label_set_text ( GTK_LABEL ( window - > HeaderLabel ) , GROUP_USERS_TITLE_LABEL ) ;
GtkTreeIter iter , itar ;
char * output = ( char * ) gtk_entry_get_text ( target ) ;
int size = 0 ;
config_str parsed = NULL ;
if ( ! yon_char_is_empty ( output ) ) {
parsed = yon_char_parse ( output , & size , " , " ) ;
}
int valid = gtk_tree_model_get_iter_first ( GTK_TREE_MODEL ( main_config . users_list ) , & iter ) ;
for ( ; valid ; valid = gtk_tree_model_iter_next ( GTK_TREE_MODEL ( main_config . users_list ) , & iter ) ) {
char * groupname ;
@ -641,6 +749,16 @@ void on_user_choose(GtkWidget *self, GtkEntry *target){
gtk_list_store_set ( window - > list , & itar , 1 , groupname , - 1 ) ;
free ( groupname ) ;
}
valid = gtk_tree_model_get_iter_first ( GTK_TREE_MODEL ( window - > list ) , & iter ) ;
for ( ; valid ; valid = gtk_tree_model_iter_next ( GTK_TREE_MODEL ( window - > list ) , & iter ) ) {
char * groupname ;
gtk_tree_model_get ( GTK_TREE_MODEL ( window - > list ) , & iter , 1 , & groupname , - 1 ) ;
if ( parsed ) {
if ( yon_char_parsed_check_exist ( parsed , size , groupname ) > - 1 ) {
gtk_list_store_set ( window - > list , & iter , 0 , 1 , - 1 ) ;
}
}
}
gtk_list_store_new ( 2 , G_TYPE_BOOLEAN , G_TYPE_STRING ) ;
dictionary * dict = NULL ;
yon_dictionary_add_or_create_if_exists_with_data ( dict , " window " , window ) ;
@ -703,6 +821,11 @@ void on_group_save(GtkWidget *self, dictionary *dict){
}
group_name = ( char * ) gtk_entry_get_text ( GTK_ENTRY ( window - > userLoginEntry ) ) ;
if ( group_name [ 0 ] > ' 0 ' & & group_name [ 0 ] < ' 9 ' ) {
yon_ubl_status_box_spawn ( GTK_CONTAINER ( window - > StatusBox ) , GROUP_BEGINS_WITH_DIGIT_LABEL , 5 , BACKGROUND_IMAGE_FAIL_TYPE ) ;
yon_ubl_status_highlight_incorrect ( window - > userLoginEntry ) ;
return ;
}
if ( yon_char_is_empty ( group_name ) ) {
yon_ubl_status_box_spawn ( GTK_CONTAINER ( window - > StatusBox ) , EMPTY_IMPORTANT_LABEL , 5 , BACKGROUND_IMAGE_FAIL_TYPE ) ;
yon_ubl_status_highlight_incorrect ( window - > userLoginEntry ) ;
@ -934,10 +1057,8 @@ void on_password_accept(GtkWidget *self, dictionary *dict){
if ( ! strcmp ( password , password_check ) ) {
if ( gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( window - > NoEncriptionCheck ) ) ) {
char * pasw = yon_char_append ( " %% " , password ) ;
free ( password ) ;
password = pasw ;
}
password = yon_char_append ( " . " , password ) ;
gtk_entry_set_text ( GTK_ENTRY ( entry ) , password ) ;
} else {
yon_ubl_status_box_spawn_infinite ( GTK_CONTAINER ( window - > StatusBox ) , " password_mismatch " , PASSWORD_MISMATCH_LABEL , BACKGROUND_IMAGE_FAIL_TYPE ) ;
@ -1200,6 +1321,11 @@ void on_user_save(GtkWidget *self, dictionary *dict){
}
login = ( char * ) gtk_entry_get_text ( GTK_ENTRY ( window - > userLoginEntry ) ) ;
if ( login [ 0 ] > ' 0 ' & & login [ 0 ] < ' 9 ' ) {
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 ;
}
if ( yon_char_is_empty ( login ) ) {
yon_ubl_status_box_spawn ( GTK_CONTAINER ( window - > StatusBox ) , EMPTY_IMPORTANT_LABEL , 5 , BACKGROUND_IMAGE_FAIL_TYPE ) ;
yon_ubl_status_highlight_incorrect ( window - > userLoginEntry ) ;
@ -1214,9 +1340,6 @@ void on_user_save(GtkWidget *self, dictionary *dict){
yon_ubl_status_highlight_incorrect ( window - > userPasswordEntry ) ;
return ;
}
if ( password [ 0 ] = = ' ' & & password [ 1 ] = = ' . ' & & password [ 2 ] = = ' ' ) {
free ( yon_char_divide ( password , 2 ) ) ;
}
} else {
password = " x " ;
}
@ -1241,7 +1364,10 @@ void on_user_save(GtkWidget *self, dictionary *dict){
}
additional_groups = ( char * ) gtk_entry_get_text ( GTK_ENTRY ( window - > userAdditionalGroupsEntry ) ) ;
char * default_groups = yon_config_get_by_key ( " USERGROUPS " ) ;
if ( ! yon_char_is_empty ( default_groups ) & & ! strcmp ( default_groups , additional_groups ) ) {
additional_groups = " " ;
}
long password_change_interval_minimum_active = gtk_spin_button_get_value ( GTK_SPIN_BUTTON ( window - > userPasswordChangeDelayMinimumSpin ) ) ;
if ( password_change_interval_minimum_active > 0 ) {
password_change_interval_minimum = yon_char_from_long ( password_change_interval_minimum_active ) ;
@ -1368,18 +1494,33 @@ void on_user_save(GtkWidget *self, dictionary *dict){
" : " , yon_char_return_if_exist ( password , " x " ) ,
" : " , yon_char_return_if_exist ( extra_options , " " ) ,
NULL ) ;
yon_config_register ( USERADD ( login ) , " users " , final_user ) ;
if ( ! yon_char_is_empty ( window - > old_username ) & & strcmp ( window - > old_username , login ) ) {
yon_config_remove_by_key ( USERADD ( window - > old_username ) ) ;
}
yon_config_register ( USERSHADOW ( login ) , " users " , shadow_string ) ;
if ( ! yon_char_is_empty ( window - > old_username ) & & strcmp ( window - > old_username , login ) ) {
yon_config_remove_by_key ( USERSHADOW ( window - > old_username ) ) ;
}
int home_delete = yon_char_parsed_check_exist ( main_config . remove_homes , main_config . homes_size , login ) ;
if ( home_delete > - 1 ) {
yon_char_parsed_rip ( main_config . remove_homes , & main_config . homes_size , home_delete ) ;
}
if ( ! yon_char_is_empty ( useradd_sync_string ) )
if ( ! yon_char_is_empty ( useradd_sync_string ) ) {
yon_config_register ( USERADD_SYNC ( login ) , " users " , useradd_sync_string ) ;
if ( ! yon_char_is_empty ( window - > old_username ) & & strcmp ( window - > old_username , login ) ) {
yon_config_remove_by_key ( USERADD_SYNC ( window - > old_username ) ) ;
}
}
if ( ! yon_char_is_empty ( usershadow_sync_string ) )
if ( ! yon_char_is_empty ( usershadow_sync_string ) ) {
yon_config_register ( USERSHADOW_SYNC ( login ) , " users " , usershadow_sync_string ) ;
if ( ! yon_char_is_empty ( window - > old_username ) & & strcmp ( window - > old_username , login ) ) {
yon_config_remove_by_key ( USERSHADOW_SYNC ( window - > old_username ) ) ;
}
}
GtkTreeIter iter ;
GtkTreeModel * model = GTK_TREE_MODEL ( widgets - > UsersList ) ;
char * password_status = NULL ;
@ -1394,7 +1535,7 @@ void on_user_save(GtkWidget *self, dictionary *dict){
2 , yon_char_return_if_exist ( login , " " ) ,
3 , yon_char_return_if_exist ( username , " " ) ,
4 , yon_char_return_if_exist ( main_group , login ) ,
5 , yon_char_return_if_exist ( additional_groups , " ") ,
5 , yon_char_return_if_exist ( additional_groups , yon_config_get_by_key ( " USERGROUPS ") ) ,
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 , password_status ,
- 1 ) ;
@ -1403,7 +1544,7 @@ void on_user_save(GtkWidget *self, dictionary *dict){
void on_toggle_button_set_active_from_combo_box ( GtkComboBox * self , ubl_settings_usergroups_user_window * window ) {
char * passw = ( char * ) gtk_entry_get_text ( GTK_ENTRY ( window - > userPasswordEntry ) ) ;
if ( gtk_combo_box_get_active ( self ) < = 1 | | ( passw [ 0 ] != ' ' & & passw [ 1 ] ! = ' . ' & & passw [ 2 ] ! = ' ' ) ) {
if ( gtk_combo_box_get_active ( self ) < = 1 | | ( passw [ 0 ] == ' $ ' ) ) {
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( window - > userSyncSAMBACheck ) , 0 ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( window - > userSyncSAMBAPasswordCheck ) , 0 ) ;
gtk_widget_set_sensitive ( GTK_WIDGET ( window - > userSyncSAMBAPasswordCheck ) , 0 ) ;
@ -1418,7 +1559,7 @@ void on_toggle_button_set_active_from_combo_box(GtkComboBox *self,ubl_settings_u
void on_password_user_changed ( GtkComboBox * self , ubl_settings_usergroups_user_window * window ) {
char * passw = ( char * ) gtk_entry_get_text ( GTK_ENTRY ( window - > userPasswordEntry ) ) ;
if ( ( passw [ 0 ] != ' ' & & passw [ 1 ] ! = ' . ' & & passw [ 2 ] ! = ' ' ) ) {
if ( ( passw [ 0 ] == ' $ ' ) ) {
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( window - > userSyncSAMBACheck ) , 0 ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( window - > userSyncSAMBAPasswordCheck ) , 0 ) ;
gtk_widget_set_sensitive ( GTK_WIDGET ( window - > userSyncSAMBAPasswordCheck ) , 0 ) ;
@ -1433,7 +1574,7 @@ void on_password_user_changed(GtkComboBox *self,ubl_settings_usergroups_user_win
void on_toggle_button_set_active_from_toggle_button_inversed ( GtkToggleButton * self , ubl_settings_usergroups_user_window * window ) {
char * passw = ( char * ) gtk_entry_get_text ( GTK_ENTRY ( window - > userPasswordEntry ) ) ;
if ( ( passw [ 0 ] == ' ' & & passw [ 1 ] = = ' . ' & & passw [ 2 ] = = ' ' ) & & gtk_combo_box_get_active ( GTK_COMBO_BOX ( window - > userPasswordCombo ) ) > 1 ) {
if ( ( passw [ 0 ] != ' $ ' ) & & gtk_combo_box_get_active ( GTK_COMBO_BOX ( window - > userPasswordCombo ) ) > 1 ) {
if ( gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( window - > userSyncSAMBACheck ) ) ) {
gtk_widget_set_sensitive ( GTK_WIDGET ( window - > userSyncSAMBAPasswordCheck ) , 0 ) ;
} else if ( gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( window - > userSyncSAMBAPasswordCheck ) ) ) {
@ -1524,10 +1665,12 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){
yon_char_parsed_free ( shells , shell_size ) ;
gtk_combo_box_set_active ( GTK_COMBO_BOX ( window - > userShellCombo ) , 0 ) ;
window - > old_password = NULL ;
window - > old_username = NULL ;
dictionary * entry_dict = NULL ;
yon_window_config_custom_window_setup ( GTK_WINDOW ( window - > CreateUserWindow ) , " UserWindow " ) ;
yon_dictionary_add_or_create_if_exists_with_data ( entry_dict , " combo " , window - > userPasswordCombo ) ;
yon_dictionary_add_or_create_if_exists_with_data ( entry_dict , " entry " , window - > userPasswordEntry ) ;
char * password = yon_config_get_by_key ( USERADD ( ( char * ) gtk_entry_get_text ( GTK_ENTRY ( window - > userLoginEntry ) ) ) ) ;
g_signal_connect ( G_OBJECT ( window - > UserCancelButton ) , " clicked " , G_CALLBACK ( on_subwindow_close ) , NULL ) ;
g_signal_connect ( G_OBJECT ( window - > userUIDAutoCheck ) , " toggled " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button_inversed ) , window - > userUIDEntry ) ;
g_signal_connect ( G_OBJECT ( window - > userHomeButton ) , " clicked " , G_CALLBACK ( on_filechooser_open ) , window - > userHomeEntry ) ;
@ -1571,6 +1714,8 @@ void on_main_add(GtkWidget *self, main_window *widgets){
ubl_settings_usergroups_user_window * window = yon_ubl_settings_usergroups_user_new ( ) ;
gtk_window_set_title ( GTK_WINDOW ( window - > CreateUserWindow ) , ADD_USER_TITLE_LABEL ) ;
gtk_label_set_text ( GTK_LABEL ( window - > userTitleNameLabel ) , ADD_USER_TITLE_LABEL ) ;
char * default_groups = yon_config_get_by_key ( " USERGROUPS " ) ;
gtk_entry_set_text ( GTK_ENTRY ( window - > userAdditionalGroupsEntry ) , default_groups ) ;
dictionary * dict = NULL ;
yon_dictionary_add_or_create_if_exists_with_data ( dict , " widgets " , widgets ) ;
yon_dictionary_add_or_create_if_exists_with_data ( dict , " window " , window ) ;
@ -1620,6 +1765,7 @@ void on_main_edit(GtkWidget *self, main_window *widgets){
gtk_entry_set_text ( GTK_ENTRY ( window - > userLoginEntry ) , name ) ;
gtk_entry_set_text ( GTK_ENTRY ( window - > userGroupsEntry ) , name ) ;
gtk_entry_set_text ( GTK_ENTRY ( window - > userUserNameEntry ) , parsed_size > 0 ? parameters [ 0 ] : " " ) ;
window - > old_username = name ;
if ( parsed_size > 1 ) {
if ( strcmp ( parameters [ 1 ] , " x " ) ) {
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( window - > userUIDAutoCheck ) , 0 ) ;
@ -1633,8 +1779,12 @@ void on_main_edit(GtkWidget *self, main_window *widgets){
gtk_entry_set_text ( GTK_ENTRY ( window - > userGroupsEntry ) , parsed_size > 2 ? parameters [ 2 ] : " " ) ;
}
if ( parsed_size > 3 ) {
if ( strcmp ( parameters [ 3 ] , " x " ) )
gtk_entry_set_text ( GTK_ENTRY ( window - > userAdditionalGroupsEntry ) , parsed_size > 3 ? parameters [ 3 ] : " " ) ;
if ( strcmp ( parameters [ 3 ] , " x " ) ) {
gtk_entry_set_text ( GTK_ENTRY ( window - > userAdditionalGroupsEntry ) , parameters [ 3 ] ) ;
} else {
char * default_groups = yon_config_get_by_key ( " USERGROUPS " ) ;
gtk_entry_set_text ( GTK_ENTRY ( window - > userAdditionalGroupsEntry ) , default_groups ) ;
}
}
if ( parsed_size > 4 & & ! yon_char_is_empty ( parameters [ 4 ] ) ) {
@ -1836,7 +1986,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 = 1 ;
main_config . load_mode = 0 ;
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 ) ;
@ -1954,19 +2104,7 @@ main_window *yon_main_window_complete(main_window *widgets){
widgets - > MainNotebook = yon_gtk_builder_get_widget ( builder , " MainNotebook " ) ;
widgets - > SavingSettingsButton = yon_gtk_builder_get_widget ( builder , " SavingSettingsButton " ) ;
gtk_style_context_add_class ( gtk_widget_get_style_context ( widgets - > DocumentationMenuItem ) , " menuitemmiddlemargin " ) ;
if ( main_config . lock_load_global = = 1 ) {
gtk_widget_set_sensitive ( widgets - > LoadGlobalMenuItem , 0 ) ;
}
if ( main_config . lock_save_global = = 1 ) {
gtk_widget_set_sensitive ( widgets - > SaveGlobalMenuItem , 0 ) ;
gtk_widget_set_sensitive ( widgets - > SaveMenuItem , 0 ) ;
}
if ( main_config . lock_save_local = = 1 ) {
gtk_widget_set_sensitive ( widgets - > SaveLocalMenuItem , 0 ) ;
gtk_widget_set_sensitive ( widgets - > SaveMenuItem , 0 ) ;
}
main_config . users_list = widgets - > UsersList ;
main_config . groups_list = widgets - > GroupsList ;
@ -1988,7 +2126,8 @@ 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 ) ;
yon_load_proceed ( YON_CONFIG_LOCAL ) ;
main_config . load_mode = 0 ;
yon_load_proceed ( YON_CONFIG_GLOBAL ) ;
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 ) ) ;
@ -2010,83 +2149,16 @@ return widgets;
int main ( int argc , char * argv [ ] ) {
local = setlocale ( LC_ALL , " " ) ;
textdomain ( LocaleName ) ;
config_init ( ) ;
int option_index = 0 ;
int show_help = 0 ;
int debug_mode = 0 ;
{
struct option long_options [ ] = {
{ " help " , 0 , 0 , ' h ' } ,
{ " version " , 0 , 0 , ' V ' } ,
{ " lock-help " , 0 , 0 , 1 } ,
{ " lock-save " , 0 , 0 , 2 } ,
{ " lock-save-local " , 0 , 0 , 3 } ,
{ " lock-save-global " , 0 , 0 , 4 } ,
{ " lock-load-global " , 0 , 0 , 5 } ,
{ " socket-id " , 1 , 0 , ' s ' } ,
{ " socket-ext-id " , 1 , 0 , ' e ' } ,
{ " socket-trd-id " , 1 , 0 , ' t ' } ,
{ " clear-config " , 0 , 0 , ' c ' } ,
{ NULL , 0 , NULL , 0 }
} ;
for ( int i = 0 ; i < argc ; i + + ) {
int argument = getopt_long ( argc , argv , " hVvs:e:t:c " , long_options , & option_index ) ;
switch ( argument ) {
case ' h ' :
show_help = 1 ;
break ;
case ' v ' :
case ' V ' :
printf ( " %s \n " , VERSION_LABEL ) ;
exit ( 0 ) ;
break ;
case ' s ' :
if ( optarg )
main_config . socket_id = atoi ( optarg ) ;
break ;
case ' e ' :
if ( optarg )
main_config . save_socket_id = atoi ( optarg ) ;
break ;
case ' t ' :
if ( optarg )
main_config . load_socket_id = atoi ( optarg ) ;
break ;
case ' c ' : if ( system ( remove_config_dir_command ) ) { } ;
break ;
case 1 :
main_config . lock_help = 1 ;
break ;
case 2 :
main_config . lock_save_local = 1 ;
main_config . lock_save_global = 1 ;
break ;
case 3 :
main_config . lock_save_local = 1 ;
break ;
case 4 :
main_config . lock_save_global = 1 ;
break ;
case 5 :
main_config . lock_load_global = 1 ;
break ;
}
}
if ( show_help = = 1 & & main_config . lock_help ! = 1 ) {
printf ( " %s \n " , HELP_LABEL ) ;
exit ( 0 ) ;
}
}
if ( getuid ( ) ! = 0 ) {
main_config . lock_load_global = 1 ;
main_config . lock_save_global = 1 ;
main_config . lock_save_local = 1 ;
}
gtk_init ( & argc , & argv ) ;
config_init ( ) ;
yon_ubl_connect_config ( ( _template_config * ) & main_config ) ;
yon_ubl_window_init ( TITLE_LABEL , TITLE_INFO_LABEL , LocaleName , CssPath , LocaleName , version_application , WIKI_LINK ) ;
config_str unfound = NULL ;
int size = 0 ;
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 ) ;