diff options
Diffstat (limited to 'avahi-daemon')
-rw-r--r-- | avahi-daemon/avahi-daemon.conf | 2 | ||||
-rw-r--r-- | avahi-daemon/dbus-protocol.c | 9 | ||||
-rw-r--r-- | avahi-daemon/dbus-protocol.h | 2 | ||||
-rw-r--r-- | avahi-daemon/main.c | 12 |
4 files changed, 20 insertions, 5 deletions
diff --git a/avahi-daemon/avahi-daemon.conf b/avahi-daemon/avahi-daemon.conf index ce6b0a2..9572c0a 100644 --- a/avahi-daemon/avahi-daemon.conf +++ b/avahi-daemon/avahi-daemon.conf @@ -8,6 +8,8 @@ check-response-ttl=no use-iff-running=no enable-dbus=yes disallow-other-stacks=no +disable-publishing=no +disable-user-service-publishing=no [wide-area] enable-wide-area=yes diff --git a/avahi-daemon/dbus-protocol.c b/avahi-daemon/dbus-protocol.c index 517b954..c6c4a67 100644 --- a/avahi-daemon/dbus-protocol.c +++ b/avahi-daemon/dbus-protocol.c @@ -63,6 +63,8 @@ Server *server = NULL; +static int disable_user_service_publishing = 0; + static void client_free(Client *c) { assert(server); @@ -386,6 +388,9 @@ static DBusHandlerResult msg_server_impl(DBusConnection *c, DBusMessage *m, AVAH goto fail; } + if (disable_user_service_publishing) + return avahi_dbus_respond_error(c, m, AVAHI_ERR_NOT_PERMITTED, NULL); + if (!(client = client_get(dbus_message_get_sender(m), TRUE))) { avahi_log_warn("Too many clients, client request failed."); return avahi_dbus_respond_error(c, m, AVAHI_ERR_TOO_MANY_CLIENTS, NULL); @@ -917,7 +922,7 @@ void dbus_protocol_server_state_changed(AvahiServerState state) { dbus_message_unref(m); } -int dbus_protocol_setup(const AvahiPoll *poll_api) { +int dbus_protocol_setup(const AvahiPoll *poll_api, int _disable_user_service_publishing) { DBusError error; static const DBusObjectPathVTable server_vtable = { @@ -931,6 +936,8 @@ int dbus_protocol_setup(const AvahiPoll *poll_api) { dbus_error_init(&error); + disable_user_service_publishing = _disable_user_service_publishing; + server = avahi_new(Server, 1); AVAHI_LLIST_HEAD_INIT(Clients, server->clients); server->current_id = 0; diff --git a/avahi-daemon/dbus-protocol.h b/avahi-daemon/dbus-protocol.h index 0877426..d23b524 100644 --- a/avahi-daemon/dbus-protocol.h +++ b/avahi-daemon/dbus-protocol.h @@ -22,7 +22,7 @@ USA. ***/ -int dbus_protocol_setup(const AvahiPoll *poll_api); +int dbus_protocol_setup(const AvahiPoll *poll_api, int disable_user_service_publishing); void dbus_protocol_shutdown(void); void dbus_protocol_server_state_changed(AvahiServerState state); diff --git a/avahi-daemon/main.c b/avahi-daemon/main.c index a903e63..44300ff 100644 --- a/avahi-daemon/main.c +++ b/avahi-daemon/main.c @@ -101,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; @@ -486,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) { @@ -723,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; @@ -1012,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; |