diff options
-rw-r--r-- | extras/dbus/Makefile | 68 | ||||
-rw-r--r-- | extras/dbus/dbus-listen-test.py | 26 | ||||
-rw-r--r-- | extras/dbus/etc/dbus-1/system.d/udev_sysbus_policy.conf | 23 | ||||
-rw-r--r-- | extras/dbus/udev_dbus.c | 195 |
4 files changed, 0 insertions, 312 deletions
diff --git a/extras/dbus/Makefile b/extras/dbus/Makefile deleted file mode 100644 index 0cfc650c4b..0000000000 --- a/extras/dbus/Makefile +++ /dev/null @@ -1,68 +0,0 @@ -# Makefile for udev_dbus -# -# Copyright (C) 2004 Greg Kroah-Hartman <greg@kroah.com> -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; version 2 of the License. -# - -# Set the following to `true' to log the debug -# and make a unstripped, unoptimized binary. -# Leave this set to `false' for production use. -DEBUG = false - -PROG = udev_dbus - -all: $(PROG) - -# override this to make udev look in a different location for it's config files -prefix = -exec_prefix = ${prefix} -etcdir = ${prefix}/etc -sbindir = ${exec_prefix}/sbin -usrbindir = ${exec_prefix}/usr/bin -usrsbindir = ${exec_prefix}/usr/sbin -mandir = ${prefix}/usr/share/man -devddir = ${etcdir}/dev.d/default -dbusdir = ${etcdir}/dbus-1/system.d -configdir = ${etcdir}/udev/ -initdir = ${etcdir}/init.d/ -srcdir = . - -INSTALL = /usr/bin/install -c -INSTALL_PROGRAM = ${INSTALL} -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_SCRIPT = ${INSTALL_PROGRAM} - -override CFLAGS+=-Wall -fno-builtin - -override CFLAGS += -DUSE_DBUS -override CFLAGS += $(shell pkg-config --cflags dbus-1) -override LDFLAGS += $(shell pkg-config --libs dbus-1) -OBJS = udev_dbus.o - -$(PROG): $(OBJS) - $(LD) $(LDFLAGS) -o $(PROG) $(CRT0) $(OBJS) ../../udev_lib.o $(LIB_OBJS) $(ARCH_LIB_OBJS) - -clean: - rm -f $(PROG) $(OBJS) - -spotless: clean - - -install-dbus-policy: - $(INSTALL) -d $(DESTDIR)$(dbusdir) - -uninstall-dbus-policy: - - rm $(DESTDIR)$(dbusdir)/udev_sysbus_policy.conf - -install: install-dbus-policy all - $(INSTALL_DATA) etc/dbus-1/system.d/udev_sysbus_policy.conf $(DESTDIR)$(dbusdir) - $(INSTALL_PROGRAM) $(PROG) $(DESTDIR)$(usrsbindir)/$(PROG) - - ln -s -f $(DESTDIR)$(usrsbindir)/$(PROG) $(DESTDIR)$(devddir)/$(PROG).dev - -uninstall: uninstall-dbus-policy - - rm $(DESTDIR)$(devddir)/$(PROG).dev - - rm $(DESTDIR)$(usrsbindir)/$(PROG) - diff --git a/extras/dbus/dbus-listen-test.py b/extras/dbus/dbus-listen-test.py deleted file mode 100644 index 6a68b5d2aa..0000000000 --- a/extras/dbus/dbus-listen-test.py +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/python - -# receives and prints the messages udev_dbus sent -# to the org.kernel.udev.NodeMonitor interface - -import dbus -import gtk - -def udev_signal_received(dbus_iface, member, service, object_path, message): - [filename, sysfs_path] = message.get_args_list() - if member=='NodeCreated': - print 'Node %s created for %s'%(filename, sysfs_path) - elif member=='NodeDeleted': - print 'Node %s deleted for %s'%(filename, sysfs_path) - -def main(): - bus = dbus.Bus(dbus.Bus.TYPE_SYSTEM) - bus.add_signal_receiver(udev_signal_received, - 'org.kernel.udev.NodeMonitor', # interface - 'org.kernel.udev', # service - '/org/kernel/udev/NodeMonitor') # object - gtk.mainloop() - -if __name__ == '__main__': - main() - diff --git a/extras/dbus/etc/dbus-1/system.d/udev_sysbus_policy.conf b/extras/dbus/etc/dbus-1/system.d/udev_sysbus_policy.conf deleted file mode 100644 index b2660e65cf..0000000000 --- a/extras/dbus/etc/dbus-1/system.d/udev_sysbus_policy.conf +++ /dev/null @@ -1,23 +0,0 @@ -<!DOCTYPE busconfig PUBLIC - "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" - "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> -<busconfig> - - <!-- This configuration file specifies the required security policies - for udev to work. --> - - <!-- Only root can own the udev service and only root can use the - org.kernel.udev.NodeMonitor interface to send signals --> - <policy user="root"> - <allow own="org.kernel.udev"/> - - <allow send_interface="org.kernel.udev.NodeMonitor"/> - </policy> - - <!-- Allow anyone to listen to the org.kernel.udev.NodeMonitor interface - for messages send from the owner of the org.kernel.udev service --> - <policy context="default"> - <allow receive_interface="org.kernel.udev.NodeMonitor"/> - </policy> -</busconfig> - diff --git a/extras/dbus/udev_dbus.c b/extras/dbus/udev_dbus.c deleted file mode 100644 index 4852d429f8..0000000000 --- a/extras/dbus/udev_dbus.c +++ /dev/null @@ -1,195 +0,0 @@ -/* - * udev_dbus.c - * - * Copyright (C) 2003 David Zeuthen <david@fubar.dk> - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation version 2 of the License. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ - -#include <stdlib.h> -#include <string.h> -#include <stdio.h> -#include <fcntl.h> -#include <unistd.h> -#include <errno.h> -#include <ctype.h> - -#define DBUS_API_SUBJECT_TO_CHANGE -#include <dbus/dbus.h> - -#include "../../udev_lib.h" -#include "../../logging.h" - -#ifdef LOG -unsigned char logname[LOGNAME_SIZE]; -void log_message(int level, const char *format, ...) -{ - va_list args; - - va_start(args, format); - vsyslog(level, format, args); - va_end(args); -} -#endif - -/* Variable for the connection the to system message bus or NULL - * if we cannot connect or acquire the org.kernel.udev service - */ -static DBusConnection* sysbus_connection; - -/* Disconnect from the system message bus */ -static void sysbus_disconnect(void) -{ - if (sysbus_connection == NULL) - return; - - dbus_connection_disconnect(sysbus_connection); - sysbus_connection = NULL; -} - -/* Connect to the system message bus */ -static void sysbus_connect(void) -{ - DBusError error; - - /* Connect to a well-known bus instance, the system bus */ - dbus_error_init(&error); - sysbus_connection = dbus_bus_get(DBUS_BUS_SYSTEM, &error); - if (sysbus_connection == NULL) { - dbg("cannot connect to system message bus, error %s: %s", - error.name, error.message); - dbus_error_free(&error); - return; - } - - /* Acquire the org.kernel.udev service such that listeners - * know that the message is really from us and not from a - * random attacker. See the file udev_sysbus_policy.conf for - * details. - * - * Note that a service can have multiple owners (though there - * is a concept of a primary owner for reception of messages) - * so no race is introduced if two copies of udev is running - * at the same time. - */ - dbus_bus_acquire_service(sysbus_connection, "org.kernel.udev", 0, - &error); - if (dbus_error_is_set(&error)) { - dbg("cannot acquire org.kernel.udev service, error %s: %s'", - error.name, error.message); - sysbus_disconnect(); - return; - } -} - - -/* Send out a signal that a device node is created - * - * @param devname Name of the device node, e.g. /dev/sda1 - * @param path Sysfs path of device - */ -static void sysbus_send_create(const char *devname, const char *path) -{ - DBusMessage* message; - DBusMessageIter iter; - - /* object, interface, member */ - message = dbus_message_new_signal("/org/kernel/udev/NodeMonitor", - "org.kernel.udev.NodeMonitor", - "NodeCreated"); - - dbus_message_iter_init(message, &iter); - dbus_message_iter_append_string(&iter, devname); - dbus_message_iter_append_string(&iter, path); - - if ( !dbus_connection_send(sysbus_connection, message, NULL) ) - dbg("error sending d-bus signal"); - - dbus_message_unref(message); - - dbus_connection_flush(sysbus_connection); -} - -/* Send out a signal that a device node is deleted - * - * @param devname Name of the device node, e.g. /udev/sda1 - * @param path Sysfs path of device - */ -static void sysbus_send_remove(const char *devname, const char *path) -{ - DBusMessage* message; - DBusMessageIter iter; - - /* object, interface, member */ - message = dbus_message_new_signal("/org/kernel/udev/NodeMonitor", - "org.kernel.udev.NodeMonitor", - "NodeDeleted"); - - dbus_message_iter_init(message, &iter); - dbus_message_iter_append_string(&iter, devname); - dbus_message_iter_append_string(&iter, path); - - if ( !dbus_connection_send(sysbus_connection, message, NULL) ) - dbg("error sending d-bus signal"); - - dbus_message_unref(message); - - dbus_connection_flush(sysbus_connection); -} - -int main(int argc, char *argv[], char *envp[]) -{ - char *action; - char *devpath; - char *devname; - int retval = 0; - - init_logging("udev_dbus"); - - sysbus_connect(); - if (sysbus_connection == NULL) - return 0; - - action = get_action(); - if (!action) { - dbg("no action?"); - goto exit; - } - devpath = get_devpath(); - if (!devpath) { - dbg("no devpath?"); - goto exit; - } - devname = get_devname(); - if (!devname) { - dbg("no devname?"); - goto exit; - } - - if (strcmp(action, "add") == 0) { - sysbus_send_create(devname, devpath); - } else { - if (strcmp(action, "remove") == 0) { - sysbus_send_remove(devname, devpath); - } else { - dbg("unknown action '%s'", action); - retval = -EINVAL; - } - } - -exit: - sysbus_disconnect(); - return retval; -} |