whois.handle: PIPEX-DIAL-STATIC
whois.name: PIPEX dial single static
whois.cidrs: 212.103.232.0/24
whois.created: 2004-02-26T00:00:00.000000
whois.updated: 2014-04-08T00:00:00.000000
whois.handle: ORG-DCST2-RIPE
whois.name: WN CORPORATE SERVICES TRADING LIMITED
whois.address: WAVENET GROUP, SECOND FLOOR ONE CENTRAL BOULEVARD, CENTRAL\nB90 8BG\nSOLIHULL\nUNITED KINGDOM
whois.handle: AR62588-RIPE
whois.name: Abuse-C Role
whois.email: abuse@wavenet.co.uk
whois.handle: HA4589-RIPE
whois.name: HM655-RIPE
whois.email: ipreq@daisygroupplc.com
services.protocol: HTTP
services.transport_protocol: TCP
services.scan_time: 2025-07-28T08:31:44.116181
services.banner: HTTP/1.1 400 Bad Request
  Content-Type: text/html
  Content-Length: 183
  Connection: close
  Date:  <REDACTED>
  Server: Server
  
services.version_selected: TLSv1_3
services.cipher_selected: TLS_CHACHA20_POLY1305_SHA256
services.ja4s: t130200_1303_a56c5b993250
services.version: TLSv1_3
services.ja4s: t130200_1303_a56c5b993250
services.version: TLSv1_2
services.ja4s: t120200_cca8_344b4dce5a52
services.names: www.draytek.com
services.issuer_dn: C=TW, ST=HsinChu, L=HuKou, O=DrayTek Corp., OU=DrayTek Support, CN=Vigor Router
services.common_name: Vigor Router
services.country: TW
services.locality: HuKou
services.province: HsinChu
services.organization: DrayTek Corp.
services.organizational_unit: DrayTek Support
services.subject_dn: C=TW, ST=HsinChu, L=HuKou, O=DrayTek Corp., OU=DrayTek Support, CN=Vigor Router
services.common_name: Vigor Router
services.country: TW
services.locality: HuKou
services.province: HsinChu
services.organization: DrayTek Corp.
services.organizational_unit: DrayTek Support
services.scan_time: 2025-07-23T04:09:37.273781
services.path: /
services.endpoint_type: HTTP
services.scan_time: 2025-07-28T08:31:44.116181
services.uri: https://212.103.232.116/
services.protocol: HTTP/1.1
services.status_reason: Bad Request
services.key: Server
services.headers: Server
services.key: Content-Type
services.headers: text/html
services.key: Date
services.headers: <REDACTED>
services.key: Connection
services.headers: close
services.key: Content-Length
services.headers: 183
services.html_tags: <title>400 - Bad Request</title>
services.body: <?xml version="1.0" encoding="iso-8859-1"?>
  <!DOCTYPE html>
  <html lang="en">
   <head>
    <title>400 - Bad Request</title>
   </head>
   <body>
    <h1>400 - Bad Request</h1>
   </body>
  </html>
  
services.body_hash_sha1: sha1:a900103a19163dc725b0dc0e1e369a416b920a32
services.supported_versions: HTTP/1.1
services.protocol: L2TP
services.transport_protocol: UDP
services.scan_time: 2025-07-28T08:35:47.997362
services.source: OSI_APPLICATION_LAYER
services.part: a
services.vendor: DrayTek
services.product: Vigor Router
services.cpe: cpe:2.3:a:draytek:vigor_router:*:*:*:*:*:*:*:*
services.hostname: OPT-SOTON
services.vendor_name: DrayTek, l2tp
services.protocol: PPTP
services.transport_protocol: TCP
services.scan_time: 2025-07-27T18:36:27.706636
services.banner: DrayTek Vigor 1.0 0.1
services.source: OSI_APPLICATION_LAYER
services.part: a
services.vendor: DrayTek
services.product: Vigor Router
services.version: 1.0_0.1
services.cpe: cpe:2.3:a:draytek:vigor_router:1.0_0.1:*:*:*:*:*:*:*
services.meaning: Successful channel establishment
services.meaning: No general error
services.meaning: Synchronous or asynchronous framing supported
services.meaning: Digital or analog access supported
services.hostname: Vigor
services.vendor: DrayTek
services.protocol: HTTP
services.transport_protocol: TCP
services.scan_time: 2025-07-28T12:19:47.759114
services.banner: HTTP/1.1 200 OK
  Content-Security-Policy: default-src 'self';frame-ancestors 'self';form-action 'self';script-src 'self' 'nonce-draytek';style-src 'self' 'nonce-draytek';img-src 'self' data:;connect-src 'self' *.draytek.com *.draytek.com.tw
  Permissions-Policy: geolocation=(),midi=(),sync-xhr=(),microphone=(),camera=(),magnetometer=(),gyroscope=(),fullscreen=(self),payment=()
  Content-Type: text/html
  X-Content-Type-Options: nosniff
  X-XSS-Protection: 1; mode=block
  X-Frame-Options: SAMEORIGIN
  Strict-Transport-Security: max-age=31536000; includeSubdomains
  Expires: Mon, 28 Jul 2025 12:19:47 GMT
  Cache-Control: no-cache, no-store, must-revalidate
  Vary: Accept-Encoding
  Content-Encoding: gzip
  Content-Length: 12459
  Date:  <REDACTED>
  Server: Server
  
services.version_selected: TLSv1_3
services.cipher_selected: TLS_CHACHA20_POLY1305_SHA256
services.ja4s: t130200_1303_a56c5b993250
services.version: TLSv1_3
services.ja4s: t130200_1303_a56c5b993250
services.version: TLSv1_2
services.ja4s: t120200_cca8_344b4dce5a52
services.names: www.draytek.com
services.issuer_dn: C=TW, ST=HsinChu, L=HuKou, O=DrayTek Corp., OU=DrayTek Support, CN=Vigor Router
services.common_name: Vigor Router
services.country: TW
services.locality: HuKou
services.province: HsinChu
services.organization: DrayTek Corp.
services.organizational_unit: DrayTek Support
services.subject_dn: C=TW, ST=HsinChu, L=HuKou, O=DrayTek Corp., OU=DrayTek Support, CN=Vigor Router
services.common_name: Vigor Router
services.country: TW
services.locality: HuKou
services.province: HsinChu
services.organization: DrayTek Corp.
services.organizational_unit: DrayTek Support
services.scan_time: 2025-07-23T04:49:25.456265
services.source: OSI_APPLICATION_LAYER
services.part: a
services.vendor: DrayTek
services.product: Vigor Connect
services.cpe: cpe:2.3:a:draytek:vigorconnect:*:*:*:*:*:*:*:*
services.source: OSI_APPLICATION_LAYER
services.part: h
services.vendor: DrayTek
services.source: OSI_APPLICATION_LAYER
services.part: o
services.vendor: DrayTek
services.value: network.device.web-ui
services.value: login-page
services.value: network.device
services.value: angularjs
services.path: /weblogin.htm
services.endpoint_type: HTTP
services.scan_time: 2025-07-28T12:19:47.759114
services.uri: https://212.103.232.116:4433/weblogin.htm
services.protocol: HTTP/1.1
services.status_reason: OK
services.key: Vary
services.headers: Accept-Encoding
services.key: Server
services.headers: Server
services.key: Strict-Transport-Security
services.headers: max-age=31536000; includeSubdomains
services.key: X-Frame-Options
services.headers: SAMEORIGIN
services.key: X-Content-Type-Options
services.headers: nosniff
services.key: Content-Type
services.headers: text/html
services.key: Permissions-Policy
services.headers: geolocation=(),midi=(),sync-xhr=(),microphone=(),camera=(),magnetometer=(),gyroscope=(),fullscreen=(self),payment=()
services.key: Date
services.headers: <REDACTED>
services.key: X-XSS-Protection
services.headers: 1; mode=block
services.key: Expires
services.headers: Mon, 28 Jul 2025 12:19:47 GMT
services.key: Content-Encoding
services.headers: gzip
services.key: Content-Length
services.headers: 12459
services.key: Cache-Control
services.headers: no-cache, no-store, must-revalidate
services.key: Content-Security-Policy
services.headers: default-src 'self';frame-ancestors 'self';form-action 'self';script-src 'self' 'nonce-draytek';style-src 'self' 'nonce-draytek';img-src 'self' data:;connect-src 'self' *.draytek.com *.draytek.com.tw
services.html_tags: <title>Vigor Login Page</title> <meta charset="UTF-8">
services.body: <!DOCTYPE html><html ng-app="myApp" ng-controller="TranslateCtrl"><head><title>Vigor Login Page</title><link rel="shortcut icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJdoEHSXaTx0l2kodJdpEHSXaMB0l2gQdJdoAHSXaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHSXaAB0l2u8dJdr/HSXa/x0l2v8dJdr/HSXatx0l2iodJdgAHSXZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIYnQAdJdqgHSXa/x0l2v8dJdr/HSXa/x0l2v8dJdr/HSXayh0l2gARF5oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHSXaTh0l2v8dJdr/HSXanx0l2msdJdr/HSXa/x0l2v8dJdriHSXaEA4TigAAAAAAAAAAAAAAAAAAAAAAAAAAAB0l2godJdr/HSXa/x0l2uIdJdoAHSXaER0l2tsdJdr/HSXa/x0l2ssdJdoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHSXasB0l2v8dJdr/HSXaFxEXmQAdJdoAHSXa8B0l2v8dJdr/HSXadQAAAAAAAAAAHCPSAAAAAAAAAAAAAAAAAB0l2mYdJdr/HSXa/x0l2oMSGJ0AHSXaAB0l2jsdJdr/HSXa/x0l2twdJdoAAAAAAB0l2gIAAAAAAAAAAAAAAAAdJdoUHSXa/x0l2v8dJdrFDROGAAAAAAAdJdoAHSXawB0l2v8dJdr/HSXaMgAAAAAdJdoNHSXaAgAAAAAAAAAAHSXaAB0l2sIdJdr/HSXa/x0l2hMAAAAADhOKAB0l2ogdJdr/HSXa/x0l2m8AAAAAHSXaEh0l2hwdJdoAAgMwABIYnQAdJdqEHSXa/x0l2v8dJdpvAAAAAAIDMgAdJdqBHSXa/x0l2v8dJdp3AAAAAB0l2hQdJdovHSXaLx0l2gAAAAAAHSXaGh0l2v8dJdr/HSXatQAAAAAdJdoAHSXanB0l2v8dJdr/HSXacgAAAAAdJdoIHSXaMx0l2ksdJdpPHSXaDx0l2gAdJdpQHSXaax0l2k8dJdoAHSXaVB0l2v8dJdr/HSXa/x0l2kMAAAAAHSXZAB0l2h8dJdpPHSXaZR0l2oIdJdp3HSXaRB0l2jsdJdpPHSXavh0l2v8dJdr/HSXa/x0l2t4dJdoAAAAAAAAAAAAdJdoAHSXaMh0l2mkdJdqBHSXamB0l2q4dJdrHHSXa3h0l2vUdJdr/HSXa/x0l2vwdJdpJAAAAAAAAAAAAAAAAAgMyAB0l2wAdJdobHSXagB0l2p8dJdqzHSXayx0l2uMdJdr5HSXa/x0l2vgdJdo4HSXaAAAAAAAAAAAAAAAAAAAAAAAAAAAAHSXaAB0l2gAdJdoqHSXaUh0l2nIdJdqGHSXafB0l2lcdJdoDHSXaAAAAAAAAAAAA4H8AAPAfAADwDwAA8AMAAPCDAAD4YQAA+GEAALhwAACcMAAAnDAAAIwwAACCIAAAwAEAAOABAADwAwAA/AcAAA=="><meta charset="UTF-8"><style nonce="draytek">@charset "UTF-8";.ng-cloak,.ng-hide:not(.ng-hide-animate),.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}ng\:form{display:block}.ng-animate-shim{visibility:hidden}.ng-anchor{position:absolute}body{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;flex-direction:column;font-family:sans-serif}input{height:24px}select{height:24px}td.userpwd{color:#000;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:14px;font-weight:700}td.errmsg{color:red;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px}td.warningmsg{color:#000;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px;font-weight:700}td.copyright{color:#888;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:10px;font-weight:400;padding-bottom:15px;-webkit-text-size-adjust:none}input.userpwd{width:180px;font-family:Verdana,Arial,Helvetica,sans-serif}input.login,input.loginBtn{color:#000;min-width:68px;height:25px;padding:0 .38em .22em .38em;background:-webkit-linear-gradient(#f9f9f9,#bbb);background:-o-linear-gradient(#f9f9f9,#bbb);background:-moz-linear-gradient(#f9f9f9,#bbb);background:linear-gradient(#f9f9f9,#bbb);border-radius:3px;border:0 #048 solid;font-family:Verdana,Arial,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:14px;cursor:pointer;margin-left:120px}input.login:disabled,input.loginBtn:disabled{opacity:.5}.weblogin{background-image:url('/images/weblogin.png?154749');background-repeat:no-repeat}.weblogin.login1{width:524px;height:94px;background-position:-5px -5px}.weblogin.login1_f1{width:524px;height:94px;background-position:-5px -105px}.weblogin.login3{width:524px;height:58px;background-position:-5px -207px}.weblogin.login1_2{width:524px;height:94px;background-position:-5px -278px}.weblogin.login1_3{width:524px;height:96px;background-position:-5px -380px}.weblogin.login3_FPT{width:524px;height:77px;background-position:-5px -278px}.customlogo{padding-bottom:5px}.csl{background-color:#aaa;height:66px}.default{border:2px solid #aaa}.login-area{width:498px;box-shadow:5px 3px 20px 4px #c5c5c5;margin-left:10px;z-index:1}.login-label{padding-right:20px;text-align:right}.form-width{max-width:524px}.hide{display:none}.custom-message{margin:0 auto;width:fit-content}.language-select{width:188px;height:29px}.header-logo{position:relative;z-index:2}.main-form{margin:0 auto;padding-top:20px}.main-form table{text-align:inherit;width:380px}.totp{font-family:Verdana Arial,Helvetica,sans-serif;font-size:14px;float:right}.underline-list{padding-left:0;right:0;text-align:left;margin:0}.underline{width:17px;height:5px;display:inline-block;border-radius:5px;border-bottom:1px solid #a9a9a9;margin-left:2px;margin-right:5px}.underline-space{width:14px;display:inline-block}.authcode-area{position:relative;top:-12px;height:0;cursor:text;z-index:0}input#authcode{letter-spacing:6px;font-family:arial;font-size:32px;border:none;position:relative;width:100%;height:34px}input#authcode.overflow{caret-color:transparent}input#authcode:focus-visible{outline-offset:0px;outline:0}#sVerification{margin-left:15px;cursor:pointer;vertical-align:middle}#sCustLoginDesc{text-align:center}#otp_main tr td{padding-bottom:20px}.rouetrsumm{font-family:Verdana,Arial,Helvetica,sans-serif;width:500px}.routerinfotitle{padding-left:30px}.routerinfo{padding-left:20px;font-size:15px;line-height:24px;background-color:#fff;border:1px solid #dbdbdb}.collapsible{cursor:pointer;border:none;background-color:transparent;padding-left:0}.hideinfo::after{content:'';font-weight:700;font-size:15px;float:right;margin-left:5px}.expandinfo::after{content:'';font-size:5px;float:right;margin-left:5px}.collapse-btn{cursor:pointer}.nichetable{width:100%;border-collapse:unset;border-spacing:1px;position:relative}.nichetable thead tr th{text-align:left;padding:0;color:#555;font-weight:400;margin-bottom:10px;background-color:#636363;color:#fff;vertical-align:center;position:sticky;padding-top:10px;padding-left:10px;padding-bottom:10px;top:50px}.nichetable tbody tr:not(.notGrayed){background:#f2f2f2;background:linear-gradient(90deg,#f2f2f2 50%,#f5f5f5 100%);background-image:linear-gradient(90deg,#f2f2f2 50%,#fff 100%);background-repeat:no-repeat}.nichetable tbody:nth-child(odd) tr:not(.notGrayed){background-color:#f7f7f7;background:#e8e8e8;background:linear-gradient(90deg,#e8e8e8 50%,#f2f2f2 100%);background-image:linear-gradient(90deg,#e8e8e8 50%,#f2f2f2 100%);background-repeat:no-repeat}.nichetable tbody tr td{text-align:left;padding:5px;vertical-align:middle;padding-left:10px;font-weight:400!important;font-size:15px!important}.nichetable tbody tr td img{border:unset!important;box-shadow:unset!important}.nichetable tbody tr td a{padding:0}.nichetable tbody tr td a img{max-width:90px;text-align:left;margin:0 auto;display:block}.nichetable .spec{width:90px;text-align:center;padding-left:10px;padding-right:10px;line-height:16px}.nichetable .specap{width:70px;text-align:center;padding-left:10px;padding-right:10px;line-height:16px}.nichetable .specswitch{width:70px;text-align:center;padding-left:10px;padding-right:10px;line-height:16px}.nichetable tbody tr td .productimg{display:inline-block;width:120px;padding:10px;padding-bottom:0;margin-left:10px}.nichetable tbody tr td .productname{display:inline-block;font-size:1.1em;font-weight:700;margin-left:20px;vertical-align:top}.nichetable tbody tr td .productname a{display:table-cell;font-size:1.1em;font-weight:700;color:#555;padding-top:45px;text-decoration:none;vertical-align:middle;border-bottom:none}.nichetable tbody tr td .productname a:hover{color:#ef5568}.arrow{content:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGjWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOS4xLWMwMDEgNzkuMTQ2Mjg5OSwgMjAyMy8wNi8yNS0yMDowMTo1NSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBFbGVtZW50cyAxMS4wIFdpbmRvd3MiIHhtcDpDcmVhdGVEYXRlPSIyMDIzLTExLTA5VDEwOjIwOjA2WiIgeG1wOk1vZGlmeURhdGU9IjIwMjMtMTEtMDlUMTA6MjU6NTRaIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIzLTExLTA5VDEwOjI1OjU0WiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MTdlMDhhYS0zZmI4LWMzNDEtYWFlYS00ZDFjYjdkODY1NWIiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDoyOWRmNjExZS0xOTY4LTM4NGQtYmM4MC1mNzIwNjVlMWNmNzYiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpCMDdGNkNERDk4RjIxMUU5OUU3Q0E2OTExRjQzN0JEOCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCMDdGNkNEQTk4RjIxMUU5OUU3Q0E2OTExRjQzN0JEOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCMDdGNkNEQjk4RjIxMUU5OUU3Q0E2OTExRjQzN0JEOCIvPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDplZGEzODQ3Yi0xMTA4LTU2NDctYWYxNS1lMjE0NDk5YzYzYTMiIHN0RXZ0OndoZW49IjIwMjMtMTEtMDlUMTA6MjU6NTRaIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjUuMSAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjgxN2UwOGFhLTNmYjgtYzM0MS1hYWVhLTRkMWNiN2Q4NjU1YiIgc3RFdnQ6d2hlbj0iMjAyMy0xMS0wOVQxMDoyNTo1NFoiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyNS4xIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/NYEkAAAAqklEQVQ4EWP4//8/AzUxA10MnDFjhhsQOwAxA7GYkIHtQDwZiMWpZeBxIP4PxFeBOAqI2Sg1cC/UQBjeBMTW1DQQhD8C8QQglqOWgTD8BIhLgFiAWgbC8DkgjgdiXiBmpIaBMNd6ArEopQb+AuIFQKxPqZf/AvEeILanRqRcB+I4IOakNJbfAXETEItRkg5PQQ1bjhxOlBgYDcSRxGQ5Yg3kBmIWqpU2lGAAvk6UHNYVELEAAAAASUVORK5CYII=');position:absolute}.arrowdown{content:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAUCAYAAAH3kF3cAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyppVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMi1jMDAxIDYzLjEzOTQzOSwgMjAxMC8xMC8xMi0wODo0NTozMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIEVsZW1lbnRzIDExLjAgV2luZG93cyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCMDdGNkNEQzk4RjIxMUU5OUU3Q0E2OTExRjQzN0JEOCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCMDdGNkNERDk4RjIxMUU5OUU3Q0E2OTExRjQzN0JEOCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkIwN0Y2Q0RBOThGMjExRTk5RTdDQTY5MTFGNDM3QkQ4IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkIwN0Y2Q0RCOThGMjExRTk5RTdDQTY5MTFGNDM3QkQ4Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Sx4abwAAAVBJREFUeNpi/P//PwMMMIGImTNn/odzgMALRAAEECNMGQtQ+h2QFmQBEkIgEYAAYkQ2AQZYoCaBKJAsY3p6OgNAAGGoZELXxjhjxgyYFjAfpmIvED+FGwwELjAtAAGE1XpczokEUsuwyE8BOi8XZtdyIBZHU2ADxLnI9oPAK5D1UNcKAvEHktwEEEBEKWJiIAIQpQgUcSDH/8Yh7wgMggMgk/4AsQEWBdFAfADZuotAfANJwSfkwEV2kxESWxcjWqDgOxAvBGI9IH6ESxEIJAAxL1mBCRBgRCmiWoATFSnQdMkNpAKAOB+IPxOhjwsaF/uBkbYLOZC+AvFqIPYB4ggiDLoGxBOA+CU2r/0CYlCOaSZgyGYgNkQ2BFcY1QFxPBD/wyI3EYj9oJYSFdiLgNgJLUGXAnEBObF2EIhNoWUMKIH1EIw1POAiNDze0C1BAgBCAV6LJ5bOzgAAAABJRU5ErkJggg==');margin-top:-4px;position:absolute}</style><script nonce="draytek">const cfg={enAdAuth:"",loginlogo:parseInt("0"),sUser_mgt_End:"",sValidatedCode:"",iFrmLgErr:parseInt("1"),iCustomLoginFlag:parseInt("0"),issecmodel:parseInt("1"),isfiber:parseInt("0"),httpsport:parseInt("4433"),src_ip:"",target_url:"",mode:parseInt("6"),fw_set:"0",fw_rule:"0",fwver:"4.4.5.2_BT",isFPT:"(nil)",iValidatedNum:"0",isFPTLogo:"(nil)",iCustomLoginLogo:parseInt("0"),iWan1IsXdsl:parseInt("1"),sWAN2DsiableEnd:"-->",sQLTEEnd:"-->",iWireless11AXExists:parseInt("0")};var webcfg={language:"",url:"///www.draytek.com/",path:"locale",sysbuild:"Jul 31 2024 15:47:49",cc:"9",bgt:parseInt("0")},locale=localStorage.getItem("locale");if(locale)try{for(var l in locale=JSON.parse(locale)){if(2!=l.length&&5!=l.length||5==l.length&&"_"!=l[2]||!isNaN(parseInt(l)))throw new Error("Locale name error!");break}}catch(j){localStorage.removeItem("locale")}</script><script src="/js/gettext.min.js?154749" nonce="draytek"></script>  <script nonce="draytek">"use strict";var rs,strVal,waiting_cnt=180,CUST_LOGIN_ENABLE=8;const CUST_LOGIN_ROUTER_INFO_EN=16,CUST_LOGIN_ROUTER_INFO_WAN1=32,CUST_LOGIN_ROUTER_INFO_WAN2=64,CUST_LOGIN_ROUTER_INFO_WAN3=128,CUST_LOGIN_ROUTER_INFO_WAN4=256,CUST_LOGIN_ROUTER_INFO_WAN5=512,CUST_LOGIN_ROUTER_INFO_WAN6=1024,CUST_LOGIN_ROUTER_INFO_VPN=2048,aryCustInfoFlag=[32,64,128,256,512,1024],startUpTime=new Date(0,0,0,0,0,0);function enterSubmit(e){13!=e.keyCode||document.getElementById("btnOk").disabled||submitPara()}function getObjTime(e){if(-1!=e.indexOf(":")){const t=e.split(":");e=new Date(0,0,0,t[0],t[1],t[2])}return e}function formatting(e){var t="";return"object"==typeof e&&(5==Object.keys(e).length?(t+=e.month>0?" "+e.month+" "+(e.month>1?gettext("months"):gettext("month")):"",t+=e.day>0?" "+e.day+" "+(e.day>1?gettext("days"):gettext("day")):""):4==Object.keys(e).length&&(t+=e.day>0?" "+e.day+" "+(e.day>1?gettext("days"):gettext("day")):""),t+=" "+("0"+e.hour).slice(-2)+":"+("0"+e.min).slice(-2)+":"+("0"+e.sec).slice(-2)),t}function calculateUptime(e){var t={},n=0;if("object"==typeof e)n=(e.getTime()-startUpTime.getTime())/1e3,t.day=Math.floor(n/86400),n%=86400,t.hour=Math.floor(n/3600),n%=3600,t.min=Math.floor(n/60),n%=60,t.sec=n;else{if(!parseInt(e))return e;n=parseInt(e),t.month=Math.floor(n/2592e3),n%=2592e3,t.day=Math.floor(n/86400),n%=86400,t.hour=Math.floor(n/3600),n%=3600,t.min=Math.floor(n/60),n%=60,t.sec=n}return t}function changecode(){$http.get(atob("dmMucG5n")+"?"+(new Date).getTime()).then((function(e){document.getElementById("sVerification").setAttribute("src","data:image/png;base64, "+e.data[0]),cfg.iValidatedNum=e.data[1]}))}function initPage(){if((cfg.iCustomLoginFlag&CUST_LOGIN_ENABLE)==CUST_LOGIN_ENABLE&&($scope.CustomLogin=!0,document.title=document.getElementById("sCustLoginDesc").innerHTML),self!=top&&(top.location="/weblogin.htm"),document.getElementById("u5ern4me").focus(),""==cfg.sUser_mgt_End)if(cfg.mode)switch(cfg.mode){case 3:4==cfg.iFrmLgErr?$scope.errmsg1=1:5==cfg.iFrmLgErr?$scope.errmsg2=1:$scope.errmsg3=1;break;case 4:$scope.errmsg4=1;break;case 5:$scope.errmsg5=1;break;case 6:$scope.errmsg3=1;break;case 7:$scope.errmsg6=1;break;case 8:$scope.errmsg7=1;break;case 9:$scope.errmsg8=1;break;case 10:$scope.errmsg9=1;break;case 11:$scope.errmsg10=1;break;case 12:$scope.errmsg11=1;break;default:2==cfg.iFrmLgErr&&($scope.errmsg3=1)}else 2==cfg.iFrmLgErr?$scope.errmsg3=1:4==cfg.iFrmLgErr?$scope.errmsg1=1:5==cfg.iFrmLgErr&&($scope.errmsg2=1);else 2==cfg.iFrmLgErr?$scope.errmsg3=1:4==cfg.iFrmLgErr?$scope.errmsg1=1:4==cfg.iFrmLgErr&&($scope.errmsg2=1);if($scope.sValidatedCode=""!=cfg.sValidatedCode,$scope.warning="https:"!=document.location.protocol,$scope.sCustomLoginDesc=document.getElementById("sCustLoginDesc").innerHTML,$scope.totpstyle={"text-align":"center"},$scope.$$phase||$scope.$apply(),-1!=Object.keys(ccMaps).indexOf(webcfg.cc)||"pl"==webcfg.language){var e=localStorage.getItem("lang");e||"en"==webcfg.language||-1==Object.keys(availableLangs).indexOf(webcfg.language)||(e=webcfg.language),chglang(e)}else document.body.style.cursor="default"}function HttpsLogin(){var e=document.createElement("a");e.href=location.href,e.port=cfg.httpsport,"https:"!=e.protocol&&(e.protocol="https:",location=e.href)}function encode(e){if("function"==typeof btoa)return btoa(e);var t,n,a,o,c,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",s="",r="",l="",d=0;do{a=(t=e.charCodeAt(d++))>>2,o=(3&t)<<4|(n=e.charCodeAt(d++))>>4,c=(15&n)<<2|(r=e.charCodeAt(d++))>>6,l=63&r,isNaN(n)?c=l=64:isNaN(r)&&(l=64),s=s+i.charAt(a)+i.charAt(o)+i.charAt(c)+i.charAt(l),t=n=r="",a=o=c=l=""}while(d<e.length);return s}function createInput(e,t){var n=document.createElement("input");return n.type="hidden",n.name=e,n.setAttribute("value",t),n}function serializeData(e){if(!angular.isObject(e))return null==e?"":e.toString();var t,n=[];for(t=0;t<e.elements.length;t++)n.push(encodeURIComponent(e[t].name)+"="+encodeURIComponent(e[t].value));return n.join("&").replace(/%20/g,"+")}function submitPara(){var e=myApp.gettextCatalog,t="en";document.frmSub&&document.frmSub.remove();var n=document.getElementById("pa55w0rd");if(!n.checkValidity())return n.reportValidity();document.getElementById("btnOk").disabled=!0;var a=document.createElement("form");if(a.name="frmSub",a.method="POST",a.action="/cgi-bin/wlogin.cgi",a.appendChild(createInput("aa",encode(document.getElementById("u5ern4me").value))),a.appendChild(createInput("ab",encode(n.value))),""==cfg.sUser_mgt_End&&0!=cfg.mode&&(a.appendChild(createInput("src_ip",cfg.src_ip)),a.appendChild(createInput("target_url",cfg.target_url)),a.appendChild(createInput("mode",cfg.mode)),a.appendChild(createInput("fw_set",cfg.fw_set)),a.appendChild(createInput("fw_rule",cfg.fw_rule))),""==cfg.enAdAuth&&(webcfg.bgt?a.appendChild(createInput("sslgroup",atob("YWRtaW4="))):a.appendChild(createInput("sslgroup",document.getElementById("u5ern4me").value!=atob("YWRtaW4=")?atob("YWRtaW4="):"-1"))),""!=cfg.sValidatedCode&&(a.appendChild(createInput("sVerifCode",document.getElementById("validated_code").value)),a.appendChild(createInput("sValidatedCodeNum",cfg.iValidatedNum))),rs=randomString(15),a.appendChild(createInput("sFormAuthStr",rs)),document.getElementById("language")&&(t=document.getElementById("language").value),!t&&(t="en"),a.appendChild(createInput("sLang",t)),a.appendChild(createInput("_csrf",randomString(64))),-1==t.indexOf("en")&&null!=e.strings[t]){var o={};o[t]=e.strings[t];try{localStorage.setItem("locale",JSON.stringify(o))}catch(e){localStorage.removeItem("locale")}}try{localStorage.setItem("lang",t)}catch(e){localStorage.removeItem("lang")}document.body.appendChild(a),$http.post(a.action,serializeData(a)).then((function(e){e.data.otpType?$scope.OTP=e.data.otpType:"string"==typeof e.data&&(e.data.match(/content=user_(mgt_redir|login_succ|login_block).htm/)?document.write(e.data.replace(/<script>/g,"<script nonce="+document.scripts[0].nonce+">").replace(/sFormAuthStr=&/,"sFormAuthStr="+rs+"&")):location="/")}),(function(e){console.log(e)}))}function randomString(e){for(var t="ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678",n=t.length,a="",o=0;o<e;o++)a+=t.charAt(Math.floor(Math.random()*n));return a}function checkwaitingtime(){var e=document.getElementById("getauthcode");waiting_cnt<=0?(waiting_cnt=180,e.disabled=!1,e.value=gettext("Get Code"),e.style.color="#000",clearInterval(strVal)):(waiting_cnt--,e.disabled=!0,e.style.color="#999",e.value=waiting_cnt+gettext("s..."))}function remoteLoaded(e){var t=document.getElementById("language");t&&(-1==t.selectedIndex&&(t.selectedIndex=0),t.value=e,t&&(t.removeEventListener("change",chglang),t.addEventListener("change",chglang))),document.body.style.cursor="default"}function chglang(e){!e&&(e="en"),"string"!=typeof e&&(e=e.target.value),e!=webcfg.language&&localStorage.removeItem("locale"),-1==e.indexOf("en")&&null==myApp.gettextCatalog.strings[e]&&$scope.availableLangs&&-1!=Object.keys($scope.availableLangs).indexOf(e)?$scope.loadRemote(webcfg.url+webcfg.path+"/"+e+".json").catch((function(){myApp.gettextCatalog.strings[e]||$scope.loadRemote(webcfg.url.replace(/\.tw/,"")+webcfg.path+"/"+e+".json")})):remoteLoaded(e),myApp.gettextCatalog.setCurrentLanguage(e),$scope.$apply()}angular.element(document).ready((function(){document.body.style.cursor="wait";$scope.sLTEmodulename="LTE",$scope.$apply();var e=Object.keys(myApp.gettextCatalog.strings);if(e.length)for(var t in $scope.availableLangs={},e)$scope.availableLangs[e[t]]=availableLangs[e[t]];if(cfg.iCustomLoginLogo){const e={1:"csl",2:"hallo"};$scope.logocontainer="customlogo",$scope.logindefaultbackground="default",$scope.iCustomLoginLogo=e[cfg.iCustomLoginLogo],document.getElementById("loginlogoimg").src="/images/"+$scope.iCustomLoginLogo+"_logo.png",$scope.loginlogo=1}else cfg.loginlogo?2==cfg.loginlogo&&($scope.logindefaultbackground="default",document.getElementById("loginlogoimg").src="/get_logo.cgi",$scope.loginlogo=1):($scope.logindefaultbackground="login-area",$scope.logobackground="weblogin login1",$scope.footerbackground="weblogin login3",1==cfg.issecmodel?$scope.logobackground="weblogin login1_2":2==cfg.issecmodel?$scope.logobackground="weblogin login1_3":1==cfg.isfiber&&($scope.logobackground="weblogin login1_f1"),$scope.loginlogo=0,1==cfg.isFPT&&71==webcfg.cc&&1==cfg.isFPTLogo&&($scope.footerbackground="weblogin login3_FPT"));$scope.rouetrsumm="rouetrsumm",$scope.routerinfotitle="routerinfotitle",$scope.routerinfo="routerinfo",$scope.aryBwType=["6","0","7","8","3","3","6","6","6","825503028"],$scope.aryBwUpTime=["81:29:49","744:18:23","00:00:00","00:00:00","00:00:00","00:00:00","00:00:00","00:00:00","00:00:00","green"],$scope.aryBwColor=["green","green","red","red","red","red","red","red","red","UP"],angular.forEach($scope.aryBwUpTime,(function(e,t){e=getObjTime(e),$scope.aryBwUpTime[t]=formatting(calculateUptime(e))})),$scope.sWClntSignal="",$scope.sWClnt5gSignal="",$scope.iWireless11AXExists=cfg.iWireless11AXExists,$scope.showRouterSumm=16==(16&cfg.iCustomLoginFlag),$scope.showWanInfo=new Array,$scope.collapsed=new Array,$scope.wannum=parseInt("6");for(var n=0;n<$scope.wannum;n++)["7","8"].includes($scope.aryBwType[n])&&cfg.iWireless11AXExists?$scope.showWanInfo[n]=!1:$scope.showWanInfo.push((cfg.iCustomLoginFlag&aryCustInfoFlag[n])==aryCustInfoFlag[n]),$scope.collapsed[n]=!1;$scope.aryWanLinkUp= [1,1,0,0],$scope.iWan1IsXdsl=cfg.iWan1IsXdsl,$scope.sWAN2DsiableEnd=""==cfg.sWAN2DsiableEnd,cfg.iWan1IsXdsl&&($scope.aryDslInfo=["17A",parseInt("18580000").toLocaleString("en-US"),parseInt("48947000").toLocaleString("en-US"),"5","11","SHOWTIME"]),$scope.sQLTEEnd=""==cfg.sQLTEEnd,$scope.iLTEIndexNum="3",$scope.objLte= {},$scope.objLte.rssi&&($scope.objLte.rssi[1].match(/Excellent|Good/)?$scope.objLte.rssi.push("green"):$scope.objLte.rssi[1].match(/Fair/)?$scope.objLte.rssi.push("#ffbf00"):$scope.objLte.rssi[1].match(/Poor/)&&$scope.objLte.rssi.push("red")),$scope.objLte.rsrp&&($scope.objLte.rsrp[1].match(/Excellent|Good/)?$scope.objLte.rsrp.push("green"):$scope.objLte.rsrp[1].match(/Fair/)?$scope.objLte.rsrp.push("#ffbf00"):$scope.objLte.rsrp[1].match(/Poor/)&&$scope.objLte.rsrp.push("red")),$scope.showVpnInfo=2048==(2048&cfg.iCustomLoginFlag),$scope.vpn_status= {"L2L":[],"H2L":[]},$scope.vpn_status.L2L||($scope.vpn_status.L2L=new Array),angular.forEach($scope.vpn_status.L2L,(function(e,t){$scope.vpn_status.L2L[t]=formatting(calculateUptime(e))})),angular.forEach($scope.vpn_status.H2L,(function(e,t){$scope.vpn_status.H2L[t]=formatting(calculateUptime(e))})),$scope.toggleCollapsed=function(e){$scope.collapsed[e]=!$scope.collapsed[e],$scope.collapsed[e]&&angular.forEach($scope.collapsed,(function(t,n){n!=e&&($scope.collapsed[n]=!1)}))};var a=Object.keys(myApp.gettextCatalog.strings);if(a.length){var o={};a=a[0],availableLangs[a]&&(o[a]=availableLangs[a]),$scope.availableLangs=o,initPage()}else if(-1!=Object.keys(ccMaps).indexOf(webcfg.cc)||"pl"==webcfg.language){o={};ccMaps[webcfg.cc]&&(o[ccMaps[webcfg.cc]]=availableLangs[ccMaps[webcfg.cc]])||"en"!=webcfg.language&&(o[webcfg.language]=availableLangs[webcfg.language]),$scope.availableLangs=o,initPage()}else initPage();opener&&"unknown"!=typeof window.opener.document&&void 0!==window.opener.document&&1==opener.loginset_preview&&(1==opener.loginset_preview?opener.loginset_preview=0:angular.forEach($cookies.getAll(),(function(e,t){$cookies.remove(t)}))),document.getElementById("u5ern4me").addEventListener("keyup",(function(e){13==e.keyCode&&document.getElementById("pa55w0rd").focus()})),cfg.sValidatedCode?(document.getElementById("pa55w0rd").addEventListener("keyup",(function(e){13==e.keyCode&&document.getElementById("validated_code").focus()})),document.getElementById("validated_code").addEventListener("keyup",enterSubmit),document.getElementById("validated_code").addEventListener("input",(function(){this.value=this.value.replace(/[^0-9]/g,"")})),document.getElementById("sVerification").addEventListener("click",changecode)):document.getElementById("pa55w0rd").addEventListener("keyup",enterSubmit),document.getElementById("httpsLogin").addEventListener("click",HttpsLogin),document.getElementById("btnOk").addEventListener("click",submitPara),$scope.GetCode=function(){strVal||(strVal=setInterval(checkwaitingtime,1e3)),$http.get("/send_authcode.cgi?sFormAuthStr="+rs).then((function(e){1==e.data?alert(gettext("Authentication Code has been sent.")):alert(gettext("Please wait for 3 minutes to re-send code."))}),(function(){waiting_cnt=0,checkwaitingtime()}))},$scope.submit2FactPara=function(){var e=document.getElementById("authcode").value.replace(/ /g,"");""!=e?document.getElementById("btnOk_2FA").disabled||$http.get("/wloginauth.cgi?authcode="+e+"&sFormAuthStr="+rs).then((function(e){"1"==e.data?location="/":"2"==e.data?alert(gettext("Authentication Code error")):(alert(gettext("This Authentication Code is timeout or failed too many times.")),location="/")})):alert(gettext("Please enter authentication code!"))},$scope.$watch("OTP",(function(e){if(e){function n(e){e.target.style.caretColor=e.target.selectionStart==e.target.getAttribute("maxlength")?"transparent":"unset"}var t=document.getElementById("authcode");t.focus(),t.addEventListener("input",(function(e){const t=e.target,n=t.selectionStart;t.value=t.value.replace(/[^\d ]/g,""),t.value.indexOf(" ")>=0&&4!=t.value.length&&(t.value=t.value.trim()),6<=t.value.length&&" "!=t.value.charAt(3)&&(t.value=t.value.slice(0,3)+" "+t.value.slice(3)),t.value=t.value.slice(0,7),t.selectionStart=n,t.selectionEnd=n+1})),t.addEventListener("mouseup",n),t.addEventListener("keyup",(function(e){const t=e.target;var a=t.selectionStart;n(e),3==t.value.length?"Backspace"!=e.key?t.value+=" ":t.value=t.value.trim().slice(0,-1):("Backspace"==e.key&&a--,"ArrowLeft"==e.key?a-=4==a?2:1:3==a&&a++,a>=0&&(t.selectionStart=a,t.selectionEnd=a+1)),document.getElementById("btnOk_2FA").disabled=7>t.value.length,"Enter"==e.key&&document.getElementById("btnOk_2FA").click()})),t.addEventListener("click",(function(e){if(window.authclicked)return;const t=e.target;t.setSelectionRange(t.selectionStart,t.selectionStart+1),window.authclicked=1,setTimeout((function(){delete window.authclicked}),500)}))}}))}))</script></head><body class="ng-cloak"><div class="form-width"><section class="header-logo"><div ng-class="logobackground"></div><div ng-class="logocontainer" ng-show="loginlogo"><div ng-class="iCustomLoginLogo"><img id="loginlogoimg" class="form-width"></div></div></section><section ng-class="logindefaultbackground"><div class="main-form"><h3 ng-show="CustomLogin && loginlogo == 0" id="sCustLoginDesc">Router Login</h3><table ng-if="!OTP" align="center" cellspacing="0" cellpadding="2" border="0" ng-style="sCustomLoginDesc == '' && {'margin-top': '30px'}"><tr height="35"><td width="40%" class="userpwd login-label" translate>Username</td><td width="60%"><input class="userpwd" id="u5ern4me" name="u5ern4me" maxlength="24" autocomplete="off" autocapitalize="off" autofocus></td></tr><tr height="35"><td class="userpwd login-label" translate>Password</td><td><input class="userpwd" type="password" id="pa55w0rd" name="pa55w0rd" maxlength="84" autocomplete="off" required></td></tr><tr height="35" ng-if="sValidatedCode"><td class="userpwd login-label" translate>Validation Code</td><td><input id="validated_code" size="4" maxlength="4" autocomplete="off"> <img alt="{{ 'Validation Code' | translate }}" id="sVerification" src="data:image/png;base64, " height="24px" width="96px" align="bottom"></td></tr><tr height="35" ng-if="availableLangs"><td class="userpwd login-label" translate>Language</td><td><select id="language" name="language" class="language-select"><option value="en">English</option><option ng-repeat="(key, lang) in availableLangs" ng-value="key">{{ lang }}</option></select></td></tr><tr><td class="errmsg" colspan="2" height="15"><translate ng-if="errmsg1">User Mode is off now.</translate><translate ng-if="errmsg2">Wrong validation code!</translate><translate ng-if="errmsg3">The username or password you entered is incorrect.</translate><translate ng-if="errmsg4">Reach the maximum login number. Try another user account.</translate><translate ng-if="errmsg5">No available buffer now. Please contact with your administrator</translate><translate ng-if="errmsg6">User account is not enabled now.</translate><translate ng-if="errmsg7">You aren't allowed to access internet (out of schedule).</translate><translate ng-if="errmsg8">User login denied from http protocol. Please contact with your administrator</translate><translate ng-if="errmsg9">The user ran out of time quota.</translate><translate ng-if="errmsg10">The user ran out of data quota.</translate><translate ng-if="errmsg11">Wrong user account. Please contact with your administrator.</translate></td></tr><tr><td></td><td valign="top"><input type="button" id="btnOk" name="btnOk" value="{{ 'Login' | translate }}" class="login"></td></tr></table><table ng-if="OTP" id="otp_main" align="center"><tr><td colspan="2"><a href="cgi-bin/wlogout.cgi">&lt;<translate>Back</translate></a></td></tr><tr ng-if="OTP=='two-step'"><td colspan="2" translate>After press "Get Code", your authentication code will be sent to your Email box or phone. It will expire after 10 minutes.</td></tr><tr><td ng-if="OTP=='totp'" width="40%"><span class="totp"><b translate>TOTP Code</b> &emsp;</span></td><td ng-style="totpstyle"><input autocomplete="off" maxlength="7" id="authcode" ng-model="authcode" pattern="[0-9 ]"><ul class="underline-list authcode-area"><li class="underline"></li><li class="underline"></li><li class="underline"></li><li class="underline-space"></li><li class="underline"></li><li class="underline"></li><li class="underline"></li></ul></td><td ng-if="OTP=='two-step'" width="40%" align="right"><input type="button" name="getauthcode" id="getauthcode" value="{{ 'Get Code' | translate }}" ng-click="GetCode()"></td></tr><tr><td align="right" valign="top" colspan="2"><input type="button" id="btnOk_2FA" ng-click="submit2FactPara()" value="{{ 'Continue' | translate }}" class="loginBtn" ng-cut="$event.preventDefault()" ng-copy="$event.preventDefault()" ng-disabled="authcode.length!=7"></td></tr></table></div><table width="100%"><tr ng-show="warning"><td colspan="2" align="center" class="warningmsg" width="90%"><div><translate>Security Warning: You are logging in without encryption which is not recommended. To login securely</translate>&nbsp;<a href="#" id="httpsLogin" translate>click here</a>.</div></td></tr></table></section><section ng-class="footerbackground"><table width="100%"><tr><td colspan="2" height="40" class="copyright" align="center"><translate>Copyright</translate>&copy; 2000-{{builYear}}&nbsp;<translate>DrayTek Corp. All Rights Reserved.</translate></td></tr></table></section></div><div ng-show="CustomLogin" class="custom-message"> <h1><b><font color=red>Welcome Message</font></b></h1><p>This welcome message is displayed in the Login page of the router. Replace this text with your own message. </p><ol><li>The welcome message can be written in HTML so lists such as this one can be created </li><li>Other markup tags such as p, font or img can be used</li></ol> </div><br><div ng-class="rouetrsumm" ng-if="showRouterSumm"><div ng-style="{ 'text-align': 'center', 'font-size': '20px'}"><table align="center" width="100%" cellspacing="2" cellpadding="2" border="0" class="nichetable"><thead><tr><th colspan="2" translate>Router Summary</th></tr></thead><tbody ng-if="showWanInfo[$index]" ng-repeat="item in [].constructor(wannum) track by $index" ng-init="i=$index; w_type=aryBwType[i]"><tr><td class="collapse-btn" ng-switch="w_type" ng-click="toggleCollapsed(i)"><button type="button" ng-class="{'collapsible expandinfo': collapsed[i], 'collapsible hideinfo': !collapsed[i]}"><img ng-class="{'arrowdown': collapsed[i], 'arrow': !collapsed[i]}"> <span ng-class="routerinfotitle" ng-if="i+1 == iLTEIndexNum && sQLTEEnd">{{sLTEmodulename}}</span> <span ng-class="routerinfotitle" ng-if="!(i+1 == iLTEIndexNum && sQLTEEnd)"><translate>WAN</translate>{{i+1}} ( <span ng-switch-when="0" translate>Ethernet</span> <span ng-switch-when="1" translate>ADSL</span> <span ng-switch-when="2" translate>Fiber</span> <span ng-switch-when="3" translate>USB</span> <span ng-switch-when="4" translate>Ethernet</span> <span ng-switch-when="5" translate>ADSL</span> <span ng-switch-when="6" translate>VDSL2</span> <span ng-switch-when="7" translate>Wireless 2.4G</span> <span ng-switch-when="8" translate>Wireless 5G</span> <span ng-switch-when="9" translate>G.fast</span> )</span></button></td><td align="center" ng-if="aryBwColor[i] != 'green'" ng-style="{ 'color': aryBwColor[i] }" translate>Offline</td><td align="center" ng-if="aryBwColor[i] == 'green'" ng-style="{ 'color': aryBwColor[i] }" translate>Online</td></tr><tr ng-if="['1','5','6','9'].includes(w_type) && collapsed[i]"><td ng-class="routerinfo" colspan="2"><div><translate>Uptime</translate>: {{aryBwUpTime[i]}}</div><div><translate>Mode</translate>: {{aryDslInfo[0]}}</div><div><translate>State</translate>: <font ng-style="{ 'color': aryDslInfo[5] == 'SHOWTIME' ? 'green' : 'red' }">{{aryDslInfo[5] | translate}}</font></div><div><translate>Up Speed</translate>: {{aryDslInfo[1]}}</div><div><translate>Down Speed</translate>: {{aryDslInfo[2]}}</div><div><translate>SNR Margin</translate>: {{aryDslInfo[3]}}</div><div><translate>Attenuation</translate>: {{aryDslInfo[4]}}</div></td></tr><tr ng-if="(['0','4'].includes(w_type) && !(sWAN2DsiableEnd && iWan1IsXdsl) || w_type == 2) && collapsed[i]"><td ng-class="routerinfo" colspan="2"><div><translate>Uptime</translate>: {{aryBwUpTime[i]}}</div><div><translate translate-params-num="{{i+1}}">WAN{{num}} port status</translate>: <font ng-style="{ 'color': aryWanLinkUp[i] ? 'green' : 'red' }"><span ng-if="aryWanLinkUp[i]" translate>Link Up</span> <span ng-if="!aryWanLinkUp[i]" translate>Link Down</span></font></div></td></tr><tr ng-if="w_type == 7 && collapsed[i]"><td ng-class="routerinfo" colspan="2"><div><translate>Uptime</translate>: {{aryBwUpTime[i]}}</div><div><translate>Signal Strength</translate>: {{sWClntSignal}}</div></td></tr><tr ng-if="w_type == 8 && collapsed[i]"><td ng-class="routerinfo" colspan="2"><div><translate>Uptime</translate>: {{aryBwUpTime[i]}}</div><div><translate>Signal Strength</translate>: {{sWClnt5gSignal}}</div></td></tr><tr ng-if="w_type == 3 && !(i+1 == iLTEIndexNum && sQLTEEnd) && collapsed[i]"><td ng-class="routerinfo" colspan="2"><div><translate>Uptime</translate>: {{aryBwUpTime[i]}}</div><div><translate>USB port status</translate>: <font ng-style="{ 'color': aryWanLinkUp[i > 3 ? i-2 : i] ? 'green' : 'red' }"><translate ng-if="aryWanLinkUp[i > 3 ? i-2 : i]">Connected</translate><translate ng-if="!aryWanLinkUp[i > 3 ? i-2 : i]">Disconnected</translate></font></div></td></tr><tr ng-if="i+1 == iLTEIndexNum && sQLTEEnd && collapsed[i]"><td ng-class="routerinfo" colspan="2"><div><translate>Uptime</translate>: {{aryBwUpTime[i]}}</div><div><translate>SIM in use</translate>: {{objLte.cursim}}</div><div><translate>Operator</translate>: {{objLte.ispopt}}</div><div><translate>Access Tech</translate>: {{objLte.acctech}}</div><div><translate>RSSI</translate>: {{objLte.rssi[0]}} <font ng-if="objLte.rssi[0] != '---'" ng-style="{ 'color': objLte.rssi[2] }">({{objLte.rssi[1] | translate}})</font></div><div><translate>RSRP</translate>: {{objLte.rsrp[0]}} <font ng-if="objLte.rsrp[0] != '---'" ng-style="{ 'color': objLte.rsrp[2] }">({{objLte.rsrp[1] | translate}})</font></div><div><translate>SIM1 ICCID</translate>: {{objLte.iccid1}}</div><div><translate>SIM2 ICCID</translate>: {{objLte.iccid2}}</div></td></tr></tbody><tbody ng-if="showVpnInfo"><tr><td class="collapse-btn" ng-click="toggleCollapsed(wannum)"><button type="button" ng-class="{'collapsible expandinfo': collapsed[wannum], 'collapsible hideinfo': !collapsed[wannum]}"><img ng-class="{'arrowdown': collapsed[wannum], 'arrow': !collapsed[wannum]}"> <span ng-class="routerinfotitle" translate>VPN</span></button></td><td align="center"><translate>Connected</translate>: {{vpn_status.L2L.length + vpn_status.H2L.length}}</td></tr><tr ng-if="collapsed[wannum]"><td ng-class="routerinfo" colspan="2"><table align="center" width="100%" cellspacing="0" cellpadding="2" border="0"><tr class="notGrayed"><td><translate>LAN to LAN</translate>: {{vpn_status.L2L.length}}</td></tr><tr class="notGrayed" ng-repeat="item in vpn_status.L2L track by $index" ng-init="i=$index+1"><td><translate>Index</translate>{{i}}: {{item}}</td></tr><tr class="notGrayed"><td><translate>Remote Dial-in User</translate>: {{vpn_status.H2L.length}}</td></tr><tr class="notGrayed" ng-repeat="item in vpn_status.H2L track by $index" ng-init="i=$index+1"><td><translate>Index</translate>{{i}}: {{item}}</td></tr></table></td></tr></tbody></table></div></div></body></html>
services.name: data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAA...wAEAAOABAADwAwAA/AcAAA==
services.body_hash_sha1: sha1:89356bcd2cfe322f7a143a9d18001eb4229b035a
services.supported_versions: HTTP/1.1
[binary data, 29 values, 1,436 bytes]