!C99Shell v. 1.0 pre-release build #16!

Software: Apache/2.0.54 (Fedora). PHP/5.0.4 

uname -a: Linux mina-info.me 2.6.17-1.2142_FC4smp #1 SMP Tue Jul 11 22:57:02 EDT 2006 i686 

uid=48(apache) gid=48(apache) groups=48(apache)
context=system_u:system_r:httpd_sys_script_t
 

Safe-mode: OFF (not secure)

/usr/lib/python2.4/site-packages/rhpl/   drwxr-xr-x
Free 3.73 GB of 27.03 GB (13.8%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     ConfPAP.py (8.17 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
## Copyright (C) 2001, 2002 Red Hat, Inc.
## Copyright (C) 2001, 2002 Harald Hoyer <harald@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 sys
from types import *
from rhpl.log import log

if not "/usr/lib/rhs/python" in sys.path:
    sys.path.append("/usr/lib/rhs/python")

import Conf

class ConfPAP(Conf.Conf):
    beginline = '####### redhat-config-network will overwrite this part!!! (begin) ##########'
    endline = '####### redhat-config-network will overwrite this part!!! (end) ############'
    
    def __init__(self, filename):
        self.beginlineplace = 0
        self.endlineplace = 0
        Conf.Conf.__init__(self, filename, '#', ' \t', ' \t')
        self.chmod(0600)

    def read(self):
        Conf.Conf.read(self)
        self.initvars()
        self.chmod(0600)

    def findline(self, val):
        # returns false if no more lines matching pattern
        while self.line < len(self.lines):
            if self.lines[self.line] == val:
                return 1
            self.line = self.line + 1
        # if while loop terminated, pattern not found.
        return 0

    def real_rewind(self):
        self.line = 0

    def rewind(self):
        self.line = self.beginlineplace

    def initvars(self):
        self.vars = {}
        self.beginlineplace = 0
        self.endlineplace = 0
        self.real_rewind()

        if not self.findline(self.beginline):
            self.insertline(self.beginline)

        self.beginlineplace = self.tell()
        
        if not self.findline(self.endline):
            self.seek(self.beginlineplace)
            self.nextline()
            self.insertline(self.endline)
        
        self.endlineplace = self.tell()
        
        self.real_rewind()

       while self.findnextcodeline():
            if self.tell() >= self.endlineplace:
                break
            # initialize dictionary of variable/name pairs
            # print self.getline()
            var = self.getfields()
                
            if var and (len(var) >= 3):
                if not self.vars.has_key(var[0]):
                    self.vars[var[0]] = {}
            self.vars[var[0]][var[1]] = var[2]
            
            self.nextline()
            
        self.rewind()

    def getfields(self):
        var = Conf.Conf.getfields(self)
        if len(var) and len(var[0]) and var[0][0] in '\'"':
            # found quote; strip from beginning and end
            quote = var[0][0]
            if var[0][-1] == quote:
                var[0] = var[0][1:-1]

        if len(var) >= 2 and len(var[1]) and var[1][0] in '\'"':
            # found quote; strip from beginning and end
            quote = var[1][0]
            if var[1][-1] == quote:
                var[1] = var[1][1:-1]

        if len(var) >= 3 and len(var[2]) and var[2][0] in '\'"':
            # found quote; strip from beginning and end
            quote = var[2][0]
            if var[2][-1] == quote:
                var[2] = var[2][1:-1]
        return var

    def insertline(self, line=''):
        place = self.tell()
        if place < self.beginlineplace:
            self.beginlineplace = self.beginlineplace + 1
            
        if place < self.endlineplace:
            self.endlineplace = self.endlineplace + 1
            
        self.lines.insert(self.line, line)

    def deleteline(self):
        place = self.tell()
        self.lines[self.line:self.line+1] = []
        
        if place < self.beginlineplace:
            self.beginlineplace = self.beginlineplace -1
            
        if place < self.endlineplace:
            self.endlineplace = self.endlineplace - 1

    def __getitem__(self, varname):
        if self.vars.has_key(varname):
            return self.vars[varname]
        else:
            return ''

    def __setitem__(self, varname, svalue):
        place=self.tell()
        self.rewind()
        missing=1

        if isinstance(varname, ListType):
            login = '\"' + varname[0] + '\"'
            server = '\"' + varname[1] + '\"'
        else:
            login = '\"' + varname + '\"'
            server = '*'

        value = '\"' + svalue + '\"'
            
        while self.findnextcodeline():
            if self.tell() >= self.endlineplace:
                break

            var = self.getfields()
            
            if var and (len(var) >= 3):                
                if login == var[0] and server == var[1]:
                        self.setfields([ login, server, value ] )
                        missing=0
           self.nextline()
            
        if missing:
            self.delallitem(varname)
            self.seek(self.endlineplace)
            self.insertlinelist([ login, server, value ] )
                

        if isinstance(varname, ListType):
            if not self.vars.has_key(varname[0]):
                self.vars[varname[0]] = {}
            self.vars[varname[0]][varname[1]] = svalue
        else:
            if not self.vars.has_key(varname):
                self.vars[varname] = {}
            self.vars[varname]["*"] = svalue

        log.lch(2, self.filename, "%s '%s' '%s'" % (login, server, value))
            
        self.seek(place)
        
    def __delitem__(self, varname):
        place=self.tell()
        self.rewind()
        if isinstance(varname, ListType):
            login = varname[0]
            server = varname[1]
        else:
            login = varname
            server = "*"        

        while self.findnextcodeline():
            if self.tell() >= self.endlineplace:
                break

            var = self.getfields()
            
            if var and (len(var) >= 3):                
                if login == var[0] and server == var[1]:
                    self.deleteline()
            self.nextline()
                    
        if self.vars.has_key(login):
            if self.vars[login].has_key(server):
                del self.vars[login][server]
            if not len(self.vars[login]):
                del self.vars[login]
        self.seek(place)

        log.ldel(2, self.filename, "%s '%s'" % (login, server))


    def delallitem(self, varname):
        place=self.tell()
        self.rewind()
        # delete *every* instance...
        if isinstance(varname, ListType):
            login = varname[0]
            server = varname[1]
        else:
            login = varname
            server = "*"
            log.log(5, "delallitem: using wildcard")

        while self.findnextcodeline():
            var = self.getfields()
            
            if var and (len(var) >= 3):                
                if login == var[0] and server == var[1]:
                    log.ldel(2, self.filename, "%s '%s'" % (login, server))
                    self.deleteline()
                else:
                    log.log(5, "%s != %s or %s != %s" % (login, var[0], server, var[1]))

            self.nextline()
                    
        if self.vars.has_key(login):
            if self.vars[login].has_key(server):
                del self.vars[login][server]
            if not len(self.vars[login]):
                del self.vars[login]

        self.seek(place)

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

if __name__ == '__main__':
    pap = ConfPAP("/etc/ppp/pap-secrets")
    for key in pap.keys():
        print key + ' ' + str(pap[key])
        del pap[key]
        
    pap['test1'] = 'pappasswd1'
    pap['test2'] = 'pappasswd2'
    pap['test3'] = 'pappasswd3'
    pap[['test3', 'testserver']] = 'pappasswd3'


    print pap.lines

    pap.write()


:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 1.0 pre-release build #16 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.0035 ]--