Script PHP para squirrelmail

Servidores, plataformas y protocolos de mensajeria

Moderadores: frank, dxfiles

Responder
Avatar de Usuario
Prospero
Mensajes: 17
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: Cienfuegos
Contactar:

Script PHP para squirrelmail

Mensaje por Prospero » Vie, 20 May 2011, 20:51

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

Avatar de Usuario
hugo
Mensajes: 1430
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: La Habana
Contactar:

Re: Script PHP para squirrelmail

Mensaje por hugo » Mar, 24 May 2011, 06:13

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;
}
Lo único que necesita el mal para triunfar es que los hombres buenos no hagan nada.
- Edmund Burke

Avatar de Usuario
Prospero
Mensajes: 17
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: Cienfuegos
Contactar:

Re: Script PHP para squirrelmail

Mensaje por Prospero » Mar, 24 May 2011, 23:05

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

Avatar de Usuario
fVckingmania.hell
Mensajes: 549
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: /usr/src/yo.tar.bz2

Re: Script PHP para squirrelmail

Mensaje por fVckingmania.hell » Jue, 26 May 2011, 09:40

Amigo y porque no instalas mejor el RoundCube? Es mucho mas amigable y tiene plugins para lo que quieres y muchos mas.

Avatar de Usuario
Warrior
Mensajes: 71
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: Holguín

Re: Script PHP para squirrelmail

Mensaje por Warrior » Vie, 16 Sep 2011, 08:35

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??

Avatar de Usuario
fVckingmania.hell
Mensajes: 549
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: /usr/src/yo.tar.bz2

Re: Script PHP para squirrelmail

Mensaje por fVckingmania.hell » Vie, 16 Sep 2011, 08:50

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

Avatar de Usuario
Warrior
Mensajes: 71
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: Holguín

Re: Script PHP para squirrelmail

Mensaje por Warrior » Vie, 16 Sep 2011, 14:24

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??

Avatar de Usuario
Prospero
Mensajes: 17
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: Cienfuegos
Contactar:

Re: Script PHP para squirrelmail

Mensaje por Prospero » Mar, 20 Sep 2011, 23:44

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: )

Responder