1 |
|
2 |
|
3 | var assert = require('assert');
|
4 | var util = require('util');
|
5 |
|
6 | var parents = require('ldap-filter');
|
7 |
|
8 | var Filter = require('./filter');
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 | function ExtensibleFilter(options) {
|
20 | parents.ExtensibleFilter.call(this, options);
|
21 | }
|
22 | util.inherits(ExtensibleFilter, parents.ExtensibleFilter);
|
23 | Filter.mixin(ExtensibleFilter);
|
24 | module.exports = ExtensibleFilter;
|
25 |
|
26 |
|
27 | ExtensibleFilter.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 |
|
53 | ExtensibleFilter.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 | };
|