6c2da4d313
Addition of MC as a common author Added the IMAP mixin Fixed bug in base64 git-svn-id: file:///home/svn/incoming/trunk@3172 4d416f70-5f16-0410-b530-b9f4589650da
111 lines
2.1 KiB
Ruby
111 lines
2.1 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',
|
|
'stinko' => 'vinnie@metasploit.com',
|
|
'MC' => 'y0@w00t-shell.net',
|
|
|
|
}
|
|
|
|
#
|
|
# 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
|