Provisionally implement -n as -a.
[cnetworkmanager.git] / cnetworkmanager-server
blob9a3c6296d04ed0bd552cd4c17d21989e8826cf4f
1 #!/usr/bin/python
2 VERSION = "0.20"
4 import sys
5 import dbus
6 import _dbus_bindings
7 from mkconmap import *
8 from svc_settings import UserSettings
10 # must be set before we ask for signals
11 from dbus.mainloop.glib import DBusGMainLoop
12 DBusGMainLoop(set_as_default=True)
13 # for calling quit
14 import gobject
15 loop = gobject.MainLoop()
17 from optparse import OptionParser
19 op = OptionParser(version="%prog " + VERSION)
21 op.add_option("--unprotected",
22 action="store_true", default=False,
23 help="network does not require a key")
24 op.add_option("--wep-hex",
25 metavar="KEY",
26 help="use this WEP key of 26 hex digits")
27 op.add_option("--wep-pass",
28 metavar="KEY",
29 help="use this WEP passphrase")
30 #op.add_option("--wpa-psk-hex",
31 # metavar="KEY",
32 # help="use this WPA key of 64 hex digits")
33 op.add_option("--wpa-pass",
34 metavar="KEY",
35 help="use this WPA passphrase")
37 (options, args) = op.parse_args()
38 ssid = args[0]
40 bus = dbus.SystemBus()
42 def service_pid(name):
43 DBS = 'org.freedesktop.DBus'
44 DBI = DBS
45 dbo = bus.get_object(DBS, '/')
46 dbi = dbus.Interface(dbo, DBI)
47 owner = dbi.GetNameOwner(name)
48 pid = dbi.GetConnectionUnixProcessID(owner)
49 return pid
51 NMUS = "org.freedesktop.NetworkManagerUserSettings"
52 brn = bus.request_name(NMUS, _dbus_bindings.NAME_FLAG_DO_NOT_QUEUE)
53 if brn == _dbus_bindings.REQUEST_NAME_REPLY_EXISTS:
54 print "Could not provide settings service, another applet is running (pid %s)" % service_pid(NMUS)
55 sys.exit(1)
56 us = UserSettings("/org/freedesktop/NetworkManagerSettings", [])
58 if ssid != None:
59 if options.unprotected:
60 c = mkconmap_wifi(ssid)
61 us.addCon(c)
62 if options.wep_hex != None:
63 c = mkconmap_wep(ssid, options.wep_hex)
64 us.addCon(c)
65 if options.wep_pass != None:
66 c = mkconmap_wep_pass(ssid, options.wep_pass)
67 us.addCon(c)
68 # if options.wpa_psk_hex != None:
69 # c = mkconmap_psk(ssid, options.wpa_psk_hex)
70 # us.addCon(c)
71 if options.wpa_pass != None:
72 c = mkconmap_psk(ssid, options.wpa_pass)
73 us.addCon(c)
75 try:
76 print "Entering mainloop"
77 loop.run()
78 except KeyboardInterrupt:
79 print "Loop exited"