X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=etc%2Fnetatalk%2Fnetatalk.c;h=0e5c6554edcd0464cab4b8373a09f867b3b86ae5;hb=130d356c840ea83c31c4724c8ae92660360eb07b;hp=8c46e4f5ca0fce631f17ede35ca3aa0319579672;hpb=87c02d4df072d4b069b2e75462b2ee95eeb1fe7a;p=netatalk.git diff --git a/etc/netatalk/netatalk.c b/etc/netatalk/netatalk.c index 8c46e4f5..0e5c6554 100644 --- a/etc/netatalk/netatalk.c +++ b/etc/netatalk/netatalk.c @@ -54,7 +54,7 @@ static void kill_childs(int sig, ...); /* static variables */ static AFPObj obj; -static pid_t afpd_pid = -1, cnid_metad_pid = -1, dbus_pid = -1, trackerd_pid = -1; +static pid_t afpd_pid = -1, cnid_metad_pid = -1, dbus_pid = -1; static uint afpd_restarts, cnid_metad_restarts, dbus_restarts, trackerd_restarts; static struct event_base *base; struct event *sigterm_ev, *sigquit_ev, *sigchld_ev, *timer_ev; @@ -78,15 +78,21 @@ static int set_sl_volumes(void) EC_NULL_LOG( volumes = getvolumes() ); for (vol = volumes; vol; vol = vol->v_next) { - bstring volnamequot = bformat("'%s'", vol->v_path); - bstrListPush(vollist, volnamequot); + if (vol->v_flags & AFPVOL_SPOTLIGHT) { + bstring volnamequot = bformat("'%s'", vol->v_path); + bstrListPush(vollist, volnamequot); + } } volnamelist = bjoin(vollist, sep); - cmd = bformat("gsettings set org.freedesktop.Tracker.Miner.Files index-recursive-directories \"[%s]\"", bdata(volnamelist)); + cmd = bformat("gsettings set org.freedesktop.Tracker.Miner.Files index-recursive-directories \"[%s]\"", + bdata(volnamelist) ? bdata(volnamelist) : ""); LOG(log_debug, logtype_sl, "set_sl_volumes: %s", bdata(cmd)); system(bdata(cmd)); + /* Disable default root user home indexing */ + system("gsettings set org.freedesktop.Tracker.Miner.Files index-single-directories \"[]\""); + EC_CLEANUP: if (cmd) bdestroy(cmd); @@ -157,7 +163,7 @@ static void sigterm_cb(evutil_socket_t fd, short what, void *arg) #ifdef HAVE_TRACKER_SPARQL system("tracker-control -t"); #endif - kill_childs(SIGTERM, &afpd_pid, &cnid_metad_pid, &dbus_pid, &trackerd_pid, NULL); + kill_childs(SIGTERM, &afpd_pid, &cnid_metad_pid, &dbus_pid, NULL); } /* SIGQUIT callback */ @@ -167,14 +173,14 @@ static void sigquit_cb(evutil_socket_t fd, short what, void *arg) #ifdef HAVE_TRACKER_SPARQL system("tracker-control -t"); #endif - kill_childs(SIGQUIT, &afpd_pid, &cnid_metad_pid, &dbus_pid, &trackerd_pid, NULL); + kill_childs(SIGQUIT, &afpd_pid, &cnid_metad_pid, &dbus_pid, NULL); } /* SIGHUP callback */ static void sighup_cb(evutil_socket_t fd, short what, void *arg) { LOG(log_note, logtype_afpd, "Received SIGHUP, sending all processes signal to reload config"); - kill_childs(SIGHUP, &afpd_pid, &cnid_metad_pid, &trackerd_pid, NULL); + kill_childs(SIGHUP, &afpd_pid, &cnid_metad_pid, NULL); } /* SIGCHLD callback */ @@ -202,13 +208,11 @@ static void sigchld_cb(evutil_socket_t fd, short what, void *arg) cnid_metad_pid = -1; else if (pid == dbus_pid) dbus_pid = -1; - else if (pid == trackerd_pid) - trackerd_pid = -1; else LOG(log_error, logtype_afpd, "Bad pid: %d", pid); } - if (in_shutdown && afpd_pid == -1 && cnid_metad_pid == -1 && dbus_pid == -1 && trackerd_pid == -1) + if (in_shutdown && afpd_pid == -1 && cnid_metad_pid == -1 && dbus_pid == -1) event_base_loopbreak(base); } @@ -234,6 +238,7 @@ static void timer_cb(evutil_socket_t fd, short what, void *arg) } } +#ifdef HAVE_TRACKER if (dbus_pid == -1) { dbus_restarts++; LOG(log_note, logtype_afpd, "Restarting 'dbus' (restarts: %u)", dbus_restarts); @@ -241,15 +246,6 @@ static void timer_cb(evutil_socket_t fd, short what, void *arg) LOG(log_error, logtype_default, "Error starting '%s'", dbus_path); } } - -#ifdef HAVE_TRACKER_RDF - if (trackerd_pid == -1) { - trackerd_restarts++; - LOG(log_note, logtype_afpd, "Restarting 'trackerd' (restarts: %u)", trackerd_restarts); - if ((trackerd_pid = run_process(TRACKER_RDF_PREFIX "/bin/trackerd", trackerd_loglev, NULL)) == -1) { - LOG(log_error, logtype_default, "Error starting '%s'", "/usr/bin/trackerd"); - } - } #endif } @@ -399,18 +395,12 @@ int main(int argc, char **argv) sigprocmask(SIG_SETMASK, &blocksigs, NULL); #ifdef HAVE_TRACKER - setenv("DBUS_SESSION_BUS_ADDRESS", "unix:path=/tmp/spotlight.ipc", 1); + setenv("DBUS_SESSION_BUS_ADDRESS", "unix:path=" _PATH_STATEDIR "spotlight.ipc", 1); setenv("XDG_DATA_HOME", _PATH_STATEDIR, 0); setenv("XDG_CACHE_HOME", _PATH_STATEDIR, 0); - setenv("XDG_CONFIG_HOME", _PATH_CONFDIR, 0); -#endif + setenv("TRACKER_USE_LOG_FILES", "1", 0); -#ifdef HAVE_TRACKER_RDF - /* This assumes Tracker 0.6 with RDF is only used on Solaris and derived platforms */ - dbus_path = iniparser_getstring(obj.iniconfig, INISEC_GLOBAL, "dbus daemon path", "/usr/lib/dbus-daemon"); -#else - dbus_path = iniparser_getstring(obj.iniconfig, INISEC_GLOBAL, "dbus daemon path", "/bin/dbus-daemon"); -#endif + dbus_path = atalk_iniparser_getstring(obj.iniconfig, INISEC_GLOBAL, "dbus daemon", DBUS_DAEMON_PATH); LOG(log_debug, logtype_default, "DBUS: '%s'", dbus_path); if ((dbus_pid = run_process(dbus_path, "--config-file=" _PATH_CONFDIR "dbus-session.conf", NULL)) == -1) { LOG(log_error, logtype_default, "Error starting '%s'", dbus_path); @@ -419,33 +409,30 @@ int main(int argc, char **argv) /* Allow dbus some time to start up */ sleep(1); +#endif #ifdef HAVE_TRACKER_SPARQL +#ifdef SOLARIS + setenv("XDG_DATA_DIRS", TRACKER_PREFIX "/share", 0); + setenv("TRACKER_DB_ONTOLOGIES_DIR", TRACKER_PREFIX "/share/tracker/ontologies", 0); + setenv("TRACKER_EXTRACTOR_RULES_DIR", TRACKER_PREFIX "/share/tracker/extract-rules", 0); + setenv("TRACKER_LANGUAGE_STOPWORDS_DIR", TRACKER_PREFIX "/share/tracker/languages", 0); +#endif set_sl_volumes(); system(TRACKER_PREFIX "/bin/tracker-control -s"); #endif -#ifdef HAVE_TRACKER_RDF - if (asprintf(&trackerd_loglev, "--verbosity=%d", obj.options.tracker_loglevel) == -1) - netatalk_exit(EXITERR_CONF); - if ((trackerd_pid = run_process(TRACKER_RDF_PREFIX "/bin/trackerd", trackerd_loglev, NULL)) == -1) { - LOG(log_error, logtype_default, "Error starting '%s'", TRACKER_RDF_PREFIX "/bin/trackerd"); - netatalk_exit(EXITERR_CONF); - } -#endif /* run the event loop */ ret = event_base_dispatch(base); - if (afpd_pid != -1 || cnid_metad_pid != -1 || dbus_pid != -1 || trackerd_pid != -1) { + if (afpd_pid != -1 || cnid_metad_pid != -1 || dbus_pid != -1) { if (afpd_pid != -1) LOG(log_error, logtype_afpd, "AFP service did not shutdown, killing it"); if (cnid_metad_pid != -1) LOG(log_error, logtype_afpd, "CNID database service did not shutdown, killing it"); if (dbus_pid != -1) LOG(log_error, logtype_afpd, "DBUS session daemon still running, killing it"); - if (trackerd_pid != -1) - LOG(log_error, logtype_afpd, "trackerd still running, killing it"); - kill_childs(SIGKILL, &afpd_pid, &cnid_metad_pid, &dbus_pid, &trackerd_pid, NULL); + kill_childs(SIGKILL, &afpd_pid, &cnid_metad_pid, &dbus_pid, NULL); } LOG(log_note, logtype_afpd, "Netatalk AFP server exiting");