386 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			386 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* constants defined for LDAP
 | |
|  * See http://www.python-ldap.org/ for details.
 | |
|  * $Id: constants.c,v 1.59 2014/09/12 12:02:21 stroeder Exp $ */
 | |
| 
 | |
| #include "common.h"
 | |
| #include "constants.h"
 | |
| #include "lber.h"
 | |
| #include "ldap.h"
 | |
| 
 | |
| static PyObject* reverse;
 | |
| static PyObject* forward;
 | |
| 
 | |
| /* convert an result integer into a Python string */
 | |
| 
 | |
| PyObject*
 | |
| LDAPconstant( int val ) {
 | |
|     PyObject *i = PyInt_FromLong( val );
 | |
|     PyObject *s = PyObject_GetItem( reverse, i );
 | |
|     if (s == NULL) {
 | |
|       PyErr_Clear();
 | |
|   return i;
 | |
|     }
 | |
|     Py_DECREF(i);
 | |
|     return s;
 | |
| }
 | |
| 
 | |
| /* initialise the module constants */
 | |
| 
 | |
| void
 | |
| LDAPinit_constants( PyObject* d )
 | |
| {
 | |
|   PyObject *zero, *author,*obj;
 | |
| 
 | |
|   reverse = PyDict_New();
 | |
|   forward = PyDict_New();
 | |
|   
 | |
|   PyDict_SetItemString( d, "_reverse", reverse );
 | |
|   PyDict_SetItemString( d, "_forward", forward );
 | |
| 
 | |
| #define add_int(d, name) \
 | |
|   { \
 | |
|     PyObject *i = PyInt_FromLong(LDAP_##name); \
 | |
|     PyDict_SetItemString( d, #name, i ); \
 | |
|     Py_DECREF(i); \
 | |
|   }
 | |
| 
 | |
|   /* simple constants */
 | |
| 
 | |
|   add_int(d,API_VERSION);
 | |
|   add_int(d,VENDOR_VERSION);
 | |
| 
 | |
|         add_int(d,PORT);
 | |
|   add_int(d,VERSION1);
 | |
|   add_int(d,VERSION2);
 | |
|   add_int(d,VERSION3);
 | |
|   add_int(d,VERSION_MIN);
 | |
|   add_int(d,VERSION);
 | |
|   add_int(d,VERSION_MAX);
 | |
|   add_int(d,TAG_MESSAGE);
 | |
|   add_int(d,TAG_MSGID);
 | |
| 
 | |
|   add_int(d,REQ_BIND);
 | |
|   add_int(d,REQ_UNBIND);
 | |
|   add_int(d,REQ_SEARCH);
 | |
|   add_int(d,REQ_MODIFY);
 | |
|   add_int(d,REQ_ADD);
 | |
|   add_int(d,REQ_DELETE);
 | |
|   add_int(d,REQ_MODRDN);
 | |
|   add_int(d,REQ_COMPARE);
 | |
|   add_int(d,REQ_ABANDON);
 | |
| 
 | |
|   add_int(d,TAG_LDAPDN);
 | |
|   add_int(d,TAG_LDAPCRED);
 | |
|   add_int(d,TAG_CONTROLS);
 | |
|   add_int(d,TAG_REFERRAL);
 | |
| 
 | |
|   add_int(d,REQ_EXTENDED);
 | |
| #if LDAP_API_VERSION >= 2004
 | |
|   add_int(d,TAG_NEWSUPERIOR);
 | |
|   add_int(d,TAG_EXOP_REQ_OID);
 | |
|   add_int(d,TAG_EXOP_REQ_VALUE);
 | |
|   add_int(d,TAG_EXOP_RES_OID);
 | |
|   add_int(d,TAG_EXOP_RES_VALUE);
 | |
| #ifdef HAVE_SASL
 | |
|   add_int(d,TAG_SASL_RES_CREDS);
 | |
| #endif
 | |
| #endif
 | |
| 
 | |
|   add_int(d,SASL_AUTOMATIC);
 | |
|   add_int(d,SASL_INTERACTIVE);
 | |
|   add_int(d,SASL_QUIET);
 | |
| 
 | |
|   /* reversibles */
 | |
| 
 | |
|   zero = PyInt_FromLong( 0 );
 | |
|   PyDict_SetItem( reverse, zero, Py_None );
 | |
|   Py_DECREF( zero );
 | |
| 
 | |
|   add_int(d,RES_BIND);
 | |
|   add_int(d,RES_SEARCH_ENTRY);
 | |
|   add_int(d,RES_SEARCH_RESULT);
 | |
|   add_int(d,RES_MODIFY);
 | |
|   add_int(d,RES_ADD);
 | |
|   add_int(d,RES_DELETE);
 | |
|   add_int(d,RES_MODRDN);
 | |
|   add_int(d,RES_COMPARE);
 | |
|   add_int(d,RES_ANY);
 | |
| 
 | |
|   add_int(d,RES_SEARCH_REFERENCE);
 | |
|   add_int(d,RES_EXTENDED);
 | |
|   add_int(d,RES_UNSOLICITED);
 | |
| 
 | |
|   add_int(d,RES_INTERMEDIATE);
 | |
| 
 | |
|   /* non-reversibles */
 | |
| 
 | |
|   add_int(d,AUTH_NONE);
 | |
|   add_int(d,AUTH_SIMPLE);
 | |
|   add_int(d,SCOPE_BASE);
 | |
|   add_int(d,SCOPE_ONELEVEL);
 | |
|   add_int(d,SCOPE_SUBTREE);
 | |
| #ifdef LDAP_SCOPE_SUBORDINATE
 | |
|   add_int(d,SCOPE_SUBORDINATE);
 | |
| #endif
 | |
|   add_int(d,MOD_ADD);
 | |
|   add_int(d,MOD_DELETE);
 | |
|   add_int(d,MOD_REPLACE);
 | |
|   add_int(d,MOD_INCREMENT);
 | |
|   add_int(d,MOD_BVALUES);
 | |
| 
 | |
|   add_int(d,MSG_ONE);
 | |
|   add_int(d,MSG_ALL);
 | |
|   add_int(d,MSG_RECEIVED);
 | |
| 
 | |
|   /* (errors.c contains the error constants) */
 | |
| 
 | |
|   add_int(d,DEREF_NEVER);
 | |
|   add_int(d,DEREF_SEARCHING);
 | |
|   add_int(d,DEREF_FINDING);
 | |
|   add_int(d,DEREF_ALWAYS);
 | |
|   add_int(d,NO_LIMIT);
 | |
| 
 | |
|   add_int(d,OPT_API_INFO);
 | |
|   add_int(d,OPT_DEREF);
 | |
|   add_int(d,OPT_SIZELIMIT);
 | |
|   add_int(d,OPT_TIMELIMIT);
 | |
| #ifdef LDAP_OPT_REFERRALS
 | |
|   add_int(d,OPT_REFERRALS);
 | |
| #endif
 | |
|   add_int(d,OPT_ERROR_NUMBER);
 | |
|   add_int(d,OPT_RESTART);
 | |
|   add_int(d,OPT_PROTOCOL_VERSION);
 | |
|   add_int(d,OPT_SERVER_CONTROLS);
 | |
|   add_int(d,OPT_CLIENT_CONTROLS);
 | |
|   add_int(d,OPT_API_FEATURE_INFO);
 | |
|   add_int(d,OPT_HOST_NAME);
 | |
| 
 | |
|   add_int(d,OPT_DESC);
 | |
|   add_int(d,OPT_DIAGNOSTIC_MESSAGE);
 | |
| 
 | |
|   add_int(d,OPT_ERROR_STRING);
 | |
|   add_int(d,OPT_MATCHED_DN);
 | |
|   add_int(d,OPT_DEBUG_LEVEL);
 | |
|   add_int(d,OPT_TIMEOUT);
 | |
|   add_int(d,OPT_REFHOPLIMIT);
 | |
|   add_int(d,OPT_NETWORK_TIMEOUT);
 | |
|   add_int(d,OPT_URI);
 | |
| #ifdef LDAP_OPT_DEFBASE
 | |
|   add_int(d,OPT_DEFBASE);
 | |
| #endif
 | |
| #ifdef HAVE_TLS
 | |
|   add_int(d,OPT_X_TLS);
 | |
| #ifdef LDAP_OPT_X_TLS_NEWCTX
 | |
|   add_int(d,OPT_X_TLS_CTX);
 | |
| #endif
 | |
|   add_int(d,OPT_X_TLS_CACERTFILE);
 | |
|   add_int(d,OPT_X_TLS_CACERTDIR);
 | |
|   add_int(d,OPT_X_TLS_CERTFILE);
 | |
|   add_int(d,OPT_X_TLS_KEYFILE);
 | |
|   add_int(d,OPT_X_TLS_REQUIRE_CERT);
 | |
|   add_int(d,OPT_X_TLS_CIPHER_SUITE);
 | |
|   add_int(d,OPT_X_TLS_RANDOM_FILE);
 | |
|   add_int(d,OPT_X_TLS_DHFILE);
 | |
|   add_int(d,OPT_X_TLS_NEVER);
 | |
|   add_int(d,OPT_X_TLS_HARD);
 | |
|   add_int(d,OPT_X_TLS_DEMAND);
 | |
|   add_int(d,OPT_X_TLS_ALLOW);
 | |
|   add_int(d,OPT_X_TLS_TRY);
 | |
| #ifdef LDAP_OPT_X_TLS_PEERCERT
 | |
|   add_int(d,OPT_X_TLS_PEERCERT);
 | |
| #endif
 | |
| #ifdef LDAP_OPT_X_TLS_VERSION
 | |
|   add_int(d,OPT_X_TLS_VERSION);
 | |
| #endif
 | |
| #ifdef LDAP_OPT_X_TLS_CIPHER
 | |
|   add_int(d,OPT_X_TLS_CIPHER);
 | |
| #endif
 | |
| #ifdef LDAP_OPT_X_TLS_PEERCERT
 | |
|   add_int(d,OPT_X_TLS_PEERCERT);
 | |
| #endif
 | |
| #ifdef LDAP_OPT_X_TLS_CRLCHECK
 | |
|   /* only available if OpenSSL supports it => might cause backward compability problems */
 | |
|   add_int(d,OPT_X_TLS_CRLCHECK);
 | |
| #ifdef LDAP_OPT_X_TLS_CRLFILE
 | |
|   add_int(d,OPT_X_TLS_CRLFILE);
 | |
| #endif
 | |
|   add_int(d,OPT_X_TLS_CRL_NONE);
 | |
|   add_int(d,OPT_X_TLS_CRL_PEER);
 | |
|   add_int(d,OPT_X_TLS_CRL_ALL);
 | |
| #endif
 | |
| #ifdef LDAP_OPT_X_TLS_NEWCTX
 | |
|   add_int(d,OPT_X_TLS_NEWCTX);
 | |
| #endif
 | |
| #ifdef LDAP_OPT_X_TLS_PROTOCOL_MIN
 | |
|   add_int(d,OPT_X_TLS_PROTOCOL_MIN);
 | |
| #endif
 | |
| #ifdef LDAP_OPT_X_TLS_PACKAGE
 | |
|   add_int(d,OPT_X_TLS_PACKAGE);
 | |
| #endif
 | |
| #endif
 | |
|   add_int(d,OPT_X_SASL_MECH);
 | |
|   add_int(d,OPT_X_SASL_REALM);
 | |
|   add_int(d,OPT_X_SASL_AUTHCID);
 | |
|   add_int(d,OPT_X_SASL_AUTHZID);
 | |
|   add_int(d,OPT_X_SASL_SSF);
 | |
|   add_int(d,OPT_X_SASL_SSF_EXTERNAL);
 | |
|   add_int(d,OPT_X_SASL_SECPROPS);
 | |
|   add_int(d,OPT_X_SASL_SSF_MIN);
 | |
|   add_int(d,OPT_X_SASL_SSF_MAX);
 | |
| #ifdef LDAP_OPT_X_SASL_NOCANON
 | |
|   add_int(d,OPT_X_SASL_NOCANON);
 | |
| #endif
 | |
| #ifdef LDAP_OPT_X_SASL_USERNAME
 | |
|   add_int(d,OPT_X_SASL_USERNAME);
 | |
| #endif
 | |
| #ifdef LDAP_OPT_CONNECT_ASYNC
 | |
|   add_int(d,OPT_CONNECT_ASYNC);
 | |
| #endif
 | |
| #ifdef LDAP_OPT_X_KEEPALIVE_IDLE
 | |
|   add_int(d,OPT_X_KEEPALIVE_IDLE);
 | |
| #endif
 | |
| #ifdef LDAP_OPT_X_KEEPALIVE_PROBES
 | |
|   add_int(d,OPT_X_KEEPALIVE_PROBES);
 | |
| #endif
 | |
| #ifdef LDAP_OPT_X_KEEPALIVE_INTERVAL
 | |
|   add_int(d,OPT_X_KEEPALIVE_INTERVAL);
 | |
| #endif
 | |
| 
 | |
|   add_int(d,DN_FORMAT_LDAP);
 | |
|   add_int(d,DN_FORMAT_LDAPV3);
 | |
|   add_int(d,DN_FORMAT_LDAPV2);
 | |
|   add_int(d,DN_FORMAT_DCE);
 | |
|   add_int(d,DN_FORMAT_UFN);
 | |
|   add_int(d,DN_FORMAT_AD_CANONICAL);
 | |
|   /* add_int(d,DN_FORMAT_LBER); */    /* "for testing only" */
 | |
|   add_int(d,DN_FORMAT_MASK);
 | |
|   add_int(d,DN_PRETTY);
 | |
|   add_int(d,DN_SKIP);
 | |
|   add_int(d,DN_P_NOLEADTRAILSPACES);
 | |
|   add_int(d,DN_P_NOSPACEAFTERRDN);
 | |
|   add_int(d,DN_PEDANTIC);
 | |
| 
 | |
|   add_int(d,AVA_NULL);
 | |
|   add_int(d,AVA_STRING);
 | |
|   add_int(d,AVA_BINARY);
 | |
|   add_int(d,AVA_NONPRINTABLE);
 | |
|   
 | |
|   /*add_int(d,OPT_ON);*/
 | |
|   obj = PyInt_FromLong(1);
 | |
|   PyDict_SetItemString( d, "OPT_ON", obj );
 | |
|   Py_DECREF(obj);
 | |
|   /*add_int(d,OPT_OFF);*/
 | |
|   obj = PyInt_FromLong(0);
 | |
|   PyDict_SetItemString( d, "OPT_OFF", obj );      
 | |
|   Py_DECREF(obj);
 | |
|   
 | |
|   add_int(d,OPT_SUCCESS);
 | |
| 
 | |
|   /* XXX - these belong in errors.c */
 | |
| 
 | |
|   add_int(d,URL_ERR_BADSCOPE);
 | |
|   add_int(d,URL_ERR_MEM);
 | |
| 
 | |
|   /* author */
 | |
| 
 | |
|   author = PyUnicode_FromString("python-ldap Project");
 | |
|   PyDict_SetItemString(d, "__author__", author);
 | |
|   Py_DECREF(author);
 | |
| 
 | |
|   /* add_int(d,LIBLDAP_R); */
 | |
| #ifdef HAVE_LIBLDAP_R
 | |
|   obj = PyInt_FromLong(1);
 | |
| #else
 | |
|   obj = PyInt_FromLong(0);
 | |
| #endif
 | |
|   PyDict_SetItemString( d, "LIBLDAP_R", obj );
 | |
|   Py_DECREF(obj);
 | |
| 
 | |
|   /* add_int(d,SASL); */
 | |
| #ifdef HAVE_SASL
 | |
|   obj = PyInt_FromLong(1);
 | |
| #else
 | |
|   obj = PyInt_FromLong(0);
 | |
| #endif
 | |
|   PyDict_SetItemString( d, "SASL_AVAIL", obj );
 | |
|   Py_DECREF(obj);
 | |
| 
 | |
|   /* add_int(d,TLS); */
 | |
| #ifdef HAVE_TLS
 | |
|   obj = PyInt_FromLong(1);
 | |
| #else
 | |
|   obj = PyInt_FromLong(0);
 | |
| #endif
 | |
|   PyDict_SetItemString( d, "TLS_AVAIL", obj );
 | |
|   Py_DECREF(obj);
 | |
| 
 | |
|   obj = PyUnicode_FromString(LDAP_CONTROL_MANAGEDSAIT);
 | |
|   PyDict_SetItemString( d, "CONTROL_MANAGEDSAIT", obj );
 | |
|   Py_DECREF(obj);
 | |
| 
 | |
|   obj = PyUnicode_FromString(LDAP_CONTROL_PROXY_AUTHZ);
 | |
|   PyDict_SetItemString( d, "CONTROL_PROXY_AUTHZ", obj );
 | |
|   Py_DECREF(obj);
 | |
| 
 | |
|   obj = PyUnicode_FromString(LDAP_CONTROL_SUBENTRIES);
 | |
|   PyDict_SetItemString( d, "CONTROL_SUBENTRIES", obj );
 | |
|   Py_DECREF(obj);
 | |
| 
 | |
|   obj = PyUnicode_FromString(LDAP_CONTROL_VALUESRETURNFILTER);
 | |
|   PyDict_SetItemString( d, "CONTROL_VALUESRETURNFILTER", obj );
 | |
|   Py_DECREF(obj);
 | |
| 
 | |
|   obj = PyUnicode_FromString(LDAP_CONTROL_ASSERT);
 | |
|   PyDict_SetItemString( d, "CONTROL_ASSERT", obj );
 | |
|   Py_DECREF(obj);
 | |
| 
 | |
|   obj = PyUnicode_FromString(LDAP_CONTROL_PRE_READ);
 | |
|   PyDict_SetItemString( d, "CONTROL_PRE_READ", obj );
 | |
|   Py_DECREF(obj);
 | |
| 
 | |
|   obj = PyUnicode_FromString(LDAP_CONTROL_POST_READ);
 | |
|   PyDict_SetItemString( d, "CONTROL_POST_READ", obj );
 | |
|   Py_DECREF(obj);
 | |
| 
 | |
|   obj = PyUnicode_FromString(LDAP_CONTROL_SORTREQUEST);
 | |
|   PyDict_SetItemString( d, "CONTROL_SORTREQUEST", obj );
 | |
|   Py_DECREF(obj);
 | |
| 
 | |
|   obj = PyUnicode_FromString(LDAP_CONTROL_SORTRESPONSE);
 | |
|   PyDict_SetItemString( d, "CONTROL_SORTRESPONSE", obj );
 | |
|   Py_DECREF(obj);
 | |
| 
 | |
|   obj = PyUnicode_FromString(LDAP_CONTROL_PAGEDRESULTS);
 | |
|   PyDict_SetItemString( d, "CONTROL_PAGEDRESULTS", obj );
 | |
|   Py_DECREF(obj);
 | |
| 
 | |
|   obj = PyUnicode_FromString(LDAP_CONTROL_SYNC);
 | |
|   PyDict_SetItemString( d, "CONTROL_SYNC", obj );
 | |
|   Py_DECREF(obj);
 | |
| 
 | |
|   obj = PyUnicode_FromString(LDAP_CONTROL_SYNC_STATE);
 | |
|   PyDict_SetItemString( d, "CONTROL_SYNC_STATE", obj );
 | |
|   Py_DECREF(obj);
 | |
| 
 | |
|   obj = PyUnicode_FromString(LDAP_CONTROL_SYNC_DONE);
 | |
|   PyDict_SetItemString( d, "CONTROL_SYNC_DONE", obj );
 | |
|   Py_DECREF(obj);
 | |
| 
 | |
|   obj = PyUnicode_FromString(LDAP_SYNC_INFO);
 | |
|   PyDict_SetItemString( d, "SYNC_INFO", obj );
 | |
|   Py_DECREF(obj);
 | |
| 
 | |
|   obj = PyUnicode_FromString(LDAP_CONTROL_PASSWORDPOLICYREQUEST);
 | |
|   PyDict_SetItemString( d, "CONTROL_PASSWORDPOLICYREQUEST", obj );
 | |
|   Py_DECREF(obj);
 | |
| 
 | |
|   obj = PyUnicode_FromString(LDAP_CONTROL_PASSWORDPOLICYRESPONSE);
 | |
|   PyDict_SetItemString( d, "CONTROL_PASSWORDPOLICYRESPONSE", obj );
 | |
|   Py_DECREF(obj);
 | |
| 
 | |
|   obj = PyUnicode_FromString(LDAP_CONTROL_RELAX);
 | |
|   PyDict_SetItemString( d, "CONTROL_RELAX", obj );
 | |
|   Py_DECREF(obj);
 | |
| 
 | |
| }
 | 
