!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/share/system-config-packages/   drwxr-xr-x
Free 3.84 GB of 27.03 GB (14.21%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     install.py (6.96 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#
# install.py - methods related to doing installation
#
# Copyright 2002, 2003 Red Hat, Inc.
#
# This software may be freely redistributed under the terms of the GNU
# General Public License.
#
# 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 os, sys, string
import rpm

from constants import *
import GroupSet

from rhpl.log import log
from rhpl.translate import _, N_


class InstallErrorException(Exception):
    def __init__ (self, reason):
        self.reason = reason

class InstallCallback:
    def cb(self, what, amount, total, h, (param)):
    if (what == rpm.RPMCALLBACK_TRANS_START):
        # step 6 is the bulk of the transaction set
        # processing time
        if amount == 6:
                self.dialog.prepare_block (1.0, _("Preparing to install"))
                self.saved_total = total

    elif (what == rpm.RPMCALLBACK_TRANS_PROGRESS):
            if self.saved_total != 0:

                self.dialog.update (float (amount)/self.saved_total),

        elif (what == rpm.RPMCALLBACK_TRANS_STOP):
            self.dialog.clear ()

        elif (what == rpm.RPMCALLBACK_UNINST_START):
            self.dialog.prepare_block (1.0/self.package_len,
                                       _("Removing packages"))

        elif (what == rpm.RPMCALLBACK_UNINST_STOP):
            self.dialog.update (1.0)
            self.removed_packages += 1

    elif (what == rpm.RPMCALLBACK_INST_OPEN_FILE):
            self.dialog.prepare_block (1.0/self.package_len,
                                       "%s-%s-%s" % (h[rpm.RPMTAG_NAME],
                                                     h[rpm.RPMTAG_VERSION],
                                                     h[rpm.RPMTAG_RELEASE]))

        self.rpmFD = -1
            self.size = h[rpm.RPMTAG_SIZE]
        while self.rpmFD < 0:
                fn = self.comps.hdrlist[GroupSet.nevra(h)].getFilename(self.pkgTimer)
        try:
#                    ret = checksig(fn)
#                    log("return of checksig for %s is %s" %(fn, ret))
#                    if ret != 0:
#                        raise SystemError                    
            self.rpmFD = os.open(fn, os.O_RDONLY)
            # Make sure this package seems valid
            try:
                        hdr = self.ts.hdrFromFdno(self.rpmFD)
            os.lseek(self.rpmFD, 0, 0)
                        
                        # if we don't have a valid package, throw an error
                        if not hdr:
                            raise SystemError
            except Exception, e:
            try:
                os.close(self.rpmFD)
            except Exception, e:
                pass
            self.rpmFD = -1
            raise SystemError
        except Exception, e:
                    sys.stderr.write(
            _("The file %s cannot be opened. This is due to "
              "a missing file, a bad package, or bad media. "
              "Press <return> to try again.") % fn)
                    raise InstallErrorException("fileopen")

        fn = self.method.unlinkFilename(fn)
        return self.rpmFD
    elif (what == rpm.RPMCALLBACK_INST_PROGRESS):
            if total != 100:
                self.dialog.update (float (amount)/self.size)
            else:
                self.dialog.update (1.0)
    elif (what == rpm.RPMCALLBACK_INST_CLOSE_FILE):
            self.dialog.update (1.0)
        os.close (self.rpmFD)
            self.installed_packages += 1

        elif ((what == rpm.RPMCALLBACK_UNPACK_ERROR) or
              (what == rpm.RPMCALLBACK_CPIO_ERROR)):
            # we may want to make this error more fine-grained at some
            # point
            pkg = "%s-%s-%s" % (h[rpm.RPMTAG_NAME],
                                h[rpm.RPMTAG_VERSION],
                                h[rpm.RPMTAG_RELEASE])
#            self.messageWindow(_("Error Installing Package"),
            sys.stderr.write(
                               _("There was an error installing %s.  This "
                                 "can indicate media failure, lack of disk "
                                 "space, and/or hardware problems.  This is "
                                 "a fatal error and your install will be "
                                 "aborted.  Please verify your media and try "
                                 "your install again.\n\n"
                                 "Press the OK button to reboot "
                                 "your system.") % (pkg,))
            if what == rpm.RPMCALLBACK_UNPACK_ERROR:
                msg = "unpack"
            else:
                msg = "cpio"
            InstallErrorException(msg)
    else:
        pass

    def __init__(self, method, dialog, package_len, comps, ts):
        self.removed_packages = 0
        self.installed_packages = 0
        self.saved_total = 0
    self.method = method
        self.dialog = dialog
        self.comps = comps
        self.package_len = package_len
        self.ts = ts
        assert (package_len > 0)
        # we should log the output for our install somewhere
        self.pkgTimer = None


def checksig(fileName):
    # RPM spews to stdout/stderr.  Redirect.
    # stolen from up2date/up2date.py
    saveStdout = os.dup(1)
    saveStderr = os.dup(2)
    redirStdout = os.open("/dev/null", os.O_WRONLY | os.O_APPEND)
    redirStderr = os.open("/dev/null", os.O_WRONLY | os.O_APPEND)
    os.dup2(redirStdout, 1)
    os.dup2(redirStderr, 2)
    # now do the rpm thing
    ret = rpm.checksig(fileName, rpm.CHECKSIG_MD5)
    # restore normal stdout and stderr
    os.dup2(saveStdout, 1)
    os.dup2(saveStderr, 2)
    # Clean up
    os.close(redirStdout)
    os.close(redirStderr)
    os.close(saveStdout)
    os.close(saveStderr)
    return ret    


def sortPackages(first, second):
    # install packages in cd order (cd tag is 1000002, num is 1000003)
    onenum = first[1000003]
    twonum = second[1000003]

    onedisc = first[1000002]
    twodisc = second[1000002]

    # this code assumes a lot, specifically for the case where we have packages
    # depending on packages in the base.  we should really split up into
    # separate transaction sets to order sanely, but

    # if we have a package order for both, compare them
    if onenum and twonum:
        one = onenum
        two = twonum
    # if we have a package order for one and not the other, that one is "first"
    elif onenum and not twonum:
        return -1
    elif twonum and not onenum:
        return 1
    # okay, we don't have a package order for either; try going off of disc #
    elif onedisc and twodisc:
        one = onedisc
        two = twodisc
    elif onedisc and not twodisc:
        return -1
    elif twodisc and not onedisc:
        return 1
    # we have no real ordering information... we'll just go off of name :/
    else:
        one = 0
        two = 0
    
    if one < two:
    return -1
    elif one > two:
    return 1
    elif (string.lower(first[rpm.RPMTAG_NAME])
          < string.lower(second[rpm.RPMTAG_NAME])):
    return -1
    elif (string.lower(first[rpm.RPMTAG_NAME])
          > string.lower(second[rpm.RPMTAG_NAME])):
    return 1

    return 0


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