ats 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a1072c017d8e77937188e39e7f019b5176505e1b27041f53672d60e1c339745f
4
- data.tar.gz: f0e796f9ae6feedd3e79ea67bc0a11bdecd68a8a59429d881a1eafc7f5aec21c
3
+ metadata.gz: 226e424b41b47a9bed3a8e3e02daa4c8e6747d44cd9c3c0d25e9bbf0f7b977d3
4
+ data.tar.gz: d67d968d01a44e95a75d1c2541a29319c19d1d7b2d1b05c924c03479ec533c9c
5
5
  SHA512:
6
- metadata.gz: d70bac3a644e5546a20ca47466c97749ea0947a787908de7aca141c71bb47c809d9c2741e1e225d056b1bb44574f3f9909028b68c3f7a479319cb457a2054a23
7
- data.tar.gz: e274f5b2e9d4c7d7d37ad42265a9ae7f7f3c8f00b9cd4dba09556527c7fd246d0d6324c321979d3e0c9b43734e431cce4b0a07c2db2001596469960b21c969a9
6
+ metadata.gz: 6e8e7e9a31b025f787681b847fc1d41f08c634ba579facd07d3dd9e468dcaac90a5c0337a7afff9ebadfa7ede6f4d086177ea20400a9879aeb668835c023c840
7
+ data.tar.gz: 57eababf9c32f5749f6d43a237f7e04ecc3a235e442700449cb36aed4cfea50b4c7764aa1120d4f053fa6658fcdbe804b2858ac23fe111fe834a43e16c8d71bc
data/lib/ats.rb CHANGED
@@ -27,6 +27,7 @@ module ATS
27
27
 
28
28
  def configure
29
29
  yield configuration
30
+ configuration
30
31
  end
31
32
 
32
33
  def configuration
@@ -7,16 +7,16 @@ module ATS
7
7
  'User-Agent' => "RubyGems/ATS #{ATS::VERSION}",
8
8
  }.freeze
9
9
 
10
- attr_reader :http, :profile, :configuration
10
+ attr_reader :http, :port, :host, :scheme, :client_id, :client_secret
11
11
 
12
- def initialize(
13
- api: HttpAPI.new(headers: HEADERS),
14
- profile: :default,
15
- configuration: ATS.configuration
16
- )
17
- @http = api
18
- @profile = profile.to_sym
12
+ def initialize(configuration:, debug: false)
13
+ @http = HttpAPI.new(headers: HEADERS, debug: debug)
19
14
  @configuration = configuration
15
+ @port = configuration[:port]
16
+ @scheme = configuration[:scheme]
17
+ @host = configuration[:host]
18
+ @client_id = configuration[:client_id]
19
+ @client_secret = configuration[:client_secret]
20
20
  end
21
21
 
22
22
  def computers
@@ -47,26 +47,6 @@ module ATS
47
47
  URI::Generic.build(host: host, port: port, scheme: scheme, path: "/v#{version}/#{relative_url}")
48
48
  end
49
49
 
50
- def client_id
51
- configuration[profile][:amp4e][:client_id]
52
- end
53
-
54
- def client_secret
55
- configuration[profile][:amp4e][:client_secret]
56
- end
57
-
58
- def host
59
- configuration[profile][:amp4e][:host]
60
- end
61
-
62
- def scheme
63
- configuration[profile][:amp4e][:scheme]
64
- end
65
-
66
- def port
67
- configuration[profile][:amp4e][:port]
68
- end
69
-
70
50
  def headers
71
51
  { AUTHORIZATION: "Basic #{Base64.strict_encode64("#{client_id}:#{client_secret}")}" }
72
52
  end
@@ -1,8 +1,12 @@
1
1
  require 'ats'
2
-
3
2
  require 'thor'
4
- require 'ats/cli/threat_grid'
5
- require 'ats/cli/amp4e/command'
3
+ require 'ats/cli/command'
4
+ require 'ats/cli/threat_grid/organizations'
5
+ require 'ats/cli/threat_grid/samples'
6
+ require 'ats/cli/threat_grid/search'
7
+ require 'ats/cli/threat_grid/users'
8
+ require 'ats/cli/threat_grid/whoami'
9
+ require 'ats/cli/threat_grid/application'
6
10
  require 'ats/cli/amp4e/computers'
7
11
  require 'ats/cli/amp4e/events'
8
12
  require 'ats/cli/amp4e/groups'
@@ -28,7 +32,7 @@ module ATS
28
32
  desc 'setup', 'Initialize the .atsrc file.'
29
33
  def setup(configuration = ATS.configuration)
30
34
  say "Current Configuration:", :green
31
- say JSON.pretty_generate(configuration.configuration), :green
35
+ say JSON.pretty_generate(configuration.to_h), :green
32
36
 
33
37
  configuration.config_files.each do |file|
34
38
  if File.exist?(file)
@@ -49,7 +53,7 @@ module ATS
49
53
  port: 443,
50
54
  scheme: 'https',
51
55
  },
52
- threat_grid: {
56
+ threatgrid: {
53
57
  api_key: '',
54
58
  host: 'panacea.threatgrid.com',
55
59
  port: 443,
@@ -0,0 +1,46 @@
1
+ module ATS
2
+ module CLI
3
+ class Command < Thor
4
+ class_option :profile, default: :default, required: false
5
+ class_option :debug, default: false, required: false
6
+
7
+ def self.printable_commands(*args)
8
+ super.map do |x|
9
+ x[0] = x[0].gsub(/^ats/, "ats #{service_name.downcase}")
10
+ x
11
+ end
12
+ end
13
+
14
+ protected
15
+
16
+ def api
17
+ self.class.constant_name.new(
18
+ configuration: configuration.fetch(profile)[self.class.service_name.downcase.to_sym],
19
+ debug: configuration.debug,
20
+ )
21
+ end
22
+
23
+ def print_json(json)
24
+ say JSON.pretty_generate(json), :green
25
+ end
26
+
27
+ def configuration
28
+ ATS.configure do |x|
29
+ x.debug = options['debug']
30
+ end
31
+ end
32
+
33
+ def profile
34
+ options['profile'].to_sym
35
+ end
36
+
37
+ def self.constant_name
38
+ Kernel.const_get("ATS::#{service_name}::API")
39
+ end
40
+
41
+ def self.service_name
42
+ name.split("::")[2]
43
+ end
44
+ end
45
+ end
46
+ end
@@ -1,26 +1,35 @@
1
1
  module ATS
2
2
  class Configuration
3
- attr_accessor :logger, :config_files, :configuration
3
+ attr_accessor :logger, :config_files, :debug
4
4
 
5
5
  def initialize
6
6
  @logger = Logger.new(STDOUT)
7
7
  @logger.level = Logger::DEBUG
8
+ @debug = false
8
9
  @config_files = [
9
10
  File.join(Dir.home, ".atsrc"),
10
11
  File.expand_path('.atsrc'),
11
12
  ENV['ATSRC']
12
13
  ].compact
14
+ end
15
+
16
+ def fetch(key)
17
+ hash.fetch(key.to_sym)
18
+ end
13
19
 
14
- @configuration = load_configuration
20
+ def to_h
21
+ hash.dup
15
22
  end
16
23
 
17
- def [](key)
18
- @configuration[key.to_sym]
24
+ private
25
+
26
+ def hash
27
+ @hash ||= load_configuration
19
28
  end
20
29
 
21
30
  def load_configuration(files = config_files)
22
31
  files.inject({}) do |memo, file|
23
- logger.debug("Loading... #{file}")
32
+ logger.debug("Searching for #{file}...") if debug
24
33
  memo.merge!(YAML.load(IO.read(file))) if File.exist?(file)
25
34
  memo
26
35
  end
@@ -1,7 +1,8 @@
1
1
  module ATS
2
2
  class HttpAPI
3
- def initialize(headers: {})
3
+ def initialize(headers: {}, debug: false)
4
4
  @default_headers = headers
5
+ @debug = debug
5
6
  end
6
7
 
7
8
  def execute(uri, request)
@@ -44,7 +45,7 @@ module ATS
44
45
  http = Net::HTTP.new(uri.host, uri.port)
45
46
  http.read_timeout = 30
46
47
  http.use_ssl = uri.scheme == "https"
47
- http.set_debug_output(ATS.logger)
48
+ http.set_debug_output(ATS.logger) if @debug
48
49
  http
49
50
  end
50
51
 
@@ -1,5 +1,3 @@
1
- require 'ats/http_api'
2
-
3
1
  module ATS
4
2
  module ThreatGrid
5
3
  class API
@@ -8,16 +6,15 @@ module ATS
8
6
  'User-Agent' => "RubyGems/ATS #{ATS::VERSION}",
9
7
  }.freeze
10
8
 
11
- attr_reader :http, :profile, :configuration
9
+ attr_reader :http, :port, :host, :scheme, :api_key
12
10
 
13
- def initialize(
14
- api: HttpAPI.new(headers: HEADERS),
15
- profile: :default,
16
- configuration: ATS.configuration
17
- )
18
- @http = api
19
- @profile = profile.to_sym
11
+ def initialize(configuration:, debug: false)
12
+ @http = HttpAPI.new(headers: HEADERS, debug: debug)
20
13
  @configuration = configuration
14
+ @port = configuration[:port]
15
+ @scheme = configuration[:scheme]
16
+ @host = configuration[:host]
17
+ @api_key = configuration[:api_key]
21
18
  end
22
19
 
23
20
  def whoami
@@ -55,22 +52,6 @@ module ATS
55
52
  def build_uri(relative_url, version:)
56
53
  URI::Generic.build(host: host, port: port, scheme: scheme, path: "/api/v#{version}/#{relative_url}")
57
54
  end
58
-
59
- def api_key
60
- configuration[profile][:threat_grid][:api_key]
61
- end
62
-
63
- def host
64
- configuration[profile][:threat_grid][:host]
65
- end
66
-
67
- def scheme
68
- configuration[profile][:threat_grid][:scheme]
69
- end
70
-
71
- def port
72
- configuration[profile][:threat_grid][:port]
73
- end
74
55
  end
75
56
  end
76
57
  end
@@ -1,3 +1,3 @@
1
1
  module ATS
2
- VERSION = "0.1.7"
2
+ VERSION = "0.1.8"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ats
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - mokha
@@ -88,14 +88,12 @@ files:
88
88
  - lib/ats/amp4e/policies.rb
89
89
  - lib/ats/cli.rb
90
90
  - lib/ats/cli/amp4e/application.rb
91
- - lib/ats/cli/amp4e/command.rb
92
91
  - lib/ats/cli/amp4e/computers.rb
93
92
  - lib/ats/cli/amp4e/events.rb
94
93
  - lib/ats/cli/amp4e/groups.rb
95
94
  - lib/ats/cli/amp4e/policies.rb
96
- - lib/ats/cli/threat_grid.rb
95
+ - lib/ats/cli/command.rb
97
96
  - lib/ats/cli/threat_grid/application.rb
98
- - lib/ats/cli/threat_grid/command.rb
99
97
  - lib/ats/cli/threat_grid/organizations.rb
100
98
  - lib/ats/cli/threat_grid/samples.rb
101
99
  - lib/ats/cli/threat_grid/search.rb
@@ -1,26 +0,0 @@
1
- module ATS
2
- module CLI
3
- module AMP4E
4
- class Command < Thor
5
- class_option :profile, default: :default, required: false
6
-
7
- def self.printable_commands(*args)
8
- super.map do |x|
9
- x[0] = x[0].gsub(/^ats/, 'ats amp4e')
10
- x
11
- end
12
- end
13
-
14
- protected
15
-
16
- def api
17
- ATS::AMP4E::API.new(profile: options['profile'])
18
- end
19
-
20
- def print_json(json)
21
- say JSON.pretty_generate(json), :green
22
- end
23
- end
24
- end
25
- end
26
- end
@@ -1,15 +0,0 @@
1
- require 'ats/cli/threat_grid/command'
2
- require 'ats/cli/threat_grid/organizations'
3
- require 'ats/cli/threat_grid/samples'
4
- require 'ats/cli/threat_grid/search'
5
- require 'ats/cli/threat_grid/users'
6
- require 'ats/cli/threat_grid/whoami'
7
-
8
- require 'ats/cli/threat_grid/application'
9
-
10
- module ATS
11
- module CLI
12
- module ThreatGrid
13
- end
14
- end
15
- end
@@ -1,26 +0,0 @@
1
- module ATS
2
- module CLI
3
- module ThreatGrid
4
- class Command < Thor
5
- class_option :profile, default: :default, required: false
6
-
7
- def self.printable_commands(*args)
8
- super.map do |x|
9
- x[0] = x[0].gsub(/^ats/, 'ats threatgrid')
10
- x
11
- end
12
- end
13
-
14
- protected
15
-
16
- def api
17
- ATS::ThreatGrid::API.new(profile: options['profile'])
18
- end
19
-
20
- def print_json(json)
21
- say JSON.pretty_generate(json), :green
22
- end
23
- end
24
- end
25
- end
26
- end