meroku 2.0.8 → 2.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +9 -5
- data/bin/meroku +1 -1
- data/circle.yml +23 -0
- data/frontend/Gemfile +5 -2
- data/frontend/Gemfile.lock +5 -2
- data/frontend/app/controllers/application_controller.rb +1 -0
- data/frontend/app/controllers/apps_controller.rb +46 -48
- data/frontend/app/controllers/publickeys_controller.rb +45 -46
- data/frontend/app/controllers/users/registrations_controller.rb +0 -15
- data/frontend/app/controllers/users/sessions_controller.rb +12 -3
- data/frontend/app/lib/cmd.rb +11 -0
- data/frontend/app/models/app.rb +18 -11
- data/frontend/app/models/publickey.rb +1 -1
- data/frontend/app/models/user.rb +5 -4
- data/frontend/app/policies/application_policy.rb +53 -0
- data/frontend/app/policies/publickey_policy.rb +7 -0
- data/frontend/app/serializable/serializable_user.rb +2 -1
- data/frontend/app/views/layouts/application.html.erb +1 -1
- data/frontend/config/database.yml +72 -10
- data/frontend/config/routes.rb +6 -14
- data/frontend/db/migrate/20171028150506_add_apisecret_to_users.rb +6 -0
- data/frontend/etc_nginx_sites-enabled_default +1 -1
- data/frontend/public/Meroku.html +140 -0
- data/frontend/public/Meroku/Api.html +129 -0
- data/frontend/public/Meroku/Api/Request.html +221 -0
- data/frontend/public/Meroku/Aws.html +212 -0
- data/frontend/public/Meroku/Aws/Ec2.html +477 -0
- data/frontend/public/Meroku/CLI.html +784 -0
- data/frontend/public/Meroku/CLI/AdminUser.html +192 -0
- data/frontend/public/Meroku/CLI/Help.html +224 -0
- data/frontend/public/Meroku/CLI/Secrets.html +191 -0
- data/frontend/public/Meroku/CLI/Session.html +460 -0
- data/frontend/public/Meroku/CLI/User.html +182 -0
- data/frontend/public/Meroku/Extensions.html +405 -0
- data/frontend/public/Meroku/Infrastructure.html +279 -0
- data/frontend/public/Meroku/Infrastructure/Node.html +785 -0
- data/frontend/public/Meroku/Infrastructure/Server.html +373 -0
- data/frontend/public/Meroku/Node.html +845 -0
- data/frontend/public/Meroku/Tunnel.html +701 -0
- data/frontend/public/Meroku/Tunnelable.html +243 -0
- data/frontend/public/_index.html +273 -0
- data/frontend/public/class_list.html +51 -0
- data/frontend/public/css/common.css +1 -0
- data/frontend/public/css/full_list.css +58 -0
- data/frontend/public/css/style.css +492 -0
- data/frontend/public/file.README.html +181 -0
- data/frontend/public/file_list.html +56 -0
- data/frontend/public/frames.html +17 -0
- data/frontend/public/index.html +181 -0
- data/frontend/public/js/app.js +248 -0
- data/frontend/public/js/full_list.js +216 -0
- data/frontend/public/js/jquery.js +4 -0
- data/frontend/public/method_list.html +395 -0
- data/frontend/public/robots.txt +2 -1
- data/frontend/public/top-level-namespace.html +110 -0
- data/frontend/test/policies/publickey_policy_test.rb +19 -0
- data/lib/meroku.rb +9 -7
- data/lib/meroku/api.rb +8 -0
- data/lib/meroku/api/request.rb +17 -0
- data/lib/meroku/aws.rb +14 -0
- data/lib/meroku/aws/ec2.rb +59 -0
- data/lib/meroku/cli.rb +80 -81
- data/lib/meroku/cli/help.rb +27 -0
- data/lib/meroku/cli/secrets.rb +13 -0
- data/lib/meroku/cli/session.rb +32 -51
- data/lib/meroku/extensions.rb +32 -0
- data/lib/meroku/infrastructure.rb +14 -17
- data/lib/meroku/infrastructure/server.rb +20 -0
- data/lib/meroku/node.rb +113 -0
- data/lib/meroku/tunnelable.rb +31 -0
- data/lib/meroku/version.rb +1 -1
- data/modified-cedar-14.sh +0 -4
- metadata +50 -9
- data/frontend/app/controllers/pages_controller.rb +0 -4
- data/frontend/app/views/pages/landing.html.erb +0 -2
- data/frontend/db/migrate/20171025193627_add_token_to_users.rb +0 -5
- data/lib/meroku/cli/admin_user.rb +0 -20
- data/lib/meroku/cli/user.rb +0 -14
- data/lib/meroku/infrastructure/node.rb +0 -102
- data/lib/meroku/tunnel.rb +0 -56
@@ -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
|
data/lib/meroku/cli/session.rb
CHANGED
@@ -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::
|
8
|
-
|
9
|
-
|
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
|
12
|
-
case
|
13
|
-
when
|
16
|
+
def process_user_login_command(arguments)
|
17
|
+
case arguments
|
18
|
+
when /\Asignup/
|
14
19
|
signup
|
15
|
-
when
|
16
|
-
|
17
|
-
|
18
|
-
|
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
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
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
|
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
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
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
|
16
|
-
|
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
|
data/lib/meroku/node.rb
ADDED
@@ -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
|
data/lib/meroku/version.rb
CHANGED
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.
|
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-
|
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/
|
443
|
+
- lib/meroku/cli/help.rb
|
444
|
+
- lib/meroku/cli/secrets.rb
|
405
445
|
- lib/meroku/cli/session.rb
|
406
|
-
- lib/meroku/
|
446
|
+
- lib/meroku/extensions.rb
|
407
447
|
- lib/meroku/infrastructure.rb
|
408
|
-
- lib/meroku/infrastructure/
|
409
|
-
- lib/meroku/
|
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
|