=== modified file 'DBUS-API' --- DBUS-API 2011-09-18 16:04:23 +0000 +++ DBUS-API 2011-10-02 19:18:24 +0000 @@ -5,7 +5,7 @@ This file documents the D-Bus interface to the Mandos server. * Bus: System bus - Bus name: "se.bsnet.fukt.Mandos" + Bus name: "se.recompile.Mandos" * Object Paths: @@ -17,7 +17,7 @@ * Mandos Server Interface: - Interface name: "se.bsnet.fukt.Mandos" + Interface name: "se.recompile.Mandos" ** Methods: *** GetAllClients() → (ao: Clients) @@ -44,7 +44,7 @@ * Mandos Client Interface: - Interface name: "se.bsnet.fukt.Mandos.Client" + Interface name: "se.recompile.Mandos.Client" ** Methods *** Approve(b: Approve) → nothing === modified file 'dbus-mandos.conf' --- dbus-mandos.conf 2009-11-09 07:35:16 +0000 +++ dbus-mandos.conf 2011-10-02 19:18:24 +0000 @@ -7,12 +7,18 @@ + + + + + + === modified file 'mandos' --- mandos 2011-10-02 13:45:45 +0000 +++ mandos 2011-10-02 19:18:24 +0000 @@ -627,38 +627,18 @@ def _get_all_dbus_properties(self): """Returns a generator of (name, attribute) pairs """ - return ((prop._dbus_name, prop) - for name, prop in - inspect.getmembers(self, self._is_dbus_property)) + return ((prop.__get__(self)._dbus_name, prop.__get__(self)) + for cls in self.__class__.__mro__ + for name, prop in inspect.getmembers(cls, self._is_dbus_property)) -# def _get_dbus_property(self, interface_name, property_name): -# """Returns a bound method if one exists which is a D-Bus -# property with the specified name and interface. -# """ -# print("get_property({0!r}, {1!r}".format(interface_name, property_name),file=sys.stderr) -# print(dir(self), sys.stderr) -# for name in (property_name, -# property_name + "_dbus_property"): -# prop = getattr(self, name, None) -# if (prop is None -# or not self._is_dbus_property(prop) -# or prop._dbus_name != property_name -# or (interface_name and prop._dbus_interface -# and interface_name != prop._dbus_interface)): -# continue -# return prop -# # No such property -# raise DBusPropertyNotFound(self.dbus_object_path + ":" -# + interface_name + "." -# + property_name) - def _get_dbus_property(self, interface_name, property_name): """Returns a bound method if one exists which is a D-Bus property with the specified name and interface. """ - for name, value in inspect.getmembers(self, self._is_dbus_property): - if value._dbus_name == property_name and value._dbus_interface == interface_name: - return value + for cls in self.__class__.__mro__: + for name, value in inspect.getmembers(cls, self._is_dbus_property): + if value._dbus_name == property_name and value._dbus_interface == interface_name: + return value.__get__(self) # No such property raise DBusPropertyNotFound(self.dbus_object_path + ":" @@ -775,11 +755,12 @@ return dbus.String(dt.isoformat(), variant_level=variant_level) -class transitional_clientdbus(DBusObjectWithProperties.__metaclass__): +class transitional_dbus_metaclass(DBusObjectWithProperties.__metaclass__): def __new__(mcs, name, bases, attr): - for key, old_dbusobj in attr.items(): + for attrname, old_dbusobj in inspect.getmembers(bases[0]): new_interface = getattr(old_dbusobj, "_dbus_interface", "").replace("se.bsnet.fukt.", "se.recompile.") - if getattr(old_dbusobj, "_dbus_is_signal", False): + if (getattr(old_dbusobj, "_dbus_is_signal", False) + and old_dbusobj._dbus_interface.startswith("se.bsnet.fukt.Mandos")): unwrappedfunc = dict(zip(old_dbusobj.func_code.co_freevars, old_dbusobj.__closure__))["func"].cell_contents newfunc = types.FunctionType(unwrappedfunc.func_code, @@ -789,18 +770,18 @@ unwrappedfunc.func_closure) new_dbusfunc = dbus.service.signal( new_interface, old_dbusobj._dbus_signature)(newfunc) - attr["_transitional_{0}_1".format(key)] = new_dbusfunc - attr["_transitional_{0}_0".format(key)] = old_dbusobj + attr["_transitional_" + attrname] = new_dbusfunc + def fixscope(func1, func2): def newcall(*args, **kwargs): func1(*args, **kwargs) func2(*args, **kwargs) return newcall - attr[key] = fixscope( - old_dbusobj, attr["_transitional_{0}_1".format(key)]) + attr[attrname] = fixscope(old_dbusobj, new_dbusfunc) - if getattr(old_dbusobj, "_dbus_is_method", False): + elif (getattr(old_dbusobj, "_dbus_is_method", False) + and old_dbusobj._dbus_interface.startswith("se.bsnet.fukt.Mandos")): new_dbusfunc = (dbus.service.method (new_interface, old_dbusobj._dbus_in_signature, @@ -812,8 +793,9 @@ old_dbusobj.func_defaults, old_dbusobj.func_closure))) - attr["_transitional_{0}".format(key)] = new_dbusfunc - if getattr(old_dbusobj, "_dbus_is_property", False): + attr[attrname] = new_dbusfunc + elif (getattr(old_dbusobj, "_dbus_is_property", False) + and old_dbusobj._dbus_interface.startswith("se.bsnet.fukt.Mandos")): new_dbusfunc = (dbus_service_property (new_interface, old_dbusobj._dbus_signature, @@ -826,7 +808,7 @@ old_dbusobj.func_defaults, old_dbusobj.func_closure))) - attr["_transitional_{0}".format(key)] = new_dbusfunc + attr[attrname] = new_dbusfunc return type.__new__(mcs, name, bases, attr) class ClientDBus(Client, DBusObjectWithProperties): @@ -839,8 +821,6 @@ runtime_expansions = (Client.runtime_expansions + ("dbus_object_path",)) - - __metaclass__ = transitional_clientdbus # dbus.service.Object doesn't use super(), so we can't either. @@ -1246,6 +1226,8 @@ return super(ProxyClient, self).__setattr__(name, value) self._pipe.send(('setattr', name, value)) +class ClientDBusTransitional(ClientDBus): + __metaclass__ = transitional_dbus_metaclass class ClientHandler(socketserver.BaseRequestHandler, object): """A class to handle client connections. @@ -1975,7 +1957,7 @@ client_class = Client if use_dbus: - client_class = functools.partial(ClientDBus, bus = bus) + client_class = functools.partial(ClientDBusTransitional, bus = bus) def client_config_items(config, section): special_settings = { "approved_by_default": @@ -2068,7 +2050,9 @@ del _interface - mandos_dbus_service = MandosDBusService() + class MandosDBusServiceTransitional(MandosDBusService): + __metaclass__ = transitional_dbus_metaclass + mandos_dbus_service = MandosDBusServiceTransitional() def cleanup(): "Cleanup function; run on exit" === modified file 'mandos-ctl' --- mandos-ctl 2011-09-18 14:28:47 +0000 +++ mandos-ctl 2011-10-02 19:18:24 +0000 @@ -55,7 +55,7 @@ "ExtendedTimeout" : "Extended Timeout" } defaultkeywords = ("Name", "Enabled", "Timeout", "LastCheckedOK") -domain = "se.bsnet.fukt" +domain = "se.recompile" busname = domain + ".Mandos" server_path = "/" server_interface = domain + ".Mandos" === modified file 'mandos-monitor' --- mandos-monitor 2011-09-18 14:28:47 +0000 +++ mandos-monitor 2011-10-02 19:18:24 +0000 @@ -49,7 +49,7 @@ logging.getLogger('dbus.proxies').setLevel(logging.CRITICAL) # Some useful constants -domain = 'se.bsnet.fukt' +domain = 'se.recompile' server_interface = domain + '.Mandos' client_interface = domain + '.Mandos.Client' version = "1.3.1"