예제 #1
0
    def save(self):
        Device.save(self)
        conf = ConfDevice(self.DeviceId)
        conf["TYPE"] = "Ethernet"
        if not self.Alias:
            conf["NETTYPE"] = "lcs"
            ports = ""
            hardwarelist = getHardwareList()
            for hw in hardwarelist:
                if hw.Name == self.Device:
                    if hw.MacAddress:
                        conf["MACADDR"] = hw.MacAddress
                    else:
                        del conf["MACADDR"]

                    if (hw.Card.IoPort and hw.Card.IoPort1
                            and hw.Card.IoPort2):
                        ports = "%s,%s,%s" % (hw.Card.IoPort, hw.Card.IoPort1,
                                              hw.Card.IoPort2)
                    break
            if ports:
                conf["SUBCHANNELS"] = ports
            if hw.Card.Options:
                conf["OPTIONS"] = hw.Card.Options
            else:
                if conf.has_key("OPTIONS"):
                    del conf["OPTIONS"]

        conf.write()
예제 #2
0
 def load(self, name):  # pylint: disable-msg=W0613
     """
     load(devicename)
     load a modem definition
     """
     conf = ConfDevice(name)
     Device.load(self, name)
     self.Dialup.load(conf, self)
예제 #3
0
 def save(self):
     super(DevWireless, self).save()
     conf = ConfDevice(self.DeviceId)
     conf.fsf()
     self.Wireless.save(conf, self.DeviceId)
     conf.write()
     del conf
예제 #4
0
    def load(self, name):
        Device.load(self, name)
        conf = ConfDevice(name)
        self.Type = LCS
        if conf.has_key("SUBCHANNELS"):
            hardwarelist = getHardwareList()
            hw = None
            for hw in hardwarelist:
                if hw.Name == self.Device and hw.Type == LCS:
                    break
            else:
                i = hardwarelist.addHardware(LCS)
                hw = hardwarelist[i]
                hw.Status = HW_CONF
                hw.Name = self.Device
                hw.Type = LCS

            hw.Description = "lcs %s" % conf["SUBCHANNELS"]
            hw.createCard()
            hw.Card.ModuleName = "lcs"
            try:
                hw.MacAddress = conf["MACADDR"]
            except:
                pass

            try:
                ports = conf["SUBCHANNELS"].split(",")
                hw.Card.IoPort = ports[0]
                hw.Card.IoPort1 = ports[1]
                hw.Card.IoPort2 = ports[2]
                hw.Card.Options = conf["OPTIONS"]
            except:
                pass

            hw.commit(changed=False)
            hardwarelist.commit(changed=False)
예제 #5
0
    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)
예제 #6
0
class DeviceList(Gdtlist):
    gdtlist_properties(Device)

    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 addDeviceType(self, mtype):
        df = getDeviceFactory()
        devclass = df.getDeviceClass(mtype)
        if devclass:
            newdev = devclass()
            self.append(newdev)


#        else: # FIXME: !!
#            generic_error_dialog()
        return newdev

    def test(self):
        pass

    def __repr__(self):
        return repr(self.__dict__)

    def tostr(self, prefix_string=None):
        "returns a string in gdt representation"
        #print "tostr %s " % prefix_string
        if prefix_string == None:
            prefix_string = self.__class__.__name__
        mstr = ""
        for value in self:
            if isinstance(value, Device):
                mstr += value.tostr(
                    "%s.%s.%s" % (prefix_string, value.Type, value.DeviceId))
        return mstr

    def fromstr(self, vals, value):
        if len(vals) <= 1:
            return
        if vals[0] == "DeviceList":
            del vals[0]
        else:
            return
        for dev in self:
            if dev.DeviceId == vals[1]:
                if dev.Type != vals[0]:
                    self.pop(dev)
                    log.log(1, "Deleting device %s" % vals[1])
                    break
                dev.fromstr(vals[2:], value)  # pylint: disable-msg=W0212
                return

        dev = self.addDeviceType(vals[0])
        dev.DeviceId = vals[1]
        dev.fromstr(vals[2:], value)

    def save(self):
        # FIXME: [163040] "Exception Occurred" when saving
        # fail gracefully, with informing, which file, and why

        from netconfpkg.NCDevice import ConfDevice
        from types import DictType

        self.commit()

        nwconf = ConfShellVar.ConfShellVar(getRoot() + SYSCONFNETWORK)
        if len(self) > 0:
            nwconf["NETWORKING"] = "yes"
        nwconf.write()

        #
        # clear all Dialer sections in wvdial.conf
        # before the new Dialer sections written
        #
        wvdialconf = ConfSMB.ConfSMB(filename=getRoot() + WVDIALCONF)
        for wvdialkey in wvdialconf.vars.keys():
            if wvdialkey[:6] == 'Dialer':
                del wvdialconf[wvdialkey]
        wvdialconf.write()

        #
        # Clear all pap and chap-secrets generated by netconf
        #
        papconf = getPAPConf()
        chapconf = getCHAPConf()
        for key in papconf.keys():
            if isinstance(papconf[key], DictType):
                for server in papconf[key].keys():
                    papconf.delallitem([key, server])
            del papconf[key]
        for key in chapconf.keys():
            if isinstance(chapconf[key], DictType):
                for server in chapconf[key].keys():
                    chapconf.delallitem([key, server])
            del chapconf[key]

        #
        # traverse all devices in the list
        #
        for dev in self:
            #
            # really save the device
            #
            #if dev.changed:
            dev.save()

        papconf.write()
        chapconf.write()

        dirname = getRoot() + SYSCONFDEVICEDIR
        #
        # Remove old config files
        #
        try:
            mdir = os.listdir(dirname)
        except OSError, msg:
            raise IOError, 'Cannot save in ' \
                  + dirname + ': ' + str(msg)

        for entry in mdir:
            if not testFilename(dirname + entry):
                log.log(5, "not testFilename(%s)" % (dirname + entry))
                continue

            if (len(entry) <= 6) or \
                   entry[:6] != 'ifcfg-':
                log.log(5, "not ifcfg %s" % (entry))
                continue

            devid = entry[6:]
            for dev in self:
                if dev.DeviceId == devid:
                    break
            else:
                # check for IPSEC
                conf = ConfDevice(devid, mdir=dirname)
                mtype = IPSEC
                if conf.has_key("TYPE"):
                    mtype = conf["TYPE"]

                if mtype == IPSEC:
                    log.log(5, "IPSEC %s" % (entry))
                    continue

                # now remove the file
                unlink(dirname + entry)
                unlink(getRoot() + OLDSYSCONFDEVICEDIR + \
                       '/ifcfg-' + devid)

        # remove old route files
        for entry in mdir:
            if not testFilename(dirname + entry):
                continue

            if (len(entry) <= 6) or \
                   entry[:6] != '.route':
                continue

            devid = entry[6:]

            for dev in self:
                if dev.DeviceId == devid:
                    break
            else:
                # remove route file, if no routes defined
                unlink(dirname + entry)
                unlink(getRoot() + OLDSYSCONFDEVICEDIR + \
                       devid + '.route')

        # bug #78043
        # we should have device specific gateways
        # fixed this way, until we have a way to mark the
        # default GATEWAY/GATEWAYDEV
        cfg = ConfShellVar.ConfShellVar(getRoot() + SYSCONFNETWORK)
        if cfg.has_key('GATEWAY'):
            del cfg['GATEWAY']
        # bug #602688: don't remove GATEWAYDEV
        #if cfg.has_key('GATEWAYDEV'):
        #    del cfg['GATEWAYDEV']
        cfg.write()

        self.commit()
        self.setunmodified()
예제 #7
0
            if not testFilename(dirname + entry):
                continue

            if (len(entry) <= 5) or \
               entry[:5] != 'keys-':
                continue

            ipsecid = entry[5:]

            for ipsec in self:
                if ipsec.IPsecId == ipsecid:
                    break
            else:
                # check for IPSEC
                from netconfpkg.NCDevice import ConfDevice
                conf = ConfDevice(ipsecid)
                mtype = None
                if conf.has_key("TYPE"):
                    mtype = conf["TYPE"]
                if mtype:
                    continue

                unlink(dirname + entry)
                unlink(getRoot() + OLDSYSCONFDEVICEDIR + '/keys-' + ipsecid)

        self.commit()
        self.setunmodified()

    def __repr__(self):
        return repr(self.__dict__)
예제 #8
0
 def save(self):
     super(DevModem, self).save()
     conf = ConfDevice(self.DeviceId)
     self.Dialup.save(conf, self.DeviceId, self.oldname)
     conf.write()
예제 #9
0
 def load(self, name):
     super(DevADSL, self).load(name)
     conf = ConfDevice(name)
     self.Dialup.load(conf, self)
예제 #10
0
 def load(self, name):
     super(DevWireless, self).load(name)
     conf = ConfDevice(name)
     self.Wireless.load(conf, self.DeviceId)
     del conf