X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fserver_main.c;h=f24a69edcc55dc91bea02a9aadad455ce88cd972;hb=c750a06a241dc2737fa68c24b340a1bd82894f74;hp=10915b3c4ecfc5e626029f2d4c8de343de09c18f;hpb=5c39ca8a3c875df98163fed8923c258f21bb3f66;p=citadel.git diff --git a/citadel/server_main.c b/citadel/server_main.c index 10915b3c4..f24a69edc 100644 --- a/citadel/server_main.c +++ b/citadel/server_main.c @@ -1,7 +1,7 @@ /* * citserver's main() function lives here. * - * Copyright (c) 1987-2017 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. @@ -28,18 +28,13 @@ #include "serv_extensions.h" #include "citadel_dirs.h" #include "user_ops.h" -#include "ecrash.h" uid_t ctdluid = 0; const char *CitadelServiceUDS="citadel-UDS"; const char *CitadelServiceTCP="citadel-TCP"; - - - void go_threading(void); - /* * Create or remove a lock file, so we only have one Citadel Server running at a time. */ @@ -47,13 +42,12 @@ void ctdl_lockfile(int yo) { static char lockfilename[SIZ]; static FILE *fp; - if (yo) { syslog(LOG_DEBUG, "main: creating lockfile"); snprintf(lockfilename, sizeof lockfilename, "%s/citadel.lock", ctdl_run_dir); fp = fopen(lockfilename, "w"); if (!fp) { - syslog(LOG_ERR, "%s: %s", lockfilename, strerror(errno)); + syslog(LOG_ERR, "%s: %m", lockfilename); exit(CTDLEXIT_DB); } if (flock(fileno(fp), (LOCK_EX|LOCK_NB)) != 0) { @@ -70,10 +64,6 @@ void ctdl_lockfile(int yo) { } - - - - /* * Here's where it all begins. */ @@ -88,18 +78,14 @@ int main(int argc, char **argv) int relh=0; int home=0; int dbg=0; + int max_log_level = LOG_INFO; char relhome[PATH_MAX]=""; char ctdldir[PATH_MAX]=CTDLDIR; int syslog_facility = LOG_DAEMON; - const char *eDebuglist[] = {NULL, NULL}; uid_t u = 0; struct passwd *p = NULL; #ifdef HAVE_RUN_DIR struct stat filestats; -#endif -#ifdef HAVE_BACKTRACE - eCrashParameters params; -// eCrashSymbolTable symbol_table; #endif /* initialize the master context */ @@ -131,7 +117,7 @@ int main(int argc, char **argv) break; case 'x': - eDebuglist [0] = optarg; + max_log_level = atoi(optarg); break; case 't': /* deprecated */ @@ -173,6 +159,7 @@ int main(int argc, char **argv) fprintf(stderr, "citserver: usage: " "citserver " "[-l LogFacility] " + "[-x MaxLogLevel] " "[-d] [-D] [-r] " "[-u user] " "[-h HomeDir]\n" @@ -203,6 +190,7 @@ int main(int argc, char **argv) } StartLibCitadel(basesize); + setlogmask(LOG_UPTO(max_log_level)); openlog("citserver", ( running_as_daemon ? (LOG_PID) : (LOG_PID | LOG_PERROR) ), syslog_facility @@ -216,21 +204,26 @@ int main(int argc, char **argv) } /* Tell 'em who's in da house */ - syslog(LOG_NOTICE, " "); - syslog(LOG_NOTICE, " "); - syslog(LOG_NOTICE, "*** Citadel server engine ***\n"); - syslog(LOG_NOTICE, "Version %d (build %s) ***", REV_LEVEL, svn_revision()); - syslog(LOG_NOTICE, "Copyright (C) 1987-2017 by the Citadel development team."); - syslog(LOG_NOTICE, "This program is distributed under the terms of the GNU " - "General Public License."); - syslog(LOG_NOTICE, " "); - syslog(LOG_DEBUG, "Called as: %s", argv[0]); + syslog(LOG_INFO, " "); + syslog(LOG_INFO, " "); + syslog(LOG_INFO, "*** Citadel server engine ***\n"); + syslog(LOG_INFO, "Version %d (build %s) ***", REV_LEVEL, svn_revision()); + syslog(LOG_INFO, "Copyright (C) 1987-2018 by the Citadel development team."); + syslog(LOG_INFO, " "); + syslog(LOG_INFO, "This program is open source software: you can redistribute it and/or"); + syslog(LOG_INFO, "modify it under the terms of the GNU General Public License, version 3."); + syslog(LOG_INFO, " "); + syslog(LOG_INFO, "This program is distributed in the hope that it will be useful,"); + syslog(LOG_INFO, "but WITHOUT ANY WARRANTY; without even the implied warranty of"); + syslog(LOG_INFO, "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the"); + syslog(LOG_INFO, "GNU General Public License for more details."); + syslog(LOG_INFO, " "); syslog(LOG_INFO, "%s", libcitadel_version_string()); #ifdef HAVE_RUN_DIR /* on some dists rundir gets purged on startup. so we need to recreate it. */ - if (stat(ctdl_run_dir, &filestats)==-1){ + if (stat(ctdl_run_dir, &filestats) == -1) { #ifdef HAVE_GETPWUID_R #ifdef SOLARIS_GETPWUID pwp = getpwuid_r(ctdluid, &pw, pwbuf, sizeof(pwbuf)); @@ -242,11 +235,11 @@ int main(int argc, char **argv) #endif // HAVE_GETPWUID_R if ((mkdir(ctdl_run_dir, 0755) != 0) && (errno != EEXIST)) { - syslog(LOG_ERR, "main: unable to create run directory [%s]: %s", ctdl_run_dir, strerror(errno)); + syslog(LOG_ERR, "main: unable to create run directory [%s]: %m", ctdl_run_dir); } if (chown(ctdl_run_dir, ctdluid, (pwp==NULL)?-1:pw.pw_gid) != 0) { - syslog(LOG_ERR, "main: unable to set the access rights for [%s]: %s", ctdl_run_dir, strerror(errno)); + syslog(LOG_ERR, "main: unable to set the access rights for [%s]: %m", ctdl_run_dir); } } #endif @@ -324,9 +317,6 @@ int main(int argc, char **argv) initialise_modules(0); - eDebuglist[1] = getenv("CITADEL_LOGDEBUG"); - CtdlSetDebugLogFacilities(eDebuglist, 2); - /* * If we need host auth, start our chkpwd daemon. */ @@ -334,13 +324,11 @@ int main(int argc, char **argv) start_chkpwd_daemon(); } - /* * check, whether we're fired up another time after a crash. * if, post an aide message, so the admin has a chance to react. */ - checkcrash (); - + checkcrash(); /* * Now that we've bound the sockets, change to the Citadel user id and its @@ -360,15 +348,15 @@ int main(int argc, char **argv) #endif // HAVE_GETPWUID_R if (pwp == NULL) - syslog(LOG_ERR, "main: WARNING, getpwuid(%ld): %s" "Group IDs will be incorrect.", (long)CTDLUID, strerror(errno)); + syslog(LOG_ERR, "main: WARNING, getpwuid(%ld): %m Group IDs will be incorrect.", (long)CTDLUID); else { initgroups(pw.pw_name, pw.pw_gid); if (setgid(pw.pw_gid)) - syslog(LOG_ERR, "main: setgid(%ld): %s", (long)pw.pw_gid, strerror(errno)); + syslog(LOG_ERR, "main: setgid(%ld): %m", (long)pw.pw_gid); } syslog(LOG_INFO, "main: changing uid to %ld", (long)CTDLUID); if (setuid(CTDLUID) != 0) { - syslog(LOG_ERR, "main: setuid() failed: %s", strerror(errno)); + syslog(LOG_ERR, "main: setuid() failed: %m"); } #if defined (HAVE_SYS_PRCTL_H) && defined (PR_SET_DUMPABLE) prctl(PR_SET_DUMPABLE, 1);