Bootload fixes

pull/287/head
parent d392c98965
commit 177802badd

@ -9,6 +9,19 @@ int yon_bootloader_save(main_window *widgets){
}
if (!gtk_switch_get_active(GTK_SWITCH(widgets->BootloadNoPasswordSwitch))){
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;
GtkTreeModel *model = GTK_TREE_MODEL(widgets->BootloadUsersList);
int admin_size=0;
@ -29,24 +42,15 @@ int yon_bootloader_save(main_window *widgets){
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){
int user_size=0;
config_str users = yon_config_get_all_by_key(GRUB_PASSWORD_parameter_search,&user_size);
char *user_string = yon_char_parsed_to_string(users,user_size," ");
int user_size=0;
int param_size=0;
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;
config_str parameters = yon_config_get_save_parameters_by_key(&size,GRUB_TIMEOUT_parameter,AUTOLOGINUSER_parameter,GRUB_SUPERUSERS_parameter,NULL);
if (parameters){
@ -107,49 +111,10 @@ void on_bootloader_user_accept(GtkWidget *, bootloader_user_window *window){
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;
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);
// 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);
}
@ -184,6 +149,48 @@ void on_bootloader_user_add(GtkWidget *, main_window *widgets){
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){
int 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"))){
gtk_switch_set_active(GTK_SWITCH(widgets->BootloadNoPasswordSwitch),0);
} else {
gtk_switch_set_active(GTK_SWITCH(widgets->BootloadNoPasswordSwitch),1);
}
{
int admins_size;
config_str admins_parsed = yon_char_parse(admins,&admins_size,",");
GtkTreeIter iter;
for (int i=0;i<size;i++){
char *parameter = yon_char_new(users[i]);
char *parameter_name = yon_char_divide_search(parameter,"=",-1);
char *key = yon_config_parameter_get_key(parameter_name);
char *key_sub = key+yon_char_find_last(key,'[');
char *subkey = yon_config_parameter_get_key(key_sub);
char *parameter = yon_char_new(users[i]);
char *parameter_name = yon_char_divide_search(parameter,"=",-1);
char *key = yon_config_parameter_get_key(parameter_name);
char *key_sub = key+yon_char_find_last(key,'[');
char *subkey = yon_config_parameter_get_key(key_sub);
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);
@ -507,7 +520,5 @@ void yon_bootloader_init(main_window *widgets){
free(subkey);
}
yon_char_parsed_free(admins_parsed,admins_size);
} else {
gtk_switch_set_active(GTK_SWITCH(widgets->BootloadNoPasswordSwitch),1);
}
}

@ -585,6 +585,8 @@ void yon_main_window_create(main_window *widgets){
widgets->BootloadNoPasswordSwitch = yon_gtk_builder_get_widget(builder,"BootloadNoPasswordSwitch");
widgets->BootloadUserTree = yon_gtk_builder_get_widget(builder,"BootloadUserTree");
widgets->BootloadUserAddButton = yon_gtk_builder_get_widget(builder,"BootloadUserAddButton");
widgets->BootloadUserEditButton = yon_gtk_builder_get_widget(builder,"BootloadUserEditButton");
widgets->BootloadAdminCheckCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"BootloadAdminCheckCell"));
widgets->BootloadUserRemoveButton = yon_gtk_builder_get_widget(builder,"BootloadUserRemoveButton");
widgets->BootloadUsersList = GTK_LIST_STORE(gtk_builder_get_object(builder,"BootloadUsersList"));
@ -753,11 +755,14 @@ void yon_main_window_create(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->PacmanSoftwareSearchEntry),"icon-press",G_CALLBACK(on_pacman_icon_press),widgets);
g_signal_connect(G_OBJECT(widgets->PacmanSoftwareSearchEntry),"activate",G_CALLBACK(on_pacman_search_enter),widgets);
g_signal_connect(G_OBJECT(widgets->BootloadUserAddButton),"clicked",G_CALLBACK(on_bootloader_user_add),widgets);
g_signal_connect(G_OBJECT(widgets->BootloadUserEditButton),"clicked",G_CALLBACK(on_bootloader_user_edit),widgets);
g_signal_connect(G_OBJECT(widgets->BootloadAdminCheckCell),"toggled",G_CALLBACK(on_bootloader_admin_toggled),widgets);
g_signal_connect(G_OBJECT(widgets->BootloadUserRemoveButton),"clicked",G_CALLBACK(on_bootloader_user_remove),widgets);
g_signal_connect(G_OBJECT(widgets->BootloadTimerSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->BootloadTimerSpin);
g_signal_connect(G_OBJECT(widgets->BootloadNoPasswordSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->BootloadUserRemoveButton);
g_signal_connect(G_OBJECT(widgets->BootloadNoPasswordSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->BootloadUserAddButton);
g_signal_connect(G_OBJECT(widgets->BootloadNoPasswordSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->BootloadUserTree);
// g_signal_connect(G_OBJECT(widgets->BootloadNoPasswordSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->BootloadUserRemoveButton);
// g_signal_connect(G_OBJECT(widgets->BootloadNoPasswordSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->BootloadUserAddButton);
// g_signal_connect(G_OBJECT(widgets->BootloadNoPasswordSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->BootloadUserTree);
g_signal_connect(G_OBJECT(widgets->NetworkDomainSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->NetworkDomainNameEntry);
g_signal_connect(G_OBJECT(widgets->NetworkDomainSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->NetworkDomainAdminEntry);

@ -735,6 +735,8 @@ typedef struct
GtkWidget *BootloadDefaulOSButton;
GtkWidget *BootloadNoPasswordSwitch;
GtkWidget *BootloadUserAddButton;
GtkWidget *BootloadUserEditButton;
GtkCellRenderer *BootloadAdminCheckCell;
GtkWidget *BootloadUserRemoveButton;
GtkWidget *BootloadUserTree;
GtkListStore *BootloadUsersList;
@ -1567,4 +1569,7 @@ void yon_advanced_part_save_part(advanced_part_data *data);
void yon_advanced_part_remove_for_part(const char *part_name, main_window *widgets);
int yon_software_check_packages_size(GtkWidget *, main_window *widgets);
void yon_user_admin_check(GtkWidget *self, main_window *widgets);
void yon_gtk_widget_set_translation(GtkWidget *target);
void yon_gtk_widget_set_translation(GtkWidget *target);
void on_bootloader_user_edit(GtkWidget *, main_window *widgets);
void on_bootloader_admin_toggled(GtkWidget *, char *path, main_window *widgets);
void on_bootloader_user_remove(GtkWidget *, main_window *widgets);

@ -196,6 +196,7 @@ NULL)
#define APPLICATIONS_EDIT_TITLE_LABEL _("Edit application")
#define APPLICATIONS_REMOVE_TITLE_LABEL _("Remove application")
#define BOOTLOADER_USER_EXIST_LABEL(target) yon_char_unite(_("User")," <b>", target,"</b> ", _("is already exists. Do you really want to save user")," <b>",target,"</b>?",NULL)
#define BOOTLOADER_USER_REMOVE_LABEL(target) yon_char_unite(_("You are about to delete bootloader user"), " ", target,". ",_("Do you really want to remove user?"),NULL)
#define GRUB_PASSWORD(target) yon_char_unite("GRUB_PASSWORD[",target,"]",NULL)
#define WRONG_IP_LABEL _("Ip adress is incorrect")

@ -583,6 +583,11 @@
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.sync-symbolic</property>
</object>
<object class="GtkImage" id="image43">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.edit-symbolic</property>
</object>
<object class="GtkImage" id="image5">
<property name="visible">True</property>
<property name="can-focus">False</property>
@ -6350,7 +6355,7 @@ Select a different installation source.</property>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Administrator</property>
<child>
<object class="GtkCellRendererToggle"/>
<object class="GtkCellRendererToggle" id="BootloadAdminCheckCell"/>
<attributes>
<attribute name="active">0</attribute>
</attributes>
@ -6410,6 +6415,22 @@ Select a different installation source.</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="BootloadUserEditButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image43</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="BootloadUserRemoveButton">
<property name="visible">True</property>
@ -6423,7 +6444,7 @@ Select a different installation source.</property>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
<property name="position">2</property>
</packing>
</child>
</object>

Loading…
Cancel
Save