OLD | NEW |
---|---|
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. | 2 # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 import optparse | 6 import optparse |
7 import pprint, sys | 7 import pprint, sys |
8 import dbus, flimflam | 8 import dbus, flimflam |
9 | 9 |
10 def show_usage(parser, vpn_type): | |
11 parser.error("Incorrect number of parameters provided for %s" % vpn_type) | |
12 | |
10 def main(argv): | 13 def main(argv): |
11 parser = optparse.OptionParser('%prog [options]... (VPN)\n\n' | 14 parser = optparse.OptionParser( |
12 ' VPN := openvpn <vpn-name> ' | 15 "%prog [options]... (VPN)\n" |
13 '<remote-host-ip> <vpn-domain>\n ' | 16 "\n" |
14 ' <ca-file> <client-cert-file> ' | 17 " VPN := openvpn <vpn-name> <remote-host-ip> <vpn-domain>\n" |
15 '<client-key-file>') | 18 " <ca-file> <client-cert-file> <client-key-file>\n" |
16 parser.add_option('--verbose', | 19 " | l2tpipsec <vpn-name> <remote-host-ip> <vpn-domain>\n" |
17 dest = 'verbose', | 20 " <ca-file> <client-cert-file> <client-key-file>\n" |
18 action = 'store_true', | 21 " <ipsec-psk> <username> <password>") |
22 parser.add_option("--verbose", | |
23 dest = "verbose", | |
24 action = "store_true", | |
19 default = False, | 25 default = False, |
20 help = "Output diagnostic information during run.") | 26 help = "Output diagnostic information during run.") |
21 parser.add_option('--complzo', | 27 parser.add_option("--complzo", |
22 dest = 'complzo', | 28 dest = "complzo", |
23 action = 'store_true', | 29 action = "store_true", |
24 default = True, | 30 default = True, |
25 help = "Enables the OpenVPN option 'complzo' (default). ") | 31 help = ("Enables the OpenVPN option 'complzo' " |
26 parser.add_option('--no-complzo', | 32 "(default)")) |
27 dest = 'complzo', | 33 parser.add_option("--no-complzo", |
28 action = 'store_false', | 34 dest = "complzo", |
35 action = "store_false", | |
29 help = "Disables the OpenVPN option 'complzo'.") | 36 help = "Disables the OpenVPN option 'complzo'.") |
30 parser.add_option('--remote-cert-tls', | 37 parser.add_option("--remote-cert-tls", |
31 dest = 'remote_cert_tls', | 38 dest = "remote_cert_tls", |
32 action = 'store', | 39 action = "store", |
33 default = 'server', | 40 default = "server", |
34 type = 'string', | 41 type = "string", |
35 metavar = '(server | client | none)', | 42 metavar = "(server | client | none)", |
36 help = "This is passed through to OpenVPN when " | 43 help = ("This is passed through to OpenVPN when " |
37 "not 'none'.") | 44 "not 'none'.")) |
38 | 45 |
39 (options, args) = parser.parse_args(argv[1:]) | 46 (options, args) = parser.parse_args(argv[1:]) |
40 | 47 |
41 if (len(args) > 1): | 48 if (len(args) > 1): |
42 params = { "Type" : args[0] } | 49 params = { "Type" : args[0] } |
43 | 50 |
44 if params["Type"] == "openvpn": | 51 if params["Type"] == "openvpn": |
45 if (len(args) == 7): | 52 if (len(args) == 7): |
46 params["Name"] = args[1] | 53 params["Name"] = args[1] |
47 params["Host"] = args[2] | 54 params["Host"] = args[2] |
48 params["VPN.Domain"] = args[3] | 55 params["VPN.Domain"] = args[3] |
49 params["OpenVPN.CACert"] = args[4] | 56 params["OpenVPN.CACert"] = args[4] |
50 params["OpenVPN.Cert"] = args[5] | 57 params["OpenVPN.Cert"] = args[5] |
51 params["OpenVPN.Key"] = args[6] | 58 params["OpenVPN.Key"] = args[6] |
52 | 59 |
53 if options.complzo: # 'complzo' can only be enabled. | 60 if options.complzo: # "complzo" can only be enabled. |
thutt
2011/03/17 15:02:21
I think the single quotes on complzo here are ok,
| |
54 params["OpenVPN.CompLZO"] = 'true' | 61 params["OpenVPN.CompLZO"] = "true" |
55 | 62 |
56 if options.remote_cert_tls != 'server' and \ | 63 if options.remote_cert_tls != "server" and \ |
57 options.remote_cert_tls != 'client' and \ | 64 options.remote_cert_tls != "client" and \ |
58 options.remote_cert_tls != 'none': | 65 options.remote_cert_tls != "none": |
59 print "\n--remote-cert-tls argument ('%s') " \ | 66 print ("\n--remote-cert-tls argument ('%s') " |
thutt
2011/03/17 15:02:21
Would it be better to remove the space preceding '
| |
60 "is invalid.\n" % options.remote_cert_tls | 67 "is invalid.\n" % options.remote_cert_tls) |
61 sys.exit(1) | 68 sys.exit(1) |
62 | 69 |
63 params["OpenVPN.RemoteCertTLS"] = options.remote_cert_tls | 70 params["OpenVPN.RemoteCertTLS"] = options.remote_cert_tls |
64 else: | 71 else: |
65 parser.error("Incorrect number of parameters " | 72 » show_usage(parser, params["Type"]) |
thutt
2011/03/17 15:02:21
I look forward to seeing what affect this has on t
| |
66 "provided for 'openvpn'") | 73 » elif params["Type"] == "l2tpipsec": |
thutt
2011/03/17 15:02:21
Just noticed that it looks like your editor is put
| |
74 » if len(args) == 10: | |
75 » params["Name"] = args[1] | |
76 » » params["Host"] = args[2] | |
77 » » params["VPN.Domain"] = args[3] | |
78 params["L2TPIPsec.CACert"] = args[4] | |
79 » » params["L2TPIPsec.Cert"] = args[5] | |
80 » » params["L2TPIPsec.Key"] = args[6] | |
81 » » params["L2TPIPsec.PSK"] = args[7] | |
82 » » params["L2TPIPsec.User"] = args[8] | |
83 » » params["L2TPIPsec.Password"] = args[9] | |
84 » else: | |
85 » show_usage(parser, params["Type"]) | |
67 else: | 86 else: |
68 print "Unknown VPN type: '%s'" % params["Type"] | 87 print "Unknown VPN type: '%s'" % params["Type"] |
thutt
2011/03/17 15:02:21
Should this be replaced with a show_usage() like a
| |
69 sys.exit(1) | 88 sys.exit(1) |
70 | 89 |
71 if options.verbose: | 90 if options.verbose: |
72 print "\nVPN Startup Parameters:\n" | 91 print "\nVPN Startup Parameters:\n" |
73 for k, v in params.iteritems(): | 92 for k, v in params.iteritems(): |
74 print " %25s: '%s'" % (k, v) | 93 print " %25s: '%s'" % (k, v) |
75 print "" | 94 print "" |
76 | 95 |
77 flim = flimflam.FlimFlam(dbus.SystemBus()) | 96 flim = flimflam.FlimFlam(dbus.SystemBus()) |
78 service = flim.GetVPNService(params) | 97 service = flim.GetVPNService(params) |
79 | 98 |
80 if options.verbose == 'true': | 99 if options.verbose == "true": |
81 print "VPN is %s, connecting..." % service.object_path | 100 print "VPN is %s, connecting..." % service.object_path |
82 | 101 |
83 (success, diagnostics) = flim.ConnectService(service_type = 'vpn', | 102 (success, diagnostics) = flim.ConnectService(service_type = "vpn", |
84 service = service) | 103 service = service) |
85 if not success or options.verbose: | 104 if not success or options.verbose: |
86 print 'Success:', success | 105 print "Success:", success |
87 pprint.pprint(diagnostics) | 106 pprint.pprint(diagnostics) |
88 else: | 107 else: |
89 parser.print_help() | 108 parser.print_help() |
90 sys.exit(1) | 109 sys.exit(1) |
91 | 110 |
92 if __name__ == '__main__': | 111 if __name__ == '__main__': |
93 main(sys.argv) | 112 main(sys.argv) |
OLD | NEW |