!C99Shell v.2.1 [PHP 7 Update] [1.12.2019]!

Software: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16. PHP/5.4.16 

uname -a: Linux roko-bkp 3.10.0-1160.102.1.el7.x86_64 #1 SMP Tue Oct 17 15:42:21 UTC 2023 x86_64 

uid=48(apache) gid=48(apache) groups=48(apache),1003(webmaster) 

Safe-mode: OFF (not secure)

/var/www/html/lib/fckeditor/editor/filemanager/connectors/py/   drwxr-xr-x
Free 9.17 GB of 93.48 GB (9.81%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     fckcommands.py (6.38 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/env python

"""
FCKeditor - The text editor for Internet - http://www.fckeditor.net
Copyright (C) 2003-2009 Frederico Caldeira Knabben

== BEGIN LICENSE ==

Licensed under the terms of any of the following licenses at your
choice:

- GNU General Public License Version 2 or later (the "GPL")
http://www.gnu.org/licenses/gpl.html

- GNU Lesser General Public License Version 2.1 or later (the "LGPL")
http://www.gnu.org/licenses/lgpl.html

- Mozilla Public License Version 1.1 or later (the "MPL")
http://www.mozilla.org/MPL/MPL-1.1.html

== END LICENSE ==

Connector for Python (CGI and WSGI).

"""

import os
try: # Windows needs stdio set for binary mode for file upload to work.
    import msvcrt
    msvcrt.setmode (0, os.O_BINARY) # stdin  = 0
    msvcrt.setmode (1, os.O_BINARY) # stdout = 1
except ImportError:
    pass

from fckutil import *
from fckoutput import *
import config as Config

class GetFoldersCommandMixin (object):
    def getFolders(self, resourceType, currentFolder):
        """
        Purpose: command to recieve a list of folders
        """
        # Map the virtual path to our local server
        serverPath = mapServerFolder(self.userFilesFolder,currentFolder)
        s = """<Folders>"""     # Open the folders node
        for someObject in os.listdir(serverPath):
            someObjectPath = mapServerFolder(serverPath, someObject)
            if os.path.isdir(someObjectPath):
                s += """<Folder name="%s" />""" % (
                        convertToXmlAttribute(someObject)
                        )
        s += """</Folders>""" # Close the folders node
        return s

class GetFoldersAndFilesCommandMixin (object):
    def getFoldersAndFiles(self, resourceType, currentFolder):
        """
        Purpose: command to recieve a list of folders and files
        """
        # Map the virtual path to our local server
        serverPath = mapServerFolder(self.userFilesFolder,currentFolder)
        # Open the folders / files node
        folders = """<Folders>"""
        files = """<Files>"""
        for someObject in os.listdir(serverPath):
            someObjectPath = mapServerFolder(serverPath, someObject)
            if os.path.isdir(someObjectPath):
                folders += """<Folder name="%s" />""" % (
                        convertToXmlAttribute(someObject)
                        )
            elif os.path.isfile(someObjectPath):
                size = os.path.getsize(someObjectPath)
                if size > 0:
                    size = round(size/1024)
                    if size < 1:
                        size = 1
                files += """<File name="%s" size="%d" />""" % (
                        convertToXmlAttribute(someObject),
                        size
                        )
        # Close the folders / files node
        folders += """</Folders>"""
        files += """</Files>"""
        return folders + files

class CreateFolderCommandMixin (object):
    def createFolder(self, resourceType, currentFolder):
        """
        Purpose: command to create a new folder
        """
        errorNo = 0; errorMsg ='';
        if self.request.has_key("NewFolderName"):
            newFolder = self.request.get("NewFolderName", None)
            newFolder = sanitizeFolderName (newFolder)
            try:
                newFolderPath = mapServerFolder(self.userFilesFolder, combinePaths(currentFolder, newFolder))
                self.createServerFolder(newFolderPath)
            except Exception, e:
                errorMsg = str(e).decode('iso-8859-1').encode('utf-8') # warning with encodigns!!!
                if hasattr(e,'errno'):
                    if e.errno==17: #file already exists
                        errorNo=0
                    elif e.errno==13: # permission denied
                        errorNo = 103
                    elif e.errno==36 or e.errno==2 or e.errno==22: # filename too long / no such file / invalid name
                        errorNo = 102
                else:
                    errorNo = 110
        else:
            errorNo = 102
        return self.sendErrorNode ( errorNo, errorMsg )

    def createServerFolder(self, folderPath):
        "Purpose: physically creates a folder on the server"
        # No need to check if the parent exists, just create all hierachy

        try:
            permissions = Config.ChmodOnFolderCreate
            if not permissions:
                os.makedirs(folderPath)
        except AttributeError: #ChmodOnFolderCreate undefined
            permissions = 0755

        if permissions:
            oldumask = os.umask(0)
            os.makedirs(folderPath,mode=0755)
            os.umask( oldumask )

class UploadFileCommandMixin (object):
    def uploadFile(self, resourceType, currentFolder):
        """
        Purpose: command to upload files to server (same as FileUpload)
        """
        errorNo = 0
        if self.request.has_key("NewFile"):
            # newFile has all the contents we need
            newFile = self.request.get("NewFile", "")
            # Get the file name
            newFileName = newFile.filename
            newFileName = sanitizeFileName( newFileName )
            newFileNameOnly = removeExtension(newFileName)
            newFileExtension = getExtension(newFileName).lower()
            allowedExtensions = Config.AllowedExtensions[resourceType]
            deniedExtensions = Config.DeniedExtensions[resourceType]

            if (allowedExtensions):
                # Check for allowed
                isAllowed = False
                if (newFileExtension in allowedExtensions):
                    isAllowed = True
            elif (deniedExtensions):
                # Check for denied
                isAllowed = True
                if (newFileExtension in deniedExtensions):
                    isAllowed = False
            else:
                # No extension limitations
                isAllowed = True

            if (isAllowed):
                # Upload to operating system
                # Map the virtual path to the local server path
                currentFolderPath = mapServerFolder(self.userFilesFolder, currentFolder)
                i = 0
                while (True):
                    newFilePath = os.path.join (currentFolderPath,newFileName)
                    if os.path.exists(newFilePath):
                        i += 1
                        newFileName = "%s(%d).%s" % (
                                newFileNameOnly, i, newFileExtension
                                )
                        errorNo= 201 # file renamed
                    else:
                        # Read file contents and write to the desired path (similar to php's move_uploaded_file)
                        fout = file(newFilePath, 'wb')
                        while (True):
                            chunk = newFile.file.read(100000)
                            if not chunk: break
                            fout.write (chunk)
                        fout.close()

                        if os.path.exists ( newFilePath ):
                            doChmod = False
                            try:
                                doChmod = Config.ChmodOnUpload
                                permissions = Config.ChmodOnUpload
                            except AttributeError: #ChmodOnUpload undefined
                                doChmod = True
                                permissions = 0755
                            if ( doChmod ):
                                oldumask = os.umask(0)
                                os.chmod( newFilePath, permissions )
                                os.umask( oldumask )

                        newFileUrl = combinePaths(self.webUserFilesFolder, currentFolder) + newFileName

                        return self.sendUploadResults( errorNo , newFileUrl, newFileName )
            else:
                return self.sendUploadResults( errorNo = 202, customMsg = "" )
        else:
            return self.sendUploadResults( errorNo = 202, customMsg = "No File" )

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

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

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

--[ c99shell v.2.1 [PHP 7 Update] [1.12.2019] maintained by KaizenLouie and updated by cermmik | C99Shell Github (MySQL update) | Generation time: 0.0039 ]--