123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- 'use strict'
- const core = Object.freeze({
- LDAP_VERSION_3: 0x03,
- LBER_SET: 0x31,
- LDAP_CONTROLS: 0xa0
- })
- const operations = Object.freeze({
- LDAP_REQ_BIND: 0x60,
- LDAP_REQ_UNBIND: 0x42,
- LDAP_REQ_SEARCH: 0x63,
- LDAP_REQ_MODIFY: 0x66,
- LDAP_REQ_ADD: 0x68,
- LDAP_REQ_DELETE: 0x4a,
- LDAP_REQ_MODRDN: 0x6c,
- LDAP_REQ_COMPARE: 0x6e,
- LDAP_REQ_ABANDON: 0x50,
- LDAP_REQ_EXTENSION: 0x77,
- LDAP_RES_BIND: 0x61,
- LDAP_RES_SEARCH_ENTRY: 0x64,
- LDAP_RES_SEARCH_DONE: 0x65,
- LDAP_RES_SEARCH_REF: 0x73,
- LDAP_RES_SEARCH: 0x65,
- LDAP_RES_MODIFY: 0x67,
- LDAP_RES_ADD: 0x69,
- LDAP_RES_DELETE: 0x6b,
- LDAP_RES_MODRDN: 0x6d,
- LDAP_RES_COMPARE: 0x6f,
- LDAP_RES_EXTENSION: 0x78,
- LDAP_RES_INTERMEDIATE: 0x79,
- // This is really an operation. It's a specific
- // sequence tag. But the referral situation is
- // so specific it makes more sense to put it here.
- LDAP_RES_REFERRAL: 0xa3
- })
- /**
- * List of LDAP response result codes. See
- * https://web.archive.org/web/20220812122129/https://nawilson.com/ldap-result-code-reference/
- */
- const resultCodes = Object.freeze({
- SUCCESS: 0,
- OPERATIONS_ERROR: 1,
- PROTOCOL_ERROR: 2,
- TIME_LIMIT_EXCEEDED: 3,
- SIZE_LIMIT_EXCEEDED: 4,
- COMPARE_FALSE: 5,
- COMPARE_TRUE: 6,
- AUTH_METHOD_NOT_SUPPORTED: 7,
- STRONGER_AUTH_REQUIRED: 8,
- REFERRAL: 10,
- ADMIN_LIMIT_EXCEEDED: 11,
- UNAVAILABLE_CRITICAL_EXTENSION: 12,
- CONFIDENTIALITY_REQUIRED: 13,
- SASL_BIND_IN_PROGRESS: 14,
- NO_SUCH_ATTRIBUTE: 16,
- UNDEFINED_ATTRIBUTE_TYPE: 17,
- INAPPROPRIATE_MATCHING: 18,
- CONSTRAINT_VIOLATION: 19,
- ATTRIBUTE_OR_VALUE_EXISTS: 20,
- INVALID_ATTRIBUTE_SYNTAX: 21,
- NO_SUCH_OBJECT: 32,
- ALIAS_PROBLEM: 33,
- INVALID_DN_SYNTAX: 34,
- IS_LEAF: 35,
- ALIAS_DEREFERENCING_PROBLEM: 36,
- INAPPROPRIATE_AUTHENTICATION: 48,
- INVALID_CREDENTIALS: 49,
- INSUFFICIENT_ACCESS_RIGHTS: 50,
- BUSY: 51,
- UNAVAILABLE: 52,
- UNWILLING_TO_PERFORM: 53,
- LOOP_DETECT: 54,
- SORT_CONTROL_MISSING: 60,
- OFFSET_RANGE_ERROR: 61,
- NAMING_VIOLATION: 64,
- OBJECT_CLASS_VIOLATION: 65,
- NOT_ALLOWED_ON_NON_LEAF: 66,
- NOT_ALLOWED_ON_RDN: 67,
- ENTRY_ALREADY_EXISTS: 68,
- OBJECT_CLASS_MODS_PROHIBITED: 69,
- RESULTS_TOO_LARGE: 70,
- AFFECTS_MULTIPLE_DSAS: 71,
- CONTROL_ERROR: 76,
- OTHER: 80,
- SERVER_DOWN: 81,
- LOCAL_ERROR: 82,
- ENCODING_ERROR: 83,
- DECODING_ERROR: 84,
- TIMEOUT: 85,
- AUTH_UNKNOWN: 86,
- FILTER_ERROR: 87,
- USER_CANCELED: 88,
- PARAM_ERROR: 89,
- NO_MEMORY: 90,
- CONNECT_ERROR: 91,
- NOT_SUPPORTED: 92,
- CONTROL_NOT_FOUND: 93,
- NO_RESULTS_RETURNED: 94,
- MORE_RESULTS_TO_RETURN: 95,
- CLIENT_LOOP: 96,
- REFERRAL_LIMIT_EXCEEDED: 97,
- INVALID_RESPONSE: 100,
- AMBIGUOUS_RESPONSE: 101,
- TLS_NOT_SUPPORTED: 112,
- INTERMEDIATE_RESPONSE: 113,
- UNKNOWN_TYPE: 114,
- CANCELED: 118,
- NO_SUCH_OPERATION: 119,
- TOO_LATE: 120,
- CANNOT_CANCEL: 121,
- ASSERTION_FAILED: 122,
- AUTHORIZATION_DENIED: 123,
- E_SYNC_REFRESH_REQUIRED: 4096,
- NO_OPERATION: 16654
- })
- /**
- * Value constants and ASN.1 tags as defined in:
- * https://datatracker.ietf.org/doc/html/rfc4511#section-4.5.1
- */
- const search = Object.freeze({
- SCOPE_BASE_OBJECT: 0,
- SCOPE_ONE_LEVEL: 1,
- SCOPE_SUBTREE: 2,
- NEVER_DEREF_ALIASES: 0,
- DEREF_IN_SEARCHING: 1,
- DEREF_BASE_OBJECT: 2,
- DEREF_ALWAYS: 3,
- FILTER_AND: 0xa0,
- FILTER_OR: 0xa1,
- FILTER_NOT: 0xa2,
- FILTER_EQUALITY: 0xa3,
- FILTER_SUBSTRINGS: 0xa4,
- FILTER_GE: 0xa5,
- FILTER_LE: 0xa6,
- FILTER_PRESENT: 0x87,
- FILTER_APPROX: 0xa8,
- FILTER_EXT: 0xa9
- })
- module.exports = Object.freeze({
- core,
- operations,
- resultCodes,
- search,
- resultCodeToName
- })
- /**
- * Given an LDAP result code, return the constant name for that code.
- *
- * @param {number} code
- *
- * @returns {string|undefined}
- */
- function resultCodeToName (code) {
- for (const [key, value] of Object.entries(resultCodes)) {
- if (value === code) return key
- }
- }
|