X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=etc%2Fafpd%2Fafp_options.c;h=3c57fd22fbbcc05ea3a7be1016717eaba0f72f73;hb=de31d359ef07cfe8349fb5e9346d58b412c46a6b;hp=414629b5e3008c50c04aad18a5dfdc6dca0ff29c;hpb=914bcb1bf563396f50c85d92023fb9b8efe2af25;p=netatalk.git diff --git a/etc/afpd/afp_options.c b/etc/afpd/afp_options.c index 414629b5..3c57fd22 100644 --- a/etc/afpd/afp_options.c +++ b/etc/afpd/afp_options.c @@ -1,5 +1,5 @@ /* - * $Id: afp_options.c,v 1.39 2009-03-16 13:59:12 franklahm Exp $ + * $Id: afp_options.c,v 1.52 2010-02-03 11:35:58 franklahm Exp $ * * Copyright (c) 1997 Adrian Sun (asun@zoology.washington.edu) * Copyright (c) 1990,1993 Regents of The University of Michigan. @@ -62,8 +62,8 @@ char *strchr (), *strrchr (); #endif /* MIN */ /* FIXME CNID */ -char Cnid_srv[MAXHOSTNAMELEN + 1] = "localhost"; -int Cnid_port = 4700; +const char *Cnid_srv = "localhost"; +const char *Cnid_port = "4700"; #define OPTIONS "dn:f:s:uc:g:P:ptDS:TL:F:U:hIvVm:" #define LENGTH 512 @@ -127,6 +127,8 @@ void afp_options_free(struct afp_options *opt, free(opt->server); if (opt->ipaddr && (opt->ipaddr != save->ipaddr)) free(opt->ipaddr); + if (opt->port && (opt->port != save->port)) + free(opt->port); if (opt->fqdn && (opt->fqdn != save->fqdn)) free(opt->fqdn); if (opt->uampath && (opt->uampath != save->uampath)) @@ -164,10 +166,10 @@ void afp_options_init(struct afp_options *options) options->systemvol.name = _PATH_AFPDSYSVOL; options->configfile = _PATH_AFPDCONF; options->uampath = _PATH_AFPDUAMPATH; - options->uamlist = "uams_clrtxt.so,uams_dhx.so"; + options->uamlist = "uams_dhx.so,uams_dhx2.so"; options->guest = "nobody"; options->loginmesg = ""; - options->transports = AFPTRANS_ALL; + options->transports = AFPTRANS_TCP; /* TCP only */ options->passwdfile = _PATH_AFPDPWFILE; options->tickleval = 30; options->timeout = 4; @@ -186,9 +188,13 @@ void afp_options_init(struct afp_options *options) options->unixcodepage = "LOCALE"; options->maccharset = CH_MAC; options->maccodepage = "MAC_ROMAN"; - options->volnamelen = 31; /* Conservative default. 10.4/10.5 can handle up to 80 */ + options->volnamelen = 80; /* spec: 255, 10.1: 73, 10.4/10.5: 80 */ options->ntdomain = NULL; options->ntseparator = NULL; +#ifdef USE_SRVLOC + /* don't advertize slp by default */ + options->flags |= OPTION_NOSLP; +#endif } /* parse an afpd.conf line. i'm doing it this way because it's @@ -211,9 +217,9 @@ int afp_options_parseline(char *buf, struct afp_options *options) if (strstr(buf, " -nodebug")) options->flags &= ~OPTION_DEBUG; #ifdef USE_SRVLOC - if (strstr(buf, " -noslp")) - options->flags |= OPTION_NOSLP; -#endif /* USE_SRVLOC */ + if (strstr(buf, " -slp")) + options->flags &= ~OPTION_NOSLP; +#endif if (strstr(buf, " -nouservolfirst")) options->flags &= ~OPTION_USERVOLFIRST; @@ -319,48 +325,19 @@ int afp_options_parseline(char *buf, struct afp_options *options) } /* -[no]setuplog []*/ - if ((c = getoption(buf, "-setuplog"))) { - char *ptr, *logtype, *loglevel, *filename; - ptr = c; - - /* logtype */ - logtype = ptr; - - /* get loglevel */ - ptr = strpbrk(ptr, " \t"); - if (ptr) { - *ptr++ = 0; - while (*ptr && isspace(*ptr)) - ptr++; - loglevel = ptr; - - /* get filename */ - ptr = strpbrk(ptr, " \t"); - if (ptr) { - *ptr++ = 0; - while (*ptr && isspace(*ptr)) - ptr++; - } - filename = ptr; - } - - /* finally call setuplog, filename can be NULL */ - setuplog(logtype, loglevel, filename); + c = buf; + /* Now THIS is hokey! Multiple occurrences are not supported by our current code, */ + /* so I have to loop myself. */ + while (NULL != (c = strstr(c, "-setuplog"))) { + char *optstr; + if ((optstr = getoption(c, "-setuplog"))) { + setuplog(optstr); + c += sizeof("-setuplog"); + } } - if ((c = getoption(buf, "-unsetuplog"))) { - char *ptr, *logtype, *loglevel, *filename; - - /* logtype */ - logtype = c; - - /* get filename, can be NULL */ - strtok(c, " \t"); - filename = strtok(NULL, " \t"); - - /* finally call setuplog, filename can be NULL */ - setuplog(logtype, NULL, filename); - } + if ((c = getoption(buf, "-unsetuplog"))) + unsetuplog(c); #ifdef ADMIN_GRP if ((c = getoption(buf, "-admingroup"))) { @@ -392,6 +369,7 @@ int afp_options_parseline(char *buf, struct afp_options *options) options->uamlist = opt; if ((c = getoption(buf, "-ipaddr"))) { +#if 0 struct in_addr inaddr; if (inet_aton(c, &inaddr) && (opt = strdup(c))) { if (!gethostbyaddr((const char *) &inaddr, sizeof(inaddr), AF_INET)) @@ -401,22 +379,23 @@ int afp_options_parseline(char *buf, struct afp_options *options) else { LOG(log_error, logtype_afpd, "Error parsing -ipaddr, is %s in numbers-and-dots notation?", c); } +#endif + options->ipaddr = strdup(c); } /* FIXME CNID Cnid_srv is a server attribute */ if ((c = getoption(buf, "-cnidserver"))) { - char *p; - int len; - p = strchr(c, ':'); - if (p != NULL && (len = p - c) <= MAXHOSTNAMELEN) { - memcpy(Cnid_srv, c, len); - Cnid_srv[len] = 0; - Cnid_port = atoi(p +1); - } + char *p = strrchr(c, ':'); + if (p) + *p = 0; + Cnid_srv = strdup(c); + if (p) + Cnid_port = strdup(p + 1); + LOG(log_debug, logtype_afpd, "CNID Server: %s:%s", Cnid_srv, Cnid_port); } if ((c = getoption(buf, "-port"))) - options->port = atoi(c); + options->port = strdup(c); if ((c = getoption(buf, "-ddpaddr"))) atalk_aton(c, &options->ddpaddr); if ((c = getoption(buf, "-signature")) && (opt = strdup(c))) @@ -477,7 +456,7 @@ int afp_options_parseline(char *buf, struct afp_options *options) * Show version information about afpd. * Used by "afp -v". */ -void show_version( ) +static void show_version( void ) { printf( "afpd %s - Apple Filing Protocol (AFP) daemon of Netatalk\n\n", VERSION ); @@ -488,7 +467,7 @@ void show_version( ) puts( "afpd has been compiled with support for these features:\n" ); - printf( " AFP3.1 support:\t" ); + printf( " AFP3.x support:\t" ); #ifdef AFP3x puts( "Yes" ); #else @@ -535,7 +514,7 @@ void show_version( ) * Show extended version information about afpd and Netatalk. * Used by "afp -V". */ -void show_version_extended( ) +static void show_version_extended(void ) { show_version( ); @@ -599,18 +578,19 @@ void show_version_extended( ) /* * Display compiled-in default paths */ -void show_paths( void ) +static void show_paths( void ) { printf( " afpd.conf:\t%s\n", _PATH_AFPDCONF ); printf( " AppleVolumes.system:\t%s\n", _PATH_AFPDSYSVOL ); printf( " AppleVolumes.default:\t%s\n", _PATH_AFPDDEFVOL ); printf( " UAM search path:\t%s\n", _PATH_AFPDUAMPATH ); + printf( " Server messages path:\t%s\n", SERVERTEXT); } /* * Display usage information about adpd. */ -void show_usage( char *name ) +static void show_usage( char *name ) { fprintf( stderr, "Usage:\t%s [-dDIptTu] [-c maxconnections] [-f defaultvolumes] [-F config]\n", name ); fprintf( stderr, "\t [-g guest] [-L message] [-m umask][-n nbpname] [-P pidfile]\n" ); @@ -680,7 +660,7 @@ int afp_options_parse(int ac, char **av, struct afp_options *options) options->transports &= ~AFPTRANS_DDP; break; case 'S': - options->port = atoi(optarg); + options->port = optarg; break; case 'T': options->transports &= ~AFPTRANS_TCP;