UNPKG

1.45 kBJavaScriptView Raw
1// Copyright 2011 Mark Cavage, Inc. All rights reserved.
2
3var assert = require('assert');
4var util = require('util');
5
6var parents = require('ldap-filter');
7
8var Filter = require('./filter');
9
10
11
12// THIS IS A STUB!
13//
14// ldapjs does not support server side extensible matching.
15// This class exists only for the client to send them.
16
17///--- API
18
19function ExtensibleFilter(options) {
20 parents.ExtensibleFilter.call(this, options);
21}
22util.inherits(ExtensibleFilter, parents.ExtensibleFilter);
23Filter.mixin(ExtensibleFilter);
24module.exports = ExtensibleFilter;
25
26
27ExtensibleFilter.prototype.parse = function (ber) {
28 var end = ber.offset + ber.length;
29 while (ber.offset < end) {
30 var tag = ber.peek();
31 switch (tag) {
32 case 0x81:
33 this.rule = ber.readString(tag);
34 break;
35 case 0x82:
36 this.matchType = ber.readString(tag);
37 break;
38 case 0x83:
39 this.value = ber.readString(tag);
40 break;
41 case 0x84:
42 this.dnAttributes = ber.readBoolean(tag);
43 break;
44 default:
45 throw new Error('Invalid ext_match filter type: 0x' + tag.toString(16));
46 }
47 }
48
49 return true;
50};
51
52
53ExtensibleFilter.prototype._toBer = function (ber) {
54 assert.ok(ber);
55
56 if (this.rule)
57 ber.writeString(this.rule, 0x81);
58 if (this.matchType)
59 ber.writeString(this.matchType, 0x82);
60
61 ber.writeString(this.value, 0x83);
62 if (this.dnAttributes)
63 ber.writeBoolean(this.dnAttributes, 0x84);
64
65 return ber;
66};