meroku 2.0.8 → 2.0.9
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 +4 -4
- data/README.md +9 -5
- data/bin/meroku +1 -1
- data/circle.yml +23 -0
- data/frontend/Gemfile +5 -2
- data/frontend/Gemfile.lock +5 -2
- data/frontend/app/controllers/application_controller.rb +1 -0
- data/frontend/app/controllers/apps_controller.rb +46 -48
- data/frontend/app/controllers/publickeys_controller.rb +45 -46
- data/frontend/app/controllers/users/registrations_controller.rb +0 -15
- data/frontend/app/controllers/users/sessions_controller.rb +12 -3
- data/frontend/app/lib/cmd.rb +11 -0
- data/frontend/app/models/app.rb +18 -11
- data/frontend/app/models/publickey.rb +1 -1
- data/frontend/app/models/user.rb +5 -4
- data/frontend/app/policies/application_policy.rb +53 -0
- data/frontend/app/policies/publickey_policy.rb +7 -0
- data/frontend/app/serializable/serializable_user.rb +2 -1
- data/frontend/app/views/layouts/application.html.erb +1 -1
- data/frontend/config/database.yml +72 -10
- data/frontend/config/routes.rb +6 -14
- data/frontend/db/migrate/20171028150506_add_apisecret_to_users.rb +6 -0
- data/frontend/etc_nginx_sites-enabled_default +1 -1
- data/frontend/public/Meroku.html +140 -0
- data/frontend/public/Meroku/Api.html +129 -0
- data/frontend/public/Meroku/Api/Request.html +221 -0
- data/frontend/public/Meroku/Aws.html +212 -0
- data/frontend/public/Meroku/Aws/Ec2.html +477 -0
- data/frontend/public/Meroku/CLI.html +784 -0
- data/frontend/public/Meroku/CLI/AdminUser.html +192 -0
- data/frontend/public/Meroku/CLI/Help.html +224 -0
- data/frontend/public/Meroku/CLI/Secrets.html +191 -0
- data/frontend/public/Meroku/CLI/Session.html +460 -0
- data/frontend/public/Meroku/CLI/User.html +182 -0
- data/frontend/public/Meroku/Extensions.html +405 -0
- data/frontend/public/Meroku/Infrastructure.html +279 -0
- data/frontend/public/Meroku/Infrastructure/Node.html +785 -0
- data/frontend/public/Meroku/Infrastructure/Server.html +373 -0
- data/frontend/public/Meroku/Node.html +845 -0
- data/frontend/public/Meroku/Tunnel.html +701 -0
- data/frontend/public/Meroku/Tunnelable.html +243 -0
- data/frontend/public/_index.html +273 -0
- data/frontend/public/class_list.html +51 -0
- data/frontend/public/css/common.css +1 -0
- data/frontend/public/css/full_list.css +58 -0
- data/frontend/public/css/style.css +492 -0
- data/frontend/public/file.README.html +181 -0
- data/frontend/public/file_list.html +56 -0
- data/frontend/public/frames.html +17 -0
- data/frontend/public/index.html +181 -0
- data/frontend/public/js/app.js +248 -0
- data/frontend/public/js/full_list.js +216 -0
- data/frontend/public/js/jquery.js +4 -0
- data/frontend/public/method_list.html +395 -0
- data/frontend/public/robots.txt +2 -1
- data/frontend/public/top-level-namespace.html +110 -0
- data/frontend/test/policies/publickey_policy_test.rb +19 -0
- data/lib/meroku.rb +9 -7
- data/lib/meroku/api.rb +8 -0
- data/lib/meroku/api/request.rb +17 -0
- data/lib/meroku/aws.rb +14 -0
- data/lib/meroku/aws/ec2.rb +59 -0
- data/lib/meroku/cli.rb +80 -81
- data/lib/meroku/cli/help.rb +27 -0
- data/lib/meroku/cli/secrets.rb +13 -0
- data/lib/meroku/cli/session.rb +32 -51
- data/lib/meroku/extensions.rb +32 -0
- data/lib/meroku/infrastructure.rb +14 -17
- data/lib/meroku/infrastructure/server.rb +20 -0
- data/lib/meroku/node.rb +113 -0
- data/lib/meroku/tunnelable.rb +31 -0
- data/lib/meroku/version.rb +1 -1
- data/modified-cedar-14.sh +0 -4
- metadata +50 -9
- data/frontend/app/controllers/pages_controller.rb +0 -4
- data/frontend/app/views/pages/landing.html.erb +0 -2
- data/frontend/db/migrate/20171025193627_add_token_to_users.rb +0 -5
- data/lib/meroku/cli/admin_user.rb +0 -20
- data/lib/meroku/cli/user.rb +0 -14
- data/lib/meroku/infrastructure/node.rb +0 -102
- data/lib/meroku/tunnel.rb +0 -56
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad5f5ca79ce1ebc9536a34a7914167cbe0b09838
|
4
|
+
data.tar.gz: 2aa86958df6a7fb04e8664fdb6c3235b6cd4dff6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9dcbd1a4a80ff721be16c9aa265067fe6167e7f08213df4bde6171e02074a7d1a9ef40e7b3751abbc7541e938ad2b9225a43dae2bd42024901648be44770c7cf
|
7
|
+
data.tar.gz: 00cffa6fe619cc4e0530690ad2043cb1f44c9673eed29ce7be03802fa21987d702072b45b2db20f5f6ee989cf9dc4d2656d3ee73d3ba786a5ed693cc0cc927c3
|
data/README.md
CHANGED
@@ -79,7 +79,14 @@ You will need a copy of the file `.secret`. Place it at `~/.meroku/.secret`
|
|
79
79
|
### Commands
|
80
80
|
|
81
81
|
$ meroku infrastructure spawn
|
82
|
+
$ meroku infrastructure despawn
|
82
83
|
|
84
|
+
$ rubocop -D -F --except FrozenStringLiteralComment,StringLiterals,MutableConstant lib/
|
85
|
+
Inspecting 15 files
|
86
|
+
...............
|
87
|
+
|
88
|
+
15 files inspected, no offenses detected
|
89
|
+
$
|
83
90
|
|
84
91
|
### TODO
|
85
92
|
|
@@ -88,11 +95,8 @@ You will need a copy of the file `.secret`. Place it at `~/.meroku/.secret`
|
|
88
95
|
- Only RAILS_ENV=procution is supported at the moment
|
89
96
|
- Only puma is supported at the moment
|
90
97
|
|
91
|
-
-
|
92
|
-
-
|
93
|
-
- Nightly spawn
|
94
|
-
|
95
|
-
- respons time sanity check
|
98
|
+
- Nightly spawn
|
99
|
+
- respons time sanity check and full-lifecycle topics
|
96
100
|
- piper visual check
|
97
101
|
- some commodity apps
|
98
102
|
|
data/bin/meroku
CHANGED
data/circle.yml
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
general:
|
2
|
+
branches:
|
3
|
+
only:
|
4
|
+
- notmaster
|
5
|
+
|
6
|
+
machine:
|
7
|
+
|
8
|
+
timezone:
|
9
|
+
America/Los_Angeles # Set the timezone
|
10
|
+
|
11
|
+
dependencies:
|
12
|
+
override:
|
13
|
+
- echo
|
14
|
+
|
15
|
+
database:
|
16
|
+
override:
|
17
|
+
- echo
|
18
|
+
|
19
|
+
test:
|
20
|
+
override:
|
21
|
+
- ruby --version
|
22
|
+
- gem install meroku
|
23
|
+
|
data/frontend/Gemfile
CHANGED
@@ -9,7 +9,7 @@ end
|
|
9
9
|
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
|
10
10
|
gem 'rails', '~> 5.1.4'
|
11
11
|
# Use sqlite3 as the database for Active Record
|
12
|
-
gem 'sqlite3'
|
12
|
+
#gem 'sqlite3'
|
13
13
|
# Use Puma as the app server
|
14
14
|
gem 'puma', '~> 3.7'
|
15
15
|
# Use SCSS for stylesheets
|
@@ -35,7 +35,7 @@ gem 'jbuilder', '~> 2.5'
|
|
35
35
|
|
36
36
|
group :development, :test do
|
37
37
|
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
|
38
|
-
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
|
38
|
+
#gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
|
39
39
|
# Adds support for Capybara system testing and selenium driver
|
40
40
|
gem 'capybara', '~> 2.13'
|
41
41
|
gem 'selenium-webdriver'
|
@@ -56,3 +56,6 @@ gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
|
|
56
56
|
gem 'devise'
|
57
57
|
gem 'jsonapi-rails'
|
58
58
|
gem "active_model_serializers"
|
59
|
+
gem "pg"
|
60
|
+
gem "byebug"
|
61
|
+
gem "pundit"
|
data/frontend/Gemfile.lock
CHANGED
@@ -118,8 +118,11 @@ GEM
|
|
118
118
|
nokogiri (1.8.1)
|
119
119
|
mini_portile2 (~> 2.3.0)
|
120
120
|
orm_adapter (0.5.0)
|
121
|
+
pg (0.21.0)
|
121
122
|
public_suffix (3.0.0)
|
122
123
|
puma (3.10.0)
|
124
|
+
pundit (1.1.0)
|
125
|
+
activesupport (>= 3.0.0)
|
123
126
|
rack (2.0.3)
|
124
127
|
rack-test (0.7.0)
|
125
128
|
rack (>= 1.0, < 3)
|
@@ -181,7 +184,6 @@ GEM
|
|
181
184
|
actionpack (>= 4.0)
|
182
185
|
activesupport (>= 4.0)
|
183
186
|
sprockets (>= 3.0.0)
|
184
|
-
sqlite3 (1.3.13)
|
185
187
|
thor (0.20.0)
|
186
188
|
thread_safe (0.3.6)
|
187
189
|
tilt (2.0.8)
|
@@ -217,13 +219,14 @@ DEPENDENCIES
|
|
217
219
|
jbuilder (~> 2.5)
|
218
220
|
jsonapi-rails
|
219
221
|
listen (>= 3.0.5, < 3.2)
|
222
|
+
pg
|
220
223
|
puma (~> 3.7)
|
224
|
+
pundit
|
221
225
|
rails (~> 5.1.4)
|
222
226
|
sass-rails (~> 5.0)
|
223
227
|
selenium-webdriver
|
224
228
|
spring
|
225
229
|
spring-watcher-listen (~> 2.0.0)
|
226
|
-
sqlite3
|
227
230
|
turbolinks (~> 5)
|
228
231
|
tzinfo-data
|
229
232
|
uglifier (>= 1.3.0)
|
@@ -2,44 +2,42 @@ class AppsController < ApplicationController
|
|
2
2
|
before_action :set_app, only: [:show, :edit, :update, :destroy]
|
3
3
|
skip_before_action :verify_authenticity_token, only: [:create]
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
def index
|
8
|
-
|
9
|
-
end
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
def show
|
14
|
-
end
|
15
|
-
|
16
|
-
|
17
|
-
def new
|
18
|
-
|
19
|
-
end
|
20
|
-
|
21
|
-
|
22
|
-
def edit
|
23
|
-
end
|
5
|
+
## GET /apps
|
6
|
+
## GET /apps.json
|
7
|
+
#def index
|
8
|
+
# @apps = App.all
|
9
|
+
#end
|
10
|
+
#
|
11
|
+
## GET /apps/1
|
12
|
+
## GET /apps/1.json
|
13
|
+
#def show
|
14
|
+
#end
|
15
|
+
#
|
16
|
+
## GET /apps/new
|
17
|
+
#def new
|
18
|
+
# @app = App.new
|
19
|
+
#end
|
20
|
+
#
|
21
|
+
## GET /apps/1/edit
|
22
|
+
#def edit
|
23
|
+
#end
|
24
24
|
|
25
25
|
# POST /apps
|
26
26
|
# POST /apps.json
|
27
27
|
def create
|
28
28
|
@app = App.new(app_params)
|
29
|
-
@app.name = SecureRandom.hex
|
30
|
-
@app.user = User.
|
29
|
+
@app.name = "app#{SecureRandom.hex[0..6]}"
|
30
|
+
@app.user = User.find_by_apisecret(params[:apisecret])
|
31
31
|
if !@app.user
|
32
32
|
(render :jsonapi_errors => [{
|
33
|
-
title: '
|
34
|
-
detail: '
|
33
|
+
title: 'Authentication failed',
|
34
|
+
detail: 'Authentication failed'
|
35
35
|
}]) and return
|
36
|
-
|
37
36
|
end
|
38
37
|
|
39
38
|
respond_to do |format|
|
40
39
|
if @app.save
|
41
40
|
format.html { redirect_to @app, notice: 'App was successfully created.' }
|
42
|
-
#format.json { render :show, status: :created, location: @app }
|
43
41
|
format.json { render jsonapi: @app }
|
44
42
|
else
|
45
43
|
format.html { render :new }
|
@@ -48,29 +46,29 @@ class AppsController < ApplicationController
|
|
48
46
|
end
|
49
47
|
end
|
50
48
|
|
51
|
-
|
52
|
-
|
53
|
-
def update
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
end
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
def destroy
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
end
|
49
|
+
## PATCH/PUT /apps/1
|
50
|
+
## PATCH/PUT /apps/1.json
|
51
|
+
#def update
|
52
|
+
# respond_to do |format|
|
53
|
+
# if @app.update(app_params)
|
54
|
+
# format.html { redirect_to @app, notice: 'App was successfully updated.' }
|
55
|
+
# format.json { render :show, status: :ok, location: @app }
|
56
|
+
# else
|
57
|
+
# format.html { render :edit }
|
58
|
+
# format.json { render json: @app.errors, status: :unprocessable_entity }
|
59
|
+
# end
|
60
|
+
# end
|
61
|
+
#end
|
62
|
+
#
|
63
|
+
## DELETE /apps/1
|
64
|
+
## DELETE /apps/1.json
|
65
|
+
#def destroy
|
66
|
+
# @app.destroy
|
67
|
+
# respond_to do |format|
|
68
|
+
# format.html { redirect_to apps_url, notice: 'App was successfully destroyed.' }
|
69
|
+
# format.json { head :no_content }
|
70
|
+
# end
|
71
|
+
#end
|
74
72
|
|
75
73
|
private
|
76
74
|
# Use callbacks to share common setup or constraints between actions.
|
@@ -2,42 +2,41 @@ class PublickeysController < ApplicationController
|
|
2
2
|
before_action :set_publickey, only: [:show, :edit, :update, :destroy]
|
3
3
|
skip_before_action :verify_authenticity_token, only: [:create]
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
def index
|
8
|
-
|
9
|
-
end
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
def show
|
14
|
-
end
|
15
|
-
|
16
|
-
|
17
|
-
def new
|
18
|
-
|
19
|
-
end
|
20
|
-
|
21
|
-
|
22
|
-
def edit
|
23
|
-
end
|
5
|
+
## GET /publickeys
|
6
|
+
## GET /publickeys.json
|
7
|
+
#def index
|
8
|
+
# @publickeys = Publickey.all
|
9
|
+
#end
|
10
|
+
#
|
11
|
+
## GET /publickeys/1
|
12
|
+
## GET /publickeys/1.json
|
13
|
+
#def show
|
14
|
+
#end
|
15
|
+
#
|
16
|
+
## GET /publickeys/new
|
17
|
+
#def new
|
18
|
+
# @publickey = Publickey.new
|
19
|
+
#end
|
20
|
+
#
|
21
|
+
## GET /publickeys/1/edit
|
22
|
+
#def edit
|
23
|
+
#end
|
24
24
|
|
25
25
|
# POST /publickeys
|
26
26
|
# POST /publickeys.json
|
27
27
|
def create
|
28
28
|
@publickey = Publickey.new(publickey_params)
|
29
|
-
@publickey.user = User.
|
29
|
+
@publickey.user = User.find_by_apisecret(params[:apisecret])
|
30
30
|
if !@publickey.user
|
31
31
|
(render :jsonapi_errors => [{
|
32
|
-
title: '
|
33
|
-
detail: 'Invalid
|
32
|
+
title: 'Authentiction failed',
|
33
|
+
detail: 'Invalid Authentication failed. Try logging in again.'
|
34
34
|
}]) and return
|
35
35
|
end
|
36
36
|
|
37
37
|
respond_to do |format|
|
38
38
|
if @publickey.save
|
39
39
|
format.html { redirect_to @publickey, notice: 'Publickey was successfully created.' }
|
40
|
-
#format.json { render :show, status: :created, location: @publickey }
|
41
40
|
format.json { render jsonapi: @publickey }
|
42
41
|
else
|
43
42
|
format.html { render :new }
|
@@ -46,29 +45,29 @@ class PublickeysController < ApplicationController
|
|
46
45
|
end
|
47
46
|
end
|
48
47
|
|
49
|
-
|
50
|
-
|
51
|
-
def update
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
end
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
def destroy
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
end
|
48
|
+
## PATCH/PUT /publickeys/1
|
49
|
+
## PATCH/PUT /publickeys/1.json
|
50
|
+
#def update
|
51
|
+
# respond_to do |format|
|
52
|
+
# if @publickey.update(publickey_params)
|
53
|
+
# format.html { redirect_to @publickey, notice: 'Publickey was successfully updated.' }
|
54
|
+
# format.json { render :show, status: :ok, location: @publickey }
|
55
|
+
# else
|
56
|
+
# format.html { render :edit }
|
57
|
+
# format.json { render json: @publickey.errors, status: :unprocessable_entity }
|
58
|
+
# end
|
59
|
+
# end
|
60
|
+
#end
|
61
|
+
#
|
62
|
+
## DELETE /publickeys/1
|
63
|
+
## DELETE /publickeys/1.json
|
64
|
+
#def destroy
|
65
|
+
# @publickey.destroy
|
66
|
+
# respond_to do |format|
|
67
|
+
# format.html { redirect_to publickeys_url, notice: 'Publickey was successfully destroyed.' }
|
68
|
+
# format.json { head :no_content }
|
69
|
+
# end
|
70
|
+
#end
|
72
71
|
|
73
72
|
private
|
74
73
|
# Use callbacks to share common setup or constraints between actions.
|
@@ -13,31 +13,16 @@ class Users::RegistrationsController < Devise::RegistrationsController
|
|
13
13
|
|
14
14
|
# POST /resource
|
15
15
|
def create
|
16
|
-
#super
|
17
16
|
build_resource(sign_up_params)
|
18
17
|
|
19
18
|
resource.save
|
20
19
|
yield resource if block_given?
|
21
20
|
if resource.persisted?
|
22
|
-
#render jsonapi: resource
|
23
21
|
render jsonapi: resource
|
24
|
-
#if resource.active_for_authentication?
|
25
|
-
# set_flash_message! :notice, :signed_up
|
26
|
-
# sign_up(resource_name, resource)
|
27
|
-
# respond_with resource, location: after_sign_up_path_for(resource)
|
28
|
-
#else
|
29
|
-
# set_flash_message! :notice, :"signed_up_but_#{resource.inactive_message}"
|
30
|
-
# expire_data_after_sign_in!
|
31
|
-
# respond_with resource, location: after_inactive_sign_up_path_for(resource)
|
32
|
-
#end
|
33
22
|
else
|
34
23
|
clean_up_passwords resource
|
35
24
|
set_minimum_password_length
|
36
|
-
##respond_with resource
|
37
|
-
#warden.custom_failure!
|
38
|
-
#render :json=> resource.errors, :status=>422
|
39
25
|
render jsonapi_errors: resource.errors
|
40
|
-
#render json: {status: 'SUCCESS', message: resource.errors.full_messages}, status: 422
|
41
26
|
end
|
42
27
|
end
|
43
28
|
|
@@ -1,5 +1,7 @@
|
|
1
1
|
class Users::SessionsController < Devise::SessionsController
|
2
2
|
# before_action :configure_sign_in_params, only: [:create]
|
3
|
+
skip_before_action :verify_authenticity_token, only: [:create]
|
4
|
+
respond_to :json
|
3
5
|
|
4
6
|
# GET /resource/sign_in
|
5
7
|
# def new
|
@@ -7,9 +9,16 @@ class Users::SessionsController < Devise::SessionsController
|
|
7
9
|
# end
|
8
10
|
|
9
11
|
# POST /resource/sign_in
|
10
|
-
|
11
|
-
|
12
|
-
|
12
|
+
def create
|
13
|
+
self.resource = warden.authenticate(auth_options)
|
14
|
+
if self.resource
|
15
|
+
render jsonapi: self.resource
|
16
|
+
else
|
17
|
+
render json: {
|
18
|
+
"errors": [ { "detail": "Authentication failed" } ]
|
19
|
+
}
|
20
|
+
end
|
21
|
+
end
|
13
22
|
|
14
23
|
# DELETE /resource/sign_out
|
15
24
|
# def destroy
|