/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-monitor

Hooks take new "modules" argument, and hook names can contain periods.

* debian/mandos-client.README.Debian: Adjust wording.
* debian/rules (binary-common): Exclude nework-hooks.d directory from
                                dh_fixperms.
* initramfs-tools-hook: Also create network hook directory.  Allow
                        periods in hook names.  Only run executable
                        files in hook directory.  Copy needed modules.
* network-hooks.d/bridge: Fix "/usr/bin/brctl" to "/usr/sbin/brctl".
                          Also take "modules" argument.
* plugins.d/mandos-client.xml (NETWORK HOOKS/REQUIREMENTS): Document
                                                            the
                                                            allowing
                                                            of periods
                                                            in hook
                                                            names.
  (NETWORK HOOKS/REQUIREMENTS/files): Adjust wording.
  (NETWORK HOOKS/REQUIREMENTS/modules): New.
  (NETWORK HOOKS/REQUIREMENTS/MANDOSNETHOOKDIR): Clarify.
  (NETWORK HOOKS/REQUIREMENTS/MODE): Add "modules".

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
# You should have received a copy of the GNU General Public License
20
20
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
21
21
22
 
# Contact the authors at <mandos@fukt.bsnet.se>.
 
22
# Contact the authors at <mandos@recompile.se>.
23
23
24
24
 
25
25
from __future__ import (division, absolute_import, print_function,
49
49
logging.getLogger('dbus.proxies').setLevel(logging.CRITICAL)
50
50
 
51
51
# Some useful constants
52
 
domain = 'se.bsnet.fukt'
 
52
domain = 'se.recompile'
53
53
server_interface = domain + '.Mandos'
54
54
client_interface = domain + '.Mandos.Client'
55
 
version = "1.3.1"
 
55
version = "1.4.1"
56
56
 
57
57
# Always run in monochrome mode
58
58
urwid.curses_display.curses.has_colors = lambda : False
200
200
        else:
201
201
            self._update_timer_callback_lock -= 1
202
202
        if old == 0 and self._update_timer_callback_lock:
 
203
            # Will update the shown timer value every second
203
204
            self._update_timer_callback_tag = (gobject.timeout_add
204
205
                                               (1000,
205
206
                                                self.update_timer))
314
315
                message = "Denial in %s. (a)pprove?"
315
316
            message = message % unicode(timer).rsplit(".", 1)[0]
316
317
        elif self.last_checker_failed:
317
 
            timeout = datetime.timedelta(milliseconds
318
 
                                         = self.properties
319
 
                                         ["Timeout"])
320
 
            last_ok = isoformat_to_datetime(
321
 
                max((self.properties["LastCheckedOK"]
322
 
                     or self.properties["Created"]),
323
 
                    self.properties["LastEnabled"]))
324
 
            timer = timeout - (datetime.datetime.utcnow() - last_ok)
 
318
            # When checker has failed, print a timer until client expires
 
319
            expires = self.properties["Expires"]
 
320
            if expires == "":
 
321
                timer = datetime.timedelta(0)
 
322
            else:
 
323
                expires = datetime.datetime.strptime(expires,
 
324
                                                     '%Y-%m-%dT%H:%M:%S.%f')
 
325
                timer = expires - datetime.datetime.utcnow()
325
326
            message = ('A checker has failed! Time until client'
326
327
                       ' gets disabled: %s'
327
328
                           % unicode(timer).rsplit(".", 1)[0])
346
347
            self.update_hook()
347
348
    
348
349
    def update_timer(self):
349
 
        "called by gobject"
 
350
        """called by gobject. Will indefinitely loop until
 
351
        gobject.source_remove() on tag is called"""
350
352
        self.update()
351
353
        return True             # Keep calling this
352
354