class AliasList(Gdtlist): "List of aliases" gdtlist_properties(Alias) def test(self): for alias in self: if not testHostname(alias): return False return True
class StaticRoutes(Gdtlist): "Contains Routes" gdtlist_properties(Route)
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()
class IPsecList_base(Gdtlist): gdtlist_properties(IPsec)
class ProfileList_base(Gdtlist): gdtlist_properties(Profile)
class HostsList_base(Gdtlist): "HostsList base class" gdtlist_properties(Host)
class HardwareList_base(Gdtlist): gdtlist_properties(Hardware)
class PPPOptions(Gdtlist): gdtlist_properties(PPPOption)
class ActiveIPsecs(Gdtlist): "List of active IPsec in the Profile" gdtlist_properties(Gdtstr)
class SearchList(Gdtlist): "Domain search list from /etc/resolv.conf" gdtlist_properties(Gdtstr)
class ActiveDevices(Gdtlist): "List of active Devices in the Profile" gdtlist_properties(Gdtstr)