Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 32 additions & 2 deletions tinyfilemanager.php
Original file line number Diff line number Diff line change
Expand Up @@ -456,6 +456,24 @@ function getClientIP()

unset($p, $use_auth, $iconv_input_encoding, $use_highlightjs, $highlightjs_style);

$password_algo_names = array('argon2i' => 'Argon2i', 'argon2id' => 'Argon2id', '2y' => 'bcrypt');
$password_algos = array();
if (function_exists('password_algos')) {
// PHP 7.4+
$password_algos = password_algos();
} elseif (function_exists('password_hash')) {
// PHP 5.5+
$password_algos = array(PASSWORD_DEFAULT);
if (defined('PASSWORD_ARGON2I')) {
// PHP 7.2+
$password_algos[] = PASSWORD_ARGON2I;
}
if (defined('PASSWORD_ARGON2ID')) {
// PHP 7.3+
$password_algos[] = PASSWORD_ARGON2ID;
}
}

/*************************** ACTIONS ***************************/

// Handle all AJAX Request
Expand Down Expand Up @@ -574,8 +592,9 @@ function getClientIP()
}

// new password hash
if (isset($_POST['type']) && $_POST['type'] == "pwdhash") {
$res = isset($_POST['inputPassword2']) && !empty($_POST['inputPassword2']) ? password_hash($_POST['inputPassword2'], PASSWORD_DEFAULT) : '';
if (isset($_POST['type']) && $_POST['type'] == "pwdhash" && !empty($password_algos)) {
$algo = isset($_POST['inputPassword2Algo']) && in_array($_POST['inputPassword2Algo'], $password_algos) ? $_POST['inputPassword2Algo'] : PASSWORD_DEFAULT;
$res = isset($_POST['inputPassword2']) && !empty($_POST['inputPassword2']) ? password_hash($_POST['inputPassword2'], $algo) : '';
echo $res;
}

Expand Down Expand Up @@ -1694,6 +1713,16 @@ function getSelected($l)
<label for="inputPassword2" class="sr-only"><?php echo lng('Password') ?></label>
<input type="text" class="form-control btn-sm" id="inputPassword2" name="inputPassword2" placeholder="<?php echo lng('Password') ?>" required>
</div>
<div class="form-group mx-sm-3 mb-2">
<label for="inputPassword2Algo" class="sr-only"><?php echo lng('PasswordAlgo') ?></label>
<select class="form-control" id="inputPassword2Algo" name="inputPassword2Algo" placeholder="<?php echo lng('PasswordAlgo') ?>" required>
<?php
foreach ($password_algos as $idx => $password_algo) {
echo '<option value="' . $password_algo . '"' . ($idx ? '' : ' selected') . '>' . $password_algo_names[$password_algo] . '</option>';
}
?>
</select>
</div>
<button type="submit" class="btn btn-success btn-sm mb-2"><?php echo lng('Generate') ?></button>
</form>
<textarea class="form-control" rows="2" readonly id="js-pwd-result"></textarea>
Expand Down Expand Up @@ -5486,6 +5515,7 @@ function lng($txt)
$tr['en']['Login'] = 'Sign in';
$tr['en']['Username'] = 'Username';
$tr['en']['Password'] = 'Password';
$tr['en']['PasswordAlgo'] = 'Password Algorithm';
$tr['en']['Logout'] = 'Sign Out';
$tr['en']['Move'] = 'Move';
$tr['en']['Copy'] = 'Copy';
Expand Down