Skip to content

TOTP icon not visible despite OTP form being detected on TornadoVPS #2947

@koitsu

Description

@koitsu

Have you searched for an existing issue?

  • Yes, I tried searching and reviewed the pinned issues

Brief Summary

On TornadoVPS with 2FA enabled, KPXC does the right thing for login and password fields. However, TOTP field does not show an icon. Right click -> Fill TOTP works fine, as does the global shortcut.

Closest issue I can find to this is #2802 except I do not see "Error: TOTP field found but it is not valid".

After enabling debug logging in the extension and toggling Verbose level logging in the Console, all I see is this:

global.js:186 [Debug observer-helper.js:231] KeePassXC-Browser - Input fields found:
global.js:189 [input#otp.form-control]
global.js:186 [Debug observer-helper.js:231] KeePassXC-Browser - Input fields found:
global.js:189 [input#otp.form-control]0: input#otp.form-controllength: 1[[Prototype]]: Array(0)

Actual HTML for the TOTP page is simple. I've XXX'd out the CSRF token for my safety:

<html dir="ltr" lang="en" xml:lang="en"><head>
        <meta http-equiv="content-type" content="text/html">
        <meta charset="UTF-8">
        <title>Log In | Tornado VPS</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta name="keywords" content="Xen linux netbsd centos debian fedora ubuntu freebsd hosting">
        <meta name="description" content="Tornado VPS Xen VPS hosting: Low cost virtual servers since 2005.  Hosting for the technically adept.  Linux, FreeBSD, and NetBSD supported.">
        <link rel="shortcut icon" href="/app/views/client/bootstrap/images/favicon.ico">

        <link href="/app/views/client/bootstrap/css/application.min.css" rel="stylesheet" type="text/css">
                <link href="/client/theme/theme.css?dir=" rel="stylesheet" type="text/css" media="screen">
                <link href="/app/views/client/bootstrap/css/font-awesome.min.css" rel="stylesheet" type="text/css">

        <script type="text/javascript" src="/app/views/client/bootstrap/javascript/jquery.min.js"></script>
        <!--[if lt IE 10]><script type="text/javascript" src="/app/views/client/bootstrap/javascript/history/json2.js"></script><![endif]-->
        <script type="text/javascript" src="/app/views/client/bootstrap/javascript/history/history.adapter.jquery.js"></script>
        <script type="text/javascript" src="/app/views/client/bootstrap/javascript/history/history.js"></script>
        <!--[if lt IE 10]><script type="text/javascript" src="/app/views/client/bootstrap/javascript/history/history.html4.js"></script><![endif]-->
        <script type="text/javascript" src="/app/views/client/bootstrap/javascript/app.min.js?v=16bd99c5b2aaadf269769c059ef258e6f5db0d2c62a0e1255939be81313dac17"></script>

        
        <!--[if lt IE 9]>
            <script src="/app/views/client/bootstrap/javascript/html5shiv.js" type="text/javascript"></script>
            <script src="/app/views/client/bootstrap/javascript/respond.min.js" type="text/javascript"></script>
        <![endif]-->
        		<link href="/prgmr/prgmr.css" rel="stylesheet" type="text/css">
    </head>
    <body style="">
                        
        <!-- Begin Content -->
        <main class="container">
            <div class="row login">
                
                <div class="col-md-4 col-sm-6 col-md-offset-1">
                    <h2><i class="fa fa-lock"></i> Tornado VPS</h2>
                    <h4>Log In</h4>
                    <p>Please enter your One Time Password.</p>
                    <hr>
                </div>
                <div class="col-md-4 col-sm-6 col-md-offset-1">
                    <div class="panel panel-blesta">
                        <div class="panel-body">
                            
                            <form method="post" action="/client/login/otp" class="disable-on-submit">
<input type="hidden" name="_csrf_token" value="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX">
                            <fieldset>
                                <div class="form-group">
                                    <label for="otp">One Time Password</label>
<input type="text" name="otp" id="otp" class="form-control" placeholder="One Time Password">
                                </div>
                                <button type="submit" class="btn btn-success btn-block"><i class="fa fa-sign-in"></i> Log In</button>
                                <input type="submit" name="login" value="" class="hidden" hidefocus="true">
                            </fieldset>
                            </form>
                        </div>
                    </div>
                </div>

            </div>
        </main>
        <footer class="footer text-center">
            <div class="container-fluid">
                <div class="sr-only">
                    <span><a href="/client/login">Log in</a></span>
                    <span><a href="/order/main/index/registrar">Sign up</a></span>
                    <span><a href="/order">Pricing</a></span>
                </div>
                <ul class="nav">
                    <li><a href="/contact">Contact Us</a></li>
                    <li><a href="/aup">Acceptable Use Policy</a></li>
                    <li><a href="/privacy">Privacy Policy</a></li>

                    <li><a href="/about"> About Us</a></li>
                    <li><a href="/documentation">Documentation</a></li>
                    <li><a href="/blog">Blog</a></li>
                    <li><a href="/ssh-public-keys.txt">Server Public Keys</a></li>
                    <li><a href="/accessibility">Accessibility</a></li>
                </ul>
        </div>
            <p class="copyright">©2017-2022 Tornado VPS, Inc. All rights reserved.</p>
            <hr>
            <p class="powered-by">Powered by <a href="http://www.blesta.com/">Blesta</a>, © Phillips Data, Inc.</p>
        </footer>
        <div class="modal fade" id="global_modal" tabindex="-1" role="dialog" aria-hidden="true">
            <div class="modal-dialog">
                <div class="modal-content">
                    <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
                        <h4 class="global_modal_title"></h4>
                    </div>
                    <div class="modal-body"><i class="fa fa-spinner fa-spin"></i></div>
                    <div class="modal-footer"></div>
                </div>
            </div>
        </div>
        
                <script type="text/javascript">
    $(document).ready(function() {
        $("#login_username").focus();
    });
</script>
            

</body></html>

Expected Versus Actual Behavior

No response

Steps to Reproduce

  1. Visit https://tornadovps.com/client/login
  2. Log in with username/password
  3. When prompted for TOTP, witness the problem

KeePassXC-Browser Debug Information

KeePassXC - 2.7.12
KeePassXC-Browser - 1.10.1
Operating system: Win64
Browser: Chrome/Chromium 147.0.0.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions