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

  • Committer: Teddy Hogeborn
  • Date: 2014-07-25 22:44:20 UTC
  • mto: (237.7.272 trunk)
  • mto: This revision was merged to the branch mainline in revision 321.
  • Revision ID: teddy@recompile.se-20140725224420-4a5ct2ptt0hsc92z
Require Python 2.7.

This is in preparation for the eventual move to Python 3, which will
happen as soon as all Python modules required by Mandos are available.
The mandos-ctl and mandos-monitor programs are already portable
between Python 2.6 and Python 3 without changes; this change will
bring the requirement up to Python 2.7.

* INSTALL (Prerequisites/Libraries/Mandos Server): Document
                                                   requirement of
                                                   Python 2.7; remove
                                                   Python-argparse
                                                   which is in the
                                                   Python 2.7 standard
                                                   library.
* debian/control (Source: mandos/Build-Depends-Indep): Depend on
                                                       exactly the
                                                       python2.7
                                                       package and all
                                                       the Python 2.7
                                                       versions of the
                                                       python modules.
  (Package: mandos/Depends): - '' - but still depend on python (<=2.7)
                            and the generic versions of the Python
                            modules; this is for mandos-ctl and
                            mandos-monitor, both of which are
                            compatible with Python 3, and use
                            #!/usr/bin/python.
* mandos: Use #!/usr/bin/python2.7 instead of #!/usr/bin/python.

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 © 2008-2012 Teddy Hogeborn
7
 
# Copyright © 2008-2012 Björn Påhlsson
 
6
# Copyright © 2008-2014 Teddy Hogeborn
 
7
# Copyright © 2008-2014 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
26
26
from __future__ import (division, absolute_import, print_function,
27
27
                        unicode_literals)
28
28
 
29
 
from future_builtins import *
 
29
try:
 
30
    from future_builtins import *
 
31
except ImportError:
 
32
    pass
30
33
 
31
34
import sys
32
35
import argparse
39
42
 
40
43
import dbus
41
44
 
 
45
if sys.version_info[0] == 2:
 
46
    str = unicode
 
47
 
42
48
locale.setlocale(locale.LC_ALL, "")
43
49
 
44
50
tablewords = {
66
72
server_path = "/"
67
73
server_interface = domain + ".Mandos"
68
74
client_interface = domain + ".Mandos.Client"
69
 
version = "1.6.0"
 
75
version = "1.6.7"
70
76
 
71
77
def timedelta_to_milliseconds(td):
72
78
    """Convert a datetime.timedelta object to milliseconds"""
151
157
    token_duration = Token(re.compile(r"P"), None,
152
158
                           frozenset((token_year, token_month,
153
159
                                      token_day, token_time,
154
 
                                      token_week))),
 
160
                                      token_week)))
155
161
    # Define starting values
156
162
    value = datetime.timedelta() # Value so far
157
163
    found_token = None
158
 
    followers = frozenset(token_duration,) # Following valid tokens
 
164
    followers = frozenset((token_duration,)) # Following valid tokens
159
165
    s = duration                # String left to parse
160
166
    # Loop until end token is found
161
167
    while found_token is not token_end:
230
236
        if keyword in ("Timeout", "Interval", "ApprovalDelay",
231
237
                       "ApprovalDuration", "ExtendedTimeout"):
232
238
            return milliseconds_to_string(value)
233
 
        return unicode(value)
 
239
        return str(value)
234
240
    
235
241
    # Create format string to print table rows
236
242
    format_string = " ".join("{{{key}:{width}}}".format(
310
316
    parser.add_argument("--approval-duration",
311
317
                        help="Set duration of one client approval")
312
318
    parser.add_argument("-H", "--host", help="Set host for client")
313
 
    parser.add_argument("-s", "--secret", type=file,
 
319
    parser.add_argument("-s", "--secret",
 
320
                        type=argparse.FileType(mode="rb"),
314
321
                        help="Set password blob (file) for client")
315
322
    parser.add_argument("-A", "--approve", action="store_true",
316
323
                        help="Approve any current client request")
331
338
 
332
339
    if options.check:
333
340
        fail_count, test_count = doctest.testmod()
334
 
        sys.exit(0 if fail_count == 0 else 1)
 
341
        sys.exit(os.EX_OK if fail_count == 0 else 1)
335
342
    
336
343
    try:
337
344
        bus = dbus.SystemBus()
367
374
    if options.all or not options.client:
368
375
        clients = dict((bus.get_object(busname, path), properties)
369
376
                       for path, properties in
370
 
                       mandos_clients.iteritems())
 
377
                       mandos_clients.items())
371
378
    else:
372
379
        for name in options.client:
373
380
            for path, client in mandos_clients.iteritems():