172
except dbus.exceptions.DBusException as error:
171
except dbus.exceptions.DBusException, error:
173
172
logger.critical("DBusException: %s", error)
176
175
self.rename_count += 1
177
176
def remove(self):
178
177
"""Derived from the Avahi example code"""
179
if self.entry_group_state_changed_match is not None:
180
self.entry_group_state_changed_match.remove()
181
self.entry_group_state_changed_match = None
182
178
if self.group is not None:
183
179
self.group.Reset()
185
181
"""Derived from the Avahi example code"""
187
182
if self.group is None:
188
183
self.group = dbus.Interface(
189
184
self.bus.get_object(avahi.DBUS_NAME,
190
185
self.server.EntryGroupNew()),
191
186
avahi.DBUS_INTERFACE_ENTRY_GROUP)
192
self.entry_group_state_changed_match = (
193
self.group.connect_to_signal(
194
'StateChanged', self .entry_group_state_changed))
187
self.group.connect_to_signal('StateChanged',
189
.entry_group_state_changed)
195
190
logger.debug("Adding Zeroconf service '%s' of type '%s' ...",
196
191
self.name, self.type)
197
192
self.group.AddService(
220
215
def cleanup(self):
221
216
"""Derived from the Avahi example code"""
222
217
if self.group is not None:
225
except (dbus.exceptions.UnknownMethodException,
226
dbus.exceptions.DBusException) as e:
228
219
self.group = None
230
def server_state_changed(self, state, error=None):
220
def server_state_changed(self, state):
231
221
"""Derived from the Avahi example code"""
232
222
logger.debug("Avahi server state change: %i", state)
233
bad_states = { avahi.SERVER_INVALID:
234
"Zeroconf server invalid",
235
avahi.SERVER_REGISTERING: None,
236
avahi.SERVER_COLLISION:
237
"Zeroconf server name collision",
238
avahi.SERVER_FAILURE:
239
"Zeroconf server failure" }
240
if state in bad_states:
241
if bad_states[state] is not None:
243
logger.error(bad_states[state])
245
logger.error(bad_states[state] + ": %r", error)
223
if state == avahi.SERVER_COLLISION:
224
logger.error("Zeroconf server name collision")
247
226
elif state == avahi.SERVER_RUNNING:
251
logger.debug("Unknown state: %r", state)
253
logger.debug("Unknown state: %r: %r", state, error)
254
228
def activate(self):
255
229
"""Derived from the Avahi example code"""
256
230
if self.server is None:
257
231
self.server = dbus.Interface(
258
232
self.bus.get_object(avahi.DBUS_NAME,
259
avahi.DBUS_PATH_SERVER,
260
follow_name_owner_changes=True),
233
avahi.DBUS_PATH_SERVER),
261
234
avahi.DBUS_INTERFACE_SERVER)
262
235
self.server.connect_to_signal("StateChanged",
263
236
self.server_state_changed)
472
445
# If a checker exists, make sure it is not a zombie
474
447
pid, status = os.waitpid(self.checker.pid, os.WNOHANG)
475
except (AttributeError, OSError) as error:
448
except (AttributeError, OSError), error:
476
449
if (isinstance(error, OSError)
477
450
and error.errno != errno.ECHILD):
501
474
command = self.checker_command % escaped_attrs
502
except TypeError as error:
475
except TypeError, error:
503
476
logger.error('Could not format string "%s":'
504
477
' %s', self.checker_command, error)
505
478
return True # Try again later
525
498
gobject.source_remove(self.checker_callback_tag)
526
499
self.checker_callback(pid, status, command)
527
except OSError as error:
500
except OSError, error:
528
501
logger.error("Failed to start subprocess: %s",
530
503
# Re-run this periodically if run by gobject.timeout_add
731
704
xmlstring = document.toxml("utf-8")
732
705
document.unlink()
733
706
except (AttributeError, xml.dom.DOMException,
734
xml.parsers.expat.ExpatError) as error:
707
xml.parsers.expat.ExpatError), error:
735
708
logger.error("Failed to override Introspection method",
842
815
def checked_ok(self, *args, **kwargs):
843
Client.checked_ok(self, *args, **kwargs)
816
r = Client.checked_ok(self, *args, **kwargs)
844
817
# Emit D-Bus signal
845
818
self.PropertyChanged(
846
819
dbus.String("LastCheckedOK"),
847
820
(self._datetime_to_dbus(self.last_checked_ok,
848
821
variant_level=1)))
850
824
def need_approval(self, *args, **kwargs):
851
825
r = Client.need_approval(self, *args, **kwargs)
1231
1205
if int(line.strip().split()[0]) > 1:
1232
1206
raise RuntimeError
1233
except (ValueError, IndexError, RuntimeError) as error:
1207
except (ValueError, IndexError, RuntimeError), error:
1234
1208
logger.error("Unknown protocol version: %s", error)
1237
1211
# Start GnuTLS connection
1239
1213
session.handshake()
1240
except gnutls.errors.GNUTLSError as error:
1214
except gnutls.errors.GNUTLSError, error:
1241
1215
logger.warning("Handshake failed: %s", error)
1242
1216
# Do not run session.bye() here: the session is not
1243
1217
# established. Just abandon the request.
1250
1224
fpr = self.fingerprint(self.peer_certificate
1253
gnutls.errors.GNUTLSError) as error:
1226
except (TypeError, gnutls.errors.GNUTLSError), error:
1254
1227
logger.warning("Bad certificate: %s", error)
1256
1229
logger.debug("Fingerprint: %s", fpr)
1319
1292
while sent_size < len(client.secret):
1321
1294
sent = session.send(client.secret[sent_size:])
1322
except gnutls.errors.GNUTLSError as error:
1295
except (gnutls.errors.GNUTLSError), error:
1323
1296
logger.warning("gnutls send failed")
1325
1298
logger.debug("Sent: %d, remaining: %d",
1339
1312
client.approvals_pending -= 1
1342
except gnutls.errors.GNUTLSError as error:
1315
except (gnutls.errors.GNUTLSError), error:
1343
1316
logger.warning("GnuTLS bye failed")
1469
1442
SO_BINDTODEVICE,
1470
1443
str(self.interface
1472
except socket.error as error:
1445
except socket.error, error:
1473
1446
if error[0] == errno.EPERM:
1474
1447
logger.error("No permission to"
1475
1448
" bind to interface %s",
1640
1613
delta = datetime.timedelta(0, 0, 0, 0, 0, 0, value)
1642
1615
raise ValueError("Unknown suffix %r" % suffix)
1643
except (ValueError, IndexError) as e:
1616
except (ValueError, IndexError), e:
1644
1617
raise ValueError(*(e.args))
1645
1618
timevalue += delta
1646
1619
return timevalue
1894
1867
bus_name = dbus.service.BusName("se.bsnet.fukt.Mandos",
1895
1868
bus, do_not_queue=True)
1896
except dbus.exceptions.NameExistsException as e:
1869
except dbus.exceptions.NameExistsException, e:
1897
1870
logger.error(unicode(e) + ", disabling D-Bus")
1898
1871
use_dbus = False
1899
1872
server_settings["use_dbus"] = False
2049
2022
# From the Avahi example code
2051
2024
service.activate()
2052
except dbus.exceptions.DBusException as error:
2025
except dbus.exceptions.DBusException, error:
2053
2026
logger.critical("DBusException: %s", error)
2063
2036
logger.debug("Starting main loop")
2064
2037
main_loop.run()
2065
except AvahiError as error:
2038
except AvahiError, error:
2066
2039
logger.critical("AvahiError: %s", error)