rails_pwnerer 0.4.15 → 0.4.16
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/lib/pwnage/executor.rb +3 -0
- data/lib/pwnage/scaffolds/rubygems.rb +58 -0
- data/lib/rails_pwnage.rb +1 -0
- data/rails_pwnerer.gemspec +4 -4
- metadata +3 -1
    
        data/CHANGELOG
    CHANGED
    
    
    
        data/Manifest
    CHANGED
    
    
    
        data/lib/pwnage/executor.rb
    CHANGED
    
    | @@ -8,6 +8,8 @@ class RailsPwnage::Executor | |
| 8 8 | 
             
                  case args[1]
         | 
| 9 9 | 
             
                  when 'dirs'
         | 
| 10 10 | 
             
                    Dirs.go
         | 
| 11 | 
            +
                  when 'rubygems'
         | 
| 12 | 
            +
                    RubyGems.go
         | 
| 11 13 | 
             
                  when 'gems'
         | 
| 12 14 | 
             
                    Gems.go
         | 
| 13 15 | 
             
                  when 'packages'
         | 
| @@ -24,6 +26,7 @@ class RailsPwnage::Executor | |
| 24 26 | 
             
                    end
         | 
| 25 27 | 
             
                  else
         | 
| 26 28 | 
             
                    Packages.go
         | 
| 29 | 
            +
                    RubyGems.go
         | 
| 27 30 | 
             
                    Gems.go
         | 
| 28 31 | 
             
                    Dirs.go
         | 
| 29 32 | 
             
                    MysqlConfig.go
         | 
| @@ -0,0 +1,58 @@ | |
| 1 | 
            +
            require 'net/http'
         | 
| 2 | 
            +
            require 'pp'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            class RailsPwnage::Scaffolds::RubyGems
         | 
| 5 | 
            +
              include RailsPwnage::Base
         | 
| 6 | 
            +
              
         | 
| 7 | 
            +
              # retrieves the URI for a Google "I'm Feeling Lucky" search
         | 
| 8 | 
            +
              def google_lucky_uri(query)
         | 
| 9 | 
            +
                uri = URI.parse "http://www.google.com/search?q=#{URI.escape query}&btnI=Lucky"
         | 
| 10 | 
            +
                response = Net::HTTP.start(uri.host, uri.port) { |http| http.get "#{uri.path}?#{uri.query}" }
         | 
| 11 | 
            +
                response.header['location']
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
              
         | 
| 14 | 
            +
              # retrieves the download URI for a RubyForge project
         | 
| 15 | 
            +
              def rubyforge_download_uri(project, gem_name = project, extension = ".gem")
         | 
| 16 | 
            +
                frs_uri = URI.parse google_lucky_uri("rubyforge project #{project} download")
         | 
| 17 | 
            +
                frs_contents = Net::HTTP.get frs_uri
         | 
| 18 | 
            +
                frs_links = frs_contents.scan(/\<a.+href=\"(.+?)\"\>/).flatten.
         | 
| 19 | 
            +
                              select { |link| link.index('.tgz') && link.index("#{gem_name}-") }
         | 
| 20 | 
            +
                latest_link = frs_links.sort_by { |n| n.match(/#{gem_name}-(.*)\.#{extension}/)[1] }.last
         | 
| 21 | 
            +
                return frs_uri.merge(latest_link)
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
              
         | 
| 24 | 
            +
              # installs Rubygems on the system
         | 
| 25 | 
            +
              def install_rubygems
         | 
| 26 | 
            +
                with_temp_dir(:root => true) do 
         | 
| 27 | 
            +
                  tgz_uri = rubyforge_download_uri('rubygems', 'rubygems', 'tgz')
         | 
| 28 | 
            +
                  file_name = File.basename tgz_uri.path
         | 
| 29 | 
            +
                  loop do
         | 
| 30 | 
            +
                    request_path = tgz_uri.query.to_s.empty? ? tgz_uri.path : "#{tgz_uri.path}?#{tgz_uri.query}"
         | 
| 31 | 
            +
                    response = Net::HTTP.start(tgz_uri.host, tgz_uri.port) { |http| http.get request_path }
         | 
| 32 | 
            +
                    if response.kind_of? Net::HTTPRedirection
         | 
| 33 | 
            +
                      tgz_uri = URI.parse response.header['location']
         | 
| 34 | 
            +
                      next
         | 
| 35 | 
            +
                    end
         | 
| 36 | 
            +
                    File.open(file_name, 'wb') { |f| f.write response.body }
         | 
| 37 | 
            +
                    break
         | 
| 38 | 
            +
                  end
         | 
| 39 | 
            +
                  
         | 
| 40 | 
            +
                  system "tar -xzf #{file_name}" 
         | 
| 41 | 
            +
                  File.unlink file_name
         | 
| 42 | 
            +
                  Dir.chdir(Dir.glob('*').first) do
         | 
| 43 | 
            +
                    system "ruby setup.rb"
         | 
| 44 | 
            +
                  end
         | 
| 45 | 
            +
                end   
         | 
| 46 | 
            +
              end
         | 
| 47 | 
            +
              
         | 
| 48 | 
            +
              def run
         | 
| 49 | 
            +
                # remove the (retarded) Debian gems package and install from source    
         | 
| 50 | 
            +
                remove_packages %w(rubygems)
         | 
| 51 | 
            +
                install_rubygems
         | 
| 52 | 
            +
              end
         | 
| 53 | 
            +
              
         | 
| 54 | 
            +
              # standalone runner
         | 
| 55 | 
            +
              def self.go
         | 
| 56 | 
            +
                self.new.run
         | 
| 57 | 
            +
              end  
         | 
| 58 | 
            +
            end
         | 
    
        data/lib/rails_pwnage.rb
    CHANGED
    
    | @@ -20,6 +20,7 @@ require 'pwnage/scaffolds/hook_mongrels.rb' | |
| 20 20 | 
             
            require 'pwnage/scaffolds/hook_dyndns.rb'
         | 
| 21 21 | 
             
            require 'pwnage/scaffolds/mysql_config.rb'
         | 
| 22 22 | 
             
            require 'pwnage/scaffolds/packages.rb'
         | 
| 23 | 
            +
            require 'pwnage/scaffolds/rubygems.rb'
         | 
| 23 24 |  | 
| 24 25 | 
             
            require 'pwnage/app/main.rb'
         | 
| 25 26 | 
             
            require 'pwnage/app/svn.rb'
         | 
    
        data/rails_pwnerer.gemspec
    CHANGED
    
    | @@ -1,10 +1,10 @@ | |
| 1 1 |  | 
| 2 | 
            -
            # Gem::Specification for Rails_pwnerer-0.4. | 
| 2 | 
            +
            # Gem::Specification for Rails_pwnerer-0.4.16
         | 
| 3 3 | 
             
            # Originally generated by Echoe
         | 
| 4 4 |  | 
| 5 5 | 
             
            Gem::Specification.new do |s|
         | 
| 6 6 | 
             
              s.name = %q{rails_pwnerer}
         | 
| 7 | 
            -
              s.version = "0.4. | 
| 7 | 
            +
              s.version = "0.4.16"
         | 
| 8 8 |  | 
| 9 9 | 
             
              s.specification_version = 2 if s.respond_to? :specification_version=
         | 
| 10 10 |  | 
| @@ -15,8 +15,8 @@ Gem::Specification.new do |s| | |
| 15 15 | 
             
              s.description = %q{Rails deployment tool/hack.}
         | 
| 16 16 | 
             
              s.email = %q{victor@costan.us}
         | 
| 17 17 | 
             
              s.executables = ["rpwn"]
         | 
| 18 | 
            -
              s.extra_rdoc_files = ["bin/rpwn", "CHANGELOG", "lib/pwnage/app/cluster_config.rb", "lib/pwnage/app/database.rb", "lib/pwnage/app/gems.rb", "lib/pwnage/app/main.rb", "lib/pwnage/app/nginx_config.rb", "lib/pwnage/app/svn.rb", "lib/pwnage/base/dirs.rb", "lib/pwnage/base/gems.rb", "lib/pwnage/base/packages.rb", "lib/pwnage/base/startup.rb", "lib/pwnage/base.rb", "lib/pwnage/config/main.rb", "lib/pwnage/executor.rb", "lib/pwnage/scaffolds/dirs.rb", "lib/pwnage/scaffolds/gems.rb", "lib/pwnage/scaffolds/hook_dyndns.rb", "lib/pwnage/scaffolds/hook_mongrels.rb", "lib/pwnage/scaffolds/mysql_config.rb", "lib/pwnage/scaffolds/packages.rb", "lib/rails_pwnage.rb", "LICENSE", "README"]
         | 
| 19 | 
            -
              s.files = ["bin/rpwn", "CHANGELOG", "lib/pwnage/app/cluster_config.rb", "lib/pwnage/app/database.rb", "lib/pwnage/app/gems.rb", "lib/pwnage/app/main.rb", "lib/pwnage/app/nginx_config.rb", "lib/pwnage/app/svn.rb", "lib/pwnage/base/dirs.rb", "lib/pwnage/base/gems.rb", "lib/pwnage/base/packages.rb", "lib/pwnage/base/startup.rb", "lib/pwnage/base.rb", "lib/pwnage/config/main.rb", "lib/pwnage/executor.rb", "lib/pwnage/scaffolds/dirs.rb", "lib/pwnage/scaffolds/gems.rb", "lib/pwnage/scaffolds/hook_dyndns.rb", "lib/pwnage/scaffolds/hook_mongrels.rb", "lib/pwnage/scaffolds/mysql_config.rb", "lib/pwnage/scaffolds/packages.rb", "lib/rails_pwnage.rb", "LICENSE", "Manifest", "README", "RUBYFORGE", "rails_pwnerer.gemspec"]
         | 
| 18 | 
            +
              s.extra_rdoc_files = ["bin/rpwn", "CHANGELOG", "lib/pwnage/app/cluster_config.rb", "lib/pwnage/app/database.rb", "lib/pwnage/app/gems.rb", "lib/pwnage/app/main.rb", "lib/pwnage/app/nginx_config.rb", "lib/pwnage/app/svn.rb", "lib/pwnage/base/dirs.rb", "lib/pwnage/base/gems.rb", "lib/pwnage/base/packages.rb", "lib/pwnage/base/startup.rb", "lib/pwnage/base.rb", "lib/pwnage/config/main.rb", "lib/pwnage/executor.rb", "lib/pwnage/scaffolds/dirs.rb", "lib/pwnage/scaffolds/gems.rb", "lib/pwnage/scaffolds/hook_dyndns.rb", "lib/pwnage/scaffolds/hook_mongrels.rb", "lib/pwnage/scaffolds/mysql_config.rb", "lib/pwnage/scaffolds/packages.rb", "lib/pwnage/scaffolds/rubygems.rb", "lib/rails_pwnage.rb", "LICENSE", "README"]
         | 
| 19 | 
            +
              s.files = ["bin/rpwn", "CHANGELOG", "lib/pwnage/app/cluster_config.rb", "lib/pwnage/app/database.rb", "lib/pwnage/app/gems.rb", "lib/pwnage/app/main.rb", "lib/pwnage/app/nginx_config.rb", "lib/pwnage/app/svn.rb", "lib/pwnage/base/dirs.rb", "lib/pwnage/base/gems.rb", "lib/pwnage/base/packages.rb", "lib/pwnage/base/startup.rb", "lib/pwnage/base.rb", "lib/pwnage/config/main.rb", "lib/pwnage/executor.rb", "lib/pwnage/scaffolds/dirs.rb", "lib/pwnage/scaffolds/gems.rb", "lib/pwnage/scaffolds/hook_dyndns.rb", "lib/pwnage/scaffolds/hook_mongrels.rb", "lib/pwnage/scaffolds/mysql_config.rb", "lib/pwnage/scaffolds/packages.rb", "lib/pwnage/scaffolds/rubygems.rb", "lib/rails_pwnage.rb", "LICENSE", "Manifest", "README", "RUBYFORGE", "rails_pwnerer.gemspec"]
         | 
| 20 20 | 
             
              s.has_rdoc = true
         | 
| 21 21 | 
             
              s.homepage = %q{http://www.costan.us/rails_pwnage}
         | 
| 22 22 | 
             
              s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Rails_pwnerer", "--main", "README"]
         | 
    
        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.4. | 
| 4 | 
            +
              version: 0.4.16
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors: 
         | 
| 7 7 | 
             
            - Victor Costan
         | 
| @@ -41,6 +41,7 @@ extra_rdoc_files: | |
| 41 41 | 
             
            - lib/pwnage/scaffolds/hook_mongrels.rb
         | 
| 42 42 | 
             
            - lib/pwnage/scaffolds/mysql_config.rb
         | 
| 43 43 | 
             
            - lib/pwnage/scaffolds/packages.rb
         | 
| 44 | 
            +
            - lib/pwnage/scaffolds/rubygems.rb
         | 
| 44 45 | 
             
            - lib/rails_pwnage.rb
         | 
| 45 46 | 
             
            - LICENSE
         | 
| 46 47 | 
             
            - README
         | 
| @@ -66,6 +67,7 @@ files: | |
| 66 67 | 
             
            - lib/pwnage/scaffolds/hook_mongrels.rb
         | 
| 67 68 | 
             
            - lib/pwnage/scaffolds/mysql_config.rb
         | 
| 68 69 | 
             
            - lib/pwnage/scaffolds/packages.rb
         | 
| 70 | 
            +
            - lib/pwnage/scaffolds/rubygems.rb
         | 
| 69 71 | 
             
            - lib/rails_pwnage.rb
         | 
| 70 72 | 
             
            - LICENSE
         | 
| 71 73 | 
             
            - Manifest
         |