navi_client 1.2.3 → 1.2.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 8ad1b2f71e2ce6666a1b6798c7ea5bc6b1034e18
4
- data.tar.gz: cfc612247a9b42e83e4de845473d4898f03fb904
2
+ SHA256:
3
+ metadata.gz: 3116d34f98600e972aa8a6ab86ef58356b0648ff0fe4a9b88e38f055f46056e0
4
+ data.tar.gz: 98932290774c44e338428536cf5e339e114e0d8422ff90ef7335bdf7ba0a359f
5
5
  SHA512:
6
- metadata.gz: b42b354676ff099692d86746858892457fc64aa902d6690edcf64673f3d76d9b3f2a9da18b15dbab5a27978db55d18127f86d54208cc6644ddac25200eba7e01
7
- data.tar.gz: eb90a4f3c202333059fa7062a9b18ad6f24cf71498d9410970a983e9b91540ff22658cf7e7d3994715e72a0f230f0d156a80e24ab0742780a1ac88d6fd570c4f
6
+ metadata.gz: bb9bd09aa8e872670e369b89644469608587e735b1fac13318592e6915450149c5865d9c8ca51f69af753d33840257d62c826294303b439ede29199ac6071b62
7
+ data.tar.gz: d0a2478694fda87c9e4db31e7cda0f27c8b3995dd101caee333bf58e0a20deb18e66b2e5e85b94c7135944b966279ca48ff6073385d54f13539c3952ec3e461d
data/lib/client.rb CHANGED
@@ -10,6 +10,7 @@ require "logger"
10
10
 
11
11
  require "httparty"
12
12
  require "http_service/naviai"
13
+ require 'openssl'
13
14
 
14
15
  module Client
15
16
  def logger
@@ -115,7 +116,31 @@ module Client
115
116
  end
116
117
 
117
118
  def encrypt(data)
118
- Base64.encode64(data)
119
+ cipher = OpenSSL::Cipher::AES.new(256, :CFB)
120
+ cipher.encrypt
121
+
122
+ yml_config = config
123
+
124
+ key_iv_exists = (yml_config['key'] && yml_config['iv']) ? (!yml_config['key'].empty? && !yml_config['iv'].empty? ) : false
125
+
126
+ if key_iv_exists
127
+ # this condition must be true for cloud version
128
+ cipher.key = Base64.decode64(File.read(yml_config['key']))
129
+ cipher.iv = Base64.decode64(File.read(yml_config['iv']))
130
+ else
131
+ cipher.key = key = cipher.random_key
132
+ cipher.iv = iv = cipher.random_iv
133
+
134
+ key_path, iv_path = save_aes_key_iv(key, iv)
135
+
136
+ yml_config['key'] = key_path
137
+ yml_config['iv'] = iv_path
138
+
139
+ update_config(yml_config)
140
+ end
141
+
142
+ encrypted = cipher.update(data)
143
+ Base64.encode64(encrypted)
119
144
  end
120
145
 
121
146
  def time_now
@@ -22,6 +22,9 @@ module NaviClient
22
22
 
23
23
  # client_type
24
24
  @client_type = "cloud"
25
+
26
+ # set email_address of current_user for s3 folder name
27
+ @current_user_email = nil
25
28
  end
26
29
 
27
30
  def override_logger(logger)
@@ -37,9 +40,13 @@ module NaviClient
37
40
  @token = session_token
38
41
  end
39
42
 
43
+ def set_current_user_email(email)
44
+ @current_user_email = email
45
+ end
46
+
40
47
  def send_request(in_filenames = [])
41
48
  unless in_filenames.blank?
42
- download_path = config['s3_download_folder']
49
+ download_path = config['s3_download_folder'] + "/" + @current_user_email
43
50
  filepath = download_path + "/inputs/" + (Time.now.to_f * 1000).to_s
44
51
  filename = upload_to_s3(filepath, in_filenames.join("\n"))
45
52
 
@@ -48,7 +55,7 @@ module NaviClient
48
55
  end
49
56
 
50
57
  def download(message, custom_uid)
51
- download_path = config[:s3_download_folder]
58
+ download_path = config[:s3_download_folder] + "/" + @current_user_email
52
59
  if ['text/plain', 'text/html'].include? message.mime_type
53
60
 
54
61
  h = Hash.new
@@ -63,7 +70,7 @@ module NaviClient
63
70
  end
64
71
 
65
72
  def save(data={}, filename)
66
- download_path = config[:s3_download_folder]
73
+ download_path = config[:s3_download_folder] + "/" + @current_user_email
67
74
  filepath = download_path + "/" + filename + ".yml"
68
75
 
69
76
  return upload_to_s3(filepath, data.to_yaml)
@@ -3,6 +3,8 @@ require_relative '../client'
3
3
  module NaviClient
4
4
  class Local
5
5
  include Client
6
+ CONFIG_PATH = File.join(ENV['HOME'], '/.navi/config.yml')
7
+
6
8
  def initialize(sso_web_url = 'http://localhost:3008')
7
9
  # flag to print Ruby library debug info (very detailed)
8
10
  @net_imap_debug = false
@@ -147,7 +149,20 @@ module NaviClient
147
149
  end
148
150
 
149
151
  def config
150
- YAML.load_file(ENV['HOME'] + '/.navi/config.yml')
152
+ YAML.load_file(CONFIG_PATH)
153
+ end
154
+
155
+ def save_aes_key_iv(key, iv)
156
+ aes_key_path = File.join(ENV['HOME'] + '/.navi/.aes.key')
157
+ iv_path = File.join(ENV['HOME'] + '/.navi/.aes.iv')
158
+
159
+ File.open(aes_key_path, "w") { |f| f.write(Base64.encode64(key)) }
160
+ File.open(iv_path, "w") { |f| f.write(Base64.encode64(iv)) }
161
+ return aes_key_path, iv_path
162
+ end
163
+
164
+ def update_config(data)
165
+ File.write(CONFIG_PATH, YAML.dump(data))
151
166
  end
152
167
  end
153
168
  end
@@ -1,3 +1,3 @@
1
1
  module NaviClient
2
- VERSION = "1.2.3"
2
+ VERSION = "1.2.4"
3
3
  end
data/navi_client.gemspec CHANGED
@@ -6,8 +6,8 @@ require 'navi_client/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "navi_client"
8
8
  spec.version = NaviClient::VERSION
9
- spec.authors = ["Surya"]
10
- spec.email = ["surya@whitehatengineering.com"]
9
+ spec.authors = ["Surya", "Saroj"]
10
+ spec.email = ["surya@whitehatengineering.com", "saroj@whitehatengineering.com"]
11
11
 
12
12
  spec.summary = %q{ Write a short summary, because Rubygems requires one.}
13
13
  spec.description = %q{ Write a longer description or delete this line.}
metadata CHANGED
@@ -1,80 +1,81 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: navi_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3
4
+ version: 1.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Surya
8
- autorequire:
8
+ - Saroj
9
+ autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2018-01-03 00:00:00.000000000 Z
12
+ date: 2018-01-23 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
- name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.11'
20
- type: :development
20
+ name: bundler
21
21
  prerelease: false
22
+ type: :development
22
23
  version_requirements: !ruby/object:Gem::Requirement
23
24
  requirements:
24
25
  - - "~>"
25
26
  - !ruby/object:Gem::Version
26
27
  version: '1.11'
27
28
  - !ruby/object:Gem::Dependency
28
- name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.0'
34
- type: :development
34
+ name: rake
35
35
  prerelease: false
36
+ type: :development
36
37
  version_requirements: !ruby/object:Gem::Requirement
37
38
  requirements:
38
39
  - - "~>"
39
40
  - !ruby/object:Gem::Version
40
41
  version: '10.0'
41
42
  - !ruby/object:Gem::Dependency
42
- name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '3.0'
48
- type: :development
48
+ name: rspec
49
49
  prerelease: false
50
+ type: :development
50
51
  version_requirements: !ruby/object:Gem::Requirement
51
52
  requirements:
52
53
  - - "~>"
53
54
  - !ruby/object:Gem::Version
54
55
  version: '3.0'
55
56
  - !ruby/object:Gem::Dependency
56
- name: httparty
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
- type: :runtime
62
+ name: httparty
63
63
  prerelease: false
64
+ type: :runtime
64
65
  version_requirements: !ruby/object:Gem::Requirement
65
66
  requirements:
66
67
  - - ">="
67
68
  - !ruby/object:Gem::Version
68
69
  version: '0'
69
70
  - !ruby/object:Gem::Dependency
70
- name: mail
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
- type: :runtime
76
+ name: mail
77
77
  prerelease: false
78
+ type: :runtime
78
79
  version_requirements: !ruby/object:Gem::Requirement
79
80
  requirements:
80
81
  - - ">="
@@ -83,6 +84,7 @@ dependencies:
83
84
  description: " Write a longer description or delete this line."
84
85
  email:
85
86
  - surya@whitehatengineering.com
87
+ - saroj@whitehatengineering.com
86
88
  executables: []
87
89
  extensions: []
88
90
  extra_rdoc_files: []
@@ -109,7 +111,7 @@ homepage: http://navihq.com
109
111
  licenses:
110
112
  - MIT
111
113
  metadata: {}
112
- post_install_message:
114
+ post_install_message:
113
115
  rdoc_options: []
114
116
  require_paths:
115
117
  - lib
@@ -124,9 +126,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
124
126
  - !ruby/object:Gem::Version
125
127
  version: '0'
126
128
  requirements: []
127
- rubyforge_project:
128
- rubygems_version: 2.6.12
129
- signing_key:
129
+ rubyforge_project:
130
+ rubygems_version: 2.6.11
131
+ signing_key:
130
132
  specification_version: 4
131
133
  summary: Write a short summary, because Rubygems requires one.
132
134
  test_files: []