parent
4822be0f69
commit
24a32c99ff
@ -0,0 +1,233 @@
|
||||
#include "ubl-settings-usergroups.h"
|
||||
|
||||
void on_additional_settings_changed(GtkWidget *self, ubl_settings_usergroups_additional_settings_window *window){
|
||||
if (self == window->DefaultUserNameEntry){
|
||||
window->default_user_name = gtk_entry_get_text(GTK_ENTRY(window->DefaultUserNameEntry));
|
||||
|
||||
} else if (self == window->DefaultPasswordEntry){
|
||||
window->default_password = gtk_entry_get_text(GTK_ENTRY(window->DefaultPasswordEntry));
|
||||
|
||||
} else if (self == window->RootPasswordEntry){
|
||||
window->default_root_password = gtk_entry_get_text(GTK_ENTRY(window->RootPasswordEntry));
|
||||
|
||||
} else if (self == window->PasswordHashCombo){
|
||||
window->password_hash = "";
|
||||
|
||||
} else if (self == window->DefaultUserAdministratorCheck){
|
||||
window->user_1000_admin = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DefaultUserAdministratorCheck));
|
||||
|
||||
} else if (self == window->UsersBootCheck){
|
||||
window->user_boot = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsersBootCheck));
|
||||
|
||||
} else if (self == window->UsersShutdownCheck){
|
||||
window->user_shutdown = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsersShutdownCheck));
|
||||
}
|
||||
}
|
||||
|
||||
void on_additional_settings_save(GtkWidget *, ubl_settings_usergroups_additional_settings_window *window){
|
||||
const char *default_user = (char*)gtk_entry_get_text(GTK_ENTRY(window->DefaultUserNameEntry));
|
||||
if (!yon_char_is_empty(default_user)){
|
||||
if (window->default_user_name)
|
||||
yon_config_register(DEFAULTUSER_parameter,DEFAULTUSER_parameter_command,yon_char_new((char*)default_user));
|
||||
} else {
|
||||
if (window->default_user_name)
|
||||
yon_config_remove_by_key(DEFAULTUSER_parameter);
|
||||
}
|
||||
char *default_password = gtk_combo_box_get_active(GTK_COMBO_BOX(window->DefaultPasswordCombo))>1? (char*)gtk_entry_get_text(GTK_ENTRY(window->DefaultPasswordEntry)):NULL;
|
||||
if (!yon_char_is_empty(default_password)){
|
||||
if (window->default_password)
|
||||
yon_config_register(DEFAULTPASSWD_parameter,DEFAULTPASSWD_parameter_command,default_password);
|
||||
} else {
|
||||
if (window->default_password)
|
||||
yon_config_remove_by_key(DEFAULTPASSWD_parameter);
|
||||
}
|
||||
char *root_password = gtk_combo_box_get_active(GTK_COMBO_BOX(window->RootPasswordCombo)) > 1 ? (char*)gtk_entry_get_text(GTK_ENTRY(window->RootPasswordEntry)) : NULL;
|
||||
if (!yon_char_is_empty(root_password)){
|
||||
if (window->default_root_password)
|
||||
yon_config_register(DEFAULTROOTPASSWD_parameter,DEFAULTROOTPASSWD_parameter_command,root_password);
|
||||
} else {
|
||||
if (window->default_root_password)
|
||||
yon_config_remove_by_key(DEFAULTROOTPASSWD_parameter);
|
||||
}
|
||||
int user_k_admin = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DefaultUserAdministratorCheck));
|
||||
if (user_k_admin){
|
||||
if (window->user_1000_admin)
|
||||
yon_config_register(ADDADM_parameter,ADDADM_parameter_command,"yes");
|
||||
} else {
|
||||
if (window->user_1000_admin)
|
||||
yon_config_register(ADDADM_parameter,ADDADM_parameter_command,"no");
|
||||
}
|
||||
if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->PasswordHashCombo))!=0){
|
||||
char *hash = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->PasswordHashCombo));
|
||||
if (!yon_char_is_empty(hash)){
|
||||
if (window->password_hash)
|
||||
yon_config_register(HASHPASSWD_parameter,HASHPASSWD_parameter_command,hash);
|
||||
}
|
||||
}else {
|
||||
if (window->password_hash)
|
||||
yon_config_remove_by_key(HASHPASSWD_parameter);
|
||||
}
|
||||
char *sync = "";
|
||||
int boot_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsersBootCheck));
|
||||
int shutdown_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsersShutdownCheck));
|
||||
if (!boot_active&&!shutdown_active){
|
||||
if (window->user_boot>-1||window->user_boot>-1)
|
||||
yon_config_remove_by_key(USERADD_SYNC_parameter);
|
||||
} else {
|
||||
if (boot_active){
|
||||
if (window->user_boot>-1)
|
||||
sync = "boot";
|
||||
}
|
||||
if (shutdown_active){
|
||||
if (window->user_shutdown>-1)
|
||||
sync = yon_char_unite(sync,yon_char_is_empty(sync)?"":",","shutdown",NULL);
|
||||
}
|
||||
if (window->user_boot>-1||window->user_boot>-1)
|
||||
yon_config_register(USERADD_SYNC_parameter,USERADD_SYNC_parameter_command,sync);
|
||||
}
|
||||
}
|
||||
|
||||
ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_additional_settings_new(){
|
||||
ubl_settings_usergroups_additional_settings_window *window = malloc(sizeof(ubl_settings_usergroups_additional_settings_window));
|
||||
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_additional_settings);
|
||||
window->Window=yon_gtk_builder_get_widget(builder,"Window");
|
||||
window->StatusBox=yon_gtk_builder_get_widget(builder,"StatusBox");
|
||||
window->DefaultUserNameEntry=yon_gtk_builder_get_widget(builder,"DefaultUserNameEntry");
|
||||
window->DefaultUserAdministratorCheck=yon_gtk_builder_get_widget(builder,"DefaultUserAdministratorCheck");
|
||||
window->DefaultPasswordCombo=yon_gtk_builder_get_widget(builder,"DefaultPasswordCombo");
|
||||
window->DefaultPasswordEntry=yon_gtk_builder_get_widget(builder,"DefaultPasswordEntry");
|
||||
window->DefaultPasswordButton=yon_gtk_builder_get_widget(builder,"DefaultPasswordButton");
|
||||
window->RootPasswordCombo=yon_gtk_builder_get_widget(builder,"RootPasswordCombo");
|
||||
window->RootPasswordEntry=yon_gtk_builder_get_widget(builder,"RootPasswordEntry");
|
||||
window->RootPasswordButton=yon_gtk_builder_get_widget(builder,"RootPasswordButton");
|
||||
window->PasswordHashCombo=yon_gtk_builder_get_widget(builder,"PasswordHashCombo");
|
||||
window->EncryptAllPasswordsButton=yon_gtk_builder_get_widget(builder,"EncryptAllPasswordsButton");
|
||||
window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton");
|
||||
window->AcceptButton=yon_gtk_builder_get_widget(builder,"AcceptButton");
|
||||
window->UsersBootCheck=yon_gtk_builder_get_widget(builder,"UsersBootCheck");
|
||||
window->UsersShutdownCheck=yon_gtk_builder_get_widget(builder,"UsersShutdownCheck");
|
||||
|
||||
window->default_password=NULL;
|
||||
window->default_root_password=NULL;
|
||||
window->default_user_name=NULL;
|
||||
window->user_1000_admin=-1;
|
||||
window->user_shutdown=-1;
|
||||
window->user_boot=-1;
|
||||
window->password_hash=NULL;
|
||||
|
||||
yon_window_config_custom_window_setup(GTK_WINDOW(window->Window),"AdditionalSettingsWindow");
|
||||
gtk_window_set_title(GTK_WINDOW(window->Window),ADDITIONAL_SETTINGS_TITLE_LABEL);
|
||||
char *sync_parameters = yon_config_get_by_key(USERADD_SYNC_parameter);
|
||||
if (sync_parameters){
|
||||
if (strstr(sync_parameters,"boot")){
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UsersBootCheck),1);
|
||||
}
|
||||
if (strstr(sync_parameters,"shutdown")){
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UsersShutdownCheck),1);
|
||||
}
|
||||
}
|
||||
|
||||
int hash_size=0;
|
||||
config_str hash_algos = yon_file_open(hash_list_path,&hash_size);
|
||||
if (main_config.hash_default_id==-1){
|
||||
int size;
|
||||
config_str ret = yon_config_load(get_default_hash_command,&size);
|
||||
if (size>0){
|
||||
char *hash = ret[0];
|
||||
if (hash[strlen(hash)-1]=='\n') hash[strlen(hash)-1]='\0';
|
||||
for (int i=0;i<hash_size;i++){
|
||||
if (hash_algos[i][0]!='!'){
|
||||
if (hash_algos[i][strlen(hash_algos[i])-1]=='\n') hash_algos[i][strlen(hash_algos[i])-1]='\0';
|
||||
int parsed_size;
|
||||
config_str parsed = yon_char_parse(hash_algos[i],&parsed_size,";");
|
||||
if (!strcmp(hash,parsed[0])){
|
||||
char *def_settings = yon_char_new(parsed[1]);
|
||||
char *def = yon_char_divide_search(def_settings," ",-1);
|
||||
free(def_settings);
|
||||
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(window->PasswordHashCombo),yon_char_unite(DEFAULT_USER_LABEL," (",def,")",NULL));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i=1;i<hash_size;i++){
|
||||
if (hash_algos[i][0]!='!'){
|
||||
if (hash_algos[i][strlen(hash_algos[i])-1]=='\n') hash_algos[i][strlen(hash_algos[i])-1]='\0';
|
||||
int parsed_size;
|
||||
config_str parsed = yon_char_parse(hash_algos[i],&parsed_size,";");
|
||||
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->PasswordHashCombo),parsed[0],_(parsed[1]));
|
||||
gtk_widget_set_tooltip_text(window->PasswordHashCombo,parsed[1]);
|
||||
yon_char_parsed_free(parsed,parsed_size);
|
||||
}
|
||||
}
|
||||
yon_char_parsed_free(hash_algos,hash_size);
|
||||
gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordHashCombo),0);
|
||||
char *default_user = yon_config_get_by_key(DEFAULTUSER_parameter);
|
||||
if (!yon_char_is_empty(default_user))
|
||||
gtk_entry_set_text(GTK_ENTRY(window->DefaultUserNameEntry),default_user);
|
||||
|
||||
|
||||
g_signal_connect(G_OBJECT(window->RootPasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->RootPasswordButton);
|
||||
g_signal_connect(G_OBJECT(window->DefaultPasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->DefaultPasswordButton);
|
||||
char *default_password = yon_config_get_by_key(DEFAULTPASSWD_parameter);
|
||||
if (!yon_char_is_empty(default_password)){
|
||||
gtk_entry_set_text(GTK_ENTRY(window->DefaultPasswordEntry),default_password);
|
||||
if(!yon_config_check_ignore(DEFAULTPASSWD_parameter))
|
||||
gtk_combo_box_set_active(GTK_COMBO_BOX(window->DefaultPasswordCombo),2);
|
||||
}
|
||||
char *root_password = yon_config_get_by_key(DEFAULTROOTPASSWD_parameter);
|
||||
if (!yon_char_is_empty(root_password)){
|
||||
gtk_entry_set_text(GTK_ENTRY(window->RootPasswordEntry),root_password);
|
||||
if(!yon_config_check_ignore(DEFAULTROOTPASSWD_parameter))
|
||||
gtk_combo_box_set_active(GTK_COMBO_BOX(window->RootPasswordCombo),2);
|
||||
}
|
||||
char *is_k_admin = yon_config_get_by_key(ADDADM_parameter);
|
||||
if (!yon_char_is_empty(is_k_admin))
|
||||
if (!strcmp(is_k_admin,"yes"))
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DefaultUserAdministratorCheck),1);
|
||||
char *hash = yon_config_get_by_key(HASHPASSWD_parameter);
|
||||
if (!yon_char_is_empty(hash)){
|
||||
gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->PasswordHashCombo),hash);
|
||||
}
|
||||
|
||||
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
|
||||
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_additional_settings_save),window);
|
||||
dictionary *default_dict=NULL;
|
||||
yon_dictionary_add_or_create_if_exists_with_data(default_dict,"combo",window->DefaultPasswordCombo);
|
||||
yon_dictionary_add_or_create_if_exists_with_data(default_dict,"entry",window->DefaultPasswordEntry);
|
||||
|
||||
dictionary *root_dict=NULL;
|
||||
yon_dictionary_add_or_create_if_exists_with_data(root_dict,"combo",window->RootPasswordCombo);
|
||||
yon_dictionary_add_or_create_if_exists_with_data(root_dict,"entry",window->RootPasswordEntry);
|
||||
g_signal_connect(G_OBJECT(window->DefaultPasswordButton),"clicked",G_CALLBACK(on_password_change),default_dict);
|
||||
g_signal_connect(G_OBJECT(window->RootPasswordButton),"clicked",G_CALLBACK(on_password_change),root_dict);
|
||||
dialog_confirmation_data *data=malloc(sizeof(dialog_confirmation_data));
|
||||
data->function=on_passwords_encrypt;
|
||||
data->action_text = ENCRYPT_SURE_LABEL;
|
||||
data->data=NULL;
|
||||
|
||||
g_signal_connect(G_OBJECT(window->EncryptAllPasswordsButton),"clicked",G_CALLBACK(yon_confirmation_dialog_call),data);
|
||||
g_signal_connect(G_OBJECT(window->PasswordHashCombo),"changed",G_CALLBACK(on_hash_changed),window);
|
||||
|
||||
g_signal_connect(G_OBJECT(window->DefaultUserNameEntry),"changed",G_CALLBACK(on_additional_settings_changed),window);
|
||||
g_signal_connect(G_OBJECT(window->DefaultPasswordEntry),"changed",G_CALLBACK(on_additional_settings_changed),window);
|
||||
g_signal_connect(G_OBJECT(window->RootPasswordEntry),"changed",G_CALLBACK(on_additional_settings_changed),window);
|
||||
g_signal_connect(G_OBJECT(window->PasswordHashCombo),"changed",G_CALLBACK(on_additional_settings_changed),window);
|
||||
g_signal_connect(G_OBJECT(window->DefaultUserAdministratorCheck),"toggled",G_CALLBACK(on_additional_settings_changed),window);
|
||||
g_signal_connect(G_OBJECT(window->UsersBootCheck),"toggled",G_CALLBACK(on_additional_settings_changed),window);
|
||||
g_signal_connect(G_OBJECT(window->UsersShutdownCheck),"toggled",G_CALLBACK(on_additional_settings_changed),window);
|
||||
|
||||
// g_signal_connect(G_OBJECT(window->UsersBootCheck),"toggled",G_CALLBACK(on_users_boot_toggled),NULL);
|
||||
// g_signal_connect(G_OBJECT(window->UsersShutdownCheck),"toggled",G_CALLBACK(on_users_shutdown_toggled),NULL);
|
||||
|
||||
return window;
|
||||
}
|
||||
|
||||
void on_ubl_settings_usergroups_additional_settings_open(GtkWidget *, main_window *widgets){
|
||||
ubl_settings_usergroups_additional_settings_window *window = yon_ubl_settings_usergroups_additional_settings_new();
|
||||
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
|
||||
|
||||
gtk_window_set_transient_for(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window));
|
||||
gtk_widget_show(window->Window);
|
||||
|
||||
}
|
||||
Loading…
Reference in new issue