# records

> Órdenes openwaf-cloud ctl records para listar, añadir, cambiar, borrar e importar registros DNS desde un fichero de zona BIND.

`<zona>` es el dominio o el id de la zona. `<registro>` es el id del registro o su nombre (`www`, `www.example.com` o `@`), con `/TIPO` cuando el nombre tiene varios registros (`www/AAAA`). Cada cambio es una versión nueva de la zona y admite `--reason`, `--dry-run`, `--yes` y `--wait`.

## records list

```text
records list <zona> [--json]
```

Los registros DNS de la zona con su id, tipo, nombre, contenido, TTL, prioridad, proxy, etiquetas y comentario.

## records add

```text
records add <zona> type=… name=… content=… [ttl=…] [proxied=…] [priority=…] [comment=…] [tags:='[…]'] --reason "…"
```

| Clave | Significado |
|---|---|
| `type` | `A`, `AAAA`, `CNAME`, `MX`, `TXT`, `NS`, `SRV` o `CAA`. |
| `name` | `@`, un nombre relativo (`www`) o completo; `*` para un comodín. |
| `content` | A/AAAA: la dirección. CNAME, NS, MX: un nombre de host. TXT: el texto sin comillas. SRV: `peso puerto destino`. CAA: `flags etiqueta "valor"`. |
| `ttl` | Segundos. |
| `priority` | Obligatoria en MX y SRV; no se admite en los demás. |
| `proxied` | `true` para servir el nombre a través del borde de OpenWAF (solo A, AAAA y CNAME). El nombre responde entonces con las direcciones del borde y el contenido pasa a ser el origen. Todos los A/AAAA/CNAME de un nombre comparten el valor. |
| `comment` | Una nota sobre el registro. No se publica en el DNS; forma parte de las versiones de la zona. |
| `tags` | Una lista JSON de etiquetas, que se guardan en minúsculas: `tags:='["web","prod"]'`. |

En una zona externa solo se admiten registros A, AAAA y CNAME con proxy: son los sitios que apuntas al borde desde tu propio DNS.

```sh
openwaf-cloud ctl records add example.com type=A name=www content=203.0.113.10 proxied=true \
  --reason "Poner www detrás del WAF" --wait
openwaf-cloud ctl records add example.com type=MX name=@ content=mail.example.com priority=10 \
  --reason "Correo"
```

## records set

```text
records set <zona> <registro> clave=valor … --reason "…"
```

Cambia solo los campos que indicas, con las mismas claves que `records add`, incluidos `comment=` y `tags:=<json>`.

```sh
openwaf-cloud ctl records set example.com www/A content=203.0.113.20 --reason "Origen nuevo"
```

## records rm

```text
records rm <zona> <registro> --reason "…"
```

Borra un registro. Borrar el último registro con proxy de un nombre deja de servir ese sitio.

## records import

```text
records import <zona> <fichero|-> [--proxied] --reason "…"
```

Importa un fichero de zona BIND (`-` lo lee de la entrada estándar) como **un solo** cambio. La CLI enseña primero los registros que crearía y cada entrada que deja fuera, con su línea y el motivo (`fuera, línea N: …`); después simula, pide confirmación y los aplica en una única versión.

| Opción | Significado |
|---|---|
| `--proxied` | Importar con proxy los registros A, AAAA y CNAME cuyo nombre puede ser un sitio. |

Límites: se leen las primeras 5000 entradas del fichero y una importación crea como mucho 500 registros; divide los ficheros más grandes.

```sh
openwaf-cloud ctl records import example.com example.com.zone --proxied --reason "Pasar el DNS a OpenWAF"
```
