Thank you for your interest in contributing! This document provides guidelines for contributing to the project.
This project adheres to a Code of Conduct that all contributors are expected to follow. Please read CODE_OF_CONDUCT.md before contributing.
- Check existing issues to avoid duplicates
- Use the bug report template when creating new issues
- Provide detailed information:
- Steps to reproduce
- Expected behavior
- Actual behavior
- Go version, OS, architecture
- Relevant logs and error messages
- Check existing feature requests to avoid duplicates
- Use the feature request template
- Explain the use case and why it's valuable
- Provide examples of how it would work
- Go 1.21 or higher
- Git
- Make (optional, but recommended)
# Fork the repository on GitHub
# Clone your fork
git clone https://github.com/YOUR_USERNAME/simple-exploit.git
cd simple-exploit
# Add upstream remote
git remote add upstream https://github.com/htunn/simple-exploit.git
# Install dependencies
go mod download
# Run tests
make test-
Create a branch:
git checkout -b feature/your-feature-name
-
Make your changes:
- Write clean, readable code
- Follow Go conventions
- Add tests for new functionality
- Update documentation
-
Test your changes:
# Run tests make test # Run linter make lint # Build make build
-
Commit your changes:
git add . git commit -m "Add feature: description of your changes"
Follow Conventional Commits:
feat:New featuresfix:Bug fixesdocs:Documentation changestest:Test changesrefactor:Code refactoringchore:Maintenance tasks
-
Push to your fork:
git push origin feature/your-feature-name
-
Open a Pull Request:
- Go to the repository on GitHub
- Click "New Pull Request"
- Select your branch
- Fill out the PR template
- Link related issues
- Follow Effective Go
- Use
gofmtfor formatting - Run
golangci-lintbefore submitting - Maximum line length: 120 characters
- Comment all exported functions, types, and constants
- Write meaningful commit messages
- Write unit tests for all new code
- Maintain or improve code coverage
- Use table-driven tests where appropriate
- Mock external dependencies
Example:
func TestExploit_Execute(t *testing.T) {
tests := []struct {
name string
target Target
want Result
wantErr bool
}{
// Test cases
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
// Test implementation
})
}
}- Update README.md if adding new features
- Add package documentation for new packages
- Include code examples in documentation
- Update CHANGELOG.md
See Plugin Development Guide for details on creating exploit plugins.
Documentation improvements are always welcome! This includes:
- Fixing typos and grammatical errors
- Clarifying existing documentation
- Adding examples
- Creating tutorials
- Translating documentation
- Ensure tests pass: All tests must pass before merging
- Update documentation: Include relevant documentation updates
- Follow code style: Code must pass linting
- Get reviews: PRs require at least one approval
- Keep PRs focused: One feature/fix per PR
- Rebase if needed: Keep your branch up to date with main
- Maintainers will review PRs as soon as possible
- Address feedback and make requested changes
- Once approved, a maintainer will merge your PR
feature/- New featuresfix/- Bug fixesdocs/- Documentation updatesrefactor/- Code refactoringtest/- Test improvements
Good commit message:
feat: add WAF bypass strategy for CloudFlare
- Implement header manipulation strategy
- Add TLS fingerprint randomization
- Include tests and documentation
Bad commit message:
fixed stuff
DO NOT open public issues for security vulnerabilities.
Instead, email security concerns to: [SECURITY_EMAIL]
Include:
- Description of the vulnerability
- Steps to reproduce
- Potential impact
- Suggested fix (if any)
- Open a GitHub Discussion
- Join our community chat (link TBD)
- Check the FAQ
Contributors will be:
- Listed in CONTRIBUTORS.md
- Mentioned in release notes
- Credited in documentation
Thank you for contributing to Simple-Exploit! 🚀