Subversion Repositories ALCASAR

Rev

Rev 2164 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log

Rev Author Line No. Line
345 richard 1
<?php
2207 tom.houday 2
# $Id: index.php 2207 2017-05-06 18:10:53Z tom.houdayer $
3
#
2111 richard 4
# change user password on ALACASAR NAC
345 richard 5
# Copyright (C) 2003, 2004 Mondru AB.
2111 richard 6
# Copyright (C) 2008-20017 ANGEL95 & REXY
345 richard 7
 
2207 tom.houday 8
define('CONF_FILE', '/usr/local/etc/alcasar.conf');
9
 
10
// Read CONF_FILE
11
$file_conf = fopen(CONF_FILE, 'r');
12
if (!$file_conf) {
13
	exit('Error opening the file '.CONF_FILE);
14
}
15
while (!feof($file_conf)) {
16
	$tampon = fgets($file_conf, 4096);
17
	if ((strpos($tampon, '=') !== false) && (substr($tampon, 0, 1) !== '#')) {
18
		$tmp = explode('=', $tampon);
19
		$conf[$tmp[0]] = trim($tmp[1]);
20
	}
21
}
22
fclose($file_conf);
23
 
345 richard 24
require('/etc/freeradius-web/config.php');
25
 
2163 tom.houday 26
$current_page = htmlspecialchars($_SERVER['PHP_SELF']);
2207 tom.houday 27
$homepage = (((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')) ? 'https' : 'http').'://'.trim($conf['HOSTNAME']).'.'.trim($conf['DOMAIN']);
345 richard 28
 
29
# Choice of language
912 richard 30
$Language = 'en';
345 richard 31
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
32
  $Langue = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
33
  $Language = strtolower(substr(chop($Langue[0]),0,2)); }
34
if($Language == 'es'){
35
$R_title = "User password change";
36
$R_form_l1 = "User";
37
$R_form_l2 = "Old password";
38
$R_form_l3 = "New password";
39
$R_form_l4 = "New password (confirmation)";
647 richard 40
$R_eval_pass = "Score :";
688 richard 41
$R_passwordmeter = "Powered by 'Shibbo Password Analyser'</a>";
647 richard 42
$R_form_button_valid = "Modify";
43
$R_form_button_retour = "Cancel";
345 richard 44
$R_form_result1 = "Your password has been successfuly changed";
45
$R_form_result2 = "Error when trying to change password";
509 richard 46
$R_retour = "ALCASAR home page";}
912 richard 47
else if ($Language == 'pt'){
48
$R_title = "Alteração de senha do usuário";
49
$R_form_l1 = "Usuário";
50
$R_form_l2 = "Senha antiga";
51
$R_form_l3 = "Nova senha";
52
$R_form_l4 = "Nova senha (confirmação)";
53
$R_eval_pass = "Resultado:";
688 richard 54
$R_passwordmeter = "Powered by 'Shibbo Password Analyser'</a>";
912 richard 55
$R_form_button_valid = "Modificar";
56
$R_form_button_retour = "Cancelar";
57
$R_form_result1 = "Sua senha foi alterada com sucesso";
58
$R_form_result2 = "Erro ao tentar alterar a senha";
59
$R_retour = "Home page Alcasar";}
60
else if($Language == 'de'){
345 richard 61
$R_title = "User password change";
62
$R_form_l1 = "User";
63
$R_form_l2 = "Old password";
64
$R_form_l3 = "New password";
65
$R_form_l4 = "New password (confirmation)";
647 richard 66
$R_eval_pass = "Score :";
688 richard 67
$R_passwordmeter = "Powered by 'Shibbo Password Analyser'</a>";
647 richard 68
$R_form_button_valid = "Modify";
69
$R_form_button_retour = "Cancel";
345 richard 70
$R_form_result1 = "Your password has been successfuly changed";
71
$R_form_result2 = "Error when trying to change password";
509 richard 72
$R_retour = "ALCASAR home page";}
912 richard 73
else if($Language == 'nl'){
345 richard 74
$R_title = "User password change";
75
$R_form_l1 = "User";
76
$R_form_l2 = "Old password";
77
$R_form_l3 = "New password";
78
$R_form_l4 = "New password (confirmation)";
647 richard 79
$R_eval_pass = "Score :";
688 richard 80
$R_passwordmeter = "Powered by 'Shibbo Password Analyser'</a>";
647 richard 81
$R_form_button_valid = "Modify";
82
$R_form_button_retour = "Cancel";
345 richard 83
$R_form_result1 = "Your password has been successfuly changed";
84
$R_form_result2 = "Error when trying to change password";
509 richard 85
$R_retour = "ALCASAR home page";}
2083 richard 86
else if($Language == 'zh'){
87
$R_title = "修改用户密码";
88
$R_form_l1 = "用户";
89
$R_form_l2 = "旧密码";
90
$R_form_l3 = "新密码";
91
$R_form_l4 = "新密码(确认)";
92
$R_eval_pass = "";
93
$R_passwordmeter = "技术支持 'Shibbo Password Analyser'</a>";
94
$R_form_button_valid = "修改";
95
$R_form_button_retour = "取消";
96
$R_form_result1 = "您的密码已成功修改";
97
$R_form_result2 = "修改密码出错";
98
$R_retour = "返回首页";}
2111 richard 99
else if ($Language == 'ar'){
100
$R_title = "تغيير كلمة المرور للمستخدم";
101
$R_form_l1 = "المستعمل";
102
$R_form_l2 = "كلمه السر القديمة";
103
$R_form_l3 = "كلمة السر الجديدة";
104
$R_form_l4 = "كلمة السر الجديدة (أكد)";
105
$R_eval_pass = "";
106
$R_passwordmeter = "مشغل بواسطة 'Shibbo Password Analyser'" . "</a>";
107
$R_form_button_valid = "تغيير";
108
$R_form_button_retour = "إلغاء";
109
$R_form_result1 = "تم تغيير الرقم السري بنجاح";
110
$R_form_result2 = "خطأ عند محاولة تغيير كلمة المرور";
111
$R_retour = "رجوع إلى الصفحة الرئيسية ALCASAR";	
112
}
912 richard 113
else if($Language == 'fr'){
345 richard 114
$R_title = "Changement de mot de passe utilisateur";
647 richard 115
$R_form_l1 = "Utilisateur :";
116
$R_form_l2 = "Ancien mot de passe :";
117
$R_form_l3 = "Nouveau mot de passe :";
118
$R_form_l4 = "Nouveau mot de passe (confirmation) :";
119
$R_eval_pass = "";
688 richard 120
$R_passwordmeter = "Propulsé par 'Shibbo Password Analyser'</a>";
647 richard 121
$R_form_button_valid = "Modifier";
122
$R_form_button_retour = "Annuler";
345 richard 123
$R_form_result1 = "Votre mot de passe a &eacute;t&eacute; modifi&eacute; avec succ&egrave;s";
124
$R_form_result2 = "Erreur de changement de mot de passe";
912 richard 125
$R_retour = "Retour &agrave; la page d'accueil ALCASAR";}
126
else {
127
$R_title = "User password change";
128
$R_form_l1 = "User";
129
$R_form_l2 = "Old password";
130
$R_form_l3 = "New password";
131
$R_form_l4 = "New password (confirmation)";
132
$R_eval_pass = "Score :";
133
$R_passwordmeter = "Powered by 'Shibbo Password Analyser'</a>";
134
$R_form_button_valid = "Modify";
135
$R_form_button_retour = "Cancel";
136
$R_form_result1 = "Your password has been successfuly changed";
137
$R_form_result2 = "Error when trying to change password";
138
$R_retour = "ALCASAR home page";
345 richard 139
}
140
echo "
2158 richard 141
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
345 richard 142
<html>
509 richard 143
	<head>
144
		<title>$R_title</title>
145
		<meta http-equiv=\"Cache-control\" content=\"no-cache\">
146
		<meta http-equiv=\"Pragma\" content=\"no-cache\">
147
		<link rel=\"stylesheet\" href=\"../css/pass.css\" type=\"text/css\">
2003 raphael.pi 148
		<link rel=\"stylesheet\" href=\"../css/style_intercept.css\" type=\"text/css\">
647 richard 149
		<link type=\"text/css\" href=\"../css/pwdmeter.css\" media=\"screen\" rel=\"stylesheet\" />
150
		<!--[if lt IE 7]>
151
			<link type=\"text/css\" href=\"../css/ie.css\" media=\"screen\" rel=\"stylesheet\" />
152
		<![endif]-->
153
		<script type=\"text/javascript\" src=\"js/pwdmeter.js\" language=\"javascript\"></script>	
2158 richard 154
		<script type=\"text/javascript\">
155
			function valoriserDiv5(param){
156
			document.getElementById(\"box_info\").innerHTML = param.innerHTML;
157
			}
158
		</script>
509 richard 159
	</head>
2003 raphael.pi 160
	<body onload=\"valoriserDiv5(text_conn);\">
161
				<div id=\"cadre_titre\" class=\"titre_controle\">
162
					<p id=\"acces_controle\" class=\"titre_controle\">$R_title</p>			
163
					<div id=\"boite_logo\">
164
						<img src=\"/images/organisme.png\">
165
					</div>
647 richard 166
				</div>
2003 raphael.pi 167
				<div id=\"contenu_acces\">
647 richard 168
					<form name=\"master\" action=\"$current_page\" method=\"post\">
169
					<input type=hidden name=action value=checkpass>
2164 richard 170
						<table id=\"champs_pass\" border=\"0\">
647 richard 171
							<tr>
172
								<td class=\"first_item\">$R_form_l1</td>
173
								<td><input type=\"text\" name=\"login\" value=\"\" label=\"test\"></td>
174
							</tr>	
175
							<tr>
176
								<td class=\"first_item\">$R_form_l2</td>
177
								<td><input type=\"password\" name=\"passwd\" value=\"\"></td>
178
							</tr>
179
							<tr>
180
								<td class=\"first_item\">$R_form_l3</td>
181
								<td>
182
									<input type=\"password\" name=\"newpasswd\" id=\"passwordPwd\" value=\"\" autocomplete=\"off\" onkeyup=\"chkPass(this.value);\" />
183
									<input type=\"text\" id=\"passwordTxt\" name=\"passwordTxt\" autocomplete=\"off\" onkeyup=\"chkPass(this.value);\" class=\"hide\" />
184
								</td>
185
							</tr>
186
							<tr>
187
								<td class=\"first_item\">$R_eval_pass</td>
188
								<td>
189
									<div id=\"scorebarBorder\">
190
										<div id=\"score\">0%</div>
191
										<div id=\"scorebar\">&nbsp;</div>
192
									</div>
193
									<div id=\"complexity\"></div>
194
								</td>
195
							</tr>
196
							<tr>
197
								<td colspan=\"2\" id=\"lien_pass\">$R_passwordmeter</td>
198
							</tr>
199
							<tr>
200
								<td class=\"first_item\">$R_form_l4</td>
201
								<td><input type=\"password\" name=\"newpasswd2\" value=\"\"></td>
202
							</tr>
2158 richard 203
							<tr>
204
								<td colspan=\"2\" id=\"lien_pass\">
205
								<input type=\"submit\" class=\"btn_form\" id=\"btn_pass\" value=\"$R_form_button_valid\">
2207 tom.houday 206
								<input type=\"button\" class=\"btn_form\" id=\"btn_retour\" value=\"$R_form_button_retour\" onclick=\"location.replace('$homepage');\">
2158 richard 207
								</td>
208
							</tr>
647 richard 209
						</table>
210
				</div>
509 richard 211
			</div>
647 richard 212
			<div id=\"info_pass\">
2158 richard 213
				<table id=\"tablePwdStatus\" cellpadding=\"5\" cellspacing=\"1\" border=\"0\">
647 richard 214
					<tr>
215
						<th colspan=\"2\">Additions</th>
216
						<th class=\"txtCenter\">Type</th>
217
						<th class=\"txtCenter\">Rate</th>
218
						<th class=\"txtCenter\">Count</th>
219
						<th class=\"txtCenter\">Bonus</th>
220
					</tr>
221
					<tr>
222
						<td width=\"1%\"><div id=\"div_nLength\" class=\"fail\">&nbsp;</div></td>
223
						<td width=\"94%\">Number of Characters</td>
224
						<td width=\"1%\" class=\"txtCenter\">Flat</td>
225
						<td width=\"1%\" class=\"txtCenter italic\">+(n*4)</td>
226
						<td width=\"1%\"><div id=\"nLength\" class=\"box\">&nbsp;</div></td>
227
						<td width=\"1%\"><div id=\"nLengthBonus\" class=\"boxPlus\">&nbsp;</div></td>
228
					</tr>	
229
					<tr>
230
						<td><div id=\"div_nAlphaUC\" class=\"fail\">&nbsp;</div></td>
231
						<td>Uppercase Letters</td>
232
						<td class=\"txtCenter\">Cond/Incr</td>
233
						<td nowrap=\"nowrap\" class=\"txtCenter italic\">+((len-n)*2)</td>
234
					   <td><div id=\"nAlphaUC\" class=\"box\">&nbsp;</div></td>
235
						<td><div id=\"nAlphaUCBonus\" class=\"boxPlus\">&nbsp;</div></td>
236
					</tr>	
237
					<tr>
238
						<td><div id=\"div_nAlphaLC\" class=\"fail\">&nbsp;</div></td>
239
						<td>Lowercase Letters</td>
240
						<td class=\"txtCenter\">Cond/Incr</td>
241
						<td class=\"txtCenter italic\">+((len-n)*2)</td>
242
						<td><div id=\"nAlphaLC\" class=\"box\">&nbsp;</div></td>
243
						<td><div id=\"nAlphaLCBonus\" class=\"boxPlus\">&nbsp;</div></td>
244
					</tr>
245
					<tr>
246
						<td><div id=\"div_nNumber\" class=\"fail\">&nbsp;</div></td>
247
						<td>Numbers</td>
248
						<td class=\"txtCenter\">Cond</td>
249
						<td class=\"txtCenter italic\">+(n*4)</td>
250
						<td><div id=\"nNumber\" class=\"box\">&nbsp;</div></td>
251
						<td><div id=\"nNumberBonus\" class=\"boxPlus\">&nbsp;</div></td>
252
				   </tr>
253
					<tr>
254
						<td><div id=\"div_nSymbol\" class=\"fail\">&nbsp;</div></td>
255
						<td>Symbols</td>
256
						<td class=\"txtCenter\">Flat</td>
257
						<td class=\"txtCenter italic\">+(n*6)</td>
258
						<td><div id=\"nSymbol\" class=\"box\">&nbsp;</div></td>
259
						<td><div id=\"nSymbolBonus\" class=\"boxPlus\">&nbsp;</div></td>
260
				   </tr>
261
					<tr>
262
						<td><div id=\"div_nMidChar\" class=\"fail\">&nbsp;</div></td>
263
						<td>Middle Numbers or Symbols</td>
264
						<td class=\"txtCenter\">Flat</td>
265
						<td class=\"txtCenter italic\">+(n*2)</td>
266
						<td><div id=\"nMidChar\" class=\"box\">&nbsp;</div></td>
267
						<td><div id=\"nMidCharBonus\" class=\"boxPlus\">&nbsp;</div></td>
268
				   </tr>
269
					<tr>
270
						<td><div id=\"div_nRequirements\" class=\"fail\">&nbsp;</div></td>
271
						<td>Requirements</td>
272
						<td class=\"txtCenter\">Flat</td>
273
						<td class=\"txtCenter italic\">+(n*2)</td>
274
						<td><div id=\"nRequirements\" class=\"box\">&nbsp;</div></td>
275
						<td><div id=\"nRequirementsBonus\" class=\"boxPlus\">&nbsp;</div></td>
276
				   </tr>
277
					<tr>
278
						<th colspan=\"6\">Deductions</th>
279
					</tr>
280
					<tr>
281
						<td width=\"1%\"><div id=\"div_nAlphasOnly\" class=\"pass\">&nbsp;</div></td>
282
						<td width=\"94%\">Letters Only</td>
283
						<td width=\"1%\" class=\"txtCenter\">Flat</td>
284
						<td width=\"1%\" class=\"txtCenter italic\">-n</td>
285
						<td width=\"1%\"><div id=\"nAlphasOnly\" class=\"box\">&nbsp;</div></td>
286
						<td width=\"1%\"><div id=\"nAlphasOnlyBonus\" class=\"boxMinus\">&nbsp;</div></td>
287
					</tr>	
288
					<tr>
289
						<td><div id=\"div_nNumbersOnly\" class=\"pass\">&nbsp;</div></td>
290
						<td>Numbers Only</td>
291
						<td class=\"txtCenter\">Flat</td>
292
						<td class=\"txtCenter italic\">-n</td>
293
						<td><div id=\"nNumbersOnly\" class=\"box\">&nbsp;</div></td>
294
						<td><div id=\"nNumbersOnlyBonus\" class=\"boxMinus\">&nbsp;</div></td>
295
					</tr>	
296
					<tr>
297
						<td><div id=\"div_nRepChar\" class=\"pass\">&nbsp;</div></td>
298
						<td>Repeat Characters (Case Insensitive)</td>
299
						<td class=\"txtCenter\">Comp</td>
300
						<td nowrap=\"nowrap\" class=\"txtCenter italic\"> - </td>
301
						<td><div id=\"nRepChar\" class=\"box\">&nbsp;</div></td>
302
						<td><div id=\"nRepCharBonus\" class=\"boxMinus\">&nbsp;</div></td>
303
					</tr>	
304
					<tr>
305
						<td><div id=\"div_nConsecAlphaUC\" class=\"pass\">&nbsp;</div></td>
306
						<td>Consecutive Uppercase Letters</td>
307
						<td class=\"txtCenter\">Flat</td>
308
						<td class=\"txtCenter italic\">-(n*2)</td>
309
						<td><div id=\"nConsecAlphaUC\" class=\"box\">&nbsp;</div></td>
310
						<td><div id=\"nConsecAlphaUCBonus\" class=\"boxMinus\">&nbsp;</div></td>
311
					</tr>	
312
					<tr>
313
						<td><div id=\"div_nConsecAlphaLC\" class=\"pass\">&nbsp;</div></td>
314
						<td>Consecutive Lowercase Letters</td>
315
						<td class=\"txtCenter\">Flat</td>
316
						<td class=\"txtCenter italic\">-(n*2)</td>
317
						<td><div id=\"nConsecAlphaLC\" class=\"box\">&nbsp;</div></td>
318
						<td><div id=\"nConsecAlphaLCBonus\" class=\"boxMinus\">&nbsp;</div></td>
319
					</tr>	
320
					<tr>
321
						<td><div id=\"div_nConsecNumber\" class=\"pass\">&nbsp;</div></td>
322
						<td>Consecutive Numbers</td>
323
						<td class=\"txtCenter\">Flat</td>
324
						<td class=\"txtCenter italic\">-(n*2)</td>
325
						<td><div id=\"nConsecNumber\" class=\"box\">&nbsp;</div></td>
326
						<td><div id=\"nConsecNumberBonus\" class=\"boxMinus\">&nbsp;</div></td>
327
					</tr>	
328
					<tr>
329
						<td><div id=\"div_nSeqAlpha\" class=\"pass\">&nbsp;</div></td>
330
						<td>Sequential Letters (3+)</td>
331
						<td class=\"txtCenter\">Flat</td>
332
						<td class=\"txtCenter italic\">-(n*3)</td>
333
						<td><div id=\"nSeqAlpha\" class=\"box\">&nbsp;</div></td>
334
						<td><div id=\"nSeqAlphaBonus\" class=\"boxMinus\">&nbsp;</div></td>
335
					</tr>	
336
					<tr>
337
						<td><div id=\"div_nSeqNumber\" class=\"pass\">&nbsp;</div></td>
338
						<td>Sequential Numbers (3+)</td>
339
						<td class=\"txtCenter\">Flat</td>
340
						<td class=\"txtCenter italic\">-(n*3)</td>
341
						<td><div id=\"nSeqNumber\" class=\"box\">&nbsp;</div></td>
342
						<td><div id=\"nSeqNumberBonus\" class=\"boxMinus\">&nbsp;</div></td>
343
					</tr>	
344
					<tr>
345
						<td><div id=\"div_nSeqSymbol\" class=\"pass\">&nbsp;</div></td>
346
						<td>Sequential Symbols (3+)</td>
347
						<td class=\"txtCenter\">Flat</td>
348
						<td class=\"txtCenter italic\">-(n*3)</td>
349
						<td><div id=\"nSeqSymbol\" class=\"box\">&nbsp;</div></td>
350
						<td><div id=\"nSeqSymbolBonus\" class=\"boxMinus\">&nbsp;</div></td>
351
					</tr>	
352
					<tr>
353
						<th colspan=\"6\">Legend</th>
354
					</tr>
355
					<tr>
356
						<td colspan=\"6\">
357
							<ul id=\"listLegend\">
358
								<li><div class=\"exceed imgLegend\">&nbsp;</div> <span class=\"bold\">Exceptional:</span> Exceeds minimum standards. Additional bonuses are applied.</li>
359
								<li><div class=\"pass imgLegend\">&nbsp;</div> <span class=\"bold\">Sufficient:</span> Meets minimum standards. Additional bonuses are applied.</li>
360
								<li><div class=\"warn imgLegend\">&nbsp;</div> <span class=\"bold\">Warning:</span> Advisory against employing bad practices. Overall score is reduced.</li>
361
								<li><div class=\"fail imgLegend\">&nbsp;</div> <span class=\"bold\">Failure:</span> Does not meet the minimum standards. Overall score is reduced.</li>
362
							</ul>
363
						</td>
364
					</tr>
365
				</table>
366
			   <table id=\"tablePwdNotes\" cellpadding=\"5\" cellspacing=\"1\" border=\"0\">
367
					<tr>
368
						<th>Quick Footnotes</th>
369
					</tr>
370
					<tr>
371
						<td>
372
							&bull; <strong>Flat:</strong> Rates that add/remove in non-changing increments.<br />
373
							&bull; <strong>Incr:</strong> Rates that add/remove in adjusting increments.<br />
374
							&bull; <strong>Cond:</strong> Rates that add/remove depending on additional factors.<br />
375
							&bull; <strong>Comp:</strong> Rates that are too complex to summarize. See source code for details.<br />
376
							&bull; <strong>n:</strong> Refers to the total number of occurrences.<br />
377
							&bull; <strong>len:</strong> Refers to the total password length.<br />
378
							&bull; Additional bonus scores are given for increased character variety.<br />
379
							&bull; Final score is a cumulative result of all bonuses minus deductions.<br />
380
							&bull; Final score is capped with a minimum of 0 and a maximum of 100.<br />
381
							&bull; Score and Complexity ratings are not conditional on meeting minimum requirements.<br />
382
						</td>
383
					</tr>
384
				</table>
2158 richard 385
			</div>
509 richard 386
";
345 richard 387
if (isset($action)){
388
	if ($action == 'checkpass'){
2164 richard 389
		if (is_file("../acc/manager/lib/sql/drivers/$config[sql_type]/functions.php"))
390
			include_once("../acc/manager/lib/sql/drivers/$config[sql_type]/functions.php");
2160 tom.houday 391
		else{
392
			echo "<b>Could not include SQL library</b><br>\n";
393
			exit();
394
		}
345 richard 395
	$link = @da_sql_pconnect($config);
647 richard 396
		if ($link){
397
			$res = @da_sql_query($link,$config,
398
				"SELECT attribute,value FROM $config[sql_check_table] WHERE username = '$login'
399
				AND attribute = '$config[sql_password_attribute]';");
400
			if ($res){
401
				$row = @da_sql_fetch_array($res,$config);
402
				if (is_file("crypt/$config[general_encryption_method].php")){
403
					include("crypt/$config[general_encryption_method].php");
404
					$enc_passwd = $row['value'];
405
					$passwd = da_encrypt($passwd,$enc_passwd);
406
					$newpasswd = da_encrypt($newpasswd,$enc_passwd);
407
					$newpasswd2 = da_encrypt($newpasswd2,$enc_passwd);
408
					if (($passwd == $enc_passwd) and ($newpasswd == $newpasswd2)){
409
						$msg = '<font color=blue><b>'.$R_form_result1.'</b></font>';
410
						$res2 = @da_sql_query($link,$config,
411
							"UPDATE $config[sql_check_table] set value='$newpasswd' WHERE username = '$login'
412
							AND attribute = '$config[sql_password_attribute]';");}
413
					else
414
						$msg = '<font color=red><b>'.$R_form_result2.'</b></font>';
415
				}
345 richard 416
				else
647 richard 417
					echo "<b>Could not open encryption library file</b><br>\n";
345 richard 418
			}
419
		}
647 richard 420
		echo "<span align=center>$msg</span>\n";
345 richard 421
	}
422
}
423
?>
424
</body>
425
</html>
2003 raphael.pi 426