ldap_tools 0.3.0 → 0.4.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 +4 -4
- data/bin/ldaptools +1 -3
- data/lib/tapjoy/ldap/group/add_user.rb +34 -0
- data/lib/tapjoy/ldap/group/create.rb +40 -0
- data/lib/tapjoy/ldap/group/delete.rb +38 -0
- data/lib/tapjoy/ldap/group.rb +38 -99
- data/lib/tapjoy/ldap/user/create.rb +19 -12
- data/lib/tapjoy/ldap/user/delete.rb +1 -0
- data/lib/tapjoy/ldap/user.rb +1 -24
- data/lib/tapjoy/ldap/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6460a58ed64997c7d6a574bf144f1eb4001bb2b9
|
4
|
+
data.tar.gz: 582aedaabe2033a5d36ab53b4e3deff54b443524
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e0522e4fc808a6de38d362efc935892bfabd818ff1f85e0f7cdee8852ec4156b863c9d84427ba6881c250174d456eac957b1eaabeb62a8966c1f7fb4ccfaba5a
|
7
|
+
data.tar.gz: df556c80555d45698c2de525bad47a135cbb6dea1013088149f68c9c70a9de016a2423f7a250a85060b460c62c9945abb538b3cb9425d2bcc1243a859fcd7052
|
data/bin/ldaptools
CHANGED
@@ -23,9 +23,7 @@ case cmd
|
|
23
23
|
when "user" # run commands associated with user object
|
24
24
|
Tapjoy::LDAP::User.commands
|
25
25
|
when 'group'
|
26
|
-
|
27
|
-
commands('This object is used for group management', cmd, GROUP_SUB_COMMANDS)
|
28
|
-
Tapjoy::LDAP::Group.new
|
26
|
+
Tapjoy::LDAP::Group.commands
|
29
27
|
when 'key'
|
30
28
|
KEY_SUB_COMMANDS = %w(add remove install list show)
|
31
29
|
commands('This object is used for group management', cmd, KEY_SUB_COMMANDS)
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Tapjoy
|
2
|
+
module LDAP
|
3
|
+
module Group
|
4
|
+
# Add existing user to existing group
|
5
|
+
class AddUser
|
6
|
+
def add_user
|
7
|
+
puts Tapjoy::LDAP::client.modify(dn, operations)
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
def opts
|
12
|
+
@opts ||= Trollop::options do
|
13
|
+
# Set help message
|
14
|
+
usage 'group add_user [options]'
|
15
|
+
synopsis "\nThis command is for adding existing users to existing groups"
|
16
|
+
|
17
|
+
opt(:group, 'Specify group', :type => :string, :required => true)
|
18
|
+
opt(:username, 'Specify username', :type => :string, :required => true)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def dn
|
23
|
+
@dn ||= "cn=#{opts[:group]},ou=Group,#{Tapjoy::LDAP::client.basedn}"
|
24
|
+
end
|
25
|
+
|
26
|
+
def operations
|
27
|
+
# Format is LDAP operation, attribute modified, value modified
|
28
|
+
# i.e, add the username to the memberuid attribute for the specified group
|
29
|
+
@operations ||= [[:add, :memberUid, opts[:username]]]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Tapjoy
|
2
|
+
module LDAP
|
3
|
+
module Group
|
4
|
+
# Create LDAP group
|
5
|
+
class Create
|
6
|
+
def create
|
7
|
+
# Check for errors
|
8
|
+
Trollop::die :type, "argument must be 'user' or 'service'" unless ['user', 'service'].include?opts[:type]
|
9
|
+
|
10
|
+
puts Tapjoy::LDAP::client.add(dn, ldap_attr)
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def opts
|
16
|
+
@opts ||= Trollop::options do
|
17
|
+
# Set help message
|
18
|
+
usage 'group create [options]'
|
19
|
+
synopsis "\nThis command is for creating new LDAP groups"
|
20
|
+
|
21
|
+
opt :name, 'Specify group to create', type: :string, required: true
|
22
|
+
opt :type, 'Specfy if this is a user or service group', type: :string, default: 'user'
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def dn
|
27
|
+
@dn ||= "cn=#{opts[:name]},ou=Group,#{Tapjoy::LDAP::client.basedn}"
|
28
|
+
end
|
29
|
+
|
30
|
+
def ldap_attr
|
31
|
+
@ldap_attr ||= {
|
32
|
+
:cn => opts[:name],
|
33
|
+
:objectclass => %w(top posixGroup),
|
34
|
+
:gidnumber => Tapjoy::LDAP::client.get_max_id('group', opts[:type])
|
35
|
+
}
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Tapjoy
|
2
|
+
module LDAP
|
3
|
+
module Group
|
4
|
+
# Delete LDAP group
|
5
|
+
class Delete
|
6
|
+
def delete
|
7
|
+
confirm unless opts[:force]
|
8
|
+
puts Tapjoy::LDAP::client.delete(dn)
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
def opts
|
13
|
+
@opts ||= Trollop::options do
|
14
|
+
# Set help message
|
15
|
+
usage 'group delete [options]'
|
16
|
+
synopsis "\nThis command is for deleting LDAP groups"
|
17
|
+
|
18
|
+
opt :name, 'Specify group', type: :string, required: true
|
19
|
+
opt :force, 'Force delete'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def dn
|
24
|
+
@dn ||= "cn=#{opts[:name]},ou=Group,#{Tapjoy::LDAP::client.basedn}"
|
25
|
+
end
|
26
|
+
|
27
|
+
def confirm
|
28
|
+
puts "Confirm that you want to delete group #{opts[:group]} (yes/no)"
|
29
|
+
print '>'
|
30
|
+
confirm = STDIN.gets.chomp().downcase
|
31
|
+
unless confirm.eql?('y') || confirm.eql?('yes')
|
32
|
+
abort("Deletion of #{ opts[:group] } aborted")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/tapjoy/ldap/group.rb
CHANGED
@@ -1,7 +1,33 @@
|
|
1
|
+
require_relative 'group/create'
|
2
|
+
require_relative 'group/delete'
|
3
|
+
require_relative 'group/add_user'
|
4
|
+
|
1
5
|
module Tapjoy
|
2
6
|
module LDAP
|
3
|
-
|
7
|
+
# Entry point for all group subcommands
|
8
|
+
module Group
|
4
9
|
class << self
|
10
|
+
|
11
|
+
SUB_COMMANDS = %w(create delete add_user)
|
12
|
+
|
13
|
+
def commands
|
14
|
+
Trollop::options do
|
15
|
+
usage 'group [SUB_COMMAND] [options]'
|
16
|
+
synopsis "\nThis object is used for group management\nAvailable subcommands are: #{SUB_COMMANDS}"
|
17
|
+
|
18
|
+
stop_on SUB_COMMANDS
|
19
|
+
end
|
20
|
+
|
21
|
+
cmd = ARGV.shift
|
22
|
+
|
23
|
+
case cmd
|
24
|
+
when 'create', 'delete', 'add_user'
|
25
|
+
send(cmd) # call method with respective name
|
26
|
+
else
|
27
|
+
raise Tapjoy::LDAP::InvalidArgument
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
5
31
|
# Lookup GID for the given group
|
6
32
|
def lookup_id(groupname)
|
7
33
|
gidnumber = []
|
@@ -22,110 +48,23 @@ module Tapjoy
|
|
22
48
|
results.each { |result| gidnumber = result.gidnumber }
|
23
49
|
return gidnumber[0]
|
24
50
|
end
|
25
|
-
end
|
26
51
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
# This is a necessary construct, because init could be called from
|
32
|
-
# places other than the commandline. As result, we want to overload
|
33
|
-
# init, without *really* overloading it.
|
34
|
-
if ARGV.length >= 1
|
35
|
-
command = ARGV.shift
|
36
|
-
|
37
|
-
case command
|
38
|
-
when 'create', 'delete', 'add_user'
|
39
|
-
send(command)
|
40
|
-
else
|
41
|
-
raise Tapjoy::LDAP::InvalidArgument
|
42
|
-
end
|
52
|
+
# Create Group
|
53
|
+
def create
|
54
|
+
group = Tapjoy::LDAP::Group::Create.new
|
55
|
+
group.create
|
43
56
|
end
|
44
|
-
end
|
45
|
-
|
46
|
-
# Lookup GID for the given group
|
47
|
-
# @TODO: Remove this in favor of class method
|
48
|
-
def lookup_id(groupname)
|
49
|
-
gidnumber = []
|
50
57
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
results = Tapjoy::LDAP::client.search(['gidNumber'], filter)
|
56
|
-
|
57
|
-
# Make sure we return one, and only one group
|
58
|
-
if results.size < 1
|
59
|
-
abort('Group not found')
|
60
|
-
elsif results.size > 1
|
61
|
-
abort('Multiple groups found. Please narrow your search.')
|
58
|
+
# Delete group
|
59
|
+
def delete
|
60
|
+
group = Tapjoy::LDAP::Group::Delete.new
|
61
|
+
group.delete
|
62
62
|
end
|
63
63
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
private
|
69
|
-
# Create group
|
70
|
-
def create
|
71
|
-
opts = Trollop::options do
|
72
|
-
# Set help message
|
73
|
-
banner("#{$0} group create [options]")
|
74
|
-
|
75
|
-
opt :name, 'Specify group to create', :type => :string
|
76
|
-
opt :type, 'Specfy if this is a user or service group', :type => :string, :default => 'user'
|
64
|
+
def add_user
|
65
|
+
group = Tapjoy::LDAP::Group::AddUser.new
|
66
|
+
group.add_user
|
77
67
|
end
|
78
|
-
|
79
|
-
Trollop::die :name, 'argument count must be one' if opts[:name].nil?
|
80
|
-
Trollop::die :type, "argument must be 'user' or 'service'" unless ['user', 'service'].include?opts[:type]
|
81
|
-
|
82
|
-
dn = "cn=#{ opts[:name] },ou=Group,#{ Tapjoy::LDAP::client.basedn }"
|
83
|
-
|
84
|
-
ldap_attr = {
|
85
|
-
:cn => opts[:name],
|
86
|
-
:objectclass => ['top','posixGroup'],
|
87
|
-
:gidnumber => Tapjoy::LDAP::client.get_max_id('group', opts[:type])
|
88
|
-
}
|
89
|
-
puts Tapjoy::LDAP::client.add(dn, ldap_attr)
|
90
|
-
end
|
91
|
-
|
92
|
-
# Delete group
|
93
|
-
def delete
|
94
|
-
opts = Trollop::options do
|
95
|
-
# Set help message
|
96
|
-
banner("#{$0} group delete [options]")
|
97
|
-
|
98
|
-
opt(:group, 'Specify group', :type => :string, :required => true)
|
99
|
-
opt(:force, 'Force delete')
|
100
|
-
end
|
101
|
-
|
102
|
-
dn = "cn=#{ opts[:group] },ou=Group,#{ Tapjoy::LDAP::client.basedn }"
|
103
|
-
unless opts[:force]
|
104
|
-
puts "Confirm that you want to delete group: #{ opts[:group] }"
|
105
|
-
print '>'
|
106
|
-
confirm = STDIN.gets.chomp().downcase
|
107
|
-
unless confirm.eql?('y') || confirm.eql?('yes')
|
108
|
-
abort("Deletion of #{ opts[:group] } aborted")
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
puts Tapjoy::LDAP::client.delete(dn)
|
113
|
-
end
|
114
|
-
|
115
|
-
# Add user to group
|
116
|
-
def add_user
|
117
|
-
opts = Trollop::options do
|
118
|
-
banner("#{0} group add_user [options]")
|
119
|
-
|
120
|
-
opt(:group, 'Specify group', :type => :string, :required => true)
|
121
|
-
opt(:username, 'Specify username', :type => :string, :required => true)
|
122
|
-
end
|
123
|
-
|
124
|
-
dn = "cn=#{ opts[:group] },ou=Group,#{ Tapjoy::LDAP::client.basedn }"
|
125
|
-
operations = [
|
126
|
-
[:add, :memberUid, opts[:username]]
|
127
|
-
]
|
128
|
-
puts Tapjoy::LDAP::client.modify(dn, operations)
|
129
68
|
end
|
130
69
|
end
|
131
70
|
end
|
@@ -3,6 +3,7 @@ require 'securerandom'
|
|
3
3
|
module Tapjoy
|
4
4
|
module LDAP
|
5
5
|
module User
|
6
|
+
# Create LDAP user
|
6
7
|
class Create
|
7
8
|
def opts
|
8
9
|
@opts ||= Trollop::options do
|
@@ -28,23 +29,12 @@ module Tapjoy
|
|
28
29
|
def gidnumber
|
29
30
|
@gidnumber ||= Tapjoy::LDAP::Group.lookup_id(opts[:group])
|
30
31
|
end
|
31
|
-
|
32
|
+
|
32
33
|
def create
|
33
34
|
# Check for errors
|
34
35
|
Trollop::die :user, 'argument count must be two' if opts[:user].size != 2
|
35
36
|
Trollop::die :type, "argument must be 'user' or 'service'" unless ['user', 'service'].include?opts[:type]
|
36
37
|
|
37
|
-
|
38
|
-
case opts[:type]
|
39
|
-
when 'user'
|
40
|
-
ou = 'People'
|
41
|
-
when 'service'
|
42
|
-
ou = Tapjoy::LDAP::client.service_ou
|
43
|
-
else
|
44
|
-
puts 'Unknown type'
|
45
|
-
end
|
46
|
-
|
47
|
-
dn = "uid=#{ username },ou=#{ou},#{ Tapjoy::LDAP::client.basedn }"
|
48
38
|
puts Tapjoy::LDAP::client.add(dn, ldap_attr)
|
49
39
|
end
|
50
40
|
|
@@ -77,6 +67,23 @@ module Tapjoy
|
|
77
67
|
:userpassword => '{SSHA}' + create_password
|
78
68
|
}
|
79
69
|
end
|
70
|
+
|
71
|
+
def dn
|
72
|
+
@dn ||= "uid=#{username},ou=#{ou},#{Tapjoy::LDAP::client.basedn}"
|
73
|
+
end
|
74
|
+
|
75
|
+
def ou
|
76
|
+
@ou ||= begin
|
77
|
+
case opts[:type]
|
78
|
+
when 'user'
|
79
|
+
ou = 'People'
|
80
|
+
when 'service'
|
81
|
+
ou = Tapjoy::LDAP::client.service_ou
|
82
|
+
else
|
83
|
+
puts 'Unknown type'
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
80
87
|
end
|
81
88
|
end
|
82
89
|
end
|
data/lib/tapjoy/ldap/user.rb
CHANGED
@@ -3,6 +3,7 @@ require_relative 'user/delete'
|
|
3
3
|
|
4
4
|
module Tapjoy
|
5
5
|
module LDAP
|
6
|
+
# Entry point for all user subcommands
|
6
7
|
module User
|
7
8
|
class << self
|
8
9
|
SUB_COMMANDS = %w(create delete)
|
@@ -38,27 +39,3 @@ module Tapjoy
|
|
38
39
|
end
|
39
40
|
end
|
40
41
|
end
|
41
|
-
#
|
42
|
-
# # Instantiate class
|
43
|
-
# def initialize
|
44
|
-
# command = ARGV.shift
|
45
|
-
#
|
46
|
-
# case command
|
47
|
-
# when 'create', 'delete'
|
48
|
-
# send(command)
|
49
|
-
# else
|
50
|
-
# raise Tapjoy::LDAP::InvalidArgument
|
51
|
-
# end
|
52
|
-
# end
|
53
|
-
#
|
54
|
-
# private
|
55
|
-
# # Create user in LDAP
|
56
|
-
|
57
|
-
#
|
58
|
-
# # Delete user from LDAP
|
59
|
-
|
60
|
-
# end
|
61
|
-
#
|
62
|
-
# end
|
63
|
-
# end
|
64
|
-
# end
|
data/lib/tapjoy/ldap/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ldap_tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ali Tayarani
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: trollop
|