net-ldap 0.15.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/History.rdoc +76 -0
- data/README.rdoc +18 -8
- data/lib/net/ber/ber_parser.rb +3 -3
- data/lib/net/ber/core_ext.rb +6 -6
- data/lib/net/ber.rb +5 -6
- data/lib/net/ldap/auth_adapter/gss_spnego.rb +2 -2
- data/lib/net/ldap/auth_adapter/sasl.rb +4 -2
- data/lib/net/ldap/auth_adapter/simple.rb +1 -1
- data/lib/net/ldap/connection.rb +57 -46
- data/lib/net/ldap/dataset.rb +1 -3
- data/lib/net/ldap/dn.rb +21 -30
- data/lib/net/ldap/entry.rb +15 -7
- data/lib/net/ldap/error.rb +2 -26
- data/lib/net/ldap/filter.rb +10 -3
- data/lib/net/ldap/instrumentation.rb +2 -2
- data/lib/net/ldap/password.rb +7 -5
- data/lib/net/ldap/pdu.rb +1 -1
- data/lib/net/ldap/version.rb +1 -1
- data/lib/net/ldap.rb +93 -58
- data/lib/net/snmp.rb +1 -1
- data/lib/net-ldap.rb +1 -1
- metadata +16 -101
- data/.gitignore +0 -9
- data/.rubocop.yml +0 -17
- data/.rubocop_todo.yml +0 -599
- data/.travis.yml +0 -33
- data/CONTRIBUTING.md +0 -54
- data/Gemfile +0 -2
- data/Rakefile +0 -23
- data/net-ldap.gemspec +0 -37
- data/script/changelog +0 -47
- data/script/install-openldap +0 -115
- data/script/package +0 -7
- data/script/release +0 -16
- data/test/ber/core_ext/test_array.rb +0 -22
- data/test/ber/core_ext/test_string.rb +0 -25
- data/test/ber/test_ber.rb +0 -153
- data/test/fixtures/cacert.pem +0 -20
- data/test/fixtures/openldap/memberof.ldif +0 -33
- data/test/fixtures/openldap/retcode.ldif +0 -76
- data/test/fixtures/openldap/slapd.conf.ldif +0 -67
- data/test/fixtures/seed.ldif +0 -374
- data/test/integration/test_add.rb +0 -28
- data/test/integration/test_ber.rb +0 -30
- data/test/integration/test_bind.rb +0 -42
- data/test/integration/test_delete.rb +0 -31
- data/test/integration/test_open.rb +0 -88
- data/test/integration/test_password_modify.rb +0 -80
- data/test/integration/test_return_codes.rb +0 -38
- data/test/integration/test_search.rb +0 -77
- data/test/support/vm/openldap/.gitignore +0 -1
- data/test/support/vm/openldap/README.md +0 -32
- data/test/support/vm/openldap/Vagrantfile +0 -33
- data/test/test_auth_adapter.rb +0 -15
- data/test/test_dn.rb +0 -44
- data/test/test_entry.rb +0 -65
- data/test/test_filter.rb +0 -223
- data/test/test_filter_parser.rb +0 -24
- data/test/test_helper.rb +0 -66
- data/test/test_ldap.rb +0 -114
- data/test/test_ldap_connection.rb +0 -493
- data/test/test_ldif.rb +0 -104
- data/test/test_password.rb +0 -10
- data/test/test_rename.rb +0 -77
- data/test/test_search.rb +0 -39
- data/test/test_snmp.rb +0 -119
- data/test/test_ssl_ber.rb +0 -40
- data/test/testdata.ldif +0 -101
- data/testserver/ldapserver.rb +0 -209
- data/testserver/testdata.ldif +0 -101
data/net-ldap.gemspec
DELETED
@@ -1,37 +0,0 @@
|
|
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{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
|
-
s.email = ["blackhedd@rubyforge.org", "gemiel@gmail.com", "rory.ocon@gmail.com", "kaspar.schiess@absurd.li", "austin@rubyforge.org"]
|
23
|
-
s.extra_rdoc_files = ["Contributors.rdoc", "Hacking.rdoc", "History.rdoc", "License.rdoc", "README.rdoc"]
|
24
|
-
s.files = `git ls-files`.split $/
|
25
|
-
s.test_files = s.files.grep(%r{^test})
|
26
|
-
s.homepage = %q{http://github.com/ruby-ldap/ruby-net-ldap}
|
27
|
-
s.rdoc_options = ["--main", "README.rdoc"]
|
28
|
-
s.require_paths = ["lib"]
|
29
|
-
s.required_ruby_version = ">= 2.0.0"
|
30
|
-
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}
|
31
|
-
|
32
|
-
s.add_development_dependency("flexmock", "~> 1.3")
|
33
|
-
s.add_development_dependency("rake", "~> 10.0")
|
34
|
-
s.add_development_dependency("rubocop", "~> 0.28.0")
|
35
|
-
s.add_development_dependency("test-unit")
|
36
|
-
s.add_development_dependency("byebug")
|
37
|
-
end
|
data/script/changelog
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
#!/bin/bash
|
2
|
-
# Usage: script/changelog [-r <repo>] [-b <base>] [-h <head>]
|
3
|
-
#
|
4
|
-
# repo: BASE string of GitHub REPOsitory url. e.g. "user_or_org/REPOsitory". Defaults to git remote url.
|
5
|
-
# base: git ref to compare from. e.g. "v1.3.1". Defaults to latest git tag.
|
6
|
-
# head: git ref to compare to. Defaults to "HEAD".
|
7
|
-
#
|
8
|
-
# Generate a changelog preview from pull requests merged between `base` and
|
9
|
-
# `head`.
|
10
|
-
#
|
11
|
-
# https://github.com/jch/release-scripts/blob/master/changelog
|
12
|
-
set -e
|
13
|
-
|
14
|
-
[ $# -eq 0 ] && set -- --help
|
15
|
-
while [[ $# > 1 ]]
|
16
|
-
do
|
17
|
-
key="$1"
|
18
|
-
case $key in
|
19
|
-
-r|--repo)
|
20
|
-
repo="$2"
|
21
|
-
shift
|
22
|
-
;;
|
23
|
-
-b|--base)
|
24
|
-
base="$2"
|
25
|
-
shift
|
26
|
-
;;
|
27
|
-
-h|--head)
|
28
|
-
head="$2"
|
29
|
-
shift
|
30
|
-
;;
|
31
|
-
*)
|
32
|
-
;;
|
33
|
-
esac
|
34
|
-
shift
|
35
|
-
done
|
36
|
-
|
37
|
-
repo="${repo:-$(git remote -v | grep push | awk '{print $2}' | cut -d'/' -f4- | sed 's/\.git//')}"
|
38
|
-
base="${base:-$(git tag -l | sort -t. -k 1,1n -k 2,2n -k 3,3n | tail -n 1)}"
|
39
|
-
head="${head:-HEAD}"
|
40
|
-
api_url="https://api.github.com"
|
41
|
-
|
42
|
-
# get merged PR's. Better way is to query the API for these, but this is easier
|
43
|
-
for pr in $(git log --oneline $base..$head | grep "Merge pull request" | awk '{gsub("#",""); print $5}')
|
44
|
-
do
|
45
|
-
# frustrated with trying to pull out the right values, fell back to ruby
|
46
|
-
curl -s "$api_url/repos/$repo/pulls/$pr" | ruby -rjson -e 'pr=JSON.parse(STDIN.read); puts "* #{pr[%q(title)]} {##{pr[%q(number)]}}[#{pr[%q(html_url)]}]"'
|
47
|
-
done
|
data/script/install-openldap
DELETED
@@ -1,115 +0,0 @@
|
|
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
|
-
# Drop packets on a secondary port used to specific timeout tests
|
113
|
-
iptables -A OUTPUT -p tcp -j DROP --dport 8389
|
114
|
-
|
115
|
-
service slapd restart
|
data/script/package
DELETED
data/script/release
DELETED
@@ -1,16 +0,0 @@
|
|
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
|
@@ -1,22 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
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
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
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
|
data/test/ber/test_ber.rb
DELETED
@@ -1,153 +0,0 @@
|
|
1
|
-
require_relative '../test_helper'
|
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(&: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
|
-
|
86
|
-
if "Ruby 1.9".respond_to?(:encoding)
|
87
|
-
def test_encode_utf8_strings
|
88
|
-
assert_equal "\x04\x02\xC3\xA5".b, "\u00e5".force_encoding("UTF-8").to_ber
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_utf8_encodable_strings
|
92
|
-
assert_equal "\x04\nteststring", "teststring".encode("US-ASCII").to_ber
|
93
|
-
end
|
94
|
-
|
95
|
-
def test_encode_binary_data
|
96
|
-
# This is used for searching for GUIDs in Active Directory
|
97
|
-
assert_equal "\x04\x10" + "j1\xB4\xA1*\xA2zA\xAC\xA9`?'\xDDQ\x16".b,
|
98
|
-
["6a31b4a12aa27a41aca9603f27dd5116"].pack("H*").to_ber_bin
|
99
|
-
end
|
100
|
-
|
101
|
-
def test_non_utf8_encodable_strings
|
102
|
-
assert_equal "\x04\x01\x81".b, "\x81".to_ber
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
class TestBERDecoding < Test::Unit::TestCase
|
108
|
-
def test_decode_number
|
109
|
-
assert_equal 6, "\002\001\006".read_ber(Net::LDAP::AsnSyntax)
|
110
|
-
end
|
111
|
-
|
112
|
-
def test_decode_string
|
113
|
-
assert_equal "testing", "\004\007testing".read_ber(Net::LDAP::AsnSyntax)
|
114
|
-
end
|
115
|
-
|
116
|
-
def test_decode_ldap_bind_request
|
117
|
-
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)
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
class TestBERIdentifiedString < Test::Unit::TestCase
|
122
|
-
def test_binary_data
|
123
|
-
data = ["6a31b4a12aa27a41aca9603f27dd5116"].pack("H*").force_encoding("ASCII-8BIT")
|
124
|
-
bis = Net::BER::BerIdentifiedString.new(data)
|
125
|
-
|
126
|
-
assert bis.valid_encoding?, "should be a valid encoding"
|
127
|
-
assert_equal "ASCII-8BIT", bis.encoding.name
|
128
|
-
end
|
129
|
-
|
130
|
-
def test_ascii_data_in_utf8
|
131
|
-
data = "some text".force_encoding("UTF-8")
|
132
|
-
bis = Net::BER::BerIdentifiedString.new(data)
|
133
|
-
|
134
|
-
assert bis.valid_encoding?, "should be a valid encoding"
|
135
|
-
assert_equal "UTF-8", bis.encoding.name
|
136
|
-
end
|
137
|
-
|
138
|
-
def test_umlaut_data_in_utf8
|
139
|
-
data = "Müller".force_encoding("UTF-8")
|
140
|
-
bis = Net::BER::BerIdentifiedString.new(data)
|
141
|
-
|
142
|
-
assert bis.valid_encoding?, "should be a valid encoding"
|
143
|
-
assert_equal "UTF-8", bis.encoding.name
|
144
|
-
end
|
145
|
-
|
146
|
-
def test_utf8_data_in_utf8
|
147
|
-
data = ["e4b8ad"].pack("H*").force_encoding("UTF-8")
|
148
|
-
bis = Net::BER::BerIdentifiedString.new(data)
|
149
|
-
|
150
|
-
assert bis.valid_encoding?, "should be a valid encoding"
|
151
|
-
assert_equal "UTF-8", bis.encoding.name
|
152
|
-
end
|
153
|
-
end
|
data/test/fixtures/cacert.pem
DELETED
@@ -1,20 +0,0 @@
|
|
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-----
|
@@ -1,33 +0,0 @@
|
|
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
|
@@ -1,76 +0,0 @@
|
|
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
|
@@ -1,67 +0,0 @@
|
|
1
|
-
dn: cn=config
|
2
|
-
objectClass: olcGlobal
|
3
|
-
cn: config
|
4
|
-
olcPidFile: /var/run/slapd/slapd.pid
|
5
|
-
olcArgsFile: /var/run/slapd/slapd.args
|
6
|
-
olcLogLevel: -1
|
7
|
-
olcToolThreads: 1
|
8
|
-
|
9
|
-
dn: olcDatabase={-1}frontend,cn=config
|
10
|
-
objectClass: olcDatabaseConfig
|
11
|
-
objectClass: olcFrontendConfig
|
12
|
-
olcDatabase: {-1}frontend
|
13
|
-
olcSizeLimit: 500
|
14
|
-
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break
|
15
|
-
olcAccess: {1}to dn.exact="" by * read
|
16
|
-
olcAccess: {2}to dn.base="cn=Subschema" by * read
|
17
|
-
|
18
|
-
dn: olcDatabase=config,cn=config
|
19
|
-
objectClass: olcDatabaseConfig
|
20
|
-
olcDatabase: config
|
21
|
-
olcAccess: to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break
|
22
|
-
|
23
|
-
dn: cn=schema,cn=config
|
24
|
-
objectClass: olcSchemaConfig
|
25
|
-
cn: schema
|
26
|
-
|
27
|
-
include: file:///etc/ldap/schema/core.ldif
|
28
|
-
include: file:///etc/ldap/schema/cosine.ldif
|
29
|
-
include: file:///etc/ldap/schema/nis.ldif
|
30
|
-
include: file:///etc/ldap/schema/inetorgperson.ldif
|
31
|
-
|
32
|
-
dn: cn=module{0},cn=config
|
33
|
-
objectClass: olcModuleList
|
34
|
-
cn: module{0}
|
35
|
-
olcModulePath: /usr/lib/ldap
|
36
|
-
olcModuleLoad: back_hdb
|
37
|
-
|
38
|
-
dn: olcBackend=hdb,cn=config
|
39
|
-
objectClass: olcBackendConfig
|
40
|
-
olcBackend: hdb
|
41
|
-
|
42
|
-
dn: olcDatabase=hdb,cn=config
|
43
|
-
objectClass: olcDatabaseConfig
|
44
|
-
objectClass: olcHdbConfig
|
45
|
-
olcDatabase: hdb
|
46
|
-
olcDbCheckpoint: 512 30
|
47
|
-
olcDbConfig: set_cachesize 1 0 0
|
48
|
-
olcDbConfig: set_lk_max_objects 1500
|
49
|
-
olcDbConfig: set_lk_max_locks 1500
|
50
|
-
olcDbConfig: set_lk_max_lockers 1500
|
51
|
-
olcLastMod: TRUE
|
52
|
-
olcSuffix: dc=rubyldap,dc=com
|
53
|
-
olcDbDirectory: /var/lib/ldap
|
54
|
-
olcRootDN: cn=admin,dc=rubyldap,dc=com
|
55
|
-
# admin's password: "passworD1"
|
56
|
-
olcRootPW: {SHA}LFSkM9eegU6j3PeGG7UuHrT/KZM=
|
57
|
-
olcDbIndex: objectClass eq
|
58
|
-
olcAccess: to attrs=userPassword,shadowLastChange
|
59
|
-
by self write
|
60
|
-
by anonymous auth
|
61
|
-
by dn="cn=admin,dc=rubyldap,dc=com" write
|
62
|
-
by * none
|
63
|
-
olcAccess: to dn.base="" by * read
|
64
|
-
olcAccess: to *
|
65
|
-
by self write
|
66
|
-
by dn="cn=admin,dc=rubyldap,dc=com" write
|
67
|
-
by * read
|