]> git.meshlink.io Git - catta/blobdiff - avahi-daemon/main.c
* add two new configuration file options: "disable-publishing" and "disable-user...
[catta] / avahi-daemon / main.c
index 45c4f59f7f5be9337f0cf133004542e47c25eb69..44300ffc0fbc759cf51b5fa3784b3a4ec88994ac 100644 (file)
@@ -50,6 +50,7 @@
 #include <avahi-common/simple-watch.h>
 #include <avahi-common/error.h>
 #include <avahi-common/alternative.h>
+#include <avahi-common/domain.h>
 
 #include <avahi-core/core.h>
 #include <avahi-core/publish.h>
@@ -100,7 +101,8 @@ typedef struct {
     int use_chroot;
 #endif
     int modify_proc_title;
-    
+
+    int disable_user_service_publishing;
     int publish_resolv_conf;
     char ** publish_dns_servers;
     int debug;
@@ -457,6 +459,24 @@ static int load_config_file(DaemonConfig *c) {
                 } else if (strcasecmp(p->key, "domain-name") == 0) {
                     avahi_free(c->server_config.domain_name);
                     c->server_config.domain_name = avahi_strdup(p->value);
+                } else if (strcasecmp(p->key, "browse-domains") == 0) {
+                    char **e, **t;
+
+                    e = avahi_split_csv(p->value);
+                    
+                    for (t = e; *t; t++) {
+                        char cleaned[AVAHI_DOMAIN_NAME_MAX];
+
+                        if (!avahi_normalize_name(*t, cleaned, sizeof(cleaned))) {
+                            avahi_log_error("Invalid domain name \"%s\" for key \"%s\" in group \"%s\"\n", *t, p->key, g->name);
+                            avahi_strfreev(e);
+                            goto finish;
+                        }
+
+                        c->server_config.browse_domains = avahi_string_list_add(c->server_config.browse_domains, cleaned);
+                    }
+                    
+                    avahi_strfreev(e);
                 } else if (strcasecmp(p->key, "use-ipv4") == 0)
                     c->server_config.use_ipv4 = is_yes(p->value);
                 else if (strcasecmp(p->key, "use-ipv6") == 0)
@@ -467,6 +487,10 @@ static int load_config_file(DaemonConfig *c) {
                     c->server_config.use_iff_running = is_yes(p->value);
                 else if (strcasecmp(p->key, "disallow-other-stacks") == 0)
                     c->server_config.disallow_other_stacks = is_yes(p->value);
+                else if (strcasecmp(p->key, "disable-publishing") == 0)
+                    c->server_config.disable_publishing = is_yes(p->value);
+                else if (strcasecmp(p->key, "disable-user-service-publishing") == 0)
+                    c->disable_user_service_publishing = is_yes(p->value);
 #ifdef HAVE_DBUS
                 else if (strcasecmp(p->key, "enable-dbus") == 0) {
 
@@ -481,10 +505,6 @@ static int load_config_file(DaemonConfig *c) {
                     }
                 }
 #endif
-               else if (strcasecmp(p->key, "drop-root") == 0)
-                    c->drop_root = is_yes(p->value);
-                else if (strcasecmp(p->key, "add-service-cookie") == 0)
-                    c->server_config.add_service_cookie = is_yes(p->value);
                 else {
                     avahi_log_error("Invalid configuration key \"%s\" in group \"%s\"\n", p->key, g->name);
                     goto finish;
@@ -506,9 +526,11 @@ static int load_config_file(DaemonConfig *c) {
                     c->server_config.publish_domain = is_yes(p->value);
                 else if (strcasecmp(p->key, "publish-resolv-conf-dns-servers") == 0)
                     c->publish_resolv_conf = is_yes(p->value);
+                else if (strcasecmp(p->key, "add-service-cookie") == 0)
+                    c->server_config.add_service_cookie = is_yes(p->value);
                 else if (strcasecmp(p->key, "publish-dns-servers") == 0) {
                     avahi_strfreev(c->publish_dns_servers);
-                    c->publish_dns_servers = avahi_split_csv(p->value);
+                    c->publish_dns_servers = avahi_split_csv(p->value); 
                 } else {
                     avahi_log_error("Invalid configuration key \"%s\" in group \"%s\"\n", p->key, g->name);
                     goto finish;
@@ -706,7 +728,7 @@ static int run_server(DaemonConfig *c) {
 
 #ifdef HAVE_DBUS
     if (c->enable_dbus) {
-        if (dbus_protocol_setup(poll_api) < 0) {
+        if (dbus_protocol_setup(poll_api, config.disable_user_service_publishing) < 0) {
 
             if (c->fail_on_missing_dbus)
                 goto finish;
@@ -995,7 +1017,8 @@ int main(int argc, char *argv[]) {
     config.use_chroot = 1;
 #endif
     config.modify_proc_title = 1;
-    
+
+    config.disable_user_service_publishing = 0;
     config.publish_dns_servers = NULL;
     config.publish_resolv_conf = 0;
     config.use_syslog = 0;