!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/bin/X11/./../../share/rhn/up2date_client/   drwxr-xr-x
Free 5.48 GB of 27.03 GB (20.27%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     up2dateUtils.py (8.78 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#/usr/bin/python
# Client code for Update Agent
# Copyright (c) 1999-2002 Red Hat, Inc.  Distributed under GPL.
#
# Author: Preston Brown <pbrown@redhat.com>
#         Adrian Likins <alikins@redhat.com>
#
"""utility functions for up2date"""

import re
import os
import sys
import time
import rpm
import string
import md5

sys.path.insert(0, "/usr/share/rhn/")
sys.path.insert(1,"/usr/share/rhn/up2date_client")
import rpmUtils
import up2dateErrors
import transaction
import config


from rhpl.translate import _, N_

def rpmFlagsToOperator(flags):
    flags = flags & 0xFF
    buf = ""
    if flags != 0:
        if flags & rpm.RPMSENSE_LESS:
            buf = buf + "<"
        if flags & rpm.RPMSENSE_GREATER:
            buf = buf + ">"
        if flags & rpm.RPMSENSE_EQUAL:
            buf = buf + "="
        if flags & rpm.RPMSENSE_SERIAL:
            buf = buf + "S"
    return buf

def getPackageSearchPath():
    dir_list = []
    cfg = config.initUp2dateConfig()
    dir_list.append(cfg["storageDir"])

    dir_string = cfg["packageDir"]
    if dir_string:
        paths = string.split(dir_string, ':')
        fullpaths = []
        for path in paths:
            fullpath = os.path.normpath(os.path.abspath(os.path.expanduser(path)))
            fullpaths.append(fullpath)
        dir_list = dir_list + fullpaths
    return dir_list

def pkgToString(pkg):
    return "%s-%s-%s" % (pkg[0], pkg[1], pkg[2])

def pkgToStringArch(pkg):
    return "%s-%s-%s.%s" % (pkg[0], pkg[1], pkg[2], pkg[4])

def pkglistToString(pkgs):
    packages = "("
    for pkg in pkgs:
    packages = packages + pkgToString(pkg) + ","
    packages = packages + ")"
    return packages

def restartUp2date():
    args = sys.argv[:]
    print _("Restarting up2date")
#    os.execvp(sys.argv[0], args)
#    sys.exit()
    pid = os.fork()
    if not pid:
        args = sys.argv[:]
        print _("Restarting up2date")
        os.execvp(sys.argv[0], args)
    if exit:
        sys.exit()
    os.wait()

def comparePackagesArch(pkg1, pkg2):
    arch1 = pkg1[4]
    arch2 = pkg2[4]

    score1 = rpm.archscore(arch1)
    score2 = rpm.archscore(arch2)

    if score1 > score2:
        return 1
    if score1 < score2:
        return -1
    if score1 == score2:
        return 0

# compare two RPM packages
def comparePackages(pkgLabel1, pkgLabel2):
    version1 = pkgLabel1[1]
    release1 = pkgLabel1[2]
    epoch1 = pkgLabel1[3]
    version2 = pkgLabel2[1]
    release2 = pkgLabel2[2]
    epoch2 = pkgLabel2[3]

    if epoch1 == "" or epoch1 == 0 or epoch1 == "0":
        epoch1 = None
    else:
        epoch1 = "%s" % epoch1
        
    if epoch2 == "" or epoch2 == 0 or epoch2 == "0":
            epoch2 = None
    else:
        epoch2 = "%s" % epoch2
        
    return rpm.labelCompare((epoch1, version1, release1),
                            (epoch2, version2, release2))
    

def parseObsoleteVersion(ver):
    s = ver
    epoch = ""
    if string.find(s, ":") >= 0:
        arr = string.split(s, ":", 1)
        epoch = arr[0]
        s = arr[1]
    release = "0"
    if string.find(s, '-') >= 0:
        arr = string.split(s, "-", 1)
        release = arr[1]
        s = arr[0]
    return s, release, epoch


def cmp2rpmSense(value):
    if value < 0:
        return rpm.RPMSENSE_LESS
    if value > 0:
        return rpm.RPMSENSE_GREATER
    return rpm.RPMSENSE_EQUAL

# see if a package is obsoleted by a given
# obsolete version and sense
def isObsoleted(obs, pkg, package=None):
    # if the obsoleting package and the package
    # to be obsoleted are different arches, it doesnt count
    if package:
        if pkg[4] != "noarch" and package[4] != "noarch":
            if pkg[4] != package[4]:
                return 0
    (n,v,r,e,a,obsName, obsVersion,obsSense) = obs
    if obsSense == "0":
        return 1
    candidate = (pkg[0], pkg[1], pkg[2], pkg[3])
    vv, rr, ee = parseObsoleteVersion(obsVersion)
    obsCandidate = (obsName, vv, rr, ee)
    ret = comparePackages(candidate, obsCandidate)
    op = cmp2rpmSense(ret)
    if op & int(obsSense):
        return 1

    return 0
    
    
    

def md5sum(fileName):
    hashvalue = md5.new()
    
    try:
        f = open(fileName, "r")
    except:
        return ""

    fData = f.read()
    hashvalue.update(fData)
    del fData
    f.close()
    
    hexvalue = string.hexdigits
    md5res = ""
    for c in hashvalue.digest():
        i = ord(c)
        md5res = md5res + hexvalue[(i >> 4) & 0xF] + hexvalue[i & 0xf]

    return md5res

# return a glob for your particular architecture.
def archGlob():
    if re.search("i.86", os.uname()[4]):
        return "i?86"
    elif re.search("sparc", os.uname()[4]):
        return "sparc*"
    else:
        return os.uname()[4]

def getProxySetting():
    cfg = config.initUp2dateConfig()
    proxy = None
    proxyHost = cfg["httpProxy"]
    # legacy for backwards compat
    if proxyHost == "":
        try:
            proxyHost = cfg["pkgProxy"]
        except:
            proxyHost = None

    if proxyHost:
        if proxyHost[:7] == "http://":
            proxy = proxyHost[7:]
        else:
            proxy = proxyHost

    return proxy

def getOSVersionAndRelease():
    cfg = config.initUp2dateConfig()
    ts = transaction.initReadOnlyTransaction()
    for h in ts.dbMatch('Providename', "redhat-release"):
        if cfg["versionOverride"]:
            version = cfg["versionOverride"]
        else:
            version = h['version']

        releaseVersion = (h['name'], version)
        return releaseVersion
    else:
       raise up2dateErrors.RpmError(
           "Could not determine what version of Red Hat Linux you "\
           "are running.\nIf you get this error, try running \n\n"\
           "\t\trpm --rebuilddb\n\n")



def getVersion():
    release, version = getOSVersionAndRelease()

    return version

def getOSRelease():
    release, version = getOSVersionAndRelease()
    return release

def getArch():
    if not os.access("/etc/rpm/platform", os.R_OK):
        return os.uname()[4]

    fd = open("/etc/rpm/platform", "r")
    platform = string.strip(fd.read())

    return platform

# FIXME: and again, ripped out of r-c-packages
# FIXME: ripped right out of anaconda, belongs in rhpl
def getUnameArch():
    arch = os.uname()[4]
    if (len (arch) == 4 and arch[0] == 'i' and
        arch[2:4] == "86"):
        arch = "i386"
                                                                                
    if arch == "sparc64":
        arch = "sparc"
                                                                                
    if arch == "s390x":
        arch = "s390"
                                                                                
    return arch



def version():
    # substituted to the real version by the Makefile at installation time.
    return "4.4.23-4"

def pprint_pkglist(pkglist):
    if type(pkglist) == type([]):
        foo = map(lambda a : "%s-%s-%s" % (a[0],a[1],a[2]), pkglist)
    else:
        foo = "%s-%s-%s" % (pkglist[0], pkglist[1], pkglist[2])
    return foo

def genObsoleteTupleFromHdr(hdr):
    epoch = hdr['epoch']
    if epoch == None:
        epoch = ""
    # I think this is right, check with misa
    obsname =  hdr['obsoletename']
    obsvers = hdr['obsoleteversion']
    obsflags = hdr['obsoleteflags']
    name = hdr['name']
    version = hdr['version']
    release =  hdr['release']
    arch = hdr['arch']

    if type(obsname) == type([]) and len(obsname) > 1:
        obs = []
        for index in range(len(obsname)):
            obs.append([name, version, release, epoch, arch,
                   obsname[index], obsvers[index], obsflags[index]])
        return obs
    else:
        vers = ""
        if obsvers:
            vers = obsvers[0]
        flags = 0
        if obsflags:
        if type(obsflags) == type([]):
               flags = obsflags[0]
        else:
           flags = obsflags    
        obs = [name, version, release, epoch, arch,
               obsname[0], vers, flags]
        return [obs]
    return None


def freeDiskSpace():
    cfg = config.initUp2dateConfig()
    import statvfs

    dfInfo = os.statvfs(cfg["storageDir"])
    return long(dfInfo[statvfs.F_BAVAIL]) * (dfInfo[statvfs.F_BSIZE])

# file used to keep track of the next time rhn_check
# is allowed to update the package list on the server
LAST_UPDATE_FILE="/var/lib/up2date/dbtimestamp"

# the package DB expected to change on each RPM list change
#dbpath = "/var/lib/rpm"
#if cfg['dbpath']:
#    dbpath = cfg['dbpath']
#RPM_PACKAGE_FILE="%s/Packages" % dbpath

def touchTimeStamp():
    try:
        file_d = open(LAST_UPDATE_FILE, "w+")
        file_d.close()
    except:
        return (0, "unable to open the timestamp file", {})
    # Never update the package list more than once every hour.
    t = time.time()
    try:
        os.utime(LAST_UPDATE_FILE, (t, t))

    except:
        return (0, "unable to set the time stamp on the time stamp file %s" % LAST_UPDATE_FILE, {})

:: 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.0049 ]--