{$opt} = $options[$opt]; continue; } if (isset($options['e'])) { $env_k = 'TOTP_'.strtoupper($opt); $env_v = getenv($env_k); if ($env_v !== FALSE) { $config->{$opt} = $env_v; putenv($env_k); continue; } } if (!isset($config->{$opt})) $config->{$opt} = $config_default->{$opt}; } $config->secret = strtr($config->secret, [' ' => '']); if (!preg_match('/^[A-Z2-7]+$/i', $config->secret)) die("Base32 encoded secret required\n"); $totp = new TOTP(null, $config->secret, $config->period, $config->digest, $config->digits); while(true) { echo "Czas serwera: "; $now = new DateTime(); echo $now->format('Y-m-d H:i:s'); echo "\n"; echo "Podaj kod:\n"; $code = readline(); $verify_result = $totp->verify($code, null, $config->window); sleep($config->delay); if ($verify_result) { break; } else { echo "Zły kod\n"; echo "Spróbuj ponownie\n"; } } fclose($lockfile); $cmd = getenv('SSH_ORIGINAL_COMMAND'); if ($cmd !== FALSE) passthru($cmd); else passthru(getenv('SHELL').' -');