Example #1
0
    def setState(self):
        """
        Build the list of devices
        """
        self.li = snack.Listbox(5, returnExit=1)
        l = 0
        le = self.mscreen.width - 6
        if le <= 0:
            le = 5
        for dev in getDeviceList():
            if not hasattr(dev, "getDialog") or not dev.getDialog():
                #li.append("No dialog for %s" % dev.Device, None)
                continue

            l += 1
            for hw in getHardwareList():
                if hw.Name == dev.Device and hw.Description:
                    self.li.append(
                        ("%s (%s) - %s" %
                         (dev.DeviceId, dev.Device, hw.Description))[:le], dev)
                    break

            else:
                self.li.append(("%s (%s) - %s" %
                                (dev.DeviceId, dev.Device, dev.Type))[:le],
                               dev)

        if not l:
            return None

        self.li.append(_("<New Device>"), None)
    def on_configureButton_clicked(self, button):  # pylint: disable-msg=W0613
        device = self.clist_get_nickname()
        if not device:
            return

        for dev in getDeviceList():
            if dev.DeviceId == device:
                break
        else:
            return

        # pylint: disable-msg=W0631

        (ret, msg) = dev.configure()

        if not self.dialog:
            return False

        if ret:
            errorString = _('Cannot configure network device %s')\
                          % (device)
            generic_longinfo_dialog(errorString, msg, self.dialog)

        # update dialog #83640
        # Re-read the device list
        self.devicelist = self.getProfDeviceList(refresh=True)
        self.activedevicelist = NetworkDevice().get()
        # Update the gui
        self.hydrateProfiles(refresh=True)
        self.hydrate()
        self.oldprofile = None  # forces a re-read of oldprofile
        self.update_dialog()
    def dehydrate(self):
        DialupInterfaceDialog.dehydrate(self)

        if not self.device.Device:
            self.device.Device = getNewDialupDevice(getDeviceList(),
                                                    self.device)

        dialup = self.device.Dialup

        dialup.HangupTimeout = self.xml.get_widget(
            "hangupTimeoutSB").get_value_as_int()

        for attr, widget in {
                'InitString': 'modemInitEntry',
                'Inherits': 'modemPortEntry',
                'DialMode': 'dialModeEntry',
        }.items():
            val = self.xml.get_widget(widget).get_text().strip()
            if val:
                setattr(dialup, attr, val)
            else:
                delattr(dialup, attr)

        for attr, widget in {
                'Persist': 'persistCB',
                'DefRoute': 'defrouteCB',
                'StupidMode': 'stupidModeCB',
        }.items():
            val = self.xml.get_widget(widget).get_active()
            setattr(dialup, attr, val)

        if dialup.DialMode == DialModes[DM_AUTO]:
            dialup.DialMode = DM_AUTO
        else:
            dialup.DialMode = DM_MANUAL
Example #4
0
    def runIt(self, mscreen):
        """
        Show and run the screen, save files if necesarry
        """
        self.mscreen = mscreen
        devlist = getDeviceList()
        self.setState()
        while True:
            if devlist.modified():
                self.setState()
            dev = self.selectDevice(mscreen)
            if dev == -1:
                # we want to save
                return True
            elif dev == -2:
                continue
            elif dev == None:
                return False

            dialog = dev.getDialog()
            if dialog.runIt(mscreen):
                dev.commit()
                devlist.commit()
                self.plist.activateDevice(
                    dev.DeviceId,
                    self.plist.getActiveProfile().ProfileName,
                    state=True)
                self.plist.commit()
            else:
                dev.rollback()
                devlist.rollback()
    def on_deactivateButton_clicked(self, button):  # pylint: disable-msg=W0613
        device = self.clist_get_nickname()
        for dev in getDeviceList():
            if dev.DeviceId == device:
                break
        else:
            return

        # pylint: disable-msg=W0631
        if dev and device:
            dev.deactivate()
            self.update_dialog()
 def getProfDeviceList(self, refresh=None):
     profilelist = getProfileList(refresh)
     prof = profilelist.getActiveProfile()
     devlist = getDeviceList(refresh)
     activedevlist = []
     for devid in prof.ActiveDevices:
         for dev in devlist:
             if dev.DeviceId != devid:
                 continue
             break
         else:
             continue
         activedevlist.append(dev)  # pylint: disable-msg=W0631
     return activedevlist
Example #7
0
 def getNextAlias(self, device):
     devicelist = getDeviceList()
     alias = None
     for dev in devicelist:
         if not dev.Device == device.Device:
             continue
         if dev.Alias:
             if alias == None:
                 alias = dev.Alias + 1
             elif alias <= dev.Alias:
                 alias = dev.Alias + 1
         elif alias == None:
             alias = 1
     return alias
    def on_activateButton_clicked(self, button):  # pylint: disable-msg=W0613
        device = self.clist_get_device()
        nickname = self.clist_get_nickname()

        for dev in getDeviceList():
            if dev.DeviceId == nickname:
                break
        else:
            return

        gobject.source_remove(self.tag)

        if device:
            dev.activate()  # pylint: disable-msg=W0631
            self.update_dialog()

        self.tag = gobject.timeout_add(4000, self.update_dialog)
    def on_generic_clist_select_row(
            self,
            clist,
            row,
            column,
            event,  # pylint: disable-msg=W0613
            activate_button=None,
            deactivate_button=None,
            configure_button=None,
            monitor_button=None):
        if len(clist.selection) == 0:
            return

        status = self.clist_get_status()
        devname = self.clist_get_nickname()
        dev = None
        for dev in getDeviceList():
            if dev.DeviceId == devname:
                break
        else:
            dev = None

        # pylint: disable-msg=W0631

        if dev and (dev.AllowUser or self.isRoot):
            self.xml.get_widget('activateButton').set_sensitive(True)
            self.xml.get_widget('deactivateButton').set_sensitive(True)
        else:
            self.xml.get_widget('activateButton').set_sensitive(False)
            self.xml.get_widget('deactivateButton').set_sensitive(False)

        if status == ACTIVE:
            #self.xml.get_widget('activateButton').set_sensitive(False)
            #self.xml.get_widget('deactivateButton').set_sensitive(True)
            #self.xml.get_widget('configureButton').set_sensitive(False)
            self.xml.get_widget('monitorButton').set_sensitive(True)
        else:
            #self.xml.get_widget('activateButton').set_sensitive(True)
            #self.xml.get_widget('deactivateButton').set_sensitive(False)
            #self.xml.get_widget('configureButton').set_sensitive(True)
            self.xml.get_widget('monitorButton').set_sensitive(False)
Example #10
0
    def newDevice(self, mscreen):
        """
        Displays the main screen
        @screen The snack screen instance
        """
        t = snack.TextboxReflowed(25,
                                  _("Which device type do you want to add?"))
        bb = snack.ButtonBar(mscreen,
                             ((_("Add"), "add"), (_("Cancel"), "cancel")))
        li = snack.Listbox(5, width=25, returnExit=1)
        li.append(_("Ethernet"), ETHERNET)

        machine = os.uname()[4]
        if machine == 's390' or machine == 's390x':
            li.append(_("QETH"), QETH)
        else:
            li.append(_("Modem"), MODEM)
            li.append(_("ISDN"), ISDN)

        g = snack.GridForm(mscreen, _("Network Configuration"), 1, 3)
        g.add(t, 0, 0)
        g.add(li, 0, 1)
        g.add(bb, 0, 2)
        res = g.run()
        mscreen.popWindow()
        if bb.buttonPressed(res) != 'cancel':
            todo = li.current()
            df = getDeviceFactory()
            dev = None
            devclass = df.getDeviceClass(todo)
            devlist = getDeviceList()
            if not devclass:
                return -1
            dev = devclass()
            if dev:
                devlist.append(dev)
                return dev
        return -2
Example #11
0
    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))
Example #12
0
    def init_gui(self):
        # pylint: disable-msg=W0201
        if self.xml:
            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 = 'QethInterfaceDruid.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_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
              }
            )

        #print "EthernetInterface getDeviceList"
        self.devicelist = getDeviceList()
        df = getDeviceFactory()
        devclass = df.getDeviceClass(self.connection_type)
        if devclass:
            self.device = devclass()
        else:
            self.device = NCPluginDevQeth.DevQeth()

        self.device.Type = self.connection_type
        self.device.OnBoot = True
        self.device.AllowUser = False
        self.device.IPv6Init = False
        self.profilelist = NCProfileList.getProfileList()

        self.hw_sel = 0
        self.hwPage = False

        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.druids = []
        self.druid = self.xml.get_widget('druid')
        for i in self.druid.get_children():
            self.druid.remove(i)
            self.druids.append(i)

        if self.connection_type == QETH:
            self.hwDruid = QethHardware(self.toplevel)
            self.hwDruid.has_ethernet = None
            self.druids = [self.druids[0]] + self.hwDruid.druids[:]\
                          + self.druids[1:]
Example #13
0
 def saveDevices(self):
     if not self.do_save:
         return
     devicelist = getDeviceList()
     devicelist.save()
Example #14
0
def main(mcmdline):
    from netconfpkg.NCDeviceList import getDeviceList
    from netconfpkg.NCHardwareList import getHardwareList               
    from netconfpkg.NCIPsecList import getIPsecList
    from netconfpkg.NCProfileList import getProfileList
    from netconfpkg.NC_functions import log

    signal.signal (signal.SIGINT, signal.SIG_DFL)
    class BadUsage(Exception):
        pass

    #progname = os.path.basename(sys.argv[0])
    NC_functions.setVerboseLevel(2)
    NC_functions.setDebugLevel(0)

    do_activate = 0
    switch_profile = 0
    profile = None
    test = 0
    EXPORT = 1
    IMPORT = 2
    SWITCH = 3
    mode = EXPORT
    filename = None
    clear = 0
    chroot = None
    debug = None
    devlists = []

    try:
        opts = getopt.getopt(mcmdline, "asp:?r:dhvtief:co",
                                   [
                                    "activate",
                                    "profile=",
                                    "help",
                                    "devicelist",
                                    "verbose",
                                    "test",
                                    "import",
                                    "export",
                                    "clear",
                                    "root=",
                                    "file=",
                                    "debug",
                                    "hardwarelist",
                                    "ipseclist",
                                    "profilelist"])[0]
        for opt, val in opts:
            if opt == '-r' or opt == '--root':                
                chroot = val
                NC_functions.prepareRoot(chroot)
                NC_functions.updateNetworkScripts()
                continue
    except (getopt.error, BadUsage):
        pass

    try:
        opts = getopt.getopt(mcmdline, "asp:?r:dhvtief:co",
                                   [
                                    "activate",
                                    "profile=",
                                    "help",
                                    "devicelist",
                                    "verbose",
                                    "test",
                                    "import",
                                    "export",
                                    "clear",
                                    "root=",
                                    "file=",
                                    "debug",
                                    "hardwarelist",
                                    "ipseclist",
                                    "profilelist"])[0]
        for opt, val in opts:
            if opt == '-d' or opt == '--devicelist':
                devlists.append(getDeviceList())
                continue

            if opt == '-h' or opt == '--hardwarelist':
                devlists.append(getHardwareList())
                continue

            if opt == '-s' or opt == '--ipseclist':
                devlists.append(getIPsecList())
                continue

            if opt == '-o' or opt == '--profilelist':
                devlists.append(getProfileList())
                continue

            if opt == '-p' or opt == '--profile':
                mode = SWITCH
                switch_profile = 1
                profile = val
                continue

            if opt == '-f' or opt == '--file':
                filename = val
                continue

            if opt == '-r' or opt == '--root':
                # already parsed
                continue

            if opt == '-c' or opt == '--clear':
                clear = 1
                continue

            if opt == '-t' or opt == '--test':
                test = 1
                continue

            if opt == '-a' or opt == '--activate':
                mode = SWITCH
                do_activate = 1
                continue

            if opt == '-i' or opt == '--import':
                mode = IMPORT
                continue

            if opt == '-e' or opt == '--export':
                mode = EXPORT
                continue

            if opt == '-?' or opt == '--help':
                Usage()
                return(0)

            if opt == '-v' or opt == '--verbose':
                NC_functions.setVerboseLevel(NC_functions.getVerboseLevel()+1)
                continue

            if opt == '--debug':
                NC_functions.setDebugLevel(NC_functions.getDebugLevel()+1)
                debug = 1
                continue

            sys.stderr.write(_("Unknown option %s\n" % opt))
            raise BadUsage

    except (getopt.error, BadUsage):
        Usage()
        return(1)

    try:

        if not NC_functions.getDebugLevel():
            log.handler = log.syslog_handler
            log.open()
        else:
            log.handler = log.file_handler
            log.open(sys.stderr)

        if not len(devlists):
            devlists = [getDeviceList(), getHardwareList(),
                        getIPsecList(),
                        getProfileList()]

        if clear:
            for devlist in devlists:
                del devlist[0:len(devlist)]

        if mode == EXPORT:
            for devlist in devlists:
                devstr =  str(devlist)
                if len(devstr):
                    # remove the last \n
                    print devstr[:-1]
            return(0)

        elif mode == IMPORT:
            devlistsdict = {
                "HardwareList" : getHardwareList(),
                "DeviceList" : getDeviceList(),
                "IPsecList" : getIPsecList(),
                "ProfileList" : getProfileList() }

            if filename:
                mfile = open(filename, "r")
            else:
                mfile = sys.stdin

            lines = mfile.readlines()

            for line in lines:
                try:
                    line = line[:-1]
                    log.log(3, "Parsing '%s'\n" % line)
                    vals = line.split("=")
                    if len(vals) <= 1:
                        continue
                    key = vals[0]
                    value = "=".join(vals[1:])

                    vals = key.split(".")
                    if devlistsdict.has_key(vals[0]):
                        # pylint: disable-msg=W0212
                        devlistsdict[vals[0]].fromstr(vals, value)
                    else:
                        sys.stderr.write(_("Unknown List %s\n", vals[0]))
                        raise ParseError

                except Exception, e:
                    pe = ParseError(_("Error parsing line: %s") % line)
                    pe.args += e.args
                    raise pe


            for devlist in devlists:
                log.log(1, "%s" % devlist)
                devlist.save()

            return(0)

        elif test:
            return(0)
Example #15
0
        elif mode == SWITCH:
            ret = None
            profilelist = getProfileList()
            actdev = Control.NetworkDevice()
            actdev.load()
            aprof = profilelist.getActiveProfile()

            if switch_profile and aprof.ProfileName != profile:
                log.log(1, "Switching to profile %s" % profile)
                if do_activate:
                    for p in profilelist:
                        if p.ProfileName == profile:
                            aprof = p
                            break
                    for device in getDeviceList():
                        if device.DeviceId not in aprof.ActiveDevices:
                            if actdev.find(device.Device):
                                (ret, msg) = device.deactivate()
                                if ret:
                                    print msg
                profilelist.switchToProfile(profile)
                profilelist.save()

            actdev.load()

            if do_activate:
                aprof = profilelist.getActiveProfile()
                for device in getDeviceList():
                    if device.DeviceId in aprof.ActiveDevices:
                        if not actdev.find(device.Device) and \
    def dehydrate(self):
        DialupInterfaceDialog.dehydrate(self)

        dialup = self.device.Dialup

        encap_mode_old = dialup.EncapMode
        if self.xml.get_widget("encapModeEntry").get_text() == _("sync PPP"):
            dialup.EncapMode = "syncppp"
        else:
            dialup.EncapMode = "rawip"

        # get free ISDN device if encap mode is changed
        if encap_mode_old != dialup.EncapMode:
            self.device.Device = getNewDialupDevice(\
                getDeviceList(), self.device)

        dialup.PhoneInNumber = self.xml.get_widget(
            "dialinNumberEntry").get_text().strip()
        if not dialup.PhoneInNumber:
            del dialup.PhoneInNumber
        dialup.Secure = self.xml.get_widget("allowDialinNumberCB").get_active()

        if self.xml.get_widget("callbackCB").get_active():
            dialup.createCallback()
            if self.xml.get_widget('CallbackMode').get_child().get_label() == \
                   _('in'):
                dialup.Callback.Type = 'in'
            else:
                dialup.Callback.Type = 'out'
            dialup.Callback.Delay = self.xml.get_widget(\
                "callbackDelaySB").get_value_as_int()
            dialup.Callback.Hup = False
            dialup.Callback.Compression = self.xml.get_widget(\
                "cbcpCB").get_active()
            dialup.Callback.MSN = self.xml.get_widget(\
                "cbcpMSNEntry").get_text().strip()
            if not dialup.Callback.MSN:
                del dialup.Callback.MSN
        else:
            if dialup.Callback:
                dialup.Callback.Type = "off"

        dialup.HangupTimeout = self.xml.get_widget(\
            "hangupTimeoutISDNSB").get_value_as_int()
        dialup.DialMode = self.xml.get_widget("dialModeISDNEntry").get_text()
        if dialup.DialMode == DialModes[DM_AUTO]:
            dialup.DialMode = DM_AUTO
            dialup.DefRoute = True
        else:
            dialup.DialMode = DM_MANUAL
            dialup.DefRoute = False

        dialup.MSN = self.xml.get_widget("msnEntry").get_text().strip()
        if not dialup.MSN:
            del dialup.MSN

        dialup.ChannelBundling = self.xml.get_widget(\
            "channelBundlingCB").get_active()
        if dialup.ChannelBundling:
            dialup.SlaveDevice = getNewDialupDevice(\
                getDeviceList(), self.device)
        else:
            dialup.SlaveDevice = None
        dialup.DefRoute = self.xml.get_widget("defrouteISDNCB").get_active()

        auth = self.xml.get_widget("authEntry").get_text()
        if auth == _('pap'):
            dialup.Authentication = '+pap -chap'
        elif auth == _('chap'):
            dialup.Authentication = '-pap +chap'
        elif auth == _('chap+pap'):
            dialup.Authentication = '+chap +pap'
        else:
            dialup.Authentication = 'noauth'