!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: Apache/2.2.22 (Debian). PHP/5.6.36 

uname -a: Linux h05.hvosting.ua 4.9.110-amd64 #3 SMP Sun Nov 4 16:27:09 UTC 2018 x86_64 

uid=1389(h33678) gid=1099(h33678) groups=1099(h33678),502(mgrsecure) 

Safe-mode: OFF (not secure)

/home/h33678/data/www/it-man.ztu.edu.ua/src/vendor/symfony/console/Helper/   drwxr-xr-x
Free 116.86 GB of 200.55 GB (58.27%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     QuestionHelper.php (13.07 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Symfony\Component\Console\Helper;

use 
Symfony\Component\Console\Exception\InvalidArgumentException;
use 
Symfony\Component\Console\Exception\RuntimeException;
use 
Symfony\Component\Console\Input\InputInterface;
use 
Symfony\Component\Console\Output\ConsoleOutputInterface;
use 
Symfony\Component\Console\Output\OutputInterface;
use 
Symfony\Component\Console\Formatter\OutputFormatterStyle;
use 
Symfony\Component\Console\Question\Question;
use 
Symfony\Component\Console\Question\ChoiceQuestion;

/**
 * The QuestionHelper class provides helpers to interact with the user.
 *
 * @author Fabien Potencier <fabien@symfony.com>
 */
class QuestionHelper extends Helper
{
    private 
$inputStream;
    private static 
$shell;
    private static 
$stty;

    
/**
     * Asks a question to the user.
     *
     * @param InputInterface  $input    An InputInterface instance
     * @param OutputInterface $output   An OutputInterface instance
     * @param Question        $question The question to ask
     *
     * @return string The user answer
     *
     * @throws RuntimeException If there is no data to read in the input stream
     */
    
public function ask(InputInterface $inputOutputInterface $outputQuestion $question)
    {
        if (
$output instanceof ConsoleOutputInterface) {
            
$output $output->getErrorOutput();
        }

        if (!
$input->isInteractive()) {
            return 
$question->getDefault();
        }

        if (!
$question->getValidator()) {
            return 
$this->doAsk($output$question);
        }

        
$interviewer = function () use ($output$question) {
            return 
$this->doAsk($output$question);
        };

        return 
$this->validateAttempts($interviewer$output$question);
    }

    
/**
     * Sets the input stream to read from when interacting with the user.
     *
     * This is mainly useful for testing purpose.
     *
     * @param resource $stream The input stream
     *
     * @throws InvalidArgumentException In case the stream is not a resource
     */
    
public function setInputStream($stream)
    {
        if (!
is_resource($stream)) {
            throw new 
InvalidArgumentException('Input stream must be a valid resource.');
        }

        
$this->inputStream $stream;
    }

    
/**
     * Returns the helper's input stream.
     *
     * @return resource
     */
    
public function getInputStream()
    {
        return 
$this->inputStream;
    }

    
/**
     * {@inheritdoc}
     */
    
public function getName()
    {
        return 
'question';
    }

    
/**
     * Asks the question to the user.
     *
     * @param OutputInterface $output
     * @param Question        $question
     *
     * @return bool|mixed|null|string
     *
     * @throws \Exception
     * @throws \RuntimeException
     */
    
private function doAsk(OutputInterface $outputQuestion $question)
    {
        
$this->writePrompt($output$question);

        
$inputStream $this->inputStream ?: STDIN;
        
$autocomplete $question->getAutocompleterValues();

        if (
null === $autocomplete || !$this->hasSttyAvailable()) {
            
$ret false;
            if (
$question->isHidden()) {
                try {
                    
$ret trim($this->getHiddenResponse($output$inputStream));
                } catch (\
RuntimeException $e) {
                    if (!
$question->isHiddenFallback()) {
                        throw 
$e;
                    }
                }
            }

            if (
false === $ret) {
                
$ret fgets($inputStream4096);
                if (
false === $ret) {
                    throw new \
RuntimeException('Aborted');
                }
                
$ret trim($ret);
            }
        } else {
            
$ret trim($this->autocomplete($output$question$inputStream));
        }

        
$ret strlen($ret) > $ret $question->getDefault();

        if (
$normalizer $question->getNormalizer()) {
            return 
$normalizer($ret);
        }

        return 
$ret;
    }

    
/**
     * Outputs the question prompt.
     *
     * @param OutputInterface $output
     * @param Question        $question
     */
    
protected function writePrompt(OutputInterface $outputQuestion $question)
    {
        
$message $question->getQuestion();

        if (
$question instanceof ChoiceQuestion) {
            
$maxWidth max(array_map(array($this'strlen'), array_keys($question->getChoices())));

            
$messages = (array) $question->getQuestion();
            foreach (
$question->getChoices() as $key => $value) {
                
$width $maxWidth $this->strlen($key);
                
$messages[] = '  [<info>'.$key.str_repeat(' '$width).'</info>] '.$value;
            }

            
$output->writeln($messages);

            
$message $question->getPrompt();
        }

        
$output->write($message);
    }

    
/**
     * Outputs an error message.
     *
     * @param OutputInterface $output
     * @param \Exception      $error
     */
    
protected function writeError(OutputInterface $output, \Exception $error)
    {
        if (
null !== $this->getHelperSet() && $this->getHelperSet()->has('formatter')) {
            
$message $this->getHelperSet()->get('formatter')->formatBlock($error->getMessage(), 'error');
        } else {
            
$message '<error>'.$error->getMessage().'</error>';
        }

        
$output->writeln($message);
    }

    
/**
     * Autocompletes a question.
     *
     * @param OutputInterface $output
     * @param Question        $question
     *
     * @return string
     */
    
private function autocomplete(OutputInterface $outputQuestion $question$inputStream)
    {
        
$autocomplete $question->getAutocompleterValues();
        
$ret '';

        
$i 0;
        
$ofs = -1;
        
$matches $autocomplete;
        
$numMatches count($matches);

        
$sttyMode shell_exec('stty -g');

        
// Disable icanon (so we can fread each keypress) and echo (we'll do echoing here instead)
        
shell_exec('stty -icanon -echo');

        
// Add highlighted text style
        
$output->getFormatter()->setStyle('hl', new OutputFormatterStyle('black''white'));

        
// Read a keypress
        
while (!feof($inputStream)) {
            
$c fread($inputStream1);

            
// Backspace Character
            
if ("\177" === $c) {
                if (
=== $numMatches && !== $i) {
                    --
$i;
                    
// Move cursor backwards
                    
$output->write("\033[1D");
                }

                if (
$i === 0) {
                    
$ofs = -1;
                    
$matches $autocomplete;
                    
$numMatches count($matches);
                } else {
                    
$numMatches 0;
                }

                
// Pop the last character off the end of our string
                
$ret substr($ret0$i);
            } elseif (
"\033" === $c) {
                
// Did we read an escape sequence?
                
$c .= fread($inputStream2);

                
// A = Up Arrow. B = Down Arrow
                
if (isset($c[2]) && ('A' === $c[2] || 'B' === $c[2])) {
                    if (
'A' === $c[2] && -=== $ofs) {
                        
$ofs 0;
                    }

                    if (
=== $numMatches) {
                        continue;
                    }

                    
$ofs += ('A' === $c[2]) ? -1;
                    
$ofs = ($numMatches $ofs) % $numMatches;
                }
            } elseif (
ord($c) < 32) {
                if (
"\t" === $c || "\n" === $c) {
                    if (
$numMatches && -!== $ofs) {
                        
$ret $matches[$ofs];
                        
// Echo out remaining chars for current match
                        
$output->write(substr($ret$i));
                        
$i strlen($ret);
                    }

                    if (
"\n" === $c) {
                        
$output->write($c);
                        break;
                    }

                    
$numMatches 0;
                }

                continue;
            } else {
                
$output->write($c);
                
$ret .= $c;
                ++
$i;

                
$numMatches 0;
                
$ofs 0;

                foreach (
$autocomplete as $value) {
                    
// If typed characters match the beginning chunk of value (e.g. [AcmeDe]moBundle)
                    
if (=== strpos($value$ret) && $i !== strlen($value)) {
                        
$matches[$numMatches++] = $value;
                    }
                }
            }

            
// Erase characters from cursor to end of line
            
$output->write("\033[K");

            if (
$numMatches && -!== $ofs) {
                
// Save cursor position
                
$output->write("\0337");
                
// Write highlighted text
                
$output->write('<hl>'.substr($matches[$ofs], $i).'</hl>');
                
// Restore cursor position
                
$output->write("\0338");
            }
        }

        
// Reset stty so it behaves normally again
        
shell_exec(sprintf('stty %s'$sttyMode));

        return 
$ret;
    }

    
/**
     * Gets a hidden response from user.
     *
     * @param OutputInterface $output An Output instance
     *
     * @return string The answer
     *
     * @throws RuntimeException In case the fallback is deactivated and the response cannot be hidden
     */
    
private function getHiddenResponse(OutputInterface $output$inputStream)
    {
        if (
'\\' === DIRECTORY_SEPARATOR) {
            
$exe __DIR__.'/../Resources/bin/hiddeninput.exe';

            
// handle code running from a phar
            
if ('phar:' === substr(__FILE__05)) {
                
$tmpExe sys_get_temp_dir().'/hiddeninput.exe';
                
copy($exe$tmpExe);
                
$exe $tmpExe;
            }

            
$value rtrim(shell_exec($exe));
            
$output->writeln('');

            if (isset(
$tmpExe)) {
                
unlink($tmpExe);
            }

            return 
$value;
        }

        if (
$this->hasSttyAvailable()) {
            
$sttyMode shell_exec('stty -g');

            
shell_exec('stty -echo');
            
$value fgets($inputStream4096);
            
shell_exec(sprintf('stty %s'$sttyMode));

            if (
false === $value) {
                throw new 
RuntimeException('Aborted');
            }

            
$value trim($value);
            
$output->writeln('');

            return 
$value;
        }

        if (
false !== $shell $this->getShell()) {
            
$readCmd $shell === 'csh' 'set mypassword = $<' 'read -r mypassword';
            
$command sprintf("/usr/bin/env %s -c 'stty -echo; %s; stty echo; echo \$mypassword'"$shell$readCmd);
            
$value rtrim(shell_exec($command));
            
$output->writeln('');

            return 
$value;
        }

        throw new 
RuntimeException('Unable to hide the response.');
    }

    
/**
     * Validates an attempt.
     *
     * @param callable        $interviewer A callable that will ask for a question and return the result
     * @param OutputInterface $output      An Output instance
     * @param Question        $question    A Question instance
     *
     * @return string The validated response
     *
     * @throws \Exception In case the max number of attempts has been reached and no valid response has been given
     */
    
private function validateAttempts(callable $interviewerOutputInterface $outputQuestion $question)
    {
        
$error null;
        
$attempts $question->getMaxAttempts();
        while (
null === $attempts || $attempts--) {
            if (
null !== $error) {
                
$this->writeError($output$error);
            }

            try {
                return 
call_user_func($question->getValidator(), $interviewer());
            } catch (\
Exception $error) {
            }
        }

        throw 
$error;
    }

    
/**
     * Returns a valid unix shell.
     *
     * @return string|bool The valid shell name, false in case no valid shell is found
     */
    
private function getShell()
    {
        if (
null !== self::$shell) {
            return 
self::$shell;
        }

        
self::$shell false;

        if (
file_exists('/usr/bin/env')) {
            
// handle other OSs with bash/zsh/ksh/csh if available to hide the answer
            
$test "/usr/bin/env %s -c 'echo OK' 2> /dev/null";
            foreach (array(
'bash''zsh''ksh''csh') as $sh) {
                if (
'OK' === rtrim(shell_exec(sprintf($test$sh)))) {
                    
self::$shell $sh;
                    break;
                }
            }
        }

        return 
self::$shell;
    }

    
/**
     * Returns whether Stty is available or not.
     *
     * @return bool
     */
    
private function hasSttyAvailable()
    {
        if (
null !== self::$stty) {
            return 
self::$stty;
        }

        
exec('stty 2>&1'$output$exitcode);

        return 
self::$stty $exitcode === 0;
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

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

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by PinoyWH1Z | C99Shell Github | Generation time: 0.0277 ]--