rails_pwnerer 0.6.108 → 0.6.109
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.
- data/CHANGELOG +2 -0
- data/lib/rails_pwnerer/app/config.rb +24 -18
- data/lib/rails_pwnerer/app/nginx_config.rb +1 -1
- data/rails_pwnerer.gemspec +1 -1
- metadata +1 -1
data/CHANGELOG
CHANGED
@@ -3,7 +3,7 @@ require 'yaml'
|
|
3
3
|
|
4
4
|
class RailsPwnerer::App::Config
|
5
5
|
include RailsPwnerer::Base
|
6
|
-
|
6
|
+
|
7
7
|
def random_db_password
|
8
8
|
(0...16).map { |i| "abcdefghijklmnopqrstuvwxyz"[rand(26),1]}.join
|
9
9
|
end
|
@@ -16,8 +16,8 @@ class RailsPwnerer::App::Config
|
|
16
16
|
app_db[:app_path] = File.join(RailsPwnerer::Config.path_to(:apps), app_name + '.' + instance_name)
|
17
17
|
# the path to application backups
|
18
18
|
app_db[:backup_path] ||= File.join(RailsPwnerer::Config.path_to(:backups), app_name + '.' + instance_name)
|
19
|
-
|
20
|
-
# the user which will receive the "keys" to the production system
|
19
|
+
|
20
|
+
# the user which will receive the "keys" to the production system
|
21
21
|
app_db[:pwnerer_user] ||= RailsPwnerer::Config[:host][:pwnerer_user]
|
22
22
|
# the number of frontends for the application instance
|
23
23
|
app_db[:frontends] ||= 4 # most computers have 2 cores nowadays
|
@@ -25,7 +25,7 @@ class RailsPwnerer::App::Config
|
|
25
25
|
app_db[:frontends_per_core] ||= 2 # best practice
|
26
26
|
# the first internal port for the application instance
|
27
27
|
app_db[:port0] = 0 # will be overwritten during allocation
|
28
|
-
# the name of the database for the application instance
|
28
|
+
# the name of the database for the application instance
|
29
29
|
app_db[:db_name] ||= (app_name + '_' + instance_name + '_prod')[0...60] # avoiding mySQL breakage
|
30
30
|
# the datbase user for the given application
|
31
31
|
app_db[:db_user] ||= (app_name + '_' + instance_name)[0...16] # mySQL doesn't like long user names
|
@@ -45,7 +45,7 @@ class RailsPwnerer::App::Config
|
|
45
45
|
app_db[:gems] ||= ''
|
46
46
|
# set to disable accidental db resets (on production vs. staging instances)
|
47
47
|
app_db[:enable_db_reset] ||= false
|
48
|
-
|
48
|
+
|
49
49
|
# the number of cores on the platform
|
50
50
|
app_db[:detected_cores] ||= cpu_cores.length
|
51
51
|
end
|
@@ -55,34 +55,40 @@ class RailsPwnerer::App::Config
|
|
55
55
|
app_db_name = RailsPwnerer::Config.app_db_name(app_name, instance_name)
|
56
56
|
app_db = RailsPwnerer::Config.create_db app_db_name
|
57
57
|
populate_defaults app_name, instance_name, app_db
|
58
|
-
|
58
|
+
|
59
59
|
FileUtils.mkpath app_db[:app_path]
|
60
|
-
|
61
|
-
RailsPwnerer::Config.flush_db app_db
|
60
|
+
|
61
|
+
RailsPwnerer::Config.flush_db app_db
|
62
62
|
return app_db[:app_path]
|
63
63
|
end
|
64
|
-
|
64
|
+
|
65
65
|
# pushes config changes from the application file to the database
|
66
66
|
def update(app_name, instance_name)
|
67
67
|
app_config = RailsPwnerer::Config[app_name, instance_name]
|
68
|
-
|
68
|
+
|
69
69
|
db_name, db_user, db_pass = app_config[:db_name], app_config[:db_user], app_config[:db_pass]
|
70
70
|
app_config.clear
|
71
71
|
# NOTE: we don't restore the password on purpose, to get a new password on the update
|
72
72
|
# this is useful so processes that were spawned before the update can't corrupt the db
|
73
73
|
app_config[:db_name], app_config[:db_user] = db_name, db_user
|
74
|
-
|
74
|
+
|
75
75
|
populate_defaults app_name, instance_name, app_config
|
76
76
|
Dir.chdir app_config[:app_path] do
|
77
77
|
# Populate the default SSL configuration if the right files exist.
|
78
78
|
ssl_cert = File.expand_path "config/rails_pwnerer/#{instance_name}.cer"
|
79
|
-
|
79
|
+
|
80
|
+
ssl_cert2 = File.expand_path "config/rails_pwnerer/#{instance_name}.crt"
|
81
|
+
if !File.exists?(ssl_cert) and File.exists?(ssl_cert2)
|
82
|
+
ssl_cert = ssl_cert2
|
83
|
+
end
|
84
|
+
|
85
|
+
ssl_key = File.expand_path "config/rails_pwnerer/#{instance_name}.pem"
|
80
86
|
if File.exists?(ssl_cert) and File.exists?(ssl_key)
|
81
87
|
app_config[:ssl_cert] = ssl_cert
|
82
88
|
app_config[:ssl_key] = ssl_key
|
83
89
|
app_config[:port] = 443
|
84
90
|
end
|
85
|
-
|
91
|
+
|
86
92
|
["config/rails_pwnerer/.yml", "config/rails_pwnerer/#{instance_name}.yml"].each do |fname|
|
87
93
|
next unless File.exists? fname
|
88
94
|
config_update = File.open(fname, 'r') { |f| YAML.load f } rescue nil
|
@@ -95,17 +101,17 @@ class RailsPwnerer::App::Config
|
|
95
101
|
end
|
96
102
|
end
|
97
103
|
end
|
98
|
-
|
104
|
+
|
99
105
|
# TODO: if database settings changed, the database should be moved (re-created or re-keyed)
|
100
106
|
if db_pass != app_config[:db_pass]
|
101
107
|
db_pass = random_db_password if !db_pass || db_pass.empty?
|
102
108
|
RailsPwnerer::App::Database.new.manage app_name, instance_name, :rekey
|
103
109
|
end
|
104
|
-
|
110
|
+
|
105
111
|
RailsPwnerer::Config.flush_db RailsPwnerer::Config.app_db_name(app_name, instance_name)
|
106
112
|
end
|
107
|
-
|
108
|
-
def manage(app_name, instance_name, action)
|
113
|
+
|
114
|
+
def manage(app_name, instance_name, action)
|
109
115
|
case action
|
110
116
|
when :rekey
|
111
117
|
app_config = RailsPwnerer::Config[app_name, instance_name]
|
@@ -116,7 +122,7 @@ class RailsPwnerer::App::Config
|
|
116
122
|
def setup(app_name, instance_name)
|
117
123
|
update app_name, instance_name
|
118
124
|
end
|
119
|
-
|
125
|
+
|
120
126
|
def remove(app_name, instance_name)
|
121
127
|
app_db_name = RailsPwnerer::Config.app_db_name(app_name, instance_name)
|
122
128
|
RailsPwnerer::Config.drop_db app_db_name
|
@@ -31,7 +31,7 @@ class RailsPwnerer::App::NginxConfig
|
|
31
31
|
# server configuration -- big and ugly
|
32
32
|
f << <<NGINX_CONFIG
|
33
33
|
server {
|
34
|
-
listen #{app_port};
|
34
|
+
listen #{app_port}#{app_config[:ssl_key] ? ' ssl' : ''};
|
35
35
|
charset utf-8;
|
36
36
|
#{app_config[:ssl_key] ? 'ssl on;' : ''}
|
37
37
|
#{app_config[:ssl_key] ? "ssl_certificate #{app_config[:ssl_cert]};" : ''}
|
data/rails_pwnerer.gemspec
CHANGED