4 * $Id: options.php,v 1.5 2004/07/21 14:28:46 indiri69 Exp $
7 define('SM_PATH', '../../');
8 require_once (SM_PATH . 'include/validate.php');
9 require_once (SM_PATH . 'functions/page_header.php');
10 require_once (SM_PATH . 'functions/imap.php');
11 require_once (SM_PATH . 'functions/prefs.php');
12 require_once (SM_PATH . 'functions/global.php');
13 require_once (SM_PATH . 'functions/i18n.php');
15 sqgetGlobalVar('plugin_change_pass', $plugin_change_pass, SQ_POST);
18 if (isset($plugin_change_pass)) {
19 sqgetGlobalVar('cp_oldpass', $cp_oldpass, SQ_POST);
20 sqgetGlobalVar('cp_newpass', $cp_newpass, SQ_POST);
21 sqgetGlobalVar('cp_verify', $cp_verify, SQ_POST);
22 bindtextdomain('change_pass', SM_PATH . 'plugins/change_pass/locale');
23 textdomain('change_pass');
24 $messages = change_pass_check();
25 bindtextdomain('squirrelmail', SM_PATH . 'locale');
26 textdomain('squirrelmail');
29 displayPageHeader($color, 'None');
31 bindtextdomain('change_pass', SM_PATH . 'plugins/change_pass/locale');
32 textdomain('change_pass');
34 <table width="100%" cellpadding="2" cellspacing="2" border="0">
35 <tr><td bgcolor="<?php echo $color[0] ?>">
36 <center><b><?php echo _("Change Password") ?></b></center>
40 if (count($messages)) {
41 foreach ($messages as $line) {
42 echo htmlspecialchars($line) . "<br>\n";
48 <form method="post" action="<?php echo $PHP_SELF ?>">
49 <table align="center">
51 $values = array(_("Old Password") => 'cp_oldpass',
52 _("New Password") => 'cp_newpass',
53 _("Verify New Password") => 'cp_verify');
54 foreach($values as $key=>$value) {
57 <th align="right"><?php echo $key; ?></th>
59 <input type="password" name="<?php echo $value; ?>" size="20">
63 <tr><td align="center" colspan="2">
64 <input type="submit" value=<?php echo _("Submit"); ?> name="plugin_change_pass">
72 bindtextdomain('squirrelmail', SM_PATH . 'locale');
73 textdomain('squirrelmail');
75 function change_pass_closeport($pop_socket, &$messages, $debug) {
77 array_push($messages, _("Closing Connection"));
79 fputs($pop_socket, "quit\r\n");
83 function change_pass_readfb($pop_socket, &$result, &$messages, $debug) {
87 if (!feof($pop_socket)) {
88 $strResp = fgets($pop_socket, 1024);
89 $result = substr(trim($strResp), 0, 3); // 200, 500
90 if(!preg_match('/^[23]\d\d/', $result) || $debug) {
91 $messages[] = "--> $strResp";
96 function change_pass_check($debug = 0) {
97 global $cp_oldpass, $cp_newpass, $cp_verify;
98 global $plugin_change_pass;
100 sqgetGlobalVar('key', $key, SQ_COOKIE);
101 sqgetGlobalVar('onetimepad', $onetimepad, SQ_SESSION);
103 $password = OneTimePadDecrypt($key, $onetimepad);
105 if ($cp_oldpass == '') {
106 $messages[] = _("You must type in your old password.");
108 if ($cp_newpass == '') {
109 $messages[] = _("You must type in a new password.");
111 if ($cp_verify == '') {
112 $messages[] = _("You must also type in your new password in the verify box.");
114 if ($cp_newpass != '' && ($cp_verify != $cp_newpass)) {
115 $messages[] = _("Your new password doesn't match the verify password.");
117 if ($cp_oldpass != '' && ($cp_oldpass != $password)) {
118 $messages[] = _("Your old password is not correct.");
120 if (count($messages)) {
123 $return = change_pass_go($password, $debug);
128 function change_pass_go($password, $debug) {
129 include_once(SM_PATH . 'plugins/change_pass/settings.php');
132 global $cp_newpass, $key, $onetimepad;
134 sqgetGlobalVar('base_uri', $base_uri, SQ_SESSION);
138 $messages[] = _("Connecting to Password Server");
140 $pop_socket = fsockopen($poppass_server, $poppass_port, $errno, $errstr);
142 $messages[] = _("ERROR:") . "$errstr ($errno)";
146 change_pass_readfb($pop_socket, $result, $messages, $debug);
147 if(!preg_match('/^2\d\d/', $result) ) {
148 change_pass_closeport($pop_socket, $messages, $debug);
152 fputs($pop_socket, "user $username\r\n");
153 change_pass_readfb($pop_socket, $result, $messages, $debug);
154 if(!preg_match('/^[23]\d\d/', $result) ) {
155 change_pass_closeport($pop_socket, $messages, $debug);
159 fputs($pop_socket, "pass $password\r\n");
160 change_pass_readfb($pop_socket, $result, $messages, $debug);
161 if(!preg_match('/^[23]\d\d/', $result) ) {
162 change_pass_closeport($pop_socket, $messages, $debug);
166 fputs($pop_socket, "newpass $cp_newpass\r\n");
167 change_pass_readfb($pop_socket, $result, $messages, $debug);
168 change_pass_closeport($pop_socket, $messages, $debug);
169 if(!preg_match('/^2\d\d/', $result) ) {
173 $messages[] = _("Password changed successfully.");
175 // Write new cookies for the password
176 $onetimepad = OneTimePadCreate(strlen($cp_newpass));
177 $key = OneTimePadEncrypt($cp_newpass, $onetimepad);
178 sqsession_register($onetimepad, 'onetimepad');
179 setcookie('key', $key, 0, $base_uri);