sym 2.7.0 → 2.8.0

Sign up to get free protection for your applications and to get access to all the features.
Binary file
Binary file
Binary file
Binary file
data/exe/sym CHANGED
@@ -8,11 +8,12 @@ require 'sym/app'
8
8
 
9
9
  #ARGV.any?{ |a| a =~ /^-/ } ?
10
10
  begin
11
- ::Sym::App::CLI.new(ARGV.dup).execute
11
+ exit ::Sym::App::CLI.new(ARGV.dup).execute
12
12
  rescue Interrupt => e
13
13
  STDERR.flush
14
14
  STDERR.puts "Interrupt, #{e.message}, exiting."
15
15
  STDERR.flush
16
+ exit 1
16
17
  end
17
18
 
18
19
 
@@ -52,11 +52,11 @@ module Sym
52
52
  reason = exception.message if exception
53
53
 
54
54
  if exception && (config && config[:trace] || reason == 'Unknown Error')
55
- lines << "#{error_type.red.on.white.bold}:\n#{error_details.white.on.red}\n" + ''.normal
55
+ lines << "#{error_type.bold.red}:\n#{error_details.red.italic}\n" + ''.normal
56
56
  lines << exception.backtrace.join("\n").red.bold if config[:trace]
57
57
  lines << "\n"
58
58
  else
59
- lines << "| SYM Error #{operation} → |".white.on.red + (reason ? " #{reason} ".bold.black.on.white : " #{error_details}")[0..70] + ' '.normal + "\n"
59
+ lines << " Sym Error #{operation}:".bold.red + (reason ? " #{reason} ".red.italic: " #{error_details}")[0..70] + ' '.normal + "\n"
60
60
  lines << "#{comments}" if comments
61
61
  end
62
62
 
@@ -87,7 +87,7 @@ module Sym
87
87
  rescue StandardError => e
88
88
  log :error, "#{e.message}" if opts
89
89
  error exception: e
90
- return
90
+ exit 127 if stdin == STDIN
91
91
  end
92
92
 
93
93
  self.application = ::Sym::Application.new(opts, stdin, stdout, stderr, kernel)
@@ -7,26 +7,40 @@ module Sym
7
7
  required_options [:bash_support]
8
8
  try_after :generate_key, :open_editor, :encrypt, :decrypt
9
9
 
10
+ def ok
11
+ '[OK]'.bold.green
12
+ end
13
+
10
14
  def execute
11
15
  file = opts[:bash_support]
12
16
 
13
17
  out = ''
14
18
  Sym::Constants::Bash::Config.each_pair do |key, config|
15
19
  script_name = key.to_s
16
- FileUtils.cp(config[:source], config[:dest])
20
+ if (!File.exist?(config[:dest])) ||
21
+ (File.exist?(config[:dest]) && !FileUtils.identical?(config[:source], config[:dest]))
22
+ FileUtils.cp(config[:source], config[:dest])
23
+ out << "#{} installing #{config[:dest].bold.blue }...\n"
24
+ else
25
+ out << "#{ok} file #{config[:dest].bold.blue } exists, and is up to date.\n"
26
+ end
27
+
17
28
  out << if File.exist?(file)
18
29
  if File.read(file).include?(config[:script])
19
- "#{'OK'.bold.green}, #{file.bold.yellow} already has #{script_name.bold.blue} installed\n"
30
+ "#{ok} BASH script #{file.bold.yellow} already sources #{script_name.bold.blue}.\n"
20
31
  else
21
32
  append_completion_script(file, config[:script])
22
- "#{'OK'.bold.green}, appended initialization for #{script_name.bold.blue} to #{file.bold.yellow}\n"
33
+ "#{ok} BASH script #{script_name.bold.blue} is now sourced from #{file.bold.yellow}\n"
23
34
  end
24
35
  else
25
36
  append_completion_script(file, config[:script])
26
- "#{'OK'.bold.green}, created new file #{file.bold.yellow}, added #{script_name.bold.blue} initialization.\n"
37
+ "#{ok}, created new file #{file.bold.yellow}, added #{script_name.bold.blue} initialization.\n"
27
38
  end
28
39
  end
29
- out + "Please reload your terminal session to activate bash completion and other installed utilities.\n"
40
+ out << "\nPlease reload your terminal session to activate bash completion\n"
41
+ out << "and other installed BASH utilities.\n"
42
+ out << "\nAlternatively, just type #{"source #{file}".bold.green} to reload BASH.\n"
43
+ out << "Also — go ahead and try running #{"sym -h".bold.blue} and #{"symit -h".bold.blue}.\n"
30
44
  end
31
45
 
32
46
  private
@@ -1,5 +1,5 @@
1
1
  module Sym
2
- VERSION = '2.7.0'
2
+ VERSION = '2.8.0'
3
3
  DESCRIPTION = <<-eof
4
4
  Sym is a ruby library (gem) that offers both the command line interface (CLI) and a set of rich Ruby APIs, which make it rather trivial to add encryption and decryption of sensitive data to your development or deployment flow. As a layer of additional security, you can encrypt the private key itself with a password. Unlike many other existing encryption tools, Sym focuses on getting out of the way — by offering its streamlined interface, hoping to make encryption of application secrets nearly completely transparent to the developers. For the data encryption Sym uses a symmetric 256-bit key with the AES-256-CBC cipher, same cipher as used by the US Government. For password-protecting the key Sym uses AES-128-CBC cipher. The resulting data is zlib-compressed and base64-encoded. The keys are also base64 encoded for easy copying/pasting/etc.
5
5
 
@@ -30,17 +30,18 @@ http://kig.re/2017/03/10/dead-simple-encryption-with-sym.html
30
30
 
31
31
  BASH COMPLETION
32
32
  ===============
33
- To enable bash command line completion, please run the following
34
- command, which appends sym's shell completion wrapper to the file
35
- specified in arguments to -B/--bash-support flag.
33
+ To enable bash command line completion and install highly useful
34
+ command line BASH wrapper 'symit', please run the following
35
+ command after installing the gem. It appends sym's shell completion
36
+ wrapper to the file specified in arguments to -B flag.
36
37
 
37
38
  sym -B ~/.bash_profile
38
39
  source ~/.bash_profile
40
+ # then:
41
+ sym --help
42
+ symit --help
39
43
 
40
- Thank you for using Sym and happy crypting :)
41
-
42
- For bonus points, run 'symit -h' after installing and loading bash
43
- completion.
44
+ Thank you for using Sym and happy encrypting :)
44
45
 
45
46
  @kigster on Github,
46
47
  @kig on Twitter.
@@ -57,7 +58,7 @@ EOF
57
58
  spec.add_development_dependency 'simplecov'
58
59
  spec.add_development_dependency 'irbtools'
59
60
  spec.add_development_dependency 'aruba'
60
- spec.add_development_dependency 'bundler', '~> 1'
61
+ spec.add_development_dependency 'bundler'
61
62
  spec.add_development_dependency 'rake'
62
63
  spec.add_development_dependency 'rspec', '~> 3'
63
64
  spec.add_development_dependency 'rspec-its'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sym
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.0
4
+ version: 2.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konstantin Gredeskoul
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-06-23 00:00:00.000000000 Z
11
+ date: 2018-01-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colored2
@@ -154,16 +154,16 @@ dependencies:
154
154
  name: bundler
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - "~>"
157
+ - - ">="
158
158
  - !ruby/object:Gem::Version
159
- version: '1'
159
+ version: '0'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - "~>"
164
+ - - ">="
165
165
  - !ruby/object:Gem::Version
166
- version: '1'
166
+ version: '0'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: rake
169
169
  requirement: !ruby/object:Gem::Requirement
@@ -254,6 +254,7 @@ executables:
254
254
  extensions: []
255
255
  extra_rdoc_files: []
256
256
  files:
257
+ - ".circleci/config.yml"
257
258
  - ".codeclimate.yml"
258
259
  - ".document"
259
260
  - ".gitignore"
@@ -271,10 +272,14 @@ files:
271
272
  - bin/setup
272
273
  - bin/sym.completion
273
274
  - bin/sym.symit
275
+ - design/ascii-cinema.png
274
276
  - design/sym-class-dependency-future-refactor.png
275
277
  - design/sym-class-dependency.graffle
276
278
  - design/sym-class-dependency.pdf
277
279
  - design/sym-class-dependency.png
280
+ - design/sym-examples.png
281
+ - design/sym-help.png
282
+ - design/sym-symit-help.png
278
283
  - exe/keychain
279
284
  - exe/sym
280
285
  - lib/sym.rb
@@ -328,18 +333,17 @@ files:
328
333
  - lib/sym/extensions/with_timeout.rb
329
334
  - lib/sym/magic_file.rb
330
335
  - lib/sym/version.rb
331
- - sym-3.0-cli.md
332
336
  - sym.gemspec
333
337
  homepage: https://github.com/kigster/sym
334
338
  licenses: []
335
339
  metadata: {}
336
340
  post_install_message: "\nThank you for installing Sym! \n\nBLOG POST\n=========\nhttp://kig.re/2017/03/10/dead-simple-encryption-with-sym.html\n\nBASH
337
- COMPLETION\n===============\nTo enable bash command line completion, please run
338
- the following \ncommand, which appends sym's shell completion wrapper to the file
339
- \nspecified in arguments to -B/--bash-support flag.\n\n sym -B ~/.bash_profile\n
340
- \ source ~/.bash_profile\n \nThank you for using Sym and happy crypting :)\n\nFor
341
- bonus points, run 'symit -h' after installing and loading bash\ncompletion.\n\n@kigster
342
- on Github, \n @kig on Twitter.\n\n"
341
+ COMPLETION\n===============\nTo enable bash command line completion and install
342
+ highly useful\ncommand line BASH wrapper 'symit', please run the following \ncommand
343
+ after installing the gem. It appends sym's shell completion \nwrapper to the file
344
+ specified in arguments to -B flag.\n\n sym -B ~/.bash_profile\n source ~/.bash_profile\n
345
+ \ # then:\n sym --help\n symit --help\n \nThank you for using Sym and happy encrypting
346
+ :)\n\n@kigster on Github, \n @kig on Twitter.\n\n"
343
347
  rdoc_options: []
344
348
  require_paths:
345
349
  - lib
@@ -355,7 +359,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
355
359
  version: '0'
356
360
  requirements: []
357
361
  rubyforge_project:
358
- rubygems_version: 2.6.11
362
+ rubygems_version: 2.6.13
359
363
  signing_key:
360
364
  specification_version: 4
361
365
  summary: Dead-simple and easy to use encryption library on top of OpenSSL, offering
@@ -1,168 +0,0 @@
1
-
2
- # Sym
3
-
4
- ## Table of Contents
5
-
6
- [TOC]
7
-
8
- __Sym__ is a versatile encryption gem, based on the symmetric encryption cipher provided by the OpenSSL. It provides easy to remember commands to manage encryption key: you can generate a key, import an existing key, password protect an open key, store the key in OS-X KeyChain, and use it for encryption/decryption later. The key is used to encrypt, decrypt and edit any sensitive information, such application secrets.
9
-
10
- ## Usage
11
-
12
- sym [ global options ] [ sub command ] [ command options ]
13
-
14
- ## Global Options
15
-
16
- ```bash
17
- -t, --password-timeout [timeout] when passwords expire (in seconds)
18
- -p, --no-password-cache disables caching of key passwords
19
- -v, --verbose show additional information
20
- -T, --trace print a backtrace of any errors
21
- -q, --quiet silence all output
22
- -V, --version print library version
23
- -N, --no-color disable color output
24
- ```
25
-
26
- ## Help & Examples:
27
-
28
- ```bash
29
- -h, --help show help
30
- -l, --long show help and detailed examples
31
- ```
32
-
33
- ## Commands
34
-
35
- ### Genereate a new key
36
- ```bash
37
- sym key [ [ --out | -o ] uri ] # or STDOUT by default
38
- # eg.
39
- > sym key -o stdout
40
- > sym key -o file://~/.key
41
- ```
42
-
43
- ### Copy or Re-Import a Key
44
-
45
- Typically applied to an existing key, optionally password-protecting it:
46
-
47
- ```bash
48
- sym key [ --in | -k ] uri
49
- [ [ --out | -o ] uri ] # or STDOUT by default
50
- [ --password | -p ]
51
- # eg.
52
- > sym key -k file://~/.key -o keychain://mykey -p
53
-
54
- > sym key -k stdin -o keychain://mykey -p
55
- Please enter the encryption key: 75ngenJpB6zL47/8Wo7Ne6JN1pnOsqNEcIqblItpfg4=
56
- Please enter new password:
57
- Please confirm the new password:
58
- ```
59
-
60
- ### Delete an existing key (assuming URI supports deletion):
61
-
62
- ```bash
63
- sym key [ --delete | -d ] uri
64
-
65
- # eg.
66
- > sym key -d keychain://mykey
67
- > sym key -d redis://127.0.0.1:6379/1/symkey
68
- ```
69
-
70
- ### Encrypt or Decrypt a Resource
71
-
72
- ```bash
73
- sym decrypt [ --key | -k ] uri
74
- [ --data | -d ] uri
75
- [ [ --out | -o ] uri ]
76
-
77
- sym encrypt [ --key | -k ] uri
78
- [ --data | -d ] uri
79
- [ [ --out | -o ] uri ]
80
- ```
81
-
82
- ### Open Encrypted Resource in an Editor
83
-
84
- ```bash
85
- sym edit [ --key | -k ] uri
86
- [ --data | -d ] uri
87
- [ [ --backup | -b ] data-backup-uri
88
- ```
89
- ### Re-encrypt data, and rotate the key
90
-
91
- For key and data URIs that support update operation (eg, `file://`, `keychain://`)
92
- this operation decrypts the resource with the current key, generates
93
- a new key, re-encrypts the data, and updates both the resource and the
94
- key URIs.
95
-
96
- ```bash
97
- sym cycle [ --key | -k ] uri
98
- [ --data | -d ] uri
99
- [ [ --out | -o ] uri ]
100
- # eg:
101
- sym cycle -k file://~/.key -d file://./secrets.yml
102
- ```
103
-
104
- ### Installation, Help, and Other Commands
105
-
106
- ```bash
107
- sym install bash-completion
108
-
109
- sym --help | -h
110
-
111
- sym command --help | -h
112
-
113
- sym examples
114
- ```
115
-
116
- ### Arguments via Environment
117
-
118
- Common arguments can be passed in an environment variable called `SYM_ARGS`:
119
-
120
- export SYM_ARGS='-k file://~/.sym.key'
121
-
122
- The name of the variable can be read from the `-B <name>` argument, eg:
123
-
124
- SYM_ARGUMENTS='-k 75ngenJpB6zL47/8Wo7Ne6JN1pnOsqNEcIqblItpfg4'
125
- sym -B SYM_ARGUMENS -d file://file.enc
126
-
127
- ### Reading and Writing Data and Keys
128
-
129
- The new CLI for Sym uses a consistent naming for reading in the data and the key, and for writing out the key and/or data. The scheme is based on URI.
130
-
131
- Each URI type is supported by a corresponding plugin, and new ones can be easily defined.
132
-
133
- Some examples:
134
-
135
- ```bash
136
- string://234234234 # read from the literal data
137
- env://MY_VARIABLE # read from environment variable
138
-
139
- file://home/kig/.mykey # read/write from/to file
140
- stdio:// # read/write using stdin/out
141
-
142
- # Real URLs could potentially support writes with PUT or POST
143
- https://mysite.com/remote/secrets.json.enc
144
-
145
- # Files support read/write
146
- file:///usr/local/etc/secrets.json
147
- ```
148
-
149
- Below is the list of supported types planned for 3.0:
150
-
151
- #### Supported Types
152
-
153
- ```bash
154
- URI: Read? Write? Delete?
155
-
156
- string://value yes
157
- env://variable yes
158
- stdio:// yes
159
- shell://command yes yes yes
160
- file://filename yes yes yes
161
- keychain://name yes yes yes
162
- redis://127.0.0.1:6397/1/mykey yes yes yes
163
- memcached://127.0.0.1:11211/mykey yes yes yes
164
- scp://user@host/path/file yes yes yes
165
- http[s]://user@host/path/file yes yes yes
166
- ftp[s]://user@host/path/file yes yes yes
167
-
168
- ```