+
+
+/*
+ * These accounts may have been created by code that ran between mid 2008 and early 2011.
+ * If present they are no longer in use and may be deleted.
+ */
+void remove_thread_users(void) {
+ char *deleteusers[] = {
+ "SYS_checkpoint",
+ "SYS_extnotify",
+ "SYS_IGnet Queue",
+ "SYS_indexer",
+ "SYS_network",
+ "SYS_popclient",
+ "SYS_purger",
+ "SYS_rssclient",
+ "SYS_select_on_master",
+ "SYS_SMTP Send"
+ };
+
+ int i;
+ struct ctdluser usbuf;
+ for (i=0; i<(sizeof(deleteusers)/sizeof(char *)); ++i) {
+ if (CtdlGetUser(&usbuf, deleteusers[i]) == 0) {
+ usbuf.axlevel = 0;
+ strcpy(usbuf.password, "deleteme");
+ CtdlPutUser(&usbuf);
+ syslog(LOG_INFO,
+ "System user account <%s> is no longer in use and will be deleted.",
+ deleteusers[i]
+ );
+ }
+ }
+}
+
+
+/*
+ * Attempt to guess the name of the time zone currently in use
+ * on the underlying host system.
+ */
+void guess_time_zone(void) {
+ FILE *fp;
+ char buf[PATH_MAX];
+
+ fp = popen(file_guesstimezone, "r");
+ if (fp) {
+ if (fgets(buf, sizeof buf, fp) && (strlen(buf) > 2)) {
+ buf[strlen(buf)-1] = 0;
+ safestrncpy(config.c_default_cal_zone, buf, sizeof config.c_default_cal_zone);
+ syslog(LOG_INFO, "Configuring timezone: %s", config.c_default_cal_zone);
+ }
+ fclose(fp);
+ }
+}
+
+
+/*
+ * Put some sane default values into our configuration. Some will be overridden when we run setup.
+ */
+void brand_new_installation_set_defaults(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... */
+ char c_nodename[256];
+ safestrncpy(c_nodename, my_utsname.nodename, sizeof 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);
+ }
+ }
+
+ safestrncpy(config.c_humannode, "Citadel Server", sizeof config.c_humannode);
+ safestrncpy(config.c_phonenum, "US 800 555 1212", sizeof config.c_phonenum);
+ config.c_initax = 4;
+ safestrncpy(config.c_moreprompt, "<more>", sizeof config.c_moreprompt);
+ safestrncpy(config.c_twitroom, "Trashcan", sizeof config.c_twitroom);
+ safestrncpy(config.c_baseroom, BASEROOM, sizeof config.c_baseroom);
+ safestrncpy(config.c_aideroom, "Aide", sizeof config.c_aideroom);
+ config.c_port_number = 504;
+ config.c_sleeping = 900;
+ config.c_instant_expunge = 1;
+
+ 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;
+ }
+
+ /*
+ * Default port numbers for various services
+ */
+ config.c_smtp_port = 25;
+ config.c_pop3_port = 110;
+ config.c_imap_port = 143;
+ config.c_msa_port = 587;
+ config.c_smtps_port = 465;
+ config.c_pop3s_port = 995;
+ config.c_imaps_port = 993;
+ config.c_pftcpdict_port = -1 ;
+ config.c_managesieve_port = 2020;
+ config.c_xmpp_c2s_port = 5222;
+ config.c_xmpp_s2s_port = 5269;
+}
+
+
+