meroku 2.0.22 → 2.0.23
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +0 -1
- data/.travis.yml +0 -10
- data/Guardfile +43 -0
- data/LICENSE.txt +1 -1
- data/README.md +29 -89
- data/bin/meroku +5 -3
- data/{frontend → data}/etc_nginx_sites-enabled_template +0 -0
- data/guard +25 -0
- data/lib/meroku.rb +17 -20
- data/lib/meroku/api.rb +15 -3
- data/lib/meroku/aws.rb +69 -6
- data/lib/meroku/cli.rb +23 -91
- data/lib/meroku/error.rb +11 -0
- data/lib/meroku/node.rb +70 -70
- data/lib/meroku/options.rb +79 -0
- data/lib/meroku/secrets.rb +38 -0
- data/lib/meroku/shared.rb +23 -0
- data/lib/meroku/user.rb +25 -0
- data/lib/meroku/version.rb +3 -1
- data/meroku.gemspec +10 -19
- metadata +20 -319
- data/circle.yml +0 -23
- data/frontend/.gitignore +0 -23
- data/frontend/.ruby-version +0 -2
- data/frontend/Gemfile +0 -61
- data/frontend/Gemfile.lock +0 -236
- data/frontend/README.md +0 -24
- data/frontend/Rakefile +0 -6
- data/frontend/app/assets/config/manifest.js +0 -3
- data/frontend/app/assets/images/.keep +0 -0
- data/frontend/app/assets/javascripts/application.js +0 -15
- data/frontend/app/assets/javascripts/apps.coffee +0 -3
- data/frontend/app/assets/javascripts/cable.js +0 -13
- data/frontend/app/assets/javascripts/channels/.keep +0 -0
- data/frontend/app/assets/javascripts/pages.coffee +0 -3
- data/frontend/app/assets/javascripts/publickeys.coffee +0 -3
- data/frontend/app/assets/stylesheets/application.css +0 -15
- data/frontend/app/assets/stylesheets/apps.scss +0 -3
- data/frontend/app/assets/stylesheets/pages.scss +0 -3
- data/frontend/app/assets/stylesheets/publickeys.scss +0 -3
- data/frontend/app/assets/stylesheets/scaffolds.scss +0 -84
- data/frontend/app/channels/application_cable/channel.rb +0 -4
- data/frontend/app/channels/application_cable/connection.rb +0 -4
- data/frontend/app/controllers/application_controller.rb +0 -4
- data/frontend/app/controllers/apps_controller.rb +0 -83
- data/frontend/app/controllers/concerns/.keep +0 -0
- data/frontend/app/controllers/publickeys_controller.rb +0 -82
- data/frontend/app/controllers/users/confirmations_controller.rb +0 -28
- data/frontend/app/controllers/users/omniauth_callbacks_controller.rb +0 -28
- data/frontend/app/controllers/users/passwords_controller.rb +0 -32
- data/frontend/app/controllers/users/registrations_controller.rb +0 -74
- data/frontend/app/controllers/users/sessions_controller.rb +0 -34
- data/frontend/app/controllers/users/unlocks_controller.rb +0 -28
- data/frontend/app/helpers/application_helper.rb +0 -2
- data/frontend/app/helpers/apps_helper.rb +0 -2
- data/frontend/app/helpers/pages_helper.rb +0 -2
- data/frontend/app/helpers/publickeys_helper.rb +0 -2
- data/frontend/app/jobs/application_job.rb +0 -2
- data/frontend/app/lib/cmd.rb +0 -11
- data/frontend/app/mailers/application_mailer.rb +0 -4
- data/frontend/app/models/app.rb +0 -37
- data/frontend/app/models/application_record.rb +0 -3
- data/frontend/app/models/concerns/.keep +0 -0
- data/frontend/app/models/publickey.rb +0 -15
- data/frontend/app/models/user.rb +0 -22
- data/frontend/app/policies/application_policy.rb +0 -53
- data/frontend/app/policies/publickey_policy.rb +0 -7
- data/frontend/app/serializable/serializable_app.rb +0 -6
- data/frontend/app/serializable/serializable_publickey.rb +0 -7
- data/frontend/app/serializable/serializable_user.rb +0 -8
- data/frontend/app/serializers/app_serializer.rb +0 -3
- data/frontend/app/serializers/publickey_serializer.rb +0 -4
- data/frontend/app/views/apps/_app.json.jbuilder +0 -2
- data/frontend/app/views/apps/_form.html.erb +0 -22
- data/frontend/app/views/apps/edit.html.erb +0 -6
- data/frontend/app/views/apps/index.html.erb +0 -27
- data/frontend/app/views/apps/index.json.jbuilder +0 -1
- data/frontend/app/views/apps/new.html.erb +0 -5
- data/frontend/app/views/apps/show.html.erb +0 -9
- data/frontend/app/views/apps/show.json.jbuilder +0 -1
- data/frontend/app/views/devise/confirmations/new.html.erb +0 -16
- data/frontend/app/views/devise/mailer/confirmation_instructions.html.erb +0 -5
- data/frontend/app/views/devise/mailer/email_changed.html.erb +0 -7
- data/frontend/app/views/devise/mailer/password_change.html.erb +0 -3
- data/frontend/app/views/devise/mailer/reset_password_instructions.html.erb +0 -8
- data/frontend/app/views/devise/mailer/unlock_instructions.html.erb +0 -7
- data/frontend/app/views/devise/passwords/edit.html.erb +0 -25
- data/frontend/app/views/devise/passwords/new.html.erb +0 -16
- data/frontend/app/views/devise/registrations/edit.html.erb +0 -43
- data/frontend/app/views/devise/registrations/new.html.erb +0 -29
- data/frontend/app/views/devise/sessions/new.html.erb +0 -26
- data/frontend/app/views/devise/shared/_links.html.erb +0 -25
- data/frontend/app/views/devise/unlocks/new.html.erb +0 -16
- data/frontend/app/views/layouts/application.html.erb +0 -16
- data/frontend/app/views/layouts/mailer.html.erb +0 -13
- data/frontend/app/views/layouts/mailer.text.erb +0 -1
- data/frontend/app/views/publickeys/_form.html.erb +0 -32
- data/frontend/app/views/publickeys/_publickey.json.jbuilder +0 -2
- data/frontend/app/views/publickeys/edit.html.erb +0 -6
- data/frontend/app/views/publickeys/index.html.erb +0 -31
- data/frontend/app/views/publickeys/index.json.jbuilder +0 -1
- data/frontend/app/views/publickeys/new.html.erb +0 -5
- data/frontend/app/views/publickeys/show.html.erb +0 -19
- data/frontend/app/views/publickeys/show.json.jbuilder +0 -1
- data/frontend/bin/bundle +0 -3
- data/frontend/bin/rails +0 -9
- data/frontend/bin/rake +0 -9
- data/frontend/bin/setup +0 -38
- data/frontend/bin/spring +0 -17
- data/frontend/bin/update +0 -29
- data/frontend/bin/yarn +0 -11
- data/frontend/config.ru +0 -5
- data/frontend/config/application.rb +0 -18
- data/frontend/config/boot.rb +0 -3
- data/frontend/config/cable.yml +0 -10
- data/frontend/config/database.yml +0 -87
- data/frontend/config/environment.rb +0 -5
- data/frontend/config/environments/development.rb +0 -56
- data/frontend/config/environments/production.rb +0 -97
- data/frontend/config/environments/test.rb +0 -42
- data/frontend/config/initializers/ams.rb +0 -3
- data/frontend/config/initializers/application_controller_renderer.rb +0 -8
- data/frontend/config/initializers/assets.rb +0 -14
- data/frontend/config/initializers/backtrace_silencers.rb +0 -7
- data/frontend/config/initializers/cookies_serializer.rb +0 -5
- data/frontend/config/initializers/devise.rb +0 -277
- data/frontend/config/initializers/filter_parameter_logging.rb +0 -4
- data/frontend/config/initializers/inflections.rb +0 -16
- data/frontend/config/initializers/mime_types.rb +0 -4
- data/frontend/config/initializers/wrap_parameters.rb +0 -14
- data/frontend/config/locales/devise.en.yml +0 -64
- data/frontend/config/locales/en.yml +0 -33
- data/frontend/config/puma.rb +0 -66
- data/frontend/config/routes.rb +0 -11
- data/frontend/config/secrets.yml +0 -32
- data/frontend/config/spring.rb +0 -6
- data/frontend/db/migrate/20171023223732_devise_create_users.rb +0 -42
- data/frontend/db/migrate/20171025203706_create_apps.rb +0 -9
- data/frontend/db/migrate/20171025223804_add_user_to_apps.rb +0 -5
- data/frontend/db/migrate/20171026071440_create_publickeys.rb +0 -11
- data/frontend/db/migrate/20171028150506_add_apisecret_to_users.rb +0 -6
- data/frontend/db/schema.rb +0 -32
- data/frontend/db/seeds.rb +0 -7
- data/frontend/etc_nginx_sites-enabled_default +0 -29
- data/frontend/lib/assets/.keep +0 -0
- data/frontend/lib/tasks/.keep +0 -0
- data/frontend/log/.keep +0 -0
- data/frontend/package.json +0 -5
- data/frontend/public/404.html +0 -67
- data/frontend/public/422.html +0 -67
- data/frontend/public/500.html +0 -66
- data/frontend/public/Meroku.html +0 -140
- data/frontend/public/Meroku/Api.html +0 -129
- data/frontend/public/Meroku/Api/Request.html +0 -221
- data/frontend/public/Meroku/Aws/Ec2.html +0 -477
- data/frontend/public/Meroku/CLI.html +0 -796
- data/frontend/public/Meroku/CLI/Help.html +0 -224
- data/frontend/public/Meroku/CLI/Secrets.html +0 -191
- data/frontend/public/Meroku/CLI/Session.html +0 -456
- data/frontend/public/Meroku/Extensions.html +0 -405
- data/frontend/public/Meroku/Infrastructure.html +0 -279
- data/frontend/public/Meroku/Infrastructure/Server.html +0 -373
- data/frontend/public/Meroku/Node.html +0 -845
- data/frontend/public/Meroku/Tunnelable.html +0 -247
- data/frontend/public/_index.html +0 -273
- data/frontend/public/apple-touch-icon-precomposed.png +0 -0
- data/frontend/public/apple-touch-icon.png +0 -0
- data/frontend/public/class_list.html +0 -51
- data/frontend/public/css/common.css +0 -1
- data/frontend/public/css/full_list.css +0 -58
- data/frontend/public/css/style.css +0 -492
- data/frontend/public/favicon.ico +0 -0
- data/frontend/public/file.README.html +0 -179
- data/frontend/public/file_list.html +0 -56
- data/frontend/public/frames.html +0 -17
- data/frontend/public/index.html +0 -179
- data/frontend/public/js/app.js +0 -248
- data/frontend/public/js/full_list.js +0 -216
- data/frontend/public/js/jquery.js +0 -4
- data/frontend/public/method_list.html +0 -395
- data/frontend/public/robots.txt +0 -2
- data/frontend/public/top-level-namespace.html +0 -110
- data/frontend/test/application_system_test_case.rb +0 -5
- data/frontend/test/controllers/.keep +0 -0
- data/frontend/test/controllers/apps_controller_test.rb +0 -48
- data/frontend/test/controllers/pages_controller_test.rb +0 -9
- data/frontend/test/controllers/publickeys_controller_test.rb +0 -48
- data/frontend/test/fixtures/.keep +0 -0
- data/frontend/test/fixtures/apps.yml +0 -7
- data/frontend/test/fixtures/files/.keep +0 -0
- data/frontend/test/fixtures/publickeys.yml +0 -11
- data/frontend/test/fixtures/users.yml +0 -11
- data/frontend/test/helpers/.keep +0 -0
- data/frontend/test/integration/.keep +0 -0
- data/frontend/test/mailers/.keep +0 -0
- data/frontend/test/models/.keep +0 -0
- data/frontend/test/models/app_test.rb +0 -7
- data/frontend/test/models/publickey_test.rb +0 -7
- data/frontend/test/models/user_test.rb +0 -7
- data/frontend/test/policies/publickey_policy_test.rb +0 -19
- data/frontend/test/system/.keep +0 -0
- data/frontend/test/system/apps_test.rb +0 -9
- data/frontend/test/system/publickeys_test.rb +0 -9
- data/frontend/test/test_helper.rb +0 -9
- data/frontend/tmp/.keep +0 -0
- data/frontend/vendor/.keep +0 -0
- data/lib/meroku/api/request.rb +0 -17
- data/lib/meroku/aws/ec2.rb +0 -59
- data/lib/meroku/cli/help.rb +0 -27
- data/lib/meroku/cli/secrets.rb +0 -23
- data/lib/meroku/cli/session.rb +0 -46
- data/lib/meroku/extensions.rb +0 -32
- data/lib/meroku/infrastructure.rb +0 -23
- data/lib/meroku/infrastructure/server.rb +0 -20
- data/lib/meroku/tunnelable.rb +0 -35
- data/modified-cedar-14.sh +0 -171
data/lib/meroku/error.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Meroku
|
4
|
+
# When this exception is raised, it means that Meroku is unable to perform
|
5
|
+
# a requested action (probably due to misconfiguration) and must stop
|
6
|
+
# immediately, rather than carrying on
|
7
|
+
class Error < StandardError; end
|
8
|
+
|
9
|
+
class WipError < Error; end
|
10
|
+
class LoginFailed < Error; end
|
11
|
+
end
|
data/lib/meroku/node.rb
CHANGED
@@ -1,113 +1,113 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Meroku
|
2
|
-
#
|
3
|
-
# This class represents that node
|
4
|
+
# A node is an ec2 node, that powers meroku
|
4
5
|
class Node
|
5
|
-
include Meroku::
|
6
|
-
include Meroku::
|
6
|
+
include Meroku::Shared
|
7
|
+
include Meroku::Aws
|
8
|
+
attr_reader :instance_id, :connection
|
7
9
|
|
8
10
|
def initialize
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
print "sleep "
|
16
|
-
30.times { print sleep(1) }
|
17
|
-
print "\n"
|
11
|
+
make_instance && associate_address
|
12
|
+
start_ssh && configure_keys
|
13
|
+
install_packages
|
14
|
+
database_inits && git_clone
|
15
|
+
nginx_configs && start_rails && close_ssh
|
16
|
+
puts 'Node created'
|
18
17
|
end
|
19
18
|
|
20
|
-
def
|
21
|
-
|
22
|
-
|
23
|
-
|
19
|
+
def execute_script(script)
|
20
|
+
script.each_line do |line|
|
21
|
+
puts line
|
22
|
+
execute(line)
|
23
|
+
end
|
24
24
|
end
|
25
25
|
|
26
|
-
def
|
27
|
-
|
28
|
-
mkdir /home/ubuntu/.meroku
|
29
|
-
sudo curl -s -o /etc/ssh/ssh_host_ecdsa_key #{Meroku::Aws.bucket_url}/ssh_host_ecdsa_key
|
30
|
-
sudo curl -s -o /etc/ssh/ssh_host_ecdsa_key.pub #{Meroku::Aws.bucket_url}/ssh_host_ecdsa_key.pub
|
31
|
-
curl -s -o /home/ubuntu/.meroku/letsencrypt_fullchain.pem #{Meroku::Aws.bucket_url}/letsencrypt_fullchain.pem
|
32
|
-
curl -s -o /home/ubuntu/.meroku/letsencrypt_privkey.pem #{Meroku::Aws.bucket_url}/letsencrypt_privkey.pem
|
33
|
-
curl -s https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
|
34
|
-
HEREDOC
|
35
|
-
str.split("\n").each { |cmd| tunnel_run(cmd) }
|
36
|
-
self
|
26
|
+
def start_ssh
|
27
|
+
@connection = Net::SSH.start(ip_address, 'ubuntu', sshopts)
|
37
28
|
end
|
38
29
|
|
39
|
-
def
|
40
|
-
|
41
|
-
echo "Dpkg::Use-Pty "0";" | sudo tee /etc/apt/apt.conf.d/00usepty
|
42
|
-
sudo apt-add-repository ppa:brightbox/ruby-ng --yes 2>/dev/null >/dev/null
|
43
|
-
echo "deb http://archive.ubuntu.com/ubuntu/ trusty main universe" | sudo tee -a /etc/apt/sources.list
|
44
|
-
echo "deb http://archive.ubuntu.com/ubuntu/ trusty-security main universe" | sudo tee -a /etc/apt/sources.list
|
45
|
-
echo "deb http://archive.ubuntu.com/ubuntu/ trusty-updates main universe" | sudo tee -a /etc/apt/sources.list
|
46
|
-
echo "deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main" | sudo tee -a /etc/apt/sources.list
|
47
|
-
HEREDOC
|
48
|
-
str.split("\n").each { |cmd| tunnel_run(cmd) }
|
49
|
-
self
|
30
|
+
def close_ssh
|
31
|
+
@connection.close
|
50
32
|
end
|
51
33
|
|
52
|
-
def
|
53
|
-
|
54
|
-
|
55
|
-
|
34
|
+
def execute(command)
|
35
|
+
@connection.exec(command) { |_ch, _stream, data| puts data }
|
36
|
+
@connection.loop
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def sshopts
|
42
|
+
{
|
43
|
+
verify_host_key: false,
|
44
|
+
key_data: Meroku::Shared.secrets.private_key
|
45
|
+
}
|
46
|
+
end
|
47
|
+
|
48
|
+
def configure_keys
|
49
|
+
execute_script <<~HEREDOC
|
50
|
+
sudo curl -s -o /etc/ssh/ssh_host_ecdsa_key #{bucket}ssh_host_ecdsa_key
|
51
|
+
sudo curl -s -o /etc/ssh/ssh_host_ecdsa_key.pub #{bucket}ssh_host_ecdsa_key.pub
|
52
|
+
sudo service ssh restart
|
53
|
+
curl -s -o /home/ubuntu/letsencrypt_fullchain.pem #{bucket}letsencrypt_fullchain.pem
|
54
|
+
curl -s -o /home/ubuntu/letsencrypt_privkey.pem #{bucket}letsencrypt_privkey.pem
|
55
|
+
curl -s https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
|
56
|
+
echo "Dpkg::Use-Pty "0";" | sudo tee /etc/apt/apt.conf.d/00usepty
|
56
57
|
HEREDOC
|
57
|
-
str.split("\n").each { |cmd| tunnel_run(cmd) }
|
58
|
-
self
|
59
58
|
end
|
60
59
|
|
61
60
|
def install_packages
|
62
|
-
|
61
|
+
ubuntu_site = 'http://archive.ubuntu.com/ubuntu/'
|
62
|
+
postgres_site = 'http://apt.postgresql.org/pub/repos/apt/'
|
63
|
+
execute_script <<~HEREDOC
|
64
|
+
sudo apt-add-repository ppa:brightbox/ruby-ng --yes 2>/dev/null >/dev/null
|
65
|
+
echo "deb #{ubuntu_site} trusty main universe" | sudo tee -a /etc/apt/sources.list
|
66
|
+
echo "deb #{ubuntu_site} trusty-security main universe" | sudo tee -a /etc/apt/sources.list
|
67
|
+
echo "deb #{ubuntu_site} trusty-updates main universe" | sudo tee -a /etc/apt/sources.list
|
68
|
+
echo "deb #{postgres_site} trusty-pgdg main" | sudo tee -a /etc/apt/sources.list
|
69
|
+
DEBIAN_FRONTEND=noninteractive sudo apt-get update -qq
|
70
|
+
DEBIAN_FRONTEND=noninteractive sudo apt-get upgrade -yqq --force-yes 2>/dev/null >/dev/null
|
63
71
|
DEBIAN_PRIORITY=critical DEBIAN_FRONTEND=noninteractive sudo apt-get install -q -y -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold" autoconf bind9-host bison build-essential coreutils curl daemontools dnsutils ed git imagemagick iputils-tracepath language-pack-en libbz2-dev libcurl4-openssl-dev libev-dev libevent-dev libglib2.0-dev libjpeg-dev libmagickwand-dev libmysqlclient-dev libncurses5-dev librdkafka-dev libreadline6-dev libssl-dev libuv-dev libxml2-dev libxslt-dev netcat-openbsd openjdk-7-jdk openjdk-7-jre-headless openssh-client openssh-server python python-dev socat stunnel syslinux tar telnet zip zlib1g-dev ruby2.4 ruby2.4-dev nginx libsqlite3-dev nodejs libpq-dev postgresql-9.6 2>/dev/null >/dev/null
|
64
72
|
HEREDOC
|
65
|
-
str.split("\n").each { |cmd| tunnel_run(cmd) }
|
66
|
-
self
|
67
73
|
end
|
68
74
|
|
69
75
|
def database_inits
|
70
|
-
|
76
|
+
execute_script <<~HEREDOC
|
71
77
|
sudo -u postgres createuser -e meroku
|
72
78
|
sudo -u postgres createdb meroku
|
73
|
-
sudo -u postgres psql -c "ALTER ROLE meroku WITH PASSWORD '#{
|
79
|
+
sudo -u postgres psql -c "ALTER ROLE meroku WITH PASSWORD '#{Meroku::Shared.secrets.meroku_secret}';"
|
74
80
|
sudo perl -pi -e "s#local.*all.*all.*peer#local all all md5#" /etc/postgresql/9.6/main/pg_hba.conf
|
75
81
|
sudo service postgresql restart
|
76
82
|
HEREDOC
|
77
|
-
str.split("\n").each { |cmd| tunnel_run(cmd) }
|
78
|
-
self
|
79
83
|
end
|
80
84
|
|
81
85
|
def git_clone
|
82
|
-
|
83
|
-
cd
|
86
|
+
execute_script <<~HEREDOC
|
87
|
+
cd ~ && git clone https://github.com/meroku/meroku
|
88
|
+
cd ~ && git clone https://github.com/meroku/backend_api
|
84
89
|
HEREDOC
|
85
|
-
str.split("\n").each { |cmd| tunnel_run(cmd) }
|
86
|
-
self
|
87
90
|
end
|
88
91
|
|
89
92
|
def nginx_configs
|
90
|
-
|
93
|
+
execute_script <<~HEREDOC
|
91
94
|
sudo rm -f /etc/nginx/sites-enabled/* /etc/nginx/sites-available/*
|
92
|
-
|
93
|
-
sudo
|
94
|
-
|
95
|
-
sudo chmod
|
95
|
+
# Place vhost config for backend_api
|
96
|
+
sudo cp ~/backend_api/config/etc_nginx_sites-enabled_default /etc/nginx/sites-enabled/default
|
97
|
+
# Place vhost config template for end-user apps
|
98
|
+
sudo mkdir /world_readable && sudo chmod 777 /world_readable
|
99
|
+
sudo cp /home/ubuntu/meroku/data/etc_nginx_sites-enabled_template /world_readable
|
100
|
+
sudo chmod a+r /world_readable/etc_nginx_sites-enabled_template
|
96
101
|
HEREDOC
|
97
|
-
str.split("\n").each { |cmd| tunnel_run(cmd) }
|
98
|
-
self
|
99
102
|
end
|
100
103
|
|
101
104
|
def start_rails
|
102
|
-
|
103
|
-
cd ~/
|
104
|
-
cd ~/
|
105
|
-
cd ~/
|
106
|
-
cd ~/meroku/frontend; SECRET=#{ENV['SECRET']} bundle exec puma -d -b unix:///home/ubuntu/meroku.sock
|
105
|
+
execute_script <<~HEREDOC
|
106
|
+
cd ~/backend_api; sudo gem install bundler; bundle;
|
107
|
+
cd ~/backend_api; SECRET=#{Meroku::Shared.secrets.meroku_secret} RAILS_ENV=production bundle exec rake db:migrate db:seed
|
108
|
+
cd ~/backend_api; SECRET=#{Meroku::Shared.secrets.meroku_secret} SECRET_KEY_BASE=#{Meroku::Shared.secrets.meroku_secret} RAILS_ENV=production bundle exec puma -d -b unix:///home/ubuntu/backend_api/tmp/backend_api.sock
|
107
109
|
sudo /usr/sbin/nginx -s reload
|
108
110
|
HEREDOC
|
109
|
-
str.split("\n").each { |cmd| tunnel_run(cmd) }
|
110
|
-
self
|
111
111
|
end
|
112
112
|
end
|
113
113
|
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Meroku
|
4
|
+
# This class handles command line options.
|
5
|
+
class Options
|
6
|
+
def initialize
|
7
|
+
@options = {}
|
8
|
+
end
|
9
|
+
|
10
|
+
def parse(command_line_args)
|
11
|
+
define_options(command_line_args).parse!(command_line_args)
|
12
|
+
@options
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def define_options(_args)
|
18
|
+
OptionParser.new do |opts|
|
19
|
+
opts.banner = 'Usage: meroku [options]'
|
20
|
+
|
21
|
+
opts.on('--help', 'Prints this help') do
|
22
|
+
puts opts
|
23
|
+
end
|
24
|
+
|
25
|
+
add_users_options(opts)
|
26
|
+
opts.separator ''
|
27
|
+
add_maintainers_options(opts)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def add_users_options(opts)
|
32
|
+
option(opts, '--login EMAIL,PASSWORD', Array) do |list|
|
33
|
+
@options[:login] = true
|
34
|
+
@options[:email] = list[0]
|
35
|
+
@options[:password] = list[1]
|
36
|
+
end
|
37
|
+
option(opts, '--logout') do
|
38
|
+
@options[:logout] = true
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def add_maintainers_options(opts)
|
43
|
+
option(opts, '--spawn MEROKU_SECRET') do |meroku_secret|
|
44
|
+
@options[:spawn] = true
|
45
|
+
@options[:meroku_secret] = meroku_secret
|
46
|
+
end
|
47
|
+
option(opts, '--despawn MEROKU_SECRET') do |meroku_secret|
|
48
|
+
@options[:despawn] = true
|
49
|
+
@options[:meroku_secret] = meroku_secret
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
# Sets a value in the @options hash, based on the given long option and its
|
54
|
+
# value, in addition to calling the block if a block is given.
|
55
|
+
def option(opts, *args)
|
56
|
+
long_opt_symbol = long_opt_symbol(args)
|
57
|
+
args += Array(OptionsHelp::TEXT[long_opt_symbol])
|
58
|
+
opts.on(*args) do |arg|
|
59
|
+
@options[long_opt_symbol] = arg
|
60
|
+
yield arg if block_given?
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
# Finds the option in `args` starting with -- and converts it to a symbol,
|
65
|
+
# e.g. [..., '--auto-correct', ...] to :auto_correct.
|
66
|
+
def long_opt_symbol(args)
|
67
|
+
long_opt = args.find { |arg| arg.start_with?('--') }
|
68
|
+
long_opt[2..-1].sub(/ .*/, '').tr('-', '_').gsub(/[\[\]]/, '').to_sym
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
# This module contains help texts for command line options.
|
73
|
+
module OptionsHelp
|
74
|
+
TEXT = {
|
75
|
+
version: 'Display version.',
|
76
|
+
spawn: 'Spawn infrastructure'
|
77
|
+
}.freeze
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Meroku
|
4
|
+
# Logic related to api keys, passwords
|
5
|
+
class Secrets
|
6
|
+
attr_reader :cached_aws_access_key_secret, :cached_private_key
|
7
|
+
attr_accessor :meroku_secret
|
8
|
+
|
9
|
+
def aws_access_key
|
10
|
+
'AKIAIRTTOJ2NSX27XWFA'
|
11
|
+
end
|
12
|
+
|
13
|
+
def aws_access_key_secret
|
14
|
+
return @cached_aws_access_key_secret if @cached_aws_access_key_secret
|
15
|
+
@cached_aws_access_key_secret = download_aws_access_key_secret
|
16
|
+
@cached_aws_access_key_secret
|
17
|
+
end
|
18
|
+
|
19
|
+
def download_aws_access_key_secret
|
20
|
+
bucket = "http://s3.amazonaws.com/#{@meroku_secret}/"
|
21
|
+
uri = URI("#{bucket}aws_access_key_secret")
|
22
|
+
@cached_aws_access_key_secret = Net::HTTP.get(uri).chomp
|
23
|
+
@cached_aws_access_key_secret
|
24
|
+
end
|
25
|
+
|
26
|
+
def private_key
|
27
|
+
return @cached_private_key if @cached_private_key
|
28
|
+
@cached_private_key = download_private_key
|
29
|
+
@cached_private_key
|
30
|
+
end
|
31
|
+
|
32
|
+
def download_private_key
|
33
|
+
uri = URI("http://s3.amazonaws.com/#{@meroku_secret}/meroku.id_rsa")
|
34
|
+
@cached_private_key = Net::HTTP.get(uri).chomp
|
35
|
+
@cached_private_key
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Meroku
|
4
|
+
# https://www.ruby-forum.com/topic/94852
|
5
|
+
# https://forums.sketchup.com/t/how-to-pass-variable-to-a-tool-object-without-using-globals/14191/13
|
6
|
+
module Shared
|
7
|
+
class << self; attr_accessor :secrets; end
|
8
|
+
|
9
|
+
@secrets = Secrets.new
|
10
|
+
|
11
|
+
class << self
|
12
|
+
def ec2_client
|
13
|
+
::Aws::EC2::Client.new(
|
14
|
+
region: 'us-east-1',
|
15
|
+
credentials: ::Aws::Credentials.new(
|
16
|
+
Meroku::Shared.secrets.aws_access_key,
|
17
|
+
Meroku::Shared.secrets.aws_access_key_secret
|
18
|
+
)
|
19
|
+
)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/meroku/user.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Meroku
|
4
|
+
# Logic related to Users login, logout etc
|
5
|
+
module User
|
6
|
+
def self.login(email, password)
|
7
|
+
url = 'https://www.meroku.com/login.json'
|
8
|
+
data = { 'email' => email, 'password' => password }.to_json
|
9
|
+
result = RestClient.post url,
|
10
|
+
data,
|
11
|
+
content_type: :json
|
12
|
+
token = JSON.parse(result.body)['token']
|
13
|
+
IO.write("#{Dir.home}/.meroku_token", token)
|
14
|
+
puts 'Logged in'
|
15
|
+
rescue RestClient::Unauthorized
|
16
|
+
raise Meroku::LoginFailed, 'Login Failed'
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.logout
|
20
|
+
file = "#{Dir.home}/.meroku_token"
|
21
|
+
File.delete(file) if File.exist?(file)
|
22
|
+
puts 'Logged out'
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/meroku/version.rb
CHANGED
data/meroku.gemspec
CHANGED
@@ -6,37 +6,28 @@ require "meroku/version"
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "meroku"
|
8
8
|
spec.version = Meroku::VERSION
|
9
|
-
spec.authors = ["
|
10
|
-
spec.email = ["
|
9
|
+
spec.authors = ["Meroku System"]
|
10
|
+
spec.email = ["meroku.system@gmail.com"]
|
11
11
|
|
12
|
-
spec.summary = %q{Summary}
|
13
|
-
spec.description = %q{Description}
|
14
|
-
spec.homepage = "http://
|
12
|
+
spec.summary = %q{No Summary}
|
13
|
+
spec.description = %q{No Description}
|
14
|
+
spec.homepage = "http://www.github.com/meroku/meroku"
|
15
15
|
spec.license = "MIT"
|
16
|
-
|
17
16
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
18
17
|
f.match(%r{^(test|spec|features)/})
|
19
18
|
end
|
20
|
-
spec.bindir = "
|
21
|
-
spec.executables = spec.files.grep(%r{^
|
19
|
+
spec.bindir = "exe"
|
20
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
21
|
spec.require_paths = ["lib"]
|
23
22
|
|
24
|
-
spec.add_runtime_dependency '
|
25
|
-
spec.add_runtime_dependency
|
26
|
-
spec.add_runtime_dependency "byebug", '~> 9.1', '>= 9.1.0'
|
27
|
-
spec.add_runtime_dependency "activesupport", '~> 5.1', '>= 5.1.4'
|
23
|
+
spec.add_runtime_dependency "byebug", '~> 9.1', '>= 9.1.0'
|
24
|
+
spec.add_runtime_dependency 'rest-client', '>= 1.8'
|
28
25
|
spec.add_runtime_dependency "aws-sdk-ec2", "~> 1"
|
29
|
-
spec.add_runtime_dependency "dotenv", '~> 2.2', '>= 2.2.1'
|
30
26
|
spec.add_runtime_dependency "net-ssh", '~> 4.2', '>= 4.2.0'
|
31
|
-
|
27
|
+
|
32
28
|
spec.add_development_dependency "bundler", "~> 1.15"
|
33
29
|
spec.add_development_dependency "rake", "~> 10.0"
|
34
30
|
spec.add_development_dependency "minitest", "~> 5.0"
|
35
|
-
spec.add_development_dependency "guard", '~> 2.14', '>= 2.14.1'
|
36
|
-
spec.add_development_dependency "guard-minitest", '~> 2.4', '>= 2.4.6'
|
37
31
|
spec.add_development_dependency "simplecov", "~> 0.14.1"
|
38
|
-
spec.add_development_dependency "coveralls", "~> 0.8.21"
|
39
32
|
spec.add_development_dependency "mocha", '~> 1.3', '>= 1.3.0'
|
40
|
-
|
41
33
|
end
|
42
|
-
|
metadata
CHANGED
@@ -1,43 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: meroku
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.23
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Meroku System
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-11-
|
11
|
+
date: 2017-11-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: escape
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 0.0.4
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 0.0.4
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rest-client
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
13
|
- !ruby/object:Gem::Dependency
|
42
14
|
name: byebug
|
43
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -59,25 +31,19 @@ dependencies:
|
|
59
31
|
- !ruby/object:Gem::Version
|
60
32
|
version: 9.1.0
|
61
33
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
34
|
+
name: rest-client
|
63
35
|
requirement: !ruby/object:Gem::Requirement
|
64
36
|
requirements:
|
65
|
-
- - "~>"
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: '5.1'
|
68
37
|
- - ">="
|
69
38
|
- !ruby/object:Gem::Version
|
70
|
-
version:
|
39
|
+
version: '1.8'
|
71
40
|
type: :runtime
|
72
41
|
prerelease: false
|
73
42
|
version_requirements: !ruby/object:Gem::Requirement
|
74
43
|
requirements:
|
75
|
-
- - "~>"
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '5.1'
|
78
44
|
- - ">="
|
79
45
|
- !ruby/object:Gem::Version
|
80
|
-
version:
|
46
|
+
version: '1.8'
|
81
47
|
- !ruby/object:Gem::Dependency
|
82
48
|
name: aws-sdk-ec2
|
83
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -92,26 +58,6 @@ dependencies:
|
|
92
58
|
- - "~>"
|
93
59
|
- !ruby/object:Gem::Version
|
94
60
|
version: '1'
|
95
|
-
- !ruby/object:Gem::Dependency
|
96
|
-
name: dotenv
|
97
|
-
requirement: !ruby/object:Gem::Requirement
|
98
|
-
requirements:
|
99
|
-
- - "~>"
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version: '2.2'
|
102
|
-
- - ">="
|
103
|
-
- !ruby/object:Gem::Version
|
104
|
-
version: 2.2.1
|
105
|
-
type: :runtime
|
106
|
-
prerelease: false
|
107
|
-
version_requirements: !ruby/object:Gem::Requirement
|
108
|
-
requirements:
|
109
|
-
- - "~>"
|
110
|
-
- !ruby/object:Gem::Version
|
111
|
-
version: '2.2'
|
112
|
-
- - ">="
|
113
|
-
- !ruby/object:Gem::Version
|
114
|
-
version: 2.2.1
|
115
61
|
- !ruby/object:Gem::Dependency
|
116
62
|
name: net-ssh
|
117
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -174,46 +120,6 @@ dependencies:
|
|
174
120
|
- - "~>"
|
175
121
|
- !ruby/object:Gem::Version
|
176
122
|
version: '5.0'
|
177
|
-
- !ruby/object:Gem::Dependency
|
178
|
-
name: guard
|
179
|
-
requirement: !ruby/object:Gem::Requirement
|
180
|
-
requirements:
|
181
|
-
- - "~>"
|
182
|
-
- !ruby/object:Gem::Version
|
183
|
-
version: '2.14'
|
184
|
-
- - ">="
|
185
|
-
- !ruby/object:Gem::Version
|
186
|
-
version: 2.14.1
|
187
|
-
type: :development
|
188
|
-
prerelease: false
|
189
|
-
version_requirements: !ruby/object:Gem::Requirement
|
190
|
-
requirements:
|
191
|
-
- - "~>"
|
192
|
-
- !ruby/object:Gem::Version
|
193
|
-
version: '2.14'
|
194
|
-
- - ">="
|
195
|
-
- !ruby/object:Gem::Version
|
196
|
-
version: 2.14.1
|
197
|
-
- !ruby/object:Gem::Dependency
|
198
|
-
name: guard-minitest
|
199
|
-
requirement: !ruby/object:Gem::Requirement
|
200
|
-
requirements:
|
201
|
-
- - "~>"
|
202
|
-
- !ruby/object:Gem::Version
|
203
|
-
version: '2.4'
|
204
|
-
- - ">="
|
205
|
-
- !ruby/object:Gem::Version
|
206
|
-
version: 2.4.6
|
207
|
-
type: :development
|
208
|
-
prerelease: false
|
209
|
-
version_requirements: !ruby/object:Gem::Requirement
|
210
|
-
requirements:
|
211
|
-
- - "~>"
|
212
|
-
- !ruby/object:Gem::Version
|
213
|
-
version: '2.4'
|
214
|
-
- - ">="
|
215
|
-
- !ruby/object:Gem::Version
|
216
|
-
version: 2.4.6
|
217
123
|
- !ruby/object:Gem::Dependency
|
218
124
|
name: simplecov
|
219
125
|
requirement: !ruby/object:Gem::Requirement
|
@@ -228,20 +134,6 @@ dependencies:
|
|
228
134
|
- - "~>"
|
229
135
|
- !ruby/object:Gem::Version
|
230
136
|
version: 0.14.1
|
231
|
-
- !ruby/object:Gem::Dependency
|
232
|
-
name: coveralls
|
233
|
-
requirement: !ruby/object:Gem::Requirement
|
234
|
-
requirements:
|
235
|
-
- - "~>"
|
236
|
-
- !ruby/object:Gem::Version
|
237
|
-
version: 0.8.21
|
238
|
-
type: :development
|
239
|
-
prerelease: false
|
240
|
-
version_requirements: !ruby/object:Gem::Requirement
|
241
|
-
requirements:
|
242
|
-
- - "~>"
|
243
|
-
- !ruby/object:Gem::Version
|
244
|
-
version: 0.8.21
|
245
137
|
- !ruby/object:Gem::Dependency
|
246
138
|
name: mocha
|
247
139
|
requirement: !ruby/object:Gem::Requirement
|
@@ -262,13 +154,10 @@ dependencies:
|
|
262
154
|
- - ">="
|
263
155
|
- !ruby/object:Gem::Version
|
264
156
|
version: 1.3.0
|
265
|
-
description: Description
|
157
|
+
description: No Description
|
266
158
|
email:
|
267
|
-
-
|
268
|
-
executables:
|
269
|
-
- console
|
270
|
-
- meroku
|
271
|
-
- setup
|
159
|
+
- meroku.system@gmail.com
|
160
|
+
executables: []
|
272
161
|
extensions: []
|
273
162
|
extra_rdoc_files: []
|
274
163
|
files:
|
@@ -276,216 +165,28 @@ files:
|
|
276
165
|
- ".ruby-version"
|
277
166
|
- ".travis.yml"
|
278
167
|
- Gemfile
|
168
|
+
- Guardfile
|
279
169
|
- LICENSE.txt
|
280
170
|
- README.md
|
281
171
|
- Rakefile
|
282
172
|
- bin/console
|
283
173
|
- bin/meroku
|
284
174
|
- bin/setup
|
285
|
-
-
|
286
|
-
-
|
287
|
-
- frontend/.ruby-version
|
288
|
-
- frontend/Gemfile
|
289
|
-
- frontend/Gemfile.lock
|
290
|
-
- frontend/README.md
|
291
|
-
- frontend/Rakefile
|
292
|
-
- frontend/app/assets/config/manifest.js
|
293
|
-
- frontend/app/assets/images/.keep
|
294
|
-
- frontend/app/assets/javascripts/application.js
|
295
|
-
- frontend/app/assets/javascripts/apps.coffee
|
296
|
-
- frontend/app/assets/javascripts/cable.js
|
297
|
-
- frontend/app/assets/javascripts/channels/.keep
|
298
|
-
- frontend/app/assets/javascripts/pages.coffee
|
299
|
-
- frontend/app/assets/javascripts/publickeys.coffee
|
300
|
-
- frontend/app/assets/stylesheets/application.css
|
301
|
-
- frontend/app/assets/stylesheets/apps.scss
|
302
|
-
- frontend/app/assets/stylesheets/pages.scss
|
303
|
-
- frontend/app/assets/stylesheets/publickeys.scss
|
304
|
-
- frontend/app/assets/stylesheets/scaffolds.scss
|
305
|
-
- frontend/app/channels/application_cable/channel.rb
|
306
|
-
- frontend/app/channels/application_cable/connection.rb
|
307
|
-
- frontend/app/controllers/application_controller.rb
|
308
|
-
- frontend/app/controllers/apps_controller.rb
|
309
|
-
- frontend/app/controllers/concerns/.keep
|
310
|
-
- frontend/app/controllers/publickeys_controller.rb
|
311
|
-
- frontend/app/controllers/users/confirmations_controller.rb
|
312
|
-
- frontend/app/controllers/users/omniauth_callbacks_controller.rb
|
313
|
-
- frontend/app/controllers/users/passwords_controller.rb
|
314
|
-
- frontend/app/controllers/users/registrations_controller.rb
|
315
|
-
- frontend/app/controllers/users/sessions_controller.rb
|
316
|
-
- frontend/app/controllers/users/unlocks_controller.rb
|
317
|
-
- frontend/app/helpers/application_helper.rb
|
318
|
-
- frontend/app/helpers/apps_helper.rb
|
319
|
-
- frontend/app/helpers/pages_helper.rb
|
320
|
-
- frontend/app/helpers/publickeys_helper.rb
|
321
|
-
- frontend/app/jobs/application_job.rb
|
322
|
-
- frontend/app/lib/cmd.rb
|
323
|
-
- frontend/app/mailers/application_mailer.rb
|
324
|
-
- frontend/app/models/app.rb
|
325
|
-
- frontend/app/models/application_record.rb
|
326
|
-
- frontend/app/models/concerns/.keep
|
327
|
-
- frontend/app/models/publickey.rb
|
328
|
-
- frontend/app/models/user.rb
|
329
|
-
- frontend/app/policies/application_policy.rb
|
330
|
-
- frontend/app/policies/publickey_policy.rb
|
331
|
-
- frontend/app/serializable/serializable_app.rb
|
332
|
-
- frontend/app/serializable/serializable_publickey.rb
|
333
|
-
- frontend/app/serializable/serializable_user.rb
|
334
|
-
- frontend/app/serializers/app_serializer.rb
|
335
|
-
- frontend/app/serializers/publickey_serializer.rb
|
336
|
-
- frontend/app/views/apps/_app.json.jbuilder
|
337
|
-
- frontend/app/views/apps/_form.html.erb
|
338
|
-
- frontend/app/views/apps/edit.html.erb
|
339
|
-
- frontend/app/views/apps/index.html.erb
|
340
|
-
- frontend/app/views/apps/index.json.jbuilder
|
341
|
-
- frontend/app/views/apps/new.html.erb
|
342
|
-
- frontend/app/views/apps/show.html.erb
|
343
|
-
- frontend/app/views/apps/show.json.jbuilder
|
344
|
-
- frontend/app/views/devise/confirmations/new.html.erb
|
345
|
-
- frontend/app/views/devise/mailer/confirmation_instructions.html.erb
|
346
|
-
- frontend/app/views/devise/mailer/email_changed.html.erb
|
347
|
-
- frontend/app/views/devise/mailer/password_change.html.erb
|
348
|
-
- frontend/app/views/devise/mailer/reset_password_instructions.html.erb
|
349
|
-
- frontend/app/views/devise/mailer/unlock_instructions.html.erb
|
350
|
-
- frontend/app/views/devise/passwords/edit.html.erb
|
351
|
-
- frontend/app/views/devise/passwords/new.html.erb
|
352
|
-
- frontend/app/views/devise/registrations/edit.html.erb
|
353
|
-
- frontend/app/views/devise/registrations/new.html.erb
|
354
|
-
- frontend/app/views/devise/sessions/new.html.erb
|
355
|
-
- frontend/app/views/devise/shared/_links.html.erb
|
356
|
-
- frontend/app/views/devise/unlocks/new.html.erb
|
357
|
-
- frontend/app/views/layouts/application.html.erb
|
358
|
-
- frontend/app/views/layouts/mailer.html.erb
|
359
|
-
- frontend/app/views/layouts/mailer.text.erb
|
360
|
-
- frontend/app/views/publickeys/_form.html.erb
|
361
|
-
- frontend/app/views/publickeys/_publickey.json.jbuilder
|
362
|
-
- frontend/app/views/publickeys/edit.html.erb
|
363
|
-
- frontend/app/views/publickeys/index.html.erb
|
364
|
-
- frontend/app/views/publickeys/index.json.jbuilder
|
365
|
-
- frontend/app/views/publickeys/new.html.erb
|
366
|
-
- frontend/app/views/publickeys/show.html.erb
|
367
|
-
- frontend/app/views/publickeys/show.json.jbuilder
|
368
|
-
- frontend/bin/bundle
|
369
|
-
- frontend/bin/rails
|
370
|
-
- frontend/bin/rake
|
371
|
-
- frontend/bin/setup
|
372
|
-
- frontend/bin/spring
|
373
|
-
- frontend/bin/update
|
374
|
-
- frontend/bin/yarn
|
375
|
-
- frontend/config.ru
|
376
|
-
- frontend/config/application.rb
|
377
|
-
- frontend/config/boot.rb
|
378
|
-
- frontend/config/cable.yml
|
379
|
-
- frontend/config/database.yml
|
380
|
-
- frontend/config/environment.rb
|
381
|
-
- frontend/config/environments/development.rb
|
382
|
-
- frontend/config/environments/production.rb
|
383
|
-
- frontend/config/environments/test.rb
|
384
|
-
- frontend/config/initializers/ams.rb
|
385
|
-
- frontend/config/initializers/application_controller_renderer.rb
|
386
|
-
- frontend/config/initializers/assets.rb
|
387
|
-
- frontend/config/initializers/backtrace_silencers.rb
|
388
|
-
- frontend/config/initializers/cookies_serializer.rb
|
389
|
-
- frontend/config/initializers/devise.rb
|
390
|
-
- frontend/config/initializers/filter_parameter_logging.rb
|
391
|
-
- frontend/config/initializers/inflections.rb
|
392
|
-
- frontend/config/initializers/mime_types.rb
|
393
|
-
- frontend/config/initializers/wrap_parameters.rb
|
394
|
-
- frontend/config/locales/devise.en.yml
|
395
|
-
- frontend/config/locales/en.yml
|
396
|
-
- frontend/config/puma.rb
|
397
|
-
- frontend/config/routes.rb
|
398
|
-
- frontend/config/secrets.yml
|
399
|
-
- frontend/config/spring.rb
|
400
|
-
- frontend/db/migrate/20171023223732_devise_create_users.rb
|
401
|
-
- frontend/db/migrate/20171025203706_create_apps.rb
|
402
|
-
- frontend/db/migrate/20171025223804_add_user_to_apps.rb
|
403
|
-
- frontend/db/migrate/20171026071440_create_publickeys.rb
|
404
|
-
- frontend/db/migrate/20171028150506_add_apisecret_to_users.rb
|
405
|
-
- frontend/db/schema.rb
|
406
|
-
- frontend/db/seeds.rb
|
407
|
-
- frontend/etc_nginx_sites-enabled_default
|
408
|
-
- frontend/etc_nginx_sites-enabled_template
|
409
|
-
- frontend/lib/assets/.keep
|
410
|
-
- frontend/lib/tasks/.keep
|
411
|
-
- frontend/log/.keep
|
412
|
-
- frontend/package.json
|
413
|
-
- frontend/public/404.html
|
414
|
-
- frontend/public/422.html
|
415
|
-
- frontend/public/500.html
|
416
|
-
- frontend/public/Meroku.html
|
417
|
-
- frontend/public/Meroku/Api.html
|
418
|
-
- frontend/public/Meroku/Api/Request.html
|
419
|
-
- frontend/public/Meroku/Aws/Ec2.html
|
420
|
-
- frontend/public/Meroku/CLI.html
|
421
|
-
- frontend/public/Meroku/CLI/Help.html
|
422
|
-
- frontend/public/Meroku/CLI/Secrets.html
|
423
|
-
- frontend/public/Meroku/CLI/Session.html
|
424
|
-
- frontend/public/Meroku/Extensions.html
|
425
|
-
- frontend/public/Meroku/Infrastructure.html
|
426
|
-
- frontend/public/Meroku/Infrastructure/Server.html
|
427
|
-
- frontend/public/Meroku/Node.html
|
428
|
-
- frontend/public/Meroku/Tunnelable.html
|
429
|
-
- frontend/public/_index.html
|
430
|
-
- frontend/public/apple-touch-icon-precomposed.png
|
431
|
-
- frontend/public/apple-touch-icon.png
|
432
|
-
- frontend/public/class_list.html
|
433
|
-
- frontend/public/css/common.css
|
434
|
-
- frontend/public/css/full_list.css
|
435
|
-
- frontend/public/css/style.css
|
436
|
-
- frontend/public/favicon.ico
|
437
|
-
- frontend/public/file.README.html
|
438
|
-
- frontend/public/file_list.html
|
439
|
-
- frontend/public/frames.html
|
440
|
-
- frontend/public/index.html
|
441
|
-
- frontend/public/js/app.js
|
442
|
-
- frontend/public/js/full_list.js
|
443
|
-
- frontend/public/js/jquery.js
|
444
|
-
- frontend/public/method_list.html
|
445
|
-
- frontend/public/robots.txt
|
446
|
-
- frontend/public/top-level-namespace.html
|
447
|
-
- frontend/test/application_system_test_case.rb
|
448
|
-
- frontend/test/controllers/.keep
|
449
|
-
- frontend/test/controllers/apps_controller_test.rb
|
450
|
-
- frontend/test/controllers/pages_controller_test.rb
|
451
|
-
- frontend/test/controllers/publickeys_controller_test.rb
|
452
|
-
- frontend/test/fixtures/.keep
|
453
|
-
- frontend/test/fixtures/apps.yml
|
454
|
-
- frontend/test/fixtures/files/.keep
|
455
|
-
- frontend/test/fixtures/publickeys.yml
|
456
|
-
- frontend/test/fixtures/users.yml
|
457
|
-
- frontend/test/helpers/.keep
|
458
|
-
- frontend/test/integration/.keep
|
459
|
-
- frontend/test/mailers/.keep
|
460
|
-
- frontend/test/models/.keep
|
461
|
-
- frontend/test/models/app_test.rb
|
462
|
-
- frontend/test/models/publickey_test.rb
|
463
|
-
- frontend/test/models/user_test.rb
|
464
|
-
- frontend/test/policies/publickey_policy_test.rb
|
465
|
-
- frontend/test/system/.keep
|
466
|
-
- frontend/test/system/apps_test.rb
|
467
|
-
- frontend/test/system/publickeys_test.rb
|
468
|
-
- frontend/test/test_helper.rb
|
469
|
-
- frontend/tmp/.keep
|
470
|
-
- frontend/vendor/.keep
|
175
|
+
- data/etc_nginx_sites-enabled_template
|
176
|
+
- guard
|
471
177
|
- lib/meroku.rb
|
472
178
|
- lib/meroku/api.rb
|
473
|
-
- lib/meroku/api/request.rb
|
474
179
|
- lib/meroku/aws.rb
|
475
|
-
- lib/meroku/aws/ec2.rb
|
476
180
|
- lib/meroku/cli.rb
|
477
|
-
- lib/meroku/
|
478
|
-
- lib/meroku/cli/secrets.rb
|
479
|
-
- lib/meroku/cli/session.rb
|
480
|
-
- lib/meroku/extensions.rb
|
481
|
-
- lib/meroku/infrastructure.rb
|
482
|
-
- lib/meroku/infrastructure/server.rb
|
181
|
+
- lib/meroku/error.rb
|
483
182
|
- lib/meroku/node.rb
|
484
|
-
- lib/meroku/
|
183
|
+
- lib/meroku/options.rb
|
184
|
+
- lib/meroku/secrets.rb
|
185
|
+
- lib/meroku/shared.rb
|
186
|
+
- lib/meroku/user.rb
|
485
187
|
- lib/meroku/version.rb
|
486
188
|
- meroku.gemspec
|
487
|
-
|
488
|
-
homepage: http://example.net
|
189
|
+
homepage: http://www.github.com/meroku/meroku
|
489
190
|
licenses:
|
490
191
|
- MIT
|
491
192
|
metadata: {}
|
@@ -508,5 +209,5 @@ rubyforge_project:
|
|
508
209
|
rubygems_version: 2.6.13
|
509
210
|
signing_key:
|
510
211
|
specification_version: 4
|
511
|
-
summary: Summary
|
212
|
+
summary: No Summary
|
512
213
|
test_files: []
|