Marius Burkard
2016-04-20 4569cae57f127afd093794310ccd290d2d9fdf36
commit | author | age
3583ff 1 <?php
b1a6a5 2 include '../../lib/config.inc.php';
MC 3 header('Content-Type: text/javascript; charset=utf-8'); // the config file sets the content type header so we have to override it here!
4 require_once '../../lib/app.inc.php';
5 $lang = (isset($_SESSION['s']['language']) && $_SESSION['s']['language'] != '')?$_SESSION['s']['language']:'en';
6 include_once ISPC_ROOT_PATH.'/web/strengthmeter/lib/lang/'.$lang.'_strengthmeter.lng';
7
8 $app->uses('ini_parser,getconf');
9 $server_config_array = $app->getconf->get_global_config();
3583ff 10 ?>
T 11
7b9388 12 <?php
MC 13 $min_password_length = 5;
14 if(isset($server_config_array['misc']['min_password_length'])) {
15     $min_password_length = $app->functions->intval($server_config_array['misc']['min_password_length']);
16 }
17 ?>
18 var pass_minimum_length = <?php echo $min_password_length; ?>;
3583ff 19 var pass_messages = new Array();
T 20
21 var pass_message = new Array();
22 pass_message['text'] = "<?php echo $wb['password_strength_0_txt']?>";
23 pass_message['color'] = "#d0d0d0";
24 pass_messages[0] = pass_message;
25
26 var pass_message = new Array();
27 pass_message['text'] = "<?php echo $wb['password_strength_1_txt']?>";
28 pass_message['color'] = "red";
29 pass_messages[1] = pass_message;
30
31 var pass_message = new Array();
32 pass_message['text'] = "<?php echo $wb['password_strength_2_txt']?>";
33 pass_message['color'] = "yellow";
34 pass_messages[2] = pass_message;
35
36 var pass_message = new Array();
37 pass_message['text'] = "<?php echo $wb['password_strength_3_txt']?>";
38 pass_message['color'] = "#00ff00";
39 pass_messages[3] = pass_message;
40
41 var pass_message = new Array();
42 pass_message['text'] = "<?php echo $wb['password_strength_4_txt']?>";
43 pass_message['color'] = "green";
44 pass_messages[4] = pass_message;
45
46 var pass_message = new Array();
47 pass_message['text'] = "<?php echo $wb['password_strength_5_txt']?>";
48 pass_message['color'] = "green";
49 pass_messages[5] = pass_message;
50
c9e684 51 var special_chars = "`~!@#$%^&*()_+|\=-[]}{';:/?.>,<\" ";
MC 52
3583ff 53 function pass_check(password) {
T 54     var length = password.length;
55     var points = 0;
56     if (length < pass_minimum_length) {
57         pass_result(0);
58         return;
59     }
b1a6a5 60
3583ff 61     if (length < 5) {
T 62         pass_result(1);
63         return;
64     }
c9e684 65     
MC 66     var different = 0;
67     
68     if (pass_contains(password, "abcdefghijklnmopqrstuvwxyz")) {
69         different += 1;
70     }
71     
3583ff 72     if (pass_contains(password, "ABCDEFGHIJKLNMOPQRSTUVWXYZ")) {
T 73         points += 1;
c9e684 74         different += 1;
3583ff 75     }
b1a6a5 76
3583ff 77     if (pass_contains(password, "0123456789")) {
T 78         points += 1;
c9e684 79         different += 1;
3583ff 80     }
b1a6a5 81
c9e684 82     if (pass_contains(password, special_chars)) {
3583ff 83         points += 1;
c9e684 84         different += 1;
3583ff 85     }
b1a6a5 86
c9e684 87     if (points == 0 || different < 3) {
3583ff 88         if (length >= 5 && length <=6) {
T 89             pass_result(1);
90         } else if (length >= 7 && length <=8) {
91             pass_result(2);
92         } else {
93             pass_result(3);
94         }
95     } else if (points == 1) {
96         if (length >= 5 && length <=6) {
97             pass_result(2);
98         } else if (length >= 7 && length <=10) {
99             pass_result(3);
100         } else {
101             pass_result(4);
102         }
103     } else if (points == 2) {
104         if (length >= 5 && length <=8) {
105             pass_result(3);
106         } else if (length >= 9 && length <=10) {
107             pass_result(4);
108         } else {
109             pass_result(5);
110         }
111     } else if (points == 3) {
112         if (length >= 5 && length <=6) {
113             pass_result(3);
114         } else if (length >= 7 && length <=8) {
115             pass_result(4);
116         } else {
117             pass_result(5);
118         }
119     } else if (points >= 4) {
120         if (length >= 5 && length <=6) {
121             pass_result(4);
122         } else {
123             pass_result(5);
124         }
125     }
126 }
127
128
129
130 function pass_result(points, message) {
131     if (points == 0) {
132         width = 10;
133     } else {
134         width = points*20;
135     }
2e999f 136     document.getElementById("passBar").innerHTML = '<div style="background-color: ' + pass_messages[points]['color'] + '; width: ' + width + 'px;" />';
3583ff 137     document.getElementById("passText").innerHTML = pass_messages[points]['text'];
T 138 }
139 function pass_contains(pass, check) {
140     for (i = 0; i < pass.length; i++) {
141         if (check.indexOf(pass.charAt(i)) > -1) {
142             return true;
143         }
144     }
145     return false;
146 }
147
148
00385e 149
c9e684 150 function password(minLength, special, num_special){
726cfa 151     minLength = minLength || 10;
c9e684 152     if(minLength < 8) minLength = 8;
726cfa 153     var maxLength = minLength + 5;
F 154     var length = getRandomInt(minLength, maxLength);
c9e684 155     
af01e4 156     var alphachars = "abcdefghijkmnopqrstuvwxyz";
MB 157     var upperchars = "ABCDEFGHJKLMNPQRSTUVWXYZ";
158     var numchars = "23456789";
c9e684 159     var specialchars = "!@#_";
MC 160     
161     if(num_special == undefined) num_special = 0;
162     if(special != undefined && special == true) {
163         num_special = Math.floor(Math.random() * (length / 4)) + 1;
00385e 164     }
c9e684 165     var numericlen = getRandomInt(1, 2);
MC 166     var alphalen = length - num_special - numericlen;
167     var upperlen = Math.floor(alphalen / 2);
168     alphalen = alphalen - upperlen;
169     var password = "";
170     
171     for(i = 0; i < alphalen; i++) {
172         password += alphachars.charAt(Math.floor(Math.random() * alphachars.length));
00385e 173     }
c9e684 174     
MC 175     for(i = 0; i < upperlen; i++) {
176         password += upperchars.charAt(Math.floor(Math.random() * upperchars.length));
177     }
178     
179     for(i = 0; i < num_special; i++) {
180         password += specialchars.charAt(Math.floor(Math.random() * specialchars.length));
181     }
182     
183     for(i = 0; i < numericlen; i++) {
184         password += numchars.charAt(Math.floor(Math.random() * numchars.length));
185     }
186     
187     password = password.split('').sort(function() { return 0.5 - Math.random(); }).join('');
188     
00385e 189     return password;
F 190 }
191
e960e1 192 <?php
TB 193 $min_password_length = 10;
194 if(isset($server_config_array['misc']['min_password_length'])) {
195     $min_password_length = $app->functions->intval($server_config_array['misc']['min_password_length']);
196 }
197 ?>
198
fdb09c 199 function generatePassword(passwordFieldID, repeatPasswordFieldID){
00385e 200     var oldPWField = jQuery('#'+passwordFieldID);
F 201     var newPWField = oldPWField.clone();
202     newPWField.attr('type', 'text').attr('id', 'tmp'+passwordFieldID).insertBefore(oldPWField);
203     oldPWField.remove();
c9e684 204     var pword = password(<?php echo $min_password_length; ?>, false, 1);
fdb09c 205     jQuery('#'+repeatPasswordFieldID).val(pword);
117ecd 206     newPWField.attr('id', passwordFieldID).val(pword).trigger('keyup').select();
a6e530 207     newPWField.unbind('keyup').on('keyup', function(e) {
MB 208         if($(this).val() != pword) {
209             var pos = $(this).getCursorPosition();
210             $(this).attr('type', 'password').unbind('keyup').setCursorPosition(pos);
211         }
212     });
00385e 213 }
726cfa 214
e27086 215 var funcDisableClick = function(e) { e.preventDefault(); return false; };
M 216
2a1893 217 function checkPassMatch(pwField1,pwField2){
F 218     var rpass = jQuery('#'+pwField2).val();
219     var npass = jQuery('#'+pwField1).val();
220     if(npass!= rpass) {
221         jQuery('#confirmpasswordOK').hide();
222         jQuery('#confirmpasswordError').show();
223         jQuery('button.positive').attr('disabled','disabled');
e27086 224         jQuery('.tabbox_tabs ul li a').each(function() {
M 225             var $this = $(this);
226             $this.data('saved_onclick', $this.attr('onclick'));
227             $this.removeAttr('onclick');
228             $this.click(funcDisableClick);
229         });
2a1893 230         return false;
F 231     } else {
232         jQuery('#confirmpasswordError').hide();
233         jQuery('#confirmpasswordOK').show();
234         jQuery('button.positive').removeAttr('disabled');
e27086 235         jQuery('.tabbox_tabs ul li a').each(function() {
M 236             var $this = $(this);
237             $this.unbind('click', funcDisableClick);
238             if($this.data('saved_onclick') && !$this.attr('onclick')) $this.attr('onclick', $this.data('saved_onclick'));
239         });
2a1893 240     }
F 241 }
242
726cfa 243 function getRandomInt(min, max){
F 244     return Math.floor(Math.random() * (max - min + 1)) + min;
245 }