Exemple #1
0
    def __init__ (self, toplevel=None):

        glade_file = "TokenRingHardwareDruid.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_adapterEntry_changed" : self.on_adapterEntry_changed,
            "on_hardware_page_prepare" : self.on_hardware_page_prepare,
            "on_hardware_page_next" : self.on_hardware_page_next,
            "on_hardware_page_back" : self.on_hardware_page_back
            })

        self.toplevel = toplevel
        self.hardwarelist = NCHardwareList.getHardwareList()
        self.hw = None
        self.has_tokenring = True
        self.druids = []

        druid = self.xml.get_widget('druid')
        for I in druid.get_children():
            druid.remove(I)
            self.druids.append(I)

        self.setup()
        self.hydrate()
Exemple #2
0
    def hydrate(self):
        dialup = self.device.Dialup
        ecombo = self.xml.get_widget("ethernetDeviceComboBox")

        hwdesc = []
        hwcurr = None
        hardwarelist = NCHardwareList.getHardwareList()
        for hw in hardwarelist:
            if hw.Type == "Ethernet":
                desc = str(hw.Name) + ' (' + hw.Description + ')'
                hwdesc.append(desc)
                if dialup and dialup.EthDevice and \
                   hw.Name == dialup.EthDevice:
                    hwcurr = desc

        if len(hwdesc):
            hwdesc.sort()
            ecombo.set_popdown_strings(hwdesc)

        if not hwcurr and len(hwdesc):
            hwcurr = hwdesc[0]

        widget = self.xml.get_widget("ethernetDeviceEntry")
        if dialup and dialup.EthDevice:
            widget.set_text(hwcurr)
    def getConf(self):
        PROGNAME = 'system-config-network'
        import netconfpkg
        from netconfpkg import NC_functions
        NC_functions.prepareRoot(CHROOT)

        from netconfpkg import \
             NCDeviceList, NCProfileList, \
             NCHardwareList, NCIPsecList

        from netconfpkg.NC_functions import log

        NC_functions.setVerboseLevel(0)
        NC_functions.setDebugLevel(0)
        log.set_loglevel(NC_functions.getVerboseLevel())

        devlists = [
            #            NCIPsecList.getIPsecList(),
            NCDeviceList.getDeviceList(),
            NCHardwareList.getHardwareList(),
            NCProfileList.getProfileList(),
        ]

        devstr = ""
        for devlist in devlists:
            devlist.load()
            devstr += str(devlist)
        return devstr
Exemple #4
0
    def __init__(self):
        glade_file = "hardwaretype.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, None, domain=PROGNAME)
        xml_signal_autoconnect(self.xml,
            {
            "on_okButton_clicked" : self.on_okButton_clicked,
            "on_cancelButton_clicked" : self.on_cancelButton_clicked,
            })

        self.dialog = self.xml.get_widget("Dialog")
        load_icon("network.xpm", self.dialog)
        self.Type = None
        machine = os.uname()[4]
        hardwarelist = NCHardwareList.getHardwareList()
        if machine == 's390' or machine == 's390x':
            devicetypes = [ ETHERNET, TOKENRING, QETH ]
        else:
            df = getHardwareFactory()
            devicetypes = df.keys()

        for hw in hardwarelist:
            if hw.Type == ISDN:
                devicetypes.remove(ISDN)
                break


        self.xml.get_widget(
            'hardwareTypeCombo').set_popdown_strings(devicetypes)
        self.hydrate()
 def on_cancel_interface(self, *args): # pylint: disable-msg=W0613
     hardwarelist = NCHardwareList.getHardwareList()
     hardwarelist.rollback() 
     devicelist = NCDeviceList.getDeviceList()
     devicelist.rollback()   
     self.toplevel.destroy()
     self.canceled = True
     gtk.main_quit()
 def __init__(self, toplevel=None, do_save=1, druid=None):
     InterfaceCreator.__init__(self, do_save=do_save)
     self.do_save = do_save
     self.toplevel = toplevel
     self.hardwarelist = NCHardwareList.getHardwareList()
     self.hw = None
     self.druids = []
     self.xml = None
Exemple #7
0
    def dehydrate(self):
        hardwarelist = NCHardwareList.getHardwareList()

        self.hw.Description = _('Generic Modem')

        modem_list = []
        if not self.hw.Name:
            for i in hardwarelist:
                if i.Type == "Modem":
                    modem_list.append(i.Name)
            if modem_list:
                for i in xrange(100):
                    if modem_list.count("Modem" + str(i)) == 0:
                        self.hw.Name = "Modem" + str(i)
                        break
            else:
                self.hw.Name = "Modem0"

        self.hw.Modem.DeviceName = self.xml.get_widget(\
            "modemDeviceEntry").get_text()
        self.hw.Modem.BaudRate = int(\
            self.xml.get_widget("baudrateEntry").get_text())

        flow = self.xml.get_widget("flowControlEntry").get_text()
        for i in modemFlowControls.keys():
            if modemFlowControls[i] == flow:
                self.hw.Modem.FlowControl = i
                break

        Item = self.xml.get_widget("volumeMenu").get_child().get_label()
        if Item == _("Off"):
            self.hw.Modem.ModemVolume = 0
        elif Item == _("Low"):
            self.hw.Modem.ModemVolume = 1
        elif Item == _("Medium"):
            self.hw.Modem.ModemVolume = 2
        elif Item == _("High"):
            self.hw.Modem.ModemVolume = 3
        elif Item == _("Very High"):
            self.hw.Modem.ModemVolume = 4
        else:
            self.hw.Modem.ModemVolume = 0

        if self.xml.get_widget("toneDialingCB").get_active():
            self.hw.Modem.DialCommand = "ATDT"
        else:
            self.hw.Modem.DialCommand = "ATDP"

        if len(self.hw.Modem.DeviceName)>5 and \
               self.hw.Modem.DeviceName[:5] != '/dev/':
            self.hw.Modem.DeviceName = '/dev/' + self.hw.Modem.DeviceName
Exemple #8
0
    def on_hw_config_page_prepare(self, druid_page,
                                  druid):  # pylint: disable-msg=W0613
        hardwarelist = NCHardwareList.getHardwareList()
        clist = self.xml.get_widget("hardwareList")
        clist.clear()
        self.devlist = []
        for hw in hardwarelist:
            if hw.Type == TOKENRING:
                desc = hw.Description + " (" + hw.Name + ")"
                clist.append([desc])
                self.devlist.append(hw.Name)

        clist.append([_("Other Tokenring Card")])
        clist.select_row(self.hw_sel, 0)
Exemple #9
0
    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)
Exemple #10
0
    def on_finish_page_prepare(self, druid_page,
                               druid):  # pylint: disable-msg=W0613
        hardwarelist = NCHardwareList.getHardwareList()
        for hw in hardwarelist:
            if hw.Type == self.connection_type:
                break

        dialup = self.device.Dialup
        # FIXME: Bad style for translation..
        s = str(
            _("You have selected the following information:") + "\n\n" +
            "    " + _("Ethernet device:") + "  " + dialup.EthDevice + "\n" +
            "    " + _("Provider name:") + "  " + dialup.ProviderName + "\n" +
            "    " + _("Login name:") + "  " + dialup.Login)
        druid_page.set_text(s)
Exemple #11
0
    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()
Exemple #12
0
 def hydrate(self):
     if self.hw.Name:
         self.xml.get_widget('ethernetDeviceEntry').set_text(self.hw.Name)
         if self.hw.Card.IoPort:
             self.xml.get_widget('ioEntry').set_text(self.hw.Card.IoPort)
         if self.hw.Card.IoPort1:
             self.xml.get_widget('io1Entry').set_text(self.hw.Card.IoPort1)
         if self.hw.Card.IoPort2:
             self.xml.get_widget('io2Entry').set_text(self.hw.Card.IoPort2)
         if self.hw.Card.Options:
             self.xml.get_widget('optionsEntry').set_text(
                 self.hw.Card.Options)
         if self.hw.MacAddress:
             self.xml.get_widget('macEntry').set_text(self.hw.MacAddress)
     else:
         hwlist = NCHardwareList.getHardwareList()
         nextDevice = NCHardwareList.getNextDev('eth')
         self.xml.get_widget('ethernetDeviceEntry').set_text(nextDevice)
    def on_finish_page_prepare(self, druid_page,
                               druid):  # pylint: disable-msg=W0613
        hardwarelist = NCHardwareList.getHardwareList()
        description = ""
        for hw in hardwarelist:
            if hw.Type == self.connection_type:
                description = hw.Description
                break
        dialup = self.device.createDialup()

        s = _("You have selected the following information:") + \
            "\n\n" + "    " + \
            _("Hardware:") + "  " + description + "\n" + "    " + \
            _("Provider name:") + "  " + dialup.ProviderName + \
            "\n" +  "    " + \
            _("Login name:") + "  " + dialup.Login + "\n" +  "    " + \
            _("Phone number:") + "  " + dialup.PhoneNumber

        druid_page.set_text(s)
    def on_finish_page_finish(self, druid_page,
                              druid):  # pylint: disable-msg=W0613
        self.device.Device = getNewDialupDevice(NCDeviceList.getDeviceList(),
                                                self.device)
        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.save()
        self.toplevel.destroy()
        gtk.main_quit()
    def hydrate(self):
        hardwarelist = NCHardwareList.getHardwareList()

        if self.hw.Modem.DeviceName != None:
            if not self.hw.Modem.DeviceName in modemDeviceList:
                modemDeviceList.insert(0, self.hw.Modem.DeviceName)
                self.xml.get_widget("modemDeviceEntryCombo"
                                    ).set_popdown_strings(modemDeviceList)
            self.xml.get_widget('modemDeviceEntry').set_text(
                self.hw.Modem.DeviceName)
        if self.hw.Modem.BaudRate != None:
            self.xml.get_widget('baudrateEntry').set_text(
                str(self.hw.Modem.BaudRate))
        if (self.hw.Modem.FlowControl != None
                and modemFlowControls.has_key(self.hw.Modem.FlowControl)):
            self.xml.get_widget('flowControlEntry').set_text(
                modemFlowControls[self.hw.Modem.FlowControl])
        else:
            self.xml.get_widget('flowControlEntry').set_text(
                modemFlowControls[CRTSCTS])
Exemple #16
0
    def on_finish_page_prepare(self, druid_page,
                               druid):  # pylint: disable-msg=W0613
        self.device.DeviceId = self.device.Device
        if self.device.Alias:
            self.device.DeviceId = self.device.DeviceId + ":" \
                                   + str(self.device.Alias)

        try:
            hwaddr = ethtool.get_hwaddr(self.device.Device)
        except IOError:
            pass
        else:
            self.device.HardwareAddress = hwaddr

        # FIXME: Bad style for translation
        s = str(
            _("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":
            s = s + str(
                _("Address:") + " " + self.device.IP + "\n" + "   " +
                _("Subnet mask:") + " " + self.device.Netmask + "\n" + "   " +
                _("Default gateway address:") + " " + self.device.Gateway +
                "\n")
        else:
            s = s + str(
                _("Automatically obtain IP address settings with:") + " " +
                self.device.BootProto + "\n")

        druid_page.set_text(s)
    def hydrate(self):
        DeviceConfigDialog.hydrate(self)
        sharedtcpip.dhcp_hydrate(self.sharedtcpip_xml, self.device)
        sharedtcpip.route_hydrate(self.sharedtcpip_xml, self.device)

        ecombo = self.xml.get_widget("tokenringDeviceComboBox")
        hwlist = NCHardwareList.getHardwareList()
        (hwcurr,
         hwdesc) = NC_functions.create_tokenring_combo(hwlist,
                                                       self.device.Device)

        if len(hwdesc):
            ecombo.set_popdown_strings(hwdesc)

        widget = self.xml.get_widget("tokenringDeviceEntry")
        if self.device.Device:
            widget.set_text(hwcurr)
        #widget.set_position(0)

        if self.device.Alias != None:
            self.xml.get_widget("aliasSupportCB").set_active(True)
            self.xml.get_widget("aliasSpinBox").set_value(self.device.Alias)
        else:
            self.xml.get_widget("aliasSupportCB").set_active(False)
class Device(Device_base):
    Type = ETHERNET
    SubType = None
    Priority = 0
    keyid = "DeviceId"

    __keydict = {
        'Device': 'DEVICE',
        'IP': 'IPADDR',
        'Netmask': 'NETMASK',
        'Gateway': 'GATEWAY',
        'Hostname': 'DHCP_HOSTNAME',
        'PrimaryDNS': 'DNS1',
        'SecondaryDNS': 'DNS2',
        'Domain': 'DOMAIN',
        'BootProto': 'BOOTPROTO',
        'Type': 'TYPE',
        'HardwareAddress': 'HWADDR',
    }
    # The following variables can be in form of for example IPADDRn where n is integer
    __keydictn = ["IPADDR", "NETMASK", "GATEWAY"]

    __intkeydict = {
        'Mtu': 'MTU',
        'Prefix': 'PREFIX',
    }
    __intkeydictn = ["PREFIX"]

    __boolkeydict = {
        'OnBoot': 'ONBOOT',
        'OnParent': 'ONPARENT',
        'NMControlled': 'NM_CONTROLLED',
        'AllowUser': '******',
        'AutoDNS': 'PEERDNS',
        'Slave': 'SLAVE',
        'IPv6Init': 'IPV6INIT',
    }

    def __init__(self):
        super(Device, self).__init__()
        self.oldname = None

    def getDialog(self):
        return None

    def getWizard(self):
        return None

    def isType(self, device):
        raise False

    def testDeviceId(self, value):
        if re.search(r"^[a-z|A-Z|0-9\_:]+$", value):
            return True
        return False

    def getDeviceAlias(self):
        devname = self.Device
        if self.Alias != None and self.Alias != "":
            devname = devname + ':' + str(self.Alias)
        return devname

    def getRealMtu(self):
        out = commands.getoutput('/sbin/ip link show %s 2>/dev/null' %
                                 self.Device)
        next = False
        val = 0
        try:
            for k in out.split():
                if next:
                    val = int(k)
                    break
                if k == "mtu":
                    next = True
        except ValueError:
            pass

        return val

    def load(self, name):

        conf = ConfDevice(name)

        self.oldname = name

        if not conf.has_key("DEVICE"):
            aliaspos = name.find(':')
            if aliaspos != -1:
                from netconfpkg.NCDeviceList import getDeviceList
                # ok, we have to inherit all other data from our master
                for dev in getDeviceList():
                    if dev.Device == name[:aliaspos]:
                        self.apply(dev)
                        break

            self.Device = name

        self.DeviceId = name
        for selfkey in self.__keydict.keys():
            confkey = self.__keydict[selfkey]
            if conf.has_key(confkey) and conf[confkey]:
                setattr(self, selfkey, conf[confkey])
            else:
                # if confkey is for example IPADDR, we should try also IPADDR0, IPADDR1 etc.
                if confkey in self.__keydictn:
                    for i in range(10):
                        confkeyn = confkey + str(i)
                        if conf.has_key(confkeyn) and len(conf[confkeyn]):
                            setattr(self, selfkey, conf[confkeyn])
                            break

        for selfkey in self.__intkeydict.keys():
            confkey = self.__intkeydict[selfkey]
            if conf.has_key(confkey) and len(conf[confkey]):
                setattr(self, selfkey, conf[confkey])
            else:
                if confkey in self.__intkeydictn:
                    for i in range(10):
                        confkeyn = confkey + str(i)
                        if conf.has_key(confkeyn) and len(conf[confkeyn]):
                            setattr(self, selfkey, conf[confkeyn])
                            break

        for selfkey in self.__boolkeydict.keys():
            confkey = self.__boolkeydict[selfkey]
            if conf.has_key(confkey):
                if conf[confkey] == 'yes':
                    setattr(self, selfkey, True)
                    #print >> sys.stderr, self.DeviceId, selfkey, "True"
                    #setattr(self, selfkey, True)
                else:
                    setattr(self, selfkey, False)
                    #print >> sys.stderr, self.DeviceId, selfkey, "False"
                    #setattr(self, selfkey, False)
            # we need to deal with options which have default value 'yes' like NM_CONTROLLED
            else:
                if confkey != "NM_CONTROLLED":
                    setattr(self, selfkey, False)
                #setattr(self, selfkey, False)

        # if PREFIX exists it takes preference over NETMASK
        if hasattr(self, 'Prefix') and len(self.Prefix):
            prefix = int(self.Prefix)
            if prefix >= 0 and prefix <= 32:
                netmask_str = socket.inet_ntoa(
                    struct.pack(">I", 0xFFFFFFFF & (0xFFFFFFFF <<
                                                    (32 - prefix))))
                self.Netmask = netmask_str

        if not conf.has_key("PEERDNS"):
            del self.AutoDNS

        if not self.Slave:
            del self.Slave

        if not self.Gateway:
            try:
                cfg = ConfShellVar.ConfShellVar(getRoot() + SYSCONFNETWORK)
                if (cfg.has_key('GATEWAY')
                        and ((not cfg.has_key('GATEWAYDEV'))
                             or cfg['GATEWAYDEV'] == self.Device)):
                    gw = cfg['GATEWAY']

                    if gw and self.Netmask:
                        try:
                            network = commands.getoutput('ipcalc --network ' +
                                                         str(self.IP) + ' ' +
                                                         str(self.Netmask) +
                                                         ' 2>/dev/null')

                            out = commands.getoutput('ipcalc --network ' +
                                                     str(gw) + ' ' +
                                                     str(self.Netmask) +
                                                     ' 2>/dev/null')
                            if out == network:
                                self.Gateway = str(gw)
                        except:
                            pass

            except EnvironmentError, msg:
                NC_functions.generic_error_dialog(str(msg))

        try:
            aliaspos = self.Device.find(':')
            if aliaspos != -1:
                self.Alias = int(self.Device[aliaspos + 1:])
                self.Device = self.Device[:aliaspos]
        except TypeError:
            NC_functions.generic_error_dialog(
                _("%s, "
                  "Device not specified "
                  "or alias not a number!") % self.DeviceId)
            #raise TypeError, _("Device not specified or alias not a number!")
        except ValueError:
            NC_functions.generic_error_dialog(
                _("%s, "
                  "Device not specified "
                  "or alias not a number!") % self.DeviceId)

        if not self.Alias:
            del self.OnParent

        if self.BootProto == None:
            if self.IP:
                self.BootProto = "none"
            else:
                self.BootProto = 'dhcp'

        if not self.Type or self.Type == "" or self.Type == _("Unknown"):
            from netconfpkg import NCHardwareList
            hwlist = NCHardwareList.getHardwareList()
            for hw in hwlist:
                if hw.Name == self.Device:
                    self.Type = hw.Type
                    break
            else:
                self.Type = NC_functions.getDeviceType(self.Device)

        if conf.has_key("RESOLV_MODS"):
            if conf["RESOLV_MODS"] != "no":
                self.AutoDNS = True
            else:
                self.AutoDNS = False

        # move old <id>.route files to route-<id>
        mfile = str(getRoot() + SYSCONFDEVICEDIR + self.DeviceId + '.route')
        if os.path.isfile(mfile):
            NC_functions.rename(
                mfile,
                getRoot() + SYSCONFDEVICEDIR + 'route-' + self.DeviceId)
        # load routes
        rconf = ConfRoute(name)

        for key in rconf.keys():
            if key.startswith("ADDRESS"):
                try:
                    p = int(key[7:])
                except:
                    continue
                route = Route()

                self.createStaticRoutes()
                self.StaticRoutes.append(route)

                route.Address = rconf['ADDRESS' + str(p)]
                if rconf.has_key("NETMASK" + str(p)):
                    route.Netmask = rconf['NETMASK' + str(p)]
                if rconf.has_key("GATEWAY" + str(p)):
                    route.Gateway = rconf['GATEWAY' + str(p)]

        self.commit()
        self.setunmodified()
    def save(self, parentConf, deviceid, olddeviceid):
        "Save the Configuration to parentConf"
        Dialup.save(self, parentConf, deviceid, olddeviceid)
        if self.Inherits:
            devname = self.Inherits
            parentConf['MODEMNAME'] = devname
            name = deviceid
        else:
            devname = '*'
            name = "Default"

        # set WVDIALSECT in ifcfg-ppp[0-9] to DeviceId
        parentConf['WVDIALSECT'] = name
        sectname = 'Dialer ' + name
        self.write_wvdial(devname, sectname)

        # Correct PAPNAME in ifcfg-ppp[0-9]
        if self.Login:
            parentConf['PAPNAME'] = self.Login
        
        if self.PPPOptions:
            opt = ""
            for val in self.PPPOptions:
                if opt != "": 
                    opt = opt + ' '
                opt = opt + val
            parentConf['PPPOPTIONS'] = opt
        else:
            # CHECK - deleting PPP option #128058
            parentConf['PPPOPTIONS'] = None


        if self.Persist:
            parentConf['PERSIST'] = 'yes'
        else:
            parentConf['PERSIST'] = 'no'

        if self.DefRoute:
            parentConf['DEFROUTE'] = 'yes'
        else:
            parentConf['DEFROUTE'] = 'no'

        if self.ProviderName:
            parentConf['PROVIDER'] = self.ProviderName

        if self.HangupTimeout:
            parentConf['IDLETIMEOUT'] = str(self.HangupTimeout)

        if self.Inherits:
            hwlist = NCHardwareList.getHardwareList()
            for hw in hwlist:
                if hw.Name == self.Inherits:
                    if hw.Modem:
                        parentConf['MODEMPORT'] = str(hw.Modem.DeviceName)
                        parentConf['LINESPEED'] = str(hw.Modem.BaudRate)
                        break

        if not parentConf.has_key('PEERDNS'):
            parentConf['PEERDNS'] = "no"

        if self.Compression:
            self.Compression.save(parentConf)

        self.write_peers(deviceid, olddeviceid, name)
    def load(self):
        from netconfpkg.NCDevice import ConfDevice
        updateNetworkScripts()

        self.__delslice__(0, len(self))

        df = getDeviceFactory()
        devdir = getRoot() + SYSCONFDEVICEDIR
        devices = []

        log.log(5, "Checking %s" % devdir)
        if os.path.isdir(devdir):
            devices = ConfDevices()

        if not devices:
            log.log(5, "Checking %s" % devdir)
            devdir = getRoot() + OLDSYSCONFDEVICEDIR
            devices = ConfDevices(devdir)

        for dev in devices:
            log.log(5, "Checking %s" % dev)
            if dev == 'lo':
                continue
            conf = ConfDevice(dev, devdir)
            mtype = None
            device = None
            # take a peek in the config file
            if conf.has_key("TYPE"):
                mtype = conf["TYPE"]
            if conf.has_key("DEVICE"):
                device = conf["DEVICE"]
            if conf.has_key("NETTYPE"):
                if conf["NETTYPE"] == "qeth":
                    mtype = QETH
                if conf["NETTYPE"] == "lcs":
                    mtype = LCS

            del conf

            if mtype == "IPSEC":
                continue

            if not mtype or mtype == "" or mtype == _("Unknown"):
                from netconfpkg import NCHardwareList
                hwlist = NCHardwareList.getHardwareList()
                for hw in hwlist:
                    if hw.Name == device:
                        mtype = hw.Type
                        break
                else:
                    mtype = getDeviceType(device)

            devclass = df.getDeviceClass(mtype)
            if devclass:
                newdev = devclass()
                newdev.load(dev)
                self.append(newdev)

#                try:
#                    newdev.load(dev)
#                except BaseException, e:
#                    # FIXME: better exception handling
#                    generic_error_dialog (_("Error loading file %s\n%s")
#                                           % (devdir +
#                                               "/ifcfg-" + dev, str(e)),
#                                          dialog_type="error")
#                else:
#                    self.append(newdev)

            else:
                log.log(1, "NO DEVICE CLASS FOUND FOR %s" % dev)
                d = Device()
                self.append(d)
                d.load(dev)

        self.commit()
        self.setunmodified()

        chdev = {}
        # the initscripts do not like '-'
        for dev in self:
            newDeviceId = re.sub('-', '_', dev.DeviceId)
            if newDeviceId != dev.DeviceId:
                chdev[dev.DeviceId] = newDeviceId
                #log.log(4, "%s != %s" % (newDeviceId, dev.DeviceId))
                # Fixed change device names in active list of all profiles
                import netconfpkg.NCProfileList
                profilelist = netconfpkg.NCProfileList.getProfileList()

                for prof in profilelist:
                    #log.log(4, str(prof.ActiveDevices))
                    if dev.DeviceId in prof.ActiveDevices:
                        pos = prof.ActiveDevices.index(dev.DeviceId)
                        prof.ActiveDevices[pos] = newDeviceId
                        #log.log(4, "changed %s" % (prof.ActiveDevices[pos]))
                        #log.log(4, str(prof.ActiveDevices))
                        prof.commit()

                dev.DeviceId = newDeviceId
                dev.commit()
                dev.setunmodified()

        if len(chdev.keys()):
            s = _("Changed the following Nicknames due to the initscripts:\n")
            for n, d in chdev.items():
                s += "%s -> %s\n" % (n, d)
            generic_longinfo_dialog(_("Nicknames changed"), s)
    def __init__(self, device):
        self.device = device
        glade_file = "DeviceTypeDialog.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, None, domain=PROGNAME)
        xml_signal_autoconnect(
            self.xml, {
                "on_okButton_clicked": self.on_okButton_clicked,
                "on_cancelButton_clicked": self.on_cancelButton_clicked,
            })

        self.dialog = self.xml.get_widget("Dialog")
        load_icon("network.xpm", self.dialog)

        devicetypes = deviceTypes[:]
        devicetypes.remove(LO)

        hardwarelist = NCHardwareList.getHardwareList()
        machine = os.uname()[4]
        ethernetFound = False
        modemFound = False
        isdnFound = False
        tokenringFound = False
        adslFound = False
        wirelessFound = False
        for hw in hardwarelist:
            if hw.Type == MODEM:
                modemFound = True
            elif hw.Type == ISDN:
                isdnFound = True
            elif hw.Type == ETHERNET:
                ethernetFound = True
                adslFound = True
                wirelessFound = True
            elif hw.Type == TOKENRING:
                tokenringFound = True
        if machine == 's390' or machine == 's390x':
            modemFound = False
            isdnFound = False
            adslFound = False
            wirelessFound = False
        if not modemFound:
            devicetypes.remove(MODEM)
        if not isdnFound:
            devicetypes.remove(ISDN)
        if not ethernetFound:
            devicetypes.remove(ETHERNET)
        if not adslFound:
            devicetypes.remove(DSL)
        if not tokenringFound:
            devicetypes.remove(TOKENRING)
        if not wirelessFound:
            devicetypes.remove(WIRELESS)

        omenu = self.xml.get_widget('deviceTypeOption')
        omenu.remove_menu()
        menu = gtk.Menu()
        for device_name in devicetypes:
            menu_item = gtk.MenuItem(device_name)
            menu_item.set_data("device", device_name)
            menu_item.show()
            menu.append(menu_item)
        menu.show()
        omenu.set_menu(menu)
        omenu.grab_focus()
        self.hydrate()
Exemple #22
0
        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

        # FIXME: Bad style for translation
        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 + str(
                _("Address:") + " " +
                (self.device.IP or '') + "\n" + _("Subnet mask:") + " " +
                (self.device.Netmask or '') + "\n" +
                _("Default gateway address:") + " " +
                (self.device.Gateway or '') + "\n")
 def saveHardware(self):
     from netconfpkg import NCHardwareList
     hardwarelist = NCHardwareList.getHardwareList()
     hardwarelist.save()
     hardwarelist.setunmodified()