summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--text.py5
-rw-r--r--textw/network_text.py731
2 files changed, 15 insertions, 721 deletions
diff --git a/text.py b/text.py
index 2349f72e5..642c3e57d 100644
--- a/text.py
+++ b/text.py
@@ -63,12 +63,11 @@ stepToClasses = {
"BootloaderPasswordWindow",
"BootloaderImagesWindow",
"BootloaderLocationWindow")),
- "network" : ("network_text", ("NetworkDeviceWindow", "NetworkGlobalWindow",
- "HostnameWindow")),
+ "network" : ("network_text", ("HostnameWindow")),
"timezone" : ("timezone_text", "TimezoneWindow"),
"accounts" : ("userauth_text", "RootPasswordWindow"),
"tasksel": ("task_text", "TaskWindow"),
- "group-selection": ("grpselect_text", "GroupSelectionWindow"),
+ "group-selection": ("grpselect_text", "GroupSelectionWindow"),
"install" : ("progress_text", "setupForInstall"),
"complete" : ("complete_text", "FinishedWindow"),
}
diff --git a/textw/network_text.py b/textw/network_text.py
index 17f2066be..d2e56788e 100644
--- a/textw/network_text.py
+++ b/textw/network_text.py
@@ -22,7 +22,6 @@
# David Cantrell <dcantrell@redhat.com>
#
-import isys
import string
import network
import socket
@@ -36,717 +35,6 @@ _ = lambda x: gettext.ldgettext("anaconda", x)
import logging
log = logging.getLogger("anaconda")
-def handleIPError(screen, field, msg):
- try:
- newfield = descr[field]
- except:
- newfield = field
-
- ButtonChoiceWindow(screen, _("Error With %s Data") % (newfield,),
- "%s" % msg.__str__(), buttons = [ _("OK") ])
-
-def handleIPMissing(screen, field):
- try:
- newfield = descr[field]
- except:
- newfield = field
-
- ButtonChoiceWindow(screen, _("Error With Data"),
- _("A value is required for the field %s.")
- % (newfield,), buttons = [ _("OK") ])
-
-def handleMissingOptionalIP(screen, field):
- ButtonChoiceWindow(screen, _("Error With Data"),
- _("You have not specified the field %s. Depending on "
- "your network environment this may cause problems "
- "later.") % (field,), buttons = [ _("Continue") ])
-
-def handleBroadCastError(screen):
- ButtonChoiceWindow(screen, _("Error With Data"),
- _("The IPv4 information you have entered is invalid."))
-
-def handleInvalidPrefix(screen, family):
- if family == socket.AF_INET:
- ver = 4
- upper = 32
- elif family == socket.AF_INET6:
- ver = 6
- upper = 128
-
- ButtonChoiceWindow(screen, _("Invalid Prefix"),
- _("IPv%d prefix must be between 0 and %d." % (ver, upper,)),
- buttons = [_("OK")])
-
-def handleValueErrorPrefix(screen, field):
- ButtonChoiceWindow(screen, _("Integer Required for Prefix"),
- _("You must enter a valid integer for the %s. For IPv4, the "
- "value can be between 0 and 32. For IPv6 it can be between "
- "0 and 128." % (field,)), buttons = [_("OK")])
-
-class NetworkDeviceWindow:
- def createManualEntryGrid(self, ipEntry, prefixEntry, family):
- if family == socket.AF_INET:
- prefixLabel = Label(_("Prefix (Netmask)"))
- elif family == socket.AF_INET6:
- prefixLabel = Label(_("Prefix"))
-
- manualgrid = Grid(3, 2)
-
- manualgrid.setField(Label(_("IP Address")), 0, 0, anchorLeft = 1,
- padding = (4, 0, 0, 0))
- manualgrid.setField(ipEntry, 0, 1, anchorLeft = 1,
- padding = (4, 0, 0, 0))
- manualgrid.setField(Label("/"), 1, 1, anchorLeft = 1,
- padding = (1, 0, 1, 0))
- manualgrid.setField(prefixLabel, 2, 0, anchorLeft = 1)
- manualgrid.setField(prefixEntry, 2, 1, anchorLeft = 1)
- manualgrid.setField(Label(" "), 1, 0, anchorLeft = 1,
- padding = (1, 0, 1, 0))
-
- return manualgrid
-
- def ipMethodCb(self, obj):
- (radio, ipEntry, prefixEntry) = obj
- if radio.getSelection() == "static":
- sense = FLAGS_RESET
- else:
- sense = FLAGS_SET
- ipEntry.setFlags(FLAG_DISABLED, sense)
- prefixEntry.setFlags(FLAG_DISABLED, sense)
-
- def runMainScreen(self, screen, dev, showonboot=1):
- onboot = dev.get('onboot')
- isPtp = network.isPtpDev(dev.info["DEVICE"])
- isWifi = isys.isWireless(dev.info["DEVICE"])
-
- devnames = self.devices.keys()
- devnames.sort(cmp=isys.compareNetDevices)
- if devnames.index(dev.get('DEVICE')) == 0 and not onboot:
- onbootIsOn = 1
- else:
- onbootIsOn = (onboot == 'yes')
-
- # Create options grid
- ipmiscrows = 0
- if isPtp:
- ipmiscrows += 1
- if isWifi:
- ipmiscrows += 2
-
- maingridrows = 5
- if ipmiscrows > 0:
- maingridrows += 1
-
- maingrid = Grid(1, maingridrows)
- mainrow = 0
-
- # Activate on boot option
- onbootCb = Checkbox(_("Activate on boot"), isOn = onbootIsOn)
- if showonboot:
- maingrid.setField(onbootCb, 0, mainrow, anchorLeft = 1,
- growx = 1, padding = (0, 0, 0, 0))
- mainrow += 1
-
- # Use IPv4 option
- ipv4Cb = Checkbox(_("Enable IPv4 support"),
- int(bool(dev.get('useIPv4'))))
- maingrid.setField(ipv4Cb, 0, mainrow, anchorLeft = 1, growx = 1,
- padding = (0, 0, 0, 0))
- mainrow += 1
-
- # Use IPv6 option
- ipv6Cb = Checkbox(_("Enable IPv6 support"),
- int(bool(dev.get('useIPv6'))))
- maingrid.setField(ipv6Cb, 0, mainrow, anchorLeft = 1, growx = 1,
- padding = (0, 0, 0, 0))
- mainrow += 1
-
- if ipmiscrows > 0:
- ipmiscgrid = Grid(2, ipmiscrows)
- ipmiscrow = 0
-
- # Point to Point address
- ptpaddr = None
- if isPtp:
- ipmiscgrid.setField(Label(_("P-to-P:")), 0, ipmiscrow,
- anchorLeft = 1, padding = (0, 1, 1, 0))
- ptplist = Entry(41)
- ptplist.set(dev.get('remip'))
- ipmiscgrid.setField(ptplist, 1, ipmiscrow, anchorLeft = 1,
- padding = (0, 1, 0, 0))
-
- ipmiscrow += 1
-
- # Wireless settings
- essid = None
- wepkey = None
- if isWifi:
- if isPtp:
- padtop = 0
- else:
- padtop = 1
-
- ipmiscgrid.setField(Label(_("ESSID:")), 0, ipmiscrow,
- anchorLeft = 1, padding = (0, padtop, 1, 0))
- essid = Entry(41)
- essid.set(dev.get('essid'))
- ipmiscgrid.setField(essid, 1, ipmiscrow, anchorLeft = 1,
- padding = (0, padtop, 0, 0))
-
- ipmiscrow += 1
-
- ipmiscgrid.setField(Label(_("WEP Key:")), 0, ipmiscrow,
- anchorLeft = 1, padding = (0, 0, 1, 0))
- wepkey = Entry(41)
- wepkey.set(dev.get('key'))
- ipmiscgrid.setField(wepkey, 1, ipmiscrow, anchorLeft = 1)
-
- # Add the IP misc subtable
- if ipmiscrows > 0:
- maingrid.setField(ipmiscgrid, 0, mainrow, anchorLeft = 1,
- growx = 1, padding = (0, 0, 0, 0))
-
- bb = ButtonBar(screen, (TEXT_OK_BUTTON, TEXT_BACK_BUTTON))
-
- toplevel = GridFormHelp(screen, _("Network Configuration for %s") %
- (dev.info['DEVICE']), "networkdev", 1, 5)
-
- toplevel.add(self.topgrid, 0, 0, (0, 0, 0, 0), anchorLeft = 1)
- toplevel.add(maingrid, 0, 1, (0, 0, 0, 0), anchorLeft = 1)
- toplevel.add(bb, 0, 2, (0, 1, 0, 0), growx = 1, growy = 0)
-
- ipv4Cb.isOn = int(bool(dev.get('useIPv4')))
- ipv6Cb.isOn = int(bool(dev.get('useIPv6')))
-
- while 1:
- result = toplevel.run()
- rc = bb.buttonPressed (result)
-
- if rc == TEXT_BACK_CHECK:
- screen.popWindow()
- return INSTALL_BACK
-
- if not ipv4Cb.selected() and not ipv6Cb.selected():
- ButtonChoiceWindow(screen, _("Missing Protocol"),
- _("You must select at least IPv4 or IPv6 support."),
- buttons = [_("OK")])
- continue
-
- dev.set(('useIPv4', bool(ipv4Cb.selected())))
- dev.set(('useIPv6', bool(ipv6Cb.selected())))
-
- if onbootCb.selected():
- dev.set(('onboot', 'yes'))
- else:
- dev.unset('onboot')
-
- if isPtp:
- try:
- network.sanityCheckIPString(ptpaddr.value())
- dev.set(('remip', ptpaddr.value()))
- except network.IPMissing, msg:
- handleIPMissing(screen, _("point-to-point IP address"))
- continue
- except network.IPError, msg:
- handleIPError(screen, _("point-to-point IP address"), msg)
- continue
-
- if isWifi:
- if essid is not None:
- if not essid.value() == '':
- dev.set(('essid', essid.value()))
-
- if wepkey is not None:
- if not wepkey.value() == '':
- dev.set(('key', wepkey.value()))
-
- break
-
- screen.popWindow()
- return INSTALL_OK
-
- def runIPv4Screen(self, screen, dev):
- bootproto = dev.get('bootproto').lower()
-
- radio = RadioGroup()
-
- maingrid = Grid(1, 3)
- dhcpCb = radio.add(_("Dynamic IP configuration (DHCP)"),
- "dhcp", (bootproto == "dhcp"))
- maingrid.setField(dhcpCb, 0, 0, growx = 1, anchorLeft = 1)
- manualCb = radio.add(_("Manual address configuration"),
- "static", (bootproto == "static"))
- maingrid.setField(manualCb, 0, 1, growx = 1, anchorLeft = 1)
-
- ipEntry = Entry(16)
- ipEntry.set(dev.get('ipaddr'))
- prefixEntry = Entry(16)
- prefixEntry.set(dev.get('netmask'))
-
- manualgrid = self.createManualEntryGrid(ipEntry, prefixEntry,
- socket.AF_INET)
- maingrid.setField(manualgrid, 0, 2, anchorLeft = 1, growx = 1,
- padding = (0, 1, 0, 0))
- dhcpCb.setCallback(self.ipMethodCb, (radio, ipEntry, prefixEntry))
- manualCb.setCallback(self.ipMethodCb, (radio, ipEntry, prefixEntry))
-
- self.ipMethodCb((radio, ipEntry, prefixEntry))
-
- bb = ButtonBar(screen, (TEXT_OK_BUTTON, TEXT_BACK_BUTTON))
-
- title = _("IPv4 Configuration for %s") % (dev.info['DEVICE'])
- toplevel = GridFormHelp(screen, title, "networkipv4", 1, 5)
-
- toplevel.add(self.topgrid, 0, 0, (0, 0, 0, 0), anchorLeft = 1)
- toplevel.add(maingrid, 0, 1, (0, 0, 0, 0), anchorLeft = 1)
- toplevel.add(bb, 0, 2, (0, 1, 0, 0), growx = 1, growy = 0)
-
- while 1:
- result = toplevel.run()
- rc = bb.buttonPressed(result)
-
- if rc == TEXT_BACK_CHECK:
- screen.popWindow()
- return INSTALL_BACK
-
- bootproto = radio.getSelection()
- dev.set(('bootproto', bootproto))
-
- if bootproto == 'dhcp':
- dev.unset('ipaddr')
- dev.unset('netmask')
- dev.unset('network')
- dev.unset('broadcast')
- break
-
- ip = ipEntry.value()
- nm = prefixEntry.value()
-
- # check for missing values
- if ip == '' or ip is None:
- handleIPMissing(screen, _('IPv4 address'))
- continue
-
- if nm == '' or nm is None:
- handleIPMissing(screen, _('IPv4 network mask'))
- continue
-
- # validate IP address
- try:
- network.sanityCheckIPString(ip)
- dev.set(('ipaddr', ip))
- except network.IPMissing, msg:
- handleIPMissing(screen, _('IPv4 address'))
- continue
- except network.IPError, msg:
- handleIPError(screen, _('IPv4 address'), msg)
- continue
-
- # validate prefix (netmask)
- try:
- if nm.find('.') == -1:
- if int(nm) > 32 or int(nm) < 0:
- handleInvalidPrefix(screen, socket.AF_INET)
- continue
- else:
- nm = isys.prefix2netmask(int(nm))
-
- network.sanityCheckIPString(nm)
- dev.set(('netmask', nm))
- except network.IPMissing, msg:
- handleIPMissing(screen, _('IPv4 prefix (network mask)'))
- continue
- except network.IPError, msg:
- handleIPError(screen, _('IPv4 prefix (network mask)'), msg)
- continue
- except ValueError:
- handleValueErrorPrefix(screen, _('IPv4 prefix (network mask)'))
- continue
-
- # calculate network and broadcast addresses (IPv4-only)
- try:
- (net, bc) = isys.inet_calcNetBroad(dev.get('ipaddr'),
- dev.get('netmask'))
- dev.set(('network', net), ('broadcast', bc))
- except Exception, e:
- handleBroadCastError(screen)
- continue
-
- break
-
- screen.popWindow()
- return INSTALL_OK
-
- def runIPv6Screen(self, screen, dev):
- ipv6autoconf = dev.get('ipv6_autoconf').lower()
- ipv6addr = dev.get('ipv6addr')
- ipv6prefix = None
- brk = ipv6addr.find('/')
- if brk != -1:
- ipv6addr = ipv6addr[0:brk]
- brk += 1
- ipv6prefix = ipv6addr[brk:]
-
- # default to automatic neighbor discovery if no ipv6 values exist
- if ipv6autoconf == '' or ipv6autoconf is None or \
- ipv6addr == '' or ipv6addr is None:
- ipv6autoconf = 'yes'
- ipv6addr = None
- ipv6prefix = None
- dev.unset('ipv6_autoconf')
- dev.unset('ipv6addr')
-
- radio = RadioGroup()
-
- maingrid = Grid(1, 4)
- autoCb = radio.add(_('Automatic neighbor discovery'), 'auto',
- (ipv6autoconf == 'yes'))
- maingrid.setField(autoCb, 0, 0, growx = 1, anchorLeft = 1)
- dhcpCb = radio.add(_('Dynamic IP configuration (DHCPv6)'), 'dhcp',
- (ipv6addr is not None and ipv6addr == 'dhcp'))
- maingrid.setField(dhcpCb, 0, 1, growx = 1, anchorLeft = 1)
- manualCb = radio.add(_('Manual address configuration'), 'static',
- (ipv6addr is not None and ipv6addr != 'dhcp'))
- maingrid.setField(manualCb, 0, 2, growx = 1, anchorLeft = 1)
-
- manualgrid = Grid(3, 2)
- ipEntry = Entry(41)
- prefixEntry = Entry(6)
- if radio.getSelection() == 'static':
- ipEntry.set(ipv6addr)
- if ipv6prefix is not None:
- prefixEntry.set(ipv6prefix)
-
- manualgrid = self.createManualEntryGrid(ipEntry, prefixEntry,
- socket.AF_INET6)
- maingrid.setField(manualgrid, 0, 3, anchorLeft = 1, growx = 1,
- padding = (0, 1, 0, 0))
- autoCb.setCallback(self.ipMethodCb, (radio, ipEntry, prefixEntry))
- dhcpCb.setCallback(self.ipMethodCb, (radio, ipEntry, prefixEntry))
- manualCb.setCallback(self.ipMethodCb, (radio, ipEntry, prefixEntry))
-
- self.ipMethodCb((radio, ipEntry, prefixEntry))
-
- bb = ButtonBar(screen, (TEXT_OK_BUTTON, TEXT_BACK_BUTTON))
-
- title = _("IPv6 Configuration for %s") % (dev.info['DEVICE'])
- toplevel = GridFormHelp(screen, title, "networkipv6", 1, 6)
-
- toplevel.add(self.topgrid, 0, 0, (0, 0, 0, 0), anchorLeft = 1)
- toplevel.add(maingrid, 0, 1, (0, 0, 0, 0), anchorLeft = 1)
- toplevel.add(bb, 0, 2, (0, 1, 0, 0), growx = 1, growy = 0)
-
- while 1:
- result = toplevel.run()
- rc = bb.buttonPressed(result)
-
- if rc == TEXT_BACK_CHECK:
- screen.popWindow()
- return INSTALL_BACK
-
- dev.unset('ipv6_autoconf')
- dev.unset('ipv6addr')
-
- if radio.getSelection() == 'auto':
- dev.set(('ipv6_autoconf', 'yes'))
- break
- elif radio.getSelection() == 'dhcp':
- dev.set(('ipv6addr', 'dhcp'))
- break
-
- ip = ipEntry.value()
- prefix = prefixEntry.value()
-
- # check for missing values
- if ip == '' or ip is None:
- handleIPMissing(screen, _('IPv6 address'))
- continue
-
- if prefix == '' or prefix is None:
- handleIPMissing(screen, _('IPv6 prefix'))
- continue
-
- # validate the IP address
- try:
- network.sanityCheckIPString(ip)
- except network.IPMissing, msg:
- handleIPMissing(screen, _('IPv6 address'))
- continue
- except network.IPError, msg:
- handleIPError(screen, _('IPv6 address'), msg)
- continue
-
- # validate the prefix
- try:
- if int(prefix) > 128 or int(prefix) < 0:
- handleInvalidPrefix(screen, socket.AF_INET6)
- continue
- except:
- handleValueErrorPrefix(screen, _('IPv6 prefix'))
- continue
-
- # set the manual IPv6 address/prefix
- if prefix is not '':
- addr = "%s/%s" % (ip, prefix,)
- else:
- addr = "%s" % (ip,)
-
- dev.set(('ipv6addr', addr))
-
- break
-
- screen.popWindow()
- return INSTALL_OK
-
- def chooseNetworkDevice(self, screen):
- devs = self.devices.keys()
- devs.sort(cmp=isys.compareNetDevices)
-
- # return if there are no NICs
- if len(devs) == 0:
- return INSTALL_OK
-
- # only ask Yes/No if this system has just one NIC (most end users)
- if len(devs) == 1:
- rc = self.intf.messageWindow(_("Configure Network Interface"),
- _("Would you like to configure the %s network "
- "interface in your system?") % (devs[0],),
- type = "yesno")
-
- if rc == 1:
- return self.devices[devs[0]]
- else:
- return INSTALL_OK
-
- # create list box of network devices
- devList = Listbox(height=5, scroll=1)
- for item in devs:
- try:
- if self.devListDescs[item] is None:
- self.devListDescs[item] = _("UNCONFIGURED")
- except KeyError, e:
- self.devListDescs[item] = _("UNCONFIGURED")
-
- desc = "%s: %s" % (item, self.devListDescs[item],)
- devList.append(desc, item)
-
- # create some sort of dialog box
- toplevel = GridFormHelp(screen, _("Network Configuration"),
- "netconfig", 1, 5)
- text = TextboxReflowed(65,
- _("The current configuration settings for each "
- "interface are listed next to the device "
- "name. Unconfigured interfaces are shown as "
- "UNCONFIGURED. To configure an interface, "
- "highlight it and choose Edit. When you are "
- "finished, press OK to continue."))
- toplevel.add(text, 0, 0, (0, 0, 0, 1))
-
- bb = ButtonBar(screen, (TEXT_EDIT_BUTTON,
- TEXT_OK_BUTTON, TEXT_BACK_BUTTON))
-
- toplevel.add(devList, 0, 1, padding = (0, 0, 0, 0))
- toplevel.add(bb, 0, 2, (0, 1, 0, 0), growx = 1, growy = 0)
-
- result = toplevel.run()
- while result != TEXT_F12_CHECK:
- rc = bb.buttonPressed (result)
-
- devname = devList.current()
-
- screen.popWindow()
- if rc == TEXT_BACK_CHECK:
- return INSTALL_BACK
- elif rc == TEXT_OK_CHECK:
- return INSTALL_OK
- elif rc == TEXT_EDIT_CHECK:
- return self.devices[devname]
- result = toplevel.run()
-
- screen.popWindow()
- return INSTALL_OK
-
- def makeDevDesc(self, dev):
- if bool(dev.get('onboot')):
- onboot = _("Active on boot")
- else:
- onboot = _("Inactive on boot")
-
- if dev.get('bootproto').lower() == 'dhcp':
- ipv4 = _("DHCP")
- else:
- ipv4 = dev.get('ipaddr')
-
- if bool(dev.get('ipv6_autoconf')):
- ipv6 = _("Auto IPv6")
- elif dev.get('ipv6addr').lower() == 'dhcp':
- ipv6 = _("DHCPv6")
- else:
- ipv6 = dev.get('ipv6addr')
-
- devname = dev.get('device').lower()
- if ipv4 != '' and ipv6 != '':
- desc = "%s, %s, %s" % (onboot, ipv4, ipv6,)
- elif ipv4 != '' and ipv6 == '':
- desc = "%s, %s" % (onboot, ipv4,)
- elif ipv4 == '' and ipv6 != '':
- desc = "%s, %s" % (onboot, ipv6,)
- else:
- desc = None
-
- return desc
-
- def __call__(self, screen, anaconda, showonboot=1):
- self.intf = anaconda.intf
- self.devListDescs = {}
- self.devices = anaconda.id.network.available()
-
- if not self.devices:
- return INSTALL_NOOP
-
- # initialize device descriptions before first run of list box
- for devname in self.devices.keys():
- self.devListDescs[devname] = self.makeDevDesc(self.devices[devname])
-
- # collect configuration data for each interface selected by the user
- doConf = True
- while doConf is True:
- if len(self.devices) == 1 and doConf is False:
- return INSTALL_OK
-
- dev = self.chooseNetworkDevice(screen)
-
- if dev == INSTALL_OK or dev == INSTALL_BACK:
- doConf = False
- return dev
-
- descr = dev.get('desc')
- hwaddr = dev.get('hwaddr')
- if descr is None or len(descr) == 0:
- descr = None
- if hwaddr is None or len(hwaddr) == 0:
- hwaddr = None
-
- self.topgrid = Grid(1, 2)
-
- if descr is not None:
- self.topgrid.setField(Label ("%s" % (descr[:70],)),
- 0, 0, padding = (0, 0, 0, 0),
- anchorLeft = 1, growx = 1)
- if hwaddr is not None:
- self.topgrid.setField(Label ("%s" %(hwaddr,)),
- 0, 1, padding = (0, 0, 0, 1),
- anchorLeft = 1, growx = 1)
-
- # 1st netconfig dialog: protocol and active on boot
- rc = self.runMainScreen(screen, dev, showonboot)
- if rc == INSTALL_BACK:
- continue
- else:
- doIPv4 = bool(dev.get('useIPv4'))
- doIPv6 = bool(dev.get('useIPv6'))
-
- # 2nd netconfig dialog: IPv4 settings
- if doIPv4:
- rc = self.runIPv4Screen(screen, dev)
- if rc == INSTALL_BACK:
- continue
-
- # 3rd netconfig dialog: IPv6 settings
- if doIPv6:
- rc = self.runIPv6Screen(screen, dev)
- if rc == INSTALL_BACK:
- continue
-
- self.devListDescs[devname] = self.makeDevDesc(dev)
-
- if len(self.devices) == 1 and doConf is True:
- doConf = False
-
- return INSTALL_OK
-
-
-class NetworkGlobalWindow:
- def __call__(self, screen, anaconda, showonboot = 1):
- devices = anaconda.id.network.available()
- if not devices:
- return INSTALL_NOOP
-
- # we don't let you set gateway/dns if you've got any interfaces
- # using dhcp (for better or worse)
- if network.anyUsingDHCP():
- return INSTALL_NOOP
-
- thegrid = Grid(2, 4)
-
- thegrid.setField(Label(_("Gateway:")), 0, 0, anchorLeft = 1)
- gwEntry = Entry(41)
- # if it's set already, use that... otherwise, make them enter it
- if anaconda.id.network.gateway:
- gwEntry.set(anaconda.id.network.gateway)
- else:
- gwEntry.set("")
- thegrid.setField(gwEntry, 1, 0, padding = (1, 0, 0, 0))
-
- thegrid.setField(Label(_("Primary DNS:")), 0, 1, anchorLeft = 1)
- ns1Entry = Entry(41)
- ns1Entry.set(anaconda.id.network.primaryNS)
- thegrid.setField(ns1Entry, 1, 1, padding = (1, 0, 0, 0))
-
- thegrid.setField(Label(_("Secondary DNS:")), 0, 2, anchorLeft = 1)
- ns2Entry = Entry(41)
- ns2Entry.set(anaconda.id.network.secondaryNS)
- thegrid.setField(ns2Entry, 1, 2, padding = (1, 0, 0, 0))
-
- bb = ButtonBar (screen, (TEXT_OK_BUTTON, TEXT_BACK_BUTTON))
-
- toplevel = GridFormHelp (screen, _("Miscellaneous Network Settings"),
- "miscnetwork", 1, 3)
- toplevel.add (thegrid, 0, 0, (0, 0, 0, 1), anchorLeft = 1)
- toplevel.add (bb, 0, 2, growx = 1)
-
- while 1:
- result = toplevel.run()
- rc = bb.buttonPressed (result)
-
- if rc == TEXT_BACK_CHECK:
- screen.popWindow()
- return INSTALL_BACK
-
- try:
- network.sanityCheckIPString(gwEntry.value())
- anaconda.id.network.gateway = gwEntry.value()
- except network.IPMissing, msg:
- handleMissingOptionalIP(screen, _("gateway"))
- pass
- except network.IPError, msg:
- handleIPError(screen, _("gateway"), msg)
- continue
-
- try:
- network.sanityCheckIPString(ns1Entry.value())
- anaconda.id.network.primaryNS = ns1Entry.value()
- except network.IPMissing, msg:
- handleMissingOptionalIP(screen, _("primary DNS"))
- pass
- except network.IPError, msg:
- handleIPError(screen, _("primary DNS"), msg)
- continue
-
- try:
- network.sanityCheckIPString(ns2Entry.value())
- anaconda.id.network.secondaryNS = ns2Entry.value()
- except network.IPMissing, msg:
- pass
- except network.IPError, msg:
- handleIPError(screen, _("secondary DNS"), msg)
- continue
-
- break
-
- screen.popWindow()
- return INSTALL_OK
-
class HostnameWindow:
def hostTypeCb(self, (radio, hostEntry)):
if radio.getSelection() != "manual":
@@ -755,12 +43,20 @@ class HostnameWindow:
sense = FLAGS_RESET
hostEntry.setFlags(FLAG_DISABLED, sense)
-
+
def __call__(self, screen, anaconda):
devices = anaconda.id.network.available ()
if not devices:
return INSTALL_NOOP
+ self.hostname = anaconda.id.network.hostname
+
+ if self.hostname is None or self.hostname == '':
+ self.hostname = socket.gethostname()
+
+ if self.hostname == '':
+ self.hostname = 'localhost.localdomain'
+
thegrid = Grid(2, 2)
radio = RadioGroup()
autoCb = radio.add(_("automatically via DHCP"), "dhcp", 0)
@@ -769,14 +65,13 @@ class HostnameWindow:
manualCb = radio.add(_("manually"), "manual", 1)
thegrid.setField(manualCb, 0, 1, anchorLeft = 1)
hostEntry = Entry(24)
- if anaconda.id.network.hostname != "localhost.localdomain":
- hostEntry.set(anaconda.id.network.hostname)
+ hostEntry.set(anaconda.id.network.hostname)
thegrid.setField(hostEntry, 1, 1, padding = (1, 0, 0, 0),
- anchorLeft = 1)
+ anchorLeft = 1)
# disable the dhcp if we don't have any dhcp
if network.anyUsingDHCP():
- autoCb.w.checkboxSetFlags(FLAG_DISABLED, FLAGS_RESET)
+ autoCb.w.checkboxSetFlags(FLAG_DISABLED, FLAGS_RESET)
else:
autoCb.w.checkboxSetFlags(FLAG_DISABLED, FLAGS_SET)
@@ -803,7 +98,7 @@ class HostnameWindow:
while 1:
result = toplevel.run()
rc = bb.buttonPressed(result)
-
+
if rc == TEXT_BACK_CHECK:
screen.popWindow()
return INSTALL_BACK