fenton_shell 0.1.0

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.
@@ -0,0 +1,91 @@
1
+ module FentonShell
2
+ # Interfaces with the project api on fenton server
3
+ class Project
4
+ # @!attribute [r] message
5
+ # @return [String] success or failure message and why
6
+ attr_accessor :message
7
+
8
+ # Creates a new project on fenton server by sending a post
9
+ # request with json from the command line to create the project
10
+ #
11
+ # @param global_options [Hash] global command line options
12
+ # @param options [Hash] json fields to send to fenton server
13
+ # @return [String] success or failure message
14
+
15
+ def create(global_options, options)
16
+ status, body = project_create(global_options, options)
17
+
18
+ if status == 201
19
+ save_message(create_success_message(body))
20
+ true
21
+ else
22
+ parse_message(body)
23
+ false
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def create_success_message(body)
30
+ msg = "Project Created! Below is the public key to add to the server.\n\n"
31
+ msg << "#{body['data']['attributes']['ca-public-key']}\n\n"
32
+ msg << "Add the public key above to /etc/ssh/trusted_user_ca_key\n\n"
33
+ msg << "Add this line to /etc/ssh/sshd_config\n"
34
+ msg << " TrustedUserCAKeys /etc/ssh/trusted_user_ca_key\n\n"
35
+ msg << "Run these commands:\n"
36
+ msg << ' chmod 644 /etc/ssh/trusted_user_ca_key && ' \
37
+ "service ssh restart\n\n"
38
+ msg << 'Now have Fenton Server sign your public key to ' \
39
+ "login to the server\n"
40
+ end
41
+
42
+ # Sends a post request with json from the command line client
43
+ #
44
+ # @param global_options [Hash] global command line options
45
+ # @param options [Hash] json fields to send to fenton server
46
+ # @return [Fixnum] http status code
47
+ # @return [String] message back from fenton server
48
+ def project_create(global_options, options)
49
+ result = Excon.post(
50
+ "#{global_options[:fenton_server_url]}/projects.json",
51
+ body: project_json(options),
52
+ headers: { 'Content-Type' => 'application/json' }
53
+ )
54
+
55
+ [result.status, JSON.parse(result.body)]
56
+ end
57
+
58
+ # Formulates the project json for the post request
59
+ #
60
+ # @param options [Hash] fields from fenton command line
61
+ # @return [String] json created from the options hash
62
+ def project_json(options)
63
+ {
64
+ project: {
65
+ name: options[:name],
66
+ description: options[:description],
67
+ passphrase: options[:passphrase],
68
+ key: options[:key],
69
+ organization: options[:organization]
70
+ }
71
+ }.to_json
72
+ end
73
+
74
+ # Helps output the error message from fenton server
75
+ #
76
+ # @param msg [Hash] fields from fenton public classes
77
+ # @return [String] changed hash fields to string for command line output
78
+ def parse_message(msg = {})
79
+ self.message ||= ''
80
+
81
+ msg.each do |key, value|
82
+ self.message << "#{key.capitalize} #{value.first}\n"
83
+ end
84
+ end
85
+
86
+ def save_message(msg)
87
+ self.message ||= ''
88
+ self.message << msg.to_s
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,5 @@
1
+ # Top Level Fenton Module
2
+ module FentonShell
3
+ # Fenton Shell Version
4
+ VERSION = '0.1.0'.freeze
5
+ end
metadata ADDED
@@ -0,0 +1,280 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fenton_shell
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Nick Willever
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDgDCCAmigAwIBAgIBATANBgkqhkiG9w0BAQUFADBDMRUwEwYDVQQDDAxuaWNr
14
+ d2lsbGV2ZXIxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkW
15
+ A2NvbTAeFw0xNjAxMjYwMjQ5MDRaFw0xNzAxMjUwMjQ5MDRaMEMxFTATBgNVBAMM
16
+ DG5pY2t3aWxsZXZlcjEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPy
17
+ LGQBGRYDY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAynzXUa0I
18
+ pZLVBoUR8uz8MojY/0ghnrCBnHJxht8f//uwUhRkgGQVGZXcOB9m8GTGz6Ei8od2
19
+ 5OCzv6GUE4fqX65v3YNRHqtiLYUu8KDxWfWey8091lx8T9S10jQ4h6iAcodeLIEt
20
+ a/U6BLTb+3+Zys5lm/Epcs4ClhLP0JjF+8vJaCDEZtPOrl7T80kNkdY39D4G7rWX
21
+ jx9RZ8XlMR/tstJLes8GFi/SeCe5oBJjKoUc4NeXWe1qUQs3IWS31A/SHub6hIt7
22
+ 4dBOYxEZfkOHhiKHJQu8gzB0Cvk/YDdddhVTQ2Gj3Yeg4OfLrQ53jg6kJ+iIoypP
23
+ nXb4eF4FwrRAQQIDAQABo38wfTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNV
24
+ HQ4EFgQUX4HwVDhB7ubeeSAm4aPJusRnsuQwIQYDVR0RBBowGIEWbmlja3dpbGxl
25
+ dmVyQGdtYWlsLmNvbTAhBgNVHRIEGjAYgRZuaWNrd2lsbGV2ZXJAZ21haWwuY29t
26
+ MA0GCSqGSIb3DQEBBQUAA4IBAQBxOiYkWNexvtJ8KXKuTlmFa+hYC8L6myPGxtW9
27
+ Npj5L6VtAEZ/uKG9L9YUEGsYKqH2DQOH+LKmaIeDFKbcD/aCPBs3XuJ49xJ4pCF1
28
+ vwbYQdIO1soU8SVuigK2jMm6171m0lvytC4U6Yxd2dXo/SWAUpRLXiYfEg9udhEM
29
+ hxdFNaWPYzY6jgIx9Jqe2ELfzfxXNxYsCwjSZ5zUsmldLkrIVA3Ur6QpMSFK6ByP
30
+ sv70kP++8jtwDXzjWuNrZm5jg0CB+8WhtTCFTvHauMs94gbP6bK+cbYGfRx+4Ezs
31
+ NtVr/SVaHNU0xIf8bkxswQ4zTyZKgO4MBkQHQ2dd84fcxCTn
32
+ -----END CERTIFICATE-----
33
+ date: 2016-11-25 00:00:00.000000000 Z
34
+ dependencies:
35
+ - !ruby/object:Gem::Dependency
36
+ name: excon
37
+ requirement: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: 0.45.4
42
+ type: :runtime
43
+ prerelease: false
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: 0.45.4
49
+ - !ruby/object:Gem::Dependency
50
+ name: gli
51
+ requirement: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: 2.13.4
56
+ type: :runtime
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: 2.13.4
63
+ - !ruby/object:Gem::Dependency
64
+ name: json
65
+ requirement: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: 1.8.3
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: 1.8.3
77
+ - !ruby/object:Gem::Dependency
78
+ name: sshkey
79
+ requirement: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: 1.8.0
84
+ type: :runtime
85
+ prerelease: false
86
+ version_requirements: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: 1.8.0
91
+ - !ruby/object:Gem::Dependency
92
+ name: highline
93
+ requirement: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: 1.7.8
98
+ type: :runtime
99
+ prerelease: false
100
+ version_requirements: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: 1.7.8
105
+ - !ruby/object:Gem::Dependency
106
+ name: rake
107
+ requirement: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ type: :development
113
+ prerelease: false
114
+ version_requirements: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ - !ruby/object:Gem::Dependency
120
+ name: aruba
121
+ requirement: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ type: :development
127
+ prerelease: false
128
+ version_requirements: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ - !ruby/object:Gem::Dependency
134
+ name: minitest
135
+ requirement: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ type: :development
141
+ prerelease: false
142
+ version_requirements: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ - !ruby/object:Gem::Dependency
148
+ name: test-unit
149
+ requirement: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ type: :development
155
+ prerelease: false
156
+ version_requirements: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ - !ruby/object:Gem::Dependency
162
+ name: yard
163
+ requirement: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ type: :development
169
+ prerelease: false
170
+ version_requirements: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ - !ruby/object:Gem::Dependency
176
+ name: rubocop
177
+ requirement: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ type: :development
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ - !ruby/object:Gem::Dependency
190
+ name: bundler-audit
191
+ requirement: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - ">="
194
+ - !ruby/object:Gem::Version
195
+ version: '0'
196
+ type: :development
197
+ prerelease: false
198
+ version_requirements: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - ">="
201
+ - !ruby/object:Gem::Version
202
+ version: '0'
203
+ - !ruby/object:Gem::Dependency
204
+ name: rubycritic
205
+ requirement: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
210
+ type: :development
211
+ prerelease: false
212
+ version_requirements: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
217
+ - !ruby/object:Gem::Dependency
218
+ name: mixlib-shellout
219
+ requirement: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - ">="
222
+ - !ruby/object:Gem::Version
223
+ version: '0'
224
+ type: :development
225
+ prerelease: false
226
+ version_requirements: !ruby/object:Gem::Requirement
227
+ requirements:
228
+ - - ">="
229
+ - !ruby/object:Gem::Version
230
+ version: '0'
231
+ description: A command line client to manage and sign SSH keys via Fenton Server
232
+ email:
233
+ - nickwillever@gmail.com
234
+ executables:
235
+ - fenton
236
+ extensions: []
237
+ extra_rdoc_files:
238
+ - README.md
239
+ - LICENSE
240
+ files:
241
+ - LICENSE
242
+ - README.md
243
+ - Rakefile
244
+ - bin/fenton
245
+ - "lib/Icon\r"
246
+ - lib/fenton_shell.rb
247
+ - "lib/fenton_shell/Icon\r"
248
+ - lib/fenton_shell/certificate.rb
249
+ - lib/fenton_shell/client.rb
250
+ - lib/fenton_shell/config_file.rb
251
+ - lib/fenton_shell/key.rb
252
+ - lib/fenton_shell/organization.rb
253
+ - lib/fenton_shell/project.rb
254
+ - lib/fenton_shell/version.rb
255
+ homepage: https://github.com/fenton-project/fenton_shell
256
+ licenses:
257
+ - Apache License, Version 2.0
258
+ metadata: {}
259
+ post_install_message:
260
+ rdoc_options:
261
+ - "--charset=UTF-8"
262
+ require_paths:
263
+ - lib
264
+ required_ruby_version: !ruby/object:Gem::Requirement
265
+ requirements:
266
+ - - ">="
267
+ - !ruby/object:Gem::Version
268
+ version: '0'
269
+ required_rubygems_version: !ruby/object:Gem::Requirement
270
+ requirements:
271
+ - - ">="
272
+ - !ruby/object:Gem::Version
273
+ version: '0'
274
+ requirements: []
275
+ rubyforge_project:
276
+ rubygems_version: 2.6.6
277
+ signing_key:
278
+ specification_version: 4
279
+ summary: A command line client to manage and sign SSH keys via Fenton Server
280
+ test_files: []
Binary file