- ID de l'analyse :
- 5c59d787-9647-4c1c-ba39-abd82833f861Terminée
- URL soumise :
- https://sji.sra.claroty.com/Redirigé
- Fin du rapport :
Liens : 0 trouvé(s)
Liens sortants identifiés à partir de la page
Variables JavaScript : 142 trouvée(s)
Les variables JavaScript globales chargées dans l'objet fenêtre d'une page sont des variables déclarées en dehors des fonctions et accessibles depuis n'importe quel endroit du code au sein du champ d'application actuel
Nom | Type |
---|---|
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
webpackChunksra | object |
clearImmediate | function |
setImmediate | function |
angular | object |
Zone | function |
__zone_symbol__Promise | function |
__zone_symbol__ZoneAwarePromise | function |
Messages de journal de console : 3 trouvé(s)
Messages consignés dans la console web
Type | Catégorie | Enregistrement |
---|---|---|
verbose | dom |
|
verbose | dom |
|
verbose | dom |
|
HTML
Le corps HTML de la page en données brutes
<!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>