var lwsgs_user = "$lwsgs_user"; var lwsgs_auth = "$lwsgs_auth"; var lwsgs_email = "$lwsgs_email"; var lwsgs_html = '\ \ \
\
\ \ \ \ \
\ \
\ \
\
\ \ \ \ \ \ \ '; /*-- this came from -- https://raw.githubusercontent.com/blueimp/JavaScript-MD5/master/js/md5.min.js -- under MIT license */ !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<>>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<>>9<<4)+14]=r;var e,i,a,h,d,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e>5]>>>t%32&255);return r}function h(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t>5]|=(255&n.charCodeAt(t/8))<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>>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); if (lwsgs_user.substring(0, 1) == "$") { alert("lwsgs.js: lws generic sessions misconfigured and not providing vars"); } function lwsgs_san(s) { if (s.search("<") != -1) return "invalid string"; return s; } function lwsgs_update() { var en_login = 1, en_forgot = 1; if (document.getElementById('password').value.length && document.getElementById('password').value.length < 8) en_login = 0; if (!document.getElementById('username').value || !document.getElementById('password').value) en_login = 0; if (!document.getElementById('username').value || document.getElementById('password').value) en_forgot = 0; document.getElementById('login').disabled = !en_login; document.getElementById('forgot').disabled = !en_forgot; if (lwsgs_user) document.getElementById("curuser").innerHTML = lwsgs_san(lwsgs_user); if (lwsgs_user === "") document.getElementById("dlogin").style.display = "inline"; else document.getElementById("dlogout").style.display = "inline"; } function lwsgs_open_registration() { document.getElementById("dadmin").style.display = "none"; document.getElementById("dlogin").style.display = "none"; document.getElementById("dlogout").style.display = "none"; document.getElementById("dchange").style.display = "none"; document.getElementById("dregister").style.display = "inline"; } function lwsgs_cancel_registration() { document.getElementById("dadmin").style.display = "none"; document.getElementById("dregister").style.display = "none"; document.getElementById("dchange").style.display = "none"; if (lwsgs_user === "") document.getElementById("dlogin").style.display = "inline"; else document.getElementById("dlogout").style.display = "inline"; } function lwsgs_select_change() { document.getElementById("dlogin").style.display = "none"; document.getElementById("dlogout").style.display = "none"; document.getElementById("dregister").style.display = "none"; if (lwsgs_auth & 2) { document.getElementById("dadmin").style.display = "inline"; document.getElementById("dchange").style.display = "none"; } else { document.getElementById("dadmin").style.display = "none"; document.getElementById("dchange").style.display = "inline"; } event.preventDefault() } var lwsgs_user_check = '0'; var lwsgs_email_check = '0'; function lwsgs_rupdate() { var en_register = 1, en_forgot = 0, op; if (document.getElementById('rpassword').value == document.getElementById('password2').value) { if (document.getElementById('rpassword').value.length) document.getElementById('match').innerHTML = "\u2713"; else document.getElementById('match').innerHTML = ""; document.getElementById('pw2').style = ""; } else { if (document.getElementById('password2').value || document.getElementById('email').value) { // ie, he is filling in "register" path and cares document.getElementById('match').innerHTML = "\u2718 Passwords do not match"; } else document.getElementById('match').innerHTML = "\u2718 Passwords do not match"; en_register = 0; } if (document.getElementById('rpassword').value.length && document.getElementById('rpassword').value.length < 8) { en_register = 0; document.getElementById('rpw1').innerHTML = "Need 8 chars"; } else if (document.getElementById('rpassword').value.length) document.getElementById('rpw1').innerHTML = "\u2713"; else document.getElementById('rpw1').innerHTML = ""; if (!document.getElementById('rpassword').value || !document.getElementById('password2').value || !document.getElementById('rusername').value || !document.getElementById('email').value || lwsgs_email_check === '1'|| lwsgs_user_check === '1') en_register = 0; document.getElementById('register').disabled = !en_register; document.getElementById('rpassword').disabled = lwsgs_user_check === '1'; document.getElementById('password2').disabled = lwsgs_user_check === '1'; document.getElementById('email').disabled = lwsgs_user_check === '1'; if (lwsgs_user_check === '0') { var uc = document.getElementById('uchk'); if (uc) { if (document.getElementById('rusername').value) uc.innerHTML = "\u2713"; else uc.innerHTML = ""; } } else { if (document.getElementById('uchk')) ocument.getElementById('uchk').innerHTML = "\u2718 Already registered"; en_forgot = 1; } if (lwsgs_email_check === '0') { var ec = document.getElementById('echk'); if (ec) { if (document.getElementById('email').value) ec.innerHTML = "\u2713"; else ec.innerHTML = ""; } } else { if (document.getElementById('echk')) document.getElementById('echk').innerHTML = "\u2718 Already registered"; en_forgot = 1; } if (en_forgot) document.getElementById('rforgot').style.display = "inline"; else document.getElementById('rforgot').style.display = "none"; if (lwsgs_user_check === '1') op = '0.5'; else op = '1.0'; document.getElementById('rpassword').style.opacity = op; document.getElementById('password2').style.opacity = op; document.getElementById('email').style.opacity = op; } function lwsgs_cupdate() { var en_change = 1, en_forgot = 1, pwok = 1, op; if (lwsgs_auth & 8) { document.getElementById('ccurpw').style.display = "none"; document.getElementById('ccurpw_name').style.display = "none"; } else { if (!document.getElementById('ccurpw').value || document.getElementById('ccurpw').value.length < 8) { en_change = 0; pwok = 0; document.getElementById('cuchk').innerHTML = "\u2718"; } else { en_forgot = 0; document.getElementById('cuchk').innerHTML = ""; } document.getElementById('ccurpw').style.display = "inline"; document.getElementById('ccurpw_name').style.display = "inline"; } if (document.getElementById('cpassword').value == document.getElementById('cpassword2').value) { if (document.getElementById('cpassword').value.length) document.getElementById('cmatch').innerHTML = "\u2713"; else document.getElementById('cmatch').innerHTML = ""; document.getElementById('pw2').style = ""; } else { if (document.getElementById('cpassword2').value //|| //document.getElementById('cemail').value ) { // ie, he is filling in "register" path and cares document.getElementById('cmatch').innerHTML = "\u2718 Passwords do not match"; } else document.getElementById('cmatch').innerHTML = "\u2718 Passwords do not match"; en_change = 0; } if (document.getElementById('cpassword').value.length && document.getElementById('cpassword').value.length < 8) { en_change = 0; document.getElementById('cpw1').innerHTML = "Need 8 chars"; } else { var cpw = document.getElementById('cpw1'); if (cpw) { if (document.getElementById('cpassword').value.length) cpw.innerHTML = "\u2713"; else cpw.innerHTML = ""; } } if (!document.getElementById('cpassword').value || !document.getElementById('cpassword2').value || pwok === 0) en_change = 0; if (document.getElementById('showdel').checked) document.getElementById('delete').style.display = "inline"; else document.getElementById('delete').style.display = "none"; document.getElementById('change').disabled = !en_change; document.getElementById('cpassword').disabled = pwok === 0; document.getElementById('cpassword2').disabled = pwok === 0; document.getElementById('showdel').disabled = pwok === 0; document.getElementById('delete').disabled = pwok === 0; //document.getElementById('cemail').disabled = pwok === 0; /* if (lwsgs_auth & 8) { document.getElementById('cemail').style.display = "none"; document.getElementById('cemail_name').style.display = "none"; } else { document.getElementById('cemail').style.display = "inline"; document.getElementById('cemail_name').style.display = "inline"; if (lwsgs_email_check === '0' && document.getElementById('cemail').value != lwsgs_email) { if (document.getElementById('cemail').value) document.getElementById('cechk').innerHTML = "\u2713"; else document.getElementById('cechk').innerHTML = ""; } else { document.getElementById('cechk').innerHTML = "\u2718 Already registered"; en_forgot = 1; } } */ if (lwsgs_auth & 8) en_forgot = 0; if (en_forgot) document.getElementById('cforgot').style.display = "inline"; else document.getElementById('cforgot').style.display = "none"; if (pwok === 0) op = '0.5'; else op = '1.0'; document.getElementById('cpassword').style.opacity = op; document.getElementById('cpassword2').style.opacity = op; // document.getElementById('cemail').style.opacity = op; } function lwsgs_check_user() { var xmlHttp = new XMLHttpRequest(); xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState === 4 && xmlHttp.status === 200) { lwsgs_user_check = xmlHttp.responseText; lwsgs_rupdate(); } } xmlHttp.open("GET", "lwsgs-check?username="+document.getElementById('rusername').value, true); xmlHttp.send(null); } function lwsgs_check_email(id) { var xmlHttp = new XMLHttpRequest(); xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState === 4 && xmlHttp.status === 200) { lwsgs_email_check = xmlHttp.responseText; lwsgs_rupdate(); } } xmlHttp.open("GET", "lwsgs-check?email="+document.getElementById(id).value, true); xmlHttp.send(null); } function rupdate_user() { lwsgs_rupdate(); lwsgs_check_user(); } function rupdate_email() { lwsgs_rupdate(); lwsgs_check_email('email'); } function cupdate_email() { lwsgs_cupdate(); lwsgs_check_email('cemail'); } function lwsgs_initial() { document.getElementById('lwsgs').innerHTML = lwsgs_html; if (lwsgs_user) { document.getElementById("curuser").innerHTML = "currently logged in as " + lwsgs_san(lwsgs_user) + "
"; document.getElementById("ccuruser").innerHTML = "Login settings for " + lwsgs_san(lwsgs_user) + "
"; } document.getElementById('username').oninput = lwsgs_update; document.getElementById('username').onchange = lwsgs_update; document.getElementById('password').oninput = lwsgs_update; document.getElementById('password').onchange = lwsgs_update; document.getElementById('doreg').onclick = lwsgs_open_registration; document.getElementById('clink').onclick = lwsgs_select_change; document.getElementById('cancel').onclick =lwsgs_cancel_registration; document.getElementById('cancel2').onclick =lwsgs_cancel_registration; document.getElementById('rpassword').oninput = lwsgs_rupdate; document.getElementById('password2').oninput = lwsgs_rupdate; document.getElementById('rusername').oninput = rupdate_user; document.getElementById('email').oninput = rupdate_email; document.getElementById('ccurpw').oninput = lwsgs_cupdate; document.getElementById('cpassword').oninput = lwsgs_cupdate; document.getElementById('cpassword2').oninput = lwsgs_cupdate; document.getElementById('showdel').onchange = lwsgs_cupdate; if (lwsgs_email) document.getElementById('grav').innerHTML = ""; //if (lwsgs_email) //document.getElementById('cemail').placeholder = lwsgs_email; document.getElementById('cusername').value = lwsgs_user; lwsgs_update(); lwsgs_cupdate(); } window.addEventListener("load", function() { lwsgs_initial(); document.getElementById("nolog").style.display = !!lwsgs_user ? "none" : "inline-block"; document.getElementById("logged").style.display = !lwsgs_user ? "none" : "inline-block"; document.getElementById("msg").onkeyup = mupd; document.getElementById("msg").onchange = mupd; var ws; function mb_format(s) { var r = "", n, wos = 0; for (n = 0; n < s.length; n++) { if (s[n] == ' ') wos = 0; else { wos++; if (wos === 40) { wos = 0; r = r + ' '; } } if (s[n] == '<') { r = r + "<"; continue; } if (s[n] == '\n') { r = r + "
"; continue; } r = r + s[n]; } return r; } function add_div(n, m) { var q = document.getElementById(n); var d = new Date(m.time * 1000); q.innerHTML = "
" + "
" + "" + lwsgs_san(m.username) + "
" + "" + d.toDateString() + "
" + d.toTimeString() + "

" + "IP: " + lwsgs_san(m.ip) + "
" + mb_format(m.content) + "

" + q.innerHTML; } function get_appropriate_ws_url() { var pcol; var u = document.URL; if (u.substring(0, 5) == "https") { pcol = "wss://"; u = u.substr(8); } else { pcol = "ws://"; if (u.substring(0, 4) == "http") u = u.substr(7); } u = u.split('/'); return pcol + u[0] + "/xxx"; } if (lwsgs_user) { ws = new WebSocket(get_appropriate_ws_url(), "protocol-lws-messageboard"); try { ws.onopen = function() { document.getElementById("debug").textContent = "ws opened"; } ws.onmessage =function got_packet(msg) { add_div("messages", JSON.parse(msg.data)); } ws.onclose = function(){ } } catch(exception) { alert('

Error' + exception); } } function mupd() { document.getElementById("send").disabled = !document.getElementById("msg").value; } }, false);