rails_pwnerer 0.6.7 → 0.6.8
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/README +3 -0
- data/lib/pwnage/app/config.rb +19 -1
- data/lib/pwnage/app/database.rb +8 -0
- data/lib/pwnage/app/main.rb +6 -0
- data/lib/pwnage/executor.rb +4 -0
- data/rails_pwnerer.gemspec +2 -2
- metadata +1 -1
data/CHANGELOG
CHANGED
data/README
CHANGED
@@ -75,6 +75,9 @@ rpwn db_console your_application
|
|
75
75
|
* Configure DynDns for your application server
|
76
76
|
sudo rpwn scaffold ddns full_host_name ddns_user ddns_password
|
77
77
|
|
78
|
+
* Change the database password
|
79
|
+
sudp rpwn rekey your_application
|
80
|
+
|
78
81
|
* Bring down all the applications (panic mode):
|
79
82
|
sudo rpwn go down
|
80
83
|
|
data/lib/pwnage/app/config.rb
CHANGED
@@ -3,6 +3,10 @@ require 'yaml'
|
|
3
3
|
|
4
4
|
class RailsPwnage::App::Config
|
5
5
|
include RailsPwnage::Base
|
6
|
+
|
7
|
+
def random_db_password
|
8
|
+
(0...16).map { |i| "abcdefghijklmnopqrstuvwxyz"[rand(26),1]}.join
|
9
|
+
end
|
6
10
|
|
7
11
|
# fills inexsitent keys with their default values
|
8
12
|
# setup: this effectively creates the baseline configuration db
|
@@ -24,7 +28,7 @@ class RailsPwnage::App::Config
|
|
24
28
|
# the datbase user for the given application
|
25
29
|
app_db[:db_user] ||= (app_name + '_' + instance_name)[0...16] # mySQL doesn't like long user names
|
26
30
|
# the password of the database user for the given application
|
27
|
-
app_db[:db_pass] ||=
|
31
|
+
app_db[:db_pass] ||= random_db_password
|
28
32
|
# a DNS name for server-based filtering (multiple apps on the same box)
|
29
33
|
app_db[:dns_name] ||= ''
|
30
34
|
# the environment to run the application in
|
@@ -57,6 +61,8 @@ class RailsPwnage::App::Config
|
|
57
61
|
|
58
62
|
db_name, db_user, db_pass = app_config[:db_name], app_config[:db_user], app_config[:db_pass]
|
59
63
|
app_config.clear
|
64
|
+
# TODO: don't restore the password, to force new password generation on the update
|
65
|
+
# this is useful so processes that were spawned before the update can't corrupt the db
|
60
66
|
app_config[:db_name], app_config[:db_user], app_config[:db_pass] = db_name, db_user, db_pass
|
61
67
|
|
62
68
|
populate_defaults app_name, instance_name, app_config
|
@@ -71,9 +77,21 @@ class RailsPwnage::App::Config
|
|
71
77
|
end
|
72
78
|
|
73
79
|
# TODO: if database settings changed, the database should be moved (re-created or re-keyed)
|
80
|
+
if db_pass != app_config[:db_pass]
|
81
|
+
db_pass = random_db_password if !db_pass || db_pass.empty?
|
82
|
+
RailsPwnage::Databaase.new.manage app_name, instance_name, :rekey
|
83
|
+
end
|
74
84
|
|
75
85
|
RailsPwnage::Config.flush_db RailsPwnage::Config.app_db_name(app_name, instance_name)
|
76
86
|
end
|
87
|
+
|
88
|
+
def manage(app_name, instance_name, action)
|
89
|
+
case action
|
90
|
+
when :rekey
|
91
|
+
app_config = RailsPwnage::Config[app_name, instance_name]
|
92
|
+
app_config[:db_pass] = random_db_password
|
93
|
+
end
|
94
|
+
end
|
77
95
|
|
78
96
|
def setup(app_name, instance_name)
|
79
97
|
update app_name, instance_name
|
data/lib/pwnage/app/database.rb
CHANGED
@@ -21,6 +21,11 @@ class RailsPwnage::App::Database
|
|
21
21
|
CREATE DATABASE #{db_name};
|
22
22
|
GRANT ALL ON #{db_name}.* TO '#{db_user}'@'localhost' IDENTIFIED BY '#{db_pass}' WITH GRANT OPTION;
|
23
23
|
ENDSQL
|
24
|
+
when :rekey
|
25
|
+
sql_commands = <<ENDSQL
|
26
|
+
GRANT ALL ON #{db_name}.* TO '#{db_user}'@'localhost' IDENTIFIED BY '#{db_pass}' WITH GRANT OPTION;
|
27
|
+
ENDSQL
|
28
|
+
|
24
29
|
when :drop
|
25
30
|
sql_commands = <<ENDSQL
|
26
31
|
DROP DATABASE #{db_name};
|
@@ -146,6 +151,9 @@ ENDSQL
|
|
146
151
|
load_database app_name, instance_name
|
147
152
|
configure_rails app_name, instance_name
|
148
153
|
migrate_database app_name, instance_name
|
154
|
+
when :rekey
|
155
|
+
admin_database app_name, instance_name, :rekey
|
156
|
+
configure_rails app_name, instance_name
|
149
157
|
end
|
150
158
|
end
|
151
159
|
|
data/lib/pwnage/app/main.rb
CHANGED
@@ -85,6 +85,12 @@ module RailsPwnage::App
|
|
85
85
|
mod.new.manage app, instance, action
|
86
86
|
end
|
87
87
|
end
|
88
|
+
when :rekey
|
89
|
+
self.update_app app, instance do
|
90
|
+
[Config, Database].each do |mod|
|
91
|
+
mod.new.manage app, instance, action
|
92
|
+
end
|
93
|
+
end
|
88
94
|
when :console
|
89
95
|
Svn.new.manage app, instance, action
|
90
96
|
when :db_console
|
data/lib/pwnage/executor.rb
CHANGED
@@ -89,6 +89,10 @@ class RailsPwnage::Executor
|
|
89
89
|
app_name = args[1]
|
90
90
|
instance_name = args[2] || '.'
|
91
91
|
RailsPwnage::App.manage app_name, instance_name, :db_console
|
92
|
+
when 'rekey'
|
93
|
+
app_name = args[1]
|
94
|
+
instance_name = args[2] || '.'
|
95
|
+
RailsPwnage::App.manage app_name, instance_name, :rekey
|
92
96
|
|
93
97
|
when 'showconfig', 'configshow', 'show_config', 'config_show', 'showconf'
|
94
98
|
if args.length < 2
|
data/rails_pwnerer.gemspec
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
|
2
|
-
# Gem::Specification for Rails_pwnerer-0.6.
|
2
|
+
# Gem::Specification for Rails_pwnerer-0.6.8
|
3
3
|
# Originally generated by Echoe
|
4
4
|
|
5
5
|
--- !ruby/object:Gem::Specification
|
6
6
|
name: rails_pwnerer
|
7
7
|
version: !ruby/object:Gem::Version
|
8
|
-
version: 0.6.
|
8
|
+
version: 0.6.8
|
9
9
|
platform: ruby
|
10
10
|
authors:
|
11
11
|
- Victor Costan
|