/mandos/release

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

« back to all changes in this revision

Viewing changes to mandos-monitor

Merge new wireless network hook.  Fix bridge network hook to use
hardware addresses instead of interface names.  Implement and document
new "CONNECT" environment variable for network hooks.

Show diffs side-by-side

added added

removed removed

Lines of Context:
3
3
4
4
# Mandos Monitor - Control and monitor the Mandos server
5
5
6
 
# Copyright © 2009-2012 Teddy Hogeborn
7
 
# Copyright © 2009-2012 Björn Påhlsson
 
6
# Copyright © 2009-2011 Teddy Hogeborn
 
7
# Copyright © 2009-2011 Björn Påhlsson
8
8
9
9
# This program is free software: you can redistribute it and/or modify
10
10
# it under the terms of the GNU General Public License as published by
52
52
domain = 'se.recompile'
53
53
server_interface = domain + '.Mandos'
54
54
client_interface = domain + '.Mandos.Client'
55
 
version = "1.5.3"
 
55
version = "1.4.1"
56
56
 
57
57
# Always run in monochrome mode
58
58
urwid.curses_display.curses.has_colors = lambda : False
131
131
        
132
132
        self._update_timer_callback_tag = None
133
133
        self._update_timer_callback_lock = 0
 
134
        self.last_checker_failed = False
134
135
        
135
136
        # The widget shown normally
136
137
        self._text_widget = urwid.Text("")
144
145
        
145
146
        last_checked_ok = isoformat_to_datetime(self.properties
146
147
                                                ["LastCheckedOK"])
 
148
        if last_checked_ok is None:
 
149
            self.last_checker_failed = True
 
150
        else:
 
151
            self.last_checker_failed = ((datetime.datetime.utcnow()
 
152
                                         - last_checked_ok)
 
153
                                        > datetime.timedelta
 
154
                                        (milliseconds=
 
155
                                         self.properties
 
156
                                         ["Interval"]))
147
157
        
148
 
        if self.properties ["LastCheckerStatus"] != 0:
 
158
        if self.last_checker_failed:
149
159
            self.using_timer(True)
150
160
        
151
161
        if self.need_approval:
179
189
                                                         value)
180
190
        if property == "ApprovalPending":
181
191
            using_timer(bool(value))
182
 
        if property == "LastCheckerStatus":
183
 
            using_timer(value != 0)
184
 
            #self.logger('Checker for client %s (command "%s")'
185
 
            #            ' was successful'
186
 
            #            % (self.properties["Name"], command))
187
 
    
 
192
        
188
193
    def using_timer(self, flag):
189
194
        """Call this method with True or False when timer should be
190
195
        activated or deactivated.
205
210
    
206
211
    def checker_completed(self, exitstatus, condition, command):
207
212
        if exitstatus == 0:
 
213
            if self.last_checker_failed:
 
214
                self.last_checker_failed = False
 
215
                self.using_timer(False)
 
216
            #self.logger('Checker for client %s (command "%s")'
 
217
            #            ' was successful'
 
218
            #            % (self.properties["Name"], command))
208
219
            self.update()
209
220
            return
210
221
        # Checker failed
 
222
        if not self.last_checker_failed:
 
223
            self.last_checker_failed = True
 
224
            self.using_timer(True)
211
225
        if os.WIFEXITED(condition):
212
226
            self.logger('Checker for client %s (command "%s")'
213
227
                        ' failed with exit code %s'
235
249
        pass
236
250
    
237
251
    def got_secret(self):
 
252
        self.last_checker_failed = False
238
253
        self.logger('Client %s received its secret'
239
254
                    % self.properties["Name"])
240
255
    
301
316
            else:
302
317
                message = "Denial in %s. (a)pprove?"
303
318
            message = message % unicode(timer).rsplit(".", 1)[0]
304
 
        elif self.properties["LastCheckerStatus"] != 0:
 
319
        elif self.last_checker_failed:
305
320
            # When checker has failed, print a timer until client expires
306
321
            expires = self.properties["Expires"]
307
322
            if expires == "":