Provisionally implement -n as -a.
[cnetworkmanager.git] / svc_connection.py
blob8b70f8071e6c22d2e92fe8d5d8f7d1ee4e77e8bc
1 import dbus
2 import os
3 from settings import cSettings
5 # server analog of cConnection
6 class Connection(dbus.service.Object):
7 def __init__(self, opath, conmap):
8 bus = dbus.SystemBus()
9 dbus.service.Object.__init__(self, bus, opath)
10 self.settings = cSettings(conmap)
12 @dbus.service.method(dbus_interface='org.freedesktop.NetworkManagerSettings.Connection',
13 sender_keyword='sender',
14 in_signature='', out_signature='a{sa{sv}}')
15 def GetSettings(self, sender):
16 #print "Getting settings:", self. __dbus_object_path__
17 # return self.settings.ConMap()
18 # grr, censoring secrets makes NM complain!?
19 # bnc#479566#c3: Until I figure out how to make it work with
20 # censored secrets, only pass the settings to the same user.
21 sender_uid = self.connection.get_unix_user(sender)
22 if sender_uid != 0 and sender_uid != os.geteuid():
23 e = "User %u is not permitted to read the settings" % sender_uid
24 print e
25 raise dbus.exceptions.DBusException(e) # could do NM_SETTINGS_ERROR_* instead
26 return self.settings.conmap
28 @dbus.service.method(dbus_interface='org.freedesktop.NetworkManagerSettings.Connection.Secrets',
29 in_signature='sasb', out_signature='a{sa{sv}}')
30 def GetSecrets(self, tag, hints, ask):
31 # FIXME respect args
32 print "Getting secrets:", self.__dbus_object_path__
33 return self.settings.SecMap()
35 @dbus.service.method(dbus_interface='org.freedesktop.NetworkManagerSettings.Connection',
36 in_signature='', out_signature='s')
37 def ID(self):
38 return self.settings.ID()
40 def Ssid(self):
41 return self.settings.Ssid()
43 def isNet(self, net_name):
44 return self.settings.isNet(net_name)