1
0
mirror of https://github.com/gryf/wicd.git synced 2026-03-27 14:33:32 +01:00

added support for passing parameters to the global scripts

This commit is contained in:
Adam Blackburn
2009-08-09 18:06:33 -05:00
parent 42caa8af87
commit e30071c012
3 changed files with 45 additions and 19 deletions

View File

@@ -201,25 +201,34 @@ class Controller(object):
"""
return self.iface.GetIP(ifconfig)
def Disconnect(self, *args, **kargs):
def Disconnect(self, nettype, name, mac):
""" Disconnect from the network. """
iface = self.iface
misc.ExecuteScripts(wpath.predisconnectscripts, self.debug)
# mac and name need to be strings
if mac == None:
mac = ''
if name == None:
name = ''
misc.ExecuteScripts(wpath.predisconnectscripts, self.debug,
extra_parameters=(nettype, name, mac))
if self.pre_disconnect_script:
print 'Running pre-disconnect script'
misc.ExecuteScript(expand_script_macros(self.pre_disconnect_script,
'pre-disconnection', *args),
'pre-disconnection', (mac,
name)),
self.debug)
iface.ReleaseDHCP()
iface.SetAddress('0.0.0.0')
iface.FlushRoutes()
iface.Down()
iface.Up()
misc.ExecuteScripts(wpath.postdisconnectscripts, self.debug)
misc.ExecuteScripts(wpath.postdisconnectscripts, self.debug,
extra_parameters=(nettype, name, mac))
if self.post_disconnect_script:
print 'Running post-disconnect script'
misc.ExecuteScript(expand_script_macros(self.post_disconnect_script,
'post-disconnection', *args),
'post-disconnection',
(mac, name)),
self.debug)
def ReleaseDHCP(self):
@@ -387,8 +396,9 @@ class ConnectThread(threading.Thread):
iface.Down()
@abortable
def run_global_scripts_if_needed(self, script_dir):
misc.ExecuteScripts(script_dir, verbose=self.debug)
def run_global_scripts_if_needed(self, script_dir, extra_parameters=()):
misc.ExecuteScripts(script_dir, verbose=self.debug,
extra_parameters=extra_parameters)
@abortable
def run_script_if_needed(self, script, msg, bssid='wired', essid='wired'):
@@ -769,10 +779,10 @@ class Wireless(Controller):
iwconfig = self.GetIwconfig()
else:
iwconfig = None
bssid = self.wiface.GetBSSID(iwconfig),
bssid = self.wiface.GetBSSID(iwconfig)
essid = self.wiface.GetCurrentNetwork(iwconfig)
Controller.Disconnect(self, bssid, essid)
Controller.Disconnect(self, 'wireless', essid, bssid)
self.StopWPA()
def SetWPADriver(self, driver):
@@ -832,7 +842,11 @@ class WirelessConnectThread(ConnectThread):
self.is_connecting = True
# Run pre-connection script.
self.run_global_scripts_if_needed(wpath.preconnectscripts)
self.run_global_scripts_if_needed(wpath.preconnectscripts,
extra_parameters=('wireless',
self.network['essid'],
self.network['bssid'])
)
self.run_script_if_needed(self.before_script, 'pre-connection',
self.network['bssid'], self.network['essid'])
@@ -876,7 +890,11 @@ class WirelessConnectThread(ConnectThread):
self.verify_association(wiface)
# Run post-connection script.
self.run_global_scripts_if_needed(wpath.postconnectscripts)
self.run_global_scripts_if_needed(wpath.postconnectscripts,
extra_parameters=('wireless',
self.network['essid'],
self.network['bssid'])
)
self.run_script_if_needed(self.after_script, 'post-connection',
self.network['bssid'], self.network['essid'])
@@ -989,7 +1007,7 @@ class Wired(Controller):
return self.connecting_thread
def Disconnect(self):
Controller.Disconnect(self, 'wired', 'wired')
Controller.Disconnect(self, 'wired', 'wired', 'wired')
def DetectWiredInterface(self):
""" Attempts to automatically detect a wired interface. """
@@ -1048,7 +1066,10 @@ class WiredConnectThread(ConnectThread):
self.is_connecting = True
# Run pre-connection script.
self.run_global_scripts_if_needed(wpath.preconnectscripts)
self.run_global_scripts_if_needed(wpath.preconnectscripts,
extra_parameters=('wired', 'wired',
self.network['profilename'])
)
self.run_script_if_needed(self.before_script, 'pre-connection', 'wired',
'wired')
@@ -1067,7 +1088,10 @@ class WiredConnectThread(ConnectThread):
self.set_dns_addresses(liface)
# Run post-connection script.
self.run_global_scripts_if_needed(wpath.postconnectscripts)
self.run_global_scripts_if_needed(wpath.postconnectscripts,
extra_parameters=('wired', 'wired',
self.network['profilename'])
)
self.run_script_if_needed(self.after_script, 'post-connection', 'wired',
'wired')