Files
metasploit-gs/lib/msf/core/module/full_name.rb
T
2019-12-02 09:03:58 -06:00

108 lines
2.0 KiB
Ruby

# @note {Msf::Module::ModuleInfo#name} is unrelated to {#fullname} and should instead be thought of as the title or
# summary of the module.
#
# Names related to {#fullname}, such as {#fullname}, {#refname}, and {#shortname}.
module Msf::Module::FullName
extend ActiveSupport::Concern
module ClassMethods
#
# Attributes
#
# @attribute refname
# The module's name that is assigned to it by the framework
# or derived from the path that the module is loaded from.
attr_accessor :refname
#
# Class Methods
#
def fullname
"#{type}/#{refname}"
end
#
# Classes themselves are never aliased (at the moment, anyway), but this is
# always just the {#fullname}.
#
def realname
fullname
end
def promptname
refname
end
def shortname
refname.split('/').last
end
#
# Returns a list of alternate names the module might go by.
#
def aliases
const_defined?(:Aliases) ? const_get(:Aliases) : []
end
end
#
# Instance Methods
#
attr_accessor :aliased_as
#
# Returns the module's framework full reference name. This is the
# short name that end-users work with (refname) plus the type
# of module prepended. Ex:
#
# payloads/windows/shell/reverse_tcp
#
def fullname
aliased_as || self.class.fullname
end
#
# Always return the module's framework full reference name, even when the
# module is aliased.
#
def realname
self.class.fullname
end
#
# Returns the module's framework reference name. This is the
# short name that end-users work with. Ex:
#
# windows/shell/reverse_tcp
#
def refname
fullname.delete_prefix("#{type}/")
end
#
# Returns the module's framework prompt-friendly name.
#
# windows/shell/reverse_tcp
#
def promptname
refname
end
#
# Returns the module's framework short name.
#
# reverse_tcp
#
def shortname
refname.split('/').last
end
def aliases
self.class.aliases
end
end