Move prompt_silent() and get_opt() to rcube_utils class
| | |
| | | |
| | | |
| | | // get arguments |
| | | $args = get_opt(array('u' => 'user', 'd' => 'delete')); |
| | | $args = rcube_utils:get_opt(array('u' => 'user', 'd' => 'delete')); |
| | | |
| | | if ($_SERVER['argv'][1] == 'help') { |
| | | print_usage(); |
| | |
| | | |
| | | |
| | | // get arguments |
| | | $args = get_opt(array('h' => 'host', 'u' => 'user', 'p' => 'pass', 'm' => 'mbox', 'f' => 'file')) + array('host' => 'localhost', 'mbox' => 'INBOX'); |
| | | $opts = array('h' => 'host', 'u' => 'user', 'p' => 'pass', 'm' => 'mbox', 'f' => 'file'); |
| | | $args = rcube_utils::get_opt($opts) + array('host' => 'localhost', 'mbox' => 'INBOX'); |
| | | |
| | | if ($_SERVER['argv'][1] == 'help') |
| | | { |
| | |
| | | } |
| | | |
| | | // prompt for password |
| | | $args['pass'] = prompt_silent("Password: "); |
| | | $args['pass'] = rcube_utils::prompt_silent("Password: "); |
| | | |
| | | |
| | | // parse $host URL |
| | |
| | | |
| | | |
| | | // get arguments |
| | | $args = get_opt(array('h' => 'host', 'u' => 'user', 'p' => 'pass', 'm' => 'mbox', 'f' => 'file')) + array('host' => 'localhost', 'mbox' => 'INBOX'); |
| | | $opts = array('h' => 'host', 'u' => 'user', 'p' => 'pass', 'm' => 'mbox', 'f' => 'file'); |
| | | $args = rcube_utils::get_opt($opts) + array('host' => 'localhost', 'mbox' => 'INBOX'); |
| | | |
| | | if ($_SERVER['argv'][1] == 'help') |
| | | { |
| | |
| | | // prompt for password |
| | | if (empty($args['pass'])) |
| | | { |
| | | $args['pass'] = prompt_silent("Password: "); |
| | | $args['pass'] = rcube_utils::prompt_silent("Password: "); |
| | | } |
| | | |
| | | // parse $host URL |
| | |
| | | require_once INSTALL_PATH . 'installer/rcube_install.php'; |
| | | |
| | | // get arguments |
| | | $opts = get_opt(array('v' => 'version')); |
| | | $opts = rcube_utils::get_opt(array('v' => 'version')); |
| | | |
| | | // ask user if no version is specified |
| | | if (!$opts['version']) { |
| | |
| | | |
| | | // Unset max. execution time limit, set to 120 seconds in iniset.php |
| | | @set_time_limit(0); |
| | | |
| | | /** |
| | | * Parse commandline arguments into a hash array |
| | | */ |
| | | function get_opt($aliases = array()) |
| | | { |
| | | $args = array(); |
| | | |
| | | for ($i=1; $i < count($_SERVER['argv']); $i++) { |
| | | $arg = $_SERVER['argv'][$i]; |
| | | $value = true; |
| | | $key = null; |
| | | |
| | | if ($arg[0] == '-') { |
| | | $key = preg_replace('/^-+/', '', $arg); |
| | | $sp = strpos($arg, '='); |
| | | if ($sp > 0) { |
| | | $key = substr($key, 0, $sp - 2); |
| | | $value = substr($arg, $sp+1); |
| | | } |
| | | else if (strlen($_SERVER['argv'][$i+1]) && $_SERVER['argv'][$i+1][0] != '-') { |
| | | $value = $_SERVER['argv'][++$i]; |
| | | } |
| | | |
| | | $args[$key] = is_string($value) ? preg_replace(array('/^["\']/', '/["\']$/'), '', $value) : $value; |
| | | } |
| | | else { |
| | | $args[] = $arg; |
| | | } |
| | | |
| | | if ($alias = $aliases[$key]) { |
| | | $args[$alias] = $args[$key]; |
| | | } |
| | | } |
| | | |
| | | return $args; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * from http://blogs.sitepoint.com/2009/05/01/interactive-cli-password-prompt-in-php/ |
| | | */ |
| | | function prompt_silent($prompt = "Password:") |
| | | { |
| | | if (preg_match('/^win/i', PHP_OS)) { |
| | | $vbscript = sys_get_temp_dir() . 'prompt_password.vbs'; |
| | | file_put_contents($vbscript, 'wscript.echo(InputBox("' . addslashes($prompt) . '", "", "password here"))'); |
| | | $command = "cscript //nologo " . escapeshellarg($vbscript); |
| | | $password = rtrim(shell_exec($command)); |
| | | unlink($vbscript); |
| | | return $password; |
| | | } |
| | | else { |
| | | $command = "/usr/bin/env bash -c 'echo OK'"; |
| | | if (rtrim(shell_exec($command)) !== 'OK') { |
| | | echo $prompt; |
| | | $pass = trim(fgets(STDIN)); |
| | | echo chr(8)."\r" . $prompt . str_repeat("*", strlen($pass))."\n"; |
| | | return $pass; |
| | | } |
| | | $command = "/usr/bin/env bash -c 'read -s -p \"" . addslashes($prompt) . "\" mypassword && echo \$mypassword'"; |
| | | $password = rtrim(shell_exec($command)); |
| | | echo "\n"; |
| | | return $password; |
| | | } |
| | | } |
| | | |
| | | ?> |
| | |
| | | { |
| | | return rcmail::get_instance()->output->future_expire_header($offset); |
| | | } |
| | | |
| | | function get_opt($aliases = array()) |
| | | { |
| | | return rcube_utils::get_opt($aliases); |
| | | } |
| | | |
| | | function prompt_silent($prompt = 'Password:') |
| | | { |
| | | return rcube_utils::prompt_silent($prompt); |
| | | } |
| | |
| | | return $as_array ? $arr : join(" ", $arr); |
| | | } |
| | | |
| | | /** |
| | | * Parse commandline arguments into a hash array |
| | | * |
| | | * @param array $aliases Argument alias names |
| | | * |
| | | * @return array Argument values hash |
| | | */ |
| | | public static function get_opt($aliases = array()) |
| | | { |
| | | $args = array(); |
| | | |
| | | for ($i=1; $i < count($_SERVER['argv']); $i++) { |
| | | $arg = $_SERVER['argv'][$i]; |
| | | $value = true; |
| | | $key = null; |
| | | |
| | | if ($arg[0] == '-') { |
| | | $key = preg_replace('/^-+/', '', $arg); |
| | | $sp = strpos($arg, '='); |
| | | if ($sp > 0) { |
| | | $key = substr($key, 0, $sp - 2); |
| | | $value = substr($arg, $sp+1); |
| | | } |
| | | else if (strlen($_SERVER['argv'][$i+1]) && $_SERVER['argv'][$i+1][0] != '-') { |
| | | $value = $_SERVER['argv'][++$i]; |
| | | } |
| | | |
| | | $args[$key] = is_string($value) ? preg_replace(array('/^["\']/', '/["\']$/'), '', $value) : $value; |
| | | } |
| | | else { |
| | | $args[] = $arg; |
| | | } |
| | | |
| | | if ($alias = $aliases[$key]) { |
| | | $args[$alias] = $args[$key]; |
| | | } |
| | | } |
| | | |
| | | return $args; |
| | | } |
| | | |
| | | /** |
| | | * Safe password prompt for command line |
| | | * from http://blogs.sitepoint.com/2009/05/01/interactive-cli-password-prompt-in-php/ |
| | | * |
| | | * @return string Password |
| | | */ |
| | | public static function prompt_silent($prompt = "Password:") |
| | | { |
| | | if (preg_match('/^win/i', PHP_OS)) { |
| | | $vbscript = sys_get_temp_dir() . 'prompt_password.vbs'; |
| | | $vbcontent = 'wscript.echo(InputBox("' . addslashes($prompt) . '", "", "password here"))'; |
| | | file_put_contents($vbscript, $vbcontent); |
| | | |
| | | $command = "cscript //nologo " . escapeshellarg($vbscript); |
| | | $password = rtrim(shell_exec($command)); |
| | | unlink($vbscript); |
| | | |
| | | return $password; |
| | | } |
| | | else { |
| | | $command = "/usr/bin/env bash -c 'echo OK'"; |
| | | if (rtrim(shell_exec($command)) !== 'OK') { |
| | | echo $prompt; |
| | | $pass = trim(fgets(STDIN)); |
| | | echo chr(8)."\r" . $prompt . str_repeat("*", strlen($pass))."\n"; |
| | | return $pass; |
| | | } |
| | | |
| | | $command = "/usr/bin/env bash -c 'read -s -p \"" . addslashes($prompt) . "\" mypassword && echo \$mypassword'"; |
| | | $password = rtrim(shell_exec($command)); |
| | | echo "\n"; |
| | | return $password; |
| | | } |
| | | } |
| | | } |