ruby-activeldap 0.8.2 → 0.8.3
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.
- data/test/test_adapter.rb +17 -0
- data/test/test_associations.rb +19 -0
- data/test/test_attributes.rb +2 -1
- data/test/test_base.rb +28 -1
- data/test/test_base_per_instance.rb +2 -1
- data/test/test_callback.rb +2 -2
- data/test/test_connection.rb +2 -1
- data/test/test_connection_per_dn.rb +81 -0
- data/test/test_dn.rb +3 -2
- data/test/test_find.rb +35 -1
- data/test/test_object_class.rb +12 -1
- data/test/test_reflection.rb +16 -10
- data/test/test_schema.rb +141 -2
- data/test/test_user.rb +14 -4
- metadata +7 -104
- data/CHANGES +0 -397
- data/COPYING +0 -340
- data/LICENSE +0 -58
- data/Manifest.txt +0 -99
- data/README +0 -85
- data/Rakefile +0 -70
- data/TODO +0 -23
- data/benchmark/bench-al.rb +0 -152
- data/examples/config.yaml.example +0 -5
- data/examples/example.der +0 -0
- data/examples/example.jpg +0 -0
- data/examples/groupadd +0 -41
- data/examples/groupdel +0 -35
- data/examples/groupls +0 -49
- data/examples/groupmod +0 -42
- data/examples/lpasswd +0 -55
- data/examples/objects/group.rb +0 -13
- data/examples/objects/ou.rb +0 -4
- data/examples/objects/user.rb +0 -20
- data/examples/ouadd +0 -38
- data/examples/useradd +0 -45
- data/examples/useradd-binary +0 -50
- data/examples/userdel +0 -34
- data/examples/userls +0 -50
- data/examples/usermod +0 -42
- data/examples/usermod-binary-add +0 -47
- data/examples/usermod-binary-add-time +0 -51
- data/examples/usermod-binary-del +0 -48
- data/examples/usermod-lang-add +0 -43
- data/lib/active_ldap.rb +0 -964
- data/lib/active_ldap/adapter/base.rb +0 -461
- data/lib/active_ldap/adapter/ldap.rb +0 -232
- data/lib/active_ldap/adapter/ldap_ext.rb +0 -69
- data/lib/active_ldap/adapter/net_ldap.rb +0 -288
- data/lib/active_ldap/adapter/net_ldap_ext.rb +0 -29
- data/lib/active_ldap/association/belongs_to.rb +0 -40
- data/lib/active_ldap/association/belongs_to_many.rb +0 -39
- data/lib/active_ldap/association/collection.rb +0 -80
- data/lib/active_ldap/association/has_many.rb +0 -40
- data/lib/active_ldap/association/has_many_wrap.rb +0 -55
- data/lib/active_ldap/association/proxy.rb +0 -89
- data/lib/active_ldap/associations.rb +0 -162
- data/lib/active_ldap/attributes.rb +0 -203
- data/lib/active_ldap/base.rb +0 -1510
- data/lib/active_ldap/callbacks.rb +0 -19
- data/lib/active_ldap/command.rb +0 -46
- data/lib/active_ldap/configuration.rb +0 -106
- data/lib/active_ldap/connection.rb +0 -142
- data/lib/active_ldap/distinguished_name.rb +0 -246
- data/lib/active_ldap/ldap_error.rb +0 -74
- data/lib/active_ldap/object_class.rb +0 -74
- data/lib/active_ldap/schema.rb +0 -299
- data/lib/active_ldap/timeout.rb +0 -75
- data/lib/active_ldap/timeout_stub.rb +0 -17
- data/lib/active_ldap/user_password.rb +0 -92
- data/lib/active_ldap/validations.rb +0 -76
- data/rails/plugin/active_ldap/README +0 -54
- data/rails/plugin/active_ldap/generators/scaffold_al/scaffold_al_generator.rb +0 -7
- data/rails/plugin/active_ldap/generators/scaffold_al/templates/ldap.yml +0 -21
- data/rails/plugin/active_ldap/init.rb +0 -12
- data/test/TODO +0 -2
- data/test/al-test-utils.rb +0 -381
- data/test/command.rb +0 -62
- data/test/config.yaml.sample +0 -6
- data/test/run-test.rb +0 -29
- data/test/test-unit-ext.rb +0 -2
- data/test/test-unit-ext/always-show-result.rb +0 -28
- data/test/test-unit-ext/priority.rb +0 -163
data/README
DELETED
@@ -1,85 +0,0 @@
|
|
1
|
-
Ruby/ActiveLdap -- ruby library for object-oriented LDAP interction
|
2
|
-
Copyright (C) 2004-2006 Will Drewry <will@alum.bu.edu>, Kouhei Sutou <kou@cozmixng.org>
|
3
|
-
Contributors:
|
4
|
-
* Dick Davies <rasputnik@hellooperator.net>
|
5
|
-
* Nathan Kinder <quicksilver02@mac.com>
|
6
|
-
* Patrick Cole <pac@independent.com.au>
|
7
|
-
* Google Inc.
|
8
|
-
|
9
|
-
DESCRIPTION
|
10
|
-
'Ruby/ActiveLdap' is a ruby extension library which provides a clean objected
|
11
|
-
oriented interface to the Ruby/LDAP[0] library. It was inspired by
|
12
|
-
ActivRecord[2]. This is not nearly as clean or as flexible as ActiveRecord, but
|
13
|
-
it is still trivial to define new objects and manipulate them with minimal
|
14
|
-
difficulty.
|
15
|
-
|
16
|
-
For example and usage - read the rdoc in doc/ from lib/activeldap.rb.
|
17
|
-
It is also available on the web at:
|
18
|
-
|
19
|
-
http://ruby-activeldap.rubyforge.org/
|
20
|
-
|
21
|
-
PREREQUISITES
|
22
|
-
|
23
|
-
* Ruby 1.8.x [1]
|
24
|
-
* Ruby/LDAP [0]
|
25
|
-
* Log4r [4]
|
26
|
-
* ActiveRecord [2]
|
27
|
-
* (Optional) Ruby/LDAP+GSSAPI [3]
|
28
|
-
* An LDAP server compatible with Ruby/LDAP: OpenLDAP, etc
|
29
|
-
|
30
|
-
|
31
|
-
NOTES
|
32
|
-
|
33
|
-
* Only GSSAPI SASL support exists due to Ruby/LDAP limitations
|
34
|
-
* The API is subject to change as this package slowly approaches 1.0.0
|
35
|
-
|
36
|
-
|
37
|
-
INSTALL
|
38
|
-
|
39
|
-
- Edit active_ldap/configuration.rb with your LDAP preferences
|
40
|
-
- Run -
|
41
|
-
sudo rake install
|
42
|
-
|
43
|
-
RAILS
|
44
|
-
|
45
|
-
There is a small rails plugin included that allows the use of a file named
|
46
|
-
'ldap.yml' in the config directory of your rails app. This file has a similar
|
47
|
-
function to the 'database.yml' file that allows you to set your database
|
48
|
-
connection settings per environment. Similarly, the ldap.yml file allows
|
49
|
-
settings to be set for development, test, and production environments. For
|
50
|
-
instance, the development entry would look something like the following:
|
51
|
-
|
52
|
-
development:
|
53
|
-
host: 127.0.0.1
|
54
|
-
port: 389
|
55
|
-
base: dc=localhost
|
56
|
-
bind_dn: cn=admin,dc=localhost
|
57
|
-
password: secret
|
58
|
-
|
59
|
-
|
60
|
-
To install, simply copy the rails/plugin/active_ldap folder into the
|
61
|
-
vendor/plugins directory of your rails application and create config/ldap.yml.
|
62
|
-
When your application starts up, the plugin will call #establish_connection
|
63
|
-
using the parameters specified for your current environment.
|
64
|
-
|
65
|
-
|
66
|
-
LICENCE
|
67
|
-
|
68
|
-
This program is free software; you can redistribute it and/or modify it. It is
|
69
|
-
dual licensed under Ruby's license and under the terms of the GNU General
|
70
|
-
Public License as published by the Free Software Foundation; either version 2,
|
71
|
-
or (at your option) any later version.
|
72
|
-
|
73
|
-
Please see the file LICENSE for the terms of the licence.
|
74
|
-
|
75
|
-
|
76
|
-
REFERENCES
|
77
|
-
|
78
|
-
[0] - http://ruby-ldap.sourceforge.net
|
79
|
-
[1] - http://www.ruby-lang.org
|
80
|
-
[2] - http://activerecord.rubyonrails.org
|
81
|
-
[3] - http://caliban.org/files/redhat/RPMS/i386/ruby-ldap-0.8.2-4.i386.rpm
|
82
|
-
[4] - http://log4r.sourceforge.net/
|
83
|
-
|
84
|
-
|
85
|
-
|
data/Rakefile
DELETED
@@ -1,70 +0,0 @@
|
|
1
|
-
# -*- ruby -*-
|
2
|
-
|
3
|
-
require 'rubygems'
|
4
|
-
require 'hoe'
|
5
|
-
$LOAD_PATH.unshift('./lib')
|
6
|
-
require 'active_ldap'
|
7
|
-
|
8
|
-
project = Hoe.new('ruby-activeldap', ActiveLdap::VERSION) do |project|
|
9
|
-
project.rubyforge_name = 'ruby-activeldap'
|
10
|
-
project.author = ['Will Drewry', 'Kouhei Sutou']
|
11
|
-
project.email = ['will@alum.bu.edu', 'kou@cozmixng.org']
|
12
|
-
project.summary = 'Ruby/ActiveLdap is a object-oriented API to LDAP'
|
13
|
-
project.url = 'http://rubyforge.org/projects/ruby-activeldap/'
|
14
|
-
project.test_globs = ['test/test_*.rb']
|
15
|
-
project.changes = project.paragraphs_of('CHANGES', 0..1).join("\n\n")
|
16
|
-
project.extra_deps = [['log4r', '>= 1.0.4'], 'activerecord']
|
17
|
-
project.spec_extras = {
|
18
|
-
:requirements => ['ruby-ldap >= 0.8.2', '(Open)LDAP server'],
|
19
|
-
:autorequire => 'active_ldap',
|
20
|
-
:executables => [],
|
21
|
-
}
|
22
|
-
project.description = String.new(<<-EOF)
|
23
|
-
'Ruby/ActiveLdap' is a ruby extension library which provides a clean
|
24
|
-
objected oriented interface to the Ruby/LDAP library. It was inspired
|
25
|
-
by ActiveRecord. This is not nearly as clean or as flexible as
|
26
|
-
ActiveRecord, but it is still trivial to define new objects and manipulate
|
27
|
-
them with minimal difficulty.
|
28
|
-
EOF
|
29
|
-
end
|
30
|
-
|
31
|
-
# fix Hoe's incorrect guess.
|
32
|
-
project.spec.executables.clear
|
33
|
-
project.bin_files = project.spec.files.grep(/^bin/)
|
34
|
-
|
35
|
-
# fix Hoe's install and uninstall task.
|
36
|
-
task(:install).instance_variable_get("@actions").clear
|
37
|
-
task(:uninstall).instance_variable_get("@actions").clear
|
38
|
-
|
39
|
-
task :install do
|
40
|
-
[
|
41
|
-
[project.lib_files, "lib", Hoe::RUBYLIB, 0444],
|
42
|
-
[project.bin_files, "bin", File.join(Hoe::PREFIX, 'bin'), 0555]
|
43
|
-
].each do |files, prefix, dest, mode|
|
44
|
-
FileUtils.mkdir_p dest unless test ?d, dest
|
45
|
-
files.each do |file|
|
46
|
-
base = File.dirname(file.sub(/^#{prefix}#{File::SEPARATOR}/, ''))
|
47
|
-
_dest = File.join(dest, base)
|
48
|
-
FileUtils.mkdir_p _dest unless test ?d, _dest
|
49
|
-
install file, _dest, :mode => mode
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
desc 'Uninstall the package.'
|
55
|
-
task :uninstall do
|
56
|
-
Dir.chdir Hoe::RUBYLIB do
|
57
|
-
rm_f project.lib_files.collect {|f| f.sub(/^lib#{File::SEPARATOR}/, '')}
|
58
|
-
end
|
59
|
-
Dir.chdir File.join(Hoe::PREFIX, 'bin') do
|
60
|
-
rm_f project.bin_files.collect {|f| f.sub(/^bin#{File::SEPARATOR}/, '')}
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
|
65
|
-
desc 'Tag the repository for release.'
|
66
|
-
task :tag do
|
67
|
-
system "svn copy -m 'New release tag' https://ruby-activeldap.googlecode.com/svn/trunk https://ruby-activeldap.googlecode.com/svn/tags/r#{ActiveLdap::VERSION}"
|
68
|
-
end
|
69
|
-
|
70
|
-
# vim: syntax=ruby
|
data/TODO
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
- Test SASL bind.
|
2
|
-
- Add result pagination via LDAP::Controls
|
3
|
-
- serialize & serialized_attributes
|
4
|
-
- schema mgmt - how does AR handle it?
|
5
|
-
- columns() -- ?
|
6
|
-
http://api.rubyonrails.com/classes/ActiveRecord/Base.html#M000865
|
7
|
-
- provide full documentation for new API.
|
8
|
-
- handle all exception raised from Ruby/LDAP and wrap as
|
9
|
-
ActiveLdap exception. I think we need to develop an
|
10
|
-
application using ActiveLdap.
|
11
|
-
- support Ruby/GetText.
|
12
|
-
- Add locking around Timeout.alarm() to ensure a multithreaded ruby
|
13
|
-
app doesn't hit any race conditions
|
14
|
-
- Add AR matching exceptions:
|
15
|
-
* ActiveRecordError -- ActiveLdapError as base
|
16
|
-
* AssociationTypeMismatch
|
17
|
-
* SerializationTypeMismatch
|
18
|
-
* ConnectionNotEstablished
|
19
|
-
* RecordNotFound
|
20
|
-
* LdapActionInvalid - like StatementInvalid
|
21
|
-
* MultiparameterAssignmentErrors
|
22
|
-
* AttributeAssignmentError
|
23
|
-
* RecordNotSaved
|
data/benchmark/bench-al.rb
DELETED
@@ -1,152 +0,0 @@
|
|
1
|
-
base = File.dirname(__FILE__)
|
2
|
-
$LOAD_PATH.unshift(File.expand_path(base))
|
3
|
-
$LOAD_PATH.unshift(File.expand_path(File.join(base, "..", "lib")))
|
4
|
-
|
5
|
-
require "active_ldap"
|
6
|
-
require "benchmark"
|
7
|
-
|
8
|
-
LDAP_SERVER = "127.0.0.1"
|
9
|
-
LDAP_PORT = 389
|
10
|
-
LDAP_BASE = ENV["LDAP_BASE"] || "dc=localdomain"
|
11
|
-
LDAP_PREFIX = "ou=People"
|
12
|
-
LDAP_USER = nil
|
13
|
-
LDAP_PASSWORD = nil
|
14
|
-
|
15
|
-
class ALUser < ActiveLdap::Base
|
16
|
-
ldap_mapping :dn_attribute => 'uid', :prefix => LDAP_PREFIX,
|
17
|
-
:classes => ['posixAccount', 'person']
|
18
|
-
end
|
19
|
-
|
20
|
-
# === search_al
|
21
|
-
#
|
22
|
-
def search_al
|
23
|
-
count = 0
|
24
|
-
ALUser.find(:all).each do |e|
|
25
|
-
count += 1
|
26
|
-
end
|
27
|
-
return count
|
28
|
-
end # -- search_al
|
29
|
-
|
30
|
-
def search_al_without_object_creation
|
31
|
-
count = 0
|
32
|
-
ALUser.search.each do |e|
|
33
|
-
count += 1
|
34
|
-
end
|
35
|
-
return count
|
36
|
-
end
|
37
|
-
|
38
|
-
# === search_ldap
|
39
|
-
#
|
40
|
-
def search_ldap(conn)
|
41
|
-
count = 0
|
42
|
-
conn.search("#{LDAP_PREFIX},#{LDAP_BASE}",
|
43
|
-
LDAP::LDAP_SCOPE_SUBTREE,
|
44
|
-
"(uid=*)") do |e|
|
45
|
-
count += 1
|
46
|
-
end
|
47
|
-
count
|
48
|
-
end # -- search_ldap
|
49
|
-
|
50
|
-
def populate_base
|
51
|
-
suffixes = []
|
52
|
-
ActiveLdap::Base.base.split(/,/).reverse_each do |suffix|
|
53
|
-
prefix = suffixes.join(",")
|
54
|
-
suffixes.unshift(suffix)
|
55
|
-
name, value = suffix.split(/=/, 2)
|
56
|
-
next unless name == "dc"
|
57
|
-
dc_class = Class.new(ActiveLdap::Base)
|
58
|
-
dc_class.ldap_mapping :dn_attribute => "dc",
|
59
|
-
:prefix => "",
|
60
|
-
:scope => :base,
|
61
|
-
:classes => ["top", "dcObject", "organization"]
|
62
|
-
dc_class.instance_variable_set("@base", prefix)
|
63
|
-
next if dc_class.exists?(value, :prefix => "dc=#{value}")
|
64
|
-
dc = dc_class.new(value)
|
65
|
-
dc.o = dc.dc
|
66
|
-
dc.save
|
67
|
-
end
|
68
|
-
|
69
|
-
if ActiveLdap::Base.search.empty?
|
70
|
-
raise "Can't populate #{ActiveLdap::Base.base}"
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
def populate_users
|
75
|
-
ou_class = Class.new(ActiveLdap::Base)
|
76
|
-
ou_class.ldap_mapping :dn_attribute => "ou",
|
77
|
-
:prefix => "",
|
78
|
-
:classes => ["top", "organizationalUnit"]
|
79
|
-
ou_class.new(LDAP_PREFIX.split(/=/)[1]).save!
|
80
|
-
|
81
|
-
100.times do |i|
|
82
|
-
name = i.to_s
|
83
|
-
user = ALUser.new(name)
|
84
|
-
user.uid_number = 100000 + i
|
85
|
-
user.gid_number = 100000 + i
|
86
|
-
user.cn = name
|
87
|
-
user.sn = name
|
88
|
-
user.home_directory = "/nonexistent"
|
89
|
-
user.save!
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
def populate
|
94
|
-
populate_base
|
95
|
-
populate_users
|
96
|
-
end
|
97
|
-
|
98
|
-
# === main(argv)
|
99
|
-
#
|
100
|
-
def main(argv)
|
101
|
-
# Connect with AL
|
102
|
-
#
|
103
|
-
config = {
|
104
|
-
:host => LDAP_SERVER,
|
105
|
-
:port => LDAP_PORT,
|
106
|
-
:base => LDAP_BASE,
|
107
|
-
}
|
108
|
-
|
109
|
-
do_populate = LDAP_USER && LDAP_PASSWORD
|
110
|
-
|
111
|
-
if do_populate
|
112
|
-
config[:bind_dn] = LDAP_USER
|
113
|
-
config[:password] = LDAP_PASSWORD
|
114
|
-
end
|
115
|
-
ActiveLdap::Base.establish_connection(config)
|
116
|
-
|
117
|
-
if do_populate
|
118
|
-
puts "populating..."
|
119
|
-
dumped_data = ActiveLdap::Base.dump(:scope => :sub)
|
120
|
-
ActiveLdap::Base.delete_all(nil, :scope => :sub)
|
121
|
-
populate
|
122
|
-
end
|
123
|
-
|
124
|
-
# Standard connection
|
125
|
-
#
|
126
|
-
conn = LDAP::Conn.new(LDAP_SERVER, LDAP_PORT)
|
127
|
-
al_count = 0
|
128
|
-
al_count_without_object_creation = 0
|
129
|
-
ldap_count = 0
|
130
|
-
Benchmark.bm(10) do |x|
|
131
|
-
x.report("AL") { al_count = search_al }
|
132
|
-
x.report("AL(No Obj)") do
|
133
|
-
al_count_without_object_creation = search_al_without_object_creation
|
134
|
-
end
|
135
|
-
x.report("LDAP") { ldap_count = search_ldap(conn) }
|
136
|
-
end
|
137
|
-
print "Entries processed by Ruby/ActiveLdap: #{al_count}\n"
|
138
|
-
print "Entries processed by Ruby/ActiveLdap (without object creation)" +
|
139
|
-
": #{al_count_without_object_creation}\n"
|
140
|
-
print "Entries processed by Ruby/LDAP: #{ldap_count}\n"
|
141
|
-
|
142
|
-
0
|
143
|
-
ensure
|
144
|
-
if do_populate
|
145
|
-
ActiveLdap::Base.delete_all(nil, :scope => :sub)
|
146
|
-
ActiveLdap::Base.load(dumped_data)
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
if $0 == __FILE__ then
|
151
|
-
exit(main(ARGV) || 1)
|
152
|
-
end
|
data/examples/example.der
DELETED
Binary file
|
data/examples/example.jpg
DELETED
Binary file
|
data/examples/groupadd
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
#!/usr/bin/ruby -W0
|
2
|
-
|
3
|
-
base = File.expand_path(File.join(File.dirname(__FILE__), ".."))
|
4
|
-
$LOAD_PATH << File.join(base, "lib")
|
5
|
-
$LOAD_PATH << File.join(base, "examples")
|
6
|
-
|
7
|
-
require 'active_ldap'
|
8
|
-
require 'objects/user'
|
9
|
-
require 'objects/group'
|
10
|
-
|
11
|
-
argv, opts, options = ActiveLdap::Command.parse_options do |opts, options|
|
12
|
-
opts.banner += " GROUP_NAME"
|
13
|
-
end
|
14
|
-
|
15
|
-
if argv.size == 1
|
16
|
-
name = argv.shift
|
17
|
-
else
|
18
|
-
$stderr.puts opts
|
19
|
-
exit 1
|
20
|
-
end
|
21
|
-
|
22
|
-
pwb = Proc.new do |user|
|
23
|
-
ActiveLdap::Command.read_password("[#{user}] Password: ")
|
24
|
-
end
|
25
|
-
|
26
|
-
ActiveLdap::Base.establish_connection(:password_block => pwb,
|
27
|
-
:allow_anonymous => false)
|
28
|
-
|
29
|
-
if Group.exists?(name)
|
30
|
-
$stderr.puts("Group #{name} already exists.")
|
31
|
-
exit 1
|
32
|
-
end
|
33
|
-
|
34
|
-
group = Group.new(name)
|
35
|
-
group.gid_number = 9000
|
36
|
-
|
37
|
-
unless group.save
|
38
|
-
puts "failed"
|
39
|
-
puts group.errors.full_messages
|
40
|
-
exit 1
|
41
|
-
end
|
data/examples/groupdel
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
#!/usr/bin/ruby -W0
|
2
|
-
|
3
|
-
base = File.expand_path(File.join(File.dirname(__FILE__), ".."))
|
4
|
-
$LOAD_PATH << File.join(base, "lib")
|
5
|
-
$LOAD_PATH << File.join(base, "examples")
|
6
|
-
|
7
|
-
require 'active_ldap'
|
8
|
-
require 'objects/user'
|
9
|
-
require 'objects/group'
|
10
|
-
|
11
|
-
argv, opts, options = ActiveLdap::Command.parse_options do |opts, options|
|
12
|
-
opts.banner += " GROUP_NAME"
|
13
|
-
end
|
14
|
-
|
15
|
-
if argv.size == 1
|
16
|
-
name = argv.shift
|
17
|
-
else
|
18
|
-
$stderr.puts opts
|
19
|
-
exit 1
|
20
|
-
end
|
21
|
-
|
22
|
-
pwb = Proc.new do |user|
|
23
|
-
ActiveLdap::Command.read_password("[#{user}] Password: ")
|
24
|
-
end
|
25
|
-
|
26
|
-
ActiveLdap::Base.establish_connection(:password_block => pwb,
|
27
|
-
:allow_anonymous => false)
|
28
|
-
|
29
|
-
|
30
|
-
unless Group.exists?(name)
|
31
|
-
$stderr.puts("Group #{name} doesn't exist.")
|
32
|
-
exit 1
|
33
|
-
end
|
34
|
-
|
35
|
-
Group.destroy(name)
|
data/examples/groupls
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
#!/usr/bin/ruby -W0
|
2
|
-
|
3
|
-
base = File.expand_path(File.join(File.dirname(__FILE__), ".."))
|
4
|
-
$LOAD_PATH << File.join(base, "lib")
|
5
|
-
$LOAD_PATH << File.join(base, "examples")
|
6
|
-
|
7
|
-
require 'active_ldap'
|
8
|
-
require 'objects/user'
|
9
|
-
require 'objects/group'
|
10
|
-
|
11
|
-
argv, opts, options = ActiveLdap::Command.parse_options do |opts, options|
|
12
|
-
opts.banner += " GROUP_NAME"
|
13
|
-
end
|
14
|
-
|
15
|
-
if argv.size == 1
|
16
|
-
name = argv.shift
|
17
|
-
else
|
18
|
-
$stderr.puts opts
|
19
|
-
exit 1
|
20
|
-
end
|
21
|
-
|
22
|
-
pwb = Proc.new do |user|
|
23
|
-
ActiveLdap::Command.read_password("[#{user}] Password: ")
|
24
|
-
end
|
25
|
-
|
26
|
-
ActiveLdap::Base.establish_connection(:password_block => pwb,
|
27
|
-
:allow_anonymous => false)
|
28
|
-
|
29
|
-
unless Group.exists?(name)
|
30
|
-
$stderr.puts("Group #{name} doesn't exist.")
|
31
|
-
exit 1
|
32
|
-
end
|
33
|
-
|
34
|
-
group = Group.find(name)
|
35
|
-
|
36
|
-
members = []
|
37
|
-
group.primary_members.each do |mem|
|
38
|
-
members << "#{mem.uid}[#{mem.uidNumber}]"
|
39
|
-
end
|
40
|
-
|
41
|
-
group.members.each do |mem|
|
42
|
-
if mem.new_entry?
|
43
|
-
members << "#{mem.uid}[????]"
|
44
|
-
else
|
45
|
-
members << "#{mem.uid}[#{mem.uidNumber}]"
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
puts("#{group.id}(#{group.gid_number}): #{members.join(', ')}")
|