- options->logconfig = iniparser_getstrdup(config, INISEC_GLOBAL, "loglevel", "default:note");
- options->logfile = iniparser_getstrdup(config, INISEC_GLOBAL, "logfile", NULL);
-
- /* [AFP] "options" options wo values */
- if (q = iniparser_getstrdup(config, INISEC_GLOBAL, "options", NULL)) {
- if (p = strtok(q, ", ")) {
- while (p) {
- if (strcasecmp(p, "nozeroconf"))
- options->flags |= OPTION_NOZEROCONF;
- if (strcasecmp(p, "icon"))
- options->flags |= OPTION_CUSTOMICON;
- if (strcasecmp(p, "noicon"))
- options->flags &= ~OPTION_CUSTOMICON;
- if (strcasecmp(p, "advertise_ssh"))
- options->flags |= OPTION_ANNOUNCESSH;
- if (strcasecmp(p, "noacl2maccess"))
- options->flags &= ~OPTION_ACL2MACCESS;
- if (strcasecmp(p, "keepsessions"))
- options->flags |= OPTION_KEEPSESSIONS;
- if (strcasecmp(p, "closevol"))
- options->flags |= OPTION_CLOSEVOL;
- if (strcasecmp(p, "client_polling"))
- options->flags &= ~OPTION_SERVERNOTIF;
- if (strcasecmp(p, "nosavepassword"))
- options->passwdbits |= PASSWD_NOSAVE;
- if (strcasecmp(p, "savepassword"))
- options->passwdbits &= ~PASSWD_NOSAVE;
- if (strcasecmp(p, "nosetpassword"))
- options->passwdbits &= ~PASSWD_SET;
- if (strcasecmp(p, "setpassword"))
- options->passwdbits |= PASSWD_SET;
- p = strtok(NULL, ", ");
- }
+ options->logconfig = atalk_iniparser_getstrdup(config, INISEC_GLOBAL, "log level", "default:note");
+ options->logfile = atalk_iniparser_getstrdup(config, INISEC_GLOBAL, "log file", NULL);
+
+ setuplog(options->logconfig, options->logfile);
+
+ /* "server options" boolean options */
+ if (!atalk_iniparser_getboolean(config, INISEC_GLOBAL, "zeroconf", 1))
+ options->flags |= OPTION_NOZEROCONF;
+ if (atalk_iniparser_getboolean(config, INISEC_GLOBAL, "advertise ssh", 0))
+ options->flags |= OPTION_ANNOUNCESSH;
+ if (atalk_iniparser_getboolean(config, INISEC_GLOBAL, "close vol", 0))
+ options->flags |= OPTION_CLOSEVOL;
+ if (!atalk_iniparser_getboolean(config, INISEC_GLOBAL, "client polling", 0))
+ options->flags |= OPTION_SERVERNOTIF;
+ if (!atalk_iniparser_getboolean(config, INISEC_GLOBAL, "use sendfile", 1))
+ options->flags |= OPTION_NOSENDFILE;
+ if (atalk_iniparser_getboolean(config, INISEC_GLOBAL, "solaris share reservations", 1))
+ options->flags |= OPTION_SHARE_RESERV;
+ if (atalk_iniparser_getboolean(config, INISEC_GLOBAL, "afpstats", 0))
+ options->flags |= OPTION_DBUS_AFPSTATS;
+ if (atalk_iniparser_getboolean(config, INISEC_GLOBAL, "afp read locks", 0))
+ options->flags |= OPTION_AFP_READ_LOCK;
+ if (atalk_iniparser_getboolean(config, INISEC_GLOBAL, "veto message", 0))
+ options->flags |= OPTION_VETOMSG;
+ if (!atalk_iniparser_getboolean(config, INISEC_GLOBAL, "save password", 1))
+ options->passwdbits |= PASSWD_NOSAVE;
+ if (atalk_iniparser_getboolean(config, INISEC_GLOBAL, "set password", 0))
+ options->passwdbits |= PASSWD_SET;
+
+ /* figure out options w values */
+ options->loginmesg = atalk_iniparser_getstrdup(config, INISEC_GLOBAL, "login message", NULL);
+ options->guest = atalk_iniparser_getstrdup(config, INISEC_GLOBAL, "guest account", "nobody");
+ options->extmapfile = atalk_iniparser_getstrdup(config, INISEC_GLOBAL, "extmap file", _PATH_CONFDIR "extmap.conf");
+ options->passwdfile = atalk_iniparser_getstrdup(config, INISEC_GLOBAL, "passwd file", _PATH_AFPDPWFILE);
+ options->uampath = atalk_iniparser_getstrdup(config, INISEC_GLOBAL, "uam path", _PATH_AFPDUAMPATH);
+ options->uamlist = atalk_iniparser_getstrdup(config, INISEC_GLOBAL, "uam list", "uams_dhx.so uams_dhx2.so");
+ options->port = atalk_iniparser_getstrdup(config, INISEC_GLOBAL, "afp port", "548");
+ options->signatureopt = atalk_iniparser_getstrdup(config, INISEC_GLOBAL, "signature", "");
+ options->k5service = atalk_iniparser_getstrdup(config, INISEC_GLOBAL, "k5 service", NULL);
+ options->k5realm = atalk_iniparser_getstrdup(config, INISEC_GLOBAL, "k5 realm", NULL);
+ options->listen = atalk_iniparser_getstrdup(config, INISEC_GLOBAL, "afp listen", NULL);
+ options->interfaces = atalk_iniparser_getstrdup(config, INISEC_GLOBAL, "afp interfaces", NULL);
+ options->ntdomain = atalk_iniparser_getstrdup(config, INISEC_GLOBAL, "nt domain", NULL);
+ options->addomain = atalk_iniparser_getstrdup(config, INISEC_GLOBAL, "ad domain", NULL);
+ options->ntseparator = atalk_iniparser_getstrdup(config, INISEC_GLOBAL, "nt separator", NULL);
+ options->mimicmodel = atalk_iniparser_getstrdup(config, INISEC_GLOBAL, "mimic model", NULL);
+ options->adminauthuser = atalk_iniparser_getstrdup(config, INISEC_GLOBAL, "admin auth user",NULL);
+ options->ignored_attr = atalk_iniparser_getstrdup(config, INISEC_GLOBAL, "ignored attributes", NULL);
+ options->connections = atalk_iniparser_getint (config, INISEC_GLOBAL, "max connections",200);
+ options->passwdminlen = atalk_iniparser_getint (config, INISEC_GLOBAL, "passwd minlen", 0);
+ options->tickleval = atalk_iniparser_getint (config, INISEC_GLOBAL, "tickleval", 30);
+ options->timeout = atalk_iniparser_getint (config, INISEC_GLOBAL, "timeout", 4);
+ options->dsireadbuf = atalk_iniparser_getint (config, INISEC_GLOBAL, "dsireadbuf", 12);
+ options->server_quantum = atalk_iniparser_getint (config, INISEC_GLOBAL, "server quantum", DSI_SERVQUANT_DEF);
+ options->volnamelen = atalk_iniparser_getint (config, INISEC_GLOBAL, "volnamelen", 80);
+ options->dircachesize = atalk_iniparser_getint (config, INISEC_GLOBAL, "dircachesize", DEFAULT_MAX_DIRCACHE_SIZE);
+ options->tcp_sndbuf = atalk_iniparser_getint (config, INISEC_GLOBAL, "tcpsndbuf", 0);
+ options->tcp_rcvbuf = atalk_iniparser_getint (config, INISEC_GLOBAL, "tcprcvbuf", 0);
+ options->fce_fmodwait = atalk_iniparser_getint (config, INISEC_GLOBAL, "fce holdfmod", 60);
+ options->sleep = atalk_iniparser_getint (config, INISEC_GLOBAL, "sleep time", 10);
+ options->disconnected = atalk_iniparser_getint (config, INISEC_GLOBAL, "disconnect time",24);
+
+ p = atalk_iniparser_getstring(config, INISEC_GLOBAL, "map acls", "rights");
+ if (STRCMP(p, ==, "rights"))
+ options->flags |= OPTION_ACL2MACCESS;
+ else if (STRCMP(p, ==, "mode"))
+ options->flags |= OPTION_ACL2MODE | OPTION_ACL2MACCESS;
+ else {
+ if (STRCMP(p, !=, "none")) {
+ LOG(log_error, logtype_afpd, "bad ACL mapping option: %s, defaulting to 'rights'", p);
+ options->flags |= OPTION_ACL2MACCESS;