Writing-External-GoLang-Modules.md 2.5 KB

Contributing modules in GO can be achieved in a few simple steps as outlined below. As for supported GO version, we have tested with 1.11.2, no promised for version 2.

1. Location

  • Select the appropriate module path based on the type of module you are trying to contribute
  • Be sure to include appropriate module documentation under here
  • Test your documentation is correct by executing info -d

2. Execution

  • Include this line at the top of your module: //usr/bin/env go run "$0" "$@"; exit "$?"
  • Ensure your file is an executable file

3. Setup

  • Initialize your module with the module metadata: ```go import "metasploit/module" func main() { metadata := &module.Metadata{ Name: "", Authors: []string{"", ""}, Date: "", Privileged: , References: []module.Reference{}, Options: map[string]module.Option{ "", Description: "", Required: , Default: ""}, "", Description: "", Required: , Default: ""}, }}

    module.Init(metadata, ) } ```

    FULL EXAMPLE

    Note: Above does not outline the full potential list of metadata options

    Currently supported module types:

    • remote_exploit
    • remote_exploit_cmd_stager
    • capture_server
    • dos
    • single_scanner
    • single_host_login_scanner
    • multi_scanner

    4. Shared Code

    • For code that is shared specific to your module create a directory in your module directory: shared/src/ metasploit will automatically add these to the GOPATH
    • For code that you think could be used across modules, add code here
    • 3rd party libs aren't currently supported but we welcome patches

    5. Finalize

    • Test your Pull Request
    • Create a Pull Request
    • No coding standard here, be sure to gofmt