@ -9,6 +9,19 @@ int yon_bootloader_save(main_window *widgets){
}
}
if ( ! gtk_switch_get_active ( GTK_SWITCH ( widgets - > BootloadNoPasswordSwitch ) ) ) {
if ( ! gtk_switch_get_active ( GTK_SWITCH ( widgets - > BootloadNoPasswordSwitch ) ) ) {
yon_config_register ( AUTOLOGINUSER_parameter , AUTOLOGINUSER_parameter_command , " no " ) ;
yon_config_register ( AUTOLOGINUSER_parameter , AUTOLOGINUSER_parameter_command , " no " ) ;
} else {
yon_config_register ( AUTOLOGINUSER_parameter , AUTOLOGINUSER_parameter_command , " yes " ) ;
}
{
int size ;
config_str users = yon_config_get_all_by_key ( GRUB_PASSWORD_parameter_search , & size ) ;
for ( int i = 0 ; i < size ; i + + ) {
char * parameter = yon_char_divide_search ( users [ i ] , " = " , - 1 ) ;
yon_config_remove_by_key ( parameter ) ;
free ( parameter ) ;
}
}
GtkTreeIter iter ;
GtkTreeIter iter ;
GtkTreeModel * model = GTK_TREE_MODEL ( widgets - > BootloadUsersList ) ;
GtkTreeModel * model = GTK_TREE_MODEL ( widgets - > BootloadUsersList ) ;
int admin_size = 0 ;
int admin_size = 0 ;
@ -29,24 +42,15 @@ int yon_bootloader_save(main_window *widgets){
yon_config_remove_by_key ( GRUB_SUPERUSERS_parameter ) ;
yon_config_remove_by_key ( GRUB_SUPERUSERS_parameter ) ;
}
}
}
}
} else {
int size ;
config_str users = yon_config_get_all_by_key ( GRUB_PASSWORD_parameter_search , & size ) ;
for ( int i = 0 ; i < size ; i + + ) {
char * parameter = yon_char_divide_search ( users [ i ] , " = " , - 1 ) ;
yon_config_remove_by_key ( parameter ) ;
free ( parameter ) ;
}
yon_config_register ( AUTOLOGINUSER_parameter , AUTOLOGINUSER_parameter_command , " yes " ) ;
yon_config_remove_by_key ( GRUB_PASSWORD_parameter_all ) ;
yon_config_remove_by_key ( GRUB_SUPERUSERS_parameter ) ;
yon_char_parsed_free ( users , size ) ;
}
if ( ! main_config . configure_mode ) {
if ( ! main_config . configure_mode ) {
int user_size = 0 ;
int user_size = 0 ;
config_str users = yon_config_get_all_by_key ( GRUB_PASSWORD_parameter_search , & user_size ) ;
int param_size = 0 ;
char * user_string = yon_char_parsed_to_string ( users , user_size , " " ) ;
config_str users = yon_config_get_all_keys_by_key ( GRUB_PASSWORD_parameter_search , & user_size ) ;
config_str user_parameters = yon_config_get_save_parameters_by_list ( & param_size , users , user_size ) ;
yon_char_parsed_free ( users , user_size ) ;
char * user_string = yon_char_parsed_to_string ( user_parameters , param_size , " " ) ;
yon_char_parsed_free ( user_parameters , param_size ) ;
int size ;
int size ;
config_str parameters = yon_config_get_save_parameters_by_key ( & size , GRUB_TIMEOUT_parameter , AUTOLOGINUSER_parameter , GRUB_SUPERUSERS_parameter , NULL ) ;
config_str parameters = yon_config_get_save_parameters_by_key ( & size , GRUB_TIMEOUT_parameter , AUTOLOGINUSER_parameter , GRUB_SUPERUSERS_parameter , NULL ) ;
if ( parameters ) {
if ( parameters ) {
@ -107,49 +111,10 @@ void on_bootloader_user_accept(GtkWidget *, bootloader_user_window *window){
free ( yon_char_divide ( password , pos ) ) ;
free ( yon_char_divide ( password , pos ) ) ;
}
}
}
}
// if (!yon_char_is_empty(window->prev_name)&&strcmp(username,window->prev_name)){
// yon_config_remove_by_key(GRUB_PASSWORD(window->prev_name));
// int size;
// char *superusers = config(GRUB_SUPERUSERS_parameter);
// config_str parsed = yon_char_parse(superusers,&size,",");
// int pos = yon_char_parsed_check_exist(parsed,size,(char*)username);
// if (pos>-1){
// parsed = yon_char_parsed_rip(parsed,&size,pos);
// char *superusers = yon_char_parsed_to_string(parsed,size,",");
// if (!yon_char_is_empty(superusers)){
// yon_config_register(GRUB_SUPERUSERS_parameter,GRUB_SUPERUSERS_parameter_command,superusers);
// } else {
// yon_config_remove_by_key(GRUB_SUPERUSERS_parameter);
// }
// }
// }
// yon_config_register(GRUB_PASSWORD(username),GRUB_SUPERUSERS_parameter_command,(char*)password);
GtkTreeIter iter ;
GtkTreeIter iter ;
gtk_list_store_append ( widgets - > BootloadUsersList , & iter ) ;
gtk_list_store_append ( widgets - > BootloadUsersList , & iter ) ;
gtk_list_store_set ( widgets - > BootloadUsersList , & iter , 0 , gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( window - > AdminCheck ) ) , 1 , username , 2 , password , 3 , " ****** " , - 1 ) ;
gtk_list_store_set ( widgets - > BootloadUsersList , & iter , 0 , gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( window - > AdminCheck ) ) , 1 , username , 2 , password , 3 , " ****** " , - 1 ) ;
// free(password);
// if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->AdminCheck))){
// int size;
// char *superusers = config(GRUB_SUPERUSERS_parameter);
// config_str parsed = yon_char_parse(superusers,&size,",");
// if (yon_char_parsed_check_exist(parsed,size,(char*)username)==-1){
// yon_char_parsed_add_or_create_if_exists(parsed,&size,(char*)username);
// char *superusers = yon_char_parsed_to_string(parsed,size,",");
// // yon_config_register(GRUB_SUPERUSERS_parameter,GRUB_SUPERUSERS_parameter_command,superusers);
// }
// } else {
// int size;
// char *superusers = config(GRUB_SUPERUSERS_parameter);
// config_str parsed = yon_char_parse(superusers,&size,",");
// int pos = yon_char_parsed_check_exist(parsed,size,(char*)username);
// if (pos!=-1){
// parsed = yon_char_parsed_rip(parsed,&size,pos);
// char *superusers = yon_char_parsed_to_string(parsed,size,",");
// // yon_config_register(GRUB_SUPERUSERS_parameter,GRUB_SUPERUSERS_parameter_command,superusers);
// }
// }
on_subwindow_close ( window - > Window ) ;
on_subwindow_close ( window - > Window ) ;
}
}
@ -184,6 +149,48 @@ void on_bootloader_user_add(GtkWidget *, main_window *widgets){
gtk_widget_show ( window - > Window ) ;
gtk_widget_show ( window - > Window ) ;
}
}
void on_bootloader_user_edit ( GtkWidget * , main_window * widgets ) {
GtkTreeIter iter ;
GtkTreeModel * model ;
if ( gtk_tree_selection_get_selected ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( widgets - > BootloadUserTree ) ) , & model , & iter ) ) {
int admin ;
char * username ;
char * password ;
gtk_tree_model_get ( model , & iter , 0 , & admin , 1 , & username , 2 , & password , - 1 ) ;
bootloader_user_window * window = yon_bootloader_user_window_new ( ) ;
g_object_set_data ( G_OBJECT ( window - > AcceptButton ) , " widgets " , widgets ) ;
g_signal_connect ( G_OBJECT ( window - > AcceptButton ) , " clicked " , G_CALLBACK ( on_bootloader_user_accept ) , window ) ;
yon_gtk_window_setup ( GTK_WINDOW ( window - > Window ) , GTK_WINDOW ( widgets - > MainWindow ) , NULL , icon_path , " bootloader_window " ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( window - > AdminCheck ) , admin ) ;
gtk_entry_set_text ( GTK_ENTRY ( window - > UsernameEntry ) , username ) ;
gtk_entry_set_text ( GTK_ENTRY ( window - > PasswordEntry ) , password ) ;
gtk_widget_show ( window - > Window ) ;
}
}
void on_bootloader_admin_toggled ( GtkWidget * , char * path , main_window * widgets ) {
GtkTreeIter iter ;
int active ;
gtk_tree_model_get_iter_from_string ( GTK_TREE_MODEL ( widgets - > BootloadUsersList ) , & iter , path ) ;
gtk_tree_model_get ( GTK_TREE_MODEL ( widgets - > BootloadUsersList ) , & iter , 0 , & active , - 1 ) ;
gtk_list_store_set ( widgets - > BootloadUsersList , & iter , 0 , ! active , - 1 ) ;
}
void on_bootloader_user_remove ( GtkWidget * , main_window * widgets ) {
GtkTreeIter iter ;
GtkTreeModel * model ;
if ( gtk_tree_selection_get_selected ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( widgets - > BootloadUserTree ) ) , & model , & iter ) ) {
char * target ;
gtk_tree_model_get ( model , & iter , 1 , & target , - 1 ) ;
dialog_confirmation_data * data = yon_confirmation_dialog_data_new ( ) ;
data - > title = WARNING_TITLE_LABEL ;
data - > action_text = BOOTLOADER_USER_REMOVE_LABEL ( target ) ;
if ( yon_confirmation_dialog_call ( widgets - > MainWindow , data ) ) {
gtk_list_store_remove ( widgets - > BootloadUsersList , & iter ) ;
}
}
}
void yon_menu_open_submenu ( yon_menu_window * window , yon_menu_item * item ) {
void yon_menu_open_submenu ( yon_menu_window * window , yon_menu_item * item ) {
int size ;
int size ;
config_str options = yon_config_load ( get_menus_entry_command , & size ) ;
config_str options = yon_config_load ( get_menus_entry_command , & size ) ;
@ -490,15 +497,21 @@ void yon_bootloader_init(main_window *widgets){
}
}
if ( ! yon_char_is_empty ( autologin ) & & ( ! strcmp ( autologin , " no " ) | | ! strcmp ( autologin , " disable " ) ) ) {
if ( ! yon_char_is_empty ( autologin ) & & ( ! strcmp ( autologin , " no " ) | | ! strcmp ( autologin , " disable " ) ) ) {
gtk_switch_set_active ( GTK_SWITCH ( widgets - > BootloadNoPasswordSwitch ) , 0 ) ;
gtk_switch_set_active ( GTK_SWITCH ( widgets - > BootloadNoPasswordSwitch ) , 0 ) ;
} else {
gtk_switch_set_active ( GTK_SWITCH ( widgets - > BootloadNoPasswordSwitch ) , 1 ) ;
}
{
int admins_size ;
int admins_size ;
config_str admins_parsed = yon_char_parse ( admins , & admins_size , " , " ) ;
config_str admins_parsed = yon_char_parse ( admins , & admins_size , " , " ) ;
GtkTreeIter iter ;
GtkTreeIter iter ;
for ( int i = 0 ; i < size ; i + + ) {
for ( int i = 0 ; i < size ; i + + ) {
char * parameter = yon_char_new ( users [ i ] ) ;
char * parameter = yon_char_new ( users [ i ] ) ;
char * parameter_name = yon_char_divide_search ( parameter , " = " , - 1 ) ;
char * parameter_name = yon_char_divide_search ( parameter , " = " , - 1 ) ;
char * key = yon_config_parameter_get_key ( parameter_name ) ;
char * key = yon_config_parameter_get_key ( parameter_name ) ;
char * key_sub = key + yon_char_find_last ( key , ' [ ' ) ;
char * key_sub = key + yon_char_find_last ( key , ' [ ' ) ;
char * subkey = yon_config_parameter_get_key ( key_sub ) ;
char * subkey = yon_config_parameter_get_key ( key_sub ) ;
gtk_list_store_append ( widgets - > BootloadUsersList , & iter ) ;
gtk_list_store_append ( widgets - > BootloadUsersList , & iter ) ;
gtk_list_store_set ( widgets - > BootloadUsersList , & iter , 0 , yon_char_parsed_check_exist ( admins_parsed , admins_size , subkey ) > - 1 , 1 , subkey , 2 , parameter , 3 , " ****** " , - 1 ) ;
gtk_list_store_set ( widgets - > BootloadUsersList , & iter , 0 , yon_char_parsed_check_exist ( admins_parsed , admins_size , subkey ) > - 1 , 1 , subkey , 2 , parameter , 3 , " ****** " , - 1 ) ;
@ -507,7 +520,5 @@ void yon_bootloader_init(main_window *widgets){
free ( subkey ) ;
free ( subkey ) ;
}
}
yon_char_parsed_free ( admins_parsed , admins_size ) ;
yon_char_parsed_free ( admins_parsed , admins_size ) ;
} else {
gtk_switch_set_active ( GTK_SWITCH ( widgets - > BootloadNoPasswordSwitch ) , 1 ) ;
}
}
}
}