404

[ Avaa Bypassed ]




Upload:

Command:

elspacio@18.191.14.62: ~ $
<?php

/*
 * This file is part of Psy Shell.
 *
 * (c) 2012-2023 Justin Hileman
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Psy;

/**
 * The Psy Shell's execution scope.
 */
class ExecutionClosure
{
    const NOOP_INPUT = 'return null;';

    private $closure;

    /**
     * @param Shell $__psysh__
     */
    public function __construct(Shell $__psysh__)
    {
        $this->setClosure($__psysh__, function () use ($__psysh__) {
            try {
                // Restore execution scope variables
                \extract($__psysh__->getScopeVariables(false));

                // Buffer stdout; we'll need it later
                \ob_start([$__psysh__, 'writeStdout'], 1);

                // Convert all errors to exceptions
                \set_error_handler([$__psysh__, 'handleError']);

                // Evaluate the current code buffer
                $_ = eval($__psysh__->onExecute($__psysh__->flushCode() ?: self::NOOP_INPUT));
            } catch (\Throwable $_e) {
                // Clean up on our way out.
                if (\ob_get_level() > 0) {
                    \ob_end_clean();
                }

                throw $_e;
            } finally {
                // Won't be needing this anymore
                \restore_error_handler();
            }

            // Flush stdout (write to shell output, plus save to magic variable)
            \ob_end_flush();

            // Save execution scope variables for next time
            $__psysh__->setScopeVariables(\get_defined_vars());

            return $_;
        });
    }

    /**
     * Set the closure instance.
     *
     * @param Shell    $shell
     * @param \Closure $closure
     */
    protected function setClosure(Shell $shell, \Closure $closure)
    {
        $that = $shell->getBoundObject();

        if (\is_object($that)) {
            $this->closure = $closure->bindTo($that, \get_class($that));
        } else {
            $this->closure = $closure->bindTo(null, $shell->getBoundClass());
        }
    }

    /**
     * Go go gadget closure.
     *
     * @return mixed
     */
    public function execute()
    {
        $closure = $this->closure;

        return $closure();
    }
}

Filemanager

Name Type Size Permission Actions
CodeCleaner Folder 0755
Command Folder 0755
Exception Folder 0755
ExecutionLoop Folder 0755
Formatter Folder 0755
Input Folder 0755
Output Folder 0755
Readline Folder 0755
Reflection Folder 0755
Sudo Folder 0755
TabCompletion Folder 0755
Util Folder 0755
VarDumper Folder 0755
VersionUpdater Folder 0755
CodeCleaner.php File 11.86 KB 0644
ConfigPaths.php File 11.39 KB 0644
Configuration.php File 54.35 KB 0644
Context.php File 7.71 KB 0644
ContextAware.php File 567 B 0644
EnvInterface.php File 443 B 0644
ExecutionClosure.php File 2.25 KB 0644
ExecutionLoopClosure.php File 2.81 KB 0644
ParserFactory.php File 1.58 KB 0644
Shell.php File 47.2 KB 0644
Sudo.php File 5.28 KB 0644
SuperglobalsEnv.php File 620 B 0644
functions.php File 16.51 KB 0644