salt); return self::FEVER_PATH . '/.key-' . $salt . '-' . $feverKey . '.txt'; } /** * Update the fever key of a user. * @return string|false the Fever key, or false if the update failed * @throws FreshRSS_Context_Exception */ public static function updateKey(string $username, string $passwordPlain): string|false { if (!self::checkFeverPath()) { return false; } self::deleteKey($username); $feverKey = strtolower(md5("{$username}:{$passwordPlain}")); $feverKeyPath = self::getKeyPath($feverKey); $result = file_put_contents($feverKeyPath, $username); if (is_int($result) && $result > 0) { return $feverKey; } Minz_Log::warning('Could not save Fever API credentials. Unknown error.', ADMIN_LOG); return false; } /** * Delete the Fever key of a user. * * @return bool true if the deletion succeeded, else false. * @throws FreshRSS_Context_Exception */ public static function deleteKey(string $username): bool { $userConfig = get_user_configuration($username); if ($userConfig === null) { return false; } $feverKey = $userConfig->feverKey; if (!ctype_xdigit($feverKey)) { return false; } $feverKeyPath = self::getKeyPath($feverKey); return @unlink($feverKeyPath); } }