constants.c 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. /* constants defined for LDAP
  2. * See http://www.python-ldap.org/ for details.
  3. * $Id: constants.c,v 1.49 2010/10/01 18:23:18 stroeder Exp $ */
  4. #include "common.h"
  5. #include "constants.h"
  6. #include "lber.h"
  7. #include "ldap.h"
  8. static PyObject* reverse;
  9. static PyObject* forward;
  10. /* convert an result integer into a Python string */
  11. PyObject*
  12. LDAPconstant( int val ) {
  13. PyObject *i = PyInt_FromLong( val );
  14. PyObject *s = PyObject_GetItem( reverse, i );
  15. if (s == NULL) {
  16. PyErr_Clear();
  17. return i;
  18. }
  19. Py_DECREF(i);
  20. return s;
  21. }
  22. /* initialise the module constants */
  23. void
  24. LDAPinit_constants( PyObject* d )
  25. {
  26. PyObject *zero, *author,*obj;
  27. reverse = PyDict_New();
  28. forward = PyDict_New();
  29. PyDict_SetItemString( d, "_reverse", reverse );
  30. PyDict_SetItemString( d, "_forward", forward );
  31. #define add_int(d, name) \
  32. { \
  33. PyObject *i = PyInt_FromLong(LDAP_##name); \
  34. PyDict_SetItemString( d, #name, i ); \
  35. Py_DECREF(i); \
  36. }
  37. /* simple constants */
  38. add_int(d,API_VERSION);
  39. add_int(d,VENDOR_VERSION);
  40. add_int(d,PORT);
  41. add_int(d,VERSION1);
  42. add_int(d,VERSION2);
  43. add_int(d,VERSION3);
  44. add_int(d,VERSION_MIN);
  45. add_int(d,VERSION);
  46. add_int(d,VERSION_MAX);
  47. add_int(d,TAG_MESSAGE);
  48. add_int(d,TAG_MSGID);
  49. add_int(d,REQ_BIND);
  50. add_int(d,REQ_UNBIND);
  51. add_int(d,REQ_SEARCH);
  52. add_int(d,REQ_MODIFY);
  53. add_int(d,REQ_ADD);
  54. add_int(d,REQ_DELETE);
  55. add_int(d,REQ_MODRDN);
  56. add_int(d,REQ_COMPARE);
  57. add_int(d,REQ_ABANDON);
  58. add_int(d,TAG_LDAPDN);
  59. add_int(d,TAG_LDAPCRED);
  60. add_int(d,TAG_CONTROLS);
  61. add_int(d,TAG_REFERRAL);
  62. add_int(d,REQ_EXTENDED);
  63. #if LDAP_API_VERSION >= 2004
  64. add_int(d,TAG_NEWSUPERIOR);
  65. add_int(d,TAG_EXOP_REQ_OID);
  66. add_int(d,TAG_EXOP_REQ_VALUE);
  67. add_int(d,TAG_EXOP_RES_OID);
  68. add_int(d,TAG_EXOP_RES_VALUE);
  69. #ifdef HAVE_SASL
  70. add_int(d,TAG_SASL_RES_CREDS);
  71. #endif
  72. #endif
  73. add_int(d,SASL_AUTOMATIC);
  74. add_int(d,SASL_INTERACTIVE);
  75. add_int(d,SASL_QUIET);
  76. /* reversibles */
  77. zero = PyInt_FromLong( 0 );
  78. PyDict_SetItem( reverse, zero, Py_None );
  79. Py_DECREF( zero );
  80. add_int(d,RES_BIND);
  81. add_int(d,RES_SEARCH_ENTRY);
  82. add_int(d,RES_SEARCH_RESULT);
  83. add_int(d,RES_MODIFY);
  84. add_int(d,RES_ADD);
  85. add_int(d,RES_DELETE);
  86. add_int(d,RES_MODRDN);
  87. add_int(d,RES_COMPARE);
  88. add_int(d,RES_ANY);
  89. add_int(d,RES_SEARCH_REFERENCE);
  90. add_int(d,RES_EXTENDED);
  91. add_int(d,RES_UNSOLICITED);
  92. /* non-reversibles */
  93. add_int(d,AUTH_NONE);
  94. add_int(d,AUTH_SIMPLE);
  95. add_int(d,SCOPE_BASE);
  96. add_int(d,SCOPE_ONELEVEL);
  97. add_int(d,SCOPE_SUBTREE);
  98. add_int(d,MOD_ADD);
  99. add_int(d,MOD_DELETE);
  100. add_int(d,MOD_REPLACE);
  101. add_int(d,MOD_INCREMENT);
  102. add_int(d,MOD_BVALUES);
  103. add_int(d,MSG_ONE);
  104. add_int(d,MSG_ALL);
  105. add_int(d,MSG_RECEIVED);
  106. /* (errors.c contains the error constants) */
  107. add_int(d,DEREF_NEVER);
  108. add_int(d,DEREF_SEARCHING);
  109. add_int(d,DEREF_FINDING);
  110. add_int(d,DEREF_ALWAYS);
  111. add_int(d,NO_LIMIT);
  112. add_int(d,OPT_API_INFO);
  113. add_int(d,OPT_DEREF);
  114. add_int(d,OPT_SIZELIMIT);
  115. add_int(d,OPT_TIMELIMIT);
  116. #ifdef LDAP_OPT_REFERRALS
  117. add_int(d,OPT_REFERRALS);
  118. #endif
  119. add_int(d,OPT_ERROR_NUMBER);
  120. add_int(d,OPT_RESTART);
  121. add_int(d,OPT_PROTOCOL_VERSION);
  122. add_int(d,OPT_SERVER_CONTROLS);
  123. add_int(d,OPT_CLIENT_CONTROLS);
  124. add_int(d,OPT_API_FEATURE_INFO);
  125. add_int(d,OPT_HOST_NAME);
  126. /* For backward-compability with OpenLDAP 2.3 libs this is defined in ldap/__init__.py */
  127. /* add_int(d,OPT_DIAGNOSTIC_MESSAGE); */
  128. add_int(d,OPT_ERROR_STRING);
  129. add_int(d,OPT_MATCHED_DN);
  130. add_int(d,OPT_DEBUG_LEVEL);
  131. add_int(d,OPT_TIMEOUT);
  132. add_int(d,OPT_REFHOPLIMIT);
  133. add_int(d,OPT_NETWORK_TIMEOUT);
  134. add_int(d,OPT_URI);
  135. #ifdef LDAP_OPT_DEFBASE
  136. add_int(d,OPT_DEFBASE);
  137. #endif
  138. #ifdef HAVE_TLS
  139. add_int(d,OPT_X_TLS);
  140. #ifdef LDAP_OPT_X_TLS_NEWCTX
  141. add_int(d,OPT_X_TLS_CTX);
  142. #endif
  143. add_int(d,OPT_X_TLS_CACERTFILE);
  144. add_int(d,OPT_X_TLS_CACERTDIR);
  145. add_int(d,OPT_X_TLS_CERTFILE);
  146. add_int(d,OPT_X_TLS_KEYFILE);
  147. add_int(d,OPT_X_TLS_REQUIRE_CERT);
  148. add_int(d,OPT_X_TLS_CIPHER_SUITE);
  149. add_int(d,OPT_X_TLS_RANDOM_FILE);
  150. add_int(d,OPT_X_TLS_DHFILE);
  151. add_int(d,OPT_X_TLS_NEVER);
  152. add_int(d,OPT_X_TLS_HARD);
  153. add_int(d,OPT_X_TLS_DEMAND);
  154. add_int(d,OPT_X_TLS_ALLOW);
  155. add_int(d,OPT_X_TLS_TRY);
  156. #ifdef LDAP_OPT_X_TLS_CRLCHECK
  157. /* only available if OpenSSL supports it => might cause backward compability problems */
  158. add_int(d,OPT_X_TLS_CRLCHECK);
  159. #ifdef LDAP_OPT_X_TLS_CRLFILE
  160. add_int(d,OPT_X_TLS_CRLFILE);
  161. #endif
  162. add_int(d,OPT_X_TLS_CRL_NONE);
  163. add_int(d,OPT_X_TLS_CRL_PEER);
  164. add_int(d,OPT_X_TLS_CRL_ALL);
  165. #endif
  166. #ifdef LDAP_OPT_X_TLS_NEWCTX
  167. add_int(d,OPT_X_TLS_NEWCTX);
  168. #endif
  169. #ifdef LDAP_OPT_X_TLS_PROTOCOL_MIN
  170. add_int(d,OPT_X_TLS_PROTOCOL_MIN);
  171. #endif
  172. #endif
  173. add_int(d,OPT_X_SASL_MECH);
  174. add_int(d,OPT_X_SASL_REALM);
  175. add_int(d,OPT_X_SASL_AUTHCID);
  176. add_int(d,OPT_X_SASL_AUTHZID);
  177. add_int(d,OPT_X_SASL_SSF);
  178. add_int(d,OPT_X_SASL_SSF_EXTERNAL);
  179. add_int(d,OPT_X_SASL_SECPROPS);
  180. add_int(d,OPT_X_SASL_SSF_MIN);
  181. add_int(d,OPT_X_SASL_SSF_MAX);
  182. #ifdef LDAP_OPT_X_SASL_NOCANON
  183. add_int(d,OPT_X_SASL_NOCANON);
  184. #endif
  185. #ifdef LDAP_OPT_X_SASL_USERNAME
  186. add_int(d,OPT_X_SASL_USERNAME);
  187. #endif
  188. #ifdef LDAP_OPT_CONNECT_ASYNC
  189. add_int(d,OPT_CONNECT_ASYNC);
  190. #endif
  191. #ifdef LDAP_OPT_X_KEEPALIVE_IDLE
  192. add_int(d,OPT_X_KEEPALIVE_IDLE);
  193. #endif
  194. #ifdef LDAP_OPT_X_KEEPALIVE_PROBES
  195. add_int(d,OPT_X_KEEPALIVE_PROBES);
  196. #endif
  197. #ifdef LDAP_OPT_X_KEEPALIVE_INTERVAL
  198. add_int(d,OPT_X_KEEPALIVE_INTERVAL);
  199. #endif
  200. add_int(d,DN_FORMAT_LDAP);
  201. add_int(d,DN_FORMAT_LDAPV3);
  202. add_int(d,DN_FORMAT_LDAPV2);
  203. add_int(d,DN_FORMAT_DCE);
  204. add_int(d,DN_FORMAT_UFN);
  205. add_int(d,DN_FORMAT_AD_CANONICAL);
  206. /* add_int(d,DN_FORMAT_LBER); */ /* "for testing only" */
  207. add_int(d,DN_FORMAT_MASK);
  208. add_int(d,DN_PRETTY);
  209. add_int(d,DN_SKIP);
  210. add_int(d,DN_P_NOLEADTRAILSPACES);
  211. add_int(d,DN_P_NOSPACEAFTERRDN);
  212. add_int(d,DN_PEDANTIC);
  213. add_int(d,AVA_NULL);
  214. add_int(d,AVA_STRING);
  215. add_int(d,AVA_BINARY);
  216. add_int(d,AVA_NONPRINTABLE);
  217. /*add_int(d,OPT_ON);*/
  218. obj = PyInt_FromLong(1);
  219. PyDict_SetItemString( d, "OPT_ON", obj );
  220. Py_DECREF(obj);
  221. /*add_int(d,OPT_OFF);*/
  222. obj = PyInt_FromLong(0);
  223. PyDict_SetItemString( d, "OPT_OFF", obj );
  224. Py_DECREF(obj);
  225. add_int(d,OPT_SUCCESS);
  226. /* XXX - these belong in errors.c */
  227. add_int(d,URL_ERR_BADSCOPE);
  228. add_int(d,URL_ERR_MEM);
  229. /* author */
  230. author = PyString_FromString("python-ldap-dev@lists.sf.net");
  231. PyDict_SetItemString(d, "__author__", author);
  232. Py_DECREF(author);
  233. /* add_int(d,LIBLDAP_R); */
  234. #ifdef HAVE_LIBLDAP_R
  235. obj = PyInt_FromLong(1);
  236. #else
  237. obj = PyInt_FromLong(0);
  238. #endif
  239. PyDict_SetItemString( d, "LIBLDAP_R", obj );
  240. Py_DECREF(obj);
  241. /* add_int(d,SASL); */
  242. #ifdef HAVE_SASL
  243. obj = PyInt_FromLong(1);
  244. #else
  245. obj = PyInt_FromLong(0);
  246. #endif
  247. PyDict_SetItemString( d, "SASL_AVAIL", obj );
  248. Py_DECREF(obj);
  249. /* add_int(d,TLS); */
  250. #ifdef HAVE_TLS
  251. obj = PyInt_FromLong(1);
  252. #else
  253. obj = PyInt_FromLong(0);
  254. #endif
  255. PyDict_SetItemString( d, "TLS_AVAIL", obj );
  256. Py_DECREF(obj);
  257. obj = PyString_FromString(LDAP_CONTROL_PAGE_OID);
  258. PyDict_SetItemString( d, "LDAP_CONTROL_PAGE_OID", obj );
  259. Py_DECREF(obj);
  260. obj = PyString_FromString(LDAP_CONTROL_VALUESRETURNFILTER);
  261. PyDict_SetItemString( d, "LDAP_CONTROL_VALUESRETURNFILTER", obj );
  262. Py_DECREF(obj);
  263. }