2025-06-03 13:35:22 +02:00
|
|
|
# Contributing to terraform-provider-tor
|
|
|
|
|
|
|
|
Thank you for your interest in contributing to the terraform-provider-tor
|
|
|
|
project! This document provides guidelines for contributing to this
|
|
|
|
Terraform/OpenTofu provider that manages Tor bridge infrastructure.
|
|
|
|
|
|
|
|
## Development Setup
|
|
|
|
|
|
|
|
### Prerequisites
|
|
|
|
|
|
|
|
- Go >= 1.23
|
|
|
|
- Terraform >= 1.0 or OpenTofu
|
|
|
|
- Git
|
|
|
|
|
|
|
|
### Building the Provider
|
|
|
|
|
|
|
|
```bash
|
|
|
|
git clone https://github.com/guardianproject/terraform-provider-tor
|
|
|
|
cd terraform-provider-tor
|
|
|
|
make build
|
|
|
|
```
|
|
|
|
|
|
|
|
### Development Commands
|
|
|
|
|
|
|
|
```bash
|
|
|
|
# Build and install
|
|
|
|
go install
|
|
|
|
|
|
|
|
# Add dependencies
|
|
|
|
go get <package>
|
|
|
|
go mod tidy
|
|
|
|
|
|
|
|
# Generate documentation
|
|
|
|
make generate
|
|
|
|
|
|
|
|
# Run linter
|
|
|
|
make lint
|
|
|
|
|
|
|
|
# Run acceptance tests (creates real resources)
|
|
|
|
make testacc
|
2025-06-06 10:51:40 +02:00
|
|
|
|
|
|
|
# Run e2e tests
|
|
|
|
make clean build e2e/tor-family # Run the tor-family test with latest binary
|
|
|
|
make clean build e2e/obfs4 # Run the obfs4 e2e test with latest binary
|
|
|
|
make e2e # Run all e2e tests
|
|
|
|
|
|
|
|
# Important: Always use 'make clean build' before e2e tests to ensure
|
|
|
|
# the test uses the latest provider binary
|
2025-06-03 13:35:22 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
## Project Structure
|
|
|
|
|
|
|
|
```
|
|
|
|
├── internal/provider/ # Resources and data sources
|
|
|
|
├── examples/ # Usage examples
|
|
|
|
│ ├── data-sources/ # Data source examples
|
|
|
|
│ ├── provider/ # Provider configuration examples
|
|
|
|
│ └── resources/ # Resource examples
|
|
|
|
├── docs/ # Generated documentation
|
2025-06-06 10:51:40 +02:00
|
|
|
├── e2e-tests/ # End-to-end tests
|
2025-06-03 13:35:22 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
## Security Considerations
|
|
|
|
|
|
|
|
This provider handles cryptographic keys and sensitive data:
|
|
|
|
|
|
|
|
- Never log or expose private keys in plaintext
|
|
|
|
- Follow security best practices for key generation
|
|
|
|
- Be mindful of state file security in examples and documentation
|
|
|
|
- Report security issues responsibly
|
|
|
|
|
|
|
|
## Resources
|
|
|
|
|
|
|
|
- [Terraform Plugin Development](https://developer.hashicorp.com/terraform/plugin)
|
|
|
|
- [Lyrebird](https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/lyrebird)
|
|
|
|
- [obfs4proxy Documentation](https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/obfs4)
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
This project is licensed under GPL-3.0-or-later. By contributing, you agree to license your contributions under the same license.
|
|
|
|
|
|
|
|
## Getting Help
|
|
|
|
|
|
|
|
- Open an issue for bugs or feature requests
|
|
|
|
- Check existing issues and documentation first
|
|
|
|
- Be respectful and constructive in all interactions
|