david           Sun Jan 14 00:54:00 2001 EDT

  Added files:                 
    /php4/ext/vpopmail  .cvsignore CREDITS Makefile.in config.m4 
                        php_vpopmail.c php_vpopmail.h 
  Log:
  vpopmail extension
  
  

Index: php4/ext/vpopmail/.cvsignore
+++ php4/ext/vpopmail/.cvsignore
Makefile
*.lo
*.la
libs
deps
libs.mk

Index: php4/ext/vpopmail/Makefile.in
+++ php4/ext/vpopmail/Makefile.in
# $Id: Makefile.in,v 1.1 2001/01/14 08:54:00 david Exp $

LTLIBRARY_NAME        = libvpopmail.la
LTLIBRARY_SOURCES     = php_vpopmail.c
LTLIBRARY_SHARED_NAME = vpopmail.la
LTLIBRARY_SHARED_LIBADD = $(VPOPMAIL_SHARED_LIBADD)

include $(top_srcdir)/build/dynlib.mk

Index: php4/ext/vpopmail/config.m4
+++ php4/ext/vpopmail/config.m4
dnl $Id: config.m4,v 1.1 2001/01/14 08:54:00 david Exp $
dnl config.m4 for extension vpopmail

PHP_ARG_WITH(vpopmail, whether to include vpopmail support,
[  --with-vpopmail[=DIR]      Include vpopmail support])

if test "$PHP_VPOPMAIL" != "no"; then

  for i in /home/vpopmail /home/popmail /var/qmail/vpopmail /var/qmail/popmail 
$PHP_VPOPMAIL; do
    if test -r $i/vpopmail.h; then
      VPOPMAIL_INC_DIR=$i
    elif test -r $i/include/vpopmail.h; then
      VPOPMAIL_INC_DIR=$i/include
    fi

    if test -r $i/libvpopmail.a; then
      VPOPMAIL_LIB_DIR=$i
    elif test -r $i/lib/libvpopmail.a; then
      VPOPMAIL_LIB_DIR=$i/lib
    fi
  done

  if test -z "$VPOPMAIL_INC_DIR"; then
    AC_MSG_ERROR(Could not find vpopmail.h. Please make sure you have
                 vpopmail installed. Use
                 ./configure --with-vpopmail=<vpopmail-home-dir> if necessary)
  fi

  if test -z "$VPOPMAIL_LIB_DIR"; then
    AC_MSG_ERROR(Could not find libvpopmail.a. Please make sure you have
                 vpopmail installed. Use
                 ./configure --with-vpopmail=<vpopmail-home-dir> if necessary)
  fi

  AC_MSG_RESULT(found in $VPOPMAIL_LIB_DIR)

  AC_ADD_INCLUDE($VPOPMAIL_INC_DIR)

  PHP_SUBST(VPOPMAIL_SHARED_LIBADD)
  AC_ADD_LIBRARY_WITH_PATH(vpopmail, $VPOPMAIL_LIB_DIR, VPOPMAIL_SHARED_LIBADD)

  AC_DEFINE(HAVE_VPOPMAIL, 1, [ ])

  PHP_EXTENSION(vpopmail, $ext_shared)
fi

Index: php4/ext/vpopmail/php_vpopmail.c
+++ php4/ext/vpopmail/php_vpopmail.c
/*
   +----------------------------------------------------------------------+
   | PHP version 4.0                                                      |
   +----------------------------------------------------------------------+
   | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group             |
   +----------------------------------------------------------------------+
   | This source file is subject to version 2.02 of the PHP license,      |
   | that is bundled with this package in the file LICENSE, and is        |
   | available at through the world-wide-web at                           |
   | http://www.php.net/license/2_02.txt.                                 |
   | If you did not receive a copy of the PHP license and are unable to   |
   | obtain it through the world-wide-web, please send a note to          |
   | [EMAIL PROTECTED] so we can mail you a copy immediately.               |
   +----------------------------------------------------------------------+
   | Author: David Croft <[EMAIL PROTECTED]>                           |
   +----------------------------------------------------------------------+
*/

/* $Id: php_vpopmail.c,v 1.1 2001/01/14 08:54:00 david Exp $ */

#include "php.h"
#include "php_ini.h"
#include "php_vpopmail.h"

#include "vpopmail.h"

#include "ext/standard/php_string.h"

#ifdef ZTS
int vpopmail_globals_id;
#else
php_vpopmail_globals vpopmail_globals;
#endif

/* Function table */

function_entry vpopmail_functions[] = {
        PHP_FE(vpopmail_auth_user, NULL)
        PHP_FE(vpopmail_adddomain, NULL)
        PHP_FE(vpopmail_deldomain, NULL)
        PHP_FE(vpopmail_adduser, NULL)
        PHP_FE(vpopmail_deluser, NULL)
        PHP_FE(vpopmail_passwd, NULL)
        PHP_FE(vpopmail_setuserquota, NULL)
        {NULL, NULL, NULL}
};

zend_module_entry vpopmail_module_entry = {
        "vpopmail",
        vpopmail_functions,
        PHP_MINIT(vpopmail),
        PHP_MSHUTDOWN(vpopmail),
        NULL,
        NULL,
        PHP_MINFO(vpopmail),
        STANDARD_MODULE_PROPERTIES
};

#ifdef COMPILE_DL_VPOPMAIL
ZEND_GET_MODULE(vpopmail)
#endif


PHP_INI_BEGIN()
        /*      STD_PHP_INI_ENTRY("pfpro.proxypassword",                "",            
                 PHP_INI_ALL, OnUpdateString,    proxypassword,                  
php_pfpro_globals,      pfpro_globals) */
PHP_INI_END()


PHP_MINIT_FUNCTION(vpopmail)
{
        REGISTER_INI_ENTRIES();
        return SUCCESS;
}

PHP_MSHUTDOWN_FUNCTION(vpopmail)
{
        UNREGISTER_INI_ENTRIES();
        return SUCCESS;
}

PHP_MINFO_FUNCTION(vpopmail)
{
        php_info_print_table_start();
        php_info_print_table_header(2, "vpopmail support", "enabled");
        /*      php_info_print_table_row(2, "vpopmail version", "Who knows"); */
        php_info_print_table_end();

        DISPLAY_INI_ENTRIES();
}



/* {{{ proto void vpopmail_adddomain($domain, $dir, $uid, $gid)
   Add a new virtual domain */
PHP_FUNCTION(vpopmail_adddomain)
{
        zval **domain;
        zval **dir;
        zval **uid;
        zval **gid;
        int retval;

        if (ZEND_NUM_ARGS() != 4
                        || zend_get_parameters_ex(4, &domain, &dir, &uid, &gid) == 
FAILURE)
                WRONG_PARAM_COUNT;

        convert_to_string_ex(domain);
        convert_to_string_ex(dir);
        convert_to_long_ex(uid);
        convert_to_long_ex(gid);

        retval = vadddomain(Z_STRVAL_PP(domain),
                                                /*                                     
         Z_STRVAL_PP(dir),
                                                                                       
         Z_LVAL_PP(uid), */
                                                Z_LVAL_PP(gid));

        if (retval == VA_SUCCESS) {
                RETURN_TRUE;
        }
        else {
        php_error(E_WARNING, "vpopmail error: %s", verror(retval));
                RETURN_FALSE;
        }
}
/* }}} */

/* {{{ proto void vpopmail_deldomain($domain)
   Delete a virtual domain */
PHP_FUNCTION(vpopmail_deldomain)
{
        zval **domain;
        int retval;

        if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &domain) == FAILURE)
                WRONG_PARAM_COUNT;

        convert_to_string_ex(domain);

        retval = vdeldomain(Z_STRVAL_PP(domain));

        if (retval == VA_SUCCESS) {
                RETURN_TRUE;
        }
        else {
        php_error(E_WARNING, "vpopmail error: %s", verror(retval));
                RETURN_FALSE;
        }
}
/* }}} */

/* {{{ proto void vpopmail_adduser($user, $domain, $password[, $gecos[, $apop]])
   Add a new user to the specified virtual domain */
PHP_FUNCTION(vpopmail_adduser)
{
        zval **user;
        zval **domain;
        zval **password;
        zval **gecos;
        zval **apop;
        int is_apop = 0;
        char *the_gecos = "";
        int retval;

        if (ZEND_NUM_ARGS() < 3 || ZEND_NUM_ARGS() > 5
                        || zend_get_parameters_ex(ZEND_NUM_ARGS(), &user, &domain, 
&password, &gecos, &apop) == FAILURE)
                WRONG_PARAM_COUNT;

        switch (ZEND_NUM_ARGS()) {
        case 5:
                convert_to_boolean_ex(apop);
                is_apop = (Z_BVAL_PP(apop) ? 1 : 0);
                /* fall through */

        case 4:
                convert_to_string_ex(gecos);
                the_gecos = Z_STRVAL_PP(gecos);
                /* fall through */

        default:
                convert_to_string_ex(user);
                convert_to_string_ex(domain);
                convert_to_string_ex(password);
        }

        retval = vadduser(Z_STRVAL_PP(user),
                                          Z_STRVAL_PP(domain),
                                          Z_STRVAL_PP(password),
                                          the_gecos,
                                          is_apop);

        if (retval == VA_SUCCESS) {
                RETURN_TRUE;
        }
        else {
        php_error(E_WARNING, "vpopmail error: %s", verror(retval));
                RETURN_FALSE;
        }
}
/* }}} */

/* {{{ proto void vpopmail_deluser($user, $domain)
   Delete a user from a virtual domain */
PHP_FUNCTION(vpopmail_deluser)
{
        zval **user;
        zval **domain;
        int retval;

        if (ZEND_NUM_ARGS() != 2
                        || zend_get_parameters_ex(2, &user, &domain) == FAILURE)
                WRONG_PARAM_COUNT;

        convert_to_string_ex(user);
        convert_to_string_ex(domain);

        retval = vdeluser(Z_STRVAL_PP(user),
                                          Z_STRVAL_PP(domain));

        if (retval == VA_SUCCESS) {
                RETURN_TRUE;
        }
        else {
        php_error(E_WARNING, "vpopmail error: %s", verror(retval));
                RETURN_FALSE;
        }
}
/* }}} */

/* {{{ proto void vpopmail_passwd($user, $domain, $password)
   Change a virtual user's password */
PHP_FUNCTION(vpopmail_passwd)
{
        zval **user;
        zval **domain;
        zval **password;
        zval **apop;
        int is_apop = 0;
        int retval;

        if (ZEND_NUM_ARGS() < 3 || ZEND_NUM_ARGS() > 4
                        || zend_get_parameters_ex(ZEND_NUM_ARGS(), &user, &domain, 
&password, &apop) == FAILURE)
                WRONG_PARAM_COUNT;

        if (ZEND_NUM_ARGS() > 3) {
                convert_to_boolean_ex(apop);
                is_apop = (Z_BVAL_PP(apop) ? 1 : 0);
        }

        convert_to_string_ex(user);
        convert_to_string_ex(domain);
        convert_to_string_ex(password);

        retval = vpasswd(Z_STRVAL_PP(user),
                                         Z_STRVAL_PP(domain),
                                         Z_STRVAL_PP(password),
                                         is_apop);

        if (retval == VA_SUCCESS) {
                RETURN_TRUE;
        }
        else {
        php_error(E_WARNING, "vpopmail error: %s", verror(retval));
                RETURN_FALSE;
        }
}
/* }}} */

/* {{{ proto void vpopmail_setuserquota($user, $domain, $quota)
   Sets a virtual user's quota */
PHP_FUNCTION(vpopmail_setuserquota)
{
        zval **user;
        zval **domain;
        zval **quota;
        int retval;

        if (ZEND_NUM_ARGS() != 3
                        || zend_get_parameters_ex(3, &user, &domain, &quota) == 
FAILURE)
                WRONG_PARAM_COUNT;

        convert_to_string_ex(user);
        convert_to_string_ex(domain);
        convert_to_string_ex(quota);

        retval = vsetuserquota(Z_STRVAL_PP(user),
                                                   Z_STRVAL_PP(domain),
                                                   Z_STRVAL_PP(quota));

        if (retval == VA_SUCCESS) {
                RETURN_TRUE;
        }
        else {
        php_error(E_WARNING, "vpopmail error: %s", verror(retval));
                RETURN_FALSE;
        }
}
/* }}} */

/* {{{ proto void vpopmail_auth_user($user, $domain, $password)
   Attempt to validate a username/domain/password. Returns true/false */
PHP_FUNCTION(vpopmail_auth_user)
{
        zval **user;
        zval **domain;
        zval **password;
        struct passwd *retval;

        if (ZEND_NUM_ARGS() != 3
                        || zend_get_parameters_ex(3, &user, &domain, &password) == 
FAILURE)
                WRONG_PARAM_COUNT;

        convert_to_string_ex(user);
        convert_to_string_ex(domain);
        convert_to_string_ex(password);

        retval = vauth_user(Z_STRVAL_PP(user),
                                                Z_STRVAL_PP(domain),
                                                Z_STRVAL_PP(password));

        if (retval == NULL) {
                RETURN_FALSE;
        }
        else {
                RETURN_TRUE;
        }
}
/* }}} */


/*
 * Local variables:
 * tab-width: 4
 * c-basic-offset: 4
 * End:
 */

Index: php4/ext/vpopmail/php_vpopmail.h
+++ php4/ext/vpopmail/php_vpopmail.h
/*
   +----------------------------------------------------------------------+
   | PHP version 4.0                                                      |
   +----------------------------------------------------------------------+
   | Copyright (c) 1997, 1998, 1999, 2000 The PHP Group                   |
   +----------------------------------------------------------------------+
   | This source file is subject to version 2.02 of the PHP license,      |
   | that is bundled with this package in the file LICENSE, and is        |
   | available at through the world-wide-web at                           |
   | http://www.php.net/license/2_02.txt.                                 |
   | If you did not receive a copy of the PHP license and are unable to   |
   | obtain it through the world-wide-web, please send a note to          |
   | [EMAIL PROTECTED] so we can mail you a copy immediately.               |
   +----------------------------------------------------------------------+
   | Author: David Croft <[EMAIL PROTECTED]>                           |
   +----------------------------------------------------------------------+
*/

/* $Id: php_vpopmail.h,v 1.1 2001/01/14 08:54:00 david Exp $ */

#ifndef PHP_VPOPMAIL_H
#define PHP_VPOPMAIL_H

#if HAVE_VPOPMAIL

extern zend_module_entry vpopmail_module_entry;
#define phpext_vpopmail_ptr &vpopmail_module_entry

#ifdef PHP_WIN32
#define PHP_VPOPMAIL_API __declspec(dllexport)
#else
#define PHP_VPOPMAIL_API
#endif

PHP_MINIT_FUNCTION(vpopmail);
PHP_MSHUTDOWN_FUNCTION(vpopmail);
PHP_MINFO_FUNCTION(vpopmail);

PHP_FUNCTION(vpopmail_adddomain);
PHP_FUNCTION(vpopmail_deldomain);
PHP_FUNCTION(vpopmail_adduser);
PHP_FUNCTION(vpopmail_deluser);
PHP_FUNCTION(vpopmail_passwd);
PHP_FUNCTION(vpopmail_setuserquota);
PHP_FUNCTION(vpopmail_auth_user);

typedef struct {
        int le_vpopmail;
        int initialised;
        char *defaulthost;
        int defaultport;
        int defaulttimeout;
        char *proxyaddress;
        int proxyport;
        char *proxylogon;
        char *proxypassword;
} php_vpopmail_globals;

#ifdef ZTS
#define VPOPMAILG(v) (vpopmail_globals->v)
#define VPOPMAILLS_FETCH() php_vpopmail_globals *vpopmail_globals = 
ts_resource(gd_vpopmail_id)
#else
#define VPOPMAILG(v) (vpopmail_globals.v)
#define VPOPMAILLS_FETCH()
#endif

#else

#define phpext_vpopmail_ptr NULL

#endif

#endif  /* PHP_VPOPMAIL_H */


/*
 * Local variables:
 * tab-width: 4
 * c-basic-offset: 4
 * End:
 */

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to