Failed to save the file to the "xx" directory.

Failed to save the file to the "ll" directory.

Failed to save the file to the "mm" directory.

Failed to save the file to the "wp" directory.

403WebShell
403Webshell
Server IP : 66.29.132.124  /  Your IP : 18.119.135.231
Web Server : LiteSpeed
System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : wavevlvu ( 1524)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /proc/self/root/opt/cloudlinux/venv/lib/python3.11/site-packages/guppy/gsl/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /proc/self/root/opt/cloudlinux/venv/lib/python3.11/site-packages/guppy/gsl/Filer.py
""" Handles filing of data from low-level gsl filing and data records.
"""


class Filer:
    def __init__(self, mod, node):
        self.mod = mod
        self.writefile_envs = []
        self.writefile_names = {}

        node.accept(self)

    def visit_file(self, node):
        node.children_accept(self)

    visit_string = visit_file

    def visit_write_file(self, node):
        name = node.arg
        if name in self.writefile_names:
            raise SyntaxError('Duplicate file name: %r' % name)
        self.writefile_names[name] = node
        self.writefile_envs.append(WriteFile(self, node))

    def get_info(self):
        infos = []
        for e in self.writefile_envs:
            infos.append('write file: %s' % e.file_name)
        return '\n'.join(infos)

    def write(self):
        for e in self.writefile_envs:
            e.write()


class WriteFile:
    node_data = None
    node_mode = None

    def __init__(self, filer, node):
        self.filer = filer
        self.mod = mod = filer.mod
        self.node_file = node
        self.file_name = node.arg

        node.children_accept(self)
        if self.node_data is None:
            data = ''
        else:
            data = self.node_data.arg
        self.data = data
        if self.node_mode is None:
            mode = ''
        else:
            mode = self.node_mode.arg
        self.mode = mode

    def visit_text(self, node):
        self.set_single('node_data', node)

    def visit_end(self, node):
        self.set_single('node_end', node)

    def visit_mode(self, node):
        self.set_single('node_mode', node)

    def set_single(self, name, node):
        if getattr(self, name, None) is not None:
            raise SyntaxError('Duplicate %r at index %r' % (name, node.index))
        setattr(self, name, node)
        node.children_accept(self, 'no_node_expected')

    def write(self):
        IO = self.mod.IO
        if self.mod.backup_suffix:
            backup_name = self.file_name + self.mod.backup_suffix
            if IO.access(self.file_name, IO.R_OK | IO.W_OK):
                IO.rename(self.file_name, backup_name)

        IO.write_file(self.file_name, self.data)


class _GLUECLAMP_:
    _imports_ = (
        '_parent.FileIO:IO',
    )

    _setable_ = 'backup_suffix',

    # Files that are to be overwritten are renamed by
    # adding backup_suffix to the name. This is no substitute for a
    # versioning system but a last precaution, especially while I am
    # developing the system.
    # Set this to None to disable backuping.

    backup_suffix = ',gsl-backuped'

    syntax_gsl = '''
.tag writefile

'''

    def filer(self, node):
        return Filer(self, node)

    def _test_main_(self):
        IO = self.IO
        N = self._parent.SpecNodes
        tempdir = IO.mkdtemp()
        tempname = IO.path.join(tempdir, 'x')
        data = 'hello'
        try:
            X = '''
.write file: %s
..text
%s
..end
''' % (tempname, data)
            node = N.node_of_string(X)
            f = self.filer(node)
            assert f.get_info() == 'write file: %s' % tempname
            f.write()
            d = IO.read_file(tempname)
            assert d == data

            # Test multiple files and backup
            # And that we can do without ..data / ..end

            data2 = 'hello2\n'
            data3 = '\nhello3'
            X = '''
.write file: %s
..text
%s
.write file: %s
..text
%s
..end
''' % (tempname, data2, tempname+'.3', data3)

            node = N.node_of_string(X)
            f = self.filer(node)
            f.write()

            assert IO.read_file(tempname+self.backup_suffix) == data
            d = IO.read_file(tempname)
            assert d == data2
            assert IO.read_file(tempname+'.3') == data3

        finally:
            for name in IO.listdir(tempdir):
                IO.remove(IO.path.join(tempdir, name))
            IO.rmdir(tempdir)

Youez - 2016 - github.com/yon3zu
LinuXploit