diff options
| author | Piotr Pawlow <pp@siedziba.pl> | 2017-03-19 22:08:31 +0100 |
|---|---|---|
| committer | Piotr Pawlow <pp@siedziba.pl> | 2017-03-19 22:08:31 +0100 |
| commit | ea14716333dc0729842ce07a574bb168a580d89b (patch) | |
| tree | 22cbb317676edf93afe3aef8923e516f02493404 /auth.php | |
| parent | cc9b6ce77c7f3bb0b592fca04120178f089a8e16 (diff) | |
Diffstat (limited to 'auth.php')
| -rw-r--r-- | auth.php | 28 |
1 files changed, 18 insertions, 10 deletions
@@ -14,20 +14,28 @@ $lockfile = fopen(__FILE__, 'r'); if ($lockfile === FALSE) die("Cannot open lock file\n"); if (!flock($lockfile, LOCK_EX)) die("Cannot acquire exclisive lock\n"); -$options = getopt("c:", [ - 'secret:', - 'period:', - 'window:', - 'digest:', - 'digits:', - 'delay:' -]); +$config_options = ['secret', 'period', 'window', 'digest', 'digits', 'delay']; +$options = getopt("c:e::", array_map(function($e){return "$e:";}, $config_options)); if (isset($options['secret'])) echo "!!! PODAWANIE SEKRETU JAKO ARGUMENT NIE JEST BEZPIECZNE !!!\n"; if (isset($options['c'])) $config = load_config($options['c']); else $config = new stdClass(); $config_default = load_config(__DIR__.'/config_default.json'); -foreach($config_default as $k => $v) if (!isset($config->{$k})) $config->{$k} = $v; -foreach($options as $k => $v) if ($k !== 'c') $config->{$k} = $v; +foreach($config_options as $opt) { + if (isset($options[$opt])) { + $config->{$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"); |
