Files
metasploit-gs/lib/msf/core/module/author.rb
T
HD Moore 9340ecdeab IIS exploits ported
Added on_new_session callback and session_created? flag to exploit
Fixed socket fd leak in Comm::Local


git-svn-id: file:///home/svn/incoming/trunk@3135 4d416f70-5f16-0410-b530-b9f4589650da
2005-11-27 18:42:44 +00:00

108 lines
2.0 KiB
Ruby

require 'msf/core'
###
#
# This data type represents an author of a piece of code in either
# the framework, a module, a script, or something entirely unrelated.
#
###
class Msf::Module::Author
# A hash of known author names
Known =
{
'hdm' => 'hdm@metasploit.com',
'H D Moore' => 'hdm@metasploit.com',
'spoonm' => 'spoonm@gmail.com',
'skape' => 'mmiller@hick.org',
'vlad902' => 'vlad902@gmail.com',
'optyx' => 'optyx@hatesemail.com',
'anonymous' => 'anonymous-contributor@metasploit.com'
}
#
# Class method that translates a string to an instance of the Author class,
# if it's of the right format, and returns the Author class instance
#
def self.from_s(str)
instance = self.new
# If the serialization fails...
if (instance.from_s(str) == false)
return nil
end
return instance
end
#
# Transforms the supplied source into an array of authors
#
def self.transform(src)
Rex::Transformer.transform(src, Array, [ self ], 'Author')
end
def initialize(name = nil, email = nil)
self.name = name
self.email = email || Known[name]
end
#
# Compares authors
#
def ==(tgt)
return (tgt.to_s == to_s)
end
#
# Serialize the author object to a string in form:
#
# name <email>
#
def to_s
str = "#{name}"
if (email != nil)
str += " <#{email}>"
end
return str
end
#
# Translate the author from the supplied string which may
# have either just a name or also an email address
#
def from_s(str)
# Make fix up this regex to be a bit better...I suck at regex
m = /^([A-Za-z0-9 _]*?) <(.*?)>/.match(str)
if (m != nil)
self.name = m[1]
self.email = m[2]
else
self.email = Known[str]
if (self.email != nil)
self.name = str
else
return false
end
end
return true
end
#
# Sets the name of the author and updates the email if it's a known author.
#
def name=(name)
self.email = Known[name] if (Known[name])
@name = name
end
attr_accessor :email
attr_reader :name
end