storedsafe 0.0.1 → 0.0.2

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: ed587808626883a211cda1842c737f3ca31354e99ab76b3fb173ee202a4b0090
4
- data.tar.gz: c7ffc7a27d41c6a0cf3833ce3d4630745a6390f817a3b328ea7660b4429836a7
3
+ metadata.gz: 3284ce4b299b3a111699580ab7a144ece6586017688a190277f19db54750eab1
4
+ data.tar.gz: 7712584e6f771e1825166aca610b349bc0067a9f3ea8d1742f9802a5362d41e6
5
5
  SHA512:
6
- metadata.gz: 835ba721f4fdfe1692fdeb5c8f42d50c4cdf60edeb5c30254c1d4f664b566bea5338081278dc9ab3587c8fb62aac648b097bbdec003e78c5a51b6f960ac2fe0d
7
- data.tar.gz: b81917058e9c348d0c7f75cc35711354510b7cc8c9dafc606836a8a00926f8e427a8d397c3b5b63b365dfbdf9699db1f681a44e1d425849fb4d77d450e282710
6
+ metadata.gz: 7d0ab608ef2f79adef486a5f3ed67828fe4327e43cccc4734649c4c1384e4cc7b8c48cf96e799b4bd1ad36ba2f6ff85ddd5310b76620e3a2c5d685447a26da80
7
+ data.tar.gz: 130f06c1fb087a0d2a29e7e276a6f449ee45eef9a1f29813fc32ae1499de2920728bcfd6733cf122427bd488a8e6b7580841846e1d33d8056f9621f29001f1d8
data/README.md CHANGED
@@ -1,3 +1,99 @@
1
1
  # Storedsafe API ruby wrapper
2
2
 
3
- This is a ruby wrapper for the Storedsafe REST-like API.
3
+ This is a ruby wrapper for the Storedsafe REST-like API (See full [docs here](https://tracker.storedsafe.com/projects/storedsafe20/wiki/Version_10_release_documentation)).
4
+
5
+ **This early version may contain errors and is subject to change and should be used with caution**
6
+
7
+ ## Install
8
+
9
+ Install from rubygems `gem install storedsafe`
10
+
11
+ Add to Gemfile `gem 'storedsafe', '~> 0.0.1'`
12
+
13
+ ## Usage
14
+ To pass a manual configuration, you simply pass a block to *Storedsafe.configure*.
15
+ ```
16
+ api = Storedsafe.configure do |config|
17
+ config.server = 'storedsafe.example.com'
18
+ config.api_token = 'abc123'
19
+ config.token = 'secret'
20
+ config.username = 'bob'
21
+ end
22
+ ```
23
+
24
+ If you only want to use the built-in defaults you can skip the block.
25
+ ```
26
+ api = Storedsafe.configure
27
+ ```
28
+
29
+ See [Configuration](#configuration) for more info about default values and external configuration sources.
30
+
31
+ All methods of the `Storedsafe::API` object returns the data parsed by whichever parser is listed in your config's *parser* field. By default the `Storedsafe::Parser::RawParser` is used, which simply turns the returned JSON data into a Ruby hash.
32
+
33
+ ### Authentication
34
+ If you already have a token from another source, you can enter it in the config and skip this section.
35
+
36
+ Three forms of authentication are currently availble. Either by the default *TOTP* (`Storedsafe::API::LogintType::TOTP`), *yubikey* (`Storedsafe::API::LoginType::YUBIKEY`) or *smartcard* (`Storedsafe::API::LoginType::SMARTCARD`).
37
+
38
+ NOTE: Make sure all other relevant fields are set on the Storedsafe::API object (username, api\_key)
39
+
40
+ Example authenticating using TOTP (sets the *token* field of the Storedsafe::API object).
41
+ ```
42
+ api.authenticate('abc123', '123456')
43
+ ```
44
+
45
+ Example authenticating using YubiKey.
46
+ ```
47
+ api.authenticate('abc123', 'abcdef123456', Storedsafe::API::LoginType::YUBIKEY)
48
+ ```
49
+
50
+ ### Vaults
51
+ * list\_vaults
52
+ * list\_objects(vault\_id)
53
+ * create\_vault(groupname, policy, description)
54
+ * edit\_vault(vault\_id, { groupname, policy, description })
55
+ * delete\_vault(vault\_id)
56
+
57
+ ### Templates
58
+ * list\_templates
59
+ * retrieve\_template(template\_id)
60
+
61
+ ### Objects
62
+ * object(object\_id, decrypt=false)
63
+ * create\_object(template\_id, group\_id, parent\_id, object\_name, template\_args)
64
+ * edit\_object(object\_id, template\_id, group\_id, parent\_id, object\_name, template\_args)
65
+ * delete\_object(object\_id)
66
+ * find\_object(needle)
67
+
68
+ ## Configuration
69
+ Configuration can be done in a few different ways. Other than the manual configuration, external configuration sources can be applied through the *config\_sources* array. This array contains Ruby Hashes with the fields that should be applied to the `Storedsafe::Config::Configurable` instance. By default fetch configurations through the `Storedsafe::Config::RcReader` and `Storedsafe::Config::EnvReader`.
70
+
71
+ The order of priority between these different configuration sources are:
72
+ 1. Manual Configuration
73
+ 2. Built-in defaults
74
+ 3. Elements in the config\_sources array in order of appearance
75
+
76
+ The **RcReader** will extract a configuration hash from a file (default is ~/.storedsafe-client.rc) which is generated by the [Storedsafe Tokenhandler](https://github.com/storedsafe/tokenhandler).
77
+
78
+ The **EnvReader** will extract a configuration hash from environment variables. By default these variables are `STOREDSAFE_SERVER`, `STOREDSAFE_TOKEN`, `STOREDSAFE_CABUNDLE` and `STOREDSAFE_SKIP_VERIFY`.
79
+
80
+ To disable all external configuration sources such as the rc-file and environment vairables, set the *config\_sources* option to an empty array.
81
+ ```
82
+ api = Storedsafe.configure do |config|
83
+ config.config_sources = []
84
+ ...
85
+ end
86
+ ```
87
+
88
+ If you want to add your own configurations, simply add them to the config\_sources array.
89
+ ```
90
+ def fetch_password(options, obj_id)
91
+ api = Storedsafe.configure do |config|
92
+ config.config_sources = [
93
+ options,
94
+ Storedsafe::Config::RcReader.parse_file('/path/to/.storedsafe-client.rc'),
95
+ ]
96
+ end
97
+ api.object(obj_id, true)
98
+ end
99
+ ```
@@ -16,8 +16,8 @@ module Storedsafe
16
16
  # Default configuration values
17
17
  DEFAULTS = {
18
18
  config_sources: [
19
- RcReader.new(File.join(Dir.home, '.storedsafe-client.rc')),
20
- EnvReader.new
19
+ RcReader.parse_file,
20
+ EnvReader.parse_env
21
21
  ],
22
22
  api_version: '1.0',
23
23
  parser: Parser::RawParser
@@ -30,8 +30,8 @@ module Storedsafe
30
30
  def self.apply(configurable)
31
31
  apply_config(configurable, DEFAULTS)
32
32
 
33
- configurable.config_sources.each do |source|
34
- apply_config(configurable, source.read)
33
+ configurable.config_sources.each do |config|
34
+ apply_config(configurable, config)
35
35
  end
36
36
  end
37
37
 
@@ -4,30 +4,25 @@ module Storedsafe
4
4
  module Config
5
5
  ##
6
6
  # Reads configuration items from environment variables.
7
- class EnvReader
8
- attr_reader :config
9
-
10
- ##
11
- # Read configuration from environment variables.
12
- # @param [Hash] fields Mapping from configuration field to environment
13
- # variable name.
14
- def initialize(fields = {
15
- server: 'STOREDSAFE_SERVER',
16
- token: 'STOREDSAFE_TOKEN',
17
- ca_bundle: 'STOREDSAFE_CABUNDLE',
18
- skip_verify: 'STOREDSAFE_SKIP_VERIFY'
19
- })
20
- @fields = fields
21
- @config = {}
22
- end
23
-
24
- ##
25
- # Read values from file into the @config hash.
26
- def read
27
- @fields.each do |key, val|
28
- @config[key] = ENV[val]
7
+ module EnvReader
8
+ class << self
9
+ ##
10
+ # Parses the passed environment variable names into a hash of config
11
+ # values.
12
+ # @param [Hash] fields Mapping from configuration field to environment
13
+ # variable name.
14
+ def parse_env(fields = {
15
+ server: 'STOREDSAFE_SERVER',
16
+ token: 'STOREDSAFE_TOKEN',
17
+ ca_bundle: 'STOREDSAFE_CABUNDLE',
18
+ skip_verify: 'STOREDSAFE_SKIP_VERIFY'
19
+ })
20
+ config = {}
21
+ fields.each do |key, val|
22
+ config[key] = ENV[val]
23
+ end
24
+ config
29
25
  end
30
- @config
31
26
  end
32
27
  end
33
28
  end
@@ -4,43 +4,39 @@ module Storedsafe
4
4
  module Config
5
5
  ##
6
6
  # Reads configuration items from rc file.
7
- class RcReader
8
- attr_reader :config
9
-
10
- ##
11
- # Read configuration from Storedsafe RC file.
12
- # @param [String] path Path to RC file.
13
- def initialize(path)
14
- @path = path
15
- @config = {}
16
- end
17
-
18
- ##
19
- # Read values from file into the @config hash.
20
- def read
21
- if File.exists?(@path)
22
- File.open(@path, 'r').each do |line|
23
- key, val = line.split(':', 2)
24
- key = key.strip
25
- val = val.strip
26
- parse_line(key, val)
7
+ module RcReader
8
+ class << self
9
+ ##
10
+ # Parses values from RC file into a hash.
11
+ def parse_file(path = File.join(
12
+ Dir.home,
13
+ '.storedsafe-client.rc'
14
+ ))
15
+ config = {}
16
+ if File.exist?(path)
17
+ File.open(path, 'r').each do |line|
18
+ key, val = line.split(':', 2)
19
+ key = key.strip
20
+ val = val.strip
21
+ parse_line(config, key, val)
22
+ end
27
23
  end
24
+ config
28
25
  end
29
- @config
30
- end
31
26
 
32
- private
27
+ private
33
28
 
34
- def parse_line(key, val)
35
- case key
36
- when 'token'
37
- @config[:token] = val
38
- when 'username'
39
- @config[:username] = val
40
- when 'apikey'
41
- @config[:api_key] = val
42
- when 'mysite'
43
- @config[:server] = val
29
+ def parse_line(config, key, val)
30
+ case key
31
+ when 'token'
32
+ config[:token] = val
33
+ when 'username'
34
+ config[:username] = val
35
+ when 'apikey'
36
+ config[:api_key] = val
37
+ when 'mysite'
38
+ config[:server] = val
39
+ end
44
40
  end
45
41
  end
46
42
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: storedsafe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oscar Mattsson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-07 00:00:00.000000000 Z
11
+ date: 2019-06-13 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: oscar_mattsson@live.se