SILENT KILLERPanel

Current Path: > > opt > alt > ruby34 > > share > rubygems > rubygems


Operation   : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
Software     : Apache
Server IP    : 162.0.232.56 | Your IP: 216.73.216.111
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: //opt/alt/ruby34//share/rubygems/rubygems

NameTypeSizeLast ModifiedActions
commands Directory - -
core_ext Directory - -
defaults Directory - -
ext Directory - -
gemcutter_utilities Directory - -
package Directory - -
request Directory - -
request_set Directory - -
resolver Directory - -
safe_marshal Directory - -
security Directory - -
source Directory - -
ssl_certs Directory - -
util Directory - -
vendor Directory - -
available_set.rb File 3075 bytes May 29 2025 13:39:48.
basic_specification.rb File 8329 bytes May 29 2025 13:39:49.
bundler_version_finder.rb File 2009 bytes May 29 2025 13:39:49.
ci_detector.rb File 3801 bytes May 29 2025 13:39:48.
command.rb File 16179 bytes May 29 2025 13:39:49.
command_manager.rb File 5778 bytes May 29 2025 13:39:49.
compatibility.rb File 1022 bytes May 29 2025 13:39:48.
config_file.rb File 16700 bytes May 29 2025 13:39:49.
defaults.rb File 7558 bytes May 29 2025 13:39:49.
dependency.rb File 8652 bytes May 29 2025 13:39:49.
dependency_installer.rb File 10144 bytes May 29 2025 13:39:49.
dependency_list.rb File 5684 bytes May 29 2025 13:39:49.
deprecate.rb File 5159 bytes May 29 2025 13:39:49.
doctor.rb File 3204 bytes May 29 2025 13:39:48.
errors.rb File 4635 bytes May 29 2025 13:39:48.
exceptions.rb File 7298 bytes May 29 2025 13:39:49.
ext.rb File 498 bytes May 29 2025 13:39:49.
gem_runner.rb File 2187 bytes May 29 2025 13:39:49.
gemcutter_utilities.rb File 11515 bytes May 29 2025 13:39:48.
gemspec_helpers.rb File 394 bytes May 29 2025 13:39:49.
install_default_message.rb File 349 bytes May 29 2025 13:39:49.
install_message.rb File 323 bytes May 29 2025 13:39:49.
install_update_options.rb File 6722 bytes May 29 2025 13:39:48.
installer.rb File 28403 bytes May 29 2025 13:39:49.
installer_uninstaller_utils.rb File 771 bytes May 29 2025 13:39:48.
local_remote_options.rb File 3675 bytes May 29 2025 13:39:48.
name_tuple.rb File 2442 bytes May 29 2025 13:39:49.
openssl.rb File 125 bytes May 29 2025 13:39:49.
package.rb File 19281 bytes May 29 2025 13:39:48.
package_task.rb File 3879 bytes May 29 2025 13:39:48.
path_support.rb File 1816 bytes May 29 2025 13:39:49.
platform.rb File 8608 bytes May 29 2025 13:39:49.
psych_tree.rb File 855 bytes May 29 2025 13:39:49.
query_utils.rb File 8703 bytes May 29 2025 13:39:48.
rdoc.rb File 660 bytes May 29 2025 13:39:49.
remote_fetcher.rb File 9604 bytes May 29 2025 13:39:48.
request.rb File 8910 bytes May 29 2025 13:39:49.
request_set.rb File 11558 bytes May 29 2025 13:39:49.
requirement.rb File 7298 bytes May 29 2025 13:39:48.
resolver.rb File 9659 bytes May 29 2025 13:39:49.
s3_uri_signer.rb File 6106 bytes May 29 2025 13:39:49.
safe_marshal.rb File 1969 bytes May 29 2025 13:39:49.
safe_yaml.rb File 1067 bytes May 29 2025 13:39:49.
security.rb File 22214 bytes May 29 2025 13:39:49.
security_option.rb File 1084 bytes May 29 2025 13:39:49.
shellwords.rb File 66 bytes May 29 2025 13:39:49.
source.rb File 5922 bytes May 29 2025 13:39:49.
source_list.rb File 2482 bytes May 29 2025 13:39:49.
spec_fetcher.rb File 7868 bytes May 29 2025 13:39:49.
specification.rb File 70688 bytes May 29 2025 13:39:49.
specification_policy.rb File 15964 bytes May 29 2025 13:39:48.
specification_record.rb File 5332 bytes May 29 2025 13:39:48.
stub_specification.rb File 5078 bytes May 29 2025 13:39:48.
target_rbconfig.rb File 1273 bytes May 29 2025 13:39:49.
text.rb File 2114 bytes May 29 2025 13:39:49.
uninstaller.rb File 11179 bytes May 29 2025 13:39:49.
unknown_command_spell_checker.rb File 411 bytes May 29 2025 13:39:49.
update_suggestion.rb File 1899 bytes May 29 2025 13:39:49.
uri.rb File 2436 bytes May 29 2025 13:39:48.
uri_formatter.rb File 784 bytes May 29 2025 13:39:48.
user_interaction.rb File 13417 bytes May 29 2025 13:39:48.
util.rb File 2519 bytes May 29 2025 13:39:48.
validator.rb File 3717 bytes May 29 2025 13:39:48.
vendored_molinillo.rb File 81 bytes May 29 2025 13:39:49.
vendored_net_http.rb File 233 bytes May 29 2025 13:39:48.
vendored_optparse.rb File 79 bytes May 29 2025 13:39:49.
vendored_securerandom.rb File 87 bytes May 29 2025 13:39:48.
vendored_timeout.rb File 228 bytes May 29 2025 13:39:48.
vendored_tsort.rb File 73 bytes May 29 2025 13:39:49.
version.rb File 13668 bytes May 29 2025 13:39:49.
version_option.rb File 2227 bytes May 29 2025 13:39:48.
yaml_serializer.rb File 2474 bytes May 29 2025 13:39:48.

Reading File: //opt/alt/ruby34//share/rubygems/rubygems/validator.rb

# frozen_string_literal: true

#--
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
# All rights reserved.
# See LICENSE.txt for permissions.
#++

require_relative "package"
require_relative "installer"

##
# Validator performs various gem file and gem database validation

class Gem::Validator
  include Gem::UserInteraction

  def initialize # :nodoc:
    require "find"
  end

  private

  def find_files_for_gem(gem_directory)
    installed_files = []

    Find.find gem_directory do |file_name|
      fn = file_name[gem_directory.size..file_name.size - 1].sub(%r{^/}, "")
      installed_files << fn unless
        fn.empty? || fn.include?("CVS") || File.directory?(file_name)
    end

    installed_files
  end

  public

  ##
  # Describes a problem with a file in a gem.

  ErrorData = Struct.new :path, :problem do
    def <=>(other) # :nodoc:
      return nil unless self.class === other

      [path, problem] <=> [other.path, other.problem]
    end
  end

  ##
  # Checks the gem directory for the following potential
  # inconsistencies/problems:
  #
  # * Checksum gem itself
  # * For each file in each gem, check consistency of installed versions
  # * Check for files that aren't part of the gem but are in the gems directory
  # * 1 cache - 1 spec - 1 directory.
  #
  # returns a hash of ErrorData objects, keyed on the problem gem's name.
  #--
  # TODO needs further cleanup

  def alien(gems=[])
    errors = Hash.new {|h,k| h[k] = {} }

    Gem::Specification.each do |spec|
      unless gems.empty?
        next unless gems.include? spec.name
      end
      next if spec.default_gem?

      gem_name      = spec.file_name
      gem_path      = spec.cache_file
      spec_path     = spec.spec_file
      gem_directory = spec.full_gem_path

      unless File.directory? gem_directory
        errors[gem_name][spec.full_name] =
          "Gem registered but doesn't exist at #{gem_directory}"
        next
      end

      unless File.exist? spec_path
        errors[gem_name][spec_path] = "Spec file missing for installed gem"
      end

      begin
        unless File.readable?(gem_path)
          raise Gem::VerificationError, "missing gem file #{gem_path}"
        end

        good, gone, unreadable = nil, nil, nil, nil

        File.open gem_path, Gem.binary_mode do |_file|
          package = Gem::Package.new gem_path

          good, gone = package.contents.partition do |file_name|
            File.exist? File.join(gem_directory, file_name)
          end

          gone.sort.each do |path|
            errors[gem_name][path] = "Missing file"
          end

          good, unreadable = good.partition do |file_name|
            File.readable? File.join(gem_directory, file_name)
          end

          unreadable.sort.each do |path|
            errors[gem_name][path] = "Unreadable file"
          end

          good.each do |entry, data|
            next unless data # HACK: `gem check -a mkrf`

            source = File.join gem_directory, entry["path"]

            File.open source, Gem.binary_mode do |f|
              unless f.read == data
                errors[gem_name][entry["path"]] = "Modified from original"
              end
            end
          end
        end

        installed_files = find_files_for_gem(gem_directory)
        extras = installed_files - good - unreadable

        extras.each do |extra|
          errors[gem_name][extra] = "Extra file"
        end
      rescue Gem::VerificationError => e
        errors[gem_name][gem_path] = e.message
      end
    end

    errors.each do |name, subhash|
      errors[name] = subhash.map do |path, msg|
        ErrorData.new path, msg
      end.sort
    end

    errors
  end
end

SILENT KILLER Tool