Página 1 de 1

Script PHP para squirrelmail

Publicado: Vie, 20 May 2011, 20:51
por Prospero
Script PHP para cambiar contraseñas de usuarios virtuales con squirrelmail

Hola lista, escribo aquí porque necesito una ayuda a ver si alguno de ustedes tiene la solución, tengo acá squirrelmail con usuarios virtuales y necesito que mis usuarios cambien sus contraseñas del correo desde el webmail a ver si alguien tiene una script php que me lo pueda pasar para que mis usuarios cambien su password, le instale un plugin a squirrelmail pero no me cambia las contraseñas, bueno espero un ayudita.
Saludos

Re: Script PHP para squirrelmail

Publicado: Mar, 24 May 2011, 06:13
por hugo
Squirrelmail 1.5.0+ trae integrada la funcionalidad para lo que deseas, pero solo funciona si tienes instalado el servicio poppassd.

De todas maneras, aquí tienes:

Código: Seleccionar todo

<?php
 
/**
 * Poppassd change password backend
 *
 * @author Seth Randall <sethr at missoulafcu.org>
 * @copyright 2004-2011 The SquirrelMail Project Team
 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
 * @version $Id: poppassd.php 14085 2011-01-06 03:16:21Z pdontthink $
 * @package plugins
 * @subpackage change_password
 */
 
/**
 * Config vars
 */
 
/**
 * Set the address of the server your poppass daemon runs on.
 * If it's the same as your imap server, you can leave it blank
 */
global $poppassd_server;
 
$poppassd_server = '';
 
/* get overrides from config.php */
if (isset($cpw_poppassd['server'])) $poppassd_server=$cpw_poppassd['server'];
 
/**
 * Define here the name of your password changing function.
 */
global $squirrelmail_plugin_hooks;
$squirrelmail_plugin_hooks['change_password_dochange']['poppassd'] = 'cpw_poppassd_dochange';
 
/**
 * This is the function that is specific to your backend. It takes
 * the current password (as supplied by the user) and the desired
 * new password. It will return an array of messages. If everything
 * was successful, the array will be empty. Else, it will contain
 * the errormessage(s).
 * Constants to be used for these messages:
 * CPW_CURRENT_NOMATCH -> "Your current password is not correct."
 * CPW_INVALID_PW -> "Your new password contains invalid characters."
 *
 * @param array data The username/currentpw/newpw data.
 * @return array Array of error messages.
 */
function cpw_poppassd_dochange($data) {
    // unfortunately, we can only pass one parameter to a hook function,
    // so we have to pass it as an array.
    $username = $data['username'];
    $curpw = $data['curpw'];
    $newpw = $data['newpw'];
 
    $msgs = array();
 
    // your code here to change the password for $username from
    // $currentpw into $newpw.
    $msgs = cpw_poppassd_go($username, $curpw, $newpw, 0);
 
    return $msgs;
}
 
function cpw_poppassd_closeport($pop_socket, &$messages, $debug = 0) {
    if ($debug) {
        array_push($messages, _("Closing Connection"));
    }
    fputs($pop_socket, "quit\r\n");
    fclose($pop_socket);
}
 
function cpw_poppassd_readfb($pop_socket, &$result, &$messages, $debug = 0) {
   $strResp = '';
   $result  = '';
 
   if (!feof($pop_socket)) {
      $strResp = fgets($pop_socket, 1024);
      $result  = substr(trim($strResp), 0, 3);  // 200, 500
      if(!preg_match('/^[23]\d\d/', $result) || $debug) {
          $messages[] = "--> $strResp";
      }
   }
}
 
function cpw_poppassd_go($username, $old_pw, $new_pw, $debug = 0) {
    global $poppassd_server;
    global $imapServerAddress;
 
    /** sqimap_get_user_server() function */
    include_once(SM_PATH . 'functions/imap_general.php');
 
    if($poppassd_server == '') {
        // if poppassd address is not set, use imap server's address
        // make sure that setting contains address and not mapping
        $poppassd_server = sqimap_get_user_server($imapServerAddress,$username);
    }
 
    $messages = array();
 
    if ($debug) {
        $messages[] = _("Connecting to Password Server");
    }
    $pop_socket = fsockopen($poppassd_server, 106, $errno, $errstr);
    if (!$pop_socket) {
        $messages[] = _("ERROR") . ': ' . "$errstr ($errno)";
        return $messages;
    }
 
    cpw_poppassd_readfb($pop_socket, $result, $messages, $debug);
    if(!preg_match('/^2\d\d/', $result) ) {
        cpw_poppassd_closeport($pop_socket, $messages, $debug);
        return $messages;
    }
 
    fputs($pop_socket, "user $username\r\n");
    cpw_poppassd_readfb($pop_socket, $result, $messages, $debug);
    if(!preg_match('/^[23]\d\d/', $result) ) {
        cpw_poppassd_closeport($pop_socket, $messages, $debug);
        return $messages;
    }
 
    fputs($pop_socket, "pass $old_pw\r\n");
    cpw_poppassd_readfb($pop_socket, $result, $messages, $debug);
    if(!preg_match('/^[23]\d\d/', $result) ) {
        cpw_poppassd_closeport($pop_socket, $messages, $debug);
        return $messages;
    }
 
    fputs($pop_socket, "newpass $new_pw\r\n");
    cpw_poppassd_readfb($pop_socket, $result, $messages, $debug);
    cpw_poppassd_closeport($pop_socket, $messages, $debug);
    if(!preg_match('/^2\d\d/', $result) ) {
        return $messages;
    }
 
    return $messages;
}

Re: Script PHP para squirrelmail

Publicado: Mar, 24 May 2011, 23:05
por Prospero
Amigo muchas gracias por la ayuda, pero me surge una duda, ¿esto funciona con usuarios virtuales en mysql?, ya que mis usuarios estan en mysql. Yo descargué un plugin de squirrel pero me daba un error, me decía BD library not found, ahora no se si esto es un plugin de squirrel o algo que le falta a mi base de datos. Otra idea que se me ocurre para este problema es poner otro webmail que ya tenga en su motor soporte para que los usuarios cambien su password, a ver si alguien me recomienda alguno que haya probado con usuarios en mysql.
bueno espero respuesta

Re: Script PHP para squirrelmail

Publicado: Jue, 26 May 2011, 09:40
por fVckingmania.hell
Amigo y porque no instalas mejor el RoundCube? Es mucho mas amigable y tiene plugins para lo que quieres y muchos mas.

Re: Script PHP para squirrelmail

Publicado: Vie, 16 Sep 2011, 08:35
por Warrior
fVckingmania.hell escribió:Amigo y porque no instalas mejor el RoundCube? Es mucho mas amigable y tiene plugins para lo que quieres y muchos mas.
Bueno acabo de instalar el roundcubemail, donde encuentro esos plugins que mencionas en la red nacional??

Re: Script PHP para squirrelmail

Publicado: Vie, 16 Sep 2011, 08:50
por fVckingmania.hell
Warrior escribió:donde encuentro esos plugins que mencionas en la red nacional??
Amigo realmente no se donde puedas encontrar esas cosas, pero puedes llegarte por la zona de descarga del proyecto Haciendo WEb y preguntarle a ellos si de casualidad lo tienen o bien enviame un mail para yo mandarte los que tengo

Re: Script PHP para squirrelmail

Publicado: Vie, 16 Sep 2011, 14:24
por Warrior
fVckingmania.hell escribió:enviame un mail para yo mandarte los que tengo
Cual es tu e-mail?? imagino que sea igual que tu ID jabber, así que te enviee un correo a esa dirección??

Re: Script PHP para squirrelmail

Publicado: Mar, 20 Sep 2011, 23:44
por Prospero
gracias amigo, esta es mi direccion de mail admin@dps.cfg.sld.cu
la del jabber que tenia era donde trabajaba antes ahora la que tengo puesta es donde trabajo actualmente (es que no habia actualizado mis datos en el foro :mrgreen: :mrgreen: :mrgreen: )