/* * GProFTPD - A GTK+ frontend for the ProFTPD standalone server. * Copyright (C) 2001 - 2006 Magnus Loef (Magnus-swe) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * */ #include "../config.h" #include #include #include #include #include "gettext.h" #include "widgets.h" #include "allocate.h" #include "chars_are_digits.h" #include "populate_server_settings.h" #include "functions.h" #include "get_option_pos.h" extern char global_server_address[1024]; extern char global_server_port[1024]; extern char global_server_type[1024]; extern int use_tls; extern int use_ratio; extern int use_quota; void populate_server_settings(struct w *widgets) { /* Lists the values for the selected server in the server tab */ FILE *fp; int x = 0, val = 0, found = 0; long conf_size; char *old_buffer, *port_buffer, *translate, *new_buffer, *address_buffer, *gprotls_conf; gchar *utf8 = NULL; if((fp=fopen(PROFTPD_CONF, "r"))==NULL) { return; } fseek(fp, 0, SEEK_END); conf_size = ftell(fp); rewind(fp); old_buffer = allocate(conf_size); new_buffer = allocate(conf_size); address_buffer = allocate(8192+15); translate = allocate(1024); if( strstr(global_server_type, "Virtualhost") ) sprintf(address_buffer, "", global_server_address); else sprintf(address_buffer, global_server_address); port_buffer = allocate(8192+3); sprintf(port_buffer, "Port %s", global_server_port); if( ! strstr((char *)global_server_type, "Virtualhost") ) found = 1; if( conf_size > 1 ) while(fgets(old_buffer, conf_size, fp)!=NULL) { if( strlen(old_buffer) > 8000 ) { fclose(fp); free(old_buffer); free(new_buffer); free(address_buffer); free(port_buffer); free(translate); return; } /* We have all the values for the selected default server */ if( cmplowercase(old_buffer, " 8000 ) continue; /* This will expect the servers port on the second line ! * else itll miss some vaules .. */ if( cmplowercase(old_buffer, "port ") && strstr(old_buffer, port_buffer) ) { found = 1; break; } if( cmplowercase(old_buffer, "") ) break; } } /* Continue until we find the selected server */ if( ! found ) continue; /* Read and insert the selected servers values in the servers tab */ /* If its the default server we stop listing the values when a vhost or anonymous is found */ if( ! strstr("Virtualhost", (char *)global_server_type) && ( cmplowercase(old_buffer, "server_set_entry[0]), utf8); } if( cmplowercase(old_buffer, "serverident") ) { for(x=0; old_buffer[x]!='\0'; x++) { if( old_buffer[x]=='"' ) break; } x++; if( old_buffer[x]!='\0' ) sprintf(new_buffer, &old_buffer[x]); for(x=0; new_buffer[x]!='\0'; x++) { if( new_buffer[x]=='"' || new_buffer[x]=='\n' ) { new_buffer[x]='\0'; break; } } utf8 = g_locale_to_utf8(new_buffer, strlen(new_buffer), NULL, NULL, NULL); gtk_entry_set_text(GTK_ENTRY(widgets->server_set_entry[1]), utf8); if( cmplowercase(old_buffer, "on") ) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[0]), 0); else gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[0]), 1); } if( cmplowercase(old_buffer, "masqueradeaddress") ) { new_buffer[0]='\0'; sscanf(old_buffer, "%*s %s", new_buffer); if( strlen(new_buffer) > 3 ) { if( new_buffer[strlen(new_buffer)-1]=='\n' || new_buffer[strlen(new_buffer)-1]=='\r' ) new_buffer[strlen(new_buffer)-1]='\0'; utf8 = g_locale_to_utf8(new_buffer, strlen(new_buffer), NULL, NULL, NULL); gtk_entry_set_text(GTK_ENTRY(widgets->server_set_entry[2]), utf8); } if( ! strstr(old_buffer, "#") ) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[1]), 0); else gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[1]), 1); } if( cmplowercase(old_buffer, "serveradmin") ) { sprintf(new_buffer, &old_buffer[12]); if( new_buffer[strlen(new_buffer)-1]=='\n' || new_buffer[strlen(new_buffer)-1]=='\r' ) new_buffer[strlen(new_buffer)-1]='\0'; utf8 = g_locale_to_utf8(new_buffer, strlen(new_buffer), NULL, NULL, NULL); gtk_entry_set_text(GTK_ENTRY(widgets->server_set_entry[3]), utf8); } if( cmplowercase(old_buffer, "identlookups") ) { if( cmplowercase(old_buffer, "identlookups on") ) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[2]), 0); else gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[2]), 1); } if( cmplowercase(old_buffer, "usereversedns") ) { if( cmplowercase(old_buffer, "usereversedns on") ) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[3]), 0); else gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[3]), 1); } /* Off is local time */ if( cmplowercase(old_buffer, "timesgmt") ) { if( strstr(old_buffer, "on") ) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[4]), 0); else gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[4]), 1); } /* Dont match passiveports */ if( cmplowercase(old_buffer, "port") && old_buffer[4]==' ' && ! strstr(old_buffer, "passiveports") ) { sscanf(old_buffer, "%*s %s", new_buffer); if( new_buffer[strlen(new_buffer)-1]=='\n' || new_buffer[strlen(new_buffer)-1]=='\r' ) new_buffer[strlen(new_buffer)-1]='\0'; if( chars_are_digits(new_buffer) ) { val = atoi(new_buffer); gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->server_set_spinbutton[0]), val); } } if( cmplowercase(old_buffer, "passiveports") ) { new_buffer[0]='\0'; sscanf(old_buffer, "%*s %s", new_buffer); if( new_buffer[strlen(new_buffer)-1]=='\n' || new_buffer[strlen(new_buffer)-1]=='\r' ) new_buffer[strlen(new_buffer)-1]='\0'; if( chars_are_digits(new_buffer) ) { val = atoi(new_buffer); gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->server_set_spinbutton[1]), val); } new_buffer[0]='\0'; sscanf(old_buffer, "%*s %*s %s", new_buffer); if( new_buffer[strlen(new_buffer)-1]=='\n' || new_buffer[strlen(new_buffer)-1]=='\r' ) new_buffer[strlen(new_buffer)-1]='\0'; if( chars_are_digits(new_buffer)) { val=atoi(new_buffer); gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->server_set_spinbutton[2]), val); } } /* Maximum simoultaneous connections */ if( cmplowercase(old_buffer, "maxinstances") ) { new_buffer[0]='\0'; sscanf(old_buffer, "%*s %s", new_buffer); if( new_buffer[strlen(new_buffer)-1]=='\n' || new_buffer[strlen(new_buffer)-1]=='\r' ) new_buffer[strlen(new_buffer)-1]='\0'; if( chars_are_digits(new_buffer) ) { val = atoi(new_buffer); gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->server_set_spinbutton[3]), val); } } /* Max login attempts */ if( cmplowercase(old_buffer, "maxloginattempts") ) { new_buffer[0]='\0'; sscanf(old_buffer, "%*s %s", new_buffer); if( new_buffer[strlen(new_buffer)-1]=='\n' || new_buffer[strlen(new_buffer)-1]=='\r' ) new_buffer[strlen(new_buffer)-1]='\0'; if( chars_are_digits(new_buffer) ) { val = atoi(new_buffer); gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->server_set_spinbutton[4]), val); } } /* Login timeout */ if( cmplowercase(old_buffer, "timeoutlogin") ) { new_buffer[0]='\0'; sscanf(old_buffer, "%*s %s", new_buffer); if( new_buffer[strlen(new_buffer)-1]=='\n' || new_buffer[strlen(new_buffer)-1]=='\r' ) new_buffer[strlen(new_buffer)-1]='\0'; if( chars_are_digits(new_buffer) ) { val = atoi(new_buffer); gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->server_set_spinbutton[5]), val); } } /* Idle timeout */ if( cmplowercase(old_buffer, "timeoutnotransfer") ) { new_buffer[0]='\0'; sscanf(old_buffer, "%*s %s", new_buffer); if( new_buffer[strlen(new_buffer)-1]=='\n' || new_buffer[strlen(new_buffer)-1]=='\r' ) new_buffer[strlen(new_buffer)-1]='\0'; if( chars_are_digits(new_buffer) ) { val = atoi(new_buffer); gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->server_set_spinbutton[6]), val); } } /* Upload speed */ if( cmplowercase(old_buffer, "transferrate stor") ) { new_buffer[0]='\0'; sscanf(old_buffer, "%*s %*s %s", new_buffer); if( new_buffer[strlen(new_buffer)-1]=='\n' || new_buffer[strlen(new_buffer)-1]=='\r' ) new_buffer[strlen(new_buffer)-1]='\0'; if( chars_are_digits(new_buffer) ) { val = atoi(new_buffer); gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->server_set_spinbutton[9]), val); } } /* Dowonload speed */ if( cmplowercase(old_buffer, "transferrate retr") ) { new_buffer[0]='\0'; sscanf(old_buffer, "%*s %*s %s", new_buffer); if( new_buffer[strlen(new_buffer)-1]=='\n' || new_buffer[strlen(new_buffer)-1]=='\r' ) new_buffer[strlen(new_buffer)-1]='\0'; if( chars_are_digits(new_buffer) ) { val = atoi(new_buffer); gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->server_set_spinbutton[10]), val); } } /* Transfer mode */ if( cmplowercase(old_buffer, "defaulttransfermode") ) { if( strstr(old_buffer, "binary") ) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[5]), 0); else gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[5]), 1); } /* FXP transfers */ if( cmplowercase(old_buffer, "allowforeignaddress") ) { if( strstr(old_buffer, "on") ) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[6]), 0); else gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[6]), 1); } /* Server user */ if( cmplowercase(old_buffer, "user") && old_buffer[4]==' ' ) { sscanf(old_buffer, "%*s %s", new_buffer); if( new_buffer[strlen(new_buffer)-1]=='\n' || new_buffer[strlen(new_buffer)-1]=='\r' ) new_buffer[strlen(new_buffer)-1]='\0'; utf8 = g_locale_to_utf8(new_buffer, strlen(new_buffer), NULL, NULL, NULL); gtk_entry_set_text(GTK_ENTRY(widgets->server_set_entry[9]), utf8); } /* Server group */ if( cmplowercase(old_buffer, "group") && old_buffer[5]==' ' ) { sscanf(old_buffer, "%*s %s", new_buffer); if( new_buffer[strlen(new_buffer)-1]=='\n' || new_buffer[strlen(new_buffer)-1]=='\r' ) new_buffer[strlen(new_buffer)-1]='\0'; utf8 = g_locale_to_utf8(new_buffer, strlen(new_buffer), NULL, NULL, NULL); gtk_entry_set_text(GTK_ENTRY(widgets->server_set_entry[10]), utf8); } if( cmplowercase(old_buffer, "dirfakeuser") ) { /* Show the fake username */ sscanf(old_buffer, "%*s %*s %s", new_buffer); utf8 = g_locale_to_utf8(new_buffer, strlen(new_buffer), NULL, NULL, NULL); gtk_entry_set_text(GTK_ENTRY(widgets->server_set_entry[11]), utf8); /* Show fake user on - off */ sscanf(old_buffer, "%*s %s", new_buffer); if( strstr(new_buffer, "on") ) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[8]), 0); else gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[8]), 1); } if( cmplowercase(old_buffer, "dirfakegroup") ) { /* Show the fake groupname */ sscanf(old_buffer, "%*s %*s %s", new_buffer); utf8 = g_locale_to_utf8(new_buffer, strlen(new_buffer), NULL, NULL, NULL); gtk_entry_set_text(GTK_ENTRY(widgets->server_set_entry[12]), utf8); /* Show fake group on - off */ sscanf(old_buffer, "%*s %s", new_buffer); if( strstr(new_buffer, "on") ) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[9]), 0); else gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[9]), 1); } if( cmplowercase(old_buffer, "allowstorerestart") ) { sscanf(old_buffer, "%*s %s", new_buffer); if( new_buffer[strlen(new_buffer)-1]=='\n' || new_buffer[strlen(new_buffer)-1]=='\r' ) new_buffer[strlen(new_buffer)-1]='\0'; if( strstr(old_buffer, "on") ) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[10]), 0); else gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[10]), 1); } if( cmplowercase(old_buffer, "allowretrieverestart") ) { sscanf(old_buffer, "%*s %s", new_buffer); if( new_buffer[strlen(new_buffer)-1]=='\n' || new_buffer[strlen(new_buffer)-1]=='\r' ) new_buffer[strlen(new_buffer)-1]='\0'; if( strstr(old_buffer, "on") ) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[11]), 0); else gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[11]), 1); } if( cmplowercase(old_buffer, "deleteabortedstores") ) { if( strstr(old_buffer, "on") ) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[12]), 0); else gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[12]), 1); } if( cmplowercase(old_buffer, "systemlog") ) { sprintf(new_buffer, &old_buffer[10]); if( new_buffer[strlen(new_buffer)-1]=='\n' || new_buffer[strlen(new_buffer)-1]=='\r' ) new_buffer[strlen(new_buffer)-1]='\0'; utf8 = g_locale_to_utf8(new_buffer, strlen(new_buffer), NULL, NULL, NULL); gtk_entry_set_text(GTK_ENTRY(widgets->server_set_entry[8]), utf8); } if( cmplowercase(old_buffer, "gp_random_username_length") ) { sscanf(old_buffer, "%*s %s", new_buffer); if( new_buffer[strlen(new_buffer)-1]=='\n' || new_buffer[strlen(new_buffer)-1]=='\r' ) new_buffer[strlen(new_buffer)-1]='\0'; if( chars_are_digits(new_buffer) ) { val = atoi(new_buffer); gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->server_set_spinbutton[7]), val); } } if( cmplowercase(old_buffer, "gp_random_password_length") ) { sscanf(old_buffer, "%*s %s", new_buffer); if( new_buffer[strlen(new_buffer)-1]=='\n' || new_buffer[strlen(new_buffer)-1]=='\r' ) new_buffer[strlen(new_buffer)-1]='\0'; if( chars_are_digits(new_buffer) ) { val = atoi(new_buffer); gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->server_set_spinbutton[8]), val); } } if( cmplowercase(old_buffer, "gp_randomize_case") ) { if( cmplowercase(old_buffer, "upper") ) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[7]), 0); else gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[7]), 1); } /* This will be deprecated in a few years, the default conf adds gp_useradd_homedir_path (changed 2005-08-24) */ if( cmplowercase(old_buffer, "gp_useradd_root_path") ) { sprintf(new_buffer, &old_buffer[22]); if( new_buffer[strlen(new_buffer)-1]=='\n' || new_buffer[strlen(new_buffer)-1]=='\r' ) new_buffer[strlen(new_buffer)-1]='\0'; utf8 = g_locale_to_utf8(new_buffer, strlen(new_buffer), NULL, NULL, NULL); gtk_entry_set_text(GTK_ENTRY(widgets->server_set_entry[4]), utf8); } if( cmplowercase(old_buffer, "gp_useradd_homedir_path") ) { sprintf(new_buffer, &old_buffer[25]); if( new_buffer[strlen(new_buffer)-1]=='\n' || new_buffer[strlen(new_buffer)-1]=='\r' ) new_buffer[strlen(new_buffer)-1]='\0'; utf8 = g_locale_to_utf8(new_buffer, strlen(new_buffer), NULL, NULL, NULL); gtk_entry_set_text(GTK_ENTRY(widgets->server_set_entry[4]), utf8); } if( cmplowercase(old_buffer, "gp_useradd_upload_path") ) { sprintf(new_buffer, &old_buffer[24]); if( new_buffer[strlen(new_buffer)-1]=='\n' || new_buffer[strlen(new_buffer)-1]=='\r' ) new_buffer[strlen(new_buffer)-1]='\0'; utf8 = g_locale_to_utf8(new_buffer, strlen(new_buffer), NULL, NULL, NULL); gtk_entry_set_text(GTK_ENTRY(widgets->server_set_entry[5]), utf8); } if( cmplowercase(old_buffer, "gp_html_path") ) { sprintf(new_buffer, &old_buffer[14]); if( new_buffer[strlen(new_buffer)-1]=='\n' || new_buffer[strlen(new_buffer)-1]=='\r' ) new_buffer[strlen(new_buffer)-1]='\0'; utf8 = g_locale_to_utf8(new_buffer, strlen(new_buffer), NULL, NULL, NULL); gtk_entry_set_text(GTK_ENTRY(widgets->server_set_entry[6]), utf8); } if( use_tls ) { if( cmplowercase(old_buffer, "tlsengine") ) { if( cmplowercase(old_buffer, "on") ) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[13]), 0); else gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[13]), 1); } /* On(Both), Off, Data, Control, */ if( cmplowercase(old_buffer, "tlsrequired") ) { if( cmplowercase(old_buffer, "on") ) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[14]), 0); if( cmplowercase(old_buffer, "off") ) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[14]), 1); if( cmplowercase(old_buffer, "data") ) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[14]), 2); if( cmplowercase(old_buffer, "ctrl") ) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[14]), 3); } if( cmplowercase(old_buffer, "tlsverifyclient") ) { if( cmplowercase(old_buffer, "on") ) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[15]), 0); else gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[15]), 1); } if( cmplowercase(old_buffer, "tlsprotocol") ) { sprintf(new_buffer, "%s", &old_buffer[12]); if( new_buffer[strlen(new_buffer)-1]=='\n' || new_buffer[strlen(new_buffer)-1]=='\r' ) new_buffer[strlen(new_buffer)-1]='\0'; utf8 = g_locale_to_utf8(new_buffer, strlen(new_buffer), NULL, NULL, NULL); gtk_entry_set_text(GTK_ENTRY(widgets->server_set_entry[13]), utf8); } if( cmplowercase(old_buffer, "tlslog") ) { sprintf(new_buffer, &old_buffer[7]); if( new_buffer[strlen(new_buffer)-1]=='\n' || new_buffer[strlen(new_buffer)-1]=='\r' ) new_buffer[strlen(new_buffer)-1]='\0'; utf8 = g_locale_to_utf8(new_buffer, strlen(new_buffer), NULL, NULL, NULL); gtk_entry_set_text(GTK_ENTRY(widgets->server_set_entry[14]), utf8); } if( cmplowercase(old_buffer, "tlsrsacertificatefile") ) { sprintf(new_buffer, &old_buffer[22]); if( new_buffer[strlen(new_buffer)-1]=='\n' || new_buffer[strlen(new_buffer)-1]=='\r' ) new_buffer[strlen(new_buffer)-1]='\0'; utf8 = g_locale_to_utf8(new_buffer, strlen(new_buffer), NULL, NULL, NULL); gtk_entry_set_text(GTK_ENTRY(widgets->server_set_entry[15]), utf8); } } /* If use_tls (proftpd.conf values) */ if( use_ratio ) { /* Ratio on or off SaveRatios "ave" */ if( cmplowercase(old_buffer, "ratios ") && ! cmplowercase(old_buffer, "ave") ) { if( cmplowercase(old_buffer, "on") ) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[16]), 0); else gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[16]), 1); } /* Save Ratios on or off */ if( cmplowercase(old_buffer, "saveratios ") ) { if( cmplowercase(old_buffer, "on") ) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[17]), 0); else gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->server_set_combo[17]), 1); } } /* If use_ratio end */ /* Fixme QUOTA */ if( use_quota ) { } } fclose(fp); free(old_buffer); free(new_buffer); free(address_buffer); free(port_buffer); /* If we have the TLS module then list the values for it from gprotls.conf. */ /* These are generated by gproftpd so theres no need in using cmplowercase */ if( use_tls ) { /* If we have a gprotls.conf then list the certificate values */ gprotls_conf = allocate(strlen(GP_APPCONFDIR)+14); sprintf(gprotls_conf, "%s%s", GP_APPCONFDIR, "/gprotls.conf"); if((fp=fopen(gprotls_conf, "r"))==NULL) { } else { fseek(fp, 0, SEEK_END); conf_size = ftell(fp); rewind(fp); old_buffer = allocate(conf_size); new_buffer = allocate(conf_size); if( conf_size > 1 ) while(fgets(old_buffer, conf_size, fp)!=NULL) { /* Server address */ if( strstr(old_buffer, "CN ") ) { for(x=0; old_buffer[x]; x++) { if( old_buffer[x-2]=='=' ) { snprintf(new_buffer, old_buffer[x]+x, old_buffer+x); new_buffer[strlen(new_buffer)-1]='\0'; utf8 = g_locale_to_utf8(new_buffer, strlen(new_buffer), NULL, NULL, NULL); gtk_entry_set_text(GTK_ENTRY(widgets->server_set_entry[16]), utf8); } } } /* Email address */ if( strstr(old_buffer, "emailAddress ") ) { for(x=0; old_buffer[x]; x++) { if( old_buffer[x-2]=='=' ) { snprintf(new_buffer, old_buffer[x]+x, old_buffer+x); new_buffer[strlen(new_buffer)-1]='\0'; utf8 = g_locale_to_utf8(new_buffer, strlen(new_buffer), NULL, NULL, NULL); gtk_entry_set_text(GTK_ENTRY(widgets->server_set_entry[17]), utf8); } } } /* State or province */ if( strstr(old_buffer, "ST ") ) { for(x=0; old_buffer[x]; x++) { if( old_buffer[x-2]=='=' ) { snprintf(new_buffer, old_buffer[x]+x, old_buffer+x); new_buffer[strlen(new_buffer)-1]='\0'; utf8 = g_locale_to_utf8(new_buffer, strlen(new_buffer), NULL, NULL, NULL); gtk_entry_set_text(GTK_ENTRY(widgets->server_set_entry[18]), utf8); } } } /* City or town */ if( strstr(old_buffer, "L ") ) { for(x=0; old_buffer[x]; x++) { if( old_buffer[x-2]=='=' ) { snprintf(new_buffer, old_buffer[x]+x, old_buffer+x); new_buffer[strlen(new_buffer)-1]='\0'; utf8 = g_locale_to_utf8(new_buffer, strlen(new_buffer), NULL, NULL, NULL); gtk_entry_set_text(GTK_ENTRY(widgets->server_set_entry[19]), utf8); } } } /* Organization */ if( strstr(old_buffer, "O ") ) { for(x=0; old_buffer[x]; x++) { if( old_buffer[x-2]=='=' ) { snprintf(new_buffer, old_buffer[x]+x, old_buffer+x); new_buffer[strlen(new_buffer)-1]='\0'; utf8 = g_locale_to_utf8(new_buffer, strlen(new_buffer), NULL, NULL, NULL); gtk_entry_set_text(GTK_ENTRY(widgets->server_set_entry[20]), utf8); } } } /* Organizational unit */ if( strstr(old_buffer, "OU ") ) { for(x=0; old_buffer[x]; x++) { if( old_buffer[x-2]=='=' ) { snprintf(new_buffer, old_buffer[x]+x, old_buffer+x); new_buffer[strlen(new_buffer)-1]='\0'; utf8 = g_locale_to_utf8(new_buffer, strlen(new_buffer), NULL, NULL, NULL); gtk_entry_set_text(GTK_ENTRY(widgets->server_set_entry[21]), utf8); } } } /* Default certificate bits */ if( strstr(old_buffer, "default_bits") ) { for(x=0; old_buffer[x]; x++) { if( old_buffer[x-2]=='=' ) { snprintf(new_buffer, old_buffer[x]+x, old_buffer+x); new_buffer[strlen(new_buffer)-1]='\0'; if( chars_are_digits(new_buffer) ) { val = atoi(new_buffer); gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->server_set_spinbutton[11]), val); } } } } /* Default days valid */ if( strstr(old_buffer, "default_days") ) { for(x=0; old_buffer[x]; x++) { if( old_buffer[x-2]=='=' ) { snprintf(new_buffer, old_buffer[x]+x, old_buffer+x); new_buffer[strlen(new_buffer)-1]='\0'; if( chars_are_digits(new_buffer) ) { val = atoi(new_buffer); gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->server_set_spinbutton[12]), val); } } } } /* Country code */ if( strstr(old_buffer, "C ") ) { for(x=0; old_buffer[x]; x++) { if( old_buffer[x-2]=='=' ) { snprintf(new_buffer, old_buffer[x]+x, old_buffer+x); new_buffer[strlen(new_buffer)-1]='\0'; utf8 = g_locale_to_utf8(new_buffer, strlen(new_buffer), NULL, NULL, NULL); gtk_entry_set_text(GTK_ENTRY(widgets->server_set_entry[24]), utf8); } } } } free(gprotls_conf); free(new_buffer); free(old_buffer); fclose(fp); } } free(translate); if( utf8!=NULL ) g_free(utf8); gtk_widget_show_all(widgets->main_window); }