rails_pwnerer 0.6.30 → 0.6.31
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 +4 -10
- data/Rakefile +6 -1
- data/lib/pwnage/base/dirs.rb +1 -1
- data/lib/pwnage/base/packages.rb +91 -17
- data/lib/pwnage/scaffolds/config.rb +2 -2
- data/lib/pwnage/scaffolds/packages.rb +2 -1
- data/rails_pwnerer.gemspec +2 -5
- metadata +4 -13
data/CHANGELOG
CHANGED
data/README
CHANGED
@@ -25,14 +25,8 @@ application.
|
|
25
25
|
|
26
26
|
Life with +rails_pwnerer+:
|
27
27
|
|
28
|
-
1) Install a bootstrap version of ruby and rubygems
|
29
|
-
|
30
|
-
|
31
|
-
sudo apt-get -y install rubygems1.8
|
32
|
-
|
33
|
-
sudo gem update --system (you'll have to retry this if you get an error)
|
34
|
-
|
35
|
-
sudo apt-get -y install ruby (yes you read it right, this comes last)
|
28
|
+
1) Install a bootstrap version of ruby and rubygems:
|
29
|
+
sudo apt-get -y install rubygems
|
36
30
|
|
37
31
|
2) Install +rails_pwnerer+:
|
38
32
|
sudo gem install rails_pwnerer
|
@@ -40,8 +34,8 @@ sudo gem install rails_pwnerer
|
|
40
34
|
3) Get your server production-ready:
|
41
35
|
sudo rpwn scaffold
|
42
36
|
|
43
|
-
If this doesn't work, blame your OS distribution (rubygems was
|
44
|
-
from creating a wrapper for rpwn, and our cheat against common
|
37
|
+
If this doesn't work, blame your OS distribution (rubygems was blocked
|
38
|
+
from creating a wrapper for rpwn, and our cheat against common blocks failed).
|
45
39
|
Manual workaround:
|
46
40
|
|
47
41
|
a) Find the path to the gems: gem environment gemdir (e.g. /var/lib/gems/1.8/gems/)
|
data/Rakefile
CHANGED
@@ -9,7 +9,12 @@ Echoe.new('rails_pwnerer') do |p|
|
|
9
9
|
p.email = 'victor@costan.us'
|
10
10
|
p.summary = 'Rails deployment tool/hack.'
|
11
11
|
p.url = 'http://www.costan.us/rails_pwnage'
|
12
|
-
|
12
|
+
p.runtime_dependencies = []
|
13
|
+
p.dependencies = []
|
14
|
+
# remove echoe, because it becomes a runtime dependency for rubygems < 1.2
|
15
|
+
p.development_dependencies = []
|
16
|
+
# override echoe's default of 1.2
|
17
|
+
p.rubygems_version = '>= 0'
|
13
18
|
p.extensions = ['ext/rpwn_setup_notice/extconf.rb']
|
14
19
|
p.eval = proc do |p|
|
15
20
|
p.default_executable = 'bin/rpwn'
|
data/lib/pwnage/base/dirs.rb
CHANGED
@@ -31,7 +31,7 @@ module RailsPwnage::Base
|
|
31
31
|
|
32
32
|
# executes a block in a temporary directory
|
33
33
|
def with_temp_dir(options = {})
|
34
|
-
temp_dir = "#{options[:root] ? '/' : ''}rbpwn_#{Time.now.to_i}"
|
34
|
+
temp_dir = "#{options[:root] ? '/' : ''}rbpwn_#{(Time.now.to_f * 1000).to_i}"
|
35
35
|
Dir.mkdir temp_dir
|
36
36
|
Dir.chdir(temp_dir) { yield }
|
37
37
|
FileUtils.rm_r temp_dir
|
data/lib/pwnage/base/packages.rb
CHANGED
@@ -1,44 +1,118 @@
|
|
1
1
|
# extends Base with OS package-related functions
|
2
2
|
|
3
|
+
require 'English'
|
4
|
+
|
3
5
|
module RailsPwnage::Base
|
4
6
|
# TODO: this works for debian-only
|
5
7
|
|
6
|
-
#
|
7
|
-
def
|
8
|
+
# Builds apt-get parameters for a set of options.
|
9
|
+
def apt_params_for(options = {})
|
10
|
+
params = ""
|
11
|
+
params << "-o Acquire::http::Proxy=false" if options[:no_proxy]
|
12
|
+
end
|
13
|
+
|
14
|
+
def install_package_impl(package_name, options)
|
15
|
+
apt_params = apt_params_for options
|
8
16
|
if options[:source]
|
9
17
|
with_temp_dir(:root => true) do
|
10
|
-
system "apt-get build-dep -y #{package_name}"
|
11
|
-
|
12
|
-
system "
|
18
|
+
Kernel.system "apt-get build-dep -y #{apt_params} #{package_name}"
|
19
|
+
return false unless $CHILD_STATUS.success?
|
20
|
+
Kernel.system "apt-get source -b #{apt_params} #{package_name}"
|
21
|
+
return false unless $CHILD_STATUS.success?
|
22
|
+
Kernel.system "dpkg -i #{Dir.glob('*.deb', File::FNM_DOTMATCH).join(' ')} < /dev/null"
|
23
|
+
return false unless $CHILD_STATUS.success?
|
13
24
|
end
|
14
25
|
else
|
15
|
-
system "apt-get install -y #{package_name} < /dev/null"
|
26
|
+
Kernel.system "apt-get install -y #{apt_params} #{package_name} < /dev/null"
|
27
|
+
return false unless $CHILD_STATUS.success?
|
16
28
|
end
|
29
|
+
return true
|
17
30
|
end
|
18
31
|
|
19
|
-
#
|
20
|
-
|
32
|
+
# Installs a package.
|
33
|
+
# Returns true for success, false for failure.
|
34
|
+
def install_package(package_name, options = {})
|
35
|
+
return true if install_package_impl(package_name, options)
|
21
36
|
if options[:source]
|
22
|
-
|
37
|
+
if options[:no_proxy]
|
38
|
+
# already bypassing proxy, fall back to binary package
|
39
|
+
return install_package(package_name, options.merge(:source => false))
|
40
|
+
else
|
41
|
+
# try bypassing proxy
|
42
|
+
return install_package(package_name, options.merge(:no_proxy => true))
|
43
|
+
end
|
44
|
+
else
|
45
|
+
if options[:no_proxy]
|
46
|
+
# out of alternatives
|
47
|
+
return false
|
48
|
+
else
|
49
|
+
#
|
50
|
+
return install_package(package_name, options.merge(:no_proxy => true))
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def upgrade_package_impl(package_name, options)
|
56
|
+
apt_params = apt_params_for options
|
57
|
+
Kernel.system "apt-get upgrade -y #{apt_params} #{package_name.nil ? '' : package_name} < /dev/null"
|
58
|
+
return $CHILD_STATUS.success?
|
59
|
+
end
|
60
|
+
|
61
|
+
# Upgrades a package to the latest version.
|
62
|
+
def upgrade_package(package_name, options = {})
|
63
|
+
return install_package(package_name, options) if options[:source]
|
64
|
+
return true if upgrade_package_impl(package_name, options)
|
23
65
|
|
24
|
-
|
66
|
+
if options[:no_proxy]
|
67
|
+
# out of alternatives
|
68
|
+
return false
|
25
69
|
else
|
26
|
-
|
70
|
+
#
|
71
|
+
return upgrade_package(package_name, options.merge(:no_proxy => true))
|
27
72
|
end
|
28
73
|
end
|
29
74
|
|
30
|
-
def
|
31
|
-
|
75
|
+
def upgrade_all_packages_impl(options)
|
76
|
+
apt_params = apt_params_for options
|
77
|
+
Kernel.system "apt-get upgrade -y #{apt_params} < /dev/null"
|
78
|
+
return $CHILD_STATUS.success?
|
79
|
+
end
|
80
|
+
|
81
|
+
def upgrade_all_packages(options = {})
|
82
|
+
return true if upgrade_all_packages_impl(options)
|
83
|
+
|
84
|
+
if options[:no_proxy]
|
85
|
+
# out of alternatives
|
86
|
+
return false
|
87
|
+
else
|
88
|
+
#
|
89
|
+
return upgrade_all_packages(options.merge(:no_proxy => true))
|
90
|
+
end
|
32
91
|
end
|
33
92
|
|
34
93
|
def remove_package(package_name, options = {})
|
35
94
|
system "apt-get remove -y #{package_name}" unless package_name.nil?
|
36
95
|
end
|
37
96
|
|
38
|
-
|
39
|
-
|
40
|
-
system "apt-get update -y < /dev/null"
|
41
|
-
|
97
|
+
def update_package_metadata_impl(options)
|
98
|
+
apt_params = apt_params_for options
|
99
|
+
Kernel.system "apt-get update -y #{apt_params} < /dev/null"
|
100
|
+
return $CHILD_STATUS.success?
|
101
|
+
end
|
102
|
+
|
103
|
+
# Updates the metadata for all the packages.
|
104
|
+
# Returns true for success, false for failure.
|
105
|
+
def update_package_metadata(options = {})
|
106
|
+
return true if update_package_metadata_impl options
|
107
|
+
|
108
|
+
if options[:no_proxy]
|
109
|
+
# out of alternatives
|
110
|
+
return false
|
111
|
+
else
|
112
|
+
# try bypassing proxy
|
113
|
+
return update_package_metadata(options.merge(:no_proxy => true))
|
114
|
+
end
|
115
|
+
end
|
42
116
|
|
43
117
|
# add a source to the package system
|
44
118
|
def add_package_source(source_url, source_repos = [], options = {})
|
@@ -16,9 +16,9 @@ class RailsPwnage::Scaffolds::Config
|
|
16
16
|
# host info
|
17
17
|
host_info = RailsPwnage::Config.create_db :host
|
18
18
|
# the default instance name
|
19
|
-
host_info[:instance] = Socket.gethostname()
|
19
|
+
host_info[:instance] = Socket.gethostname().split('.').first
|
20
20
|
# the computer's name (if we ever do status reports)
|
21
|
-
host_info[:name] = Socket.gethostname()
|
21
|
+
host_info[:name] = Socket.gethostname()
|
22
22
|
# username for creating / dropping databases
|
23
23
|
host_info[:dbroot_name] = 'root'
|
24
24
|
# password for creating / dropping databases
|
@@ -40,8 +40,9 @@ class RailsPwnage::Scaffolds::Packages
|
|
40
40
|
|
41
41
|
# the packages comprising ruby
|
42
42
|
def install_ruby
|
43
|
+
# NOTE: not wiping ruby anymore, because a lot of stuff depends on it... just hoping apt will replace it quietly
|
43
44
|
# wipe the old version (and pray we don't die until we're done, otherwise we're on a ruby-less system)
|
44
|
-
remove_packages %w(ruby1.8 libruby1.8)
|
45
|
+
# remove_packages %w(ruby1.8 libruby1.8) -- this shouldn't be needed anymore
|
45
46
|
|
46
47
|
# install ruby from source
|
47
48
|
install_packages %w(ruby1.8 rdoc libsetup-ruby1.8 ruby-pkg-tools rubygems1.8 rubygems irb), :source => true
|
data/rails_pwnerer.gemspec
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{rails_pwnerer}
|
5
|
-
s.version = "0.6.
|
5
|
+
s.version = "0.6.31"
|
6
6
|
|
7
|
-
s.required_rubygems_version = Gem::Requirement.new(">=
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Victor Costan"]
|
9
9
|
s.date = %q{2009-02-03}
|
10
10
|
s.default_executable = %q{bin/rpwn}
|
@@ -27,11 +27,8 @@ Gem::Specification.new do |s|
|
|
27
27
|
s.specification_version = 2
|
28
28
|
|
29
29
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
30
|
-
s.add_development_dependency(%q<echoe>, [">= 0"])
|
31
30
|
else
|
32
|
-
s.add_dependency(%q<echoe>, [">= 0"])
|
33
31
|
end
|
34
32
|
else
|
35
|
-
s.add_dependency(%q<echoe>, [">= 0"])
|
36
33
|
end
|
37
34
|
end
|
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.6.
|
4
|
+
version: 0.6.31
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Victor Costan
|
@@ -11,17 +11,8 @@ cert_chain: []
|
|
11
11
|
|
12
12
|
date: 2009-02-03 00:00:00 -05:00
|
13
13
|
default_executable: bin/rpwn
|
14
|
-
dependencies:
|
15
|
-
|
16
|
-
name: echoe
|
17
|
-
type: :development
|
18
|
-
version_requirement:
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">="
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: "0"
|
24
|
-
version:
|
14
|
+
dependencies: []
|
15
|
+
|
25
16
|
description: Rails deployment tool/hack.
|
26
17
|
email: victor@costan.us
|
27
18
|
executables:
|
@@ -161,7 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
161
152
|
requirements:
|
162
153
|
- - ">="
|
163
154
|
- !ruby/object:Gem::Version
|
164
|
-
version: "
|
155
|
+
version: "0"
|
165
156
|
version:
|
166
157
|
requirements: []
|
167
158
|
|