meroku 2.0.22 → 2.0.23

Sign up to get free protection for your applications and to get access to all the features.
Files changed (217) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -1
  3. data/.travis.yml +0 -10
  4. data/Guardfile +43 -0
  5. data/LICENSE.txt +1 -1
  6. data/README.md +29 -89
  7. data/bin/meroku +5 -3
  8. data/{frontend → data}/etc_nginx_sites-enabled_template +0 -0
  9. data/guard +25 -0
  10. data/lib/meroku.rb +17 -20
  11. data/lib/meroku/api.rb +15 -3
  12. data/lib/meroku/aws.rb +69 -6
  13. data/lib/meroku/cli.rb +23 -91
  14. data/lib/meroku/error.rb +11 -0
  15. data/lib/meroku/node.rb +70 -70
  16. data/lib/meroku/options.rb +79 -0
  17. data/lib/meroku/secrets.rb +38 -0
  18. data/lib/meroku/shared.rb +23 -0
  19. data/lib/meroku/user.rb +25 -0
  20. data/lib/meroku/version.rb +3 -1
  21. data/meroku.gemspec +10 -19
  22. metadata +20 -319
  23. data/circle.yml +0 -23
  24. data/frontend/.gitignore +0 -23
  25. data/frontend/.ruby-version +0 -2
  26. data/frontend/Gemfile +0 -61
  27. data/frontend/Gemfile.lock +0 -236
  28. data/frontend/README.md +0 -24
  29. data/frontend/Rakefile +0 -6
  30. data/frontend/app/assets/config/manifest.js +0 -3
  31. data/frontend/app/assets/images/.keep +0 -0
  32. data/frontend/app/assets/javascripts/application.js +0 -15
  33. data/frontend/app/assets/javascripts/apps.coffee +0 -3
  34. data/frontend/app/assets/javascripts/cable.js +0 -13
  35. data/frontend/app/assets/javascripts/channels/.keep +0 -0
  36. data/frontend/app/assets/javascripts/pages.coffee +0 -3
  37. data/frontend/app/assets/javascripts/publickeys.coffee +0 -3
  38. data/frontend/app/assets/stylesheets/application.css +0 -15
  39. data/frontend/app/assets/stylesheets/apps.scss +0 -3
  40. data/frontend/app/assets/stylesheets/pages.scss +0 -3
  41. data/frontend/app/assets/stylesheets/publickeys.scss +0 -3
  42. data/frontend/app/assets/stylesheets/scaffolds.scss +0 -84
  43. data/frontend/app/channels/application_cable/channel.rb +0 -4
  44. data/frontend/app/channels/application_cable/connection.rb +0 -4
  45. data/frontend/app/controllers/application_controller.rb +0 -4
  46. data/frontend/app/controllers/apps_controller.rb +0 -83
  47. data/frontend/app/controllers/concerns/.keep +0 -0
  48. data/frontend/app/controllers/publickeys_controller.rb +0 -82
  49. data/frontend/app/controllers/users/confirmations_controller.rb +0 -28
  50. data/frontend/app/controllers/users/omniauth_callbacks_controller.rb +0 -28
  51. data/frontend/app/controllers/users/passwords_controller.rb +0 -32
  52. data/frontend/app/controllers/users/registrations_controller.rb +0 -74
  53. data/frontend/app/controllers/users/sessions_controller.rb +0 -34
  54. data/frontend/app/controllers/users/unlocks_controller.rb +0 -28
  55. data/frontend/app/helpers/application_helper.rb +0 -2
  56. data/frontend/app/helpers/apps_helper.rb +0 -2
  57. data/frontend/app/helpers/pages_helper.rb +0 -2
  58. data/frontend/app/helpers/publickeys_helper.rb +0 -2
  59. data/frontend/app/jobs/application_job.rb +0 -2
  60. data/frontend/app/lib/cmd.rb +0 -11
  61. data/frontend/app/mailers/application_mailer.rb +0 -4
  62. data/frontend/app/models/app.rb +0 -37
  63. data/frontend/app/models/application_record.rb +0 -3
  64. data/frontend/app/models/concerns/.keep +0 -0
  65. data/frontend/app/models/publickey.rb +0 -15
  66. data/frontend/app/models/user.rb +0 -22
  67. data/frontend/app/policies/application_policy.rb +0 -53
  68. data/frontend/app/policies/publickey_policy.rb +0 -7
  69. data/frontend/app/serializable/serializable_app.rb +0 -6
  70. data/frontend/app/serializable/serializable_publickey.rb +0 -7
  71. data/frontend/app/serializable/serializable_user.rb +0 -8
  72. data/frontend/app/serializers/app_serializer.rb +0 -3
  73. data/frontend/app/serializers/publickey_serializer.rb +0 -4
  74. data/frontend/app/views/apps/_app.json.jbuilder +0 -2
  75. data/frontend/app/views/apps/_form.html.erb +0 -22
  76. data/frontend/app/views/apps/edit.html.erb +0 -6
  77. data/frontend/app/views/apps/index.html.erb +0 -27
  78. data/frontend/app/views/apps/index.json.jbuilder +0 -1
  79. data/frontend/app/views/apps/new.html.erb +0 -5
  80. data/frontend/app/views/apps/show.html.erb +0 -9
  81. data/frontend/app/views/apps/show.json.jbuilder +0 -1
  82. data/frontend/app/views/devise/confirmations/new.html.erb +0 -16
  83. data/frontend/app/views/devise/mailer/confirmation_instructions.html.erb +0 -5
  84. data/frontend/app/views/devise/mailer/email_changed.html.erb +0 -7
  85. data/frontend/app/views/devise/mailer/password_change.html.erb +0 -3
  86. data/frontend/app/views/devise/mailer/reset_password_instructions.html.erb +0 -8
  87. data/frontend/app/views/devise/mailer/unlock_instructions.html.erb +0 -7
  88. data/frontend/app/views/devise/passwords/edit.html.erb +0 -25
  89. data/frontend/app/views/devise/passwords/new.html.erb +0 -16
  90. data/frontend/app/views/devise/registrations/edit.html.erb +0 -43
  91. data/frontend/app/views/devise/registrations/new.html.erb +0 -29
  92. data/frontend/app/views/devise/sessions/new.html.erb +0 -26
  93. data/frontend/app/views/devise/shared/_links.html.erb +0 -25
  94. data/frontend/app/views/devise/unlocks/new.html.erb +0 -16
  95. data/frontend/app/views/layouts/application.html.erb +0 -16
  96. data/frontend/app/views/layouts/mailer.html.erb +0 -13
  97. data/frontend/app/views/layouts/mailer.text.erb +0 -1
  98. data/frontend/app/views/publickeys/_form.html.erb +0 -32
  99. data/frontend/app/views/publickeys/_publickey.json.jbuilder +0 -2
  100. data/frontend/app/views/publickeys/edit.html.erb +0 -6
  101. data/frontend/app/views/publickeys/index.html.erb +0 -31
  102. data/frontend/app/views/publickeys/index.json.jbuilder +0 -1
  103. data/frontend/app/views/publickeys/new.html.erb +0 -5
  104. data/frontend/app/views/publickeys/show.html.erb +0 -19
  105. data/frontend/app/views/publickeys/show.json.jbuilder +0 -1
  106. data/frontend/bin/bundle +0 -3
  107. data/frontend/bin/rails +0 -9
  108. data/frontend/bin/rake +0 -9
  109. data/frontend/bin/setup +0 -38
  110. data/frontend/bin/spring +0 -17
  111. data/frontend/bin/update +0 -29
  112. data/frontend/bin/yarn +0 -11
  113. data/frontend/config.ru +0 -5
  114. data/frontend/config/application.rb +0 -18
  115. data/frontend/config/boot.rb +0 -3
  116. data/frontend/config/cable.yml +0 -10
  117. data/frontend/config/database.yml +0 -87
  118. data/frontend/config/environment.rb +0 -5
  119. data/frontend/config/environments/development.rb +0 -56
  120. data/frontend/config/environments/production.rb +0 -97
  121. data/frontend/config/environments/test.rb +0 -42
  122. data/frontend/config/initializers/ams.rb +0 -3
  123. data/frontend/config/initializers/application_controller_renderer.rb +0 -8
  124. data/frontend/config/initializers/assets.rb +0 -14
  125. data/frontend/config/initializers/backtrace_silencers.rb +0 -7
  126. data/frontend/config/initializers/cookies_serializer.rb +0 -5
  127. data/frontend/config/initializers/devise.rb +0 -277
  128. data/frontend/config/initializers/filter_parameter_logging.rb +0 -4
  129. data/frontend/config/initializers/inflections.rb +0 -16
  130. data/frontend/config/initializers/mime_types.rb +0 -4
  131. data/frontend/config/initializers/wrap_parameters.rb +0 -14
  132. data/frontend/config/locales/devise.en.yml +0 -64
  133. data/frontend/config/locales/en.yml +0 -33
  134. data/frontend/config/puma.rb +0 -66
  135. data/frontend/config/routes.rb +0 -11
  136. data/frontend/config/secrets.yml +0 -32
  137. data/frontend/config/spring.rb +0 -6
  138. data/frontend/db/migrate/20171023223732_devise_create_users.rb +0 -42
  139. data/frontend/db/migrate/20171025203706_create_apps.rb +0 -9
  140. data/frontend/db/migrate/20171025223804_add_user_to_apps.rb +0 -5
  141. data/frontend/db/migrate/20171026071440_create_publickeys.rb +0 -11
  142. data/frontend/db/migrate/20171028150506_add_apisecret_to_users.rb +0 -6
  143. data/frontend/db/schema.rb +0 -32
  144. data/frontend/db/seeds.rb +0 -7
  145. data/frontend/etc_nginx_sites-enabled_default +0 -29
  146. data/frontend/lib/assets/.keep +0 -0
  147. data/frontend/lib/tasks/.keep +0 -0
  148. data/frontend/log/.keep +0 -0
  149. data/frontend/package.json +0 -5
  150. data/frontend/public/404.html +0 -67
  151. data/frontend/public/422.html +0 -67
  152. data/frontend/public/500.html +0 -66
  153. data/frontend/public/Meroku.html +0 -140
  154. data/frontend/public/Meroku/Api.html +0 -129
  155. data/frontend/public/Meroku/Api/Request.html +0 -221
  156. data/frontend/public/Meroku/Aws/Ec2.html +0 -477
  157. data/frontend/public/Meroku/CLI.html +0 -796
  158. data/frontend/public/Meroku/CLI/Help.html +0 -224
  159. data/frontend/public/Meroku/CLI/Secrets.html +0 -191
  160. data/frontend/public/Meroku/CLI/Session.html +0 -456
  161. data/frontend/public/Meroku/Extensions.html +0 -405
  162. data/frontend/public/Meroku/Infrastructure.html +0 -279
  163. data/frontend/public/Meroku/Infrastructure/Server.html +0 -373
  164. data/frontend/public/Meroku/Node.html +0 -845
  165. data/frontend/public/Meroku/Tunnelable.html +0 -247
  166. data/frontend/public/_index.html +0 -273
  167. data/frontend/public/apple-touch-icon-precomposed.png +0 -0
  168. data/frontend/public/apple-touch-icon.png +0 -0
  169. data/frontend/public/class_list.html +0 -51
  170. data/frontend/public/css/common.css +0 -1
  171. data/frontend/public/css/full_list.css +0 -58
  172. data/frontend/public/css/style.css +0 -492
  173. data/frontend/public/favicon.ico +0 -0
  174. data/frontend/public/file.README.html +0 -179
  175. data/frontend/public/file_list.html +0 -56
  176. data/frontend/public/frames.html +0 -17
  177. data/frontend/public/index.html +0 -179
  178. data/frontend/public/js/app.js +0 -248
  179. data/frontend/public/js/full_list.js +0 -216
  180. data/frontend/public/js/jquery.js +0 -4
  181. data/frontend/public/method_list.html +0 -395
  182. data/frontend/public/robots.txt +0 -2
  183. data/frontend/public/top-level-namespace.html +0 -110
  184. data/frontend/test/application_system_test_case.rb +0 -5
  185. data/frontend/test/controllers/.keep +0 -0
  186. data/frontend/test/controllers/apps_controller_test.rb +0 -48
  187. data/frontend/test/controllers/pages_controller_test.rb +0 -9
  188. data/frontend/test/controllers/publickeys_controller_test.rb +0 -48
  189. data/frontend/test/fixtures/.keep +0 -0
  190. data/frontend/test/fixtures/apps.yml +0 -7
  191. data/frontend/test/fixtures/files/.keep +0 -0
  192. data/frontend/test/fixtures/publickeys.yml +0 -11
  193. data/frontend/test/fixtures/users.yml +0 -11
  194. data/frontend/test/helpers/.keep +0 -0
  195. data/frontend/test/integration/.keep +0 -0
  196. data/frontend/test/mailers/.keep +0 -0
  197. data/frontend/test/models/.keep +0 -0
  198. data/frontend/test/models/app_test.rb +0 -7
  199. data/frontend/test/models/publickey_test.rb +0 -7
  200. data/frontend/test/models/user_test.rb +0 -7
  201. data/frontend/test/policies/publickey_policy_test.rb +0 -19
  202. data/frontend/test/system/.keep +0 -0
  203. data/frontend/test/system/apps_test.rb +0 -9
  204. data/frontend/test/system/publickeys_test.rb +0 -9
  205. data/frontend/test/test_helper.rb +0 -9
  206. data/frontend/tmp/.keep +0 -0
  207. data/frontend/vendor/.keep +0 -0
  208. data/lib/meroku/api/request.rb +0 -17
  209. data/lib/meroku/aws/ec2.rb +0 -59
  210. data/lib/meroku/cli/help.rb +0 -27
  211. data/lib/meroku/cli/secrets.rb +0 -23
  212. data/lib/meroku/cli/session.rb +0 -46
  213. data/lib/meroku/extensions.rb +0 -32
  214. data/lib/meroku/infrastructure.rb +0 -23
  215. data/lib/meroku/infrastructure/server.rb +0 -20
  216. data/lib/meroku/tunnelable.rb +0 -35
  217. data/modified-cedar-14.sh +0 -171
@@ -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
- # At the moment we run on one ec2 node
3
- # This class represents that node
4
+ # A node is an ec2 node, that powers meroku
4
5
  class Node
5
- include Meroku::Aws::Ec2
6
- include Meroku::Tunnelable
6
+ include Meroku::Shared
7
+ include Meroku::Aws
8
+ attr_reader :instance_id, :connection
7
9
 
8
10
  def initialize
9
- puts "run_instances()"
10
- @instance = make_instance
11
- @tunnel_ip = Meroku::Aws::IP
12
- @tunnel_username = "ubuntu"
13
- @tunnel_password = "password"
14
- @tunnel_key_name = Meroku::Aws::KEY_NAME
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 associate_address
21
- ip = "eipalloc-139f7823"
22
- Meroku::Aws::Ec2.associate_address(ip, @instance.instance_id)
23
- self
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 configure_keys
27
- str = <<~HEREDOC
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 add_sources
40
- str = <<~HEREDOC
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 ubuntu_updates
53
- str = <<~HEREDOC
54
- DEBIAN_FRONTEND=noninteractive sudo apt-get update -qq
55
- DEBIAN_FRONTEND=noninteractive sudo apt-get upgrade -yqq --force-yes 2>/dev/null >/dev/null
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
- str = <<~HEREDOC
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
- str = <<~HEREDOC
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 '#{ENV['SECRET']}';"
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
- str = <<~HEREDOC
83
- cd ~; git clone https://github.com/meroku/meroku;
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
- str = <<~HEREDOC
93
+ execute_script <<~HEREDOC
91
94
  sudo rm -f /etc/nginx/sites-enabled/* /etc/nginx/sites-available/*
92
- sudo cp ~/meroku/frontend/etc_nginx_sites-enabled_default /etc/nginx/sites-enabled/default
93
- sudo mkdir /sharedro && sudo chmod 777 /sharedro
94
- sudo cp /home/ubuntu/meroku/frontend/etc_nginx_sites-enabled_template /sharedro
95
- sudo chmod a+r /sharedro/etc_nginx_sites-enabled_template
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
- str = <<~HEREDOC
103
- cd ~/meroku/frontend; sudo gem install bundler; bundle;
104
- cd ~/meroku/frontend; SECRET=#{ENV['SECRET']} RAILS_ENV=production bundle exec rails assets:precompile
105
- cd ~/meroku/frontend; SECRET=#{ENV['SECRET']} RAILS_ENV=production bundle exec rake db:migrate
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
@@ -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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Meroku
2
- VERSION = "2.0.22"
4
+ VERSION = '2.0.23'
3
5
  end
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 = ["Sam Weerasinghe"]
10
- spec.email = ["oystersauce8@gmail.com"]
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://example.net"
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 = "bin"
21
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
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 'escape', '~> 0.0.4'
25
- spec.add_runtime_dependency 'rest-client'
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.22
4
+ version: 2.0.23
5
5
  platform: ruby
6
6
  authors:
7
- - Sam Weerasinghe
7
+ - Meroku System
8
8
  autorequire:
9
- bindir: bin
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2017-11-01 00:00:00.000000000 Z
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: activesupport
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: 5.1.4
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: 5.1.4
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
- - oystersauce8@gmail.com
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
- - circle.yml
286
- - frontend/.gitignore
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/cli/help.rb
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/tunnelable.rb
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
- - modified-cedar-14.sh
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: []