????

Your IP : 3.144.7.151


Current Path : /usr/share/system-config-network/netconfpkg/
Upload File :
Current File : //usr/share/system-config-network/netconfpkg/NCWireless.py

## Copyright (C) 2001-2005 Red Hat, Inc.
## Copyright (C) 2001, 2002 Than Ngo <than@redhat.com>
## Copyright (C) 2001-2005 Harald Hoyer <harald@redhat.com>
## Copyright (C) 2001, 2002 Philipp Knirsch <pknirsch@redhat.com>

## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.

## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.

## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
import re
from netconfpkg import NC_functions
from netconfpkg.gdt import (Gdtstruct, gdtstruct_properties, 
                            Gdtstr)


class Wireless_base(Gdtstruct):
    gdtstruct_properties([
                          ('Mode', Gdtstr, "Test doc string"),
                          ('EssId', Gdtstr, "Test doc string"),
                          ('Channel', Gdtstr, "Test doc string"),
                          ('Rate', Gdtstr, "Test doc string"),
                          ('Key', Gdtstr, "Test doc string"),
                          ])

class Wireless(Wireless_base):
    keydict = { 'Mode' : 'MODE', 
                'EssId' : 'ESSID', 
                'Channel' : 'CHANNEL', 
                'Rate' : 'RATE', 
                'Key' : 'KEY', 
                }

    def __init__(self):
        super(Wireless, self).__init__()
        self.Key = ''

    def load(self, parentConf, deviceid):
        
        conf = parentConf

        for selfkey in self.keydict.keys():
            confkey = self.keydict[selfkey]
            if conf.has_key(confkey):
                setattr(self, selfkey, conf[confkey])

        conf = NC_functions.ConfKeys(deviceid)
        if conf.has_key("KEY"):
            self.Key = conf["KEY"]
        del conf


        if re.search("^s:", self.Key):
            self.Key = self.Key[2:]
        elif re.search("^[0-9a-fA-F]+$", self.Key):
            self.Key = "0x" + self.Key


    def save(self, parentConf, deviceid):
        
        conf = parentConf

        keyconf = NC_functions.ConfKeys(deviceid)
        keyconf.fsf()
        if re.search("^\s*0x[0-9a-fA-F]+\s*$", self.Key):
            keyconf["KEY"] = self.Key[2:]
        elif re.search("^\s*[^\s]+\s*$", self.Key):
            keyconf["KEY"] = "s:" + self.Key
        else:
            keyconf["KEY"] = self.Key
        keyconf.write()
        # FIXME: [167995] Wireless card mode cannot be set to Auto
        # FIXME: [162830] activate notifier box does not presist long 
        # enough to read it
        # check, if the interface support RATE, FREQ, etc.
        for selfkey in self.keydict.keys():
            confkey = self.keydict[selfkey]
            if hasattr(self, selfkey) and getattr(self, selfkey) != None:
                conf[confkey] = getattr(self, selfkey)
            else: del conf[confkey]
            #conf[confkey] = ""

        if conf.has_key("KEY"):
            del conf["KEY"]

        # Do not clear the non-filled in values
        # Bugzilla #52252
        # for i in conf.keys():
        #    if not conf[i] or conf[i] == "": del conf[i]

        # the key is now stored in a seperate file
        # conf.oldmode = 0600
        # conf.chmod(0600)
__author__ = "Harald Hoyer <harald@redhat.com>"
__date__ = "$Date: 2007/07/13 12:49:00 $"
__version__ = "$Revision: 1.23 $"