From e1ceb050e19c7574bca146a8da7047ee4ff456b5 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Sun, 10 Jul 2016 05:02:35 -0400
Subject: [PATCH] Merge branch 'stable-3.1'
---
interface/web/js/scrigo.js.php | 591 ++++++++---------------------------------------------------
1 files changed, 81 insertions(+), 510 deletions(-)
diff --git a/interface/web/js/scrigo.js.php b/interface/web/js/scrigo.js.php
index caa717e..4277b9d 100644
--- a/interface/web/js/scrigo.js.php
+++ b/interface/web/js/scrigo.js.php
@@ -1,402 +1,21 @@
<?php
- session_start();
- include('../../lib/config.inc.php');
- $lang = (isset($_SESSION['s']['language']) && $_SESSION['s']['language'] != '')?$_SESSION['s']['language']:'en';
- include_once(ISPC_ROOT_PATH.'/web/strengthmeter/lib/lang/'.$lang.'_strengthmeter.lng');
+include '../../lib/config.inc.php';
+header('Content-Type: text/javascript; charset=utf-8'); // the config file sets the content type header so we have to override it here!
+require_once '../../lib/app.inc.php';
+$lang = (isset($_SESSION['s']['language']) && $_SESSION['s']['language'] != '')?$_SESSION['s']['language']:'en';
+include_once ISPC_ROOT_PATH.'/web/strengthmeter/lib/lang/'.$lang.'_strengthmeter.lng';
+
+$app->uses('ini_parser,getconf');
+$server_config_array = $app->getconf->get_global_config();
?>
-var pageFormChanged = false;
-var tabChangeWarningTxt = '';
-var tabChangeDiscardTxt = '';
-var tabChangeWarning = false;
-var tabChangeDiscard = false;
-redirect = '';
-function reportError(request) {
- /* Error reporting is disabled by default as some browsers like safari
- sometimes throw errors when a ajax request is delayed even if the
- ajax request worked. */
-
- /*alert(request);*/
+<?php
+$min_password_length = 5;
+if(isset($server_config_array['misc']['min_password_length'])) {
+ $min_password_length = $app->functions->intval($server_config_array['misc']['min_password_length']);
}
-
-function loadContentRefresh(pagename) {
-
- if(document.getElementById('refreshinterval').value > 0) {
- var pageContentObject2 = jQuery.ajax({ type: "GET",
- url: pagename,
- data: "refresh="+document.getElementById('refreshinterval').value,
- dataType: "html",
- success: function(data, textStatus, jqXHR) {
- jQuery('#pageContent').html(jqXHR.responseText);
- pageFormChanged = false;
- },
- error: function() {
- reportError('Ajax Request was not successful.'+pagename);
- }
- });
- setTimeout( "loadContentRefresh('"+pagename+"&refresh="+document.getElementById('refreshinterval').value+"')", document.getElementById('refreshinterval').value*1000 );
- }
-}
-
-function capp(module, redirect) {
- var submitFormObj = jQuery.ajax({ type: "GET",
- url: "capp.php",
- data: "mod="+module+((redirect != undefined) ? '&redirect='+redirect : ''),
- dataType: "html",
- success: function(data, textStatus, jqXHR) {
- if(jqXHR.responseText != '') {
- if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
- var parts = jqXHR.responseText.split(':');
- loadContent(parts[1]);
- } else if (jqXHR.responseText.indexOf('URL_REDIRECT:') > -1) {
- var newUrl= jqXHR.responseText.substr(jqXHR.responseText.indexOf('URL_REDIRECT:') + "URL_REDIRECT:".length);
- document.location.href = newUrl;
- } else {
- //alert(jqXHR.responseText);
- }
- }
- loadMenus();
- },
- error: function() {
- reportError('Ajax Request was not successful.'+module);
- }
- });
-}
-
-function submitLoginForm(formname) {
- //* Validate form. TODO: username and password with strip();
- var frm = document.getElementById(formname);
- var userNameObj = frm.username;
- if(userNameObj.value == ''){
- userNameObj.focus();
- return;
- }
- var passwordObj = frm.passwort;
- if(passwordObj.value == ''){
- passwordObj.focus();
- return;
- }
- var submitFormObj = jQuery.ajax({ type: "POST",
- url: "content.php",
- data: jQuery('#'+formname).serialize(),
- dataType: "html",
- success: function(data, textStatus, jqXHR) {
- if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
- var parts = jqXHR.responseText.split(':');
- //alert(parts[1]);
- loadContent(parts[1]);
- //redirect = parts[1];
- //window.setTimeout('loadContent(redirect)', 1000);
- } else if (jqXHR.responseText.indexOf('LOGIN_REDIRECT:') > -1) {
- // Go to the login page
- document.location.href = 'index.php';
- } else {
- jQuery('#pageContent').html(jqXHR.responseText);
- pageFormChanged = false;
- }
- loadMenus();
- },
- error: function() {
- reportError('Ajax Request was not successful.110');
- }
- });
- /*
- if(redirect != '') {
- loadContent(redirect);
- redirect = '';
- }
- document.getElementById('footer').innerHTML = 'Powered by <a href="http://www.ispconfig.org" target="_blank">ISPConfig</a>';
- */
-
-}
-
-function submitForm(formname,target) {
- var submitFormObj = jQuery.ajax({ type: "POST",
- url: target,
- data: jQuery('#'+formname).serialize(),
- dataType: "html",
- success: function(data, textStatus, jqXHR) {
- if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
- var parts = jqXHR.responseText.split(':');
- //alert(parts[1]);
- loadContent(parts[1]);
- //redirect = parts[1];
- //window.setTimeout('loadContent(redirect)', 1000);
- } else {
- jQuery('#pageContent').html(jqXHR.responseText);
- pageFormChanged = false;
- }
- },
- error: function(jqXHR, textStatus, errorThrown) {
- var parts = jqXHR.responseText.split(':');
- reportError('Ajax Request was not successful. 111');
- }
- });
- /*
- if(redirect != '') {
- loadContent(redirect);
- redirect = '';
- }
- */
-}
-
-function submitFormConfirm(formname,target,confirmation) {
- var successMessage = arguments[3];
- if(window.confirm(confirmation)) {
- var submitFormObj = jQuery.ajax({ type: "POST",
- url: target,
- data: jQuery('#'+formname).serialize(),
- dataType: "html",
- success: function(data, textStatus, jqXHR) {
- if(successMessage) alert(successMessage);
- if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
- var parts = jqXHR.responseText.split(':');
- //alert(parts[1]);
- loadContent(parts[1]);
- //redirect = parts[1];
- //window.setTimeout('loadContent(redirect)', 1000);
- } else {
- jQuery('#pageContent').html(jqXHR.responseText);
- pageFormChanged = false;
- }
- },
- error: function(jqXHR, textStatus, errorThrown) {
- var parts = jqXHR.responseText.split(':');
- reportError('Ajax Request was not successful. 111');
- }
- });
- }
-}
-
-function submitUploadForm(formname,target) {
- var handleResponse = function(loadedFrame) {
- var response, responseStr = loadedFrame.contentWindow.document.body.innerHTML;
-
- try {
- response = JSON.parse(responseStr);
- } catch(e) {
- response = responseStr;
- }
- var msg = '';
- var okmsg = jQuery('#OKMsg',response).html();
- if(okmsg){
- msg = '<div id="OKMsg">'+okmsg+'</div>';
- }
- var errormsg = jQuery('#errorMsg',response).html();
- if(errormsg){
- msg = msg+'<div id="errorMsg">'+errormsg+'</div>';
- }
- return msg;
-
- };
-
- var frame_id = 'ajaxUploader-iframe-' + Math.round(new Date().getTime() / 1000);
- jQuery('body').after('<iframe width="0" height="0" style="display:none;" name="'+frame_id+'" id="'+frame_id+'"/>');
- jQuery('input[type="file"]').closest("form").attr({target: frame_id, action: target}).submit();
- jQuery('#'+frame_id).load(function() {
- var msg = handleResponse(this);
- jQuery('#errorMsg').remove();
- jQuery('#OKMsg').remove();
- jQuery('input[name="id"]').before(msg);
- jQuery(this).remove();
- });
-
- /*
- if(redirect != '') {
- loadContent(redirect);
- redirect = '';
- }
- */
-}
-
-function loadContent(pagename) {
- var params = arguments[1];
- var pageContentObject2 = jQuery.ajax({ type: "GET",
- url: pagename,
- data: (params ? params : null),
- dataType: "html",
- beforeSend: function() {
- jQuery('#pageContent').html('<div id="ajaxloader"><img src="themes/default/images/ajax-loader.gif" /></div>');
- },
- success: function(data, textStatus, jqXHR) {
- if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
- var parts = jqXHR.responseText.split(':');
- loadContent(parts[1]);
- } else if (jqXHR.responseText.indexOf('URL_REDIRECT:') > -1) {
- var newUrl= jqXHR.responseText.substr(jqXHR.responseText.indexOf('URL_REDIRECT:') + "URL_REDIRECT:".length);
- document.location.href = newUrl;
- } else {
- //document.getElementById('pageContent').innerHTML = jqXHR.responseText;
- //var reponse = jQuery(jqXHR.responseText);
- //var reponseScript = reponse.filter("script");
- //jQuery.each(reponseScript, function(idx, val) { eval(val.text); } );
-
- jQuery('#pageContent').html(jqXHR.responseText);
- pageFormChanged = false;
- }
- },
- error: function() {
- reportError('Ajax Request was not successful. 113');
- }
- });
-}
-
-
-function loadInitContent() {
- var pageContentObject = jQuery.ajax({ type: "GET",
- url: "content.php",
- data: "s_mod=login&s_pg=index",
- dataType: "html",
- success: function(data, textStatus, jqXHR) {
- if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
- var parts = jqXHR.responseText.split(":");
- loadContent(parts[1]);
- } else {
- jQuery('#pageContent').html(jqXHR.responseText);
- pageFormChanged = false;
- }
- },
- error: function() {
- reportError('Ajax Request was not successful. 114');
- }
- });
-
- loadMenus();
- keepalive();
- setTimeout("setFocus()",1000);
-
-}
-
-function setFocus() {
- try {
- jQuery('form#pageForm').find('input[name="username"]').focus();
- } catch (e) {
- }
-}
-
-
-function loadMenus() {
- var sideNavObject = jQuery.ajax({ type: "GET",
- url: "nav.php",
- data: "nav=side",
- dataType: "html",
- success: function(data, textStatus, jqXHR) {
- jQuery('#sideNav').html(jqXHR.responseText);
- },
- error: function() {
- reportError('Ajax Request was not successful. 115');
- }
- });
-
- var topNavObject = jQuery.ajax({ type: "GET",
- url: "nav.php",
- data: "nav=top",
- dataType: "html",
- success: function(data, textStatus, jqXHR) {
- jQuery('#topNav').html(jqXHR.responseText);
- },
- error: function(o) {
- reportError('Ajax Request was not successful. 116');
- }
- });
-
-}
-
-function changeTab(tab,target) {
- //document.forms[0].next_tab.value = tab;
- document.pageForm.next_tab.value = tab;
-
- var idel = jQuery('form#pageForm').find('[name="id"]');
- var id = null;
- if(idel.length > 0) id = idel.val();
- if(tabChangeDiscard == 'y') {
- if((idel.length < 1 || id) && (pageFormChanged == false || window.confirm(tabChangeDiscardTxt))) {
- var next_tab = tab;
- if(id) loadContent(target, {'next_tab': next_tab, 'id': id});
- else loadContent(target, {'next_tab': next_tab});
- } else {
- return false;
- }
- } else {
- if(id && tabChangeWarning == 'y' && pageFormChanged == true) {
- if(window.confirm(tabChangeWarningTxt)) {
- submitForm('pageForm', target);
- } else {
- var next_tab = tab;
- if(id) loadContent(target, {'next_tab': next_tab, 'id': id});
- else loadContent(target, {'next_tab': next_tab});
- }
- } else {
- submitForm('pageForm',target);
- }
- }
-}
-
-function del_record(link,confirmation) {
- if(window.confirm(confirmation)) {
- loadContent(link);
- }
-}
-
-function confirm_action(link,confirmation) {
- if(window.confirm(confirmation)) {
- loadContent(link);
- }
-}
-
-function loadContentInto(elementid,pagename) {
- var pageContentObject2 = jQuery.ajax({ type: "GET",
- url: pagename,
- dataType: "html",
- success: function(data, textStatus, jqXHR) {
- jQuery('#'+elementid).html(jqXHR.responseText);
- },
- error: function() {
- reportError('Ajax Request was not successful. 118');
- }
- });
-}
-
-function loadOptionInto(elementid,pagename) {
- var pageContentObject2 = jQuery.ajax({ type: "GET",
- url: pagename,
- dataType: "html",
- success: function(data, textStatus, jqXHR) {
- var teste = jqXHR.responseText;
- var elemente = teste.split('#');
- el=document.getElementById(elementid);
- el.innerHTML='';
- for (var i = 0; i < elemente.length; ++i){
-
- var foo2 = document.createElement("option");
- foo2.appendChild(document.createTextNode(elemente[i]));
- foo2.value=elemente[i];
- el.appendChild(foo2);
- }
- },
- error: function() {
- reportError('Ajax Request was not successful. 119');
- }
- });
-}
-
-function keepalive() {
- var pageContentObject3 = jQuery.ajax({ type: "GET",
- url: "keepalive.php",
- dataType: "html",
- success: function(data, textStatus, jqXHR) {
- setTimeout( keepalive, 1000000 );
- },
- error: function() {
- reportError('Session expired. Please login again.');
- }
- });
- //setTimeout( keepalive, 1000000 );
-}
-
-
-
-var pass_minimum_length = 5;
+?>
+var pass_minimum_length = <?php echo $min_password_length; ?>;
var pass_messages = new Array();
var pass_message = new Array();
@@ -429,6 +48,8 @@
pass_message['color'] = "green";
pass_messages[5] = pass_message;
+var special_chars = "`~!@#$%^&*()_+|\=-[]}{';:/?.>,<\" ";
+
function pass_check(password) {
var length = password.length;
var points = 0;
@@ -436,25 +57,34 @@
pass_result(0);
return;
}
-
+
if (length < 5) {
pass_result(1);
return;
}
+ var different = 0;
+
+ if (pass_contains(password, "abcdefghijklnmopqrstuvwxyz")) {
+ different += 1;
+ }
+
if (pass_contains(password, "ABCDEFGHIJKLNMOPQRSTUVWXYZ")) {
points += 1;
+ different += 1;
}
-
+
if (pass_contains(password, "0123456789")) {
points += 1;
+ different += 1;
}
-
- if (pass_contains(password, "`~!@#$%^&*()_+|\=-[]}{';:/?.>,<\" ")) {
+
+ if (pass_contains(password, special_chars)) {
points += 1;
+ different += 1;
}
-
- if (points == 0) {
+
+ if (points == 0 || different < 3) {
if (length >= 5 && length <=6) {
pass_result(1);
} else if (length >= 7 && length <=8) {
@@ -503,7 +133,7 @@
} else {
width = points*20;
}
- document.getElementById("passBar").innerHTML = '<div style="float:left; height: 10px; padding:0px; background-color: ' + pass_messages[points]['color'] + '; width: ' + width + 'px;" />';
+ document.getElementById("passBar").innerHTML = '<div style="background-color: ' + pass_messages[points]['color'] + '; width: ' + width + 'px;" />';
document.getElementById("passText").innerHTML = pass_messages[points]['text'];
}
function pass_contains(pass, check) {
@@ -515,90 +145,71 @@
return false;
}
-function addAdditionalTemplate(){
- var tpl_add = document.getElementById('template_additional').value;
-
- var tpl_list = document.getElementById('template_additional_list').innerHTML;
- var addTemplate = document.getElementById('tpl_add_select').value.split('|',2);
- var addTplId = addTemplate[0];
- var addTplText = addTemplate[1];
- if(addTplId > 0) {
- var newVal = tpl_add + '/' + addTplId + '/';
- newVal = newVal.replace('//', '/');
- var newList = tpl_list + '<br>' + addTplText;
- newList = newList.replace('<br><br>', '<br>');
- document.getElementById('template_additional').value = newVal;
- document.getElementById('template_additional_list').innerHTML = newList;
- alert('additional template ' + addTplText + ' added to customer');
- } else {
- alert('no additional template selcted');
- }
-}
-function delAdditionalTemplate(){
- var tpl_add = document.getElementById('template_additional').value;
- if(tpl_add != '') {
- var tpl_list = document.getElementById('template_additional_list').innerHTML;
- var addTemplate = document.getElementById('tpl_add_select').value.split('|',2);
- var addTplId = addTemplate[0];
- var addTplText = addTemplate[1];
- var newVal = tpl_add;
- newVal = newVal.replace(addTplId, '');
- newVal = newVal.replace('//', '/');
- var newList = tpl_list.replace(addTplText, '');
- newList = newList.replace('<br><br>', '<br>');
- document.getElementById('template_additional').value = newVal;
- document.getElementById('template_additional_list').innerHTML = newList;
- alert('additional template ' + addTplText + ' deleted from customer');
- } else {
- alert('no additional template selcted');
- }
-
-}
-function getInternetExplorerVersion() {
- var rv = -1; // Return value assumes failure.
- if (navigator.appName == 'Microsoft Internet Explorer') {
- var ua = navigator.userAgent;
- var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
- if (re.exec(ua) != null)
- rv = parseFloat(RegExp.$1);
- }
- return rv;
-}
-
-function password(minLength, special){
- var iteration = 0;
- var password = "";
- var randomNumber;
+function password(minLength, special, num_special){
minLength = minLength || 10;
+ if(minLength < 8) minLength = 8;
var maxLength = minLength + 5;
var length = getRandomInt(minLength, maxLength);
- if(special == undefined){
- var special = false;
+
+ var alphachars = "abcdefghijkmnopqrstuvwxyz";
+ var upperchars = "ABCDEFGHJKLMNPQRSTUVWXYZ";
+ var numchars = "23456789";
+ var specialchars = "!@#_";
+
+ if(num_special == undefined) num_special = 0;
+ if(special != undefined && special == true) {
+ num_special = Math.floor(Math.random() * (length / 4)) + 1;
}
- while(iteration < length){
- randomNumber = (Math.floor((Math.random() * 100)) % 94) + 33;
- if(!special){
- if ((randomNumber >=33) && (randomNumber <=47)) { continue; }
- if ((randomNumber >=58) && (randomNumber <=64)) { continue; }
- if ((randomNumber >=91) && (randomNumber <=96)) { continue; }
- if ((randomNumber >=123) && (randomNumber <=126)) { continue; }
- }
- iteration++;
- password += String.fromCharCode(randomNumber);
+ var numericlen = getRandomInt(1, 2);
+ var alphalen = length - num_special - numericlen;
+ var upperlen = Math.floor(alphalen / 2);
+ alphalen = alphalen - upperlen;
+ var password = "";
+
+ for(i = 0; i < alphalen; i++) {
+ password += alphachars.charAt(Math.floor(Math.random() * alphachars.length));
}
+
+ for(i = 0; i < upperlen; i++) {
+ password += upperchars.charAt(Math.floor(Math.random() * upperchars.length));
+ }
+
+ for(i = 0; i < num_special; i++) {
+ password += specialchars.charAt(Math.floor(Math.random() * specialchars.length));
+ }
+
+ for(i = 0; i < numericlen; i++) {
+ password += numchars.charAt(Math.floor(Math.random() * numchars.length));
+ }
+
+ password = password.split('').sort(function() { return 0.5 - Math.random(); }).join('');
+
return password;
}
+
+<?php
+$min_password_length = 10;
+if(isset($server_config_array['misc']['min_password_length'])) {
+ $min_password_length = $app->functions->intval($server_config_array['misc']['min_password_length']);
+}
+?>
function generatePassword(passwordFieldID, repeatPasswordFieldID){
var oldPWField = jQuery('#'+passwordFieldID);
var newPWField = oldPWField.clone();
newPWField.attr('type', 'text').attr('id', 'tmp'+passwordFieldID).insertBefore(oldPWField);
oldPWField.remove();
- var pword = password(10, false);
+ var pword = password(<?php echo $min_password_length; ?>, false, 1);
jQuery('#'+repeatPasswordFieldID).val(pword);
- newPWField.attr('id', passwordFieldID).val(pword).trigger('keyup');
+ newPWField.attr('id', passwordFieldID).val(pword).trigger('keyup').select();
+ newPWField.unbind('keyup').on('keyup', function(e) {
+ if($(this).val() != pword) {
+ var pos = $(this).getCursorPosition();
+ $(this).attr('type', 'password').unbind('keyup').setCursorPosition(pos);
+ }
+ });
}
var funcDisableClick = function(e) { e.preventDefault(); return false; };
@@ -632,43 +243,3 @@
function getRandomInt(min, max){
return Math.floor(Math.random() * (max - min + 1)) + min;
}
-
-jQuery('.addPlaceholder').live("click", function(){
- var placeholderText = jQuery(this).text();
- var template = jQuery(this).siblings(':input');
- template.insertAtCaret(placeholderText);
-});
-
-jQuery('.addPlaceholderContent').live("click", function(){
- var placeholderContentText = jQuery(this).find('.addPlaceholderContent').text();
- var template2 = jQuery(this).siblings(':input');
- template2.insertAtCaret(placeholderContentText);
-});
-
-jQuery.fn.extend({
- insertAtCaret: function(myValue){
- return this.each(function(i) {
- if (document.selection) {
- //For browsers like Internet Explorer
- this.focus();
- sel = document.selection.createRange();
- sel.text = myValue;
- this.focus();
- } else if (this.selectionStart || this.selectionStart == '0') {
- //For browsers like Firefox and Webkit based
- var startPos = this.selectionStart;
- var endPos = this.selectionEnd;
- var scrollTop = this.scrollTop;
- this.value = this.value.substring(0, startPos)+myValue+this.value.substring(endPos,this.value.length);
- this.focus();
- this.selectionStart = startPos + myValue.length;
- this.selectionEnd = startPos + myValue.length;
- this.scrollTop = scrollTop;
- } else {
- this.value += myValue;
- this.focus();
- }
- })
- }
-});
-
--
Gitblit v1.9.1