mirror of
https://github.com/gryf/wicd.git
synced 2025-12-20 04:48:00 +01:00
Added support for putting interfaces up/down through the gui.
This commit is contained in:
37
daemon.py
37
daemon.py
@@ -39,6 +39,7 @@ import sys
|
|||||||
import time
|
import time
|
||||||
import getopt
|
import getopt
|
||||||
import ConfigParser
|
import ConfigParser
|
||||||
|
|
||||||
# DBUS
|
# DBUS
|
||||||
import gobject
|
import gobject
|
||||||
import dbus
|
import dbus
|
||||||
@@ -665,6 +666,11 @@ class ConnectionWizard(dbus.service.Object):
|
|||||||
iface = self.wifi.DetectWirelessInterface()
|
iface = self.wifi.DetectWirelessInterface()
|
||||||
print 'automatically detected wireless interface', iface
|
print 'automatically detected wireless interface', iface
|
||||||
return str(iface)
|
return str(iface)
|
||||||
|
|
||||||
|
@dbus.service.method('org.wicd.daemon.wireless')
|
||||||
|
def IsWirelessUp(self):
|
||||||
|
""" Returns a boolean specifying if wireless is up or down. """
|
||||||
|
return self.wifi.IsUp()
|
||||||
|
|
||||||
@dbus.service.method('org.wicd.daemon.wireless')
|
@dbus.service.method('org.wicd.daemon.wireless')
|
||||||
def GetPrintableSignalStrength(self, iwconfig=None):
|
def GetPrintableSignalStrength(self, iwconfig=None):
|
||||||
@@ -714,6 +720,18 @@ class ConnectionWizard(dbus.service.Object):
|
|||||||
return x
|
return x
|
||||||
print 'returning -1, current network not found'
|
print 'returning -1, current network not found'
|
||||||
return -1
|
return -1
|
||||||
|
|
||||||
|
@dbus.service.method('org.wicd.daemon.wireless')
|
||||||
|
def EnableWirelessInterface(self):
|
||||||
|
""" Calls a method to enable the wireless interface. """
|
||||||
|
result = self.wifi.EnableInterface()
|
||||||
|
return result
|
||||||
|
|
||||||
|
@dbus.service.method('org.wicd.daemon.wireless')
|
||||||
|
def DisableWirelessInterface(self):
|
||||||
|
""" Calls a method to disable the wireless interface. """
|
||||||
|
result = self.wifi.DisableInterface()
|
||||||
|
return result
|
||||||
|
|
||||||
@dbus.service.method('org.wicd.daemon.wireless')
|
@dbus.service.method('org.wicd.daemon.wireless')
|
||||||
def ConnectWireless(self, id):
|
def ConnectWireless(self, id):
|
||||||
@@ -863,6 +881,23 @@ class ConnectionWizard(dbus.service.Object):
|
|||||||
self.wired.CheckPluggedIn())
|
self.wired.CheckPluggedIn())
|
||||||
else:
|
else:
|
||||||
return self.__printReturn("returning plugged in", None)
|
return self.__printReturn("returning plugged in", None)
|
||||||
|
|
||||||
|
@dbus.service.method('org.wicd.daemon.wired')
|
||||||
|
def IsWiredUp(self):
|
||||||
|
""" Returns a boolean specifying if wired iface is up or down. """
|
||||||
|
return self.wired.IsUp()
|
||||||
|
|
||||||
|
@dbus.service.method('org.wicd.daemon.wired')
|
||||||
|
def EnableWiredInterface(self):
|
||||||
|
""" Calls a method to enable the wired interface. """
|
||||||
|
result = self.wired.EnableInterface()
|
||||||
|
return result
|
||||||
|
|
||||||
|
@dbus.service.method('org.wicd.daemon.wired')
|
||||||
|
def DisableWiredInterface(self):
|
||||||
|
""" Calls a method to disable the wired interface. """
|
||||||
|
result = self.wired.DisableInterface()
|
||||||
|
return result
|
||||||
|
|
||||||
@dbus.service.method('org.wicd.daemon.wired')
|
@dbus.service.method('org.wicd.daemon.wired')
|
||||||
def ConnectWired(self):
|
def ConnectWired(self):
|
||||||
@@ -1453,7 +1488,6 @@ Arguments:
|
|||||||
\t-h\t--help\t\tPrint this help.
|
\t-h\t--help\t\tPrint this help.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
def daemonize():
|
def daemonize():
|
||||||
""" Disconnect from the controlling terminal.
|
""" Disconnect from the controlling terminal.
|
||||||
|
|
||||||
@@ -1489,7 +1523,6 @@ def daemonize():
|
|||||||
print >> sys.stderr, "Fork #2 failed: %d (%s)" % (e.errno, e.strerror)
|
print >> sys.stderr, "Fork #2 failed: %d (%s)" % (e.errno, e.strerror)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
def main(argv):
|
def main(argv):
|
||||||
""" The main daemon program.
|
""" The main daemon program.
|
||||||
|
|
||||||
|
|||||||
@@ -211,8 +211,77 @@
|
|||||||
<child internal-child="image">
|
<child internal-child="image">
|
||||||
<widget class="GtkImage" id="menu-item-image2">
|
<widget class="GtkImage" id="menu-item-image2">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
|
||||||
<property name="stock">gtk-add</property>
|
<property name="stock">gtk-add</property>
|
||||||
|
<property name="icon_size">1</property>
|
||||||
|
</widget>
|
||||||
|
</child>
|
||||||
|
</widget>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<widget class="GtkMenuItem" id="iface_menu_button">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="label" translatable="yes">Enable/Disable Interfaces</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<child>
|
||||||
|
<widget class="GtkMenu" id="iface_menu">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||||
|
<child>
|
||||||
|
<widget class="GtkImageMenuItem" id="iface_menu_enable_wired">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="label" translatable="yes">Enable Wired Interface</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<signal name="activate" handler="on_iface_menu_enable_wired"/>
|
||||||
|
<child internal-child="image">
|
||||||
|
<widget class="GtkImage" id="menu-item-image6">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="stock">gtk-yes</property>
|
||||||
|
</widget>
|
||||||
|
</child>
|
||||||
|
</widget>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<widget class="GtkImageMenuItem" id="iface_menu_enable_wireless">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="label" translatable="yes">Enable Wireless Interface</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<signal name="activate" handler="on_iface_menu_enable_wireless"/>
|
||||||
|
<child internal-child="image">
|
||||||
|
<widget class="GtkImage" id="menu-item-image5">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="stock">gtk-yes</property>
|
||||||
|
</widget>
|
||||||
|
</child>
|
||||||
|
</widget>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<widget class="GtkImageMenuItem" id="iface_menu_disable_wired">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="label" translatable="yes">Disable Wired Interface</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<signal name="activate" handler="on_iface_menu_disable_wired"/>
|
||||||
|
<child internal-child="image">
|
||||||
|
<widget class="GtkImage" id="menu-item-image7">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="stock">gtk-stop</property>
|
||||||
|
</widget>
|
||||||
|
</child>
|
||||||
|
</widget>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<widget class="GtkImageMenuItem" id="iface_menu_disable_wireless">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="label" translatable="yes">Disable Wireless Interface</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<signal name="activate" handler="on_iface_menu_disable_wireless"/>
|
||||||
|
<child internal-child="image">
|
||||||
|
<widget class="GtkImage" id="menu-item-image8">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="stock">gtk-stop</property>
|
||||||
|
</widget>
|
||||||
|
</child>
|
||||||
|
</widget>
|
||||||
|
</child>
|
||||||
</widget>
|
</widget>
|
||||||
</child>
|
</child>
|
||||||
</widget>
|
</widget>
|
||||||
|
|||||||
66
gui.py
66
gui.py
@@ -1083,9 +1083,8 @@ class WiredProfileChooser:
|
|||||||
instruct_label.set_alignment(0, 0)
|
instruct_label.set_alignment(0, 0)
|
||||||
stoppopcheckbox.set_active(False)
|
stoppopcheckbox.set_active(False)
|
||||||
|
|
||||||
# Remove widgets that were added to the normal
|
# Remove widgets that were added to the normal WiredNetworkEntry
|
||||||
# WiredNetworkEntry so that they can be added to
|
# so that they can be added to the pop-up wizard.
|
||||||
# the pop-up wizard.
|
|
||||||
wired_net_entry.vboxTop.remove(wired_net_entry.hbox_temp)
|
wired_net_entry.vboxTop.remove(wired_net_entry.hbox_temp)
|
||||||
wired_net_entry.vboxTop.remove(wired_net_entry.profile_help)
|
wired_net_entry.vboxTop.remove(wired_net_entry.profile_help)
|
||||||
|
|
||||||
@@ -1133,7 +1132,11 @@ class appGui:
|
|||||||
"connect_clicked" : self.connect_hidden,
|
"connect_clicked" : self.connect_hidden,
|
||||||
"preferences_clicked" : self.settings_dialog,
|
"preferences_clicked" : self.settings_dialog,
|
||||||
"about_clicked" : self.about_dialog,
|
"about_clicked" : self.about_dialog,
|
||||||
"create_adhoc_network_button_button" : self.create_adhoc_network}
|
"create_adhoc_network_button_button" : self.create_adhoc_network,
|
||||||
|
"on_iface_menu_enable_wireless" : self.on_enable_wireless,
|
||||||
|
"on_iface_menu_disable_wireless" : self.on_disable_wireless,
|
||||||
|
"on_iface_menu_enable_wired" : self.on_enable_wired,
|
||||||
|
"on_iface_menu_disable_wired" : self.on_disable_wired,}
|
||||||
self.wTree.signal_autoconnect(dic)
|
self.wTree.signal_autoconnect(dic)
|
||||||
|
|
||||||
# Set some strings in the GUI - they may be translated
|
# Set some strings in the GUI - they may be translated
|
||||||
@@ -1157,7 +1160,16 @@ class appGui:
|
|||||||
self.is_visible = True
|
self.is_visible = True
|
||||||
|
|
||||||
self.window.connect('delete_event', self.exit)
|
self.window.connect('delete_event', self.exit)
|
||||||
|
|
||||||
|
if not wireless.IsWirelessUp():
|
||||||
|
self.wTree.get_widget("iface_menu_disable_wireless").hide()
|
||||||
|
else:
|
||||||
|
self.wTree.get_widget("iface_menu_enable_wireless").hide()
|
||||||
|
if not wired.IsWiredUp():
|
||||||
|
self.wTree.get_widget("iface_menu_disable_wired").hide()
|
||||||
|
else:
|
||||||
|
self.wTree.get_widget("iface_menu_enable_wired").hide()
|
||||||
|
|
||||||
size = config.ReadWindowSize()
|
size = config.ReadWindowSize()
|
||||||
width = size[0]
|
width = size[0]
|
||||||
height = size[1]
|
height = size[1]
|
||||||
@@ -1381,6 +1393,50 @@ class appGui:
|
|||||||
self.refresh_networks(None, True, answer)
|
self.refresh_networks(None, True, answer)
|
||||||
else:
|
else:
|
||||||
dialog.destroy()
|
dialog.destroy()
|
||||||
|
|
||||||
|
def on_enable_wireless(self, widget):
|
||||||
|
""" Called when the Enable Wireless Interface button is clicked. """
|
||||||
|
success = wireless.EnableWirelessInterface()
|
||||||
|
if success:
|
||||||
|
enable_item = self.wTree.get_widget("iface_menu_enable_wireless")
|
||||||
|
disable_item = self.wTree.get_widget("iface_menu_disable_wireless")
|
||||||
|
enable_item.hide()
|
||||||
|
disable_item.show()
|
||||||
|
else:
|
||||||
|
misc.error(self.window, "Failed to enable wireless interface.")
|
||||||
|
|
||||||
|
def on_disable_wireless(self, widget):
|
||||||
|
""" Called when the Disable Wireless Interface button is clicked. """
|
||||||
|
success = wireless.DisableWirelessInterface()
|
||||||
|
if success:
|
||||||
|
enable_item = self.wTree.get_widget("iface_menu_enable_wireless")
|
||||||
|
disable_item = self.wTree.get_widget("iface_menu_disable_wireless")
|
||||||
|
enable_item.show()
|
||||||
|
disable_item.hide()
|
||||||
|
else:
|
||||||
|
misc.error(self.window, "Failed to disable wireless interface.")
|
||||||
|
|
||||||
|
def on_enable_wired(self, widget):
|
||||||
|
""" Called when the Enable Wired Interface button is clicked. """
|
||||||
|
success = wired.EnableWiredInterface()
|
||||||
|
if success:
|
||||||
|
enable_item = self.wTree.get_widget("iface_menu_enable_wired")
|
||||||
|
disable_item = self.wTree.get_widget("iface_menu_disable_wired")
|
||||||
|
enable_item.hide()
|
||||||
|
disable_item.show()
|
||||||
|
else:
|
||||||
|
misc.error(self.window, "Failed to enable wired interface.")
|
||||||
|
|
||||||
|
def on_disable_wired(self, widget):
|
||||||
|
""" Called when the Disable Wired Interface button is clicked. """
|
||||||
|
success = wired.DisableWiredInterface()
|
||||||
|
if success:
|
||||||
|
enable_item = self.wTree.get_widget("iface_menu_enable_wired")
|
||||||
|
disable_item = self.wTree.get_widget("iface_menu_disable_wired")
|
||||||
|
enable_item.show()
|
||||||
|
disable_item.hide()
|
||||||
|
else:
|
||||||
|
misc.error(self.window, "Failed to disable wired interface.")
|
||||||
|
|
||||||
def cancel_connect(self, widget):
|
def cancel_connect(self, widget):
|
||||||
""" Alerts the daemon to cancel the connection process. """
|
""" Alerts the daemon to cancel the connection process. """
|
||||||
|
|||||||
@@ -285,6 +285,10 @@ class Wireless(Controller):
|
|||||||
def GetIwconfig(self):
|
def GetIwconfig(self):
|
||||||
""" Get the out of iwconfig. """
|
""" Get the out of iwconfig. """
|
||||||
return self.wiface.GetIwconfig()
|
return self.wiface.GetIwconfig()
|
||||||
|
|
||||||
|
def IsUp(self):
|
||||||
|
""" Calls the IsUp method for the wireless interface. """
|
||||||
|
return self.wiface.IsUp()
|
||||||
|
|
||||||
def CreateAdHocNetwork(self, essid, channel, ip, enctype, key,
|
def CreateAdHocNetwork(self, essid, channel, ip, enctype, key,
|
||||||
enc_used, ics):
|
enc_used, ics):
|
||||||
@@ -367,13 +371,12 @@ class Wireless(Controller):
|
|||||||
wiface.SetAddress('0.0.0.0')
|
wiface.SetAddress('0.0.0.0')
|
||||||
wiface.Down()
|
wiface.Down()
|
||||||
wiface.Up()
|
wiface.Up()
|
||||||
|
|
||||||
|
def EnableInterface(self):
|
||||||
|
return self.wiface.Up()
|
||||||
|
|
||||||
def SetDriver(self):
|
def DisableInterface(self):
|
||||||
self.driver = self.GetDriverName()
|
return self.wiface.Down()
|
||||||
|
|
||||||
def GetDriverName(self):
|
|
||||||
""" Gets the driver associated with the wireless interface. """
|
|
||||||
return self.wiface.GetDriverName()
|
|
||||||
|
|
||||||
def SetWPADriver(self, driver):
|
def SetWPADriver(self, driver):
|
||||||
self.wiface.SetWpaDriver(driver)
|
self.wiface.SetWpaDriver(driver)
|
||||||
@@ -632,18 +635,9 @@ class Wired(Controller):
|
|||||||
liface.Down()
|
liface.Down()
|
||||||
liface.Up()
|
liface.Up()
|
||||||
|
|
||||||
def SetDriver(self):
|
def IsUp(self):
|
||||||
self.driver = self.GetDriverName()
|
""" Calls the IsUp method for the wired interface. """
|
||||||
|
return self.liface.IsUp()
|
||||||
def GetDriverName(self):
|
|
||||||
""" Get the driver associated with the wired interface. """
|
|
||||||
return self.liface.GetDriverName()
|
|
||||||
|
|
||||||
def LoadDriver(self):
|
|
||||||
return self.liface.LoadDriver(self.driver)
|
|
||||||
|
|
||||||
def UnloadDriver(self):
|
|
||||||
return self.liface.UnloadDriver(self.driver)
|
|
||||||
|
|
||||||
def EnableInterface(self):
|
def EnableInterface(self):
|
||||||
return self.liface.Up()
|
return self.liface.Up()
|
||||||
|
|||||||
28
wnettools.py
28
wnettools.py
@@ -392,6 +392,20 @@ class Interface(object):
|
|||||||
#if self.verbose: print cmd
|
#if self.verbose: print cmd
|
||||||
output = misc.Run(cmd)
|
output = misc.Run(cmd)
|
||||||
return misc.RunRegex(ip_pattern, output)
|
return misc.RunRegex(ip_pattern, output)
|
||||||
|
|
||||||
|
def IsUp(self):
|
||||||
|
""" Determines if the interface is up. """
|
||||||
|
cmd = "ifconfig " + self.iface
|
||||||
|
output = misc.Run(cmd)
|
||||||
|
lines = output.split('\n')
|
||||||
|
if len(lines) < 5:
|
||||||
|
return False
|
||||||
|
|
||||||
|
for line in lines[1:4]:
|
||||||
|
if line.strip().startswith('UP'):
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
class WiredInterface(Interface):
|
class WiredInterface(Interface):
|
||||||
@@ -451,20 +465,6 @@ class WiredInterface(Interface):
|
|||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def IsUp(self):
|
|
||||||
""" Determines if the interface is up. """
|
|
||||||
cmd = "ifconfig " + self.iface
|
|
||||||
output = misc.Run(cmd)
|
|
||||||
lines = output.split('\n')
|
|
||||||
if len(lines) < 5:
|
|
||||||
return False
|
|
||||||
|
|
||||||
for line in lines[1:4]:
|
|
||||||
if line.strip().startswith('UP'):
|
|
||||||
return True
|
|
||||||
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
class WirelessInterface(Interface):
|
class WirelessInterface(Interface):
|
||||||
|
|||||||
Reference in New Issue
Block a user