332 lines
9.4 KiB
C
332 lines
9.4 KiB
C
/*
|
|
*
|
|
* PHP lasso -- PHP bindings for Lasso library
|
|
*
|
|
* Copyright (C) 2004 Entr'ouvert
|
|
* http://lasso.entrouvert.org
|
|
*
|
|
* Authors: Christophe Nowicki <cnowicki@easter-eggs.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*/
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
#include "lasso_config.h"
|
|
#endif
|
|
|
|
#include "php.h"
|
|
#include "php_ini.h"
|
|
#include "ext/standard/info.h"
|
|
#include "php_lasso.h"
|
|
|
|
#include "lasso.h"
|
|
|
|
/* True global resources - no need for thread safety here */
|
|
int le_lasso;
|
|
int le_lassonode;
|
|
int le_lassoserver;
|
|
int le_lassologin;
|
|
int le_lassouser;
|
|
int le_lassofederation;
|
|
int le_lassosession;
|
|
int le_lassoidentity;
|
|
int le_lassoprofile;
|
|
int le_lassolibauthnrequest;
|
|
|
|
ZEND_DECLARE_MODULE_GLOBALS(lasso)
|
|
|
|
/* {{{ lasso_functions[]
|
|
*
|
|
* Every user visible function must have an entry in lasso_functions[].
|
|
*/
|
|
function_entry lasso_functions[] = {
|
|
PHP_FE(lasso_init, NULL)
|
|
PHP_FE(lasso_version, NULL)
|
|
PHP_FE(lasso_shutdown, NULL)
|
|
|
|
/* lasso_server.c */
|
|
PHP_FE(lasso_server_new, NULL)
|
|
PHP_FE(lasso_server_dump, NULL)
|
|
PHP_FE(lasso_server_add_provider, NULL)
|
|
PHP_FE(lasso_server_destroy, NULL)
|
|
PHP_FE(lasso_server_new_from_dump, NULL)
|
|
|
|
/* lasso_login.c */
|
|
PHP_FE(lasso_login_new, NULL)
|
|
PHP_FE(lasso_login_new_from_dump, NULL)
|
|
PHP_FE(lasso_login_init_authn_request, NULL)
|
|
PHP_FE(lasso_login_destroy, NULL)
|
|
PHP_FE(lasso_login_build_request_msg, NULL)
|
|
PHP_FE(lasso_login_build_authn_request_msg, NULL)
|
|
|
|
/* lasso_user.c */
|
|
PHP_FE(lasso_identity_new, NULL)
|
|
PHP_FE(lasso_identity_dump, NULL)
|
|
PHP_FE(lasso_identity_destroy, NULL)
|
|
|
|
/* lasso_profile_.c */
|
|
PHP_FE(lasso_profile_new, NULL)
|
|
PHP_FE(lasso_profile_dump, NULL)
|
|
PHP_FE(lasso_profile_set_remote_providerid, NULL)
|
|
PHP_FE(lasso_profile_set_response_status, NULL)
|
|
PHP_FE(lasso_profile_user_from_dump, NULL)
|
|
PHP_FE(lasso_profile_get_request_type_from_soap_msg, NULL)
|
|
PHP_FE(lasso_cast_to_profile, NULL)
|
|
PHP_FE(lasso_profile_get_request, NULL)
|
|
PHP_FE(lasso_profile_get_msg_url, NULL)
|
|
PHP_FE(lasso_profile_get_msg_body, NULL)
|
|
|
|
/* lasso_lib_authn_request.c */
|
|
PHP_FE(lasso_cast_to_lib_authn_request, NULL)
|
|
PHP_FE(lasso_lib_authn_request_set_consent, NULL)
|
|
PHP_FE(lasso_lib_authn_request_set_ispassive, NULL)
|
|
PHP_FE(lasso_lib_authn_request_set_forceauthn, NULL)
|
|
PHP_FE(lasso_lib_authn_request_set_nameidpolicy, NULL)
|
|
PHP_FE(lasso_lib_authn_request_set_relaystate, NULL)
|
|
PHP_FE(lasso_lib_authn_request_set_protocolprofile, NULL)
|
|
|
|
/* lasso_identity */
|
|
PHP_FE(lasso_federation_new, NULL)
|
|
{NULL, NULL, NULL}
|
|
};
|
|
/* }}} */
|
|
|
|
/* {{{ lasso_module_entry
|
|
*/
|
|
zend_module_entry lasso_module_entry = {
|
|
#if ZEND_MODULE_API_NO >= 20010901
|
|
STANDARD_MODULE_HEADER,
|
|
#endif
|
|
"lasso",
|
|
lasso_functions,
|
|
PHP_MINIT(lasso),
|
|
PHP_MSHUTDOWN(lasso),
|
|
PHP_RINIT(lasso), /* Replace with NULL if there's nothing to do at request start */
|
|
PHP_RSHUTDOWN(lasso), /* Replace with NULL if there's nothing to do at request end */
|
|
PHP_MINFO(lasso),
|
|
#if ZEND_MODULE_API_NO >= 20010901
|
|
"0.1", /* Replace with version number for your extension */
|
|
#endif
|
|
STANDARD_MODULE_PROPERTIES
|
|
};
|
|
/* }}} */
|
|
|
|
#ifdef COMPILE_DL_LASSO
|
|
ZEND_GET_MODULE(lasso)
|
|
#endif
|
|
|
|
/* {{{ PHP_INI
|
|
*/
|
|
/* Remove comments and fill if you need to have entries in php.ini
|
|
PHP_INI_BEGIN()
|
|
STD_PHP_INI_ENTRY("lasso.global_value", "42", PHP_INI_ALL, OnUpdateInt, global_value, zend_lasso_globals, lasso_globals)
|
|
STD_PHP_INI_ENTRY("lasso.global_string", "foobar", PHP_INI_ALL, OnUpdateString, global_string, zend_lasso_globals, lasso_globals)
|
|
PHP_INI_END()
|
|
*/
|
|
/* }}} */
|
|
|
|
/* {{{ */
|
|
void lassonode_destruction_handler(zend_rsrc_list_entry *rsrc TSRMLS_DC) {
|
|
LassoNode *my_rsrc = (LassoNode *) rsrc->ptr;
|
|
// do_whatever_needs_to_be_done_with_the_resource(my_rsrc);
|
|
}
|
|
/* }}} */
|
|
|
|
/* {{{ */
|
|
void lassoserver_destruction_handler(zend_rsrc_list_entry *rsrc TSRMLS_DC) {
|
|
LassoServer *my_rsrc = (LassoServer *) rsrc->ptr;
|
|
// do_whatever_needs_to_be_done_with_the_resource(my_rsrc);
|
|
}
|
|
/* }}} */
|
|
|
|
/* {{{ */
|
|
void lassologin_destruction_handler(zend_rsrc_list_entry *rsrc TSRMLS_DC) {
|
|
LassoLogin *my_rsrc = (LassoLogin *) rsrc->ptr;
|
|
// do_whatever_needs_to_be_done_with_the_resource(my_rsrc);
|
|
}
|
|
/* }}} */
|
|
|
|
/* {{{ */
|
|
void lassoidentity_destruction_handler(zend_rsrc_list_entry *rsrc TSRMLS_DC) {
|
|
LassoIdentity *my_rsrc = (LassoIdentity *) rsrc->ptr;
|
|
// do_whatever_needs_to_be_done_with_the_resource(my_rsrc);
|
|
}
|
|
/* }}} */
|
|
|
|
/* {{{ */
|
|
void lassosession_destruction_handler(zend_rsrc_list_entry *rsrc TSRMLS_DC) {
|
|
LassoSession *my_rsrc = (LassoSession *) rsrc->ptr;
|
|
// do_whatever_needs_to_be_done_with_the_resource(my_rsrc);
|
|
}
|
|
/* }}} */
|
|
|
|
|
|
/* {{{ */
|
|
void lassoprofile_destruction_handler(zend_rsrc_list_entry *rsrc TSRMLS_DC) {
|
|
LassoProfile *my_rsrc = (LassoProfile *) rsrc->ptr;
|
|
// do_whatever_needs_to_be_done_with_the_resource(my_rsrc);
|
|
}
|
|
/* }}} */
|
|
|
|
/* {{{ */
|
|
void lassofederation_destruction_handler(zend_rsrc_list_entry *rsrc TSRMLS_DC) {
|
|
LassoFederation *my_rsrc = (LassoFederation *) rsrc->ptr;
|
|
// do_whatever_needs_to_be_done_with_the_resource(my_rsrc);
|
|
}
|
|
/* }}} */
|
|
|
|
/* {{{ */
|
|
void lassolibauthnrequest_destruction_handler(zend_rsrc_list_entry *rsrc TSRMLS_DC) {
|
|
LassoLibAuthnRequest *my_rsrc = (LassoLibAuthnRequest *) rsrc->ptr;
|
|
// do_whatever_needs_to_be_done_with_the_resource(my_rsrc);
|
|
}
|
|
/* }}} */
|
|
|
|
|
|
/* {{{ php_lasso_init_globals
|
|
*/
|
|
static void php_lasso_init_globals(zend_lasso_globals *lasso_globals)
|
|
{
|
|
lasso_globals->global_value = 0;
|
|
lasso_globals->global_string = NULL;
|
|
}
|
|
/* }}} */
|
|
|
|
/* {{{ PHP_MINIT_FUNCTION
|
|
*/
|
|
PHP_MINIT_FUNCTION(lasso)
|
|
{
|
|
ZEND_INIT_MODULE_GLOBALS(lasso, php_lasso_init_globals, NULL);
|
|
/* REGISTER_INI_ENTRIES(); */
|
|
|
|
/* Resources */
|
|
le_lassonode = zend_register_list_destructors_ex(lassonode_destruction_handler, NULL, le_lassonode_name, module_number);
|
|
le_lassoserver = zend_register_list_destructors_ex(lassoserver_destruction_handler, NULL, le_lassoserver_name, module_number);
|
|
le_lassologin = zend_register_list_destructors_ex(lassologin_destruction_handler, NULL, le_lassologin_name, module_number);
|
|
le_lassoidentity = zend_register_list_destructors_ex(lassoidentity_destruction_handler, NULL, le_lassoidentity_name, module_number);
|
|
le_lassosession = zend_register_list_destructors_ex(lassosession_destruction_handler, NULL, le_lassosession_name, module_number);
|
|
le_lassofederation = zend_register_list_destructors_ex(lassofederation_destruction_handler, NULL, le_lassofederation_name, module_number);
|
|
le_lassoprofile = zend_register_list_destructors_ex(lassoprofile_destruction_handler, NULL, le_lassoprofile_name, module_number);
|
|
le_lassolibauthnrequest = zend_register_list_destructors_ex(lassolibauthnrequest_destruction_handler, NULL, le_lassolibauthnrequest_name, module_number);
|
|
|
|
|
|
/* Constants */
|
|
REGISTER_LONG_CONSTANT("lassoSignatureMethodRsaSha1", 1, CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_STRING_CONSTANT("lassoLibConsentObtained", lassoLibConsentObtained, CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_STRING_CONSTANT("lassoLibNameIDPolicyTypeFederated", lassoLibNameIDPolicyTypeFederated, CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_STRING_CONSTANT("lassoLibProtocolProfileBrwsArt", lassoLibProtocolProfileBrwsArt, CONST_CS | CONST_PERSISTENT);
|
|
|
|
|
|
return SUCCESS;
|
|
}
|
|
/* }}} */
|
|
|
|
/* {{{ PHP_MSHUTDOWN_FUNCTION
|
|
*/
|
|
PHP_MSHUTDOWN_FUNCTION(lasso)
|
|
{
|
|
/* uncomment this line if you have INI entries
|
|
UNREGISTER_INI_ENTRIES();
|
|
*/
|
|
return SUCCESS;
|
|
}
|
|
/* }}} */
|
|
|
|
/* Remove if there's nothing to do at request start */
|
|
/* {{{ PHP_RINIT_FUNCTION
|
|
*/
|
|
PHP_RINIT_FUNCTION(lasso)
|
|
{
|
|
return SUCCESS;
|
|
}
|
|
/* }}} */
|
|
|
|
/* Remove if there's nothing to do at request end */
|
|
/* {{{ PHP_RSHUTDOWN_FUNCTION
|
|
*/
|
|
PHP_RSHUTDOWN_FUNCTION(lasso)
|
|
{
|
|
return SUCCESS;
|
|
}
|
|
/* }}} */
|
|
|
|
/* {{{ PHP_MINFO_FUNCTION
|
|
*/
|
|
PHP_MINFO_FUNCTION(lasso)
|
|
{
|
|
php_info_print_table_start();
|
|
php_info_print_table_header(2, "L.A.S.O.O support", "enabled");
|
|
php_info_print_table_end();
|
|
|
|
/* Remove comments if you have entries in php.ini
|
|
DISPLAY_INI_ENTRIES();
|
|
*/
|
|
}
|
|
/* }}} */
|
|
|
|
|
|
|
|
/* Remove the following function when you have succesfully modified config.m4
|
|
so that your module can be compiled into PHP, it exists only for testing
|
|
purposes. */
|
|
|
|
/* {{{ proto long lasso_init()
|
|
Initialise le bourdel */
|
|
PHP_FUNCTION(lasso_init)
|
|
{
|
|
zend_printf("DEBUG: lasso_init\n");
|
|
if (ZEND_NUM_ARGS() != 0)
|
|
WRONG_PARAM_COUNT
|
|
|
|
RETURN_LONG(lasso_init());
|
|
|
|
}
|
|
/* }}} */
|
|
|
|
/* {{{ proto long lasso_shutdown() */
|
|
PHP_FUNCTION(lasso_shutdown)
|
|
{
|
|
zend_printf("DEBUG: lasso_shutdown\n");
|
|
if (ZEND_NUM_ARGS() != 0)
|
|
WRONG_PARAM_COUNT
|
|
|
|
RETURN_LONG(lasso_shutdown());
|
|
|
|
}
|
|
/* }}} */
|
|
|
|
/* {{{ proto string lasso_version() */
|
|
PHP_FUNCTION(lasso_version)
|
|
{
|
|
char lasso_version[6];
|
|
|
|
zend_printf("DEBUG: lasso_version\n");
|
|
|
|
snprintf(lasso_version, 6, "%d.%d.%d", LASSO_VERSION_MAJOR,
|
|
LASSO_VERSION_MINOR, LASSO_VERSION_SUBMINOR);
|
|
|
|
RETURN_STRING(lasso_version, 1)
|
|
}
|
|
/* }}} */
|
|
|
|
/*
|
|
* Local variables:
|
|
* tab-width: 4
|
|
* c-basic-offset: 4
|
|
* End:
|
|
* vim600: noet sw=4 ts=4 fdm=marker
|
|
* vim<600: noet sw=4 ts=4
|
|
*/
|