X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Fmts.c;h=46f5990e655cc5ebcc387cde72c78b6480139838;hp=de7518c017387ee36448416d90fdbbe5c72789c7;hb=128545e06224233b7e91fc4c83f8830252fe16c9;hpb=7b98850d3b8b2453b473fdfb6db52f4aa3fe39b6 diff --git a/sbr/mts.c b/sbr/mts.c index de7518c..46f5990 100644 --- a/sbr/mts.c +++ b/sbr/mts.c @@ -2,8 +2,6 @@ /* * mts.c -- definitions for the mail transport system * - * $Id$ - * * This code is Copyright (c) 2002, by the authors of nmh. See the * COPYRIGHT file in the root directory of the nmh distribution for * complete copyright information. @@ -33,6 +31,9 @@ */ static char *tailor_value (unsigned char *); static void getuserinfo (void); +static const char *get_mtsconf_pathname(void); +static const char *get_mtsuserconf_pathname(void); +static void mts_read_conf_file (FILE *fp); /* * *mmdfldir and *uucpldir are the maildrop directories. If maildrops @@ -73,33 +74,15 @@ static char* masquerade = ""; * MTS specific variables */ #if defined(SMTPMTS) -static char *sm_method = "smtp"; -int sm_mts = MTS_SMTP; -char *hostable = nmhetcdir(/hosts); +static char *sm_method = "sendmail"; +int sm_mts = MTS_SENDMAIL; char *sendmail = SENDMAILPATH; #endif /* - * SMTP/POP stuff + * SMTP stuff */ char *clientname = NULL; -char *servers = "localhost \01localnet"; -char *pophost = ""; - -/* - * BBoards-specific variables - */ -char *bb_domain = ""; - - -/* - * POP BBoards-specific variables - */ -#ifdef BPOP -char *popbbhost = ""; -char *popbbuser = ""; -char *popbblist = nmhetcdir(/hosts.popbb); -#endif /* BPOP */ /* * Global MailDelivery file @@ -138,24 +121,10 @@ static struct bind binds[] = { #if defined(SMTPMTS) { "mts", &sm_method }, - { "hostable", &hostable }, { "sendmail", &sendmail }, #endif { "clientname", &clientname }, - { "servers", &servers }, - { "pophost", &pophost }, - { "bbdomain", &bb_domain }, - -#ifdef BPOP - { "popbbhost", &popbbhost }, - { "popbbuser", &popbbuser }, - { "popbblist", &popbblist }, -#endif - -#ifdef NNTP - { "nntphost", &popbbhost }, -#endif { "maildelivery", &maildelivery }, { "everyone", &everyone }, @@ -172,36 +141,22 @@ static struct bind binds[] = { void mts_init (char *name) { - unsigned char *bp; - char *cp, buffer[BUFSIZ]; - struct bind *b; + const char *cp; FILE *fp; static int inited = 0; - if (inited++ || (fp = fopen (mtsconf, "r")) == NULL) + if (inited++ || (fp = fopen (get_mtsconf_pathname(), "r")) == NULL) return; + mts_read_conf_file(fp); + fclose (fp); - while (fgets (buffer, sizeof(buffer), fp)) { - if (!(cp = strchr(buffer, '\n'))) - break; - *cp = 0; - if (*buffer == '#' || *buffer == '\0') - continue; - if (!(bp = strchr(buffer, ':'))) - break; - *bp++ = 0; - while (isspace (*bp)) - *bp++ = 0; - - for (b = binds; b->keyword; b++) - if (!strcmp (buffer, b->keyword)) - break; - if (b->keyword && (cp = tailor_value (bp))) - *b->value = cp; + cp = get_mtsuserconf_pathname(); + if (cp != NULL && + ((fp = fopen (get_mtsuserconf_pathname(), "r")) != NULL)) { + mts_read_conf_file(fp); + fclose (fp); } - fclose (fp); - Everyone = atoi (everyone); if (strstr(masquerade, "draft_from") != NULL) @@ -212,17 +167,6 @@ mts_init (char *name) if (strstr(masquerade, "username_extension") != NULL) username_extension_masquerading = TRUE; - -#ifdef SMTPMTS - if (strcmp(sm_method, "smtp") == 0) - sm_mts = MTS_SMTP; - else if (strcmp(sm_method, "sendmail") == 0) - sm_mts = MTS_SENDMAIL; - else { - advise(NULL, "unsupported \"mts\" value in mts.conf: %s", sm_method); - sm_mts = MTS_SMTP; - } -#endif } @@ -414,21 +358,9 @@ getuserinfo (void) register char *np; register struct passwd *pw; -#ifdef KPOP - uid_t uid; - - uid = getuid (); - if (uid == geteuid () && (cp = getenv ("USER")) != NULL - && (pw = getpwnam (cp)) != NULL) - strncpy (username, cp, sizeof(username)); - else if ((pw = getpwuid (uid)) == NULL - || pw->pw_name == NULL - || *pw->pw_name == '\0') { -#else /* KPOP */ if ((pw = getpwuid (getuid ())) == NULL || pw->pw_name == NULL || *pw->pw_name == '\0') { -#endif /* KPOP */ strncpy (username, "unknown", sizeof(username)); snprintf (fullname, sizeof(fullname), "The Unknown User-ID (%d)", (int) getuid ()); @@ -529,3 +461,50 @@ getuserinfo (void) return; } + +static const char* +get_mtsconf_pathname (void) +{ + const char *cp = getenv ( "MHMTSCONF "); + if (cp != NULL && *cp != '\0') { + return cp; + } + return mtsconf; +} + +static const char* +get_mtsuserconf_pathname (void) +{ + const char *cp = getenv ( "MHMTSUSERCONF" ); + if (cp != NULL && *cp != '\0') { + return cp; + } + return NULL; +} + +static void +mts_read_conf_file (FILE *fp) +{ + unsigned char *bp; + char *cp, buffer[BUFSIZ]; + struct bind *b; + + while (fgets (buffer, sizeof(buffer), fp)) { + if (!(cp = strchr(buffer, '\n'))) + break; + *cp = 0; + if (*buffer == '#' || *buffer == '\0') + continue; + if (!(bp = strchr(buffer, ':'))) + break; + *bp++ = 0; + while (isspace (*bp)) + *bp++ = 0; + + for (b = binds; b->keyword; b++) + if (!strcmp (buffer, b->keyword)) + break; + if (b->keyword && (cp = tailor_value (bp))) + *b->value = cp; + } +}