!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/4Suite/Demos/FileSystemMirror/   drwxr-xr-x
Free 3.57 GB of 27.03 GB (13.21%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     FileSystemMirror.py (5.4 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
import sys,os
from Ft.Server.Client.Commands import CommandUtil
from Ft.Server.Client import Core
from stat import ST_MTIME
from Ft.Server.Common import AclConstants, ResourceTypes

g_mimeMap = {'.html':'text/html',
             '.xml':'text/xml',
             '.gif': 'image/gif',
             '.png': 'image/png',
             '.jpg': 'image/jpeg',
             '.jpeg': 'image/jpeg',
             }


def Mirror(fsbase,
           ftssbase,
           repo,
           ftssReadAcl,
           ftssWriteAcl):

    """This is the function that does the mirroring.  It will connect to 4SS and see what has changed. and update accordingly.

    fsbase is the filesystem base directory
    ftssbase is the directory to root from in 4SS
    ftssUserName is the name of the 4SS user to use
    ftsspasswdhash is the password hash of the 4SS user
    ftssReadAcl is the acl read ident of new files (None means world access)
    ftssWriteAcl is the acl write ident of the new files (None means world access)
    """


    #Some validation
    if not os.path.exists(fsbase):
        raise Exception("No such file or directory %s" % fsbase)
    if not os.path.isdir(fsbase):
        raise Exception("%s is not a directory" % fsbase)

    if not repo.hasResource(ftssbase):
        print "Creating base container"
        root = repo.createContainer(ftssbase,createParents = 1)
    else:
        root = repo.fetchResource(ftssbase)

    MirrorFsContainer(root,fsbase,ftssReadAcl,ftssWriteAcl)
    #See if there is anything to update the other way
    Mirror4ssContainer(root,fsbase)



def MirrorFsContainer(ftRoot,fsDir,readAcl,writeAcl):
    """Mirror a fs container into 4SS"""


    for fileName in os.listdir(fsDir):
        fullPath = os.path.join(fsDir,fileName)
        if os.path.isdir(fullPath):
            if not ftRoot.hasResource(fileName):
                print "Creating Container %s" % fullPath
                nextCont = ftRoot.createContainer(fileName)
                nextCont.setAcl(AclConstants.READ_ACCESS,readAcl,AclConstants.ALLOWED)
                nextCont.setAcl(AclConstants.WRITE_ACCESS,writeAcl,AclConstants.ALLOWED)
            else:
                nextCont = ftRoot.fetchResource(fileName)
            MirrorFsContainer(nextCont,fullPath,readAcl,writeAcl)
        else:
            MirrorFsFile(ftRoot,fullPath,readAcl,writeAcl)

def MirrorFsFile(ftRoot,filePath,readAcl,writeAcl):
    fileName = os.path.split(filePath)[1]

    if ftRoot.hasResource(fileName):
        doc = ftRoot.fetchResource(fileName)
        mtime = os.stat(filePath)[ST_MTIME]
        modified = float(mtime) > float(doc.getLastModifiedDate())
        if modified:
            print "Mirroring %s --> 4SS/%s/%s" % (filePath,ftRoot.getAbsolutePath(),fileName)
            try:
                f = open(filePath)
                src = f.read()
                f.close()
            except IOError:
                sys.stderr.write("Unable to read file %s" % filePath)
            doc.setContent(src)
            
    else:
        print "Mirroring %s --> 4SS/%s/%s" % (filePath,ftRoot.getAbsolutePath(),fileName)
        try:
            f = open(filePath)
            src = f.read()
            f.close()
        except IOError:
            sys.stderr.write("Unable to read file %s" % filePath)
        else:
            doc = ftRoot.createRawFile(fileName,
                                       g_mimeMap.get(os.path.splitext(fileName)[1],'text/text'),
                                       src)
            doc.setAcl(AclConstants.READ_ACCESS,readAcl,AclConstants.ALLOWED)
            doc.setAcl(AclConstants.WRITE_ACCESS,writeAcl,AclConstants.ALLOWED)

def Mirror4ssContainer(root,baseDir):
    """Mirror a 4ss container into the file system"""


    for child in root:
        fullPath = os.path.join(baseDir,os.path.split(child.getAbsolutePath())[1])
        if child.isResourceType(ResourceTypes.ResourceType.CONTAINER):
            if not os.path.isdir(fullPath):
                print "Mirroring %s <-- 4SS%s" % (fullPath,child.getAbsolutePath())
                os.mkdir(fullPath)
            Mirror4ssContainer(root.fetchResource(child.getAbsolutePath()),
                               fullPath)
                               
        elif child.isResourceType(ResourceTypes.ResourceType.RAW_FILE):
            if not os.path.exists(fullPath):
                print "Mirroring %s <-- 4SS%s" % (fullPath,child.getAbsolutePath())
                doc = root.fetchResource(child.getAbsolutePath())
                f = open(fullPath,'w')
                f.write(doc.getContent())
                f.close()



if __name__ == '__main__':

    readAcl = AclConstants.WORLD_GROUP_NAME
    writeAcl = AclConstants.WORLD_GROUP_NAME
    fsbase = None
    ftssbase = None

    for a in sys.argv[1:]:
        if a[:7] == '--read=':
            readAcl = a[7:]
        elif a[:8] == '--write=':
            writeAcl = a[8:]
        elif fsbase is None:
            fsbase = a
        elif ftssbase is None:
            ftssbase = a
        else:
            raise Exception("Unknown Argument %s" % a)

    if fsbase is None or ftssbase is None:
        raise Exception("Invalid Command line, please see the READ file")

    repo = CommandUtil.GetRepository({},None)

    commit = 0
    try:
        Mirror(fsbase,
               ftssbase,
               repo,
               readAcl,
               writeAcl)
        commit = 1
    finally:
        if commit:
            repo.txCommit()
        else:
            repo.txRollback()

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