| #!/usr/bin/python |
| |
| # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| # |
| # Set the APN to be used when making connections on a cellular |
| # service. |
| |
| import sys |
| import dbus, flimflam |
| from optparse import OptionParser |
| |
| usage = ''' |
| %prog [options] apn service-name |
| |
| or |
| |
| %prog --clear service-name''' |
| |
| parser = OptionParser(usage=usage) |
| parser.add_option('-n', '--network_id', type='string', |
| dest='network_id', |
| default=None, |
| help='user name to be used with the APN') |
| parser.add_option('-u', '--username', type='string', |
| dest='username', |
| default=None, |
| help='user name to be used with the APN') |
| parser.add_option('-p', '--password', type='string', |
| dest='password', |
| default=None, |
| help='password to be used with the APN') |
| parser.add_option('-c', '--clear', |
| action='store_true', dest='clear_apn', |
| default=False, |
| help='Clear any APN associated with the named service') |
| |
| (options, args) = parser.parse_args() |
| |
| props = dbus.Dictionary(signature="ss") |
| |
| if not options.clear_apn: |
| if len(args) < 1: |
| parser.error("The APN and service name must be specified") |
| elif len(args) < 2: |
| parser.error("The service name must be specified") |
| elif len(args) > 2: |
| parser.error("Too many arguments") |
| |
| apn = args[0] |
| servicename = args[1] |
| |
| props['apn'] = apn |
| if options.network_id: |
| props['network_id'] = options.network_id |
| if options.username: |
| props['username'] = options.username |
| if options.password: |
| props['password'] = options.password |
| else: |
| if len(args) < 1: |
| parser.error("The service name must be specified") |
| servicename = args[0] |
| |
| flim = flimflam.FlimFlam(dbus.SystemBus()) |
| service = flim.FindElementByNameSubstring('Service', servicename) |
| if not service: |
| print "Unknown service %s" % servicename |
| sys.exit(2) |
| |
| if not options.clear_apn: |
| service.SetProperty("Cellular.APN", props) |
| else: |
| service.ClearProperty("Cellular.APN") |