From c2047d5e088eec4091be94d4fd2418de1cf7cb33 Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Sun, 9 Aug 1998 08:37:09 +0000 Subject: [PATCH] RAGE: add support for reading ldap host/base from files --- clients/fax500/main.c | 15 ++++++++++++++- clients/fax500/rp500.c | 23 +++++++++++++++++++++-- clients/finger/main.c | 12 +++++++++++- clients/gopher/go500.c | 12 +++++++++++- clients/gopher/go500gw.c | 13 ++++++++++++- clients/mail500/main.c | 12 +++++++++++- clients/rcpt500/main.c | 12 +++++++++++- clients/tools/ldapdelete.c | 23 +++++++++++++++++++++-- clients/tools/ldapmodify.c | 12 +++++++++++- clients/tools/ldapmodrdn.c | 24 ++++++++++++++++++++++-- clients/tools/ldapsearch.c | 23 +++++++++++++++++++++-- clients/ud/main.c | 11 ++++++++++- servers/slapd/tools/centipede.c | 20 +++++++++++++++++++- 13 files changed, 195 insertions(+), 17 deletions(-) diff --git a/clients/fax500/main.c b/clients/fax500/main.c index 7481d4980e..7e3025123b 100644 --- a/clients/fax500/main.c +++ b/clients/fax500/main.c @@ -301,10 +301,23 @@ char **argv; connect_to_x500() { - if ( (ld = ldap_open( LDAPHOST, LDAP_PORT )) == NULL ) { + char *ldaphost; + FILE *getbase; + if((getbase = fopen("/etc/ldapserver","r"))) { + ldaphost = malloc(1024); + fgets(ldaphost, 1024, getbase); + if(ldaphost[strlen(ldaphost) - 1] == '\n') + ldaphost[strlen(ldaphost) - 1] = '\0'; + fclose(getbase); + } + if(!ldaphost) + ldaphost = LDAPHOST; + + if ( (ld = ldap_open( ldaphost, LDAP_PORT )) == NULL ) { syslog( LOG_ALERT, "ldap_open failed" ); return( -1 ); } + free(ldaphost); ld->ld_sizelimit = FAX_MAXAMBIGUOUS; ld->ld_deref = LDAP_DEREF_ALWAYS; diff --git a/clients/fax500/rp500.c b/clients/fax500/rp500.c index 25eece609d..dcc71b1e58 100644 --- a/clients/fax500/rp500.c +++ b/clients/fax500/rp500.c @@ -30,8 +30,8 @@ #define DEFAULT_SIZELIMIT 50 int debug; -char *ldaphost = LDAPHOST; -char *base = DEFAULT_BASE; +char *ldaphost = NULL; +char *base = NULL; int deref; int sizelimit; LDAPFiltDesc *filtd; @@ -64,6 +64,25 @@ main (argc, argv) "facsimileTelephoneNumber", NULL }; extern char *optarg; extern int optind; + FILE *getvar; + if((getvar = fopen("/etc/defaultbase.ldap","r"))) { + base = malloc(1024); + fgets(base, 1024, getvar); + if(base[strlen(base) - 1] == '\n') + base[strlen(base) - 1] = '\0'; + fclose(getvar); + } + if(!base) + base = DEFAULT_BASE; + if((getvar = fopen("/etc/ldapserver","r"))) { + ldaphost = malloc(1024); + fgets(ldaphost, 1024, getvar); + if(ldaphost[strlen(ldaphost) - 1] == '\n') + ldaphost[strlen(ldaphost) - 1] = '\0'; + fclose(getvar); + } + if(!ldaphost) + ldaphost = LDAPHOST; deref = LDAP_DEREF_ALWAYS; while ( (i = getopt( argc, argv, "ab:d:f:x:z:" )) != EOF ) { diff --git a/clients/finger/main.c b/clients/finger/main.c index 38c8dfc769..2af793f788 100644 --- a/clients/finger/main.c +++ b/clients/finger/main.c @@ -37,7 +37,7 @@ #endif /* USE_SYSCONF */ int dosyslog = 1; -char *ldaphost = LDAPHOST; +char *ldaphost = NULL; int ldapport = LDAP_PORT; char *base = FINGER_BASE; int deref; @@ -69,6 +69,16 @@ char **argv; int peernamelen; int interactive = 0; extern char *optarg; + FILE *getbase; + if((getbase = fopen("/etc/ldapserver","r"))) { + ldaphost = malloc(1024); + fgets(ldaphost, 1024, getbase); + if(ldaphost[strlen(ldaphost) - 1] == '\n') + ldaphost[strlen(ldaphost) - 1] = '\0'; + fclose(getbase); + } + if(!ldaphost) + ldaphost = LDAPHOST; deref = FINGER_DEREF; while ( (i = getopt( argc, argv, "f:ilp:t:x:p:c:" )) != EOF ) { diff --git a/clients/gopher/go500.c b/clients/gopher/go500.c index 333787677a..555752b31f 100644 --- a/clients/gopher/go500.c +++ b/clients/gopher/go500.c @@ -42,7 +42,7 @@ int dosyslog; int inetd; int dtblsize; -char *ldaphost = LDAPHOST; +char *ldaphost = NULL; char *base = GO500_BASE; int rdncount = GO500_RDNCOUNT; char *filterfile = FILTERFILE; @@ -82,10 +82,20 @@ char **argv; extern char *optarg; extern char **Argv; extern int Argc; + FILE *getbase; /* for setproctitle */ Argv = argv; Argc = argc; + if((getbase = fopen("/etc/ldapserver","r"))) { + ldaphost = malloc(1024); + fgets(ldaphost, 1024, getbase); + if(ldaphost[strlen(ldaphost) - 1] == '\n') + ldaphost[strlen(ldaphost) - 1] = '\0'; + fclose(getbase); + } + if(!ldaphost) + ldaphost = LDAPHOST; while ( (i = getopt( argc, argv, "b:d:f:lp:c:t:x:I" )) != EOF ) { switch( i ) { diff --git a/clients/gopher/go500gw.c b/clients/gopher/go500gw.c index 7f74fbf57c..b9419ac945 100644 --- a/clients/gopher/go500gw.c +++ b/clients/gopher/go500gw.c @@ -42,7 +42,7 @@ int dosyslog; int inetd; int dtblsize; -char *ldaphost = LDAPHOST; +char *ldaphost = NULL; int ldapport = LDAP_PORT; int searchaliases = 1; char *helpfile = GO500GW_HELPFILE; @@ -89,6 +89,17 @@ char **argv; extern char *optarg; extern char **Argv; extern int Argc; + FILE *getbase; + + if((getbase = fopen("/etc/ldapserver","r"))) { + ldaphost = malloc(1024); + fgets(ldaphost, 1024, getbase); + if(ldaphost[strlen(ldaphost) - 1] == '\n') + ldaphost[strlen(ldaphost) - 1] = '\0'; + fclose(getbase); + } + if(!ldaphost) + ldaphost = LDAPHOST; /* for setproctitle */ Argv = argv; diff --git a/clients/mail500/main.c b/clients/mail500/main.c index 5fdea96201..6cf65b451e 100644 --- a/clients/mail500/main.c +++ b/clients/mail500/main.c @@ -46,7 +46,7 @@ char *vacationhost = NULL; char *errorsfrom = NULL; char *mailfrom = NULL; char *host = NULL; -char *ldaphost = LDAPHOST; +char *ldaphost = NULL; int hostlen = 0; int debug; @@ -142,6 +142,16 @@ char **argv; FILE *fp; extern int optind, errno; extern char *optarg; + FILE *getbase; + if((getbase = fopen("/etc/ldapserver","r"))) { + ldaphost = malloc(1024); + fgets(ldaphost, 1024, getbase); + if(ldaphost[strlen(ldaphost) - 1] == '\n') + ldaphost[strlen(ldaphost) - 1] = '\0'; + fclose(getbase); + } + if(!ldaphost) + ldaphost = LDAPHOST; if ( (myname = strrchr( argv[0], '/' )) == NULL ) myname = strdup( argv[0] ); diff --git a/clients/rcpt500/main.c b/clients/rcpt500/main.c index 3e65ac233b..25a04dd78d 100644 --- a/clients/rcpt500/main.c +++ b/clients/rcpt500/main.c @@ -28,7 +28,7 @@ int derefaliases = 1; int sizelimit = RCPT500_SIZELIMIT; int rdncount = RCPT500_RDNCOUNT; int ldapport = 0; -char *ldaphost = LDAPHOST; +char *ldaphost = NULL; char *searchbase = RCPT500_BASE; char *dapuser = RCPT500_BINDDN; char *filterfile = FILTERFILE; @@ -59,6 +59,16 @@ main( argc, argv ) extern int optind; extern char *optarg; + FILE *getbase; + if((getbase = fopen("/etc/ldapserver","r"))) { + ldaphost = malloc(1024); + fgets(ldaphost, 1024, getbase); + if(ldaphost[strlen(ldaphost) - 1] == '\n') + ldaphost[strlen(ldaphost) - 1] = '\0'; + fclose(getbase); + } + if(!ldaphost) + ldaphost = LDAPHOST; *reply = '\0'; diff --git a/clients/tools/ldapdelete.c b/clients/tools/ldapdelete.c index 3054cfb54f..57bd322890 100644 --- a/clients/tools/ldapdelete.c +++ b/clients/tools/ldapdelete.c @@ -10,9 +10,9 @@ #include "ldapconfig.h" static char *binddn = LDAPDELETE_BINDDN; -static char *base = LDAPDELETE_BASE; +static char *base = NULL; static char *passwd = NULL; -static char *ldaphost = LDAPHOST; +static char *ldaphost = NULL; static int ldapport = LDAP_PORT; static int not, verbose, contoper; static LDAP *ld; @@ -36,6 +36,25 @@ main( argc, argv ) extern char *optarg; extern int optind; + FILE *getbase; + if((getbase = fopen("/etc/ldapserver","r"))) { + ldaphost = malloc(1024); + fgets(ldaphost, 1024, getbase); + if(ldaphost[strlen(ldaphost) - 1] == '\n') + ldaphost[strlen(ldaphost) - 1] = '\0'; + fclose(getbase); + } + if(!ldaphost) + ldaphost = LDAPHOST; + if((getbase = fopen("/etc/defaultbase.ldap","r"))) { + base = malloc(1024); + fgets(base, 1024, getbase); + if(base[strlen(base) - 1] == '\n') + base[strlen(base) - 1] = '\0'; + fclose(getbase); + } + if(!base) + base = LDAPDELETE_BASE; kerberos = not = verbose = contoper = 0; fp = NULL; diff --git a/clients/tools/ldapmodify.c b/clients/tools/ldapmodify.c index d09b9ad839..362dd84629 100644 --- a/clients/tools/ldapmodify.c +++ b/clients/tools/ldapmodify.c @@ -20,7 +20,7 @@ static char *prog; static char *binddn = LDAPMODIFY_BINDDN; static char *passwd = NULL; -static char *ldaphost = LDAPHOST; +static char *ldaphost = NULL; static int ldapport = LDAP_PORT; static int new, replace, not, verbose, contoper, force, valsfromfiles; static LDAP *ld; @@ -85,6 +85,16 @@ main( argc, argv ) extern char *optarg; extern int optind; + FILE *getbase; + if((getbase = fopen("/etc/ldapserver","r"))) { + ldaphost = malloc(1024); + fgets(ldaphost, 1024, getbase); + if(ldaphost[strlen(ldaphost) - 1] == '\n') + ldaphost[strlen(ldaphost) - 1] = '\0'; + fclose(getbase); + } + if(!ldaphost) + ldaphost = LDAPHOST; if (( prog = strrchr( argv[ 0 ], '/' )) == NULL ) { prog = argv[ 0 ]; diff --git a/clients/tools/ldapmodrdn.c b/clients/tools/ldapmodrdn.c index 69d99e7f5a..797cd80444 100644 --- a/clients/tools/ldapmodrdn.c +++ b/clients/tools/ldapmodrdn.c @@ -10,9 +10,9 @@ #include "ldapconfig.h" static char *binddn = LDAPMODRDN_BINDDN; -static char *base = LDAPMODRDN_BASE; +static char *base = NULL; static char *passwd = NULL; -static char *ldaphost = LDAPHOST; +static char *ldaphost = NULL; static int ldapport = LDAP_PORT; static int not, verbose, contoper; static LDAP *ld; @@ -37,6 +37,26 @@ main( argc, argv ) extern char *optarg; extern int optind; + FILE *getbase; + if((getbase = fopen("/etc/ldapserver","r"))) { + ldaphost = malloc(1024); + fgets(ldaphost, 1024, getbase); + if(ldaphost[strlen(ldaphost) - 1] == '\n') + ldaphost[strlen(ldaphost) - 1] = '\0'; + fclose(getbase); + } + if(!ldaphost) + ldaphost = LDAPHOST; + + if((getbase = fopen("/etc/defaultbase.ldap","r"))) { + base = malloc(1024); + fgets(base, 1024, getbase); + if(base[strlen(base) - 1] == '\n') + base[strlen(base) - 1] = '\0'; + fclose(getbase); + } + if(!base) + base = LDAPMODRDN_BASE; infile = NULL; kerberos = not = contoper = verbose = remove = 0; diff --git a/clients/tools/ldapsearch.c b/clients/tools/ldapsearch.c index d96aff1317..55da4847c6 100644 --- a/clients/tools/ldapsearch.c +++ b/clients/tools/ldapsearch.c @@ -53,8 +53,8 @@ char *s; static char *binddn = LDAPSEARCH_BINDDN; static char *passwd = NULL; -static char *base = LDAPSEARCH_BASE; -static char *ldaphost = LDAPHOST; +static char *base = NULL; +static char *ldaphost = NULL; static int ldapport = LDAP_PORT; static char *sep = DEFSEP; static char *sortattr = NULL; @@ -72,6 +72,25 @@ char **argv; LDAP *ld; extern char *optarg; extern int optind; + FILE *getbase; + if((getbase = fopen("/etc/ldapserver","r"))) { + ldaphost = malloc(1024); + fgets(ldaphost, 1024, getbase); + if(ldaphost[strlen(ldaphost) - 1] == '\n') + ldaphost[strlen(ldaphost) - 1] = '\0'; + fclose(getbase); + } + if(!ldaphost) + ldaphost = LDAPHOST; + if((getbase = fopen("/etc/defaultbase.ldap","r"))) { + base = malloc(1024); + fgets(base, 1024, getbase); + if(base[strlen(base) - 1] == '\n') + base[strlen(base) - 1] = '\0'; + fclose(getbase); + } + if(!base) + base = LDAPSEARCH_BASE; infile = NULL; deref = verbose = allow_binary = not = kerberos = vals2tmp = diff --git a/clients/ud/main.c b/clients/ud/main.c index cb2030c283..91e37634fb 100644 --- a/clients/ud/main.c +++ b/clients/ud/main.c @@ -543,6 +543,7 @@ initialize_client() extern SIG_FN attn(); /* ^C signal handler */ extern char *getenv(); extern void Free(); + FILE *getbase; #ifdef DEBUG if (debug & D_TRACE) @@ -618,7 +619,15 @@ initialize_client() group_base = strdup(UD_WHERE_GROUPS_ARE_CREATED); if (search_base == NULL) search_base = strdup(UD_BASE); - if (server == NULL) + + if((getbase = fopen("/etc/ldapserver","r"))) { + server = malloc(1024); + fgets(server, 1024, getbase); + if(server[strlen(server) - 1] == '\n') + server[strlen(server) - 1] = '\0'; + fclose(getbase); + } + if(!server) server = strdup(LDAPHOST); /* diff --git a/servers/slapd/tools/centipede.c b/servers/slapd/tools/centipede.c index 9919232b7a..11ab916f29 100644 --- a/servers/slapd/tools/centipede.c +++ b/servers/slapd/tools/centipede.c @@ -29,7 +29,7 @@ char *srcldapbinddn; char *srcldappasswd; char *destldapbinddn; char *destldappasswd; -char *ldapbase; +char *ldapbase = NULL; int srcldapauthmethod; int destldapauthmethod; int verbose; @@ -81,11 +81,29 @@ main( int argc, char **argv ) char *s; extern int optind; extern char *optarg; + FILE *getbase; ldapsrcurl = NULL; ldapdesturl = NULL; + if((getbase = fopen("/etc/ldapserver","r"))) { + ldaphost = malloc(1024); + fgets(ldaphost, 1024, getbase); + if(ldaphost[strlen(ldaphost) - 1] == '\n') + ldaphost[strlen(ldaphost) - 1] = '\0'; + fclose(getbase); + } + if(!ldaphost) ldaphost = LDAPHOST; + if((getbase = fopen("/etc/defaultbase.ldap","r"))) { + ldapbase = malloc(1024); + fgets(ldapbase, 1024, getbase); + if(ldapbase[strlen(ldapbase) - 1] == '\n') + ldapbase[strlen(ldapbase) - 1] = '\0'; + fclose(getbase); + } + if(!ldapbase) ldapbase = DEFAULT_BASE; + srcldapauthmethod = LDAP_AUTH_SIMPLE; destldapauthmethod = LDAP_AUTH_SIMPLE; srcldapbinddn = NULL; -- 2.47.2