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.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -5
  3. data/bin/meroku +1 -1
  4. data/circle.yml +23 -0
  5. data/frontend/Gemfile +5 -2
  6. data/frontend/Gemfile.lock +5 -2
  7. data/frontend/app/controllers/application_controller.rb +1 -0
  8. data/frontend/app/controllers/apps_controller.rb +46 -48
  9. data/frontend/app/controllers/publickeys_controller.rb +45 -46
  10. data/frontend/app/controllers/users/registrations_controller.rb +0 -15
  11. data/frontend/app/controllers/users/sessions_controller.rb +12 -3
  12. data/frontend/app/lib/cmd.rb +11 -0
  13. data/frontend/app/models/app.rb +18 -11
  14. data/frontend/app/models/publickey.rb +1 -1
  15. data/frontend/app/models/user.rb +5 -4
  16. data/frontend/app/policies/application_policy.rb +53 -0
  17. data/frontend/app/policies/publickey_policy.rb +7 -0
  18. data/frontend/app/serializable/serializable_user.rb +2 -1
  19. data/frontend/app/views/layouts/application.html.erb +1 -1
  20. data/frontend/config/database.yml +72 -10
  21. data/frontend/config/routes.rb +6 -14
  22. data/frontend/db/migrate/20171028150506_add_apisecret_to_users.rb +6 -0
  23. data/frontend/etc_nginx_sites-enabled_default +1 -1
  24. data/frontend/public/Meroku.html +140 -0
  25. data/frontend/public/Meroku/Api.html +129 -0
  26. data/frontend/public/Meroku/Api/Request.html +221 -0
  27. data/frontend/public/Meroku/Aws.html +212 -0
  28. data/frontend/public/Meroku/Aws/Ec2.html +477 -0
  29. data/frontend/public/Meroku/CLI.html +784 -0
  30. data/frontend/public/Meroku/CLI/AdminUser.html +192 -0
  31. data/frontend/public/Meroku/CLI/Help.html +224 -0
  32. data/frontend/public/Meroku/CLI/Secrets.html +191 -0
  33. data/frontend/public/Meroku/CLI/Session.html +460 -0
  34. data/frontend/public/Meroku/CLI/User.html +182 -0
  35. data/frontend/public/Meroku/Extensions.html +405 -0
  36. data/frontend/public/Meroku/Infrastructure.html +279 -0
  37. data/frontend/public/Meroku/Infrastructure/Node.html +785 -0
  38. data/frontend/public/Meroku/Infrastructure/Server.html +373 -0
  39. data/frontend/public/Meroku/Node.html +845 -0
  40. data/frontend/public/Meroku/Tunnel.html +701 -0
  41. data/frontend/public/Meroku/Tunnelable.html +243 -0
  42. data/frontend/public/_index.html +273 -0
  43. data/frontend/public/class_list.html +51 -0
  44. data/frontend/public/css/common.css +1 -0
  45. data/frontend/public/css/full_list.css +58 -0
  46. data/frontend/public/css/style.css +492 -0
  47. data/frontend/public/file.README.html +181 -0
  48. data/frontend/public/file_list.html +56 -0
  49. data/frontend/public/frames.html +17 -0
  50. data/frontend/public/index.html +181 -0
  51. data/frontend/public/js/app.js +248 -0
  52. data/frontend/public/js/full_list.js +216 -0
  53. data/frontend/public/js/jquery.js +4 -0
  54. data/frontend/public/method_list.html +395 -0
  55. data/frontend/public/robots.txt +2 -1
  56. data/frontend/public/top-level-namespace.html +110 -0
  57. data/frontend/test/policies/publickey_policy_test.rb +19 -0
  58. data/lib/meroku.rb +9 -7
  59. data/lib/meroku/api.rb +8 -0
  60. data/lib/meroku/api/request.rb +17 -0
  61. data/lib/meroku/aws.rb +14 -0
  62. data/lib/meroku/aws/ec2.rb +59 -0
  63. data/lib/meroku/cli.rb +80 -81
  64. data/lib/meroku/cli/help.rb +27 -0
  65. data/lib/meroku/cli/secrets.rb +13 -0
  66. data/lib/meroku/cli/session.rb +32 -51
  67. data/lib/meroku/extensions.rb +32 -0
  68. data/lib/meroku/infrastructure.rb +14 -17
  69. data/lib/meroku/infrastructure/server.rb +20 -0
  70. data/lib/meroku/node.rb +113 -0
  71. data/lib/meroku/tunnelable.rb +31 -0
  72. data/lib/meroku/version.rb +1 -1
  73. data/modified-cedar-14.sh +0 -4
  74. metadata +50 -9
  75. data/frontend/app/controllers/pages_controller.rb +0 -4
  76. data/frontend/app/views/pages/landing.html.erb +0 -2
  77. data/frontend/db/migrate/20171025193627_add_token_to_users.rb +0 -5
  78. data/lib/meroku/cli/admin_user.rb +0 -20
  79. data/lib/meroku/cli/user.rb +0 -14
  80. data/lib/meroku/infrastructure/node.rb +0 -102
  81. data/lib/meroku/tunnel.rb +0 -56
@@ -0,0 +1,27 @@
1
+ module Meroku
2
+ module CLI
3
+ # The help thats printed when a command is unspecified or unrecognized
4
+ module Help
5
+ def help
6
+ <<~HEREDOC
7
+ Usage:
8
+ meroku command subcommand
9
+
10
+ Examples:
11
+ meroku signup # if you havent done already
12
+
13
+ meroku login
14
+
15
+ meroku logout
16
+
17
+ meroku create
18
+
19
+ meroku keys:add
20
+
21
+ meroku infrastrucuture spawn # Spawns server
22
+
23
+ HEREDOC
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,13 @@
1
+ module Meroku
2
+ module CLI
3
+ # Logic related to apiusername, apipassword and the env file
4
+ module Secrets
5
+ def self.load(admin: false)
6
+ return unless admin
7
+ env_file = Dir.home + '/.meroku/meroku.env'
8
+ abort "error: File not found (#{env_file})" unless File.exist?(env_file)
9
+ Dotenv.load(env_file)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,65 +1,46 @@
1
-
2
-
3
1
  module Meroku
4
2
  module CLI
3
+ # A session is what is created when user executes the meroku command
5
4
  class Session
6
5
  include Meroku::CLI
7
- include Meroku::Infrastructure
8
-
9
- attr_accessor :ec2_client, :token
6
+ include Meroku::CLI::Help
7
+
8
+ def initialize(args)
9
+ processed = process_user_login_command(args.join(' ')) ||
10
+ process_user_other_command(args.join(' ')) ||
11
+ process_admin_command(args.join(' '))
12
+ puts "Unknown command #{args.join(' ')}\n\n#{help}" unless processed
13
+ exit 1 unless processed
14
+ end
10
15
 
11
- def initialize(*args)
12
- case args.join(" ")
13
- when "signup"
16
+ def process_user_login_command(arguments)
17
+ case arguments
18
+ when /\Asignup/
14
19
  signup
15
- when "create"
16
- Meroku::CLI::User.load_secrets(self) || exit
17
- create
18
- when "keys:add"
19
- Meroku::CLI::User.load_secrets(self) || exit
20
- keys_add(self)
21
- when "infrastructure spawn"
22
- Meroku::CLI::AdminUser.load_secrets(self) || exit
23
- spawn(self)
24
- when "infrastructure despawn"
25
- Meroku::CLI::AdminUser.load_secrets(self) || exit
26
- despawn
27
- else
28
- puts "Unknown command #{args.join(" ")}\n\n"
29
- puts help
20
+ when 'logout'
21
+ logout
22
+ when 'login'
23
+ login
30
24
  end
31
-
32
-
33
- #case args.join(" ")
34
- # when "infrastructure spawn"
35
- # load_secrets || exit
36
- # node = Meroku::Infrastructure::Node.new.associate_address.install_packages.install_frontend_app
37
- # puts "spawned #{node.instance.try(:instance_id)}"
38
- # when "infrastructure despawn"
39
- # load_secrets || exit
40
- # Meroku::Infrastructure.despawn
41
- # when "signup"
42
- # signup
43
- # when "keys:add"
44
- # token_check || exit
45
- # keys_add
46
- # when "create"
47
- # token_check || exit
48
- # create
49
- # else
50
- # puts HELP
51
- #end
52
25
  end
53
26
 
54
- def ec2_client
55
- @ec2_client ||= ::Aws::EC2::Client.new(
56
- region: 'us-east-1',
57
- credentials: ::Aws::Credentials.new(ENV['AWS_ACCESS_KEY'], ENV['AWS_SECRET'])
58
- )
59
- @ec2_client
27
+ def process_user_other_command(arguments)
28
+ case arguments
29
+ when 'create'
30
+ create
31
+ when 'keys:add'
32
+ keys_add
33
+ end
60
34
  end
61
35
 
36
+ def process_admin_command(arguments)
37
+ case arguments
38
+ when 'infrastructure spawn'
39
+ spawn
40
+ when 'infrastructure despawn'
41
+ despawn
42
+ end
43
+ end
62
44
  end
63
45
  end
64
46
  end
65
-
@@ -0,0 +1,32 @@
1
+ module Meroku
2
+ # Has methods that are similar to but extended versions
3
+ # of core ruby methods
4
+ module Extensions
5
+ # Get multipe inputs from user
6
+ # Masks passwords if detected
7
+ # Bypasses prompt when ENV variables present
8
+ def self.mgets(names)
9
+ names.map do |name|
10
+ sgets(name)
11
+ end
12
+ end
13
+
14
+ # single gets
15
+ def self.sgets(name)
16
+ print "#{name.to_s.capitalize}: "
17
+ return env_sgets(name) if ENV['MEROKU_' + name.to_s.upcase]
18
+ return secure_sgets if name.match?(/password/)
19
+ STDIN.gets.chomp
20
+ end
21
+
22
+ # get from env variable
23
+ def self.env_sgets(name)
24
+ ENV['MEROKU_' + name.to_s.upcase]
25
+ end
26
+
27
+ # secure gets from stdin
28
+ def self.secure_sgets
29
+ STDIN.noecho(&:gets).chomp
30
+ end
31
+ end
32
+ end
@@ -1,26 +1,23 @@
1
- require "meroku/infrastructure/node"
1
+ require 'meroku/infrastructure/server'
2
2
 
3
3
  module Meroku
4
+ # Logic related to the infratructure that powers meroku
4
5
  module Infrastructure
6
+ extend Meroku::Aws::Ec2
5
7
 
6
- def spawn(session)
7
- node = Meroku::Infrastructure::Node.new(session.ec2_client)
8
- node.associate_address
9
- node.install_packages
10
- node.tweak_configuration
11
- node.install_frontend_app
12
- puts "spawned #{node.instance.try(:instance_id)}"
8
+ def self.servers
9
+ ec2_client.describe_instances(
10
+ filters: [
11
+ { name: 'tag:Name', values: ['node'] },
12
+ { name: 'instance-state-name', values: %w[running pending] }
13
+ ]
14
+ ).reservations.map do |xx|
15
+ Meroku::Infrastructure::Server.new(xx.instances.first.instance_id)
16
+ end
13
17
  end
14
18
 
15
- def despawn
16
- instances = ec2_client.describe_instances(filters:[{ name: "tag:Name", values: ['node'] }, { name: 'instance-state-name', values: ['running','pending'] }]).reservations.map { |xx| xx.instances.first.instance_id }
17
- puts "will despawn #{instances.inspect}"
18
- ec2_client.terminate_instances({
19
- instance_ids: instances
20
- }) if instances.size > 0
19
+ def self.each_server
20
+ servers.each { |s| yield s }
21
21
  end
22
-
23
-
24
22
  end
25
-
26
23
  end
@@ -0,0 +1,20 @@
1
+ module Meroku
2
+ module Infrastructure
3
+ # A server hosts the api (called during signup, login, etc)
4
+ # and atm also hosts end users applications
5
+ class Server
6
+ include Meroku::Aws::Ec2
7
+
8
+ attr_reader :instance_id
9
+
10
+ def initialize(instance_id)
11
+ @instance_id = instance_id
12
+ end
13
+
14
+ def shutdown
15
+ puts "Will terminate #{@instance_id}"
16
+ ec2_client.terminate_instances(instance_ids: [@instance_id])
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,113 @@
1
+ module Meroku
2
+ # At the moment we run on one ec2 node
3
+ # This class represents that node
4
+ class Node
5
+ include Meroku::Aws::Ec2
6
+ include Meroku::Tunnelable
7
+
8
+ 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"
18
+ end
19
+
20
+ def associate_address
21
+ ip = "eipalloc-139f7823"
22
+ Meroku::Aws::Ec2.associate_address(ip, @instance.instance_id)
23
+ self
24
+ end
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
37
+ end
38
+
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
50
+ end
51
+
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
56
+ HEREDOC
57
+ str.split("\n").each { |cmd| tunnel_run(cmd) }
58
+ self
59
+ end
60
+
61
+ def install_packages
62
+ str = <<~HEREDOC
63
+ 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
+ HEREDOC
65
+ str.split("\n").each { |cmd| tunnel_run(cmd) }
66
+ self
67
+ end
68
+
69
+ def database_inits
70
+ str = <<~HEREDOC
71
+ sudo -u postgres createuser -e meroku
72
+ sudo -u postgres createdb meroku
73
+ sudo -u postgres psql -c "ALTER ROLE meroku WITH PASSWORD '#{ENV['SECRET']}';"
74
+ sudo perl -pi -e "s#local.*all.*all.*peer#local all all md5#" /etc/postgresql/9.6/main/pg_hba.conf
75
+ sudo service postgresql restart
76
+ HEREDOC
77
+ str.split("\n").each { |cmd| tunnel_run(cmd) }
78
+ self
79
+ end
80
+
81
+ def git_clone
82
+ str = <<~HEREDOC
83
+ cd ~; git clone https://github.com/oystersauce8/meroku;
84
+ HEREDOC
85
+ str.split("\n").each { |cmd| tunnel_run(cmd) }
86
+ self
87
+ end
88
+
89
+ def nginx_configs
90
+ str = <<~HEREDOC
91
+ 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
96
+ HEREDOC
97
+ str.split("\n").each { |cmd| tunnel_run(cmd) }
98
+ self
99
+ end
100
+
101
+ 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
107
+ sudo /usr/sbin/nginx -s reload
108
+ HEREDOC
109
+ str.split("\n").each { |cmd| tunnel_run(cmd) }
110
+ self
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,31 @@
1
+ module Meroku
2
+ # Gives object the ability to execute bash commands on itself via ssh
3
+ module Tunnelable
4
+ # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
5
+ def tunnel_run(cmd)
6
+ retries = 0
7
+ begin
8
+ code = nil
9
+ Net::SSH.start(@tunnel_ip,
10
+ @tunnel_username,
11
+ keys: @tunnel_key_name,
12
+ verify_host_key: false) do |ssh|
13
+ ssh.open_channel do |channel|
14
+ puts cmd
15
+ channel.exec cmd do |ch, success|
16
+ raise "could not execute command" unless success
17
+ ch.on_data { |_c, data| print data }
18
+ ch.on_extended_data { |_c, _type, data| print data }
19
+ ch.on_request("exit-status") { |_ch, data| code = data.read_long }
20
+ end
21
+ end.wait
22
+ end
23
+ abort "#{cmd} returned #{code} !!" if code != 0
24
+ rescue Net::SSH::ConnectionTimeout
25
+ puts "Net::SSH::ConnectionTimeout" && retry if (retries += 1) < 3
26
+ rescue Errno::ECONNREFUSED
27
+ puts "Net::SSH::ConnectionTimeout" && retry if (retries += 1) < 3
28
+ end
29
+ end
30
+ end
31
+ end
@@ -1,3 +1,3 @@
1
1
  module Meroku
2
- VERSION = "2.0.8"
2
+ VERSION = "2.0.9"
3
3
  end
data/modified-cedar-14.sh CHANGED
@@ -106,8 +106,6 @@ apt-get install -y --force-yes \
106
106
  libmagickwand-dev \
107
107
  libmysqlclient-dev \
108
108
  libncurses5-dev \
109
- libpq-dev \
110
- libpq5 \
111
109
  librdkafka-dev \
112
110
  libreadline6-dev \
113
111
  libssl-dev \
@@ -119,8 +117,6 @@ apt-get install -y --force-yes \
119
117
  openjdk-7-jre-headless \
120
118
  openssh-client \
121
119
  openssh-server \
122
- postgresql-client-9.6 \
123
- postgresql-server-dev-9.6 \
124
120
  python \
125
121
  python-dev \
126
122
  socat \
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meroku
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.8
4
+ version: 2.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Weerasinghe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-27 00:00:00.000000000 Z
11
+ date: 2017-11-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: escape
@@ -242,6 +242,7 @@ files:
242
242
  - bin/console
243
243
  - bin/meroku
244
244
  - bin/setup
245
+ - circle.yml
245
246
  - exe/meroku
246
247
  - frontend/.gitignore
247
248
  - frontend/.ruby-version
@@ -267,7 +268,6 @@ files:
267
268
  - frontend/app/controllers/application_controller.rb
268
269
  - frontend/app/controllers/apps_controller.rb
269
270
  - frontend/app/controllers/concerns/.keep
270
- - frontend/app/controllers/pages_controller.rb
271
271
  - frontend/app/controllers/publickeys_controller.rb
272
272
  - frontend/app/controllers/users/confirmations_controller.rb
273
273
  - frontend/app/controllers/users/omniauth_callbacks_controller.rb
@@ -280,12 +280,15 @@ files:
280
280
  - frontend/app/helpers/pages_helper.rb
281
281
  - frontend/app/helpers/publickeys_helper.rb
282
282
  - frontend/app/jobs/application_job.rb
283
+ - frontend/app/lib/cmd.rb
283
284
  - frontend/app/mailers/application_mailer.rb
284
285
  - frontend/app/models/app.rb
285
286
  - frontend/app/models/application_record.rb
286
287
  - frontend/app/models/concerns/.keep
287
288
  - frontend/app/models/publickey.rb
288
289
  - frontend/app/models/user.rb
290
+ - frontend/app/policies/application_policy.rb
291
+ - frontend/app/policies/publickey_policy.rb
289
292
  - frontend/app/serializable/serializable_app.rb
290
293
  - frontend/app/serializable/serializable_publickey.rb
291
294
  - frontend/app/serializable/serializable_user.rb
@@ -315,7 +318,6 @@ files:
315
318
  - frontend/app/views/layouts/application.html.erb
316
319
  - frontend/app/views/layouts/mailer.html.erb
317
320
  - frontend/app/views/layouts/mailer.text.erb
318
- - frontend/app/views/pages/landing.html.erb
319
321
  - frontend/app/views/publickeys/_form.html.erb
320
322
  - frontend/app/views/publickeys/_publickey.json.jbuilder
321
323
  - frontend/app/views/publickeys/edit.html.erb
@@ -357,10 +359,10 @@ files:
357
359
  - frontend/config/secrets.yml
358
360
  - frontend/config/spring.rb
359
361
  - frontend/db/migrate/20171023223732_devise_create_users.rb
360
- - frontend/db/migrate/20171025193627_add_token_to_users.rb
361
362
  - frontend/db/migrate/20171025203706_create_apps.rb
362
363
  - frontend/db/migrate/20171025223804_add_user_to_apps.rb
363
364
  - frontend/db/migrate/20171026071440_create_publickeys.rb
365
+ - frontend/db/migrate/20171028150506_add_apisecret_to_users.rb
364
366
  - frontend/db/schema.rb
365
367
  - frontend/db/seeds.rb
366
368
  - frontend/etc_nginx_sites-enabled_default
@@ -372,10 +374,42 @@ files:
372
374
  - frontend/public/404.html
373
375
  - frontend/public/422.html
374
376
  - frontend/public/500.html
377
+ - frontend/public/Meroku.html
378
+ - frontend/public/Meroku/Api.html
379
+ - frontend/public/Meroku/Api/Request.html
380
+ - frontend/public/Meroku/Aws.html
381
+ - frontend/public/Meroku/Aws/Ec2.html
382
+ - frontend/public/Meroku/CLI.html
383
+ - frontend/public/Meroku/CLI/AdminUser.html
384
+ - frontend/public/Meroku/CLI/Help.html
385
+ - frontend/public/Meroku/CLI/Secrets.html
386
+ - frontend/public/Meroku/CLI/Session.html
387
+ - frontend/public/Meroku/CLI/User.html
388
+ - frontend/public/Meroku/Extensions.html
389
+ - frontend/public/Meroku/Infrastructure.html
390
+ - frontend/public/Meroku/Infrastructure/Node.html
391
+ - frontend/public/Meroku/Infrastructure/Server.html
392
+ - frontend/public/Meroku/Node.html
393
+ - frontend/public/Meroku/Tunnel.html
394
+ - frontend/public/Meroku/Tunnelable.html
395
+ - frontend/public/_index.html
375
396
  - frontend/public/apple-touch-icon-precomposed.png
376
397
  - frontend/public/apple-touch-icon.png
398
+ - frontend/public/class_list.html
399
+ - frontend/public/css/common.css
400
+ - frontend/public/css/full_list.css
401
+ - frontend/public/css/style.css
377
402
  - frontend/public/favicon.ico
403
+ - frontend/public/file.README.html
404
+ - frontend/public/file_list.html
405
+ - frontend/public/frames.html
406
+ - frontend/public/index.html
407
+ - frontend/public/js/app.js
408
+ - frontend/public/js/full_list.js
409
+ - frontend/public/js/jquery.js
410
+ - frontend/public/method_list.html
378
411
  - frontend/public/robots.txt
412
+ - frontend/public/top-level-namespace.html
379
413
  - frontend/test/application_system_test_case.rb
380
414
  - frontend/test/controllers/.keep
381
415
  - frontend/test/controllers/apps_controller_test.rb
@@ -393,6 +427,7 @@ files:
393
427
  - frontend/test/models/app_test.rb
394
428
  - frontend/test/models/publickey_test.rb
395
429
  - frontend/test/models/user_test.rb
430
+ - frontend/test/policies/publickey_policy_test.rb
396
431
  - frontend/test/system/.keep
397
432
  - frontend/test/system/apps_test.rb
398
433
  - frontend/test/system/publickeys_test.rb
@@ -400,13 +435,19 @@ files:
400
435
  - frontend/tmp/.keep
401
436
  - frontend/vendor/.keep
402
437
  - lib/meroku.rb
438
+ - lib/meroku/api.rb
439
+ - lib/meroku/api/request.rb
440
+ - lib/meroku/aws.rb
441
+ - lib/meroku/aws/ec2.rb
403
442
  - lib/meroku/cli.rb
404
- - lib/meroku/cli/admin_user.rb
443
+ - lib/meroku/cli/help.rb
444
+ - lib/meroku/cli/secrets.rb
405
445
  - lib/meroku/cli/session.rb
406
- - lib/meroku/cli/user.rb
446
+ - lib/meroku/extensions.rb
407
447
  - lib/meroku/infrastructure.rb
408
- - lib/meroku/infrastructure/node.rb
409
- - lib/meroku/tunnel.rb
448
+ - lib/meroku/infrastructure/server.rb
449
+ - lib/meroku/node.rb
450
+ - lib/meroku/tunnelable.rb
410
451
  - lib/meroku/version.rb
411
452
  - meroku.gemspec
412
453
  - modified-cedar-14.sh