Этап 2+4: internal/api/handler/iot_device_handler.go
- MQTTAuth: POST /internal/mqtt/auth (без JWT, для EMQX)
- CreateIoTDevice, ListIoTDevices, GetIoTDevice (c password), DeleteIoTDevice, UpdateIoTDevice
- crypto/subtle.ConstantTimeCompare против timing attacks
Этап 4: internal/api/router.go
- /v1/namespaces/{ns}/iot/devices CRUD
- /internal/mqtt/auth (без JWT middleware)
Этап 3: deployments/k8s/emqx.yaml
- EMQX 5.5.1, emqx.conf (HOCON) с HTTP auth backend
- Сервис exposure: 1883 (MQTT), 8083 (WS), 18083 (Dashboard)
Этап 3: iot/cmd/mqtt-bridge/main.go
- paho.mqtt.golang: подписка на +/telemetry/+
- amqp091-go: publish в iot.{namespace}.telemetry
- deployments/k8s/iot-mqtt-bridge.yaml
Этап 7: examples/IOT/ — E2E demo (main.tf, handler.py, README.md)
go.mod: добавлен github.com/eclipse/paho.mqtt.golang v1.5.1
go build ./... — ошибок нет
22 lines
279 B
Plaintext
22 lines
279 B
Plaintext
# Terraform provider plugins
|
|
.terraform/
|
|
.terraform.lock.hcl
|
|
|
|
# Terraform state
|
|
terraform.tfstate
|
|
terraform.tfstate.backup
|
|
*.tfstate
|
|
*.tfstate.backup
|
|
|
|
# Sensitive data
|
|
terraform.tfvars
|
|
!terraform.tfvars.example
|
|
|
|
# Backup files
|
|
*.bak
|
|
*.bak_db
|
|
*.bak_*
|
|
|
|
# Test artifacts
|
|
test_*.log
|