navi_client 1.2.3 → 1.2.4

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
- 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: []