Anonymous auth method is broken

Peter Würtz wuertz at uni-mainz.de
Sun Feb 1 01:55:12 PST 2009


Ok, thanks for the explanation! For some reason I never stumbled over
the information that dbus-daemon doesn't work with ANONYMOUS. I just
found alot of posts from people trying to setup remote tcp connections
to dbus-daemon and failed so far.

So you're saying that for this non-intended usage of dbus one would have
to build a own kind dbus-server using the dbus API. Unfortunately there
is no tutorial how to do this and the higher level bindings such as
python-dbus only feature dbus-client functionality.

How about some really minimalistic anonymous-dbus-server example for
people to work with? I don't really know much about this dbus low-level
stuff.. but is this going to work like this (code appended)? Where is
the "dbus_server_run(DbusServer* server)" method I'm missing?

#include <stdio.h>
#include <stdlib.h>
#include <dbus/dbus.h>

static void new_conn_callback(
		DBusServer *server, DBusConnection *new_connection, void *data)
	{
	  dbus_connection_set_allow_anonymous(new_connection, true);
	}

int main() {
	DBusServer *server;
	DBusError error;
	dbus_error_init(&error);

	// server listening on tcp port
	server = dbus_server_listen("tcp:host=localhost,port=54321", &error);
	if (!server) {
		printf("error: %s\n", error.message);
		exit(1);
	}
	printf("server address: %s\n", dbus_server_get_address(server));

	// add anonymous auth method
	const char* auth_methods[] = {"ANONYMOUS",NULL};
	dbus_server_set_auth_mechanisms(server, auth_methods);

	// set allow_anonymous for new connections
	dbus_server_set_new_connection_function(server, new_conn_callback, NULL, NULL);

	/* now I need something like
	 * dbus_server_run(server);
	 * how is this done using the dbus api?
	 */

	return 0;
}



More information about the dbus mailing list