|
Server : Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 DAV/2 PHP/5.2.17 System : Linux localhost 2.6.18-419.el5 #1 SMP Fri Feb 24 22:47:42 UTC 2017 x86_64 User : nobody ( 99) PHP Version : 5.2.17 Disable Function : NONE Directory : /proc/21585/root/usr/share/system-config-network/netconfpkg/gui/ |
Upload File : |
## Copyright (C) 2001-2005 Red Hat, Inc.
## Copyright (C) 2001, 2002 Than Ngo <than@redhat.com>
## Copyright (C) 2001-2005 Harald Hoyer <harald@redhat.com>
## Copyright (C) 2001, 2002 Philipp Knirsch <pknirsch@redhat.com>
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
from netconfpkg.gui.GUI_functions import *
from netconfpkg import *
from netconfpkg.gui import sharedtcpip
import gtk
import gtk.glade
import string
import os
from EthernetHardwareDruid import ethernetHardware
from InterfaceCreator import InterfaceCreator
from rhpl import ethtool
from netconfpkg.gui.GUI_functions import xml_signal_autoconnect
import gobject
modeList = [
[ _("Auto") , "Auto" ],
[ _("Ad-Hoc") , "Ad-Hoc"],
[ _("Managed") , "Managed"],
[ _("Master") , "Master"],
[ _("Monitor") , "Monitor"],
# [ _("Repeater") , "Repeater"],
# [ _("Secondary") , "Secondary"]
]
authList = [
[ _("None"), "off"],
[ _("Open system (open)"), "open"],
[ _("Shared key (restricted)"), "restricted"],
]
class WirelessInterface(InterfaceCreator):
def __init__(self, toplevel=None, connection_type=WIRELESS, do_save = 1,
druid = None):
InterfaceCreator.__init__(self, do_save = do_save)
self.toplevel = toplevel
self.topdruid = druid
self.xml = None
self.devicelist = NCDeviceList.getDeviceList()
self.device = NCDevWireless.DevWireless()
self.device.Type = connection_type
self.device.OnBoot = False
self.device.AllowUser = False
self.device.IPv6Init = False
self.profilelist = NCProfileList.getProfileList()
self.toplevel = toplevel
self.connection_type = connection_type
self.hw_sel = 0
self.hwPage = False
self.druids = []
def init_gui(self):
if self.xml:
return
if request_rpms(["wireless-tools"]):
return
glade_file = "sharedtcpip.glade"
if not os.path.exists(glade_file):
glade_file = GLADEPATH + glade_file
if not os.path.exists(glade_file):
glade_file = NETCONFDIR + glade_file
self.sharedtcpip_xml = gtk.glade.XML(glade_file, None,
domain=PROGNAME)
glade_file = 'WirelessInterfaceDruid.glade'
if not os.path.exists(glade_file):
glade_file = GLADEPATH + glade_file
if not os.path.exists(glade_file):
glade_file = NETCONFDIR + glade_file
self.xml = gtk.glade.XML(glade_file, 'druid', domain=PROGNAME)
xml_signal_autoconnect(self.xml,
{ "on_hostname_config_page_back" : \
self.on_hostname_config_page_back,
"on_hostname_config_page_next" : \
self.on_hostname_config_page_next,
"on_hostname_config_page_prepare" : \
self.on_hostname_config_page_prepare,
"on_wireless_config_page_back" : \
self.on_wireless_config_page_back,
"on_wireless_config_page_next" : \
self.on_wireless_config_page_next,
"on_wireless_config_page_prepare" : \
self.on_wireless_config_page_prepare,
"on_hw_config_page_back" : self.on_hw_config_page_back,
"on_hw_config_page_next" : self.on_hw_config_page_next,
"on_hw_config_page_prepare" : self.on_hw_config_page_prepare,
"on_finish_page_finish" : self.on_finish_page_finish,
"on_finish_page_prepare" : self.on_finish_page_prepare,
"on_finish_page_back" : self.on_finish_page_back,
"on_essidAutoButton_toggled" : self.on_essidAutoButton_toggled,
}
)
window = self.sharedtcpip_xml.get_widget ('dhcpWindow')
frame = self.sharedtcpip_xml.get_widget ('dhcpFrame')
vbox = self.xml.get_widget ('generalVbox')
window.remove (frame)
vbox.pack_start (frame)
sharedtcpip.dhcp_init (self.sharedtcpip_xml, self.device)
self.druid = self.xml.get_widget('druid')
for i in self.druid.get_children():
self.druid.remove(i)
self.druids.append(i)
self.hwDruid = ethernetHardware(self.toplevel)
self.hwDruid.has_ethernet = None
self.druids = [self.druids[0]] + self.hwDruid.druids[:]\
+ self.druids[1:]
self.modestore = gtk.ListStore(gobject.TYPE_STRING,
gobject.TYPE_STRING)
for i in modeList:
self.modestore.append(i)
combo = self.xml.get_widget("modeCombo")
combo.set_model(self.modestore)
cell = gtk.CellRendererText()
combo.pack_start(cell, True)
combo.add_attribute(cell, 'text', 0)
combo.set_active(0)
self.authstore = gtk.ListStore(gobject.TYPE_STRING,
gobject.TYPE_STRING)
for i in authList:
self.authstore.append(i)
combo = self.xml.get_widget("authCombo")
combo.set_model(self.authstore)
cell = gtk.CellRendererText()
combo.pack_start(cell, True)
combo.add_attribute(cell, 'text', 0)
combo.connect("changed", self.on_authChanged)
combo.set_active(0)
self.xml.get_widget("keyEntry").set_sensitive(False)
self.xml.get_widget("rateCombo").set_popdown_strings((
_("Auto"),
"11M",
"5.5M",
"2M",
"1M"
))
def get_project_name(self):
return _('Wireless connection')
def get_type(self):
return WIRELESS
def get_project_description(self):
return _("Create a new wireless connection.")
def get_druids(self):
self.init_gui()
return self.druids
def on_hostname_config_page_back(self, druid_page, druid):
pass
def on_hostname_config_page_next(self, druid_page, druid):
sharedtcpip.dhcp_dehydrate (self.sharedtcpip_xml, self.device)
#self.device.Hostname = self.xml.get_widget("hostnameEntry").get_text()
pass
def on_hostname_config_page_prepare(self, druid_page, druid):
sharedtcpip.dhcp_hydrate (self.sharedtcpip_xml, self.device)
pass
def on_wireless_config_page_back(self, druid_page, druid):
childs = self.topdruid.get_children()
if self.hwPage:
self.topdruid.set_page(childs[2])
else:
self.topdruid.set_page(childs[1])
return True
def on_wireless_config_page_next(self, druid_page, druid):
self.device.createWireless()
wl = self.device.Wireless
if self.xml.get_widget("essidAutoButton").get_active():
wl.EssId = ""
else:
wl.EssId = self.xml.get_widget("essidEntry").get_text()
row = self.xml.get_widget("modeCombo").get_active()
wl.Mode = self.modestore[row][1]
if wl.Mode == _("Managed"):
wl.Channel = ""
wl.Rate = "auto"
else:
channel = self.xml.get_widget("channelEntry").get_text()
if channel == "Auto":
wl.Channel = ""
else:
wl.Channel = channel
rate = self.xml.get_widget("rateEntry").get_text()
if rate == _("Auto"):
wl.Rate = "auto"
else:
wl.Rate = rate
row = self.xml.get_widget("authCombo").get_active()
wl.Securitymode = self.authstore[row][1]
if wl.Securitymode == "off":
wl.Key = None
else:
# FIXME: [168036] check the key!
wl.Key = self.xml.get_widget("keyEntry").get_text()
def on_wireless_config_page_prepare(self, druid_page, druid):
if self.hwPage:
self.device.Device = self.hwDruid.hw.Name
self.device.Alias = None
# we don't want ot load anything for druid - let user to fill it
#if self.device.Device != None:
#try:
#from rhpl import iwlib
#info = iwlib.get_iwconfig(self.device.Device)
#except:
#pass
#else:
#if info.has_key("Mode"):
#values = [ r[1] for r in self.modestore ]
#match_row = values.index(info["Mode"])
#self.xml.get_widget("modeCombo").set_active(match_row)
#
#if info.has_key("ESSID") and info["ESSID"] != "":
#self.xml.get_widget("essidSpecButton").set_active(True)
#self.xml.get_widget("essidEntry").set_sensitive(True)
#self.xml.get_widget("essidEntry").set_text(info["ESSID"])
#else:
#self.xml.get_widget("essidAutoButton").set_active(True)
#self.xml.get_widget("essidEntry").set_sensitive(False)
#
#if info.has_key("Frequency") and info["Frequency"] < 1000:
#self.xml.get_widget("channelSpinButton").set_value(int(info["Frequency"]))
#
#if info.has_key("BitRate"):
#self.xml.get_widget("rateEntry").set_text(_(info["BitRate"]))
#
#if info.has_key("Key") and info["Key"] != "off":
#self.xml.get_widget("keyEntry").set_text(info["Key"])
self.on_modeChanged(self.xml.get_widget("modeCombo"))
self.on_essidAutoButton_toggled(self.xml.get_widget("essidAutoButton"))
self.xml.get_widget("modeCombo").connect("changed",
self.on_modeChanged)
def on_modeChanged(self, entry):
mode = self.modestore[self.xml.get_widget("modeCombo").get_active()][1]
if mode == "Managed":
self.xml.get_widget("channelCombo").set_sensitive(False)
self.xml.get_widget("rateCombo").set_sensitive(False)
self.xml.get_widget("rateEntry").set_sensitive(False)
else:
self.xml.get_widget("channelCombo").set_sensitive(True)
self.xml.get_widget("rateCombo").set_sensitive(True)
self.xml.get_widget("rateEntry").set_sensitive(True)
self.on_essidAutoButton_toggled(self.xml.get_widget("essidAutoButton"))
def on_authChanged(self, entry):
mode = self.authstore[self.xml.get_widget("authCombo").get_active()][1]
if mode != "off":
self.xml.get_widget("keyEntry").set_sensitive(True)
else:
self.xml.get_widget("keyEntry").set_sensitive(False)
def on_essidAutoButton_toggled(self, check):
self.xml.get_widget("essidEntry").set_sensitive(not check.get_active())
def on_hw_config_page_back(self, druid_page, druid):
pass
def on_hw_config_page_next(self, druid_page, druid):
clist = self.xml.get_widget("hardwareList")
childs = self.topdruid.get_children()
if not len(clist.selection):
self.topdruid.set_page(childs[1])
return True
self.hw_sel = clist.selection[0]
if (self.hw_sel + 1) == clist.rows:
self.hwPage = True
self.topdruid.set_page(childs[2])
else:
self.hwPage = False
self.device.Device = self.devlist[clist.selection[0]]
self.device.Alias = self.getNextAlias(self.device)
self.topdruid.set_page(childs[3])
return True
def on_hw_config_page_prepare(self, druid_page, druid):
hardwarelist = NCHardwareList.getHardwareList()
hardwarelist.updateFromSystem()
clist = self.xml.get_widget("hardwareList")
clist.clear()
self.devlist = []
for hw in hardwarelist:
if hw.Type == WIRELESS:
desc = hw.Description + " (" + hw.Name + ")"
clist.append([desc])
self.devlist.append(hw.Name)
clist.append([_("Other Wireless Card")])
clist.select_row (self.hw_sel, 0)
def on_finish_page_back(self,druid_page, druid):
pass
def on_finish_page_prepare(self, druid_page, druid):
self.device.DeviceId = self.device.Device
wl = self.device.Wireless
if self.device.Alias:
self.device.DeviceId = self.device.DeviceId + ":" \
+ str(self.device.Alias)
try: hwaddr = ethtool.get_hwaddr(self.device.Device)
except IOError, err:
pass
else:
self.device.HardwareAddress = hwaddr
s = _("You have selected the following information:") + "\n\n"\
+ _("Device:") + " " + str(self.device.DeviceId) + " "
hardwarelist = NCHardwareList.getHardwareList()
for hw in hardwarelist:
if hw.Name == self.device.Device:
s = s + "(" + hw.Description + ")"
break
s = s + "\n"
if self.device.BootProto == "static" or self.device.BootProto == "none":
s = s + _("Address:") + " " + self.device.IP + "\n"\
+ _("Subnet mask:") + " " + self.device.Netmask + "\n"\
+ _("Default gateway address:") + " " + self.device.Gateway + "\n"
else:
s = s + _("Automatically obtain IP address settings with:") + " "\
+ self.device.BootProto + "\n"
s = s + _("Mode:") + " " + str(wl.Mode) + "\n"
s = s + _("ESSID (network ID):") + " "
if not wl.EssId:
s = s + _("Automatic") + "\n"
else:
s = s + str(wl.EssId) + "\n"
if wl.Mode != "Managed":
s = s + _("Channel:") + " " + str(wl.Channel) + "\n"
s = s + _("Transmit rate:") + " " + str(wl.Rate) + "\n" \
+ _("Key: ")
if wl.Key:
s = s + str(wl.Key) + "\n"
else:
s = s + _("encryption disabled") + "\n"
druid_page.set_text(s)
def on_finish_page_finish(self, druid_page, druid):
hardwarelist = NCHardwareList.getHardwareList()
hardwarelist.commit()
self.devicelist.append(self.device)
self.device.commit()
for prof in self.profilelist:
if prof.Active == False:
continue
prof.ActiveDevices.append(self.device.DeviceId)
break
self.profilelist.commit()
self.devicelist.commit()
self.toplevel.destroy()
gtk.main_quit()
NCDevWireless.setDevWirelessWizard(WirelessInterface)
__author__ = "Harald Hoyer <harald@redhat.com>"