3 * Licensed under the GNU GPL. For full terms see the file COPYING.
5 * $Id: functions.php,v 1.8 2009/12/09 00:21:11 indiri69 Exp $
8 function change_pass_option_link_do() {
9 global $optpage_blocks;
11 sq_change_text_domain('change_pass');
12 $optpage_blocks[] = array(
13 'name' => _("Change Password"),
14 'url' => sqm_baseuri() . 'plugins/change_pass/options.php',
15 'desc' => _("Use this to change your email password."),
18 sq_change_text_domain('squirrelmail');
21 function change_pass_dochange($change_pass_old, $change_pass_new, $debug = false) {
22 global $username, $imapServerAddress;
23 $poppass_server = $imapServerAddress;
26 if(!@include(SM_PATH . 'config/config_change_pass.php')) {
27 @include(SM_PATH . 'plugins/change_pass/config.php');
30 $error_messages = array();
32 $pop_socket = @fsockopen($poppass_server, $poppass_port, $errno, $errstr);
34 sq_change_text_domain('change_pass');
35 $error_messages[] = sprintf(_("Connection error: %s"), "$errstr ($errno)");
36 sq_change_text_domain('squirrelmail');
37 return $error_messages;
40 // Look for a 2xx result to continue
41 $result = change_pass_readfb($pop_socket, $debug);
42 if(preg_match('/^2\d\d/', $result)) {
43 // Send the username whose password to change
44 if(fwrite($pop_socket, "user $username\r\n")) {
45 $result = change_pass_readfb($pop_socket, $debug);
46 if(preg_match('/^[23]\d\d/', $result)) {
47 // Send the users current password
48 if(fwrite($pop_socket, "pass $change_pass_old\r\n")) {
49 $result = change_pass_readfb($pop_socket, $debug);
50 if(preg_match('/^[23]\d\d/', $result)) {
51 // Send the new password
52 if(fwrite($pop_socket, "newpass $change_pass_new\r\n")) {
53 $result = change_pass_readfb($pop_socket, $debug);
54 if(!preg_match('/^2\d\d/', $result)) {
55 sq_change_text_domain('change_pass');
56 $error_messages[] = _("Password change was not successful!");
57 sq_change_text_domain('squirrelmail');
59 change_pass_closeport($pop_socket, $debug);
60 sqauth_save_password($change_pass_new);
61 session_write_close();
62 header('Location: ' . sqm_baseuri() . 'src/options.php?optmode=submit&optpage=change_pass&plugin_change_pass=1&smtoken=' . sm_generate_security_token());
71 change_pass_closeport($pop_socket, $debug);
72 return $error_messages;
75 function change_pass_closeport($pop_socket, $debug = false) {
77 $messages[] = "Closing Connection";
79 fputs($pop_socket, "quit\r\n");
83 function change_pass_readfb($pop_socket, $debug = false) {
87 if (!feof($pop_socket)) {
88 $strResp = fgets($pop_socket, 1024);
89 $result = substr(trim($strResp), 0, 3); // 200, 300, 500
91 $messages[] = "--> $strResp";
97 function change_pass_info_real() {
99 'english_name' => 'Change Password',
101 'Richie Low' => array(),
102 'Tyler Akins' => array(),
103 'Seth Randall' => array(
104 'email' => 'indiri69@users.sourceforge.net',
105 'sm_site_username' => 'randall',
109 'required_sm_version' => '1.4.0',
110 'requires_configuration' => 0,
111 'requires_source_patch' => 0,
112 'required_plugins' => array(),
113 'per_version_requirements' => array(
114 '1.5.0' => SQ_INCOMPATIBLE,
116 'required_plugins' => array()
119 'required_plugins' => array(
120 'compatibility' => array(
121 'version' => '2.0.16',
127 'summary' => 'Change passwords using a poppass daemon',
128 'details' => 'Works with a compatible poppass daemon to allow users to change their passwords.'
132 function change_pass_loadinfo_real() {
133 global $optpage, $optpage_name;
135 if ($optpage == 'change_pass') {
136 // i18n: is displayed after "Successfully Saved Options:"
137 sq_change_text_domain('change_pass');
138 $optpage_name = _("User's Password");
139 sq_change_text_domain('squirrelmail');