/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to mandos

  • Committer: teddy at bsnet
  • Date: 2010-09-02 18:36:36 UTC
  • mto: (24.1.154 mandos)
  • mto: This revision was merged to the branch mainline in revision 421.
  • Revision ID: teddy@fukt.bsnet.se-20100902183636-h0vb4iw3ut2g3mta
* mandos (ClientDBus.approvals_pending): Changed to be a property
                                         which emits D-Bus signals.
  (ClientDBus.approved_pending): Removed - all callers changed.
  (ClientDBus.GotSecret, ClientDBus.Rejected,
  ClientDBus.NeedApproval): Do not emit D-Bus signal.

Show diffs side-by-side

added added

removed removed

Lines of Context:
332
332
        self.approved_duration = string_to_delta(
333
333
            config[u"approved_duration"])
334
334
        self.changedstate = multiprocessing_manager.Condition(multiprocessing_manager.Lock())
335
 
 
 
335
    
336
336
    def send_changedstate(self):
337
337
        self.changedstate.acquire()
338
338
        self.changedstate.notify_all()
702
702
    # dbus.service.Object doesn't use super(), so we can't either.
703
703
    
704
704
    def __init__(self, bus = None, *args, **kwargs):
 
705
        self._approvals_pending = 0
705
706
        self.bus = bus
706
707
        Client.__init__(self, *args, **kwargs)
707
708
        # Only now, when this client is initialized, can it show up on
712
713
        DBusObjectWithProperties.__init__(self, self.bus,
713
714
                                          self.dbus_object_path)
714
715
    
 
716
    def _get_approvals_pending(value):
 
717
        return self._approvals_pending
 
718
    def _set_approvals_pending(value):
 
719
        old_value = self._approvals_pending
 
720
        self._approvals_pending = value
 
721
        bval = bool(value)
 
722
        if bval is bool(old_value):
 
723
            dbus_bool = dbus.Boolean(bval, variant_level=1)
 
724
            self.PropertyChanged(dbus.String(u"approved_pending"),
 
725
                                 dbus_bool)
 
726
        return value
 
727
    approvals_pending = property(_get_approvals_pending,
 
728
                                 _set_approvals_pending)
 
729
    del _get_approvals_pending, _set_approvals_pending
 
730
    
715
731
    @staticmethod
716
732
    def _datetime_to_dbus(dt, variant_level=0):
717
733
        """Convert a UTC datetime.datetime() to a D-Bus type."""
813
829
    def approve(self, value=True):
814
830
        self._approved = value
815
831
        gobject.timeout_add(self._timedelta_to_milliseconds(self.approved_duration, self._reset_approved))
816
 
 
817
 
    def approved_pending(self):
818
 
        return self.approvals_pending > 0
819
832
    
820
833
    
821
834
    ## D-Bus methods, signals & properties
845
858
    @dbus.service.signal(_interface)
846
859
    def GotSecret(self):
847
860
        "D-Bus signal"
848
 
        if self.approved_pending():
849
 
            self.PropertyChanged(dbus.String(u"checker_running"),
850
 
                                 dbus.Boolean(False, variant_level=1))
 
861
        pass
851
862
    
852
863
    # Rejected - signal
853
864
    @dbus.service.signal(_interface, signature=u"s")
854
865
    def Rejected(self, reason):
855
866
        "D-Bus signal"
856
 
        if self.approved_pending():
857
 
            self.PropertyChanged(dbus.String(u"checker_running"),
858
 
                                 dbus.Boolean(False, variant_level=1))
 
867
        pass
859
868
    
860
869
    # NeedApproval - signal
861
870
    @dbus.service.signal(_interface, signature=u"db")
862
871
    def NeedApproval(self, timeout, default):
863
872
        "D-Bus signal"
864
 
        if not self.approved_pending():
865
 
            self.PropertyChanged(dbus.String(u"approved_pending"),
866
 
                                 dbus.Boolean(True, variant_level=1))
 
873
        pass
867
874
    
868
875
    ## Methods
869
876
 
905
912
    # approved_pending - property
906
913
    @dbus_service_property(_interface, signature=u"b", access=u"read")
907
914
    def approved_pending_dbus_property(self):
908
 
        return dbus.Boolean(self.approved_pending())
 
915
        return dbus.Boolean(bool(self.approvals_pending))
909
916
    
910
917
    # approved_by_default - property
911
918
    @dbus_service_property(_interface, signature=u"b",
1491
1498
                parent_pipe.send(('function',))
1492
1499
            else:
1493
1500
                parent_pipe.send(('data', client_object.__getattribute__(attrname)))
1494
 
 
 
1501
        
1495
1502
        if command == 'setattr':
1496
1503
            attrname = request[1]
1497
1504
            value = request[2]
1498
1505
            setattr(client_object, attrname, value)
1499
 
            
 
1506
        
1500
1507
        return True
1501
1508
 
1502
1509