]> arthur.barton.de Git - netatalk.git/commitdiff
Merge remote-tracking branch 'origin/branch-netatalk-3-0' into develop
authorRalph Boehme <sloowfranklin@gmail.com>
Tue, 14 May 2013 12:32:33 +0000 (14:32 +0200)
committerRalph Boehme <sloowfranklin@gmail.com>
Tue, 14 May 2013 12:32:33 +0000 (14:32 +0200)
1  2 
NEWS
configure.ac
include/atalk/globals.h
libatalk/util/netatalk_conf.c
macros/netatalk.m4

diff --combined NEWS
index 536bd87746f1ffefd2a4d77160f538a591077cd6,8eac3474d523b14d5345e3cc0a1a3835759330a9..1cfeab2d9080a9f0ec5b44fc6c87c7ac0d939167
--- 1/NEWS
--- 2/NEWS
+++ b/NEWS
@@@ -1,8 -1,3 +1,8 @@@
 +Changes in 3.1.0
 +================
 +* UPD: Add configure option --with-afpstats for overriding the
 +       result of autodetecting dbus-glib presence
 +
  Changes in 3.0.4
  ================
  * FIX: Opening files without metadata EA may result in an invalid
@@@ -26,6 -21,9 +26,9 @@@
  * FIX: Add missing include, fixes bug #512.
  * FIX: Change default FinderInfo for directories to be all 0, fixes
         bug 514.
+ * NEW: New option "afp interfaces" which allows specifying where
+        Netatalk listens for AFP connections by interface names.
+        From FR #79.
  
  Changes in 3.0.3
  ================
diff --combined configure.ac
index 421c9fef754f58fb0dcbd0659413a1566b7ef68a,e4d910c33fdb4e998475e5ff1e3251e91fafe267..3c9cb98811dadabc2398545c60b4984ceb2d5857
@@@ -25,8 -25,6 +25,8 @@@ AC_PROG_P
  AM_PROG_CC_C_O
  AC_C_BIGENDIAN
  AC_C_INLINE
 +AC_PROG_LEX
 +AC_PROG_YACC
  
  dnl Check if we can use attribute unused (gcc only) from ethereal
  AC_MSG_CHECKING(to see if we can add '__attribute__((unused))' to CFLAGS)
@@@ -82,6 -80,8 +82,8 @@@ AC_CHECK_FUNCS(mmap utime getpagesize) 
  dnl search for necessary libraries
  AC_SEARCH_LIBS(gethostbyname, nsl)
  AC_SEARCH_LIBS(connect, socket)
+ AC_CHECK_FUNCS(getifaddrs) dnl comes after gethostbyname and connect so it picks up the libs
  AX_PTHREAD(, [AC_MSG_ERROR([missing pthread_sigmask])])
  
  AC_DEFINE(OPEN_NOFOLLOW_ERRNO, ELOOP, errno returned by open with O_NOFOLLOW)
@@@ -182,9 -182,6 +184,9 @@@ AC_NETATALK_SENDFIL
  dnl Check whether bundled libevent shall not be used
  AC_NETATALK_LIBEVENT
  
 +dnl Check for Tracker
 +AC_NETATALK_SPOTLIGHT
 +
  dnl libatalk API checks
  AC_DEVELOPER
  
@@@ -266,7 -263,6 +268,7 @@@ AC_OUTPUT([Makefil
        etc/afpd/Makefile
        etc/cnid_dbd/Makefile
        etc/netatalk/Makefile
 +      etc/spotlight/Makefile
        etc/uams/Makefile
        include/Makefile
        include/atalk/Makefile
        libatalk/compat/Makefile
        libatalk/dsi/Makefile
        libatalk/iniparser/Makefile
 +      libatalk/talloc/Makefile
        libatalk/tdb/Makefile
        libatalk/unicode/Makefile
        libatalk/unicode/charsets/Makefile
diff --combined include/atalk/globals.h
index faadc71333d4ef2fcd5f4d4ec51128859b889743,b245601375afd4dae9f5d715d8050eed045eeb6f..aa08f01469ba5679dd0a1643e199fef1b2c5a43c
@@@ -57,7 -57,6 +57,7 @@@
  #define OPTION_ACL2MODE      (1 << 10)
  #define OPTION_SHARE_RESERV  (1 << 11) /* whether to use Solaris fcntl F_SHARE locks */
  #define OPTION_DBUS_AFPSTATS (1 << 12) /* whether to run dbus thread for afpstats */
 +#define OPTION_SPOTLIGHT     (1 << 13) /* whether to enable Spotlight support */
  
  #define PASSWD_NONE     0
  #define PASSWD_SET     (1 << 0)
@@@ -95,7 -94,7 +95,7 @@@ struct afp_options 
      uint32_t server_quantum;
      int dsireadbuf; /* scale factor for sizefof(dsi->buffer) = server_quantum * dsireadbuf */
      char *hostname;
-     char *listen, *port;
+     char *listen, *interfaces, *port;
      char *Cnid_srv, *Cnid_port;
      char *configfile;
      char *uampath, *fqdn;
      char *logfile;
      char *mimicmodel;
      char *adminauthuser;
 +    char *slmod_path;
 +    int tracker_loglevel;
      struct afp_volume_name volfile;
  };
  
index ce06b9d8a9fd7e28fd063ca74adda7caf0fce03f,923e9c84357ffdca3f42e8350467dee6f3aa52a1..bbbb3c3b8321f131d7d5e14d93bb4926fa819bc7
@@@ -918,16 -918,16 +918,16 @@@ static struct vol *creatvol(AFPObj *obj
      initvol_vfs(volume);
  
      /* get/store uuid from file in afpd master*/
 -    if (!(pwd) && (volume->v_flags & AFPVOL_TM)) {
 -        char *uuid = get_vol_uuid(obj, volume->v_localname);
 -        if (!uuid) {
 -            LOG(log_error, logtype_afpd, "Volume '%s': couldn't get UUID",
 -                volume->v_localname);
 -        } else {
 -            volume->v_uuid = uuid;
 -            LOG(log_debug, logtype_afpd, "Volume '%s': UUID '%s'",
 -                volume->v_localname, volume->v_uuid);
 -        }
 +    become_root();
 +    char *uuid = get_vol_uuid(obj, volume->v_localname);
 +    unbecome_root();
 +    if (!uuid) {
 +        LOG(log_error, logtype_afpd, "Volume '%s': couldn't get UUID",
 +            volume->v_localname);
 +    } else {
 +        volume->v_uuid = uuid;
 +        LOG(log_debug, logtype_afpd, "Volume '%s': UUID '%s'",
 +            volume->v_localname, volume->v_uuid);
      }
  
      /* no errors shall happen beyond this point because the cleanup would mess the volume chain up */
@@@ -1694,12 -1694,6 +1694,12 @@@ int afp_config_parse(AFPObj *AFPObj, ch
      options->configfile  = AFPObj->cmdlineconfigfile ? strdup(AFPObj->cmdlineconfigfile) : strdup(_PATH_CONFDIR "afp.conf");
      options->sigconffile = strdup(_PATH_STATEDIR "afp_signature.conf");
      options->uuidconf    = strdup(_PATH_STATEDIR "afp_voluuid.conf");
 +#ifdef HAVE_TRACKER_SPARQL
 +    options->slmod_path  = strdup(_PATH_AFPDUAMPATH "slmod_sparql.so");
 +#endif
 +#ifdef HAVE_TRACKER_RDF
 +    options->slmod_path  = strdup(_PATH_AFPDUAMPATH "slmod_rdf.so");
 +#endif
      options->flags       = OPTION_UUID | AFPObj->cmdlineflags;
      
      if ((config = iniparser_load(AFPObj->options.configfile)) == NULL)
          options->flags |= OPTION_DBUS_AFPSTATS;
      if (iniparser_getboolean(config, INISEC_GLOBAL, "afp read locks", 0))
          options->flags |= OPTION_AFP_READ_LOCK;
 +    if (iniparser_getboolean(config, INISEC_GLOBAL, "spotlight", 0))
 +        options->flags |= OPTION_SPOTLIGHT;
      if (!iniparser_getboolean(config, INISEC_GLOBAL, "save password", 1))
          options->passwdbits |= PASSWD_NOSAVE;
      if (iniparser_getboolean(config, INISEC_GLOBAL, "set password", 0))
      options->k5service      = iniparser_getstrdup(config, INISEC_GLOBAL, "k5 service",     NULL);
      options->k5realm        = iniparser_getstrdup(config, INISEC_GLOBAL, "k5 realm",       NULL);
      options->listen         = iniparser_getstrdup(config, INISEC_GLOBAL, "afp listen",     NULL);
+     options->interfaces     = iniparser_getstrdup(config, INISEC_GLOBAL, "afp interfaces", NULL);
      options->ntdomain       = iniparser_getstrdup(config, INISEC_GLOBAL, "nt domain",      NULL);
      options->addomain       = iniparser_getstrdup(config, INISEC_GLOBAL, "ad domain",      NULL);
      options->ntseparator    = iniparser_getstrdup(config, INISEC_GLOBAL, "nt separator",   NULL);
      options->fce_fmodwait   = iniparser_getint   (config, INISEC_GLOBAL, "fce holdfmod",   60);
      options->sleep          = iniparser_getint   (config, INISEC_GLOBAL, "sleep time",     10);
      options->disconnected   = iniparser_getint   (config, INISEC_GLOBAL, "disconnect time",24);
 +    options->tracker_loglevel = iniparser_getint (config, INISEC_GLOBAL, "tracker loglevel", 1);
  
      p = iniparser_getstring(config, INISEC_GLOBAL, "map acls", "rights");
      if (STRCMP(p, ==, "rights"))
@@@ -1950,6 -1942,8 +1951,8 @@@ void afp_config_free(AFPObj *obj
          CONFIG_ARG_FREE(obj->options.k5realm);
      if (obj->options.listen)
          CONFIG_ARG_FREE(obj->options.listen);
+     if (obj->options.interfaces)
+         CONFIG_ARG_FREE(obj->options.interfaces);
      if (obj->options.ntdomain)
          CONFIG_ARG_FREE(obj->options.ntdomain);
      if (obj->options.addomain)
          CONFIG_ARG_FREE(obj->options.Cnid_port);
      if (obj->options.fqdn)
          CONFIG_ARG_FREE(obj->options.fqdn);
 +    if (obj->options.slmod_path)
 +        CONFIG_ARG_FREE(obj->options.slmod_path);
  
      if (obj->options.unixcodepage)
          CONFIG_ARG_FREE(obj->options.unixcodepage);
diff --combined macros/netatalk.m4
index dc868ddc9878ab04611ae8aa713ed6b2bb6dc864,1a55276471d8e7c2066fd5db2b12006d0e22c189..790fead60c08c2ce652e220876d39da417f0db10
@@@ -20,7 -20,7 +20,7 @@@ AC_DEFUN(AX_CHECK_DOCBOOK, 
      if test -n "$XSLTPROC"; then
        AC_MSG_CHECKING([whether xsltproc works])
        DB_FILE="$DOCBOOK_ROOT/html/docbook.xsl"
-       $XSLTPROC $XSLTPROC_FLAGS $DB_FILE >/dev/null 2&>&1 << END
+       $XSLTPROC $XSLTPROC_FLAGS $DB_FILE >/dev/null 2>&1 << END
  <?xml version="1.0" encoding='ISO-8859-1'?>
  <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
  <book id="test">
@@@ -77,19 -77,16 +77,19 @@@ AC_DEFUN([AC_NETATALK_DTRACE], 
  
  dnl Check for dbus-glib, for AFP stats
  AC_DEFUN([AC_NETATALK_DBUS_GLIB], [
 -    atalk_cv_with_dbus=no
 +  atalk_cv_with_dbus=no
 +
 +  AC_ARG_WITH(afpstats,
 +    AS_HELP_STRING(
 +      [--with-afpstats],
 +      [Enable AFP statistics via dbus (default: enabled if dbus found)]
 +    ),,[withval=auto]
 +  )
 +
 +  if test x"$withval" != x"no" ; then
      PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.1, have_dbus=yes, have_dbus=no)
      PKG_CHECK_MODULES(DBUS_GLIB, dbus-glib-1, have_dbus_glib=yes, have_dbus_glib=no)
      PKG_CHECK_MODULES(DBUS_GTHREAD, gthread-2.0, have_dbus_gthread=yes, have_dbus_gthread=no)
 -    AC_SUBST(DBUS_CFLAGS)
 -    AC_SUBST(DBUS_LIBS)
 -    AC_SUBST(DBUS_GLIB_CFLAGS)
 -    AC_SUBST(DBUS_GLIB_LIBS)
 -    AC_SUBST(DBUS_GTHREAD_CFLAGS)
 -    AC_SUBST(DBUS_GTHREAD_LIBS)
      if test x$have_dbus_glib = xyes -a x$have_dbus = xyes -a x$have_dbus_gthread = xyes ; then
          saved_CFLAGS=$CFLAGS
          saved_LIBS=$LIBS
          CFLAGS="$saved_CFLAGS"
          LIBS="$saved_LIBS"
      fi
 -    AM_CONDITIONAL(HAVE_DBUS_GLIB, test x$atalk_cv_with_dbus = xyes)
 +  fi
  
 -    AC_ARG_WITH(
 -        dbus-sysconf-dir,
 -        [AS_HELP_STRING([--with-dbus-sysconf-dir=PATH],[Path to dbus system bus security configuration directory (default: ${sysconfdir}/dbus-1/system.d/)])],
 -        ac_cv_dbus_sysdir=$withval,
 -        ac_cv_dbus_sysdir='${sysconfdir}/dbus-1/system.d'
 -    )
 +  if test x"$withval" = x"yes" -a x"$atalk_cv_with_dbus" = x"no"; then
 +    AC_MSG_ERROR([afpstats requested but dbus-glib not found])
 +  fi
  
 -    if test x$atalk_cv_with_dbus = xyes ; then
 -        AC_DEFINE(HAVE_DBUS_GLIB, 1, [Define if support for dbus-glib was found])
 -        DBUS_SYS_DIR="$ac_cv_dbus_sysdir"
 -        AC_SUBST(DBUS_SYS_DIR)
 -    fi
 +  AC_ARG_WITH(
 +      dbus-sysconf-dir,
 +      [AS_HELP_STRING([--with-dbus-sysconf-dir=PATH],[Path to dbus system bus security configuration directory (default: ${sysconfdir}/dbus-1/system.d/)])],
 +      ac_cv_dbus_sysdir=$withval,
 +      ac_cv_dbus_sysdir='${sysconfdir}/dbus-1/system.d'
 +  )
 +  DBUS_SYS_DIR=""
 +  if test x$atalk_cv_with_dbus = xyes ; then
 +      AC_DEFINE(HAVE_DBUS_GLIB, 1, [Define if support for dbus-glib was found])
 +      DBUS_SYS_DIR="$ac_cv_dbus_sysdir"
 +  fi
 +
 +  AC_SUBST(DBUS_SYS_DIR)
 +  AC_SUBST(DBUS_CFLAGS)
 +  AC_SUBST(DBUS_LIBS)
 +  AC_SUBST(DBUS_GLIB_CFLAGS)
 +  AC_SUBST(DBUS_GLIB_LIBS)
 +  AC_SUBST(DBUS_GTHREAD_CFLAGS)
 +  AC_SUBST(DBUS_GTHREAD_LIBS)
 +  AM_CONDITIONAL(HAVE_DBUS_GLIB, test x$atalk_cv_with_dbus = xyes)
  ])
  
  dnl Whether to enable developer build
@@@ -140,72 -125,6 +140,72 @@@ AC_DEFUN([AC_DEVELOPER], 
      AM_CONDITIONAL(DEVELOPER, test x"$enable_dev" = x"yes")
  ])
  
 +dnl Tracker, for Spotlight
 +AC_DEFUN([AC_NETATALK_SPOTLIGHT], [
 +    ac_cv_have_tracker=no
 +    dnl Tracker SPARQL
 +    ac_cv_tracker_pkg_default=tracker-sparql-0.12
 +    AC_ARG_WITH([tracker-pkg-config],
 +      [AS_HELP_STRING([--with-tracker-pkg-config],[name of the Tracker SPARQL pkg in pkg-config])],
 +      [ac_cv_tracker_pkg=$withval],
 +      [ac_cv_tracker_pkg=$ac_cv_tracker_pkg_default])
 +
 +    PKG_CHECK_MODULES([TRACKER], [$ac_cv_tracker_pkg >= 0.12], [ac_cv_have_tracker_sparql=yes], [ac_cv_have_tracker_sparql=no])
 +
 +    if test x"$ac_cv_have_tracker_sparql" = x"no" ; then
 +        if test x"$need_tracker" = x"yes" ; then
 +            AC_MSG_ERROR([$ac_cv_tracker_pkg not found])
 +        fi
 +    else
 +        AC_DEFINE(HAVE_TRACKER, 1, [Define if Tracker is available])
 +        AC_DEFINE(HAVE_TRACKER_SPARQL, 1, [Define if Tracker SPARQL is available])
 +        ac_cv_tracker_prefix=`pkg-config --variable=prefix $ac_cv_tracker_pkg`
 +        AC_DEFINE_UNQUOTED(TRACKER_PREFIX, ["$ac_cv_tracker_prefix"], [Path to Tracker])
 +        AC_DEFINE([DBUS_DAEMON_PATH], ["/bin/dbus-daemon"], [Path to dbus-daemon])
 +      fi
 +
 +    ac_cv_tracker_miner_pkg_default=tracker-miner-0.12
 +    AC_ARG_WITH([tracker-miner-pkg-config],
 +      [AS_HELP_STRING([--with-tracker-miner-pkg-config],[name of the Tracker miner pkg in pkg-config])],
 +      [ac_cv_tracker_miner_pkg=$withval],
 +      [ac_cv_tracker_miner_pkg=$ac_cv_tracker_miner_pkg_default])
 +
 +    PKG_CHECK_MODULES([TRACKER_MINER], [$ac_cv_tracker_miner_pkg >= 0.12], [ac_cv_have_tracker_miner=yes], [ac_cv_have_tracker_miner=no])
 +
 +    if test x"$ac_cv_have_tracker_miner" = x"yes" ; then
 +        AC_DEFINE(HAVE_TRACKER_MINER, 1, [Define if Tracker miner library is available])
 +        AC_SUBST(TRACKER_MINER_CFLAGS)
 +        AC_SUBST(TRACKER_MINER_LIBS)
 +      fi
 +
 +    dnl Test for Tracker 0.6 on Solaris and derived platforms, and FreeBSD
 +    if test x"$this_os" = x"solaris" -o x"$this_os" = x"freebsd" ; then
 +        PKG_CHECK_MODULES([TRACKER], [tracker >= 0.6], [ac_cv_have_tracker_rdf=yes], [ac_cv_have_tracker_rdf=no])
 +        if test x"$ac_cv_have_tracker_rdf" = x"yes" ; then
 +            AC_DEFINE(HAVE_TRACKER, 1, [Define if Tracker is available])
 +            AC_DEFINE(HAVE_TRACKER_RDF, 1, [Define if Tracker 0.6 with support for RDF queries is available])
 +            case "$this_os" in
 +            *solaris*)
 +                AC_DEFINE([DBUS_DAEMON_PATH], ["/usr/lib/dbus-daemon"], [Path to dbus-daemon])
 +                AC_DEFINE([TRACKERD_PATH], ["/bin/trackerd"], [Path to trackerd])
 +                ;;
 +            *freebsd*)
 +                AC_DEFINE([DBUS_DAEMON_PATH], ["/usr/local/bin/dbus-daemon"], [Path to dbus-daemon])
 +                AC_DEFINE([TRACKERD_PATH], ["/usr/local/libexec/trackerd"], [Path to trackerd])
 +                ;;
 +            esac
 +          fi
 +    fi
 +
 +    if test x"$ac_cv_have_tracker_sparql" = x"yes" -o x"$ac_cv_have_tracker_rdf" = x"yes" ; then
 +       ac_cv_have_tracker=yes
 +    fi
 +    AC_SUBST(TRACKER_CFLAGS)
 +    AC_SUBST(TRACKER_LIBS)
 +    AM_CONDITIONAL(HAVE_TRACKER_SPARQL, [test x"$ac_cv_have_tracker_sparql" = x"yes"])
 +    AM_CONDITIONAL(HAVE_TRACKER_RDF, [test x"$ac_cv_have_tracker_rdf" = x"yes"])
 +])
 +
  dnl Whether to disable bundled libevent
  AC_DEFUN([AC_NETATALK_LIBEVENT], [
      AC_MSG_CHECKING([whether to use bundled libevent])