/*
* Citadel setup utility
*
- * Copyright (c) 1987-2017 by the citadel.org team
+ * Copyright (c) 1987-2019 by the citadel.org team
*
* This program is open source software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 3.
#include "axdefs.h"
#include "sysdep.h"
#include "citadel_dirs.h"
-#if HAVE_BACKTRACE
-#include <execinfo.h>
-#endif
#ifdef ENABLE_NLS
#ifdef HAVE_XLOCALE_H
}
-
int uds_connectsock(char *sockpath)
{
int s;
" server_args = -h -L %s/citadel\n"
" log_on_failure += USERID\n"
"}\n",
- ctdl_bin_dir);
+ ctdl_bin_dir
+ );
fclose(fp);
- /* Now try to restart the service */
- rv = system("/etc/init.d/xinetd restart >/dev/null 2>&1");
+ /* Now try to restart the service. This will not have the intended effect on Solaris, but who the hell uses Solaris anymore? */
+ rv = system("systemctl restart xinetd >/dev/null 2>&1");
if (rv != 0) {
- display_error(_("failed to restart xinetd.\n"));
- }
-}
-
-
-
-/*
- * Offer to disable other MTA's
- */
-void disable_other_mta(const char *mta) {
- char buf[SIZ];
- FILE *fp;
- int lines = 0;
- int rv;
-
- snprintf(buf, sizeof buf,
- "/bin/ls -l /etc/rc*.d/S*%s 2>/dev/null; "
- "/bin/ls -l /etc/rc.d/rc*.d/S*%s 2>/dev/null",
- mta, mta
- );
- fp = popen(buf, "r");
- if (fp == NULL) return;
-
- while (fgets(buf, sizeof buf, fp) != NULL) {
- ++lines;
+ rv = system("service xinetd restart >/dev/null 2>&1");
}
- fclose(fp);
- if (lines == 0) return; /* Nothing to do. */
-
- /* Offer to replace other MTA with the vastly superior Citadel :) */
-
- snprintf(buf, sizeof buf,
- "%s \"%s\" %s%s%s%s%s%s%s",
- _("You appear to have the "),
- mta,
- _(" email program\n"
- "running on your system. If you want Citadel mail\n"
- "connected with "),
- mta,
- _(" you will have to manually integrate\n"
- "them. It is preferable to disable "),
- mta,
- _(", and use Citadel's\n"
- "SMTP, POP3, and IMAP services.\n\n"
- "May we disable "),
- mta,
- _("so that Citadel has access to ports\n"
- "25, 110, and 143?\n")
- );
- if (yesno(buf, 1) == 0) {
- return;
+ if (rv != 0) {
+ display_error(_("failed to restart xinetd.\n"));
}
-
-
- snprintf(buf, sizeof buf, "for x in /etc/rc*.d/S*%s; do mv $x `echo $x |sed s/S/K/g`; done >/dev/null 2>&1", mta);
- rv = system(buf);
- if (rv != 0)
- display_error("%s %s.\n", _("failed to disable other mta"), mta);
-
- snprintf(buf, sizeof buf, "/etc/init.d/%s stop >/dev/null 2>&1", mta);
- rv = system(buf);
- if (rv != 0)
- display_error(" %s.\n", _("failed to disable other mta"), mta);
}
-const char *other_mtas[] = {
- "courier-authdaemon",
- "courier-imap",
- "courier-imap-ssl",
- "courier-pop",
- "courier-pop3",
- "courier-pop3d",
- "cyrmaster",
- "cyrus",
- "dovecot",
- "exim",
- "exim4",
- "imapd",
- "mta",
- "pop3d",
- "popd",
- "postfix",
- "qmail",
- "saslauthd",
- "sendmail",
- "vmailmgrd",
- ""
-};
void disable_other_mtas(void)
{
- int i = 0;
- if ((getenv("ACT_AS_MTA") == NULL) ||
- (getenv("ACT_AS_MTA") &&
- strcasecmp(getenv("ACT_AS_MTA"), "yes") == 0)) {
+ if ((getenv("ACT_AS_MTA") == NULL) || (getenv("ACT_AS_MTA") && strcasecmp(getenv("ACT_AS_MTA"), "yes") == 0)) {
/* Offer to disable other MTA's on the system. */
- while (!IsEmptyStr(other_mtas[i]))
- {
- disable_other_mta(other_mtas[i]);
- i++;
- }
+ /* FIXME this has to be rewritten to work in the new systemd-based world. */
}
}
+
void strprompt(const char *prompt_title, const char *prompt_text, char *Target, char *DefValue)
{
char buf[SIZ] = "";
}
else
{
-#ifdef __CYGWIN__
- ctdluid = 0; /* work-around for Windows */
-#else
pw = getpwuid(ctdluid);
if (pw == NULL) {
set_int_val(curr, &ctdluid, default_value);
* Messages that are no longer in use.
* We keep them here so we don't lose the translations if we need them later.
*/
-#if 0
+void niu_messages() {
important_message(_("Setup finished"),
_("Setup of the Citadel server is complete.\n"
"If you will be using WebCit, please run its\n"
"Go back and check your configuration.\n")
important_message(_("Setup finished"),
_("Setup is finished. You may now start the server."));
-#endif
+}
* Restart citserver
*/
activity = _("Restarting Citadel server to apply changes");
- progress(activity, 0, 41);
+ progress(activity, 0, 51);
serv_puts("TIME");
serv_gets(buf);
long original_start_time = extract_long(&buf[4], 3);
- progress(activity, 1, 41);
+ progress(activity, 1, 51);
serv_puts("DOWN 1");
- progress(activity, 2, 41);
+ progress(activity, 2, 51);
serv_gets(buf);
if (buf[0] != '2') {
display_error("%s\n", buf);
serv_sock = (-1);
for (i=3; i<=6; ++i) { /* wait for server to shut down */
- progress(activity, i, 41);
+ progress(activity, i, 51);
sleep(1);
}
- for (i=7; ((i<=38) && (serv_sock < 0)) ; ++i) { /* wait for server to start up */
- progress(activity, i, 41);
+ for (i=7; ((i<=48) && (serv_sock < 0)) ; ++i) { /* wait for server to start up */
+ progress(activity, i, 51);
serv_sock = uds_connectsock(file_citadel_admin_socket);
sleep(1);
}
- progress(activity, 39, 41);
+ progress(activity, 49, 51);
serv_gets(buf);
- progress(activity, 40, 41);
+ progress(activity, 50, 51);
serv_puts("TIME");
serv_gets(buf);
long new_start_time = extract_long(&buf[4], 3);
close(serv_sock);
- progress(activity, 41, 41);
+ progress(activity, 51, 51);
if ( (original_start_time == new_start_time)
|| (new_start_time <= 0)