1 <!-- lwsgs rewrites the below $vars $v $v into the correct values on the fly -->
3 var lwsgs_user = "$lwsgs_user";
4 var lwsgs_auth = "$lwsgs_auth";
5 var lwsgs_email = "$lwsgs_email";
8 <div id="dlogin" style="display:none"> \
9 <form action="lwsgs-login" method="post"> \
10 <input type="hidden" name="admin" value="needadmin/admin-login.html"> \
11 <input type="hidden" name="good" value="index.html"> \
12 <input type="hidden" name="bad" value="failed-login.html"> \
13 <input type="hidden" name="forgot-good" value="sent-forgot-ok.html"> \
14 <input type="hidden" name="forgot-bad" value="sent-forgot-fail.html">\
15 <input type="hidden" name="forgot-post-good" value="post-forgot-ok.html">\
16 <input type="hidden" name="forgot-post-bad" value="post-forgot-fail.html">\
17 <table style="vertical-align:top;text-align:right"\
20 <input type="text" size="10" id="username" name="username"></td>\
22 <input type="password" id="password" size="10" name="password"><div id="pw1"></div></td>\
24 <td colspan="2" style="text-align:center"><input type="submit" id="login" name="login" value="Login" style="margin: 4px; padding: 2px; font-weight=bold;">\
25 <input type="submit" id="forgot" name="forgot" value="Forgot password" style="margin: 2px; padding: 2px">\
26 <input id="doreg" type="button" value="Sign up" style="margin: 2px; padding: 2px"></td>\
32 <div id="dlogout" style="display:none;text-align:right">\
33 <form action="lwsgs-logout" method="post" style="text-align:right">\
34 <input type="hidden" name="good" value="index.html">\
35 <table style="vertical-align:top;text-align:right">\
36 <tr><td><span id=grav></span></td>\
37 <td style="text-align:center"><table><tr><td style="text-align:center">\
38 <a href="#" id="clink">\
39 <span id="curuser"></span></a></td></tr><tr>\
40 <td style="text-align:center"><input type="submit" name="logout" value="Logout" style="margin: 2px; padding: 2px"></td>\
41 </tr></table></td></tr>\
45 <div id="dregister" style="display:none">\
46 <form action="lwsgs-login" method="post">\
47 <input type="hidden" name="admin" value="needadmin/admin-login.html">\
48 <input type="hidden" name="good" value="successful-login.html">\
49 <input type="hidden" name="bad" value="failed-login.html">\
50 <input type="hidden" name="reg-good" value="post-register-ok.html">\
51 <input type="hidden" name="reg-bad" value="post-register-fail.html">\
52 <input type="hidden" name="forgot-good" value="sent-forgot-ok.html">\
53 <input type="hidden" name="forgot-bad" value="sent-forgot-fail.html">\
54 <input type="hidden" name="forgot-post-good" value="post-forgot-ok.html">\
55 <input type="hidden" name="forgot-post-bad" value="post-forgot-fail.html">\
56 <table style="vertical-align:top;text-align:left">\
58 <td colspan=2 align=center>\
59 <span id="curuser"></span>\
62 document.getElementById("curuser").innerHTML = "currently logged in as " + lwsgs_san(lwsgs_user) + "</br>";\
64 <b>Please enter your details to register</b>:\
69 <td><input type="text" size="10" id="rusername" name="username" <span id=uchk></span></td>\
72 <td align=right>Password:</td>\
73 <td><input type="password" size="10" id="rpassword" name="password"> <span id="rpw1"></span></td>\
78 <td align=right><span id="pw2">Password (again):</span></td>\
79 <td><input type="password" size="10" id="password2" name="password2"> <span id="match"></span></td>\
82 <td align=right>Email:</td>\
83 <td><input type="email" size="10" id="email" name="email"\
84 placeholder="me@example.com" <span id=echk></span></td>\
87 <td colspan=2 align=center>\
88 <input type="submit" id="register" name="register" value="Register" style="margin: 2px; padding: 2px">\
89 <input type="submit" id="rforgot" name="forgot" value="Forgot Password" style="margin: 2px; padding: 2px;display: none">\
90 <input type="button" id="cancel" name="cancel" value="Cancel" style="margin: 2px; padding: 2px;">\
97 <div id="dchange" style="display:none">\
98 <form action="lwsgs-change" method="post">\
99 <input type="hidden" id="cusername" name="username">\
100 <input type="hidden" name="admin" value="needadmin/admin-login.html">\
101 <input type="hidden" name="good" value="index.html">\
102 <input type="hidden" name="bad" value="failed-login.html">\
103 <input type="hidden" name="reg-good" value="post-register-ok.html">\
104 <input type="hidden" name="reg-bad" value="post-register-fail.html">\
105 <input type="hidden" name="forgot-good" value="sent-forgot-ok.html">\
106 <input type="hidden" name="forgot-bad" value="sent-forgot-fail.html">\
107 <input type="hidden" name="forgot-post-good" value="post-forgot-ok.html">\
108 <input type="hidden" name="forgot-post-bad" value="post-forgot-fail.html">\
109 <table style="vertical-align:top;text-align:left">\
111 <td colspan=2 align=center>\
112 <span id="ccuruser"></span>\
113 <script nonce="lwscaro">\
115 document.getElementById("ccuruser").innerHTML =\
116 "<span class=\"gstitle\">Login settings for " +\
117 lwsgs_san(lwsgs_user) + "</span></br>";\
119 <b>Please enter your details to change</b>:\
122 <tr><td align=right id="ccurpw_name">\
123 Current Password:</td>\
124 <td><input type="password" size="10" id="ccurpw" name="curpw"\
125 > <span id=cuchk></span></td>\
128 <td align=right>Password:</td>\
129 <td><input type="password" size="10" id="cpassword" name="password"\
130 <span id="cpw1"></span></td>\
133 <td align=right><span id="pw2">Password (again)</span></td>\
134 <td><input type="password" size="10" id="cpassword2" name="password2"\
135 > <span id="cmatch"></span></td>\
137 <!-- not supported yet\
139 <td align=right id="cemail_name">Email:</td>\
140 <td><input type="email" size="10" id="cemail" name="email"\
142 <span id=cechk></span></td>\
145 <td colspan=2 align=center>\
146 <input type="submit" id="change" name="change"\
147 value="Change" style="margin: 6px; padding: 6px">\
148 <input type="submit" id="cforgot" name="forgot"\
149 value="Forgot Password" style="margin: 6px; padding: 6px;display: none">\
150 <input type="button" id="cancel2" name="cancel"\
151 value="Cancel" style="margin: 6px; padding: 6px;">\
156 <input type="checkbox" id="showdel" name="showdel"\
158 <input type="submit" id="delete" name="delete" \
159 value="Delete Account" style="margin: 6px; padding: 6px;display: none">\
166 <div id="dadmin" style="display:none">\
172 -- https://raw.githubusercontent.com/blueimp/JavaScript-MD5/master/js/md5.min.js
173 -- under MIT license */
174 !function(n){"use strict";function t(n,t){var r=(65535&n)+(65535&t),e=(n>>16)+(t>>16)+(r>>16);return e<<16|65535&r}function r(n,t){return n<<t|n>>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<<r%32,n[(r+64>>>9<<4)+14]=r;var e,i,a,h,d,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e<n.length;e+=16)i=l,a=g,h=v,d=m,l=o(l,g,v,m,n[e],7,-680876936),m=o(m,l,g,v,n[e+1],12,-389564586),v=o(v,m,l,g,n[e+2],17,606105819),g=o(g,v,m,l,n[e+3],22,-1044525330),l=o(l,g,v,m,n[e+4],7,-176418897),m=o(m,l,g,v,n[e+5],12,1200080426),v=o(v,m,l,g,n[e+6],17,-1473231341),g=o(g,v,m,l,n[e+7],22,-45705983),l=o(l,g,v,m,n[e+8],7,1770035416),m=o(m,l,g,v,n[e+9],12,-1958414417),v=o(v,m,l,g,n[e+10],17,-42063),g=o(g,v,m,l,n[e+11],22,-1990404162),l=o(l,g,v,m,n[e+12],7,1804603682),m=o(m,l,g,v,n[e+13],12,-40341101),v=o(v,m,l,g,n[e+14],17,-1502002290),g=o(g,v,m,l,n[e+15],22,1236535329),l=u(l,g,v,m,n[e+1],5,-165796510),m=u(m,l,g,v,n[e+6],9,-1069501632),v=u(v,m,l,g,n[e+11],14,643717713),g=u(g,v,m,l,n[e],20,-373897302),l=u(l,g,v,m,n[e+5],5,-701558691),m=u(m,l,g,v,n[e+10],9,38016083),v=u(v,m,l,g,n[e+15],14,-660478335),g=u(g,v,m,l,n[e+4],20,-405537848),l=u(l,g,v,m,n[e+9],5,568446438),m=u(m,l,g,v,n[e+14],9,-1019803690),v=u(v,m,l,g,n[e+3],14,-187363961),g=u(g,v,m,l,n[e+8],20,1163531501),l=u(l,g,v,m,n[e+13],5,-1444681467),m=u(m,l,g,v,n[e+2],9,-51403784),v=u(v,m,l,g,n[e+7],14,1735328473),g=u(g,v,m,l,n[e+12],20,-1926607734),l=c(l,g,v,m,n[e+5],4,-378558),m=c(m,l,g,v,n[e+8],11,-2022574463),v=c(v,m,l,g,n[e+11],16,1839030562),g=c(g,v,m,l,n[e+14],23,-35309556),l=c(l,g,v,m,n[e+1],4,-1530992060),m=c(m,l,g,v,n[e+4],11,1272893353),v=c(v,m,l,g,n[e+7],16,-155497632),g=c(g,v,m,l,n[e+10],23,-1094730640),l=c(l,g,v,m,n[e+13],4,681279174),m=c(m,l,g,v,n[e],11,-358537222),v=c(v,m,l,g,n[e+3],16,-722521979),g=c(g,v,m,l,n[e+6],23,76029189),l=c(l,g,v,m,n[e+9],4,-640364487),m=c(m,l,g,v,n[e+12],11,-421815835),v=c(v,m,l,g,n[e+15],16,530742520),g=c(g,v,m,l,n[e+2],23,-995338651),l=f(l,g,v,m,n[e],6,-198630844),m=f(m,l,g,v,n[e+7],10,1126891415),v=f(v,m,l,g,n[e+14],15,-1416354905),g=f(g,v,m,l,n[e+5],21,-57434055),l=f(l,g,v,m,n[e+12],6,1700485571),m=f(m,l,g,v,n[e+3],10,-1894986606),v=f(v,m,l,g,n[e+10],15,-1051523),g=f(g,v,m,l,n[e+1],21,-2054922799),l=f(l,g,v,m,n[e+8],6,1873313359),m=f(m,l,g,v,n[e+15],10,-30611744),v=f(v,m,l,g,n[e+6],15,-1560198380),g=f(g,v,m,l,n[e+13],21,1309151649),l=f(l,g,v,m,n[e+4],6,-145523070),m=f(m,l,g,v,n[e+11],10,-1120210379),v=f(v,m,l,g,n[e+2],15,718787259),g=f(g,v,m,l,n[e+9],21,-343485551),l=t(l,i),g=t(g,a),v=t(v,h),m=t(m,d);return[l,g,v,m]}function a(n){var t,r="";for(t=0;t<32*n.length;t+=8)r+=String.fromCharCode(n[t>>5]>>>t%32&255);return r}function h(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t<r.length;t+=1)r[t]=0;for(t=0;t<8*n.length;t+=8)r[t>>5]|=(255&n.charCodeAt(t/8))<<t%32;return r}function d(n){return a(i(h(n),8*n.length))}function l(n,t){var r,e,o=h(n),u=[],c=[];for(u[15]=c[15]=void 0,o.length>16&&(o=i(o,8*n.length)),r=0;16>r;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(h(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="0123456789abcdef",o="";for(r=0;r<n.length;r+=1)t=n.charCodeAt(r),o+=e.charAt(t>>>4&15)+e.charAt(15&t);return o}function v(n){return unescape(encodeURIComponent(n))}function m(n){return d(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}"function"==typeof define&&define.amd?define(function(){return A}):"object"==typeof module&&module.exports?module.exports=A:n.md5=A}(this);
176 if (lwsgs_user.substring(0, 1) == "$") {
177 alert("lwsgs.js: lws generic sessions misconfigured and not providing vars");
179 function lwsgs_san(s)
181 if (s.search("<") != -1)
182 return "invalid string";
187 function lwsgs_update()
189 var en_login = 1, en_forgot = 1;
191 if (document.getElementById('password').value.length &&
192 document.getElementById('password').value.length < 8)
195 if (!document.getElementById('username').value ||
196 !document.getElementById('password').value)
199 if (!document.getElementById('username').value ||
200 document.getElementById('password').value)
203 document.getElementById('login').disabled = !en_login;
204 document.getElementById('forgot').disabled = !en_forgot;
207 document.getElementById("curuser").innerHTML = lwsgs_san(lwsgs_user);
209 if (lwsgs_user === "")
210 document.getElementById("dlogin").style.display = "inline";
212 document.getElementById("dlogout").style.display = "inline";
215 function lwsgs_open_registration()
217 document.getElementById("dadmin").style.display = "none";
218 document.getElementById("dlogin").style.display = "none";
219 document.getElementById("dlogout").style.display = "none";
220 document.getElementById("dchange").style.display = "none";
221 document.getElementById("dregister").style.display = "inline";
224 function lwsgs_cancel_registration()
226 document.getElementById("dadmin").style.display = "none";
227 document.getElementById("dregister").style.display = "none";
228 document.getElementById("dchange").style.display = "none";
230 if (lwsgs_user === "")
231 document.getElementById("dlogin").style.display = "inline";
233 document.getElementById("dlogout").style.display = "inline";
236 function lwsgs_select_change()
238 document.getElementById("dlogin").style.display = "none";
239 document.getElementById("dlogout").style.display = "none";
240 document.getElementById("dregister").style.display = "none";
241 if (lwsgs_auth & 2) {
242 document.getElementById("dadmin").style.display = "inline";
243 document.getElementById("dchange").style.display = "none";
245 document.getElementById("dadmin").style.display = "none";
246 document.getElementById("dchange").style.display = "inline";
249 event.preventDefault()
252 var lwsgs_user_check = '0';
253 var lwsgs_email_check = '0';
255 function lwsgs_rupdate()
257 var en_register = 1, en_forgot = 0;
259 if (document.getElementById('rpassword').value ==
260 document.getElementById('password2').value) {
261 if (document.getElementById('rpassword').value.length)
262 document.getElementById('match').innerHTML =
263 "<b style=\"color:green\">\u2713</b>";
265 document.getElementById('match').innerHTML = "";
266 document.getElementById('pw2').style = "";
268 if (document.getElementById('password2').value ||
269 document.getElementById('email').value) { // ie, he is filling in "register" path and cares
270 document.getElementById('match').innerHTML =
271 "<span style=\"color: red\">\u2718 <b>Passwords do not match</b></span>";
273 document.getElementById('match').innerHTML =
274 "<span style=\"color: gray\">\u2718 Passwords do not match</span>";
279 if (document.getElementById('rpassword').value.length &&
280 document.getElementById('rpassword').value.length < 8) {
282 document.getElementById('rpw1').innerHTML = "Need 8 chars";
284 if (document.getElementById('rpassword').value.length)
285 document.getElementById('rpw1').innerHTML = "<b style=\"color:green\">\u2713</b>";
287 document.getElementById('rpw1').innerHTML = "";
289 if (!document.getElementById('rpassword').value ||
290 !document.getElementById('password2').value ||
291 !document.getElementById('rusername').value ||
292 !document.getElementById('email').value ||
293 lwsgs_email_check === '1'||
294 lwsgs_user_check === '1')
297 document.getElementById('register').disabled = !en_register;
298 document.getElementById('rpassword').disabled = lwsgs_user_check === '1';
299 document.getElementById('password2').disabled = lwsgs_user_check === '1';
300 document.getElementById('email').disabled = lwsgs_user_check === '1';
302 if (lwsgs_user_check === '0') {
303 var uc = document.getElementById('uchk');
306 if (document.getElementById('rusername').value)
307 uc.innerHTML = "<b style=\"color:green\">\u2713</b>";
312 if (document.getElementById('uchk'))
313 ocument.getElementById('uchk').innerHTML = "<b style=\"color:red\">\u2718 Already registered</b>";
317 if (lwsgs_email_check === '0') {
318 var ec = document.getElementById('echk');
321 if (document.getElementById('email').value)
322 ec.innerHTML = "<b style=\"color:green\">\u2713</b>";
327 if (document.getElementById('echk'))
328 document.getElementById('echk').innerHTML = "<b style=\"color:red\">\u2718 Already registered</b>";
333 document.getElementById('rforgot').style.display = "inline";
335 document.getElementById('rforgot').style.display = "none";
337 if (lwsgs_user_check === '1')
341 document.getElementById('rpassword').style.opacity = op;
342 document.getElementById('password2').style.opacity = op;
343 document.getElementById('email').style.opacity = op;
346 function lwsgs_cupdate()
348 var en_change = 1, en_forgot = 1, pwok = 1;
350 if (lwsgs_auth & 8) {
351 document.getElementById('ccurpw').style.display = "none";
352 document.getElementById('ccurpw_name').style.display = "none";
354 if (!document.getElementById('ccurpw').value ||
355 document.getElementById('ccurpw').value.length < 8) {
358 document.getElementById('cuchk').innerHTML = "<b style=\"color:red\">\u2718</b>";
361 document.getElementById('cuchk').innerHTML = "";
363 document.getElementById('ccurpw').style.display = "inline";
364 document.getElementById('ccurpw_name').style.display = "inline";
367 if (document.getElementById('cpassword').value ==
368 document.getElementById('cpassword2').value) {
369 if (document.getElementById('cpassword').value.length)
370 document.getElementById('cmatch').innerHTML = "<b style=\"color:green\">\u2713</b>";
372 document.getElementById('cmatch').innerHTML = "";
373 document.getElementById('pw2').style = "";
375 if (document.getElementById('cpassword2').value //||
376 //document.getElementById('cemail').value
377 ) { // ie, he is filling in "register" path and cares
378 document.getElementById('cmatch').innerHTML =
379 "<span style=\"color: red\">\u2718 <b>Passwords do not match</b></span>";
381 document.getElementById('cmatch').innerHTML = "<span style=\"color: gray\">\u2718 Passwords do not match</span>";
386 if (document.getElementById('cpassword').value.length &&
387 document.getElementById('cpassword').value.length < 8) {
389 document.getElementById('cpw1').innerHTML = "Need 8 chars";
391 var cpw = document.getElementById('cpw1');
394 if (document.getElementById('cpassword').value.length)
395 cpw.innerHTML = "<b style=\"color:green\">\u2713</b>";
401 if (!document.getElementById('cpassword').value ||
402 !document.getElementById('cpassword2').value ||
406 if (document.getElementById('showdel').checked)
407 document.getElementById('delete').style.display = "inline";
409 document.getElementById('delete').style.display = "none";
411 document.getElementById('change').disabled = !en_change;
412 document.getElementById('cpassword').disabled = pwok === 0;
413 document.getElementById('cpassword2').disabled = pwok === 0;
414 document.getElementById('showdel').disabled = pwok === 0;
415 document.getElementById('delete').disabled = pwok === 0;
416 //document.getElementById('cemail').disabled = pwok === 0;
419 if (lwsgs_auth & 8) {
420 document.getElementById('cemail').style.display = "none";
421 document.getElementById('cemail_name').style.display = "none";
423 document.getElementById('cemail').style.display = "inline";
424 document.getElementById('cemail_name').style.display = "inline";
425 if (lwsgs_email_check === '0' &&
426 document.getElementById('cemail').value != lwsgs_email) {
427 if (document.getElementById('cemail').value)
428 document.getElementById('cechk').innerHTML = "<b style=\"color:green\">\u2713</b>";
430 document.getElementById('cechk').innerHTML = "";
432 document.getElementById('cechk').innerHTML = "<b style=\"color:red\">\u2718 Already registered</b>";
441 document.getElementById('cforgot').style.display = "inline";
443 document.getElementById('cforgot').style.display = "none";
449 document.getElementById('cpassword').style.opacity = op;
450 document.getElementById('cpassword2').style.opacity = op;
451 // document.getElementById('cemail').style.opacity = op;
454 function lwsgs_check_user()
456 var xmlHttp = new XMLHttpRequest();
457 xmlHttp.onreadystatechange = function() {
458 if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
459 lwsgs_user_check = xmlHttp.responseText;
463 xmlHttp.open("GET", "lwsgs-check?username="+document.getElementById('rusername').value, true);
467 function lwsgs_check_email(id)
469 var xmlHttp = new XMLHttpRequest();
470 xmlHttp.onreadystatechange = function() {
471 if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
472 lwsgs_email_check = xmlHttp.responseText;
476 xmlHttp.open("GET", "lwsgs-check?email="+document.getElementById(id).value, true);
480 function rupdate_user()
486 function rupdate_email()
489 lwsgs_check_email('email');
492 function cupdate_email()
495 lwsgs_check_email('cemail');
499 function lwsgs_initial()
501 document.getElementById('lwsgs').innerHTML = lwsgs_html;
503 document.getElementById('username').oninput = lwsgs_update;
504 document.getElementById('username').onchange = lwsgs_update;
505 document.getElementById('password').oninput = lwsgs_update;
506 document.getElementById('password').onchange = lwsgs_update;
507 document.getElementById('doreg').onclick = lwsgs_open_registration;
508 document.getElementById('clink').onclick = lwsgs_select_change;
509 document.getElementById('cancel').onclick =lwsgs_cancel_registration;
510 document.getElementById('cancel2').onclick =lwsgs_cancel_registration;
511 document.getElementById('rpassword').oninput = lwsgs_rupdate;
512 document.getElementById('password2').oninput = lwsgs_rupdate;
513 document.getElementById('rusername').oninput = rupdate_user;
514 document.getElementById('email').oninput = rupdate_email;
515 document.getElementById('ccurpw').oninput = lwsgs_cupdate;
516 document.getElementById('cpassword').oninput = lwsgs_cupdate;
517 document.getElementById('cpassword2').oninput = lwsgs_cupdate;
518 <!-- document.getElementById('cemail').oninput = cupdate_email;-->
519 document.getElementById('showdel').onchange = lwsgs_cupdate;
522 document.getElementById('grav').innerHTML =
523 "<img src=\"https://www.gravatar.com/avatar/" + md5(lwsgs_email) +
526 //document.getElementById('cemail').placeholder = lwsgs_email;
527 document.getElementById('cusername').value = lwsgs_user;