Re: passwd ignores hostspec parameter in backends.php

Joris <[email protected]>
Newsgroups gmane.comp.horde.sork
Message-ID <[email protected]>
>>
>>
>>At least a notation of this behaviour (and a mention than other options
>>can be added) would be really usefull.
>
>Sure - patch?

How about this? (attachment)


joris

-- 
Sork mailing list - Join the hunt: http://horde.org/bounties/#sork
Frequently Asked Questions: http://horde.org/faq/
To unsubscribe, mail: [email protected]
backends.php.dist.patch (text/plain, 14.4 KB)
<?php
/**
 * $Horde: passwd/config/backends.php.dist,v 1.41 2005/08/24 07:11:05 jan Exp $
 *
 * This file is where you specify what backends people use to change
 * their passwords. There are a number of properties that you can set
 * for each backend:
 *
 * name: This is the plaintext, english name that you want displayed
 *       to people if you are using the drop down server list.  Also
 *       displayed on the main page (input form).
 *
 * password policy: The password policies for this backend. You are responsible
 *                  for the sanity checks of these options. Options are:
 *              minLength   Minimum length of the password
 *              maxLength   Maximum length of the password
 *              maxSpace    Maximum number of white space characters
 *
 *                  The following are the types of characters required
 *                  in a password.  Either specific characters, character
 *                  classes, or both can be required.  Specific types are:
 *
 *              minUpper    Minimum number of uppercase characters
 *              minLower    Minimum number of lowercase characters
 *              minNumeric  Minimum number of numeric characters (0-9)
 *              minAlphaNum Minimum number of alphanumeric characters
 *              minAlpha    Minimum number of alphabetic characters
 *              minSymbol   Minimum number of alphabetic characters
 *
 *                  Alternatively (or in addition to), the minimum number of
 *                  character classes can be configured by setting the
 *                  following.  The valid range is 0 through 4 character
 *                  classes may be required for a password. The classes are:
 *                  'upper', 'lower', 'number', and 'symbol'.  For example:
 *                  A password of 'p@ssw0rd' satisfies three classes ('number',
 *                  'lower', and 'symbol'), while 'passw0rd' only satisfies
 *                  two classes ('lower' and 'symbols').
 *
 *              minClasses  Minimum number (0 through 4) of character classes.
 *
 * driver:    The Passwd driver used to change the password. Valid
 *            Valid values are currently:
 *              ldap         Change the password on a ldap server
 *              smbldap      Change the password on a ldap server for both
 *                           ldap and samba auth
 *              sql          Change the password for sql authentication
 *                           (exim, pam_mysql, horde)
 *              poppassd     Change the password via a poppassd server
 *              smbpasswd    Change the password via the smbpasswd command
 *              expect       Change the password via an expect script
 *              vmailmgr     Change the password via a local vmailmgr daemon
 *              vpopmail     Change the password for sql based vpopmail
 *              servuftp     Change the password via a servuftp server
 *              pine         Change the password in a Pine-encoded file
 *              composite    Allows you to chain multiple drivers together
 *
 * no_reset:  Do not reset the authenticated user's credentials on success.
 *
 * params:    A params array containing any additional information that the
 *            Passwd driver needs.
 *
 *            The following is a list of supported encryption/hashing
 *            methods supported by Passwd.
 *
 *            1) plain
 *            2) crypt or crypt-des
 *            3) crypt-md5
 *            4) crypt-blowfish
 *            5) md5-hex
 *            6) md5-base64
 *            7) smd5
 *            8) sha
 *            9) ssha
 *
 *            Currently, md5-base64, smd5, sha, and ssha require the
 *            mhash php library in order to work properly.  See the
 *            INSTALL file for directions on enabling this.  md5
 *            passwords have caused some problems in the past because
 *            there are different definitions of what is a "md5
 *            password".  Systems implement them in a different
 *            manner.  If you are using OpenLDAP as your backend or
 *            have migrated your passwords from your OS based passwd
 *            file, you will need to use the md5-base64 hashing
 *            method.  If you are using a SQL database or used the PHP
 *            md5() method to create your passwords, you will need to
 *            use the md5-hex hashing method.
 *
 * preferred: This is only useful if you want to use the same
 *            backend.php file for different machines: if the Hostname
 *            of the Passwd Machine is identical to one of those in
 *            the preferred list, then the corresponding option in the
 *            select box will include SELECTED, i.e. it is selected
 *            per default. Otherwise the first entry in the list is
 *            selected.
 *
 * show_encryption: If you are using the sql or the vpopmail backend
 *                  you have the choice whether or not to store the
 *                  encryption type with the password. If you are
 *                  using for example an SQL based PAM you will most
 *                  likely not want to store the encryption type as it
 *                  would cause PAM to never match the passwords.
 *
 */


$backends['hordesql'] = array (
    'name' => 'Horde Authentication',
    'preferred' => '',
    'password policy' => array(
        'minLength' => 3,
        'maxLength' => 8,
        'maxSpace' => 0,
        'minUpper' => 1,
        'minLower' => 1,
        'minNumeric' => 1,
        'minSymbols' => 1
    ),
    'driver' => 'sql',
    'params' => array_merge($conf['sql'],
                            array('table' => 'horde_users',
                                  'user_col' => 'user_uid',
                                  'pass_col' => 'user_pass',
                                  'show_encryption' => false)),
);


$backends['poppassd'] = array(
    'name' => 'Example Poppassd Server',
    'preferred' => '',
    'password policy' => array(),
    'driver' => 'poppassd',
    'params' => array(
        'host' => 'localhost',
        'port' => 106
    )
);


$backends['servuftp'] = array(
    'name' => 'Example Serv-U FTP Server',
    'preferred' => '',
    'password policy' => array(),
    'driver' => 'servuftp',
    'params' => array(
        'host' => 'localhost',
        'port' => 106,
        'timeout' => 30
    )
);


$backends['expect'] = array(
    'name' => 'Example Expect Script',
    'preferred' => '',
    'password policy' => array(),
    'driver' => 'expect',
    'params' => array(
        'program' => '/usr/bin/expect',
        'script' => dirname(__FILE__) . '/../scripts/passwd_expect',
        'params' => '-telnet -host localhost -output /tmp/passwd.log'
    )
);


$backends['smbpasswd'] = array(
    'name' => 'Example Samba Server',
    'preferred' => '',
    'password policy' => array(),
    'driver' => 'smbpasswd',
    'params' => array(
        'program' => '/usr/bin/smbpasswd',
        'host' => 'localhost'
    )
);


// NOTE: to set the ldap userdn, see horde/config/hooks.php
$backends['ldap'] = array(
    'name' => 'Example LDAP Server',
    'preferred' => 'www.example.com',
    'password policy' => array(
        'minLength' => 3,
        'maxLength' => 8
    ),
    'driver' => 'ldap',
    'params' => array(
        'host' => 'localhost',
        'port' => 389,
        'basedn' => 'o=example.com',
        'uid' => 'uid',
        // this will be appended to the username when looking for the userdn.
        'realm' => '',
        'encryption' => 'crypt',
        // make sure the host == cn in the server certificate
        'tls' => false
    )
);


// NOTE: to set the ldap userdn, see horde/config/hooks.php
$backends['ldapadmin'] = array(
    'name' => 'Example LDAP Server with Admin Bindings',
    'preferred' => 'www.example.com',
    'password policy' => array(
        'minLength' => 3,
        'maxLength' => 8
    ),
    'driver' => 'ldap',
    'params' => array(
        'host' => 'localhost',
        'port' => 389,
        'basedn' => 'o=example.com',
        'admindn' => 'cn=admin,o=example.com',
        'adminpw' => 'somepassword',
        'uid' => 'uid',
        'attribute' => 'clearPassword',
        // this will be appended to the username when looking for the userdn.
        'realm' => '',
        'encryption' => 'crypt',
        // make sure the host == cn in the server certificate
        'tls' => false
    )
);


// NOTE: to set the ldap userdn, see horde/config/hooks.php
// NOTE: to make work with samba 2.x schema you must change lm_attribute and
// nt_attribute
$backends['smbldap'] = array(
    'name' => 'Example Samba/LDAP Server',
    'preferred' => 'www.example.com',
    'password policy' => array(
        'minLength' => 3,
        'maxLength' => 8
    ),
    'driver' => 'smbldap',
    'params' => array(
        'host' => 'localhost',
        'port' => 389,
        'basedn' => 'o=example.com',
        'uid' => 'uid',
        // this will be appended to the username when looking for the userdn.
        'realm' => '',
        'encryption' => 'crypt',
        // make sure the host == cn in the server certificate
        'tls' => false,
        'lm_attribute' => 'sambaLMPassword',
        'nt_attribute' => 'sambaNTPassword',
        'pw_set_attribute' => 'sambaPwdLastSet',
        'pw_expire_attribute' => 'sambaPwdMustChange',
        'pw_expire_time' => 180, // number of days until samba password expires
    )
);


$backends['sql'] = array (
    'name' => 'Exampe SQL Server',
    'preferred' => '',
    'password policy' => array(
        'minLength' => 3,
        'maxLength' => 8,
        'maxSpace' => 0,
        'minUpper' => 1,
        'minLower' => 1,
        'minNumeric' => 1,
        'minSymbols' => 1
    ),
    'driver' => 'sql',
    'params' => array(
        'phptype'    => 'mysql',
        'hostspec'   => 'localhost',
        'protocol'   => 'unix'
        'socket'     => '/var/lib/mysql/mysql.sock'; 
        'username'   => 'dbuser',
        'password'   => 'dbpasswd',
        'encryption' => 'md5-hex',
        'database'   => 'db',
        'table'      => 'users',
        'user_col'   => 'user_uid',
        'pass_col'   => 'user_pass',
        'show_encryption' => false
        // any values that are missing or removed from this list default to those used
        // by the horde prefs (/config/conf.php uner section ['sql'])
        //
        // The following two settings allow you to specify custom queries for
        // lookup and modify functions if special functions need to be
        // performed.  In places where a username or a password needs to be
        // used, refer to this placeholder reference:
        //    %u -> gets substituted with the user
        //    %p -> gets substituted with the plaintext password
        //    %e -> gets substituted with the encrypted password
        //
        // 'query_lookup' => 'SELECT user_pass FROM horde_users WHERE user_uid = %u',
        // 'query_modify' => 'UPDATE horde_users SET user_pass = %e WHERE user_uid = %u',
    )
);


$backends['vmailmgr'] = array(
    'name' => 'Example VMailMgr Server',
    'preferred' => '',
    'password policy' => array(),
    'driver' => 'vmailmgr',
    'params' => array(
        'vmailinc' => '/your/path/to/the/vmail.inc'
    )
);


$backends['vpopmail'] = array (
    'name' => 'Example Vpopmail Server',
    'preferred' => '',
    'password policy' => array(
        'minLength' => 3,
        'maxLength' => 8,
        'maxSpace' => 0,
        'minUpper' => 0,
        'minLower' => 0,
        'minNumeric' => 0
    ),
    'driver' => 'vpopmail',
    'params' => array(
        'phptype'    => 'mysql',
        'hostspec'   => 'localhost',
        'username'   => '',
        'password'   => '',
        'encryption' => 'crypt',
        'database'   => 'vpopmail',
        'table'      => 'vpopmail',
        'name'    => 'pw_name',
        'domain'  => 'pw_domain',
        'passwd' =>  'pw_passwd',
        'clear_passwd' => 'pw_clear_passwd',
        'use_clear_passwd' => true,
        'show_encryption' => true
    )
);


$backends['pine'] = array(
    'name' => 'Example Pine Password File',
    'preferred' => '',
    'password policy' => array(),
    'driver' => 'pine',
    'no_reset' => true,
    'params' => array(
        // FTP server information.
        'host' => 'localhost',
        'port' => '21',
        'path' => '',
        'file' => '.pinepw',
        // Connect using the just-passed-in password?
        'use_new_passwd' => false,
        // Host string to look for in the encrypted file.
        'imaphost' => 'localhost'
    )
);


// This is an example configuration for chaining multiple drivers to allow for
// syncing of passwords across many backends using the composite driver as a
// wrapper.
//
// Each of the subdrivers may contain an optional parameter called 'required'
// that, when set to true, will cause the rest of the drivers be skipped if a
// particular one fails.
$backends['composite'] = array(
   'name' => 'Example All Services',
   'preferred' => '',
   'password policy' => array(
       'minLength' => 3,
       'maxLength' => 8,
       'minClasses' => 2,
   ),
   'driver' => 'composite',
   'params' => array('drivers' => array(
       'sql' => array(
           'name' => 'Horde Authentication',
           'driver' => 'sql',
           'required' => true,
           'params' => array(
               'phptype'    => 'mysql',
               'hostspec'   => 'localhost',
               'username'   => 'horde',
               'password'   => '',
               'encryption' => 'md5-hex',
               'database'   => 'horde',
               'table'      => 'horde_users',
               'user_col'   => 'user_uid',
               'pass_col'   => 'user_pass',
               'show_encryption' => false
               // 'query_lookup' => '',
               // 'query_modify' => '',
           ),
       ),
       'smbpasswd' => array(
           'name' => 'Samba Server',
           'driver' => 'smbpasswd',
           'params' => array(
               'program' => '/usr/bin/smbpasswd',
               'host' => 'localhost',
           ),
       ),
   )),
);


$backends['kolab'] = array(
    'name' => 'Local Kolab Server',
    'preferred' => '',
    'password policy' => array(
        'minLength' => 3,
        'maxLength' => 8
    ),
    'driver' => 'kolab',
    'params' => array()
);


$backends['myscript'] = array(
    'name' => 'example.com',
    'preferred' => 'localhost',
    'password policy' => array(),
    'driver' => 'procopen',
    'params' => array(
        'program' => '/path/to/my/script + myargs'
    )
);
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.