Compare commits
3 commits
c66e01c813
...
6b623eb3a3
Author | SHA1 | Date | |
---|---|---|---|
6b623eb3a3 | |||
bd06c2e4b3 | |||
a4442dcfbe |
16 changed files with 184 additions and 167 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -39,3 +39,5 @@ CLAUDE.md
|
||||||
extra
|
extra
|
||||||
.direnv
|
.direnv
|
||||||
.claude
|
.claude
|
||||||
|
e2e-test/*tfstate*
|
||||||
|
e2e-test/.terraformrc
|
||||||
|
|
13
GNUmakefile
13
GNUmakefile
|
@ -21,4 +21,15 @@ test:
|
||||||
testacc:
|
testacc:
|
||||||
TF_ACC=1 go test -v -cover -timeout 120m ./...
|
TF_ACC=1 go test -v -cover -timeout 120m ./...
|
||||||
|
|
||||||
.PHONY: fmt lint test testacc build install generate
|
e2e:
|
||||||
|
@echo "Running end-to-end test..."
|
||||||
|
cd e2e-test && \
|
||||||
|
rm -rf .terraform/ .terraform.lock.hcl terraform.tfstate* && \
|
||||||
|
./setup-dev.sh && \
|
||||||
|
TF_CLI_CONFIG_FILE=.terraformrc terraform plan && \
|
||||||
|
TF_CLI_CONFIG_FILE=.terraformrc terraform apply -auto-approve && \
|
||||||
|
echo "✓ E2E test passed! Cleaning up..." && \
|
||||||
|
TF_CLI_CONFIG_FILE=.terraformrc terraform destroy -auto-approve && \
|
||||||
|
echo "✓ E2E test completed successfully"
|
||||||
|
|
||||||
|
.PHONY: fmt lint test testacc build install generate e2e
|
||||||
|
|
|
@ -13,9 +13,6 @@ Generates a complete Tor bridge line using obfs4 state and network details
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```terraform
|
||||||
# Copyright (c) Abel Luck <abel@guardianproject.info>
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
terraform {
|
terraform {
|
||||||
required_providers {
|
required_providers {
|
||||||
tor = {
|
tor = {
|
||||||
|
|
|
@ -13,9 +13,6 @@ The Tor provider generates cryptographic identity materials for obfs4 Tor bridge
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```terraform
|
||||||
# Copyright (c) Abel Luck <abel@guardianproject.info>
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
terraform {
|
terraform {
|
||||||
required_providers {
|
required_providers {
|
||||||
tor = {
|
tor = {
|
||||||
|
|
|
@ -13,9 +13,6 @@ Generates obfs4 state and certificate for Tor bridges using external relay ident
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```terraform
|
||||||
# Copyright (c) Abel Luck <abel@guardianproject.info>
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
terraform {
|
terraform {
|
||||||
required_providers {
|
required_providers {
|
||||||
tor = {
|
tor = {
|
||||||
|
@ -27,9 +24,7 @@ terraform {
|
||||||
provider "tor" {}
|
provider "tor" {}
|
||||||
|
|
||||||
# Example: Generate obfs4 state using existing identity keys
|
# Example: Generate obfs4 state using existing identity keys
|
||||||
resource "tor_relay_identity_rsa" "bridge" {
|
resource "tor_relay_identity_rsa" "bridge" {}
|
||||||
key_size = 2048
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "tor_relay_identity_ed25519" "bridge" {}
|
resource "tor_relay_identity_ed25519" "bridge" {}
|
||||||
|
|
||||||
|
|
|
@ -13,9 +13,6 @@ Generates Ed25519 private key for Tor relay identity as required by the Tor spec
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```terraform
|
||||||
# Copyright (c) Abel Luck <abel@guardianproject.info>
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
terraform {
|
terraform {
|
||||||
required_providers {
|
required_providers {
|
||||||
tor = {
|
tor = {
|
||||||
|
@ -40,10 +37,6 @@ output "public_key_pem" {
|
||||||
value = tor_relay_identity_ed25519.example.public_key_pem
|
value = tor_relay_identity_ed25519.example.public_key_pem
|
||||||
}
|
}
|
||||||
|
|
||||||
output "public_key_fingerprint_sha1" {
|
|
||||||
description = "SHA1 fingerprint of the Ed25519 public key"
|
|
||||||
value = tor_relay_identity_ed25519.example.public_key_fingerprint_sha1
|
|
||||||
}
|
|
||||||
|
|
||||||
output "public_key_fingerprint_sha256" {
|
output "public_key_fingerprint_sha256" {
|
||||||
description = "SHA256 fingerprint of the Ed25519 public key"
|
description = "SHA256 fingerprint of the Ed25519 public key"
|
||||||
|
|
|
@ -27,9 +27,7 @@ terraform {
|
||||||
provider "tor" {}
|
provider "tor" {}
|
||||||
|
|
||||||
# Example: Generate RSA identity key for Tor relay
|
# Example: Generate RSA identity key for Tor relay
|
||||||
resource "tor_relay_identity_rsa" "example" {
|
resource "tor_relay_identity_rsa" "example" {}
|
||||||
key_size = 2048 # Default RSA key size for Tor relays
|
|
||||||
}
|
|
||||||
|
|
||||||
output "private_key_pem" {
|
output "private_key_pem" {
|
||||||
description = "RSA private key in PEM format"
|
description = "RSA private key in PEM format"
|
||||||
|
|
49
e2e-test/README.md
Normal file
49
e2e-test/README.md
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
# End-to-End Testing
|
||||||
|
|
||||||
|
This directory contains a complete end-to-end test setup for the terraform-provider-tor.
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
1. **Setup development environment:**
|
||||||
|
```bash
|
||||||
|
./setup-dev.sh
|
||||||
|
```
|
||||||
|
This script will:
|
||||||
|
- Create local `.terraformrc` with dev overrides (no global config changes)
|
||||||
|
- Build and install the provider locally
|
||||||
|
|
||||||
|
2. **Run the test:**
|
||||||
|
```bash
|
||||||
|
./tf plan
|
||||||
|
./tf apply
|
||||||
|
```
|
||||||
|
|
||||||
|
Or using the full command:
|
||||||
|
```bash
|
||||||
|
TF_CLI_CONFIG_FILE=.terraformrc terraform plan
|
||||||
|
TF_CLI_CONFIG_FILE=.terraformrc terraform apply
|
||||||
|
```
|
||||||
|
|
||||||
|
Note: Skip `terraform init` when using dev overrides - it's not needed and may cause errors.
|
||||||
|
|
||||||
|
3. **Clean up:**
|
||||||
|
```bash
|
||||||
|
./tf destroy
|
||||||
|
```
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
If you encounter issues:
|
||||||
|
|
||||||
|
1. **Provider not found**: Run `./setup-dev.sh` again
|
||||||
|
2. **Build errors**: Check that Go >= 1.23 is installed
|
||||||
|
3. **Permission errors**: Ensure the setup script is executable
|
||||||
|
|
||||||
|
## Resetting
|
||||||
|
|
||||||
|
To reset your Terraform configuration:
|
||||||
|
```bash
|
||||||
|
rm -rf .terraform/ .terraform.lock.hcl terraform.tfstate*
|
||||||
|
```
|
||||||
|
|
||||||
|
Then run the setup and init process again.
|
62
e2e-test/main.tf
Normal file
62
e2e-test/main.tf
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
terraform {
|
||||||
|
required_providers {
|
||||||
|
tor = {
|
||||||
|
source = "guardianproject/tor"
|
||||||
|
version = "99.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "tor" {}
|
||||||
|
|
||||||
|
# Generate RSA identity key for the bridge
|
||||||
|
resource "tor_relay_identity_rsa" "bridge" {}
|
||||||
|
|
||||||
|
# Generate Ed25519 identity key for the bridge
|
||||||
|
resource "tor_relay_identity_ed25519" "bridge" {}
|
||||||
|
|
||||||
|
# Generate obfs4 state using the identity keys
|
||||||
|
resource "tor_obfs4_state" "bridge" {
|
||||||
|
rsa_identity_private_key = tor_relay_identity_rsa.bridge.private_key_pem
|
||||||
|
ed25519_identity_private_key = tor_relay_identity_ed25519.bridge.private_key_pem
|
||||||
|
}
|
||||||
|
|
||||||
|
# Generate bridge line for client distribution
|
||||||
|
data "tor_obfs4_bridge_line" "bridge" {
|
||||||
|
ip_address = "203.0.113.1"
|
||||||
|
port = 9001
|
||||||
|
identity_fingerprint_sha1 = tor_relay_identity_rsa.bridge.public_key_fingerprint_sha1
|
||||||
|
obfs4_state_certificate = tor_obfs4_state.bridge.certificate
|
||||||
|
obfs4_state_iat_mode = tor_obfs4_state.bridge.iat_mode
|
||||||
|
}
|
||||||
|
|
||||||
|
# Outputs for verification
|
||||||
|
output "rsa_fingerprint_sha1" {
|
||||||
|
description = "RSA identity fingerprint (SHA1)"
|
||||||
|
value = tor_relay_identity_rsa.bridge.public_key_fingerprint_sha1
|
||||||
|
}
|
||||||
|
|
||||||
|
output "rsa_fingerprint_sha256" {
|
||||||
|
description = "RSA identity fingerprint (SHA256)"
|
||||||
|
value = tor_relay_identity_rsa.bridge.public_key_fingerprint_sha256
|
||||||
|
}
|
||||||
|
|
||||||
|
output "ed25519_fingerprint_sha256" {
|
||||||
|
description = "Ed25519 identity fingerprint (SHA256)"
|
||||||
|
value = tor_relay_identity_ed25519.bridge.public_key_fingerprint_sha256
|
||||||
|
}
|
||||||
|
|
||||||
|
output "obfs4_certificate" {
|
||||||
|
description = "obfs4 certificate for bridge line"
|
||||||
|
value = tor_obfs4_state.bridge.certificate
|
||||||
|
}
|
||||||
|
|
||||||
|
output "obfs4_iat_mode" {
|
||||||
|
description = "obfs4 IAT mode"
|
||||||
|
value = tor_obfs4_state.bridge.iat_mode
|
||||||
|
}
|
||||||
|
|
||||||
|
output "bridge_line" {
|
||||||
|
description = "Complete bridge line for clients"
|
||||||
|
value = data.tor_obfs4_bridge_line.bridge.bridge_line
|
||||||
|
}
|
48
e2e-test/setup-dev.sh
Executable file
48
e2e-test/setup-dev.sh
Executable file
|
@ -0,0 +1,48 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "Setting up development environment for terraform-provider-tor..."
|
||||||
|
|
||||||
|
# Get the Go bin path
|
||||||
|
GOBIN=$(go env GOPATH)/bin
|
||||||
|
if [ -z "$GOBIN" ]; then
|
||||||
|
GOBIN=$(go env GOROOT)/bin
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Go bin path: $GOBIN"
|
||||||
|
|
||||||
|
# Create local .terraformrc with dev overrides
|
||||||
|
TERRAFORMRC="$(pwd)/.terraformrc"
|
||||||
|
echo "Creating $TERRAFORMRC..."
|
||||||
|
|
||||||
|
# Create local .terraformrc with dev overrides
|
||||||
|
cat > "$TERRAFORMRC" << EOF
|
||||||
|
provider_installation {
|
||||||
|
dev_overrides {
|
||||||
|
"guardianproject/tor" = "$GOBIN"
|
||||||
|
}
|
||||||
|
direct {}
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "✓ Created local $TERRAFORMRC with dev overrides"
|
||||||
|
|
||||||
|
# Build and install the provider
|
||||||
|
echo "Building and installing provider..."
|
||||||
|
cd "$(dirname "$0")/.."
|
||||||
|
|
||||||
|
# Build with proper naming for dev overrides
|
||||||
|
go build -o "$GOBIN/terraform-provider-tor_v99.0.0"
|
||||||
|
|
||||||
|
echo "✓ Provider built and installed to $GOBIN/terraform-provider-tor_v99.0.0"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Setup complete! You can now run:"
|
||||||
|
echo " cd e2e-test"
|
||||||
|
echo " ./tf plan"
|
||||||
|
echo " ./tf apply"
|
||||||
|
echo ""
|
||||||
|
echo "Or use the full command:"
|
||||||
|
echo " TF_CLI_CONFIG_FILE=.terraformrc terraform plan"
|
||||||
|
echo ""
|
||||||
|
echo "Note: Using local .terraformrc to avoid modifying your global configuration."
|
5
e2e-test/tf
Executable file
5
e2e-test/tf
Executable file
|
@ -0,0 +1,5 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# Wrapper script to run terraform with local config
|
||||||
|
|
||||||
|
export TF_CLI_CONFIG_FILE=.terraformrc
|
||||||
|
exec tofu "$@"
|
|
@ -9,9 +9,7 @@ terraform {
|
||||||
provider "tor" {}
|
provider "tor" {}
|
||||||
|
|
||||||
# Example: Generate obfs4 state using existing identity keys
|
# Example: Generate obfs4 state using existing identity keys
|
||||||
resource "tor_relay_identity_rsa" "bridge" {
|
resource "tor_relay_identity_rsa" "bridge" {}
|
||||||
key_size = 2048
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "tor_relay_identity_ed25519" "bridge" {}
|
resource "tor_relay_identity_ed25519" "bridge" {}
|
||||||
|
|
||||||
|
|
|
@ -22,10 +22,6 @@ output "public_key_pem" {
|
||||||
value = tor_relay_identity_ed25519.example.public_key_pem
|
value = tor_relay_identity_ed25519.example.public_key_pem
|
||||||
}
|
}
|
||||||
|
|
||||||
output "public_key_fingerprint_sha1" {
|
|
||||||
description = "SHA1 fingerprint of the Ed25519 public key"
|
|
||||||
value = tor_relay_identity_ed25519.example.public_key_fingerprint_sha1
|
|
||||||
}
|
|
||||||
|
|
||||||
output "public_key_fingerprint_sha256" {
|
output "public_key_fingerprint_sha256" {
|
||||||
description = "SHA256 fingerprint of the Ed25519 public key"
|
description = "SHA256 fingerprint of the Ed25519 public key"
|
||||||
|
|
|
@ -12,9 +12,7 @@ terraform {
|
||||||
provider "tor" {}
|
provider "tor" {}
|
||||||
|
|
||||||
# Example: Generate RSA identity key for Tor relay
|
# Example: Generate RSA identity key for Tor relay
|
||||||
resource "tor_relay_identity_rsa" "example" {
|
resource "tor_relay_identity_rsa" "example" {}
|
||||||
key_size = 2048 # Default RSA key size for Tor relays
|
|
||||||
}
|
|
||||||
|
|
||||||
output "private_key_pem" {
|
output "private_key_pem" {
|
||||||
description = "RSA private key in PEM format"
|
description = "RSA private key in PEM format"
|
||||||
|
|
|
@ -47,6 +47,8 @@
|
||||||
pkgs.go
|
pkgs.go
|
||||||
pkgs.golangci-lint
|
pkgs.golangci-lint
|
||||||
pkgs.obfs4
|
pkgs.obfs4
|
||||||
|
pkgs.gnumake
|
||||||
|
pkgs.opentofu
|
||||||
];
|
];
|
||||||
buildInputs = libraries;
|
buildInputs = libraries;
|
||||||
inputsFrom = libraries;
|
inputsFrom = libraries;
|
||||||
|
|
134
go.sum.broken
134
go.sum.broken
|
@ -1,134 +0,0 @@
|
||||||
github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
|
|
||||||
github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
|
|
||||||
github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0=
|
|
||||||
github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ=
|
|
||||||
github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA=
|
|
||||||
github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM=
|
|
||||||
github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78=
|
|
||||||
github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
|
|
||||||
github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo=
|
|
||||||
github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
|
|
||||||
github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY=
|
|
||||||
github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4=
|
|
||||||
github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU=
|
|
||||||
github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA=
|
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
|
||||||
github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
|
|
||||||
github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
|
|
||||||
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
|
|
||||||
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRjRuY4O1FJmsbNOvSFE=
|
|
||||||
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
|
||||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
|
||||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
|
||||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
|
||||||
github.com/hashicorp/cli v1.1.6 h1:KMHVPR7kZruGy7vbOn5W2M7PcOWJwkXaHLe8rjUV4dY=
|
|
||||||
github.com/hashicorp/cli v1.1.6/go.mod h1:6p7uk6XBr7g+W4hy7N7NYqYSBXPa5Z1C/VvQpPCMH9Y=
|
|
||||||
github.com/hashicorp/go-checkpoint v0.5.0 h1:MFYpPZCnQqQTE18jFwSII6eUQrD/oxMFp3mlgcqk5mU=
|
|
||||||
github.com/hashicorp/go-checkpoint v0.5.0/go.mod h1:7nfLNL10NsxqO4iWuW6tWW0HjZuDrwkBuEQsVcpCOgg=
|
|
||||||
github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
|
|
||||||
github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
|
|
||||||
github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 h1:1/D3zfFHttUKaCaGKZ/dR2roBXv0vKbSCnssIldfQdI=
|
|
||||||
github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320/go.mod h1:EiZBMaudVLy8fmjf9Npq1dq9RalhveqZG5w/yz3mHWs=
|
|
||||||
github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k=
|
|
||||||
github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
|
|
||||||
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
|
|
||||||
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
|
|
||||||
github.com/hashicorp/go-plugin v1.6.1 h1:P7MR2UP6gNKGPp+y7EZw2kOiq4IR9WiqLvp0XOsVdwI=
|
|
||||||
github.com/hashicorp/go-plugin v1.6.1/go.mod h1:XPHFku2tFo3o3QKFgSYo+cghcUhw1NA1hZyMK0PWAw0=
|
|
||||||
github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKdqZHlqU+s3zB+A/8bV3psmIos=
|
|
||||||
github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
|
|
||||||
github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY=
|
|
||||||
github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
|
||||||
github.com/hashicorp/hc-install v0.8.0 h1:W5l9fjCIhG/QAImWR0LE4AOKiDUxGR3+V8SCMvQnb2Y=
|
|
||||||
github.com/hashicorp/hc-install v0.8.0/go.mod h1:vRJU/PIsZbJBT0DgpXzRH7ZQJgE8YlGV2/ZnbTsJgJ8=
|
|
||||||
github.com/hashicorp/hcl/v2 v2.21.0 h1:lve4q/o/2rqwYOgUg3y3V2YPyD2RtlUIQ/2UyfrxYtI=
|
|
||||||
github.com/hashicorp/hcl/v2 v2.21.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA=
|
|
||||||
github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y=
|
|
||||||
github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
|
|
||||||
github.com/hashicorp/terraform-exec v0.21.0 h1:uNkLAe95ey5Uux6KJdua6+cv8asgILFVWkd/RG0D2XQ=
|
|
||||||
github.com/hashicorp/terraform-exec v0.21.0/go.mod h1:1PPeMYou+KDUSSeRE9szMZ/oHf4fYUmB923Wzbq1ICg=
|
|
||||||
github.com/hashicorp/terraform-json v0.22.1 h1:xft84GZR0QzjPVWs4lRUwvTcPnegqlyS7orfb5Ltvec=
|
|
||||||
github.com/hashicorp/terraform-json v0.22.1/go.mod h1:JbWSQCLFSXFFhg42T7l9iJwdGXBYV8fmmD6o/ML4p3A=
|
|
||||||
github.com/hashicorp/terraform-plugin-docs v0.19.4 h1:CfI1r+Fb8jDjdADp5GTDPYB/LEU0CTJ0NkF/1RSSB8A=
|
|
||||||
github.com/hashicorp/terraform-plugin-docs v0.19.4/go.mod h1:DCF27O5RpcNm/p4v7WMTRmP1DQSA9ZMNj3ux6Nzx7MY=
|
|
||||||
github.com/hashicorp/terraform-plugin-framework v1.12.0 h1:CZBXAzKXNUCJXAz7my/4LgWDBbKIz+8IW7E6wlJFbOo=
|
|
||||||
github.com/hashicorp/terraform-plugin-framework v1.12.0/go.mod h1:k0btlrW8IMR7Gq+k2zJzqUK8MhLeR2RSrOGNw8qODmU=
|
|
||||||
github.com/hashicorp/terraform-plugin-go v0.23.0 h1:AALVuU1gD1kPb48aPQUjug9Ir/125t+AAurhqphJ2Co=
|
|
||||||
github.com/hashicorp/terraform-plugin-go v0.23.0/go.mod h1:1E3Cr9h2vMlahWMbsSEcNrOCxovCZhOOIXjFHbjc/lQ=
|
|
||||||
github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0=
|
|
||||||
github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow=
|
|
||||||
github.com/hashicorp/terraform-plugin-sdk/v2 v2.34.0 h1:kJoLKl3xJB54AtNsLvGZVDmzf+qzUlqOTe4jqp7L+ZU=
|
|
||||||
github.com/hashicorp/terraform-plugin-sdk/v2 v2.34.0/go.mod h1:sl/UbXl1zzUQupPCavdMdAQHGGODhSgVjrOF3Nd1UrA=
|
|
||||||
github.com/hashicorp/terraform-plugin-testing v1.10.0 h1:j/2S0ZM9m7QVm8b3t2B4PqT4PmQbxkM/CgJnr0YFGyk=
|
|
||||||
github.com/hashicorp/terraform-plugin-testing v1.10.0/go.mod h1:t7O9LSoYLyT88fT9jEX7sFcMSvKM7pU4pDsb6PrSdq8=
|
|
||||||
github.com/hashicorp/terraform-registry-address v0.2.3 h1:2TAiKJ1A3MAkZlH1YI/aTVcLZRu7JseiXNRHbOAyoTI=
|
|
||||||
github.com/hashicorp/terraform-registry-address v0.2.3/go.mod h1:lFHA76T8jfQteVfT7caREqguFrW3c4MFSPhZB7HHgUM=
|
|
||||||
github.com/hashicorp/terraform-svchost v0.1.1 h1:EZZimZ1GxdqFRinZ1tpJwVxxt49xc/S52uzrw4x0jKQ=
|
|
||||||
github.com/hashicorp/terraform-svchost v0.1.1/go.mod h1:mNsjQfZyf/Jhz35v6/0LWcv26+X7JPS+buii2c9/ctc=
|
|
||||||
github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE=
|
|
||||||
github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ=
|
|
||||||
github.com/huandu/xstrings v1.4.0 h1:D17IlohoQq4UcpqD7fDk80P7l+lwAmlFaBHgOipl2FU=
|
|
||||||
github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
|
|
||||||
github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk=
|
|
||||||
github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg=
|
|
||||||
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
|
||||||
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
|
|
||||||
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
|
||||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
|
||||||
github.com/mitchellh/cli v1.1.5 h1:OxRIeJXpAMztws/XHlN2vu6imG5Dpq+j61AzAX5fLng=
|
|
||||||
github.com/mitchellh/cli v1.1.5/go.mod h1:v8+iFts2sPIKUV1ltktPXMCC8fumSKFItNcD2cLtRR4=
|
|
||||||
github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
|
|
||||||
github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
|
|
||||||
github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU=
|
|
||||||
github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8=
|
|
||||||
github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0=
|
|
||||||
github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
|
|
||||||
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
|
|
||||||
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
|
|
||||||
github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxBiscop=
|
|
||||||
github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
|
|
||||||
github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA=
|
|
||||||
github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU=
|
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
|
||||||
github.com/posener/complete v1.2.3 h1:NP0eAhjcjImqslEwo/1hq7gpajME0fTLTezBKDqfXqo=
|
|
||||||
github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s=
|
|
||||||
github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3VRLtww=
|
|
||||||
github.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY=
|
|
||||||
github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8=
|
|
||||||
github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWFro0E=
|
|
||||||
github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w=
|
|
||||||
github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU=
|
|
||||||
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGPiK/92rKx=
|
|
||||||
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
|
||||||
github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI=
|
|
||||||
github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
|
|
||||||
github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8=
|
|
||||||
github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok=
|
|
||||||
github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g=
|
|
||||||
github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
|
|
||||||
github.com/zclconf/go-cty v1.15.0 h1:tTCRWxsexYUmtt/wVxgDClUe+uQusuI443uL6e+5sXQ=
|
|
||||||
github.com/zclconf/go-cty v1.15.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE=
|
|
||||||
gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/lyrebird v0.4.0 h1:NHnO+9dGWkXpSWwC8Y3xHu9PTLwDfKWYKQeNS1tPBR0=
|
|
||||||
gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/lyrebird v0.4.0/go.mod h1:Kxv+0sWNVD5VrFdIGQwE8VWLRtOg4g4lxr5IiMH74o=
|
|
||||||
golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=
|
|
||||||
golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
|
|
||||||
golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
|
|
||||||
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
|
||||||
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
|
|
||||||
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
|
|
||||||
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
|
|
||||||
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
|
||||||
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
|
||||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
|
||||||
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
|
|
||||||
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
|
|
||||||
google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=
|
|
||||||
google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds=
|
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 h1:1GBuWVLM/KMVUv1t1En5Gs+gFZCNd360GGb4sSxtrhU=
|
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0=
|
|
||||||
google.golang.org/grpc v1.66.0 h1:DibZuoBznOxbDQxRINckZcUvnCEvrW9pcWIE2yF9r1c=
|
|
||||||
google.golang.org/grpc v1.66.0/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y=
|
|
||||||
google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
|
|
||||||
google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
|
Loading…
Add table
Add a link
Reference in a new issue