| layout | title |
|---|---|
default |
Contributing |
We welcome contributions! Please read this guide to understand how you can contribute.
See the Code of Conduct.
- Go 1.22 or later
- Git
- Make (optional but recommended)
- Docker (optional, for containerized development)
- Fork the repository on GitHub
- Clone your fork:
git clone https://github.com/YOUR-USERNAME/subenum.git cd subenum - Set up the upstream remote:
git remote add upstream https://github.com/TMHSDigital/subenum.git
The project includes a Makefile to simplify development tasks:
# Build the binary
make build
# Run tests
make test
# Run linter
make lint
# Clean up build artifacts
make clean
# Run the tool with default parameters
make runYou can use Docker for development to ensure a consistent environment:
# Build the Docker image
make docker-build
# Run the tool in a Docker container
make docker-run-
Create a branch for your feature:
git checkout -b feature/your-feature-name
-
Make your changes and ensure they follow the project's coding standards
-
Test your changes:
make test make lint -
Commit your changes with a clear message describing the change
-
Push to your fork:
git push origin feature/your-feature-name
-
Create a pull request to the main repository
-
Address any feedback from the code review
Please ensure that any contributions adhere to the ethical usage principles of this project:
- Features should be designed for educational or legitimate security testing purposes
- Consider potential misuse and implement appropriate safeguards
- Document proper usage scenarios and any necessary warnings
- Search existing issues first to avoid duplicates.
- Open a new issue using the Bug Report template.
- Include:
- The exact command you ran
- Your OS, Go version, and
subenumversion (./subenum -version) - Full terminal output (redact any sensitive domain names)
- Expected vs. actual behaviour
Do NOT include sensitive information, unauthorized scan results, or private domain details.
- Search existing issues to avoid duplicates.
- Open a new issue using the Feature Request template.
- Describe:
- The problem the feature solves
- Your proposed solution
- Legitimate security testing use cases it enables
Features that could primarily enable malicious use will be declined.
Use -simulate to develop and test without making real DNS queries:
./subenum -simulate -hit-rate 30 -w examples/sample_wordlist.txt example.comThis lets you iterate on output formatting, flag handling, and new features safely.
All pull requests must pass the full test suite, including the race detector:
go test -v -race ./...New features should include tests. New flags must be covered by at least one test case.
Add network-dependent tests under if testing.Short() { t.Skip(...) } so they can be skipped in offline environments.