123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- 'use strict'
- const { Ber } = require('@ldapjs/asn1')
- const Control = require('./lib/control')
- const EntryChangeNotificationControl = require('./lib/controls/entry-change-notification-control')
- const PagedResultsControl = require('./lib/controls/paged-results-control')
- const PasswordPolicyControl = require('./lib/controls/password-policy-control')
- const PersistentSearchControl = require('./lib/controls/persistent-search-control')
- const ServerSideSortingRequestControl = require('./lib/controls/server-side-sorting-request-control')
- const ServerSideSortingResponseControl = require('./lib/controls/server-side-sorting-response-control')
- const VirtualListViewRequestControl = require('./lib/controls/virtual-list-view-request-control')
- const VirtualListViewResponseControl = require('./lib/controls/virtual-list-view-response-control')
- module.exports = {
- getControl: function getControl (ber) {
- if (!ber) throw TypeError('ber must be provided')
- if (ber.readSequence() === null) { return null }
- let type
- const opts = {
- criticality: false,
- value: null
- }
- /* istanbul ignore else */
- if (ber.length) {
- const end = ber.offset + ber.length
- type = ber.readString()
- /* istanbul ignore else */
- if (ber.offset < end) {
- /* istanbul ignore else */
- if (ber.peek() === Ber.Boolean) { opts.criticality = ber.readBoolean() }
- }
- if (ber.offset < end) { opts.value = ber.readString(Ber.OctetString, true) }
- }
- let control
- switch (type) {
- case EntryChangeNotificationControl.OID: {
- control = new EntryChangeNotificationControl(opts)
- break
- }
- case PagedResultsControl.OID: {
- control = new PagedResultsControl(opts)
- break
- }
- case PasswordPolicyControl.OID: {
- control = new PasswordPolicyControl(opts)
- break
- }
- case PersistentSearchControl.OID: {
- control = new PersistentSearchControl(opts)
- break
- }
- case ServerSideSortingRequestControl.OID: {
- control = new ServerSideSortingRequestControl(opts)
- break
- }
- case ServerSideSortingResponseControl.OID: {
- control = new ServerSideSortingResponseControl(opts)
- break
- }
- case VirtualListViewRequestControl.OID: {
- control = new VirtualListViewRequestControl(opts)
- break
- }
- case VirtualListViewResponseControl.OID: {
- control = new VirtualListViewResponseControl(opts)
- break
- }
- default: {
- opts.type = type
- control = new Control(opts)
- break
- }
- }
- return control
- },
- Control,
- EntryChangeNotificationControl,
- PagedResultsControl,
- PasswordPolicyControl,
- PersistentSearchControl,
- ServerSideSortingRequestControl,
- ServerSideSortingResponseControl,
- VirtualListViewRequestControl,
- VirtualListViewResponseControl
- }
|