/*
* Citadel setup utility
*
- * Copyright (c) 1987-2015 by the citadel.org team
+ * Copyright (c) 1987-2018 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
"\n"
" 0. Self contained authentication\n"
" 1. Host system integrated authentication\n"
-" 2. External LDAP - RFC 2307 compliant directory\n"
-" 3. External LDAP - nonstandard MS Active Directory\n"
+" 2. External LDAP - RFC 2307 POSIX schema\n"
+" 3. External LDAP - MS Active Directory schema\n"
"\n"
"For help: http://www.citadel.org/doku.php/faq:installation:authmodes\n"
"\n"
}
-
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) {
+ rv = system("service xinetd restart >/dev/null 2>&1");
+ }
if (rv != 0) {
display_error(_("failed to restart xinetd.\n"));
}
}
-
/*
* Offer to disable other MTA's
*/
break;
case eUID:
-
+ ctdluid = getconf_int("c_ctdluid");
if (setup_type == UI_SILENT)
{
if (default_value) {
char aaa[128];
int relh = 0;
int home = 0;
- int nRetries = 0;
char relhome[PATH_MAX]="";
char ctdldir[PATH_MAX]=CTDLDIR;
struct passwd *pw;
/*
* Connect to the running Citadel server.
*/
- while ((serv_sock < 0) && (nRetries < 10)) {
+ char *connectingmsg = _("Connecting to Citadel server");
+ for (i=0; ((i<30) && (serv_sock < 0)) ; ++i) { /* wait for server to start up */
+ progress(connectingmsg, i, 30);
serv_sock = uds_connectsock(file_citadel_admin_socket);
- nRetries ++;
- if (serv_sock < 0)
- sleep(1);
+ sleep(1);
}
+ progress(connectingmsg, 30, 30);
+
if (serv_sock < 0) {
display_error(
"%s: %s %s\n",
/*
* Create the administrator account. It's ok if the command fails if this user already exists.
*/
- progress(activity, 1, 5);
- snprintf(buf, sizeof buf, "CREU %s|%s", admin_name, admin_pass);
- serv_puts(buf);
- progress(activity, 2, 5);
- serv_gets(buf);
+ if (getconf_int("c_auth_mode") == AUTHMODE_NATIVE) {
+ progress(activity, 1, 5);
+ snprintf(buf, sizeof buf, "CREU %s|%s", admin_name, admin_pass);
+ serv_puts(buf);
+ progress(activity, 2, 5);
+ serv_gets(buf);
+ }
progress(activity, 3, 5);
/*
* Assign the desired password and access level to the administrator account.
*/
- snprintf(buf, sizeof buf, "AGUP %s", admin_name);
- serv_puts(buf);
- progress(activity, 4, 5);
- serv_gets(buf);
- if (buf[0] == '2') {
- int admin_flags = extract_int(&buf[4], 2);
- int admin_times_called = extract_int(&buf[4], 3);
- int admin_msgs_posted = extract_int(&buf[4], 4);
- snprintf(buf, sizeof buf, "ASUP %s|%s|%d|%d|%d|6",
- admin_name, admin_pass, admin_flags, admin_times_called, admin_msgs_posted
- );
+ if (getconf_int("c_auth_mode") == AUTHMODE_NATIVE) {
+ snprintf(buf, sizeof buf, "AGUP %s", admin_name);
serv_puts(buf);
+ progress(activity, 4, 5);
serv_gets(buf);
+ if (buf[0] == '2') {
+ int admin_flags = extract_int(&buf[4], 2);
+ int admin_times_called = extract_int(&buf[4], 3);
+ int admin_msgs_posted = extract_int(&buf[4], 4);
+ snprintf(buf, sizeof buf, "ASUP %s|%s|%d|%d|%d|6",
+ admin_name, admin_pass, admin_flags, admin_times_called, admin_msgs_posted
+ );
+ serv_puts(buf);
+ serv_gets(buf);
+ }
}
progress(activity, 5, 5);
* 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)