adap 0.1.10 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README_FOR_DEVELOPER.md +48 -0
- data/lib/adap/adap.rb +24 -24
- data/lib/adap/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0027496e73b5ac4ad67838975ca7876a4d9efed7b64de41733b1ef85b591f893'
|
4
|
+
data.tar.gz: 6fcaf2a2f8506dff5c606593f2565ee5b853ff672eaecd7d9e2a27b41108431d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa4f5affabb9498f6d0f3a2802807fedfdb975870102fb16ba67fc9e0d9ff69c0b17cf3c1c5baf5c3b847f6aabd149f3114f778f8f45683fe0d81d6390118ba3
|
7
|
+
data.tar.gz: 9e19e2633f89514187f1f5a5472f62933f89d604399a3aafb56b674735f4784f58e2d7459c2160877ec800c3a966f84e27dfc5c6f6831f6fd4e4af62a285dff5
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# To run workflow
|
2
|
+
|
3
|
+
# GitHub Actions
|
4
|
+
## For unit testing
|
5
|
+
When you push to any branch "master", "develop" or merge a PR to "master", the unit tests will run automatically.
|
6
|
+
Please check the progress in the Actions tab.
|
7
|
+
|
8
|
+
|
9
|
+
## For release (interactively)
|
10
|
+
First, you need to modify a version in `./lib/adap/version.py`.
|
11
|
+
Then, you can run the following command to trigger the release workflow.
|
12
|
+
|
13
|
+
```
|
14
|
+
$ vim lib/adap/version.rb
|
15
|
+
-> Update VERSION
|
16
|
+
```
|
17
|
+
|
18
|
+
Then create a commit and push it and create a PR.
|
19
|
+
After it was merged, you can run the following command to trigger the release workflow.
|
20
|
+
|
21
|
+
```
|
22
|
+
$ gh workflow run
|
23
|
+
? Select a workflow [Use arrows to move, type to filter]
|
24
|
+
> Ruby (release.yml) // <- Select "Ruby (release.yml)"
|
25
|
+
Ruby (ruby.yml)
|
26
|
+
Dependabot Updates (dependabot-updates)
|
27
|
+
|
28
|
+
? otp (required) // <- Input the OTP code
|
29
|
+
```
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
```
|
34
|
+
$ gh run list --workflow=release.yml
|
35
|
+
STATUS TITLE WORKFLOW BRANCH EVENT ID ELAPSED AGE
|
36
|
+
* Ruby Ruby master workflow_dispatch 12673039585 10s less than a minute ago
|
37
|
+
```
|
38
|
+
|
39
|
+
|
40
|
+
## For release (non-interactively)
|
41
|
+
You can also trigger the release workflow non-interactively.
|
42
|
+
|
43
|
+
```
|
44
|
+
gh workflow run release.yml --ref=master --field otp=123456
|
45
|
+
```
|
46
|
+
|
47
|
+
`--field otp=123456` is required to input the OTP code.
|
48
|
+
You have to change `123456` to the actual OTP code.
|
data/lib/adap/adap.rb
CHANGED
@@ -19,8 +19,8 @@ class Adap
|
|
19
19
|
def initialize(params)
|
20
20
|
raise "Initialize Adap was failed. params must not be nil" if params == nil
|
21
21
|
|
22
|
-
[:ad_host, :
|
23
|
-
raise 'Adap requires keys in params ":ad_host", ":
|
22
|
+
[:ad_host, :ad_bind_dn, :ad_user_base_dn, :ad_group_base_dn, :ldap_host, :ldap_bind_dn, :ldap_user_base_dn, :ldap_group_base_dn].each { |k|
|
23
|
+
raise 'Adap requires keys in params ":ad_host", ":ad_bind_dn", ":ad_user_base_dn", ":ad_group_base_dn", ":ldap_host", ":ldap_bind_dn", ":ldap_user_base_dn", ":ldap_group_base_dn"' if !params.key?(k)
|
24
24
|
}
|
25
25
|
|
26
26
|
# List of attributes for user in AD
|
@@ -41,17 +41,17 @@ class Adap
|
|
41
41
|
|
42
42
|
@ad_host = params[:ad_host]
|
43
43
|
@ad_port = (params[:ad_port] ? params[:ad_port] : 389)
|
44
|
-
@
|
45
|
-
@
|
46
|
-
@
|
47
|
-
@ad_auth = (params.has_key?(:ad_password) ? { :method => :simple, :username => @
|
44
|
+
@ad_bind_dn = params[:ad_bind_dn]
|
45
|
+
@ad_user_base_dn = params[:ad_user_base_dn]
|
46
|
+
@ad_group_base_dn = params[:ad_group_base_dn]
|
47
|
+
@ad_auth = (params.has_key?(:ad_password) ? { :method => :simple, :username => @ad_bind_dn, :password => params[:ad_password] } : nil)
|
48
48
|
@ldap_host = params[:ldap_host]
|
49
49
|
@ldap_port = (params[:ldap_port] ? params[:ldap_port] : 389)
|
50
|
-
@
|
51
|
-
@
|
52
|
-
@
|
53
|
-
@
|
54
|
-
@ldap_auth = (params.has_key?(:ldap_password) ? { :method => :simple, :username => @
|
50
|
+
@ldap_bind_dn = params[:ldap_bind_dn]
|
51
|
+
@ldap_base_dn = params[:ldap_base_dn]
|
52
|
+
@ldap_user_base_dn = params[:ldap_user_base_dn]
|
53
|
+
@ldap_group_base_dn = params[:ldap_group_base_dn]
|
54
|
+
@ldap_auth = (params.has_key?(:ldap_password) ? { :method => :simple, :username => @ldap_bind_dn, :password => params[:ldap_password] } : nil )
|
55
55
|
|
56
56
|
# A password-hash algorithm to sync to the LDAP.
|
57
57
|
# Popular LDAP products like Open LDAP usually supports md5({MD5}), sha1({SHA}) and ssha({SSHA}) algorithms.
|
@@ -101,11 +101,11 @@ class Adap
|
|
101
101
|
end
|
102
102
|
|
103
103
|
def get_ad_user_dn(username)
|
104
|
-
"CN=#{username},#{@
|
104
|
+
"CN=#{username},#{@ad_user_base_dn}"
|
105
105
|
end
|
106
106
|
|
107
107
|
def get_ldap_user_dn(username)
|
108
|
-
"uid=#{username},#{@
|
108
|
+
"uid=#{username},#{@ldap_user_base_dn}"
|
109
109
|
end
|
110
110
|
|
111
111
|
def create_ldap_attributes(ad_entry)
|
@@ -342,26 +342,26 @@ class Adap
|
|
342
342
|
# Creating AD ldapsearch filter
|
343
343
|
|
344
344
|
ad_filter = if primary_gid_number == nil then
|
345
|
-
# TODO: Searching with filter `objectCategory=CN=Group,CN=Schema,CN=Configuration,#{@
|
345
|
+
# TODO: Searching with filter `objectCategory=CN=Group,CN=Schema,CN=Configuration,#{@ad_base_dn}` is more accureate.
|
346
346
|
#Net::LDAP::Filter.construct(
|
347
|
-
# "(&(objectCategory=CN=Group,CN=Schema,CN=Configuration,#{@
|
347
|
+
# "(&(objectCategory=CN=Group,CN=Schema,CN=Configuration,#{@ad_base_dn})(member=CN=#{uid},CN=Users,#{@ad_base_dn}))")
|
348
348
|
|
349
349
|
Net::LDAP::Filter.construct(
|
350
|
-
"(&(objectClass=group)(member=CN=#{uid},#{@
|
350
|
+
"(&(objectClass=group)(member=CN=#{uid},#{@ad_user_base_dn}))")
|
351
351
|
else
|
352
|
-
# TODO: Searching with filter `objectCategory=CN=Group,CN=Schema,CN=Configuration,#{@
|
352
|
+
# TODO: Searching with filter `objectCategory=CN=Group,CN=Schema,CN=Configuration,#{@ad_base_dn}` is more accureate.
|
353
353
|
#Net::LDAP::Filter.construct(
|
354
|
-
# "(&(objectCategory=CN=Group,CN=Schema,CN=Configuration,#{@
|
354
|
+
# "(&(objectCategory=CN=Group,CN=Schema,CN=Configuration,#{@ad_base_dn})(|(member=CN=#{uid},CN=Users,#{@ad_base_dn})(gidNumber=#{primary_gid_number})))")
|
355
355
|
|
356
356
|
Net::LDAP::Filter.construct(
|
357
|
-
"(&(objectClass=group)(|(member=CN=#{uid},#{@
|
357
|
+
"(&(objectClass=group)(|(member=CN=#{uid},#{@ad_user_base_dn})(gidNumber=#{primary_gid_number})))")
|
358
358
|
end
|
359
359
|
|
360
360
|
# Get groups from AD
|
361
361
|
# entry = {
|
362
362
|
# :gidnumber => xxx,
|
363
363
|
# }
|
364
|
-
@ad_client.search(:base => @
|
364
|
+
@ad_client.search(:base => @ad_group_base_dn, :filter => ad_filter, :attributes => [:cn, :gidnumber]) do |entry|
|
365
365
|
ad_group_map[entry[:cn].first] = {:gidnumber => entry[:gidnumber]}
|
366
366
|
#ad_group_map[entry[:cn]] = nil
|
367
367
|
end
|
@@ -377,7 +377,7 @@ class Adap
|
|
377
377
|
ldap_filter = Net::LDAP::Filter.construct("(memberUid=#{uid})")
|
378
378
|
|
379
379
|
# Get groups from LDAP
|
380
|
-
@ldap_client.search(:base => @
|
380
|
+
@ldap_client.search(:base => @ldap_group_base_dn, :filter => ldap_filter, :attributes => [:cn]) do |entry|
|
381
381
|
# Capture common name of groups. gidnumber is not necessary for LDAP entry
|
382
382
|
ldap_group_map[entry[:cn].first] = nil
|
383
383
|
end
|
@@ -416,7 +416,7 @@ class Adap
|
|
416
416
|
operation_pool = {}
|
417
417
|
|
418
418
|
ad_group_map.each_key do |key|
|
419
|
-
dn = "cn=#{key},#{@
|
419
|
+
dn = "cn=#{key},#{@ldap_group_base_dn}"
|
420
420
|
# Convert AD entries to LDAP entries to create operation to update LDAP data.
|
421
421
|
operation_pool[dn] = {
|
422
422
|
:cn => key,
|
@@ -426,7 +426,7 @@ class Adap
|
|
426
426
|
end
|
427
427
|
|
428
428
|
ldap_group_map.each_key do |key|
|
429
|
-
operation_pool["cn=#{key},#{@
|
429
|
+
operation_pool["cn=#{key},#{@ldap_group_base_dn}"] = {
|
430
430
|
# :cn and :gidnumber are not necessary
|
431
431
|
:operations => [[:delete, :memberuid, uid]]
|
432
432
|
} if !ad_group_map.has_key?(key)
|
@@ -555,7 +555,7 @@ class Adap
|
|
555
555
|
return nil if uid ==nil
|
556
556
|
primary_gid = nil
|
557
557
|
|
558
|
-
@ad_client.search(:base => "CN=#{uid},CN=Users,#{@
|
558
|
+
@ad_client.search(:base => "CN=#{uid},CN=Users,#{@ad_base_dn}") do |entry|
|
559
559
|
primary_gid = entry[:gidnumber].first
|
560
560
|
end
|
561
561
|
|
data/lib/adap/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tsutomu Nakamura
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-01-
|
11
|
+
date: 2025-01-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -65,6 +65,7 @@ files:
|
|
65
65
|
- Gemfile
|
66
66
|
- Gemfile.lock
|
67
67
|
- README.md
|
68
|
+
- README_FOR_DEVELOPER.md
|
68
69
|
- Rakefile
|
69
70
|
- adap.gemspec
|
70
71
|
- bin/console
|