| 1 | <!DOCTYPE html> |
| 2 | <html dir="ltr" xmlns="http://www.w3.org/1999/xhtml"> |
| 3 | <head lang="en"> |
| 4 | <meta http-equiv=X-UA-Compatible content="IE=edge" /> |
| 5 | <meta content="text/html;charset=utf-8" http-equiv=Content-Type /> |
| 6 | <meta name=viewport content="user-scalable=1.0,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0" /> |
| 7 | <meta name=apple-mobile-web-app-capable content=yes /> |
| 8 | <meta name=format-detection content="telephone=no" /> |
| 9 | <meta name="robots" content="noindex,nofollow"> |
| 10 | <link type=text/css href="/styles/style.css" media="screen" rel="stylesheet" title="CSS" /> |
| 11 | {{{customCSSTags}}} |
| 12 | <link rel="apple-touch-icon" href="/favicon-303x303.png" /> |
| 13 | <script type="text/javascript" src="scripts/common-0.0.1{{min}}.js"></script> |
| 14 | {{{customJSTags}}} |
| 15 | <title id="topTitle">{{{title}}}</title> |
| 16 | </head> |
| 17 | <body> |
| 18 | <div id=container style=max-height:100vh> |
| 19 | <div id=mastheadx></div> |
| 20 | <div id=masthead style="background:url(logo.png) 0px 0px;background-color:#036;background-repeat:no-repeat;height:66px;width:100%;overflow:hidden"> |
| 21 | <div style="float:left;text-shadow: 1px 1px 2px #000">{{{titlehtml}}}</div> |
| 22 | <div style=float:left;height:66px;color:#c8c8c8;padding-left:14px;padding-top:7px> |
| 23 | <strong><font style="font-size:46px;font-family:Arial,Helvetica,sans-serif;text-shadow: 1px 1px 2px #000">{{{title1}}}</font></strong> |
| 24 | </div> |
| 25 | <div style=float:left;height:66px;color:#c8c8c8;padding-left:5px;padding-top:14px> |
| 26 | <strong><font style="font-size:14px;font-family:Arial,Helvetica,sans-serif;text-shadow: 1px 1px 2px #000">{{{title2}}}</font></strong> |
| 27 | </div> |
| 28 | </div> |
| 29 | <div id=page_content style=max-height:calc(100vh-138px)> |
| 30 | <div id=column_l> |
| 31 | <h1 id="mainTitle"></h1> |
| 32 | <p id="mainMessage"></p> |
| 33 | <br /> |
| 34 | </div> |
| 35 | <div id=footer> |
| 36 | <table cellpadding=0 cellspacing=10 style=width:100%> |
| 37 | <tr> |
| 38 | <td style=text-align:left></td> |
| 39 | <td style=text-align:right> |
| 40 | <a href=terms>Terms & Privacy</a> |
| 41 | </td> |
| 42 | </tr> |
| 43 | </table> |
| 44 | </div> |
| 45 | </div> |
| 46 | </div> |
| 47 | <script> |
| 48 | var random = '{{{randomlength}}}' // Random length string for BREACH mitigation |
| 49 | var titleid = parseInt('{{{titleid}}}'); |
| 50 | var msgid = parseInt('{{{msgid}}}'); |
| 51 | var domainurl = decodeURIComponent('{{{domainurl}}}'); |
| 52 | var arg1 = decodeURIComponent('{{{arg1}}}'); |
| 53 | var arg2 = decodeURIComponent('{{{arg2}}}'); |
| 54 | var urlargs = parseUriArgs(); |
| 55 | |
| 56 | var title = ''; |
| 57 | if (titleid == 1) { title = "Account Verification"; } |
| 58 | if (titleid == 2) { title = "Desktop Sharing"; } |
| 59 | if (titleid == 3) { title = "Server Under Maintenance"; } |
| 60 | if (titleid == 4) { title = "Terminal Sharing"; } |
| 61 | QH('topTitle', Q('topTitle').innerText + ' - ' + title); |
| 62 | QH('mainTitle', title); |
| 63 | |
| 64 | var msg = ''; |
| 65 | switch (msgid) { |
| 66 | case 1: { msg = "ERROR: Invalid domain."; break; } |
| 67 | case 2: { msg = format("ERROR: Invalid username \"{0}\".", arg1); break; } |
| 68 | case 3: { msg = format("ERROR: Invalid e-mail \"{0}\" for user \"{1}\".", arg1, arg2); break; } |
| 69 | case 4: { msg = format("E-mail \"{0}\" for user \"{1}\" already verified.", arg1, arg2); break; } |
| 70 | case 5: { msg = format("E-mail \"{0}\" already in use on a different account. Change the email address and try again.", arg1); break; } |
| 71 | case 6: { msg = format("Verified email {0} for user account {1}.", '<b>' + arg1 + '</b>', '<b>' + arg2 + '</b>'); break; } |
| 72 | case 7: { msg = format("E-mail \"{0}\" for user \"{1}\" not verified.", arg1, arg2); break; } |
| 73 | case 8: { |
| 74 | msg = '<div>' + format("Password for account {0} has been reset to:", '<b>' + arg1 + '</b>') + '</div><div style=padding:14px;font-size:18px><b>' + arg2 + '</b></div>'; |
| 75 | msg += "Login and go to the \"My Account\" tab to update your password."; |
| 76 | break; |
| 77 | } |
| 78 | case 9: { msg = "ERROR: Invalid account check."; break; } |
| 79 | case 10: { msg = "ERROR: Invalid account check, verification url is only valid for 30 minutes."; break; } |
| 80 | case 11: { msg = "Sharing link not valid yet."; break; } |
| 81 | case 12: { msg = "Sharing link is expired."; break; } |
| 82 | case 13: { |
| 83 | var loginUrl = 'login?loginscreen=1' + (urlargs.key ? '&key=' + urlargs.key : ''); |
| 84 | msg = "If you are an administrator, [login here].".replace('[', '<a href=' + loginUrl + '>').replace(']', '</a>'); |
| 85 | break; |
| 86 | } |
| 87 | case 14: { msg = '<a href=' + window.location.href + '&confirm=1>' + "Click here to reset your account password." + '</a>'; break; } |
| 88 | } |
| 89 | |
| 90 | // Add login page link |
| 91 | if ((msgid != 11) && (msgid != 12) && (msgid != 13) && (msgid != 14)) { msg += ' <a href="' + domainurl + (urlargs.key ? ('?key=' + urlargs.key) : '') + '">' + "Go to login page" + '</a>.' } |
| 92 | QH('mainMessage', msg); |
| 93 | |
| 94 | function format(format) { var args = Array.prototype.slice.call(arguments, 1); return format.replace(/{(\d+)}/g, function (match, number) { return typeof args[number] != 'undefined' ? args[number] : match; }); }; |
| 95 | |
| 96 | // Parse URL arguments, only keep safe values |
| 97 | function parseUriArgs() { |
| 98 | var href = window.document.location.href; |
| 99 | if (href.endsWith('#')) { href = href.substring(0, href.length - 1); } |
| 100 | var name, r = {}, parsedUri = href.split(/[\?&|]/); |
| 101 | parsedUri.splice(0, 1); |
| 102 | for (var j in parsedUri) { |
| 103 | var arg = parsedUri[j], i = arg.indexOf('='); |
| 104 | name = arg.substring(0, i); |
| 105 | r[name] = arg.substring(i + 1); |
| 106 | if (!isSafeString(r[name])) { delete r[name]; } else { var x = parseInt(r[name]); if (x == r[name]) { r[name] = x; } } |
| 107 | } |
| 108 | return r; |
| 109 | } |
| 110 | |
| 111 | </script> |
| 112 | </body> |
| 113 | </html> |