Class: Msf::Author
- Inherits:
-
Object
- Object
- Msf::Author
- Defined in:
- lib/msf/core/author.rb
Overview
An author of a piece of code in either the framework, a module, a script, or something entirely unrelated.
Constant Summary collapse
- KNOWN =
A hash that maps known author names to email addresses
{ 'amaloteaux' => 'alex_maloteaux' + 0x40.chr + 'metasploit.com', 'aushack' => 'patrick' + 0x40.chr + 'osisecurity.com.au', 'bannedit' => 'bannedit' + 0x40.chr + 'metasploit.com', 'bcoles' => 'bcoles' + 0x40.chr + 'gmail.com', 'Carlos Perez' => 'carlos_perez' + 0x40.chr + 'darkoperator.com', 'cazz' => 'bmc' + 0x40.chr + 'shmoo.com', 'CG' => 'cg' + 0x40.chr + 'carnal0wnage.com', 'ddz' => 'ddz' + 0x40.chr + 'theta44.org', 'egypt' => 'egypt' + 0x40.chr + 'metasploit.com', 'et' => 'et' + 0x40.chr + 'metasploit.com', 'Christian Mehlmauer' => 'FireFart' + 0x40.chr + 'gmail.com', 'hdm' => 'x' + 0x40.chr + 'hdm.io', 'I)ruid' => 'druid' + 0x40.chr + 'caughq.org', 'jcran' => 'jcran' + 0x40.chr + 'metasploit.com', 'jduck' => 'jduck' + 0x40.chr + 'metasploit.com', 'joev' => 'joev' + 0x40.chr + 'metasploit.com', 'juan vazquez' => 'juan.vazquez' + 0x40.chr + 'metasploit.com', 'kf' => 'kf_list' + 0x40.chr + 'digitalmunition.com', 'kris katterjohn' => 'katterjohn' + 0x40.chr + 'gmail.com', 'MC' => 'mc' + 0x40.chr + 'metasploit.com', 'Ben Campbell' => 'eat_meatballs' + 0x40.chr + 'hotmail.co.uk', 'msmith' => 'msmith' + 0x40.chr + 'metasploit.com', 'mubix' => 'mubix' + 0x40.chr + 'hak5.org', 'natron' => 'natron' + 0x40.chr + 'metasploit.com', 'optyx' => 'optyx' + 0x40.chr + 'no$email.com', 'pusscat' => 'pusscat' + 0x40.chr + 'metasploit.com', 'Ramon de C Valle' => 'rcvalle' + 0x40.chr + 'metasploit.com', 'sf' => 'stephen_fewer' + 0x40.chr + 'harmonysecurity.com', 'sinn3r' => 'sinn3r' + 0x40.chr + 'metasploit.com', 'skape' => 'mmiller' + 0x40.chr + 'hick.org', 'skylined' => 'skylined' + 0x40.chr + 'edup.tudelft.nl', 'spoonm' => 'spoonm' + 0x40.chr + 'no$email.com', 'stinko' => 'vinnie' + 0x40.chr + 'metasploit.com', 'theLightCosine' => 'theLightCosine' + 0x40.chr + 'metasploit.com', 'todb' => 'todb' + 0x40.chr + 'metasploit.com', 'vlad902' => 'vlad902' + 0x40.chr + 'gmail.com', 'wvu' => 'wvu' + 0x40.chr + 'metasploit.com', 'zeroSteiner' => 'zeroSteiner' + 0x40.chr + 'gmail.com' }
Instance Attribute Summary collapse
-
#email ⇒ String?
An optional email associated with this Author.
-
#name ⇒ Object
Returns the value of attribute name.
Class Method Summary collapse
-
.from_s(str) ⇒ Author
Parses an Author instance from the specified string.
- .transform(src) ⇒ Array<Author>
Instance Method Summary collapse
-
#==(tgt) ⇒ Boolean
Whether the Author instances are equal.
-
#from_s(str) ⇒ Boolean
Parses Author details from the supplied string which may be of the form ‘name` or `name <a@b.com>`.
-
#initialize(name = nil, email = nil) ⇒ Author
constructor
Constructs an Author from a given ‘name` and `email`.
-
#to_s ⇒ String
Serialize the Author instance to a string of the form ‘name` or `name <a@b.com>`.
Constructor Details
#initialize(name = nil, email = nil) ⇒ Author
Constructs an Msf::Author from a given ‘name` and `email`
90 91 92 93 |
# File 'lib/msf/core/author.rb', line 90 def initialize(name = nil, email = nil) self.name = name self.email = email || KNOWN[name] end |
Instance Attribute Details
#email ⇒ String?
An optional email associated with this Msf::Author.
103 104 105 |
# File 'lib/msf/core/author.rb', line 103 def email @email end |
#name ⇒ Object
Returns the value of attribute name.
109 110 111 |
# File 'lib/msf/core/author.rb', line 109 def name @name end |
Class Method Details
.from_s(str) ⇒ Author
Parses an Msf::Author instance from the specified string.
66 67 68 69 70 71 72 73 74 75 |
# File 'lib/msf/core/author.rb', line 66 def self.from_s(str) instance = self.new # If the serialization fails... if instance.from_s(str) == true instance else nil end end |
.transform(src) ⇒ Array<Author>
Normalizes a single Msf::Author reference or an Array of Msf::Author references to an Array of Msf::Author references.
82 83 84 |
# File 'lib/msf/core/author.rb', line 82 def self.transform(src) Rex::Transformer.transform(src, Array, [ self ], 'Author') end |
Instance Method Details
#==(tgt) ⇒ Boolean
Returns whether the Msf::Author instances are equal.
116 117 118 |
# File 'lib/msf/core/author.rb', line 116 def ==(tgt) tgt.to_s == to_s end |
#from_s(str) ⇒ Boolean
Parses Msf::Author details from the supplied string which may be of the form ‘name` or `name <a@b.com>`
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
# File 'lib/msf/core/author.rb', line 137 def from_s(str) # Supported formats: # known_name # user [at/@] host [dot/.] tld # Name <user [at/@] host [dot/.] tld> if str.present? if ((m = str.match(/^\s*([^<]+)<([^>]+)>\s*$/))) self.name = m[1].sub(/<.*/, '') self.email = m[2].sub(/\s*\[at\]\s*/, '@').sub(/\s*\[dot\]\s*/, '.') else if (KNOWN[str]) self.email = KNOWN[str] self.name = str else self.email = str.sub(/\s*\[at\]\s*/, '@').sub(/\s*\[dot\]\s*/, '.').gsub(/^<|>$/, '') m = self.email.match(/([^@]+)@/) self.name = m ? m[1] : nil if !(self.email and self.email.index('@')) self.name = self.email self.email = '' end end end end # The parse succeeds only when a name is found self.name.present? end |
#to_s ⇒ String
Serialize the Msf::Author instance to a string of the form ‘name` or `name <a@b.com>`
123 124 125 126 127 128 129 |
# File 'lib/msf/core/author.rb', line 123 def to_s str = "#{name}" if (email and not email.empty?) str += " <#{email}>" end str end |