Class: Aspisec::Module
- Inherits:
- 
      Object
      
        - Object
- Aspisec::Module
 
- Defined in:
- lib-ruby/aspisec/module.rb
Overview
Generic module class that will be inherited in all modules instances
Direct Known Subclasses
Aspisec::Modules::Amass, Aspisec::Modules::Bloodhound, Aspisec::Modules::Crackmapexec, Aspisec::Modules::Dbgate, Aspisec::Modules::Ffuf, Aspisec::Modules::Hashcat, Aspisec::Modules::HomeHistoryFiles, Aspisec::Modules::John, Aspisec::Modules::JwtTool, Aspisec::Modules::Lsassy, Aspisec::Modules::Manspider, Aspisec::Modules::Metasploit, Aspisec::Modules::Mobsf, Aspisec::Modules::MongodbCompass, Aspisec::Modules::MongodbMongosh, Aspisec::Modules::Ncrack, Aspisec::Modules::Netexec, Aspisec::Modules::Recaf, Aspisec::Modules::Remmina, Aspisec::Modules::Semgrep, Aspisec::Modules::Spiderfoot, Aspisec::Modules::Sqlmap, Aspisec::Modules::Theharvester, Aspisec::Modules::Weevely, Aspisec::Modules::Whatwaf
Defined Under Namespace
Classes: Location
Instance Attribute Summary collapse
- 
  
    
      #base  ⇒ Pathname 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    The base location (directory) where the tool data is stored. 
- 
  
    
      #conf  ⇒ Hash 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    The configuration for the tool. 
- 
  
    
      #locations_list  ⇒ Array<String> 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    List of locations (name). 
- 
  
    
      #name  ⇒ String 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    The name of the tool. 
Instance Method Summary collapse
- 
  
    
      #check_config  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Raise an issue if the module configuration is missing. 
- 
  
    
      #enabled?  ⇒ true|false 
    
    
  
  
  
  
  
  
  
  
  
    Is this module enabled?. 
- 
  
    
      #initialize(conf, tool_name, logger: nil)  ⇒ Module 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    Not meant to be used directly but to be inherited in modules instead. 
- 
  
    
      #locations  ⇒ Array<Location> 
    
    
  
  
  
  
  
  
  
  
  
    Returns all locations available for the tool. 
Constructor Details
#initialize(conf, tool_name, logger: nil) ⇒ Module
Not meant to be used directly but to be inherited in modules instead
| 43 44 45 46 47 48 49 50 51 52 | # File 'lib-ruby/aspisec/module.rb', line 43 def initialize(conf, tool_name, logger: nil) @logger = logger || Aspisec::Logger.new.logger @name = tool_name @logger.debug("Module #{@name} was loaded", app: @name) @conf = conf['tools'][tool_name] check_config @base = Pathname.new(@conf.dig('location', 'base')) @enabled = @conf.fetch('enabled', true) @locations_list = [] end | 
Instance Attribute Details
#base ⇒ Pathname (readonly)
The base location (directory) where the tool data is stored.
| 29 30 31 | # File 'lib-ruby/aspisec/module.rb', line 29 def base @base end | 
#conf ⇒ Hash (readonly)
The configuration for the tool.
Sub-tree under tools > tool_name of Config#conf.
| 14 15 16 | # File 'lib-ruby/aspisec/module.rb', line 14 def conf @conf end | 
#locations_list ⇒ Array<String> (readonly)
List of locations (name).
Returns something only on module instances like Aspisec::Modules::Sqlmap.
Will be empty for Aspisec::Module.
For a list of objects, rather use #locations.
| 25 26 27 | # File 'lib-ruby/aspisec/module.rb', line 25 def locations_list @locations_list end | 
#name ⇒ String (readonly)
The name of the tool.
| 18 19 20 | # File 'lib-ruby/aspisec/module.rb', line 18 def name @name end | 
Instance Method Details
#check_config ⇒ Object
Raise an issue if the module configuration is missing
| 55 56 57 58 59 60 61 62 | # File 'lib-ruby/aspisec/module.rb', line 55 def check_config return unless @conf.nil? message = "Configuration for module #{@name} is missing." \ 'You may use an old version of the configuration file.' @logger.error(message, app: @name) raise 'Missing configuration for the current module.' end | 
#enabled? ⇒ true|false
Is this module enabled?
| 66 67 68 | # File 'lib-ruby/aspisec/module.rb', line 66 def enabled? @enabled end | 
#locations ⇒ Array<Location>
Returns all locations available for the tool.
It returns a list Location objects unline #locations_list that returns
only strings (location names).
| 74 75 76 77 78 79 80 | # File 'lib-ruby/aspisec/module.rb', line 74 def locations # Re-compute what's already cumputed and stored in properties # @locations_list.map { |loc| Location.new(@conf, loc) } # Access properties rather than re-computing # Using send() is safe here because the input is a hadrcaoded whitelist @locations_list.map { |loc| send(loc) } end |