rubinius-net-ldap 0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.rubocop.yml +5 -0
  4. data/.rubocop_todo.yml +462 -0
  5. data/.travis.yml +19 -0
  6. data/CONTRIBUTING.md +54 -0
  7. data/Contributors.rdoc +24 -0
  8. data/Gemfile +2 -0
  9. data/Hacking.rdoc +63 -0
  10. data/History.rdoc +260 -0
  11. data/License.rdoc +29 -0
  12. data/README.rdoc +65 -0
  13. data/Rakefile +17 -0
  14. data/lib/net-ldap.rb +2 -0
  15. data/lib/net/ber.rb +320 -0
  16. data/lib/net/ber/ber_parser.rb +182 -0
  17. data/lib/net/ber/core_ext.rb +55 -0
  18. data/lib/net/ber/core_ext/array.rb +96 -0
  19. data/lib/net/ber/core_ext/false_class.rb +10 -0
  20. data/lib/net/ber/core_ext/integer.rb +74 -0
  21. data/lib/net/ber/core_ext/string.rb +66 -0
  22. data/lib/net/ber/core_ext/true_class.rb +11 -0
  23. data/lib/net/ldap.rb +1229 -0
  24. data/lib/net/ldap/connection.rb +702 -0
  25. data/lib/net/ldap/dataset.rb +168 -0
  26. data/lib/net/ldap/dn.rb +225 -0
  27. data/lib/net/ldap/entry.rb +193 -0
  28. data/lib/net/ldap/error.rb +38 -0
  29. data/lib/net/ldap/filter.rb +778 -0
  30. data/lib/net/ldap/instrumentation.rb +23 -0
  31. data/lib/net/ldap/password.rb +38 -0
  32. data/lib/net/ldap/pdu.rb +297 -0
  33. data/lib/net/ldap/version.rb +5 -0
  34. data/lib/net/snmp.rb +264 -0
  35. data/rubinius-net-ldap.gemspec +37 -0
  36. data/script/install-openldap +112 -0
  37. data/script/package +7 -0
  38. data/script/release +16 -0
  39. data/test/ber/core_ext/test_array.rb +22 -0
  40. data/test/ber/core_ext/test_string.rb +25 -0
  41. data/test/ber/test_ber.rb +99 -0
  42. data/test/fixtures/cacert.pem +20 -0
  43. data/test/fixtures/openldap/memberof.ldif +33 -0
  44. data/test/fixtures/openldap/retcode.ldif +76 -0
  45. data/test/fixtures/openldap/slapd.conf.ldif +67 -0
  46. data/test/fixtures/seed.ldif +374 -0
  47. data/test/integration/test_add.rb +28 -0
  48. data/test/integration/test_ber.rb +30 -0
  49. data/test/integration/test_bind.rb +34 -0
  50. data/test/integration/test_delete.rb +31 -0
  51. data/test/integration/test_open.rb +88 -0
  52. data/test/integration/test_return_codes.rb +38 -0
  53. data/test/integration/test_search.rb +77 -0
  54. data/test/support/vm/openldap/.gitignore +1 -0
  55. data/test/support/vm/openldap/README.md +32 -0
  56. data/test/support/vm/openldap/Vagrantfile +33 -0
  57. data/test/test_dn.rb +44 -0
  58. data/test/test_entry.rb +65 -0
  59. data/test/test_filter.rb +223 -0
  60. data/test/test_filter_parser.rb +20 -0
  61. data/test/test_helper.rb +66 -0
  62. data/test/test_ldap.rb +60 -0
  63. data/test/test_ldap_connection.rb +404 -0
  64. data/test/test_ldif.rb +104 -0
  65. data/test/test_password.rb +10 -0
  66. data/test/test_rename.rb +77 -0
  67. data/test/test_search.rb +39 -0
  68. data/test/test_snmp.rb +119 -0
  69. data/test/test_ssl_ber.rb +40 -0
  70. data/test/testdata.ldif +101 -0
  71. data/testserver/ldapserver.rb +210 -0
  72. data/testserver/testdata.ldif +101 -0
  73. metadata +204 -0
@@ -0,0 +1,37 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'net/ldap/version'
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{rubinius-net-ldap}
8
+ s.version = Net::LDAP::VERSION
9
+ s.license = "MIT"
10
+ s.authors = ["Francis Cianfrocca", "Emiel van de Laar", "Rory O'Connell", "Kaspar Schiess", "Austin Ziegler", "Michael Schaarschmidt"]
11
+ s.description = %q{Net::LDAP for Ruby (also called net-ldap) implements client access for the
12
+ Lightweight Directory Access Protocol (LDAP), an IETF standard protocol for
13
+ accessing distributed directory services. Net::LDAP is written completely in
14
+ Ruby with no external dependencies. It supports most LDAP client features and a
15
+ subset of server features as well.
16
+
17
+ Net::LDAP has been tested against modern popular LDAP servers including
18
+ OpenLDAP and Active Directory. The current release is mostly compliant with
19
+ earlier versions of the IETF LDAP RFCs (2251-2256, 2829-2830, 3377, and 3771).
20
+ Our roadmap for Net::LDAP 1.0 is to gain full <em>client</em> compliance with
21
+ the most recent LDAP RFCs (4510-4519, plutions of 4520-4532).
22
+
23
+ NOTE: This is a fork of https://github.com/ruby-ldap/ruby-net-ldap to support
24
+ Ruby 1.8.7.
25
+ }
26
+ s.email = ["blackhedd@rubyforge.org", "gemiel@gmail.com", "rory.ocon@gmail.com", "kaspar.schiess@absurd.li", "austin@rubyforge.org"]
27
+ s.extra_rdoc_files = ["Contributors.rdoc", "Hacking.rdoc", "History.rdoc", "License.rdoc", "README.rdoc"]
28
+ s.files = `git ls-files`.split $/
29
+ s.test_files = s.files.grep(%r{^test})
30
+ s.homepage = %q{https://github.com/rubinius/ruby-net-ldap}
31
+ s.rdoc_options = ["--main", "README.rdoc"]
32
+ s.require_paths = ["lib"]
33
+ s.summary = %q{Net::LDAP for Ruby (also called net-ldap) implements client access for the Lightweight Directory Access Protocol (LDAP), an IETF standard protocol for accessing distributed directory services}
34
+
35
+ s.add_development_dependency("flexmock", "~> 1.3")
36
+ s.add_development_dependency("rake", "~> 10.0")
37
+ end
@@ -0,0 +1,112 @@
1
+ #!/usr/bin/env sh
2
+ set -e
3
+ set -x
4
+
5
+ BASE_PATH="$( cd `dirname $0`/../test/fixtures/openldap && pwd )"
6
+ SEED_PATH="$( cd `dirname $0`/../test/fixtures && pwd )"
7
+
8
+ dpkg -s slapd time ldap-utils gnutls-bin ssl-cert > /dev/null ||\
9
+ DEBIAN_FRONTEND=noninteractive apt-get update -y --force-yes && \
10
+ DEBIAN_FRONTEND=noninteractive apt-get install -y --force-yes slapd time ldap-utils gnutls-bin ssl-cert
11
+
12
+ /etc/init.d/slapd stop
13
+
14
+ TMPDIR=$(mktemp -d)
15
+ cd $TMPDIR
16
+
17
+ # Delete data and reconfigure.
18
+ cp -v /var/lib/ldap/DB_CONFIG ./DB_CONFIG
19
+ rm -rf /etc/ldap/slapd.d/*
20
+ rm -rf /var/lib/ldap/*
21
+ cp -v ./DB_CONFIG /var/lib/ldap/DB_CONFIG
22
+ slapadd -F /etc/ldap/slapd.d -b "cn=config" -l $BASE_PATH/slapd.conf.ldif
23
+ # Load memberof and ref-int overlays and configure them.
24
+ slapadd -F /etc/ldap/slapd.d -b "cn=config" -l $BASE_PATH/memberof.ldif
25
+ # Load retcode overlay and configure
26
+ slapadd -F /etc/ldap/slapd.d -b "cn=config" -l $BASE_PATH/retcode.ldif
27
+
28
+ # Add base domain.
29
+ slapadd -F /etc/ldap/slapd.d <<EOM
30
+ dn: dc=rubyldap,dc=com
31
+ objectClass: top
32
+ objectClass: domain
33
+ dc: rubyldap
34
+ EOM
35
+
36
+ chown -R openldap.openldap /etc/ldap/slapd.d
37
+ chown -R openldap.openldap /var/lib/ldap
38
+
39
+ /etc/init.d/slapd start
40
+
41
+ # Import seed data.
42
+ # NOTE: use ldapadd in order for memberOf and refint to apply, instead of:
43
+ # cat $SEED_PATH/seed.ldif | slapadd -F /etc/ldap/slapd.d
44
+ /usr/bin/time ldapadd -x -D "cn=admin,dc=rubyldap,dc=com" -w passworD1 \
45
+ -h localhost -p 389 \
46
+ -f $SEED_PATH/seed.ldif
47
+
48
+ rm -rf $TMPDIR
49
+
50
+ # SSL
51
+
52
+ sh -c "certtool --generate-privkey > /etc/ssl/private/cakey.pem"
53
+
54
+ sh -c "cat > /etc/ssl/ca.info <<EOF
55
+ cn = rubyldap
56
+ ca
57
+ cert_signing_key
58
+ EOF"
59
+
60
+ # Create the self-signed CA certificate:
61
+ certtool --generate-self-signed \
62
+ --load-privkey /etc/ssl/private/cakey.pem \
63
+ --template /etc/ssl/ca.info \
64
+ --outfile /etc/ssl/certs/cacert.pem
65
+
66
+ # Make a private key for the server:
67
+ certtool --generate-privkey \
68
+ --bits 1024 \
69
+ --outfile /etc/ssl/private/ldap01_slapd_key.pem
70
+
71
+ sh -c "cat > /etc/ssl/ldap01.info <<EOF
72
+ organization = Example Company
73
+ cn = ldap01.example.com
74
+ tls_www_server
75
+ encryption_key
76
+ signing_key
77
+ expiration_days = 3650
78
+ EOF"
79
+
80
+ # Create the server certificate
81
+ certtool --generate-certificate \
82
+ --load-privkey /etc/ssl/private/ldap01_slapd_key.pem \
83
+ --load-ca-certificate /etc/ssl/certs/cacert.pem \
84
+ --load-ca-privkey /etc/ssl/private/cakey.pem \
85
+ --template /etc/ssl/ldap01.info \
86
+ --outfile /etc/ssl/certs/ldap01_slapd_cert.pem
87
+
88
+ ldapmodify -Y EXTERNAL -H ldapi:/// <<EOF | true
89
+ dn: cn=config
90
+ add: olcTLSCACertificateFile
91
+ olcTLSCACertificateFile: /etc/ssl/certs/cacert.pem
92
+ -
93
+ add: olcTLSCertificateFile
94
+ olcTLSCertificateFile: /etc/ssl/certs/ldap01_slapd_cert.pem
95
+ -
96
+ add: olcTLSCertificateKeyFile
97
+ olcTLSCertificateKeyFile: /etc/ssl/private/ldap01_slapd_key.pem
98
+ EOF
99
+
100
+ # LDAP over TLS/SSL (ldaps://) is deprecated in favour of StartTLS. The latter
101
+ # refers to an existing LDAP session (listening on TCP port 389) becoming
102
+ # protected by TLS/SSL whereas LDAPS, like HTTPS, is a distinct
103
+ # encrypted-from-the-start protocol that operates over TCP port 636. But we
104
+ # enable it for testing here.
105
+ sed -i -e 's|^SLAPD_SERVICES="\(.*\)"|SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"|' /etc/default/slapd
106
+
107
+ adduser openldap ssl-cert
108
+ chgrp ssl-cert /etc/ssl/private/ldap01_slapd_key.pem
109
+ chmod g+r /etc/ssl/private/ldap01_slapd_key.pem
110
+ chmod o-r /etc/ssl/private/ldap01_slapd_key.pem
111
+
112
+ service slapd restart
data/script/package ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env bash
2
+ # Usage: script/package
3
+ # Updates the gemspec and builds a new gem in the pkg directory.
4
+
5
+ mkdir -p pkg
6
+ gem build *.gemspec
7
+ mv *.gem pkg
data/script/release ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env bash
2
+ # Usage: script/release
3
+ # Build the package, tag a commit, push it to origin, and then release the
4
+ # package publicly.
5
+
6
+ set -e
7
+
8
+ version="$(script/package | grep Version: | awk '{print $2}')"
9
+ [ -n "$version" ] || exit 1
10
+
11
+ echo $version
12
+ git commit --allow-empty -a -m "Release $version"
13
+ git tag "v$version"
14
+ git push origin
15
+ git push origin "v$version"
16
+ gem push pkg/*-${version}.gem
@@ -0,0 +1,22 @@
1
+ require File.expand_path('../../../test_helper', __FILE__)
2
+
3
+ class TestBERArrayExtension < Test::Unit::TestCase
4
+ def test_control_code_array
5
+ control_codes = []
6
+ control_codes << ['1.2.3'.to_ber, true.to_ber].to_ber_sequence
7
+ control_codes << ['1.7.9'.to_ber, false.to_ber].to_ber_sequence
8
+ control_codes = control_codes.to_ber_sequence
9
+ res = [['1.2.3', true],['1.7.9',false]].to_ber_control
10
+ assert_equal control_codes, res
11
+ end
12
+
13
+ def test_wrap_array_if_not_nested
14
+ result1 = ['1.2.3', true].to_ber_control
15
+ result2 = [['1.2.3', true]].to_ber_control
16
+ assert_equal result2, result1
17
+ end
18
+
19
+ def test_empty_string_if_empty_array
20
+ assert_equal "", [].to_ber_control
21
+ end
22
+ end
@@ -0,0 +1,25 @@
1
+ require File.expand_path('../../../test_helper', __FILE__)
2
+
3
+ class TestBERStringExtension < Test::Unit::TestCase
4
+ def setup
5
+ @bind_request = "0$\002\001\001`\037\002\001\003\004\rAdministrator\200\vad_is_bogus UNCONSUMED".b
6
+ @result = @bind_request.read_ber!(Net::LDAP::AsnSyntax)
7
+ end
8
+
9
+ def test_parse_ber
10
+ assert_equal [1, [3, "Administrator", "ad_is_bogus"]], @result
11
+ end
12
+
13
+ def test_unconsumed_message
14
+ assert_equal " UNCONSUMED", @bind_request
15
+ end
16
+
17
+ def test_exception_does_not_modify_string
18
+ original = "0$\002\001\001`\037\002\001\003\004\rAdministrator\200\vad_is_bogus".b
19
+ duplicate = original.dup
20
+ flexmock(StringIO).new_instances.should_receive(:read_ber).and_raise(Net::BER::BerError)
21
+ duplicate.read_ber!(Net::LDAP::AsnSyntax) rescue Net::BER::BerError
22
+
23
+ assert_equal original, duplicate
24
+ end
25
+ end
@@ -0,0 +1,99 @@
1
+ require File.expand_path('../../test_helper', __FILE__)
2
+
3
+ class TestBEREncoding < Test::Unit::TestCase
4
+ def test_empty_array
5
+ assert_equal [], [].to_ber.read_ber
6
+ end
7
+
8
+ def test_array
9
+ ary = [1,2,3]
10
+ encoded_ary = ary.map { |el| el.to_ber }.to_ber
11
+
12
+ assert_equal ary, encoded_ary.read_ber
13
+ end
14
+
15
+ # http://tools.ietf.org/html/rfc4511#section-5.1
16
+ def test_true
17
+ assert_equal "\x01\x01\xFF".b, true.to_ber
18
+ end
19
+
20
+ def test_false
21
+ assert_equal "\x01\x01\x00", false.to_ber
22
+ end
23
+
24
+ # Sample based
25
+ {
26
+ 0 => "\x02\x01\x00",
27
+ 1 => "\x02\x01\x01",
28
+ 127 => "\x02\x01\x7F",
29
+ 128 => "\x02\x02\x00\x80",
30
+ 255 => "\x02\x02\x00\xFF",
31
+ 256 => "\x02\x02\x01\x00",
32
+ 65535 => "\x02\x03\x00\xFF\xFF",
33
+ 65536 => "\x02\x03\x01\x00\x00",
34
+ 8388607 => "\x02\x03\x7F\xFF\xFF",
35
+ 8388608 => "\x02\x04\x00\x80\x00\x00",
36
+ 16_777_215 => "\x02\x04\x00\xFF\xFF\xFF",
37
+ 0x01000000 => "\x02\x04\x01\x00\x00\x00",
38
+ 0x3FFFFFFF => "\x02\x04\x3F\xFF\xFF\xFF",
39
+ 0x4FFFFFFF => "\x02\x04\x4F\xFF\xFF\xFF",
40
+
41
+ # Some odd samples...
42
+ 5 => "\x02\x01\x05",
43
+ 500 => "\x02\x02\x01\xf4",
44
+ 50_000 => "\x02\x03\x00\xC3\x50",
45
+ 5_000_000_000 => "\x02\x05\x01\x2a\x05\xF2\x00",
46
+
47
+ # negatives
48
+ -1 => "\x02\x01\xFF",
49
+ -127 => "\x02\x01\x81",
50
+ -128 => "\x02\x01\x80",
51
+ -255 => "\x02\x02\xFF\x01",
52
+ -256 => "\x02\x02\xFF\x00",
53
+ -65535 => "\x02\x03\xFF\x00\x01",
54
+ -65536 => "\x02\x03\xFF\x00\x00",
55
+ -65537 => "\x02\x03\xFE\xFF\xFF",
56
+ -8388607 => "\x02\x03\x80\x00\x01",
57
+ -8388608 => "\x02\x03\x80\x00\x00",
58
+ -16_777_215 => "\x02\x04\xFF\x00\x00\x01",
59
+ }.each do |number, expected_encoding|
60
+ define_method "test_encode_#{number}" do
61
+ assert_equal expected_encoding.b, number.to_ber
62
+ end
63
+
64
+ define_method "test_decode_encoded_#{number}" do
65
+ assert_equal number, expected_encoding.b.read_ber
66
+ end
67
+ end
68
+
69
+ # Round-trip encoding: This is mostly to be sure to cover Bignums well.
70
+ def test_powers_of_two
71
+ 100.times do |p|
72
+ n = 2 << p
73
+
74
+ assert_equal n, n.to_ber.read_ber
75
+ end
76
+ end
77
+
78
+ def test_powers_of_ten
79
+ 100.times do |p|
80
+ n = 5 * 10**p
81
+
82
+ assert_equal n, n.to_ber.read_ber
83
+ end
84
+ end
85
+ end
86
+
87
+ class TestBERDecoding < Test::Unit::TestCase
88
+ def test_decode_number
89
+ assert_equal 6, "\002\001\006".read_ber(Net::LDAP::AsnSyntax)
90
+ end
91
+
92
+ def test_decode_string
93
+ assert_equal "testing", "\004\007testing".read_ber(Net::LDAP::AsnSyntax)
94
+ end
95
+
96
+ def test_decode_ldap_bind_request
97
+ assert_equal [1, [3, "Administrator", "ad_is_bogus"]], "0$\002\001\001`\037\002\001\003\004\rAdministrator\200\vad_is_bogus".read_ber(Net::LDAP::AsnSyntax)
98
+ end
99
+ end
@@ -0,0 +1,20 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDRzCCAf+gAwIBAgIEVHpbmjANBgkqhkiG9w0BAQsFADATMREwDwYDVQQDEwhy
3
+ dWJ5bGRhcDAeFw0xNDExMjkyMzQ5NDZaFw0xNTExMjkyMzQ5NDZaMBMxETAPBgNV
4
+ BAMTCHJ1YnlsZGFwMIIBUjANBgkqhkiG9w0BAQEFAAOCAT8AMIIBOgKCATEA4pKe
5
+ cDCNuL53fkpO/WSAS+gmMTsOs+oOK71kZlk2QT/MBz8TxC6m358qCADjnXcMVVxa
6
+ ySQbQlVKZMkIvLNciZbiLDgC5II0NbHACNa8rqenoKRjS4J9W3OhA8EmnXn/Me+8
7
+ uMCI9tfnKNRZYdkQZlra4I+Idn+xYfl/5q5b/7ZjPS2zY/585hFEYE+5vfOZVBSU
8
+ 3HMNSeuJvTehLv7dD7aQfXNM4cRgHXequkJQ/HLLFAO4AgJ+LJrFWpj7GWz3crgr
9
+ 9G5px4T78wJH3NQiOsG6UBXPw8c4T+Z6GAWX2l1zs1gZsaiCVbAraqK3404lL7yp
10
+ +ThbsW3ifzgNPhmjScXBLdbEDrrAKosW7kkTOGzxiMCBmNlj2SKhcztoduAtfF1f
11
+ Fs2Jk8MRTHwO8ThD7wIDAQABo0MwQTAPBgNVHRMBAf8EBTADAQH/MA8GA1UdDwEB
12
+ /wQFAwMHBAAwHQYDVR0OBBYEFJDm67ekyFu4/Z7VcO6Vk/5pinGcMA0GCSqGSIb3
13
+ DQEBCwUAA4IBMQDHeEPzfYRtjynpUKyrtxx/6ZVOfCLuz4eHkBZggz/pJacDCv/a
14
+ I//W03XCk8RWq/fWVVUzvxXgPwnYcw992PLM7XW81zp6ruRUDWooYnjHZZz3bRhe
15
+ kC4QvM2mZhcsMVmhmWWKZn81qXgVdUY1XNRhk87cuXjF/UTpEieFvWAsCUkFZkqB
16
+ AmySCuI/FuPaauT1YAltkIlYAEIGNJGZDMf2BTVUQpXhTXeS9/AZWLNDBwiq+fwo
17
+ YYnsr9MnBXCEmg1gVSR/Ay2AZmbYfiYtb5kU8uq2lSWAUb4LX6HZl82wo3OilrJ2
18
+ WXl6Qf+Fcy4qqkRt4AKHjtzizpEDCOVYuuG0Zoy+QnxNXRsEzpb8ymnJFrcgYfk/
19
+ 6Lv2gWAFl5FqCZp7gBWg55eL2coT4C+mbNTF
20
+ -----END CERTIFICATE-----
@@ -0,0 +1,33 @@
1
+ dn: cn=module,cn=config
2
+ cn: module
3
+ objectClass: olcModuleList
4
+ objectClass: top
5
+ olcModulePath: /usr/lib/ldap
6
+ olcModuleLoad: memberof.la
7
+
8
+ dn: olcOverlay={0}memberof,olcDatabase={1}hdb,cn=config
9
+ objectClass: olcConfig
10
+ objectClass: olcMemberOf
11
+ objectClass: olcOverlayConfig
12
+ objectClass: top
13
+ olcOverlay: memberof
14
+ olcMemberOfDangling: ignore
15
+ olcMemberOfRefInt: TRUE
16
+ olcMemberOfGroupOC: groupOfNames
17
+ olcMemberOfMemberAD: member
18
+ olcMemberOfMemberOfAD: memberOf
19
+
20
+ dn: cn=module,cn=config
21
+ cn: module
22
+ objectclass: olcModuleList
23
+ objectclass: top
24
+ olcmoduleload: refint.la
25
+ olcmodulepath: /usr/lib/ldap
26
+
27
+ dn: olcOverlay={1}refint,olcDatabase={1}hdb,cn=config
28
+ objectClass: olcConfig
29
+ objectClass: olcOverlayConfig
30
+ objectClass: olcRefintConfig
31
+ objectClass: top
32
+ olcOverlay: {1}refint
33
+ olcRefintAttribute: memberof member manager owner
@@ -0,0 +1,76 @@
1
+ dn: cn=module,cn=config
2
+ cn: module
3
+ objectClass: olcModuleList
4
+ objectClass: top
5
+ olcModulePath: /usr/lib/ldap
6
+ olcModuleLoad: retcode.la
7
+
8
+ # source: http://www.opensource.apple.com/source/OpenLDAP/OpenLDAP-186/OpenLDAP/tests/data/retcode.conf?txt
9
+
10
+ dn: olcOverlay={2}retcode,olcDatabase={1}hdb,cn=config
11
+ objectClass: olcConfig
12
+ objectClass: olcRetcodeConfig
13
+ objectClass: olcOverlayConfig
14
+ objectClass: top
15
+ olcOverlay: retcode
16
+ olcRetcodeParent: ou=Retcodes,dc=rubyldap,dc=com
17
+ olcRetcodeInDir: TRUE
18
+ olcRetcodeSleep: 0
19
+ olcRetcodeItem: "cn=success" 0x00
20
+ olcRetcodeItem: "cn=success w/ delay" 0x00 sleeptime=2
21
+ olcRetcodeItem: "cn=operationsError" 0x01
22
+ olcRetcodeItem: "cn=protocolError" 0x02
23
+ olcRetcodeItem: "cn=timeLimitExceeded" 0x03 op=search
24
+ olcRetcodeItem: "cn=sizeLimitExceeded" 0x04 op=search
25
+ olcRetcodeItem: "cn=compareFalse" 0x05 op=compare
26
+ olcRetcodeItem: "cn=compareTrue" 0x06 op=compare
27
+ olcRetcodeItem: "cn=authMethodNotSupported" 0x07
28
+ olcRetcodeItem: "cn=strongAuthNotSupported" 0x07 text="same as authMethodNotSupported"
29
+ olcRetcodeItem: "cn=strongAuthRequired" 0x08
30
+ olcRetcodeItem: "cn=strongerAuthRequired" 0x08 text="same as strongAuthRequired"
31
+ olcRetcodeItem: "cn=referral" 0x0a text="LDAPv3" ref="ldap://:9019"
32
+ olcRetcodeItem: "cn=adminLimitExceeded" 0x0b text="LDAPv3"
33
+ olcRetcodeItem: "cn=unavailableCriticalExtension" 0x0c text="LDAPv3"
34
+ olcRetcodeItem: "cn=confidentialityRequired" 0x0d text="LDAPv3"
35
+ olcRetcodeItem: "cn=saslBindInProgress" 0x0e text="LDAPv3"
36
+ olcRetcodeItem: "cn=noSuchAttribute" 0x10
37
+ olcRetcodeItem: "cn=undefinedAttributeType" 0x11
38
+ olcRetcodeItem: "cn=inappropriateMatching" 0x12
39
+ olcRetcodeItem: "cn=constraintViolation" 0x13
40
+ olcRetcodeItem: "cn=attributeOrValueExists" 0x14
41
+ olcRetcodeItem: "cn=invalidAttributeSyntax" 0x15
42
+ olcRetcodeItem: "cn=noSuchObject" 0x20
43
+ olcRetcodeItem: "cn=aliasProblem" 0x21
44
+ olcRetcodeItem: "cn=invalidDNSyntax" 0x22
45
+ olcRetcodeItem: "cn=aliasDereferencingProblem" 0x24
46
+ olcRetcodeItem: "cn=proxyAuthzFailure" 0x2F text="LDAPv3 proxy authorization"
47
+ olcRetcodeItem: "cn=inappropriateAuthentication" 0x30
48
+ olcRetcodeItem: "cn=invalidCredentials" 0x31
49
+ olcRetcodeItem: "cn=insufficientAccessRights" 0x32
50
+ olcRetcodeItem: "cn=busy" 0x33
51
+ olcRetcodeItem: "cn=unavailable" 0x34
52
+ olcRetcodeItem: "cn=unwillingToPerform" 0x35
53
+ olcRetcodeItem: "cn=loopDetect" 0x36
54
+ olcRetcodeItem: "cn=namingViolation" 0x40
55
+ olcRetcodeItem: "cn=objectClassViolation" 0x41
56
+ olcRetcodeItem: "cn=notAllowedOnNonleaf" 0x42
57
+ olcRetcodeItem: "cn=notAllowedOnRDN" 0x43
58
+ olcRetcodeItem: "cn=entryAlreadyExists" 0x44
59
+ olcRetcodeItem: "cn=objectClassModsProhibited" 0x45
60
+ olcRetcodeItem: "cn=resultsTooLarge" 0x46 text="CLDAP"
61
+ olcRetcodeItem: "cn=affectsMultipleDSAs" 0x47 text="LDAPv3"
62
+ olcRetcodeItem: "cn=other" 0x50
63
+ olcRetcodeItem: "cn=cupResourcesExhausted" 0x71
64
+ olcRetcodeItem: "cn=cupSecurityViolation" 0x72
65
+ olcRetcodeItem: "cn=cupInvalidData" 0x73
66
+ olcRetcodeItem: "cn=cupUnsupportedScheme" 0x74
67
+ olcRetcodeItem: "cn=cupReloadRequired" 0x75
68
+ olcRetcodeItem: "cn=cancelled" 0x76
69
+ olcRetcodeItem: "cn=noSuchOperation" 0x77
70
+ olcRetcodeItem: "cn=tooLate" 0x78
71
+ olcRetcodeItem: "cn=cannotCancel" 0x79
72
+ olcRetcodeItem: "cn=syncRefreshRequired" 0x4100
73
+ olcRetcodeItem: "cn=noOperation" 0x410e
74
+ olcRetcodeItem: "cn=assertionFailed" 0x410f
75
+ olcRetcodeItem: "cn=noReferralsFound" 0x4110
76
+ olcRetcodeItem: "cn=cannotChain" 0x4111