skylark 0.0.0.alpha.0 → 0.0.0.alpha.1
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/.gitignore +8 -0
- data/.rspec +2 -0
- data/CONTRIBUTING.md +51 -0
- data/LICENSE.md +21 -0
- data/README.md +15 -0
- data/bin/skylark +10 -0
- data/lib/skylark.rb +11 -0
- data/lib/skylark/argument_configuration.rb +72 -0
- data/lib/skylark/cli.rb +73 -0
- data/lib/skylark/configuration.rb +5 -0
- data/lib/skylark/ldap.rb +2 -0
- data/lib/skylark/ldap/adapter.rb +7 -0
- data/lib/skylark/ldap/dn.rb +21 -0
- data/lib/skylark/version.rb +26 -0
- data/lib/skylark/yaml_configuration.rb +35 -0
- data/skylark.gemspec +45 -0
- data/spec/lib/skylark_spec.rb +11 -0
- data/spec/spec_helper.rb +4 -0
- metadata +97 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2007b306b6bc887c49ad3b05960be25c59673bbd
|
4
|
+
data.tar.gz: d15341bea8daadd4f5e8e082217422aaf02ff4b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 50fec2e688e70b4a9674c2e0d0a9c7a9fc48cb9e20523ea102d947baaec9d4d2c15f61e444b3a14064c5e61a9917356bdd8fda5c12b41399cea8b36fe4d20c1d
|
7
|
+
data.tar.gz: aabf2f7b2569d47239de8596867aed9e4556b44018a245866a32f4f83a992bf9c3cc57d0c4f86fd0de1e36d40081be605c96005c92579d3303882bc2a8b09e4c
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
# Contributing
|
2
|
+
|
3
|
+
So you want to contribute to Skylark development! Thanks in advance
|
4
|
+
for anything that you can provide for the project. We (well, just me
|
5
|
+
at the moment) welcome feedback, bug reports, and---perhaps most
|
6
|
+
importantly---pull requests.
|
7
|
+
|
8
|
+
## Hacking
|
9
|
+
|
10
|
+
To contribute, you should have a relatively new version of Ruby. (The
|
11
|
+
gemspec greedily requires Ruby 2.3 or higher because I haven't had the
|
12
|
+
opportunity to test on anything lower.)
|
13
|
+
|
14
|
+
Make sure you have installed `bundler`,
|
15
|
+
|
16
|
+
```console
|
17
|
+
$ gem install bundler
|
18
|
+
```
|
19
|
+
|
20
|
+
and make sure you have all of the project dependencies installed,
|
21
|
+
|
22
|
+
```console
|
23
|
+
$ bundle install
|
24
|
+
```
|
25
|
+
|
26
|
+
Use a branching scheme like this:
|
27
|
+
|
28
|
+
* `<description-of-feature>` for feature additions
|
29
|
+
|
30
|
+
* `fix-<#>-<description-of-change>` for bug/performance fixes
|
31
|
+
|
32
|
+
**Fork** to your own personal or organization account (unless you
|
33
|
+
already are an authorized contributor on this project) and **make a
|
34
|
+
branch** for your work. Make multiple branches if your work is
|
35
|
+
divergent or has multiple different channels. Feel free to merge
|
36
|
+
between these branches in a way that makes sense. When ready,
|
37
|
+
**submit a pull request** with the base set to `master` on
|
38
|
+
`rye/skylark`. We will dispatch it to a different base if necessary.
|
39
|
+
|
40
|
+
|
41
|
+
## Filing Issues/Pull Requests
|
42
|
+
|
43
|
+
In general,
|
44
|
+
|
45
|
+
* Please use English, and please be as communicative as possible.
|
46
|
+
|
47
|
+
* Please make sure you have notifications turned on for GitHub on the
|
48
|
+
specific Issue or PR you submit---we might try to follow-up quickly.
|
49
|
+
In general, we'll accept anything that matches the coding style and
|
50
|
+
produces a valuable on-target movement towards the project's
|
51
|
+
purpose.
|
data/LICENSE.md
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2017 Kristofer Rye
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# skylark [](https://badge.fury.io/rb/skylark) [](https://travis-ci.org/rye/skylark) [](https://codeclimate.com/github/rye/skylark) [](https://codeclimate.com/github/rye/skylark/coverage)
|
2
|
+
|
3
|
+
Skylark is a simple CLI-based LDAP scraper whose intended purpose is to
|
4
|
+
dump an entire LDAP search base out into a bunch of JSON files based
|
5
|
+
on the LDIF data dumped by the LDAP server. More precisely, every
|
6
|
+
object in the database gets its own JSON file.
|
7
|
+
|
8
|
+
## Installation/Setup
|
9
|
+
|
10
|
+
Just clone the repository, cd into it, and run the following commands:
|
11
|
+
|
12
|
+
```console
|
13
|
+
$ bundle install
|
14
|
+
$ bundle exec script/scrape config/<your configuration file>.yml
|
15
|
+
```
|
data/bin/skylark
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
LIB_DIRECTORY = File.join(File.dirname(__FILE__), '..', 'lib')
|
4
|
+
$LOAD_PATH.unshift(File.expand_path(LIB_DIRECTORY)) unless $LOAD_PATH.map do |directory|
|
5
|
+
File.expand_path(directory)
|
6
|
+
end.include?(LIB_DIRECTORY)
|
7
|
+
|
8
|
+
require 'skylark'
|
9
|
+
|
10
|
+
Skylark::CLI.run ARGV
|
data/lib/skylark.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
3
|
+
require 'skylark/configuration'
|
4
|
+
|
5
|
+
module Skylark
|
6
|
+
|
7
|
+
class ArgumentConfiguration < Configuration
|
8
|
+
def self.parse(argv)
|
9
|
+
configuration = self.new
|
10
|
+
|
11
|
+
args = OptionParser.new do |parser|
|
12
|
+
configuration.define_options(parser)
|
13
|
+
|
14
|
+
parser.parse!(argv)
|
15
|
+
|
16
|
+
if argv.empty?
|
17
|
+
puts parser
|
18
|
+
$stderr.puts "Expected at least one filename; exiting."
|
19
|
+
exit
|
20
|
+
end
|
21
|
+
|
22
|
+
configuration[:spec_files] = argv.select do |argument|
|
23
|
+
argument_as_filename = File.expand_path(argument, Dir.pwd)
|
24
|
+
File.readable?(argument_as_filename)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
configuration
|
29
|
+
end
|
30
|
+
|
31
|
+
def initialize
|
32
|
+
super
|
33
|
+
|
34
|
+
self[:spec_files] = []
|
35
|
+
self[:logger_level] = :warn
|
36
|
+
end
|
37
|
+
|
38
|
+
def define_options(parser)
|
39
|
+
parser.banner = <<-EOT
|
40
|
+
Usage: #{$0} [options] [--] <filename> [<filename>...]
|
41
|
+
EOT
|
42
|
+
parser.separator ""
|
43
|
+
parser.separator "OPTIONS:"
|
44
|
+
|
45
|
+
add_verbosity_option(parser)
|
46
|
+
|
47
|
+
parser.separator ""
|
48
|
+
parser.separator "GENERAL OPTIONS:"
|
49
|
+
|
50
|
+
parser.on_tail('-h', '--help', 'Show this usage message.') do
|
51
|
+
puts parser
|
52
|
+
exit
|
53
|
+
end
|
54
|
+
|
55
|
+
parser.on_tail('--version', 'Print the version.') do
|
56
|
+
puts Skytrain::VERSION
|
57
|
+
exit
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def add_verbosity_option(parser)
|
62
|
+
parser.on('-d', '--debug-level LEVEL', 'Sets the debugging level to LEVEL.') do |level|
|
63
|
+
self[:logger_level] = level.downcase.to_sym
|
64
|
+
end
|
65
|
+
|
66
|
+
parser.on('-v', '--verbose', 'Sets the debugging level to a sensible verbose default.') do
|
67
|
+
self[:logger_level] = :debug
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
data/lib/skylark/cli.rb
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'base64'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
require 'skylark/ldap'
|
6
|
+
require 'skylark/argument_configuration'
|
7
|
+
require 'skylark/yaml_configuration'
|
8
|
+
require 'skylark/version'
|
9
|
+
|
10
|
+
module Skylark
|
11
|
+
|
12
|
+
module CLI
|
13
|
+
|
14
|
+
def self.run(args = ARGV)
|
15
|
+
argument_configuration = ArgumentConfiguration.parse(args)
|
16
|
+
|
17
|
+
specs = argument_configuration[:spec_files].map do |spec_file|
|
18
|
+
spec_configuration = YAMLConfiguration.new(spec_file)
|
19
|
+
spec_configuration.read!
|
20
|
+
spec_configuration
|
21
|
+
|
22
|
+
if spec_configuration['searches'].is_a? Array
|
23
|
+
spec_configuration['searches'].each do |search|
|
24
|
+
dump_root_directory = File.join(ROOT_DIRECTORY, 'data', spec_configuration['server']['host'])
|
25
|
+
|
26
|
+
auth = {method: :simple, username: spec_configuration['server']['auth']['username'], password: spec_configuration['server']['auth']['password']}
|
27
|
+
encryption = {method: :simple_tls, tls_options: {verify_mode: OpenSSL::SSL::VERIFY_NONE}}
|
28
|
+
|
29
|
+
adapter = Skylark::LDAP::Adapter.new(host: spec_configuration['server']['host'], port: spec_configuration['server']['port'].to_i, auth: auth, encryption: encryption)
|
30
|
+
|
31
|
+
adapter.search(base: search['base']) do |entry|
|
32
|
+
hash = {}
|
33
|
+
|
34
|
+
entry.each do |entry_key|
|
35
|
+
if (attributes = entry[entry_key]).is_a?(Array)
|
36
|
+
attributes.map! do |attribute|
|
37
|
+
if attribute.encoding == Encoding::ASCII_8BIT
|
38
|
+
Base64.strict_encode64(attribute)
|
39
|
+
else
|
40
|
+
attribute
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
attributes = attributes.first if attributes.count <= 1
|
45
|
+
|
46
|
+
hash[entry_key] = attributes
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
names = Skylark::LDAP::DN.new(hash[:dn]).names
|
51
|
+
domain_name_components = names.reverse.select do |name|
|
52
|
+
in_domain_name ||= true && (in_domain_name = name.keys[0].match?(/dc/i))
|
53
|
+
end.reverse.to_a
|
54
|
+
|
55
|
+
search_subnames = (names - domain_name_components).reverse
|
56
|
+
dump_directory = File.join(dump_root_directory, *search_subnames.select{|name| name.keys.first != 'CN'}.map{|name| name.values.first})
|
57
|
+
|
58
|
+
FileUtils.mkdir_p(dump_directory)
|
59
|
+
|
60
|
+
filename = File.join(dump_directory, "#{entry[:cn].first || ('_OU=' + entry[:ou].first if !entry[:ou].empty?) || ('_' + entry[:dn].first if !entry[:dn].empty?)}.json")
|
61
|
+
|
62
|
+
open(filename, 'wb') do |io|
|
63
|
+
io.write JSON.pretty_generate(hash) + '\n'
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
data/lib/skylark/ldap.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
module Skylark::LDAP
|
2
|
+
|
3
|
+
class DN
|
4
|
+
attr_reader :names
|
5
|
+
|
6
|
+
def initialize(dn_string)
|
7
|
+
parse!(dn_string)
|
8
|
+
end
|
9
|
+
|
10
|
+
def parse!(dn_string)
|
11
|
+
@names = parse(dn_string)
|
12
|
+
end
|
13
|
+
|
14
|
+
def parse(dn_string)
|
15
|
+
dn_string.scan(/(?<type>OU|CN|DC)=(?<data>[A-z][\w\ -]*),?/i).map do |match|
|
16
|
+
{match.first => match.last}
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Skylark
|
2
|
+
|
3
|
+
class Version
|
4
|
+
|
5
|
+
attr_reader :major
|
6
|
+
attr_reader :minor
|
7
|
+
attr_reader :patch
|
8
|
+
attr_reader :prerelease
|
9
|
+
|
10
|
+
def initialize(major, minor = 0, patch = 0, prerelease = nil)
|
11
|
+
@major, @minor, @patch, @prerelease = major, minor, patch, prerelease
|
12
|
+
end
|
13
|
+
|
14
|
+
def to_s(mode = :standard)
|
15
|
+
case mode
|
16
|
+
when :standard
|
17
|
+
"v#{@major}.#{@minor}.#{@patch}#{('-' + @prerelease) if !!@prerelease}"
|
18
|
+
when :gemspec
|
19
|
+
"#{@major}.#{@minor}.#{@patch}#{('.' + @prerelease) if !!@prerelease}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
VERSION = Version.new(0, 0, 0, 'alpha.1')
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
require 'skylark/configuration'
|
4
|
+
|
5
|
+
module Skylark
|
6
|
+
|
7
|
+
class YAMLConfiguration < Configuration
|
8
|
+
|
9
|
+
attr_reader :filename
|
10
|
+
|
11
|
+
def initialize(filename)
|
12
|
+
super
|
13
|
+
|
14
|
+
@filename = filename
|
15
|
+
end
|
16
|
+
|
17
|
+
def read!
|
18
|
+
self.merge!(parse_yaml(read_file(@filename)))
|
19
|
+
end
|
20
|
+
|
21
|
+
protected
|
22
|
+
|
23
|
+
def read_file(filename)
|
24
|
+
open(filename, 'rb') do |io|
|
25
|
+
io.read
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def parse_yaml(data)
|
30
|
+
YAML.load(data)
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
data/skylark.gemspec
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
LIB_DIRECTORY = File.join(File.dirname(__FILE__), 'lib')
|
2
|
+
$LOAD_PATH.unshift(File.expand_path(LIB_DIRECTORY)) unless $LOAD_PATH.map do |directory|
|
3
|
+
File.expand_path(directory)
|
4
|
+
end.include?(LIB_DIRECTORY)
|
5
|
+
|
6
|
+
require 'skylark/version'
|
7
|
+
|
8
|
+
Gem::Specification.new do |s|
|
9
|
+
|
10
|
+
s.name = %q[skylark]
|
11
|
+
s.version = Skylark::VERSION.to_s :gemspec
|
12
|
+
|
13
|
+
$stderr.puts "Building #{s.name} #{s.version}..."
|
14
|
+
|
15
|
+
s.authors = ['Kristofer Rye']
|
16
|
+
s.email = 'kristofer.rye+skylark@gmail.com'
|
17
|
+
s.homepage = 'https://github.com/rye/skylark' # TODO gh-pages
|
18
|
+
|
19
|
+
s.summary = 'A CLI-based LDAP scraper whose intended purpose is to dump an entire LDAP search into a bunch of JSON files.'
|
20
|
+
|
21
|
+
s.files = []
|
22
|
+
s.files << '.gitignore'
|
23
|
+
s.files << '.rspec'
|
24
|
+
s.files << 'bin/skylark'
|
25
|
+
s.files << Dir.glob('lib/**/*.rb')
|
26
|
+
s.files << Dir.glob('spec/**/*.rb')
|
27
|
+
s.files << 'skylark.gemspec'
|
28
|
+
s.files << 'CONTRIBUTING.md'
|
29
|
+
s.files << 'LICENSE.md'
|
30
|
+
s.files << 'README.md'
|
31
|
+
|
32
|
+
s.licenses = ['MIT']
|
33
|
+
|
34
|
+
s.platform = Gem::Platform::RUBY
|
35
|
+
s.required_ruby_version = ['>= 2.3.3', '<= 2.5']
|
36
|
+
|
37
|
+
s.add_dependency 'net-ldap', '~> 0.16'
|
38
|
+
|
39
|
+
s.add_development_dependency 'rake', '~> 12'
|
40
|
+
s.add_development_dependency 'rspec', '~> 3.6'
|
41
|
+
|
42
|
+
s.add_development_dependency 'codeclimate', '~> 0.65'
|
43
|
+
s.add_development_dependency 'codeclimate-test-reporter', '~> 1.0'
|
44
|
+
|
45
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,21 +1,109 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: skylark
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.0.alpha.
|
4
|
+
version: 0.0.0.alpha.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kristofer Rye
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07-
|
12
|
-
dependencies:
|
11
|
+
date: 2017-07-06 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: net-ldap
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.16'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.16'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '12'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '12'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.6'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.6'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: codeclimate
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.65'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.65'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: codeclimate-test-reporter
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.0'
|
13
83
|
description:
|
14
84
|
email: kristofer.rye+skylark@gmail.com
|
15
85
|
executables: []
|
16
86
|
extensions: []
|
17
87
|
extra_rdoc_files: []
|
18
|
-
files:
|
88
|
+
files:
|
89
|
+
- ".gitignore"
|
90
|
+
- ".rspec"
|
91
|
+
- CONTRIBUTING.md
|
92
|
+
- LICENSE.md
|
93
|
+
- README.md
|
94
|
+
- bin/skylark
|
95
|
+
- lib/skylark.rb
|
96
|
+
- lib/skylark/argument_configuration.rb
|
97
|
+
- lib/skylark/cli.rb
|
98
|
+
- lib/skylark/configuration.rb
|
99
|
+
- lib/skylark/ldap.rb
|
100
|
+
- lib/skylark/ldap/adapter.rb
|
101
|
+
- lib/skylark/ldap/dn.rb
|
102
|
+
- lib/skylark/version.rb
|
103
|
+
- lib/skylark/yaml_configuration.rb
|
104
|
+
- skylark.gemspec
|
105
|
+
- spec/lib/skylark_spec.rb
|
106
|
+
- spec/spec_helper.rb
|
19
107
|
homepage: https://github.com/rye/skylark
|
20
108
|
licenses:
|
21
109
|
- MIT
|
@@ -28,7 +116,10 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
28
116
|
requirements:
|
29
117
|
- - ">="
|
30
118
|
- !ruby/object:Gem::Version
|
31
|
-
version:
|
119
|
+
version: 2.3.3
|
120
|
+
- - "<="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '2.5'
|
32
123
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
33
124
|
requirements:
|
34
125
|
- - ">"
|
@@ -36,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
36
127
|
version: 1.3.1
|
37
128
|
requirements: []
|
38
129
|
rubyforge_project:
|
39
|
-
rubygems_version: 2.
|
130
|
+
rubygems_version: 2.4.5
|
40
131
|
signing_key:
|
41
132
|
specification_version: 4
|
42
133
|
summary: A CLI-based LDAP scraper whose intended purpose is to dump an entire LDAP
|