- ID de exploración:
- 5c59d787-9647-4c1c-ba39-abd82833f861Finalizado
- URL enviada:
- https://sji.sra.claroty.com/Redireccionado
- Informe finalizado:
Enlaces: 0 encontrados
Los enlaces salientes identificados en la página
Variables JavaScript: 142 encontradas
Las variables JavaScript globales cargadas en el objeto de ventana de una página son variables declaradas fuera de las funciones y a las que se puede acceder desde cualquier lugar del código en el ámbito actual
Nombre | Tipo |
---|---|
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
webpackChunksra | object |
clearImmediate | function |
setImmediate | function |
angular | object |
Zone | function |
__zone_symbol__Promise | function |
__zone_symbol__ZoneAwarePromise | function |
Mensajes de registro de la consola: 3 encontrados
Mensajes registrados en la consola web
Tipo | Categoría | Registro |
---|---|---|
verbose | dom |
|
verbose | dom |
|
verbose | dom |
|
HTML
El cuerpo HTML sin procesar de la página
<!DOCTYPE html><html class="ng-scope"><head><style type="text/css">[uib-typeahead-popup].dropdown-menu{display:block;}</style><style type="text/css">.uib-time input{width:50px;}</style><style type="text/css">[uib-tooltip-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-popup].tooltip.right-bottom > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.right-bottom > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.right-bottom > .tooltip-arrow,[uib-popover-popup].popover.top-left > .arrow,[uib-popover-popup].popover.top-right > .arrow,[uib-popover-popup].popover.bottom-left > .arrow,[uib-popover-popup].popover.bottom-right > .arrow,[uib-popover-popup].popover.left-top > .arrow,[uib-popover-popup].popover.left-bottom > .arrow,[uib-popover-popup].popover.right-top > .arrow,[uib-popover-popup].popover.right-bottom > .arrow,[uib-popover-html-popup].popover.top-left > .arrow,[uib-popover-html-popup].popover.top-right > .arrow,[uib-popover-html-popup].popover.bottom-left > .arrow,[uib-popover-html-popup].popover.bottom-right > .arrow,[uib-popover-html-popup].popover.left-top > .arrow,[uib-popover-html-popup].popover.left-bottom > .arrow,[uib-popover-html-popup].popover.right-top > .arrow,[uib-popover-html-popup].popover.right-bottom > .arrow,[uib-popover-template-popup].popover.top-left > .arrow,[uib-popover-template-popup].popover.top-right > .arrow,[uib-popover-template-popup].popover.bottom-left > .arrow,[uib-popover-template-popup].popover.bottom-right > .arrow,[uib-popover-template-popup].popover.left-top > .arrow,[uib-popover-template-popup].popover.left-bottom > .arrow,[uib-popover-template-popup].popover.right-top > .arrow,[uib-popover-template-popup].popover.right-bottom > .arrow{top:auto;bottom:auto;left:auto;right:auto;margin:0;}[uib-popover-popup].popover,[uib-popover-html-popup].popover,[uib-popover-template-popup].popover{display:block !important;}</style><style type="text/css">.uib-datepicker-popup.dropdown-menu{display:block;float:none;margin:0;}.uib-button-bar{padding:10px 9px 2px;}</style><style type="text/css">.uib-position-measure{display:block !important;visibility:hidden !important;position:absolute !important;top:-9999px !important;left:-9999px !important;}.uib-position-scrollbar-measure{position:absolute !important;top:-9999px !important;width:50px !important;height:50px !important;overflow:scroll !important;}.uib-position-body-scrollbar-measure{overflow:scroll !important;}</style><style type="text/css">.uib-datepicker .uib-title{width:100%;}.uib-day button,.uib-month button,.uib-year button{min-width:100%;}.uib-left,.uib-right{width:100%}</style><style type="text/css">.ng-animate.item:not(.left):not(.right){-webkit-transition:0s ease-in-out left;transition:0s ease-in-out left}</style><style>@charset "UTF-8";[ng\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}</style><link id="favicon" rel="shortcut icon" href="/sra/brand_static/favicon.ico" type="image/x-icon"><link rel="stylesheet" href="/static/css/bootstrap.min.css"><link rel="stylesheet" href="/static/css/font-awesome.min.css"><link rel="stylesheet" href="/static/css/v4-shims.css"><link rel="stylesheet" href="/static/css/angular-toastr.css"><link rel="stylesheet" href="/static/css/angular-toggle-switch-bootstrap-3.css"><link rel="stylesheet" href="/static/css/primeicons.css"><link rel="stylesheet" href="/static/css/theme.css"><link rel="stylesheet" href="/static/css/primeng.min.css"><link rel="stylesheet" href="/static/css/easymde.min.css"><link rel="stylesheet" href="/static/css/app.css"><meta name="robots" content="noindex, nofollow"><meta content="IjZjNDUzOWI1MDgzNWUxNjAwOWNiMmFkNzA2MTE2ZGJmZGViYTYyZWQi.Z03qig.huFuHoaUNfS1wteEc4PNmgGMWBs"><meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"><meta http-equiv="Pragma" content="no-cache"><meta http-equiv="Expires" content="0"><script defer="defer" src="../static/runtime.97a9fa11b1de0e6584d3.bundle.js"></script><script defer="defer" src="../static/vendor.b71ca967a32571cde5bb.bundle.js"></script><script defer="defer" src="../static/polyfills.887091254e0b87cc5389.bundle.js"></script><script defer="defer" src="../static/main.6cd67a080b805c54e8a8.bundle.js"></script><title>Secure Remote Access</title><style>[_nghost-c0] button.heading.editor {
position: relative;
}
[_nghost-c0] button.heading.editor:before {
position: absolute;
left: 4px;
top: 5px;
}
[_nghost-c0] button.heading.editor.h1:before {
content: "H1";
font-size: 18px;
}
[_nghost-c0] button.heading.editor.h2:before {
content: "H2";
font-size: 17px;
}
[_nghost-c0] button.heading.editor.h3:before {
content: "H3";
font-size: 16px;
}
[_nghost-c0] button.heading.editor.h4:before {
content: "H4";
font-size: 15px;
}
[_nghost-c0] button.heading.editor.h5:before {
content: "H5";
font-size: 14px;
}
[_nghost-c0] button.heading.editor.h6:before {
content: "H6";
font-size: 13px;
}
.previewonly[_nghost-c0] .EasyMDEContainer .CodeMirror {
border: unset !important;
}
.previewonly[_nghost-c0] .editor-preview {
background: white !important;
}
.previewonly[_nghost-c0] .editor-preview pre {
background-color: unset !important;
border: unset !important;
}
.previewonly[_nghost-c0] .editor-preview code {
background-color: unset !important;
border: unset !important;
}
[_nghost-c0] .editor-preview:empty:not(:focus):before {
content: "No message configured.";
}</style><style>.d-flex[_ngcontent-c1] {
flex-direction: row;
justify-content: space-between;
}
button[_ngcontent-c1] {
outline: none;
border: none;
background: none;
}</style></head><body style="background-color: #e6e9f2;"><!-- ngIf: !isUnsupportedBrowserMessageDismissed && user_info.is_browser_supported==false --><!-- ngIf: is_emc --><licensebanner ng-if="is_emc" class="ng-scope" _nghost-c1="" ng-version="7.2.3" style=""><!--bindings={
"ng-reflect-ng-for-of": ""
}--></licensebanner><!-- end ngIf: is_emc --><!-- ngIf: !is_installation_setup() --><div style="background-color: #367BB5;" class="container-fluid ng-scope" ng-if="!is_installation_setup()"><div class="col-md-12"><!-- ngInclude: '/static/top.html' --><div id="top_html_div" ng-include="'/static/top.html'" class="col-md-12 ng-scope" style=""><div class="row top-row ng-scope">
<div class="col-md-4 white mt-m mb-m" style="padding: unset;">
<div class="di-f">
<img src="/sra/brand_static/logo.png" height="35px">
<span class="pl-s" style="font-size: 14px;">Secure Remote Access</span>
</div>
</div>
<div class="col-md-4 white ta-c di fs-s">
<!-- ngIf: is_community_inited && is_emc && local_site --><span ng-if="is_community_inited && is_emc && local_site" class="ng-binding ng-scope">Secure Access Center: SRA-SAC-SJI</span><!-- end ngIf: is_community_inited && is_emc && local_site -->
<!-- ngIf: is_community_inited && is_full_site && local_site -->
</div>
<div class="col-md-4">
<!-- ngIf: user_info.logged_in -->
<!-- ngIf: user_info.logged_in && user_info.is_operator && filer_status.disk_free_warning -->
<!-- ngIf: user_info.logged_in && user_info.is_admin && ['expiring', 'expired'].includes(monitoring_status.app_tunnel_expiration_state) -->
<br>
<br>
<div>
<!-- ngIf: user_info.logged_in -->
<!-- ngIf: user_info.logged_in && user_info.is_operator && site_info.length > 1 -->
<!-- ngIf: ha_status.enabled && user_info.logged_in && user_info.is_operator -->
</div>
</div>
</div>
</div></div></div><!-- end ngIf: !is_installation_setup() --><div ng-controller="EventsCtrl" class="ng-scope"></div><div id="sso" style="display: none;"></div><div id="saml" style="display: none;"></div><div id="vpn_saml" style="display: none;"></div><div id="saml_login_text" style="display: none;">SAML</div><div id="saml_enabled" style="display: none;">0</div><div id="vpn_otp_login" style="display: none;">False</div><div id="oidc_enabled" style="display: none;">False</div><div id="oidc_data" style="display: none;"></div><div id="oidc_clue" style="display: none;"></div><div id="oidc_error" style="display: none;"></div><div id="community_info" style="display: none;">{"role": "emc", "inited": true, "name": "SRA-SAC-SJI", "is_primary": true}</div><div id="token_login_enabled" style="display: none;">False</div><div id="instance_uuid" style="display: none;">b11e5a2b-f0a1-b5bd-6fb2-8e1cb7884d37</div><div class="row page-content" style="background-color: #e6e9f2; padding-right: 15px; margin: 0;"><!-- ngIf: show_side_bar --><div ng-class="{'col-md-10': show_side_bar,
'col-md-12': !show_side_bar}" class="col-md-12"><!-- ngView: --><div ng-view="" class="ng-scope" style=""><div id="login_form" style="width: 100%; text-align: center;" class="ng-scope">
<div ng-show="state=='login'" class="panel">
<div class="panel-body" style="min-width: 550px">
<div class="form_container panel-body">
<form class="login_form_container ng-pristine ng-valid ng-valid-minlength ng-valid-maxlength">
<div ng-show="is_community_inited && is_primary">
<p class="login-title">Welcome Back</p>
<div style="width: 100%; display: inline-flex; justify-content: center; flex-direction: row; align-items: center;">
<!-- ngIf: !loginWithCreds && !loginWithToken -->
<!-- ngIf: loginWithCreds && !loginWithToken --><div ng-if="loginWithCreds && !loginWithToken" style="width: 100%;" class="ng-scope">
<div ng-show="vpn_otp_login && state==='login'" class="ng-hide">
<div style="padding-right: 15px; text-align: center;">
You are required to perform OTP authentication.<br>
Please retype your credentials
</div>
</div>
<!-- ngInclude: 'credentials.html' --><div ng-include="'credentials.html'" ng-show="!otp" class="ng-scope">
<div class="field ng-scope">
<div class="field_label">Username</div>
</div>
<div class="field ng-scope">
<input type="text" id="username" ng-model="$parent.$parent.username" ng-change="fadeErrorMessage()" ng-init="$parent.$parent.username = '' " style="width: 100%;" autocomplete="off" class="ng-pristine ng-untouched ng-valid ng-empty">
</div>
<div class="field ng-scope">
<div class="field_label">Password</div>
</div>
<div class="field ng-scope">
<input type="password" id="password" ng-model="$parent.$parent.password" ng-change="fadeErrorMessage()" ng-init="$parent.$parent.password = ''" style="width: 100%;" class="ng-pristine ng-untouched ng-valid ng-empty">
</div>
</div>
<!-- ngInclude: 'otp.html' --><div ng-include="'otp.html'" ng-show="otp" class="ng-scope ng-hide">
<div class="field ng-scope">
<div class="field_label">One time password</div>
</div>
<div class="field ng-scope">
<input type="text" ng-model="$parent.$parent.otp_val" minlength="6" maxlength="6" id="otp_val" ng-change="fadeErrorMessage()" style="width: 100%;" class="ng-pristine ng-untouched ng-valid ng-empty ng-valid-minlength ng-valid-maxlength">
</div>
</div>
<input type="submit" class="btn btn-primary login_btn" ng-click="do_login()" href="" ng-disabled="username == '' || password == ''" value="Login" disabled="disabled">
<div class="divider ng-hide" ng-show="!is_emc && token_login_enabled"><span>OR</span></div>
<a class="link_login ng-hide" ng-show="!is_emc && token_login_enabled" ng-click="toggleLoginWithToken()">Login with One-Time Token</a>
<div class="divider ng-hide" ng-show="saml_enabled || oidc_enabled"><span>OR</span></div>
<!-- ngRepeat: inverted in [true] --><!-- ngInclude: 'idpLogin.html' --><div ng-include="'idpLogin.html'" ng-repeat="inverted in [true]" class="ng-scope">
<div class="flex-col ng-scope">
<input type="button" class="btn btn-primary login_btn ng-hide inverted" ng-show="saml_enabled" ng-click="start_saml_login()" value="Login with [object Object]" ng-class="{'inverted': inverted}">
<input type="button" class="btn btn-primary login_btn ng-hide inverted" ng-show="oidc_enabled" ng-click="start_oidc_login()" value="Login with " ng-class="{'inverted': inverted}">
</div>
</div><!-- end ngRepeat: inverted in [true] -->
</div><!-- end ngIf: loginWithCreds && !loginWithToken -->
<!-- ngIf: !loginWithCreds && token_login_enabled && loginWithToken -->
</div>
</div>
<!-- site join -->
<div ng-show="!is_community_inited && is_full_site && is_primary" class="ng-hide">
<p class="login-title">Connect Site to SAC</p>
<div class="field">
<div class="field_label">
Site Name
<i class="fa fa-info-circle" tooltip-placement="bottom" uib-tooltip-html="'<div>This name will always appear at the top of every page.</div> <div>Use only: A-Z, a-z, 0-9, _, -</div>'"></i>
</div>
</div>
<div class="field">
<input type="text" ng-model="community_name" minlength="1" ng-change="fadeErrorMessage()" style="width: 100%;" class="ng-pristine ng-untouched ng-valid ng-not-empty ng-valid-minlength">
</div>
<div class="field">
<div class="field_label">
SAC Address
<i class="fa fa-info-circle" tooltip-placement="bottom" uib-tooltip="Hostname or Physical IP"></i>
</div>
</div>
<div class="field">
<input type="text" ng-model="sac_address" minlength="1" ng-change="fadeErrorMessage()" style="width: 100%;" class="ng-pristine ng-untouched ng-valid ng-empty ng-valid-minlength">
</div>
<div class="field">
<div class="field_label">
SAC Access Key
</div>
</div>
<div class="field">
<input type="text" ng-model="access_key" minlength="1" ng-change="fadeErrorMessage()" style="width: 100%;" class="ng-pristine ng-untouched ng-valid ng-empty ng-valid-minlength">
</div>
<input type="button" class="btn btn-primary login_btn" ng-click="join_community()" value="Connect" ng-disabled="!community_name || !access_key || !sac_address || working" disabled="disabled">
<div style="font-size: 12px; color: gray">
After connecting the Site to SAC, you will continue to the Site’s login
</div>
</div>
<!-- sac init -->
<div ng-show="!is_community_inited && is_emc && is_primary" class="ng-hide">
<p class="login-title ng-binding">Initialize SAC</p>
<div class="field">
<div class="field_label ng-binding">
SAC Name
<i class="fa fa-info-circle" tooltip-placement="bottom" uib-tooltip-html="'<div>This name will always appear at the top of every page.</div> <div>Use only: A-Z, a-z, 0-9, _, -</div>'"></i>
</div>
</div>
<div class="field">
<input type="text" ng-model="community_name" minlength="1" ng-change="fadeErrorMessage()" style="width: 100%;" class="ng-pristine ng-untouched ng-valid ng-not-empty ng-valid-minlength">
</div>
<div class="field">
<div class="field_label ng-binding">
SAC Access Key
</div>
</div>
<div class="field">
<input type="text" ng-model="access_key" minlength="1" ng-change="fadeErrorMessage()" style="width: 100%;" class="ng-pristine ng-untouched ng-valid ng-empty ng-valid-minlength">
</div>
<input type="submit" class="btn btn-primary login_btn" ng-click="initialize_community()" value="Initialize" ng-disabled="!community_name || !access_key || working" disabled="disabled">
<div style="font-size: 12px; color: gray" class="ng-binding">
After initializing SAC you will<br>continue to the login page
</div>
</div>
<!-- join primary site or sac -->
<div ng-show="!is_primary" class="ng-hide">
<p class="login-title ng-binding"></p>
<div ng-show="!is_community_inited" class="ng-hide">
<div class="field">
<div class="field_label ng-binding">
<i class="fa fa-info-circle" tooltip-placement="bottom" uib-tooltip-html="'<div>This is an internal unique name used for the Secondary SAC.</div> <div>Use only: A-Z, a-z, 0-9, _, -</div>'"></i>
</div>
</div>
<div class="field">
<input type="text" ng-model="community_name" minlength="1" ng-change="fadeErrorMessage()" style="width: 100%;" class="ng-pristine ng-untouched ng-valid ng-not-empty ng-valid-minlength">
</div>
<div class="field">
<div class="field_label ng-binding">
</div>
</div>
<div class="field">
<input type="text" ng-model="address" minlength="1" ng-change="fadeErrorMessage()" style="width: 100%;" class="ng-pristine ng-untouched ng-valid ng-empty ng-valid-minlength">
</div>
<div class="field">
<div class="field_label">
SAC Access Key
</div>
</div>
<div class="field">
<input type="text" ng-model="access_key" minlength="1" ng-change="fadeErrorMessage()" style="width: 100%;" class="ng-pristine ng-untouched ng-valid ng-empty ng-valid-minlength">
</div>
</div>
<div ng-show="is_emc && is_community_inited">
The secondary SAC is already connected to the primary SAC.<br>
Click "Connect" to join the remaining sites.
</div>
<input type="submit" class="btn btn-primary login_btn" ng-click="join_primary()" value="Connect" ng-disabled="working || ((!community_name || !access_key || !address) && !(is_community_inited && is_emc))">
</div>
<i id="login_loading" class="glyphicon glyphicon-refresh rotate" hidden="true" style="margin-top: 20px; display: none;"></i>
<div id="db_syncing" style="font-size: 12px; color: gray; display: none;">
Please wait as this may take a few minutes...
</div>
<div style="margin-top: 15px">
<!-- ngIf: !working && !is_community_inited -->
</div>
</form>
<br>
<div ng-show="success_message" class="success_message_container ng-hide">
<div class="alert alert-success" id="success_message">
<a href="" class="close" ng-click="success_message=''" aria-label="close">×</a>
<span style="white-space: pre-line" class="ng-binding"></span>
</div>
</div>
<div ng-show="error_message" class="error_message_container ng-hide">
<div class="alert alert-danger" id="error_message">
<a href="" class="close" ng-click="error_message=''" aria-label="close">×</a>
<span style="white-space: pre-line" class="ng-binding"></span>
</div>
</div>
<div class="eula" ng-show="is_community_inited">
<span>By logging in, you agree to our</span>
<a href="/static/files/eula.pdf" download="Claroty User Agreement.pdf">User Agreement</a>
</div>
<div class="eula-divider" ng-style="has_motd ? {width: '80%'} : {}"></div>
<div class="motd-wrapper" ng-style="has_motd ? {maxWidth: '900px'} : {}">
<motdeditor preview-only="true" (motd-changed)="motd_changed($event)" _nghost-c0="" ng-version="7.2.3" class="previewonly"><textarea _ngcontent-c0="" hidden=""></textarea></motdeditor>
</div>
</div>
</div>
</div>
<div ng-show="state=='change_password'" style="display: inline-block; min-width: 15%;" class="panel ng-hide" ng-keyup="$event.keyCode === 13 && do_login()">
<div class="panel">
<div class="panel-body ng-binding" style="width: 500px">
<h3>You are required to change your password</h3>
<h3 ng-hide="is_emc" class="ng-hide">Please logon to the secure center to change your password</h3>
<!-- ngIf: is_emc --><table ng-if="is_emc" style="width: 100%;" class="ng-scope">
<tbody><tr>
<td style="padding-right: 15px; text-align: left;">Password</td>
</tr>
<tr>
<td>
<input type="password" ng-model="$parent.new_password" ng-change="fadeErrorMessage()" ng-init="new_password=''" style="width: 100%;" class="ng-pristine ng-untouched ng-valid ng-empty">
</td>
</tr>
<tr>
<td style="padding-right: 15px; padding-top: 15px; text-align: left;">Confirm Password</td>
</tr>
<tr>
<td>
<input type="password" ng-model="$parent.new_password_confirm" ng-change="fadeErrorMessage()" ng-init="new_password_confirm=''" style="width: 100%;" class="ng-pristine ng-untouched ng-valid ng-empty">
</td>
</tr>
<tr>
<td style="text-align: center; padding-top: 15px;">
<div style="float: right;">
<input type="submit" class="btn btn-primary" ng-click="do_login()" href="" ng-disabled="username == ''" value="Login" disabled="disabled">
</div>
</td>
</tr>
</tbody></table><!-- end ngIf: is_emc -->
<div ng-show="error_message" class="error_message_container ng-hide">
<div class="alert alert-danger" id="error_message">
<a href="" class="close" data-dismiss="alert" aria-label="close">×</a>
<span style="white-space: pre-line" class="ng-binding"></span>
</div>
</div>
</div>
</div>
</div>
<div ng-show="state=='otp_initial'" class="ng-hide">
<div class="col-sm-8 col-sm-offset-2 barcode_container panel">
<div class="panel-body" style="min-width: 550px">
<h3>The site administrator has enabled a policy to enforce two factor authentication.</h3> <br>
<div class="col-sm-6 align-left">
<p>
Please scan this code using a TOTP compliant client:
</p><li><a href="" ng-click="open_app_link('android')">Android</a></li>
<li><a href="" ng-click="open_app_link('iphone')">iPhone</a></li>
<li><a href="" ng-click="open_app_link('windows')">Windows phone</a></li>
<br>
<strong>This will not be shown again without administrator intervention.</strong><br>
<strong>Download the application to your phone before revealing the barcode.</strong><br><br>
<p></p>
<a href="" type="submit" ng-click="open_explanation_video()">What is TOTP? (video)</a><br>
<a href="" type="submit" ng-click="open_explanation_article()">What is TOTP? (article)</a>
</div>
<div class="col-sm-6">
<img ng-show="show_image" style="width: 300px; height: 300px;" class="ng-hide"><br>
<div ng-show="!show_image" style="width: 300px; height: 300px; border: 1px solid black; text-align: center; line-height: 150px;">
<input type="submit" class="btn btn-primary" ng-click="show_barcode()" value="Show me the barcode">
</div>
<div style="text-align: left;">
<label>After scanning the barcode in the application, Enter the displayed one time
password</label>
<form class="ng-pristine ng-valid ng-valid-minlength ng-valid-maxlength">
<input type="text" name="otp_val" ng-model="otp_val" minlength="6" maxlength="6" placeholder="One time password" class="ng-pristine ng-untouched ng-valid ng-empty ng-valid-minlength ng-valid-maxlength">
<input type="submit" class="btn btn-primary" ng-click="do_login()" value="Login">
</form>
<div ng-show="error_message" class="ng-hide">
<div class="alert alert-danger" id="error_message">
<a href="" class="close" data-dismiss="alert" aria-label="close">×</a>
<span style="white-space: pre-line" class="ng-binding"></span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div ng-show="state=='vpn_saml'" style="display: inline-block; min-width: 15%;" class="panel ng-hide">
<div class="panel-body">
<h3>SAML login is completed. You can close this window now.</h3> <br>
</div>
</div>
<div ng-show="state=='vpn_otp_login_success'" style="display: inline-block; min-width: 15%;" class="panel ng-hide">
<div class="panel-body">
<h3>OTP authentication is completed. You can close this window now.</h3> <br>
</div>
</div>
</div>
<script type="text/ng-template" id="credentials.html" class="ng-scope">
<div class="field">
<div class="field_label">Username</div>
</div>
<div class="field">
<input type="text" id="username" ng-model="$parent.$parent.username" ng-change="fadeErrorMessage()"
ng-init="$parent.$parent.username = '' "
style="width: 100%;" autocomplete="off">
</div>
<div class="field">
<div class="field_label">Password</div>
</div>
<div class="field">
<input type="password" id="password" ng-model="$parent.$parent.password" ng-change="fadeErrorMessage()"
ng-init="$parent.$parent.password = ''"
style="width: 100%;">
</div>
</script>
<script type="text/ng-template" id="idpLogin.html" class="ng-scope">
<div class="flex-col">
<input type="button"
class="btn btn-primary login_btn"
ng-show="saml_enabled"
ng-click="start_saml_login()"
value="Login with {{ saml_login_text }}"
ng-class="{'inverted': inverted}"/>
<input type="button"
class="btn btn-primary login_btn"
ng-show="oidc_enabled"
ng-click="start_oidc_login()"
value="Login with {{ oidcData.login_button_text }}"
ng-class="{'inverted': inverted}"/>
</div>
</script>
<script type="text/ng-template" id="otp.html" class="ng-scope">
<div class="field">
<div class="field_label">One time password</div>
</div>
<div class="field">
<input type="text"
ng-model="$parent.$parent.otp_val"
minlength="6"
maxlength="6"
id="otp_val"
ng-change="fadeErrorMessage()"
style="width: 100%;">
</div>
</script>
<script type="text/ng-template" id="token.html" class="ng-scope">
<div class="field">
<div class="field_label">One-Time Token</div>
</div>
<div class="field">
<input type="password" id="token" ng-model="$parent.$parent.token" ng-change="fadeErrorMessage()"
ng-init="$parent.$parent.token = ''"
style="width: 100%;">
</div>
</script>
</div></div></div></body></html>