mirror of
https://github.com/gryf/wicd.git
synced 2025-12-19 20:38: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 getopt
|
||||
import ConfigParser
|
||||
|
||||
# DBUS
|
||||
import gobject
|
||||
import dbus
|
||||
@@ -666,6 +667,11 @@ class ConnectionWizard(dbus.service.Object):
|
||||
print 'automatically detected wireless interface', 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')
|
||||
def GetPrintableSignalStrength(self, iwconfig=None):
|
||||
""" Assigns a signal strength appropriate for display
|
||||
@@ -715,6 +721,18 @@ class ConnectionWizard(dbus.service.Object):
|
||||
print 'returning -1, current network not found'
|
||||
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')
|
||||
def ConnectWireless(self, id):
|
||||
""" Connects the the wireless network specified by i"""
|
||||
@@ -864,6 +882,23 @@ class ConnectionWizard(dbus.service.Object):
|
||||
else:
|
||||
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')
|
||||
def ConnectWired(self):
|
||||
"""connects to a wired network. """
|
||||
@@ -1453,7 +1488,6 @@ Arguments:
|
||||
\t-h\t--help\t\tPrint this help.
|
||||
"""
|
||||
|
||||
|
||||
def daemonize():
|
||||
""" Disconnect from the controlling terminal.
|
||||
|
||||
@@ -1489,7 +1523,6 @@ def daemonize():
|
||||
print >> sys.stderr, "Fork #2 failed: %d (%s)" % (e.errno, e.strerror)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def main(argv):
|
||||
""" The main daemon program.
|
||||
|
||||
|
||||
@@ -211,8 +211,77 @@
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="menu-item-image2">
|
||||
<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="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>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
64
gui.py
64
gui.py
@@ -1083,9 +1083,8 @@ class WiredProfileChooser:
|
||||
instruct_label.set_alignment(0, 0)
|
||||
stoppopcheckbox.set_active(False)
|
||||
|
||||
# Remove widgets that were added to the normal
|
||||
# WiredNetworkEntry so that they can be added to
|
||||
# the pop-up wizard.
|
||||
# Remove widgets that were added to the normal WiredNetworkEntry
|
||||
# so that they can be added to the pop-up wizard.
|
||||
wired_net_entry.vboxTop.remove(wired_net_entry.hbox_temp)
|
||||
wired_net_entry.vboxTop.remove(wired_net_entry.profile_help)
|
||||
|
||||
@@ -1133,7 +1132,11 @@ class appGui:
|
||||
"connect_clicked" : self.connect_hidden,
|
||||
"preferences_clicked" : self.settings_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)
|
||||
|
||||
# Set some strings in the GUI - they may be translated
|
||||
@@ -1158,6 +1161,15 @@ class appGui:
|
||||
|
||||
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()
|
||||
width = size[0]
|
||||
height = size[1]
|
||||
@@ -1382,6 +1394,50 @@ class appGui:
|
||||
else:
|
||||
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):
|
||||
""" Alerts the daemon to cancel the connection process. """
|
||||
#should cancel a connection if there
|
||||
|
||||
@@ -286,6 +286,10 @@ class Wireless(Controller):
|
||||
""" Get the out of iwconfig. """
|
||||
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,
|
||||
enc_used, ics):
|
||||
""" Create an ad-hoc wireless network.
|
||||
@@ -368,12 +372,11 @@ class Wireless(Controller):
|
||||
wiface.Down()
|
||||
wiface.Up()
|
||||
|
||||
def SetDriver(self):
|
||||
self.driver = self.GetDriverName()
|
||||
def EnableInterface(self):
|
||||
return self.wiface.Up()
|
||||
|
||||
def GetDriverName(self):
|
||||
""" Gets the driver associated with the wireless interface. """
|
||||
return self.wiface.GetDriverName()
|
||||
def DisableInterface(self):
|
||||
return self.wiface.Down()
|
||||
|
||||
def SetWPADriver(self, driver):
|
||||
self.wiface.SetWpaDriver(driver)
|
||||
@@ -632,18 +635,9 @@ class Wired(Controller):
|
||||
liface.Down()
|
||||
liface.Up()
|
||||
|
||||
def SetDriver(self):
|
||||
self.driver = self.GetDriverName()
|
||||
|
||||
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 IsUp(self):
|
||||
""" Calls the IsUp method for the wired interface. """
|
||||
return self.liface.IsUp()
|
||||
|
||||
def EnableInterface(self):
|
||||
return self.liface.Up()
|
||||
|
||||
28
wnettools.py
28
wnettools.py
@@ -393,6 +393,20 @@ class Interface(object):
|
||||
output = misc.Run(cmd)
|
||||
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):
|
||||
""" Control a wired network interface. """
|
||||
@@ -452,20 +466,6 @@ class WiredInterface(Interface):
|
||||
else:
|
||||
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):
|
||||
""" Control a wireless network interface. """
|
||||
|
||||
Reference in New Issue
Block a user