mirror of
https://github.com/Ylianst/MeshCentral.git
synced 2024-12-22 21:31:35 +03:00
Partial web page multi-language support done.
This commit is contained in:
parent
6b71476ab8
commit
3f02c8251a
@ -165,28 +165,28 @@
|
||||
try { recFileMetadata = JSON.parse(data) } catch (ex) { cleanup(); return; }
|
||||
if ((recFileMetadata == null) || (recFileMetadata.magic != 'MeshCentralRelaySession') || (recFileMetadata.ver != 1)) { cleanup(); return; }
|
||||
var x = '';
|
||||
x += addInfo('Time', recFileMetadata.time);
|
||||
if (recFileEndTime != 0) { var secs = Math.floor((recFileEndTime - time) / 1000); x += addInfo('Duration', secs + ' second' + ((secs > 1) ? 's' : '')); }
|
||||
x += addInfo('Username', recFileMetadata.username);
|
||||
x += addInfo('UserID', recFileMetadata.userid);
|
||||
x += addInfo('SessionID', recFileMetadata.sessionid);
|
||||
if (recFileMetadata.ipaddr1 && recFileMetadata.ipaddr2) { x += addInfo('Addresses', recFileMetadata.ipaddr1 + ' to ' + recFileMetadata.ipaddr2); }
|
||||
if (recFileMetadata.devicename) { x += addInfo('DeviceName', recFileMetadata.devicename); }
|
||||
x += addInfo('NodeID', recFileMetadata.nodeid);
|
||||
x += addInfo("Time", recFileMetadata.time);
|
||||
if (recFileEndTime != 0) { var secs = Math.floor((recFileEndTime - time) / 1000); x += addInfo("Duration", format("{0} second{1}", secs, (secs > 1) ? 's' : '')); }
|
||||
x += addInfo("Username", recFileMetadata.username);
|
||||
x += addInfo("UserID", recFileMetadata.userid);
|
||||
x += addInfo("SessionID", recFileMetadata.sessionid);
|
||||
if (recFileMetadata.ipaddr1 && recFileMetadata.ipaddr2) { x += addInfo("Addresses", format("{0} to {1}", recFileMetadata.ipaddr1, recFileMetadata.ipaddr2)); }
|
||||
if (recFileMetadata.devicename) { x += addInfo("DeviceName", recFileMetadata.devicename); }
|
||||
x += addInfo("NodeID", recFileMetadata.nodeid);
|
||||
if (recFileMetadata.protocol) {
|
||||
var p = recFileMetadata.protocol;
|
||||
if (p == 1) { p = 'MeshCentral Terminal'; }
|
||||
else if (p == 2) { p = 'MeshCentral Desktop'; }
|
||||
else if (p == 100) { p = 'Intel® AMT WSMAN'; }
|
||||
else if (p == 101) { p = 'Intel® AMT Redirection'; }
|
||||
x += addInfoNoEsc('Protocol', p);
|
||||
if (p == 1) { p = "MeshCentral Terminal"; }
|
||||
else if (p == 2) { p = "MeshCentral Desktop"; }
|
||||
else if (p == 100) { p = "Intel® AMT WSMAN"; }
|
||||
else if (p == 101) { p = "Intel® AMT Redirection"; }
|
||||
x += addInfoNoEsc("Protocol", p);
|
||||
}
|
||||
QV('DeskParent', true);
|
||||
QV('TermParent', false);
|
||||
if (recFileMetadata.protocol == 1) {
|
||||
// MeshCentral remote terminal
|
||||
recFileProtocol = 1;
|
||||
x += '<br /><br /><span style=color:gray>Press [space] to play/pause.</span>';
|
||||
x += '<br /><br /><span style=color:gray>' + "Press [space] to play/pause." + '</span>';
|
||||
QE('PlayButton', true);
|
||||
QE('PauseButton', false);
|
||||
QE('RestartButton', false);
|
||||
@ -195,7 +195,7 @@
|
||||
else if (recFileMetadata.protocol == 2) {
|
||||
// MeshCentral remote desktop
|
||||
recFileProtocol = 2;
|
||||
x += '<br /><br /><span style=color:gray>Press [space] to play/pause.</span>';
|
||||
x += '<br /><br /><span style=color:gray>' + "Press [space] to play/pause." + '</span>';
|
||||
QE('PlayButton', true);
|
||||
QE('PauseButton', false);
|
||||
QE('RestartButton', false);
|
||||
@ -301,7 +301,7 @@
|
||||
QS('progressbar').width = '0px';
|
||||
QH('timespan', '00:00:00');
|
||||
QV('metadatadiv', true);
|
||||
QH('metadatadiv', '<span style=\"font-family:Arial,Helvetica Neue,Helvetica,sans-serif;font-size:28px\">MeshCentral Session Player</span><br /><br /><span style=color:gray>Drag & drop a .mcrec file or click "Open File..."</span>');
|
||||
QH('metadatadiv', '<span style=\"font-family:Arial,Helvetica Neue,Helvetica,sans-serif;font-size:28px\">MeshCentral Session Player</span><br /><br /><span style=color:gray>' + "Drag & drop a .mcrec file or click \"Open File...\"" + '</span>');
|
||||
QV('DeskParent', true);
|
||||
QV('TermParent', false);
|
||||
}
|
||||
@ -529,10 +529,9 @@
|
||||
|
||||
function messagebox(t, m) { setSessionActivity(); QH('id_dialogMessage', m); setDialogMode(1, t, 1); }
|
||||
function statusbox(t, m) { setSessionActivity(); QH('id_dialogMessage', m); setDialogMode(1, t); }
|
||||
|
||||
|
||||
function haltEvent(e) { if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); return false; }
|
||||
function pad2(num) { var s = "00" + num; return s.substr(s.length - 2); }
|
||||
function pad2(num) { var s = '00' + num; return s.substr(s.length - 2); }
|
||||
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; }); };
|
||||
|
||||
start();
|
||||
</script>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -57,8 +57,8 @@
|
||||
var webPageFullScreen = true;
|
||||
var nightMode = (getstore('_nightMode', '0') == '1');
|
||||
|
||||
var terms = "{{{terms}}}";
|
||||
if (terms != "") { QH('column_l', decodeURIComponent(terms)); }
|
||||
var terms = '{{{terms}}}';
|
||||
if (terms != '') { QH('column_l', decodeURIComponent(terms)); }
|
||||
QV('column_l', true);
|
||||
userInterfaceSelectMenu();
|
||||
|
||||
@ -94,15 +94,15 @@
|
||||
var hide = 0;
|
||||
//if (args.hide) { hide = parseInt(args.hide); }
|
||||
if (webPageFullScreen == false) {
|
||||
QC('body').remove("menu_stack");
|
||||
QC('body').remove("fullscreen");
|
||||
QC('body').remove("arg_hide");
|
||||
QC('body').remove('menu_stack');
|
||||
QC('body').remove('fullscreen');
|
||||
QC('body').remove('arg_hide');
|
||||
//if (xxcurrentView >= 10) QC('column_l').add('room4submenu');
|
||||
//QV('UserDummyMenuSpan', false);
|
||||
//QV('page_leftbar', false);
|
||||
} else {
|
||||
QC('body').add("fullscreen");
|
||||
if (hide & 16) QC('body').add("arg_hide"); // This is replacement for QV('page_leftbar', !(hide & 16));
|
||||
QC('body').add('fullscreen');
|
||||
if (hide & 16) QC('body').add('arg_hide'); // This is replacement for QV('page_leftbar', !(hide & 16));
|
||||
//QV('UserDummyMenuSpan', (xxcurrentView < 10) && webPageFullScreen);
|
||||
//QV('page_leftbar', true);
|
||||
}
|
||||
@ -117,9 +117,9 @@
|
||||
putstore('webPageStackMenu', webPageStackMenu);
|
||||
}
|
||||
if (webPageStackMenu == false) {
|
||||
QC('body').remove("menu_stack");
|
||||
QC('body').remove('menu_stack');
|
||||
} else {
|
||||
QC('body').add("menu_stack");
|
||||
QC('body').add('menu_stack');
|
||||
//if (xxcurrentView >= 10) QC('column_l').remove('room4submenu');
|
||||
}
|
||||
}
|
||||
|
@ -267,12 +267,12 @@
|
||||
</div>
|
||||
<script>
|
||||
'use strict';
|
||||
var passhint = "{{{passhint}}}";
|
||||
var passhint = '{{{passhint}}}';
|
||||
var newAccountPass = parseInt('{{{newAccountPass}}}');
|
||||
var emailCheck = ('{{{emailcheck}}}' == 'true');
|
||||
var features = parseInt('{{{features}}}');
|
||||
var passRequirements = "{{{passRequirements}}}";
|
||||
if (passRequirements != "") { passRequirements = JSON.parse(decodeURIComponent(passRequirements)); } else { passRequirements = {}; }
|
||||
var passRequirements = '{{{passRequirements}}}';
|
||||
if (passRequirements != '') { passRequirements = JSON.parse(decodeURIComponent(passRequirements)); } else { passRequirements = {}; }
|
||||
var passRequirementsEx = ((passRequirements.min != null) || (passRequirements.max != null) || (passRequirements.upper != null) || (passRequirements.lower != null) || (passRequirements.numeric != null) || (passRequirements.nonalpha != null));
|
||||
var hardwareKeyChallenge = decodeURIComponent('{{{hkey}}}');
|
||||
var currentpanel = 0;
|
||||
@ -297,8 +297,8 @@
|
||||
}
|
||||
|
||||
if (features & 0x200000) { // Email is username
|
||||
QH('loginusername', 'Email:');
|
||||
QH('resetAccountSpan', 'Forgot password?');
|
||||
QH('loginusername', "Email:");
|
||||
QH('resetAccountSpan', "Forgot password?");
|
||||
QV('nuUserRow', false);
|
||||
}
|
||||
|
||||
@ -311,10 +311,10 @@
|
||||
validateCreate();
|
||||
if ('{{loginmode}}' != '') { go(parseInt('{{loginmode}}')); } else { go(1); }
|
||||
QV('newAccountDiv', ('{{{newAccount}}}' === '1') || ('{{{newAccount}}}' === 'true')); // If new accounts are not allowed, don't display the new account link.
|
||||
if ((passRequirements.hint === true) && (passhint != null) && (passhint.length > 0)) { QV("showPassHintLink", true); }
|
||||
QV("newAccountPass", (newAccountPass == 1));
|
||||
QV("resetAccountDiv", (emailCheck == true));
|
||||
QV("hrAccountDiv", (emailCheck == true) || (newAccountPass == 1));
|
||||
if ((passRequirements.hint === true) && (passhint != null) && (passhint.length > 0)) { QV('showPassHintLink', true); }
|
||||
QV('newAccountPass', (newAccountPass == 1));
|
||||
QV('resetAccountDiv', (emailCheck == true));
|
||||
QV('hrAccountDiv', (emailCheck == true) || (newAccountPass == 1));
|
||||
|
||||
if ('{{loginmode}}' == '4') {
|
||||
try { if (hardwareKeyChallenge.length > 0) { hardwareKeyChallenge = JSON.parse(hardwareKeyChallenge); } else { hardwareKeyChallenge = null; } } catch (ex) { hardwareKeyChallenge = null }
|
||||
@ -396,7 +396,7 @@
|
||||
function go(x) {
|
||||
currentpanel = x;
|
||||
setDialogMode(0);
|
||||
QV("showPassHintLink", false);
|
||||
QV('showPassHintLink', false);
|
||||
QV('loginpanel', x == 1);
|
||||
QV('createpanel', x == 2);
|
||||
QV('resetpanel', x == 3);
|
||||
@ -432,9 +432,9 @@
|
||||
if (!passRequirementsEx) {
|
||||
// No password requirements, display password strength
|
||||
var passStrength = checkPasswordStrength(Q('apassword1').value);
|
||||
if (passStrength >= 80) { QH('passWarning', '<span style=color:green><b>Strong Password</b><span>'); }
|
||||
else if (passStrength >= 60) { QH('passWarning', '<span style=color:blue><b>Good Password</b><span>'); }
|
||||
else { QH('passWarning', '<span style=color:red><b>Weak Password</b><span>'); }
|
||||
if (passStrength >= 80) { QH('passWarning', '<span style=color:green><b>' + "Strong Password" + '</b><span>'); }
|
||||
else if (passStrength >= 60) { QH('passWarning', '<span style=color:blue><b>' + "Good Password" + '</b><span>'); }
|
||||
else { QH('passWarning', '<span style=color:red><b>' + "Weak Password" + '</b><span>'); }
|
||||
} else {
|
||||
// Password requirements provided, use that
|
||||
var passReq = checkPasswordRequirements(Q('apassword1').value, passRequirements);
|
||||
@ -442,7 +442,7 @@
|
||||
ok = false;
|
||||
//QS('nuPass1').color = '#7b241c';
|
||||
//QS('nuPass2').color = '#7b241c';
|
||||
QH('passWarning', '<span style=color:red><b>Password Policy</b><span>'); // TODO: Display problem hint
|
||||
QH('passWarning', '<span style=color:red><b>' + "Password Policy" + '</b><span>'); // TODO: Display problem hint
|
||||
QV('passwordPolicyCallout', true);
|
||||
QH('passwordPolicyCallout', passwordPolicyText(Q('apassword1').value));
|
||||
} else {
|
||||
@ -480,9 +480,9 @@
|
||||
if (!passRequirementsEx) {
|
||||
// No password requirements, display password strength
|
||||
var passStrength = checkPasswordStrength(Q('rapassword1').value);
|
||||
if (passStrength >= 80) { QH('rpassWarning', '<span style=color:green><b>Strong Password</b><span>'); }
|
||||
else if (passStrength >= 60) { QH('rpassWarning', '<span style=color:blue><b>Good Password</b><span>'); }
|
||||
else { QH('rpassWarning', '<span style=color:red><b>Weak Password</b><span>'); }
|
||||
if (passStrength >= 80) { QH('rpassWarning', '<span style=color:green><b>' + "Strong Password" + '</b><span>'); }
|
||||
else if (passStrength >= 60) { QH('rpassWarning', '<span style=color:blue><b>' + "Good Password" + '</b><span>'); }
|
||||
else { QH('rpassWarning', '<span style=color:red><b>' + "Weak Password" + '</b><span>'); }
|
||||
} else {
|
||||
// Password requirements provided, use that
|
||||
var passReq = checkPasswordRequirements(Q('rapassword1').value, passRequirements);
|
||||
@ -490,7 +490,7 @@
|
||||
ok = false;
|
||||
QS('rnuPass1').color = '#7b241c';
|
||||
QS('rnuPass2').color = '#7b241c';
|
||||
QH('rpassWarning', '<div style=color:red;cursor:pointer onclick=showPasswordPolicy()><b>Password Policy</b><div>'); // This is also a link to the password policy
|
||||
QH('rpassWarning', '<div style=color:red;cursor:pointer onclick=showPasswordPolicy()><b>' + "Password Policy" + '</b><div>'); // This is also a link to the password policy
|
||||
QV('rpasswordPolicyCallout', true);
|
||||
QH('rpasswordPolicyCallout', passwordPolicyText(Q('rapassword1').value));
|
||||
} else {
|
||||
@ -513,21 +513,19 @@
|
||||
setDialogMode(0);
|
||||
var x = validateEmail(Q('remail').value);
|
||||
QE('eresetButton', x);
|
||||
if ((e != null) && (e.keyCode == 13) && (x == true)) {
|
||||
Q('eresetButton').click();
|
||||
}
|
||||
if ((e != null) && (e.keyCode == 13) && (x == true)) { Q('eresetButton').click(); }
|
||||
if (e != null) { haltEvent(e); }
|
||||
}
|
||||
|
||||
function passwordPolicyText(pass) {
|
||||
var policy = '<div style=text-align:left>';
|
||||
var counts = strCount(pass);
|
||||
if (passRequirements.min && ((pass == null) || (pass.length < passRequirements.min))) { policy += 'Minimum length of ' + passRequirements.min + '<br />'; }
|
||||
if (passRequirements.max && ((pass == null) || (pass.length > passRequirements.max))) { policy += 'Maximum length of ' + passRequirements.max + '<br />'; }
|
||||
if (passRequirements.upper && ((pass == null) || (counts.upper < passRequirements.upper))) { policy += '' + passRequirements.upper + ' upper case<br />'; }
|
||||
if (passRequirements.lower && ((pass == null) || (counts.lower < passRequirements.lower))) { policy += '' + passRequirements.lower + ' lower case<br />'; }
|
||||
if (passRequirements.numeric && ((pass == null) || (counts.numeric < passRequirements.numeric))) { policy += '' + passRequirements.numeric + ' numeric<br />'; }
|
||||
if (passRequirements.nonalpha && ((pass == null) || (counts.nonalpha < passRequirements.nonalpha))) { policy += passRequirements.nonalpha + ' non-alphanumeric<br />'; }
|
||||
if (passRequirements.min && ((pass == null) || (pass.length < passRequirements.min))) { policy += format("Minimum length of {0}", passRequirements.min) + '<br />'; }
|
||||
if (passRequirements.max && ((pass == null) || (pass.length > passRequirements.max))) { policy += format("Maximum length of {0}", passRequirements.max) + '<br />'; }
|
||||
if (passRequirements.upper && ((pass == null) || (counts.upper < passRequirements.upper))) { policy += format("{0} upper case", passRequirements.upper) + '<br />'; }
|
||||
if (passRequirements.lower && ((pass == null) || (counts.lower < passRequirements.lower))) { policy += format("{0} lower case", passRequirements.lower) + '<br />'; }
|
||||
if (passRequirements.numeric && ((pass == null) || (counts.numeric < passRequirements.numeric))) { policy += format("{0} numeric", passRequirements.numeric) + '<br />'; }
|
||||
if (passRequirements.nonalpha && ((pass == null) || (counts.nonalpha < passRequirements.nonalpha))) { policy += format("{0} non-alphanumeric", passRequirements.nonalpha) + '<br />'; }
|
||||
policy += '</div>';
|
||||
return policy;
|
||||
}
|
||||
@ -621,13 +619,14 @@
|
||||
if (((b & 8) || x) && f) f(x, t);
|
||||
}
|
||||
|
||||
function center() { QS('dialog').left = ((((getDocWidth() - 400) / 2)) + "px"); }
|
||||
function center() { QS('dialog').left = ((((getDocWidth() - 400) / 2)) + 'px'); }
|
||||
function messagebox(t, m) { QH('id_dialogMessage', m); setDialogMode(1, t, 1); }
|
||||
function statusbox(t, m) { QH('id_dialogMessage', m); setDialogMode(1, t); }
|
||||
function getDocWidth() { if (window.innerWidth) return window.innerWidth; if (document.documentElement && document.documentElement.clientWidth && document.documentElement.clientWidth != 0) return document.documentElement.clientWidth; return document.getElementsByTagName('body')[0].clientWidth; }
|
||||
function haltEvent(e) { if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); return false; }
|
||||
function haltReturn(e) { if (e.keyCode == 13) { haltEvent(e); } }
|
||||
function validateEmail(v) { var emailReg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return emailReg.test(v); } // New version
|
||||
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; }); };
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
@ -259,15 +259,15 @@
|
||||
</div>
|
||||
<script>
|
||||
'use strict';
|
||||
var passhint = "{{{passhint}}}";
|
||||
var passhint = '{{{passhint}}}';
|
||||
var newAccountPass = parseInt('{{{newAccountPass}}}');
|
||||
var emailCheck = ('{{{emailcheck}}}' == 'true');
|
||||
var passRequirements = "{{{passRequirements}}}";
|
||||
var passRequirements = '{{{passRequirements}}}';
|
||||
var hardwareKeyChallenge = decodeURIComponent('{{{hkey}}}');
|
||||
if (passRequirements != "") { passRequirements = JSON.parse(decodeURIComponent(passRequirements)); } else { passRequirements = {}; }
|
||||
if (passRequirements != '') { passRequirements = JSON.parse(decodeURIComponent(passRequirements)); } else { passRequirements = {}; }
|
||||
var passRequirementsEx = ((passRequirements.min != null) || (passRequirements.max != null) || (passRequirements.upper != null) || (passRequirements.lower != null) || (passRequirements.numeric != null) || (passRequirements.nonalpha != null));
|
||||
var features = parseInt('{{{features}}}');
|
||||
var welcomeText = decodeURIComponent("{{{welcometext}}}");
|
||||
var welcomeText = decodeURIComponent('{{{welcometext}}}');
|
||||
var currentpanel = 0;
|
||||
var uiMode = parseInt(getstore('uiMode', '1'));
|
||||
var webPageFullScreen = true;
|
||||
@ -299,8 +299,8 @@
|
||||
}
|
||||
|
||||
if (features & 0x200000) { // Email is username
|
||||
QH('loginusername', 'Email:');
|
||||
QH('resetAccountSpan', 'Forgot password?');
|
||||
QH('loginusername', "Email:");
|
||||
QH('resetAccountSpan', "Forgot password?");
|
||||
QV('nuUserRow', false);
|
||||
}
|
||||
|
||||
@ -320,10 +320,10 @@
|
||||
validateCreate();
|
||||
if ('{{loginmode}}' != '') { go(parseInt('{{loginmode}}')); } else { go(1); }
|
||||
QV('newAccountDiv', ('{{{newAccount}}}' === '1') || ('{{{newAccount}}}' === 'true')); // If new accounts are not allowed, don't display the new account link.
|
||||
if ((passhint != null) && (passhint.length > 0)) { QV("showPassHintLink", true); }
|
||||
QV("newAccountPass", (newAccountPass == 1));
|
||||
QV("resetAccountDiv", (emailCheck == true));
|
||||
QV("hrAccountDiv", (emailCheck == true) || (newAccountPass == 1));
|
||||
if ((passhint != null) && (passhint.length > 0)) { QV('showPassHintLink', true); }
|
||||
QV('newAccountPass', (newAccountPass == 1));
|
||||
QV('resetAccountDiv', (emailCheck == true));
|
||||
QV('hrAccountDiv', (emailCheck == true) || (newAccountPass == 1));
|
||||
|
||||
if ('{{loginmode}}' == '4') {
|
||||
try { if (hardwareKeyChallenge.length > 0) { hardwareKeyChallenge = JSON.parse(hardwareKeyChallenge); } else { hardwareKeyChallenge = null; } } catch (ex) { hardwareKeyChallenge = null }
|
||||
@ -414,7 +414,7 @@
|
||||
function go(x) {
|
||||
currentpanel = x;
|
||||
setDialogMode(0);
|
||||
QV("showPassHintLink", false);
|
||||
QV('showPassHintLink', false);
|
||||
QV('loginpanel', x == 1);
|
||||
QV('createpanel', x == 2);
|
||||
QV('resetpanel', x == 3);
|
||||
@ -461,9 +461,9 @@
|
||||
if (!passRequirementsEx) {
|
||||
// No password requirements, display password strength
|
||||
var passStrength = checkPasswordStrength(Q('apassword1').value);
|
||||
if (passStrength >= 80) { QH('passWarning', '<span style=color:green><b>Strong Password</b><span>'); }
|
||||
else if (passStrength >= 60) { QH('passWarning', '<span style=color:blue><b>Good Password</b><span>'); }
|
||||
else { QH('passWarning', '<span style=color:red><b>Weak Password</b><span>'); }
|
||||
if (passStrength >= 80) { QH('passWarning', '<span style=color:green><b>' + "Strong Password" + '</b><span>'); }
|
||||
else if (passStrength >= 60) { QH('passWarning', '<span style=color:blue><b>' + "Good Password" + '</b><span>'); }
|
||||
else { QH('passWarning', '<span style=color:red><b>' + "Weak Password" + '</b><span>'); }
|
||||
} else {
|
||||
// Password requirements provided, use that
|
||||
var passReq = checkPasswordRequirements(Q('apassword1').value, passRequirements);
|
||||
@ -471,7 +471,7 @@
|
||||
ok = false;
|
||||
QS('nuPass1').color = '#7b241c';
|
||||
QS('nuPass2').color = '#7b241c';
|
||||
QH('passWarning', '<div style=color:red;cursor:pointer onclick=showPasswordPolicy()><b>Password Policy</b><div>'); // This is also a link to the password policy
|
||||
QH('passWarning', '<div style=color:red;cursor:pointer onclick=showPasswordPolicy()><b>' + "Password Policy" + '</b><div>'); // This is also a link to the password policy
|
||||
QV('passwordPolicyCallout', true);
|
||||
QH('passwordPolicyCallout', passwordPolicyText(Q('apassword1').value));
|
||||
} else {
|
||||
@ -510,9 +510,9 @@
|
||||
if (!passRequirementsEx) {
|
||||
// No password requirements, display password strength
|
||||
var passStrength = checkPasswordStrength(Q('rapassword1').value);
|
||||
if (passStrength >= 80) { QH('rpassWarning', '<span style=color:green><b>Strong Password</b><span>'); }
|
||||
else if (passStrength >= 60) { QH('rpassWarning', '<span style=color:blue><b>Good Password</b><span>'); }
|
||||
else { QH('rpassWarning', '<span style=color:red><b>Weak Password</b><span>'); }
|
||||
if (passStrength >= 80) { QH('rpassWarning', '<span style=color:green><b>' + "Strong Password" + '</b><span>'); }
|
||||
else if (passStrength >= 60) { QH('rpassWarning', '<span style=color:blue><b>' + "Good Password" + '</b><span>'); }
|
||||
else { QH('rpassWarning', '<span style=color:red><b>' + "Weak Password" + '</b><span>'); }
|
||||
} else {
|
||||
// Password requirements provided, use that
|
||||
var passReq = checkPasswordRequirements(Q('rapassword1').value, passRequirements);
|
||||
@ -520,7 +520,7 @@
|
||||
ok = false;
|
||||
QS('rnuPass1').color = '#7b241c';
|
||||
QS('rnuPass2').color = '#7b241c';
|
||||
QH('rpassWarning', '<div style=color:red;cursor:pointer onclick=showPasswordPolicy()><b>Password Policy</b><div>'); // This is also a link to the password policy
|
||||
QH('rpassWarning', '<div style=color:red;cursor:pointer onclick=showPasswordPolicy()><b>' + "Password Policy" + '</b><div>'); // This is also a link to the password policy
|
||||
QV('rpasswordPolicyCallout', true);
|
||||
QH('rpasswordPolicyCallout', passwordPolicyText(Q('rapassword1').value));
|
||||
} else {
|
||||
@ -542,12 +542,12 @@
|
||||
function passwordPolicyText(pass) {
|
||||
var policy = '<div style=text-align:left>';
|
||||
var counts = strCount(pass);
|
||||
if (passRequirements.min && ((pass == null) || (pass.length < passRequirements.min))) { policy += 'Minimum length of ' + passRequirements.min + '<br />'; }
|
||||
if (passRequirements.max && ((pass == null) || (pass.length > passRequirements.max))) { policy += 'Maximum length of ' + passRequirements.max + '<br />'; }
|
||||
if (passRequirements.upper && ((pass == null) || (counts.upper < passRequirements.upper))) { policy += '' + passRequirements.upper + ' upper case<br />'; }
|
||||
if (passRequirements.lower && ((pass == null) || (counts.lower < passRequirements.lower))) { policy += '' + passRequirements.lower + ' lower case<br />'; }
|
||||
if (passRequirements.numeric && ((pass == null) || (counts.numeric < passRequirements.numeric))) { policy += '' + passRequirements.numeric + ' numeric<br />'; }
|
||||
if (passRequirements.nonalpha && ((pass == null) || (counts.nonalpha < passRequirements.nonalpha))) { policy += passRequirements.nonalpha + ' non-alphanumeric<br />'; }
|
||||
if (passRequirements.min && ((pass == null) || (pass.length < passRequirements.min))) { policy += format("Minimum length of {0}", passRequirements.min) + '<br />'; }
|
||||
if (passRequirements.max && ((pass == null) || (pass.length > passRequirements.max))) { policy += format("Maximum length of {0}", passRequirements.max) + '<br />'; }
|
||||
if (passRequirements.upper && ((pass == null) || (counts.upper < passRequirements.upper))) { policy += format("{0} upper case", passRequirements.upper) + '<br />'; }
|
||||
if (passRequirements.lower && ((pass == null) || (counts.lower < passRequirements.lower))) { policy += format("{0} lower case", passRequirements.lower) + '<br />'; }
|
||||
if (passRequirements.numeric && ((pass == null) || (counts.numeric < passRequirements.numeric))) { policy += format("{0} numeric", passRequirements.numeric) + '<br />'; }
|
||||
if (passRequirements.nonalpha && ((pass == null) || (counts.nonalpha < passRequirements.nonalpha))) { policy += format("{0} non-alphanumeric", passRequirements.nonalpha) + '<br />'; }
|
||||
policy += '</div>';
|
||||
return policy;
|
||||
}
|
||||
@ -657,9 +657,9 @@
|
||||
if (webPageFullScreen == false) {
|
||||
// By adding body class, it will change a style of all ellements using CSS selector
|
||||
// No need for JS anymore and it will be consistent style for all the templates.
|
||||
QC('body').remove("fullscreen");
|
||||
QC('body').remove('fullscreen');
|
||||
} else {
|
||||
QC('body').add("fullscreen");
|
||||
QC('body').add('fullscreen');
|
||||
}
|
||||
QV('body', true);
|
||||
center();
|
||||
@ -707,6 +707,7 @@
|
||||
function validateEmail(v) { var emailReg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return emailReg.test(v); } // New version
|
||||
function putstore(name, val) { try { if (typeof (localStorage) === 'undefined') return; localStorage.setItem(name, val); } catch (e) { } }
|
||||
function getstore(name, val) { try { if (typeof (localStorage) === 'undefined') return val; var v = localStorage.getItem(name); if ((v == null) || (v == null)) return val; return v; } catch (e) { return val; } }
|
||||
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; }); };
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
@ -55,7 +55,7 @@
|
||||
var userMediaSupport = 0;
|
||||
var notification = null;
|
||||
getUserMediaSupport(function (x) { userMediaSupport = x; })
|
||||
var webrtcconfiguration = "{{{webrtconfig}}}";
|
||||
var webrtcconfiguration = '{{{webrtconfig}}}';
|
||||
if (webrtcconfiguration == '') { webrtcconfiguration = null; } else { try { webrtcconfiguration = JSON.parse(decodeURIComponent(webrtcconfiguration)); } catch (ex) { console.log('Invalid WebRTC config: \"' + webrtcconfiguration + '\".'); webrtcconfiguration = null; } }
|
||||
|
||||
// File transfer state
|
||||
@ -165,10 +165,10 @@
|
||||
|
||||
// If web notifications are granted, use it.
|
||||
if (Notification) { QV('notifyButton', Notification.permission != 'granted'); }
|
||||
if (Notification && (Notification.permission == "granted")) {
|
||||
if (Notification && (Notification.permission == 'granted')) {
|
||||
if (notification != null) { notification.close(); notification = null; }
|
||||
if (args.title) {
|
||||
notification = new Notification("MeshMessenger - " + args.title, { body: msg });
|
||||
notification = new Notification("MeshMessenger" + ' - ' + args.title, { body: msg });
|
||||
} else {
|
||||
notification = new Notification("MeshMessenger", { body: msg });
|
||||
}
|
||||
@ -243,7 +243,7 @@
|
||||
|
||||
// Initiate the WebRTC offer or handle the offer from the peer.
|
||||
if (startDataChannel == true) {
|
||||
webchannel = webrtc.createDataChannel("DataChannel", {}); // { ordered: false, maxRetransmits: 2 }
|
||||
webchannel = webrtc.createDataChannel('DataChannel', {}); // { ordered: false, maxRetransmits: 2 }
|
||||
webchannel.onmessage = function (event) { processMessage(event.data, 2); };
|
||||
webchannel.onopen = function () { webchannel.ok = true; updateControls(); sendws({ action: 'rtcSwitch', v: 0 }); };
|
||||
webchannel.onclose = function (event) { if (webchannel && webchannel.ok) { disconnect(); } else { hangUpButtonClick(0); } }
|
||||
@ -276,7 +276,7 @@
|
||||
|
||||
// Disconnect everything
|
||||
function disconnect() {
|
||||
if (state > 0) { displayControl('Connection closed.'); }
|
||||
if (state > 0) { displayControl("Connection closed."); }
|
||||
if (state > 1) { setTimeout(start, 500); }
|
||||
cancelAllFileTransfers();
|
||||
hangUpButtonClick(0, true); // Data channel
|
||||
@ -369,9 +369,9 @@
|
||||
// File sharing button
|
||||
function fileButtonClick() {
|
||||
var chooser = Q('uploadFileInput');
|
||||
if (chooser.getAttribute("eventset") != 1) {
|
||||
chooser.setAttribute("eventset", "1");
|
||||
chooser.addEventListener("change", fileSelect, false);
|
||||
if (chooser.getAttribute('eventset') != 1) {
|
||||
chooser.setAttribute('eventset', '1');
|
||||
chooser.addEventListener('change', fileSelect, false);
|
||||
}
|
||||
chooser.value = null;
|
||||
chooser.click();
|
||||
@ -382,7 +382,7 @@
|
||||
if (state != 2) return;
|
||||
var x = Q('uploadFileInput');
|
||||
if (x.files.length > 10) {
|
||||
displayControl('Limit of 10 file uploads at the same time.');
|
||||
displayControl("Limit of 10 file uploads at the same time.");
|
||||
} else {
|
||||
for (var i = 0; i < x.files.length; i++) {
|
||||
if (x.files[i].size > 0) {
|
||||
@ -400,7 +400,7 @@
|
||||
haltEvent(e);
|
||||
if ((state != 2) || (e.dataTransfer == null)) return;
|
||||
if (e.dataTransfer.files.length > 10) {
|
||||
displayControl('Limit of 10 file uploads at the same time.');
|
||||
displayControl("Limit of 10 file uploads at the same time.");
|
||||
} else {
|
||||
for (var i = 0; i < e.dataTransfer.files.length; i++) {
|
||||
if (e.dataTransfer.files[i].size > 0) {
|
||||
@ -515,7 +515,7 @@
|
||||
|
||||
// Toggle notification
|
||||
function enableNotificationsButtonClick() {
|
||||
if (Notification) { Notification.requestPermission().then(function (permission) { QV('notifyButton', permission != "granted"); }); }
|
||||
if (Notification) { Notification.requestPermission().then(function (permission) { QV('notifyButton', permission != 'granted'); }); }
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -559,13 +559,13 @@
|
||||
}
|
||||
|
||||
if (id == 1) {
|
||||
localVideo.removeAttribute("src");
|
||||
localVideo.removeAttribute("srcObject");
|
||||
localVideo.removeAttribute('src');
|
||||
localVideo.removeAttribute('srcObject');
|
||||
if (localStream != null) { localStream = null; }
|
||||
displayLocalVideo(false);
|
||||
} else if (id == 2) {
|
||||
remoteVideo.removeAttribute("src");
|
||||
remoteVideo.removeAttribute("srcObject");
|
||||
remoteVideo.removeAttribute('src');
|
||||
remoteVideo.removeAttribute('srcObject');
|
||||
displayRemoteVideo(false);
|
||||
}
|
||||
|
||||
@ -605,10 +605,10 @@
|
||||
// Get started
|
||||
updateControls();
|
||||
if ((typeof args.id == 'string') && (args.id.length > 0)) {
|
||||
var url = window.location.protocol.replace("http", "ws") + "//" + window.location.host + window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/')) + '/meshrelay.ashx?id=' + args.id;
|
||||
var url = window.location.protocol.replace('http', 'ws') + '//' + window.location.host + window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/')) + '/meshrelay.ashx?id=' + args.id;
|
||||
if ((args.auth != null) && (args.auth != '')) { url += '&auth=' + args.auth; }
|
||||
socket = new WebSocket(url);
|
||||
socket.onopen = function () { state = 1; displayControl('Waiting for other user...'); }
|
||||
socket.onopen = function () { state = 1; displayControl("Waiting for other user..."); }
|
||||
socket.onerror = function (e) { /*console.error(e);*/ }
|
||||
socket.onclose = function () { disconnect(); }
|
||||
socket.onmessage = function (msg) {
|
||||
@ -616,7 +616,7 @@
|
||||
hangUpButtonClick(0, true);
|
||||
hangUpButtonClick(1, true);
|
||||
hangUpButtonClick(2, true);
|
||||
displayControl('Connected.');
|
||||
displayControl("Connected.");
|
||||
state = 2;
|
||||
updateControls();
|
||||
sendws({ action: 'random', random: random }); // Send a random number. Higher number starts the WebRTC session.
|
||||
@ -625,7 +625,7 @@
|
||||
if (state == 2) { processMessage(msg.data, 1); }
|
||||
}
|
||||
} else {
|
||||
displayControl('Error: No connection key specified.');
|
||||
displayControl("Error: No connection key specified.");
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user