rails_pwnerer 0.5.7 → 0.5.8
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +2 -0
- data/Manifest +1 -0
- data/README +10 -1
- data/lib/pwnage/base/atomics.rb +1 -1
- data/lib/pwnage/base/gems.rb +14 -1
- data/lib/pwnage/base/process.rb +1 -1
- data/lib/pwnage/executor.rb +3 -0
- data/lib/pwnage/scaffolds/config.rb +2 -0
- data/lib/pwnage/scaffolds/dir_permissions.rb +23 -0
- data/lib/pwnage/scaffolds/dirs.rb +0 -2
- data/lib/pwnage/scaffolds/hook_daemon.rb +1 -11
- data/lib/pwnage/scaffolds/packages.rb +1 -1
- data/lib/pwnage/scaffolds/rubygems.rb +9 -1
- data/lib/rails_pwnage.rb +1 -0
- data/rails_pwnerer.gemspec +5 -3
- metadata +4 -2
data/CHANGELOG
CHANGED
data/Manifest
CHANGED
@@ -26,6 +26,7 @@ lib/pwnage/ctl_executor.rb
|
|
26
26
|
lib/pwnage/dev_executor.rb
|
27
27
|
lib/pwnage/executor.rb
|
28
28
|
lib/pwnage/scaffolds/config.rb
|
29
|
+
lib/pwnage/scaffolds/dir_permissions.rb
|
29
30
|
lib/pwnage/scaffolds/dirs.rb
|
30
31
|
lib/pwnage/scaffolds/gems.rb
|
31
32
|
lib/pwnage/scaffolds/hook_daemon.rb
|
data/README
CHANGED
@@ -27,7 +27,7 @@ Life with +rails_pwnerer+:
|
|
27
27
|
1) Install a bootstrap version of ruby and rubygems
|
28
28
|
(one command should be enough, but rubygems doesn't work in Ubuntu 8.04):
|
29
29
|
|
30
|
-
sudo apt-get -y install
|
30
|
+
sudo apt-get -y install rubygems1.8
|
31
31
|
|
32
32
|
sudo gem update --system (you'll have to retry this if you get an error)
|
33
33
|
|
@@ -39,6 +39,15 @@ sudo gem install rails_pwnerer
|
|
39
39
|
3) Get your server production-ready:
|
40
40
|
sudo rpwn scaffold
|
41
41
|
|
42
|
+
If this doesn't work, you have a retarded Debian version of rubygems.
|
43
|
+
Workaround:
|
44
|
+
a) gem which rails_pwnerer
|
45
|
+
b) see where the gem lives (e.g. /var/lib/gems/1.8/gems/rails_pwnerer)
|
46
|
+
c) run rpwn from there:
|
47
|
+
sudo /var/lib/gems/1.8/bin/rails_pwnerer scaffold
|
48
|
+
|
49
|
+
After you scaffold, you'll get good rubygems which put rpwn in your path.
|
50
|
+
|
42
51
|
4) Install your application:
|
43
52
|
sudo rpwn install svn+ssh://your.repository.host/path/to/your_application
|
44
53
|
|
data/lib/pwnage/base/atomics.rb
CHANGED
@@ -13,7 +13,7 @@ module RailsPwnage::Base
|
|
13
13
|
ts_checksum = Digest::MD5.hexdigest("#{raw_data[1]}.#{raw_data[2]}")
|
14
14
|
return [nil, Time.at(0, 0)] unless ts_checksum == raw_data[3]
|
15
15
|
return [raw_data[0], Time.at(raw_data[1], raw_data[2])]
|
16
|
-
rescue
|
16
|
+
rescue Exception
|
17
17
|
# fail if the YAML can't be processed or something else goes wrong
|
18
18
|
return [nil, Time.at(0, 0)]
|
19
19
|
end
|
data/lib/pwnage/base/gems.rb
CHANGED
@@ -16,7 +16,20 @@ module RailsPwnage::Base
|
|
16
16
|
system "gem update --system"
|
17
17
|
# patch Ubuntu's broken rubygems installation
|
18
18
|
system "cp /usr/bin/gem1.8 /usr/bin/gem"
|
19
|
-
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# locates the main file in a gem (used to locate the gem)
|
22
|
+
def path_to_gem(gem_name, discard_suffix = '')
|
23
|
+
# TODO: use the rubygems API instead of this hack
|
24
|
+
|
25
|
+
# look for the main file in the gem
|
26
|
+
output = `gem which '#{gem_name}'`
|
27
|
+
# discard the given suffix
|
28
|
+
if output[-(discard_suffix.lenth)..-1] == discard_suffix
|
29
|
+
output[-(discard_suffix.lenth)..-1] = ''
|
30
|
+
end
|
31
|
+
return output
|
32
|
+
end
|
20
33
|
end
|
21
34
|
|
22
35
|
module RailsPwnage::Base
|
data/lib/pwnage/base/process.rb
CHANGED
data/lib/pwnage/executor.rb
CHANGED
@@ -12,6 +12,8 @@ class RailsPwnage::Executor
|
|
12
12
|
Config.go
|
13
13
|
when 'dirs'
|
14
14
|
Dirs.go
|
15
|
+
when 'dirs2'
|
16
|
+
DirPermissions.go
|
15
17
|
when 'gems'
|
16
18
|
Gems.go
|
17
19
|
when 'daemon'
|
@@ -34,6 +36,7 @@ class RailsPwnage::Executor
|
|
34
36
|
Gems.go
|
35
37
|
Dirs.go
|
36
38
|
Config.go
|
39
|
+
DirPermissions.go
|
37
40
|
MysqlConfig.go
|
38
41
|
HookDaemon.go
|
39
42
|
end
|
@@ -25,6 +25,8 @@ class RailsPwnage::Scaffolds::Config
|
|
25
25
|
host_info[:dbroot_name] = 'root'
|
26
26
|
# password for creating / dropping databases
|
27
27
|
host_info[:dbroot_pass] = ''
|
28
|
+
# the user owning the /prod subtrees
|
29
|
+
host_info[:pwnerer_user] = 'victor'
|
28
30
|
|
29
31
|
RailsPwnage::Config.flush_db :host
|
30
32
|
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# sets up the user permissions on the dir skeleton
|
2
|
+
|
3
|
+
require 'fileutils'
|
4
|
+
|
5
|
+
class RailsPwnage::Scaffolds::DirPermissions
|
6
|
+
include RailsPwnage::Base
|
7
|
+
|
8
|
+
# runner
|
9
|
+
def run
|
10
|
+
pwnerer_uid = uid_for_username(RailsPwnage::Config[:host][:pwnerer_user])
|
11
|
+
Dir.chdir('/') do
|
12
|
+
[:config, :apps, :backups].map { |k| RailsPwnage::Config.path_to k }.each do |path|
|
13
|
+
FileUtils.mkpath path
|
14
|
+
File.chown(pwnerer_uid, nil, path)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# standalone runner
|
20
|
+
def self.go
|
21
|
+
self.new.run
|
22
|
+
end
|
23
|
+
end
|
@@ -7,11 +7,9 @@ class RailsPwnage::Scaffolds::Dirs
|
|
7
7
|
|
8
8
|
# runner
|
9
9
|
def run
|
10
|
-
pwnerer_uid = uid_for_username(RailsPwnage::Config.pwnerer_user)
|
11
10
|
Dir.chdir('/') do
|
12
11
|
[:config, :apps, :backups].map { |k| RailsPwnage::Config.path_to k }.each do |path|
|
13
12
|
FileUtils.mkpath path
|
14
|
-
File.chown(pwnerer_uid, nil, path)
|
15
13
|
end
|
16
14
|
end
|
17
15
|
end
|
@@ -2,20 +2,10 @@
|
|
2
2
|
|
3
3
|
class RailsPwnage::Scaffolds::HookDaemon
|
4
4
|
include RailsPwnage::Base
|
5
|
-
|
6
|
-
# compute the path to mongrel_cluster
|
7
|
-
def path_to_gem
|
8
|
-
# TODO: use the rubygems API instead of this hack
|
9
|
-
|
10
|
-
# look for lib/rails_pwnage.rb in our gem
|
11
|
-
output = `gem which 'rails_pwnage'`
|
12
|
-
# now lock down the path
|
13
|
-
output.split.last.gsub!('lib/rails_pwnage.rb', '')
|
14
|
-
end
|
15
5
|
|
16
6
|
# runner
|
17
7
|
def run
|
18
|
-
daemon_ctl =
|
8
|
+
daemon_ctl = path_to_gem('rails_pwnage', 'lib/rails_pwnage.rb') + 'bin/rpwnctl'
|
19
9
|
hook_boot_script daemon_ctl, 'rpwn'
|
20
10
|
end
|
21
11
|
|
@@ -1,5 +1,5 @@
|
|
1
|
+
require 'fileutils'
|
1
2
|
require 'net/http'
|
2
|
-
require 'pp'
|
3
3
|
|
4
4
|
class RailsPwnage::Scaffolds::RubyGems
|
5
5
|
include RailsPwnage::Base
|
@@ -46,9 +46,17 @@ class RailsPwnage::Scaffolds::RubyGems
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def run
|
49
|
+
# save old lib path, in case we need to wipe it
|
50
|
+
old_gems = path_to_gem('rubygems', '/1.8/rubygems.rb')
|
51
|
+
|
49
52
|
# remove the (retarded) Debian gems package and install from source
|
50
53
|
remove_packages %w(rubygems)
|
51
54
|
install_rubygems
|
55
|
+
|
56
|
+
# remove the gems that are trailing behind
|
57
|
+
new_gems = path_to_gem('rubygems', '/1.8/rubygems.rb')
|
58
|
+
return if new_gems == old_gems # don't wipe the new dir by mistake
|
59
|
+
FileUtils.rm_r old_gems
|
52
60
|
end
|
53
61
|
|
54
62
|
# standalone runner
|
data/lib/rails_pwnage.rb
CHANGED
@@ -28,6 +28,7 @@ require 'pwnage/config/repository.rb'
|
|
28
28
|
|
29
29
|
require 'pwnage/scaffolds/config.rb'
|
30
30
|
require 'pwnage/scaffolds/dirs.rb'
|
31
|
+
require 'pwnage/scaffolds/dir_permissions.rb'
|
31
32
|
require 'pwnage/scaffolds/gems.rb'
|
32
33
|
require 'pwnage/scaffolds/hook_daemon.rb'
|
33
34
|
require 'pwnage/scaffolds/hook_dyndns.rb'
|
data/rails_pwnerer.gemspec
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
|
2
|
-
# Gem::Specification for Rails_pwnerer-0.5.
|
2
|
+
# Gem::Specification for Rails_pwnerer-0.5.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.5.
|
8
|
+
version: 0.5.8
|
9
9
|
platform: ruby
|
10
10
|
authors:
|
11
11
|
- Victor Costan
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
|
15
|
-
date: 2008-08-
|
15
|
+
date: 2008-08-20 00:00:00 -04:00
|
16
16
|
default_executable:
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
@@ -62,6 +62,7 @@ extra_rdoc_files:
|
|
62
62
|
- lib/pwnage/dev_executor.rb
|
63
63
|
- lib/pwnage/executor.rb
|
64
64
|
- lib/pwnage/scaffolds/config.rb
|
65
|
+
- lib/pwnage/scaffolds/dir_permissions.rb
|
65
66
|
- lib/pwnage/scaffolds/dirs.rb
|
66
67
|
- lib/pwnage/scaffolds/gems.rb
|
67
68
|
- lib/pwnage/scaffolds/hook_daemon.rb
|
@@ -101,6 +102,7 @@ files:
|
|
101
102
|
- lib/pwnage/dev_executor.rb
|
102
103
|
- lib/pwnage/executor.rb
|
103
104
|
- lib/pwnage/scaffolds/config.rb
|
105
|
+
- lib/pwnage/scaffolds/dir_permissions.rb
|
104
106
|
- lib/pwnage/scaffolds/dirs.rb
|
105
107
|
- lib/pwnage/scaffolds/gems.rb
|
106
108
|
- lib/pwnage/scaffolds/hook_daemon.rb
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_pwnerer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Victor Costan
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-08-
|
12
|
+
date: 2008-08-20 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -59,6 +59,7 @@ extra_rdoc_files:
|
|
59
59
|
- lib/pwnage/dev_executor.rb
|
60
60
|
- lib/pwnage/executor.rb
|
61
61
|
- lib/pwnage/scaffolds/config.rb
|
62
|
+
- lib/pwnage/scaffolds/dir_permissions.rb
|
62
63
|
- lib/pwnage/scaffolds/dirs.rb
|
63
64
|
- lib/pwnage/scaffolds/gems.rb
|
64
65
|
- lib/pwnage/scaffolds/hook_daemon.rb
|
@@ -98,6 +99,7 @@ files:
|
|
98
99
|
- lib/pwnage/dev_executor.rb
|
99
100
|
- lib/pwnage/executor.rb
|
100
101
|
- lib/pwnage/scaffolds/config.rb
|
102
|
+
- lib/pwnage/scaffolds/dir_permissions.rb
|
101
103
|
- lib/pwnage/scaffolds/dirs.rb
|
102
104
|
- lib/pwnage/scaffolds/gems.rb
|
103
105
|
- lib/pwnage/scaffolds/hook_daemon.rb
|