-void fixnss(void) {
- FILE *fp_read;
- int fd_write;
- char buf[256];
- char buf_nc[256];
- char question[512];
- int i;
- int changed = 0;
- int file_changed = 0;
- char new_filename[64];
- int rv;
-
- fp_read = fopen(NSSCONF, "r");
- if (fp_read == NULL) {
- return;
- }
-
- strcpy(new_filename, "/tmp/ctdl_fixnss_XXXXXX");
- fd_write = mkstemp(new_filename);
- if (fd_write < 0) {
- fclose(fp_read);
- return;
- }
-
- while (fgets(buf, sizeof buf, fp_read) != NULL) {
- changed = 0;
- strcpy(buf_nc, buf);
- for (i=0; i<strlen(buf_nc); ++i) {
- if (buf_nc[i] == '#') {
- buf_nc[i] = 0;
- }
- }
- for (i=0; i<strlen(buf_nc); ++i) {
- if (!strncasecmp(&buf_nc[i], "db", 2)) {
- if (i > 0) {
- if ((isspace(buf_nc[i+2])) || (buf_nc[i+2]==0)) {
- changed = 1;
- file_changed = 1;
- strcpy(&buf_nc[i], &buf_nc[i+2]);
- strcpy(&buf[i], &buf[i+2]);
- if (buf[i]==32) {
- strcpy(&buf_nc[i], &buf_nc[i+1]);
- strcpy(&buf[i], &buf[i+1]);
- }
- }
- }
- }
- }
- if (write(fd_write, buf, strlen(buf)) != strlen(buf)) {
- fclose(fp_read);
- close(fd_write);
- unlink(new_filename);
- return;
- }
- }
-
- fclose(fp_read);
-
- if (!file_changed) {
- unlink(new_filename);
- return;
- }
-
- snprintf(question, sizeof question,
- "\n"
- "/etc/nsswitch.conf is configured to use the 'db' module for\n"
- "one or more services. This is not necessary on most systems,\n"
- "and it is known to crash the Citadel server when delivering\n"
- "mail to the Internet.\n"
- "\n"
- "Do you want this module to be automatically disabled?\n"
- "\n"
- );
-
- if (yesno(question, 1)) {
- sprintf(buf, "/bin/mv -f %s %s", new_filename, NSSCONF);
- rv = system(buf);
- chmod(NSSCONF, 0644);
- }
- unlink(new_filename);
-}
-
-
-
-void set_default_values(void)
-{
- struct passwd *pw;
- struct utsname my_utsname;
- struct hostent *he;
-
- /* Determine our host name, in case we need to use it as a default */
- uname(&my_utsname);
-
- /* set some sample/default values in place of blanks... */
- if (IsEmptyStr(config.c_nodename))
- safestrncpy(config.c_nodename, my_utsname.nodename,
- sizeof config.c_nodename);
- strtok(config.c_nodename, ".");
- if (IsEmptyStr(config.c_fqdn) ) {
- if ((he = gethostbyname(my_utsname.nodename)) != NULL) {
- safestrncpy(config.c_fqdn, he->h_name, sizeof config.c_fqdn);
- } else {
- safestrncpy(config.c_fqdn, my_utsname.nodename, sizeof config.c_fqdn);
- }
- }
- if (IsEmptyStr(config.c_humannode)) {
- strcpy(config.c_humannode, "My System");
- }
- if (IsEmptyStr(config.c_phonenum)) {
- strcpy(config.c_phonenum, "US 800 555 1212");
- }
- if (config.c_initax == 0) {
- config.c_initax = 4;
- }
- if (IsEmptyStr(config.c_moreprompt)) strcpy(config.c_moreprompt, "<more>");
- if (IsEmptyStr(config.c_twitroom)) strcpy(config.c_twitroom, "Trashcan");
- if (IsEmptyStr(config.c_baseroom)) strcpy(config.c_baseroom, BASEROOM);
- if (IsEmptyStr(config.c_aideroom)) strcpy(config.c_aideroom, "Aide");
- if (config.c_port_number == 0) {
- config.c_port_number = 504;
- }
- if (config.c_sleeping == 0) {
- config.c_sleeping = 900;
- }
- if (config.c_ctdluid == 0) {
- pw = getpwnam("citadel");
- if (pw != NULL) {
- config.c_ctdluid = pw->pw_uid;
- }
- }
- if (config.c_ctdluid == 0) {
- pw = getpwnam("bbs");
- if (pw != NULL) {
- config.c_ctdluid = pw->pw_uid;
- }
- }
- if (config.c_ctdluid == 0) {
- pw = getpwnam("guest");
- if (pw != NULL) {
- config.c_ctdluid = pw->pw_uid;
- }
- }
- if (config.c_createax == 0) {
- config.c_createax = 3;
- }
- /*
- * Negative values for maxsessions are not allowed.
- */
- if (config.c_maxsessions < 0) {
- config.c_maxsessions = 0;
- }
- /* We need a system default message expiry policy, because this is
- * the top level and there's no 'higher' policy to fall back on.
- * By default, do not expire messages at all.
- */
- if (config.c_ep.expire_mode == 0) {
- config.c_ep.expire_mode = EXPIRE_MANUAL;
- config.c_ep.expire_value = 0;
- }
-
- /*
- * Default port numbers for various services
- */
- if (config.c_smtp_port == 0) config.c_smtp_port = 25;
- if (config.c_pop3_port == 0) config.c_pop3_port = 110;
- if (config.c_imap_port == 0) config.c_imap_port = 143;
- if (config.c_msa_port == 0) config.c_msa_port = 587;
- if (config.c_smtps_port == 0) config.c_smtps_port = 465;
- if (config.c_pop3s_port == 0) config.c_pop3s_port = 995;
- if (config.c_imaps_port == 0) config.c_imaps_port = 993;
- if (config.c_pftcpdict_port == 0) config.c_pftcpdict_port = -1;
- if (config.c_managesieve_port == 0) config.c_managesieve_port = 2020;
- if (config.c_xmpp_c2s_port == 0) config.c_xmpp_c2s_port = 5222;
- if (config.c_xmpp_s2s_port == 0) config.c_xmpp_s2s_port = 5269;
-}
-
-