You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ubinstall-gtk/source/ubinstall-gtk-network.c

171 lines
8.7 KiB

#include "ubinstall-gtk.h"
// void on_autohostname_check(GtkWidget *, main_window *widgets){
// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->HostnameSensitiveCheck),1);
// if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->AutoHostnameCheck))){
// gtk_widget_set_sensitive(widgets->HotnameEntry,0);
// gtk_entry_set_placeholder_text(GTK_ENTRY(widgets->HotnameEntry),"auto");
// }else{
// gtk_widget_set_sensitive(widgets->HotnameEntry,1);
// gtk_entry_set_placeholder_text(GTK_ENTRY(widgets->HotnameEntry),"ublinux-install");
// }
// }
// void on_autohostname_sensitiveness_check(GtkWidget *, main_window *widgets){
// if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->HostnameSensitiveCheck))){
// gtk_widget_set_sensitive(widgets->AutoHostnameCheck,1);
// if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->AutoHostnameCheck))){
// gtk_widget_set_sensitive(widgets->HotnameEntry,0);
// } else
// gtk_widget_set_sensitive(widgets->HotnameEntry,1);
// } else {
// gtk_widget_set_sensitive(widgets->HotnameEntry,0);
// gtk_widget_set_sensitive(widgets->AutoHostnameCheck,0);
// }
// }
// void on_hostname_entry_changed (GtkWidget *, main_window *widgets){
// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->HostnameSensitiveCheck),1);
// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->AutoHostnameCheck),0);
// }
network_info *yon_network_info_new(){
network_info *info = new(network_info);
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_network_info);
info->MainBox = yon_gtk_builder_get_widget(builder,"MainBox");
info->TypeCombo = yon_gtk_builder_get_widget(builder,"TypeCombo");
info->ConnectionCombo = yon_gtk_builder_get_widget(builder,"ConnectionCombo");
info->ConnectionEntry = yon_gtk_builder_get_widget(builder,"ConnectionEntry");
info->EnabledSwitch = yon_gtk_builder_get_widget(builder,"EnabledSwitch");
info->RemoveButton = yon_gtk_builder_get_widget(builder,"RemoveButton");
info->AutoGetIPSwitch = yon_gtk_builder_get_widget(builder,"AutoGetIPSwitch");
info->IpAdressEntry = yon_gtk_builder_get_widget(builder,"IpAdressEntry");
info->GatewayEntry = yon_gtk_builder_get_widget(builder,"GatewayEntry");
info->MaskEntry = yon_gtk_builder_get_widget(builder,"MaskEntry");
info->DNSEntry = yon_gtk_builder_get_widget(builder,"DNSEntry");
g_object_set_data(G_OBJECT(info->RemoveButton),"network_info",info);
g_object_set_data(G_OBJECT(info->MainBox),"network_info",info);
gtk_widget_show(info->MainBox);
return info;
}
void on_ntp_sync(GtkWidget *, main_window *widgets){
int mode = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->NetworkNTPCombo));
gtk_widget_set_sensitive(widgets->NetworkNTPEntry,0);
switch(mode){
case 0:
gtk_entry_set_text(GTK_ENTRY(widgets->NetworkNTPEntry),"");
gtk_entry_set_placeholder_text(GTK_ENTRY(widgets->NetworkNTPEntry),"");
break;
case 2:{
int size;
config_str parsed = yon_config_load(get_ntp_default_command,&size);
if (size&&!yon_char_is_empty(parsed[0])&&strcmp(parsed[0],"(null)\n")){
free(yon_char_divide_search(parsed[0],"=",-1));
yon_char_remove_last_symbol(parsed[0],'\n');
yon_char_remove_brackets(parsed[0]);
gtk_entry_set_placeholder_text(GTK_ENTRY(widgets->NetworkNTPEntry),parsed[0]);
yon_char_parsed_free(parsed,size);
gtk_entry_set_text(GTK_ENTRY(widgets->NetworkNTPEntry),"");
}
}
break;
case 3:{
int size;
config_str parsed = yon_config_load(get_ntp_ru_command,&size);
if (size&&!yon_char_is_empty(parsed[0])&&strcmp(parsed[0],"(null)\n")){
free(yon_char_divide_search(parsed[0],"=",-1));
yon_char_remove_last_symbol(parsed[0],'\n');
yon_char_remove_brackets(parsed[0]);
gtk_entry_set_placeholder_text(GTK_ENTRY(widgets->NetworkNTPEntry),parsed[0]);
yon_char_parsed_free(parsed,size);
gtk_entry_set_text(GTK_ENTRY(widgets->NetworkNTPEntry),"");
}
}
break;
case 1:
gtk_entry_set_placeholder_text(GTK_ENTRY(widgets->NetworkNTPEntry),"DHCP");
gtk_entry_set_text(GTK_ENTRY(widgets->NetworkNTPEntry),"");
break;
case 5:
gtk_entry_set_placeholder_text(GTK_ENTRY(widgets->NetworkNTPEntry),"");
gtk_entry_set_text(GTK_ENTRY(widgets->NetworkNTPEntry),"");
break;
case 4:
gtk_widget_set_sensitive(widgets->NetworkNTPEntry,1);
gtk_entry_set_placeholder_text(GTK_ENTRY(widgets->NetworkNTPEntry),"");
gtk_entry_set_text(GTK_ENTRY(widgets->NetworkNTPEntry),"");
break;
}
}
void on_connection_add(main_window *widgets){
network_info *info = yon_network_info_new();
gtk_box_pack_start(GTK_BOX(widgets->NetworkConnectionsBox),info->MainBox,0,0,0);
}
int yon_network_save(main_window *widgets){
if (gtk_switch_get_active(GTK_SWITCH(widgets->NetworkDomainSwitch))){
const char *domain_name = gtk_entry_get_text(GTK_ENTRY(widgets->NetworkDomainNameEntry));
if (!yon_char_is_empty(domain_name)){
yon_ubl_status_box_render(EMPTY_IMPORTANT_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(widgets->NetworkDomainNameEntry);
return 0;
}
const char *domain_admin = gtk_entry_get_text(GTK_ENTRY(widgets->NetworkDomainAdminEntry));
const char *domain_password = gtk_entry_get_text(GTK_ENTRY(widgets->NetworkDomainPasswordEntry));
if (!yon_char_is_empty(domain_name)) yon_config_register(DOMAIN_parameter,DOMAIN_parameter_command,(char*)domain_name);
else yon_config_remove_by_key(DOMAIN_parameter);
if ((!yon_char_is_empty(domain_admin)&&yon_char_is_empty(domain_password))||(yon_char_is_empty(domain_admin)&&!yon_char_is_empty(domain_password))){
yon_ubl_status_box_render(EMPTY_IMPORTANT_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(widgets->NetworkDomainAdminEntry);
yon_ubl_status_highlight_incorrect(widgets->NetworkDomainPasswordEntry);
return 0;
}
if (!yon_char_is_empty(domain_admin)&&!yon_char_is_empty(domain_password)){
int size;
config_str encrypted_password = yon_config_load(encrypt_domain_password_command(domain_password),&size);
if (!size){
yon_ubl_status_box_render(ENCRYPT_ERROR_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(widgets->NetworkDomainPasswordEntry);
return 0;
}
char *admin_string_full = yon_char_unite(domain_admin,":",encrypted_password[0],NULL);
yon_config_register(DOMAIN_admanger_parameter,DOMAIN_parameter_command,admin_string_full);
} else {
yon_config_remove_by_key(DOMAIN_admanger_parameter);
}
}
if (gtk_switch_get_active(GTK_SWITCH(widgets->NetworkNTPServerSwitch))){
int mode = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->NetworkNTPCombo));
switch(mode){
case 0:yon_config_remove_by_key(NTPSERVERS_parameter);
break;
case 1:yon_config_register(NTPSERVERS_parameter,NTPSERVERS_parameter_command,"dhcp");
break;
case 2:yon_config_register(NTPSERVERS_parameter,NTPSERVERS_parameter_command,"default");
break;
case 3:yon_config_register(NTPSERVERS_parameter,NTPSERVERS_parameter_command,"ntp-ru");
break;
case 5:yon_config_register(NTPSERVERS_parameter,NTPSERVERS_parameter_command,"disable");
break;
case 6:yon_config_register(NTPSERVERS_parameter,NTPSERVERS_parameter_command,"stop");
break;
case 4:
char *value = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->NetworkNTPEntry));
if (yon_char_is_empty(value)) {
yon_ubl_status_box_render(EMPTY_IMPORTANT_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(widgets->NetworkNTPEntry);
return 0;
}
yon_config_register(NTPSERVERS_parameter,NTPSERVERS_parameter_command,value);
break;
}
} else {
yon_config_remove_by_key(NTPSERVERS_parameter);
}
return 1;
}