rails_pwnerer 0.5.7 → 0.5.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/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
|