- /* transports */
- if (strstr(buf, " -transall"))
- options->transports = AFPTRANS_ALL;
- if (strstr(buf, " -notransall"))
- options->transports = AFPTRANS_NONE;
- if (strstr(buf, " -tcp"))
- options->transports |= AFPTRANS_TCP;
- if (strstr(buf, " -notcp"))
- options->transports &= ~AFPTRANS_TCP;
- if (strstr(buf, " -ddp"))
- options->transports |= AFPTRANS_DDP;
- if (strstr(buf, " -noddp"))
- options->transports &= ~AFPTRANS_DDP;
- if (strstr(buf, "-client_polling"))
- options->server_notif = 0;
-
- /* figure out options w/ values. currently, this will ignore the setting
- * if memory is lacking. */
-
- if ((c = getoption(buf, "-hostname"))) {
- int len = strlen (c);
- if (len <= MAXHOSTNAMELEN) {
- memcpy(options->hostname, c, len);
- options->hostname[len] = 0;
- }
- else
- LOG(log_info, logtype_afpd, "WARNING: hostname %s is too long (%d)",c,len);
+ /* figure out options w values */
+
+ options->loginmesg = iniparser_getstrdup(config, INISEC_AFP, "loginmesg", "");
+ options->guest = iniparser_getstrdup(config, INISEC_AFP, "guestname", "nobody");
+ options->passwdfile = iniparser_getstrdup(config, INISEC_AFP, "passwdfile", _PATH_AFPDPWFILE);
+ options->uampath = iniparser_getstrdup(config, INISEC_AFP, "uampath", _PATH_AFPDUAMPATH);
+ options->uamlist = iniparser_getstrdup(config, INISEC_AFP, "uamlist", "uams_dhx.so,uams_dhx2.so");
+ options->port = iniparser_getstrdup(config, INISEC_AFP, "port", "548");
+ options->signatureopt = iniparser_getstrdup(config, INISEC_AFP, "signature", "auto");
+ options->k5service = iniparser_getstrdup(config, INISEC_AFP, "k5service", NULL);
+ options->k5realm = iniparser_getstrdup(config, INISEC_AFP, "k5realm", NULL);
+ options->authprintdir = iniparser_getstrdup(config, INISEC_AFP, "authprintdir", NULL);
+ options->listen = iniparser_getstrdup(config, INISEC_AFP, "listen", NULL);
+ options->hostname = iniparser_getstrdup(config, INISEC_AFP, "hostname", NULL);
+ options->ntdomain = iniparser_getstrdup(config, INISEC_AFP, "ntdomain", NULL);
+ options->ntseparator = iniparser_getstrdup(config, INISEC_AFP, "ntseparator", NULL);
+ options->mimicmodel = iniparser_getstrdup(config, INISEC_AFP, "mimicmodel", NULL);
+ options->adminauthuser = iniparser_getstrdup(config, INISEC_AFP, "adminauthuser", NULL);
+ options->connections = iniparser_getint (config, INISEC_AFP, "maxcon", 200);
+ options->passwdminlen = iniparser_getint (config, INISEC_AFP, "passwdminlen", 0);
+ options->tickleval = iniparser_getint (config, INISEC_AFP, "tickleval", 30);
+ options->timeout = iniparser_getint (config, INISEC_AFP, "timeout", 4);
+ options->dsireadbuf = iniparser_getint (config, INISEC_AFP, "dsireadbuf", 12);
+ options->server_quantum = iniparser_getint (config, INISEC_AFP, "server_quantum", DSI_SERVQUANT_DEF);
+ options->volnamelen = iniparser_getint (config, INISEC_AFP, "volnamelen", 80);
+ options->dircachesize = iniparser_getint (config, INISEC_AFP, "dircachesize", DEFAULT_MAX_DIRCACHE_SIZE);
+ options->tcp_sndbuf = iniparser_getint (config, INISEC_AFP, "tcpsndbuf", 0);
+ options->tcp_rcvbuf = iniparser_getint (config, INISEC_AFP, "tcprcvbuf", 0);
+ options->fce_fmodwait = iniparser_getint (config, INISEC_AFP, "fceholdfmod", 60);
+ options->sleep = iniparser_getint (config, INISEC_AFP, "sleep", 10) * 60 * 2;
+ options->disconnected = iniparser_getint (config, INISEC_AFP, "disconnect", 24) * 60 * 2;
+
+
+ if ((p = iniparser_getstring(config, INISEC_AFP, "k5keytab", NULL))) {
+ EC_NULL_LOG( options->k5keytab = malloc(strlen(p) + 14) );
+ snprintf(options->k5keytab, strlen(p) + 14, "KRB5_KTNAME=%s", p);
+ putenv(options->k5keytab);