403Webshell
Server IP : 182.53.201.61  /  Your IP : 216.73.217.175
Web Server : Apache/2.2.15 (Fedora)
System : Linux km10.dyndns.org 2.6.31.5-127.fc12.i686.PAE #1 SMP Sat Nov 7 21:25:57 EST 2009 i686
User : apache ( 48)
PHP Version : 5.3.3
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/share/system-config-network/netconfpkg/conf/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/share/system-config-network/netconfpkg/conf/ConfShellVar.py
import re

from .Conf import Conf, ConfIndexError # pylint: disable-msg=W0403


class ConfShellVar(Conf):
    def __init__(self, filename):
        self.nextreg = re.compile('^[\t ]*[A-Za-z_][A-Za-z0-9_]*=')
        self.quotereg = re.compile('[ \t${}*@!~<>?;%^()#&=]')
        Conf.__init__(self, filename, commenttype='#',
                      separators='=', separator='=')

    def read(self):
        Conf.read(self)
        self.initvars()
    def initvars(self):
        # pylint: disable-msg=W0201
        self.vars = {}
        self.rewind()
        while self.findnextline(self.nextreg):
            # initialize dictionary of variable/name pairs
            var = self.getfields()
            # fields 1..n are False separations on "=" character in string,
            # so we need to join them back together.
            var[1] = "=".join(var[1:len(var)])
            if len(var[1]) and var[1][0] in '\'"':
                # found quote; strip from beginning and end
                quote = var[1][0]
                var[1] = var[1][1:]
                p = -1
                try:
                    while cmp(var[1][p], quote):
                        # ignore whitespace, etc.
                        p = p - 1
                except:
                    raise ConfIndexError (self.filename, var)
                var[1] = var[1][:p]
            else:
                var[1] = re.sub('#.*', '', var[1])

            self.vars[var[0]] = var[1]
            self.nextline()
        self.rewind()
    def __getitem__(self, varname):
        if self.vars.has_key(varname):
            return self.vars[varname]
        else:
            return ''
    def __setitem__(self, varname, value):
        # prevent tracebacks
        if not value:
            value = ""
        # set *every* instance of varname to value to avoid surprises
        place = self.tell()
        self.rewind()
        missing = 1
        while self.findnextline('^[\t ]*' + varname + '='):
            if self.quotereg.search(value):
                self.sedline('=.*', "='" + value + "'")
            else:
                self.sedline('=.*', '=' + value)
            missing = 0
            self.nextline()
        if missing:
            self.seek(place)
            if self.quotereg.search(value):
                self.insertline(varname + "='" + value + "'")
            else:
                self.insertline(varname + '=' + value)

        self.vars[varname] = value

    def __delitem__(self, varname):
        # delete *every* instance...

        self.rewind()
        while self.findnextline('^[\t ]*' + varname + '='):
            self.deleteline()
        if self.vars.has_key(varname):
            del self.vars[varname]

    def has_key(self, key):
        if self.vars.has_key(key): 
            return 1
        return 0
    def keys(self):
        return self.vars.keys()


# ConfShellVarClone(ConfShellVar):
#  Takes a ConfShellVar instance and records in another ConfShellVar
#  "difference file" only those settings which conflict with the
#  original instance.  The delete operator does delete the variable
#  text in the cloned instance file, but that will not really delete
#  the shell variable that occurs, because it does not put an "unset"
#  command in the file.
class ConfShellVarClone(ConfShellVar):
    def __init__(self, cloneInstance, filename):
        ConfShellVar.__init__(self, filename)
#        Conf.__init__(self, filename, commenttype='#',
#                      separators='=', separator='=')
        self.ci = cloneInstance
    def __getitem__(self, varname):
        if self.vars.has_key(varname):
            return self.vars[varname]
        elif self.ci.has_key(varname):
            return self.ci[varname]
        else:
            return ''
    def __setitem__(self, varname, value):
        if value != self.ci[varname]:
            # differs from self.ci; save a local copy.
            ConfShellVar.__setitem__(self, varname, value)
        else:
            # self.ci already has the variable with the same value,
            # don't duplicate it
            if self.vars.has_key(varname):
                del self[varname]
    # inherit delitem because we don't want to pass it through to self.ci
    def has_key(self, key):
        if self.vars.has_key(key): 
            return True
        if self.ci.has_key(key): 
            return True
        return False
    # FIXME: should we implement keys()?


Youez - 2016 - github.com/yon3zu
LinuXploit