# dnsmanager

> DNS Manager

Latest version **0.2.0** (published 2023-06-05) · UNLICENSED license · 0 weekly downloads

## Install

```sh
npm install dnsmanager
pnpm add dnsmanager
yarn add dnsmanager
bun add dnsmanager
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.0 |
| Published | 2023-06-05 |
| First published | 2023-06-05 |
| Weekly downloads | 0 |
| License | UNLICENSED |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 268.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Lars Boegild Thomsen |
| Maintainers | lbthomsen |
| Keywords | dns |

## Links

- npm: https://www.npmjs.com/package/dnsmanager
- Repository: https://github.com/lbthomsen/dnsmanager
- Homepage: https://github.com/lbthomsen/dnsmanager#readme
- Issues: https://github.com/lbthomsen/dnsmanager/issues
- npm.io page: https://npm.io/package/dnsmanager

## Recent versions

- 0.2.0 (latest) — 2023-06-05

## README

# dnsmanager
DNS Manager

## Tunnel

To run test locally a tunnel will have to be created to the LDAP server:

```
ssh -N staff@dev-db-eu-1.s.optdyn.com -L 1389:localhost:389
```

## Start server

```
npm run start
```

## Examples

### Retrieve all zones:

```
curl http://localhost:8282/api/dns/zones
["example.com","certplay.tk","letest.ml","foo.com"]
```

### Retrieve zone details

```
curl http://localhost:8282/api/dns/zone/certplay.tk
{"idnsSOAretry":"900","nSRecord":["devns0.subutai.io.","devns1.subutai.io."],"idnsSOArName":"hostmaster.subutai.io","objectClass":["idnsRecord","idnsZone","top"],"idnsZoneActive":"TRUE","idnsSOAminimum":"604800","idnsSOArefresh":"10800","idnsSOAexpire":"604800","idnsName":"certplay.tk","dNSTTL":"300","idnsSOAmName":"devns0.subutai.io","aRecord":"209.94.90.1","idnsSOAserial":"1593687877"}
```

### Create new zone

Considering a zone file:

```
{
    "idnsSOAretry": "900",
    "nSRecord": [
        "devns0.subutai.io.",
        "devns1.subutai.io."
    ],
    "idnsSOArName": "hostmaster.subutai.io",
    "objectClass": [
        "idnsRecord",
        "idnsZone",
        "top"
    ],
    "idnsZoneActive": "TRUE",
    "idnsSOAminimum": "604800",
    "idnsSOArefresh": "10800",
    "idnsSOAexpire": "604800",
    "idnsName": "foo.com",
    "dNSTTL": "300",
    "idnsSOAmName": "devns0.subutai.io",
    "aRecord": "209.94.90.1",
    "idnsSOAserial": "1"
}
```

The zone can be created as:

```
curl -X POST -H "Content-type: application/json" -d @zone.json http://localhost:8282/api/dns/zone
```

The zone creation can be tested immediately with dig:

```
dig @devns0 foo.com soa
```


### Delete Zone

```
curl -X DELETE http://localhost:8282/api/dns/zone/foo.com
```

### Modify Zone

In order to modify a zone, a json object describing the modification will have
to be created:

```
{
  "operation": "replace",
  "modification": {
    "idnsZoneActive": "TRUE"
  }
}
```

The operation will have to be one of replace, add or delete.

This json can now be posted to the server:

```
curl -X POST -H "Content-type: application/json" -d @mzone.json http://localhost:8282/api/dns/zone/foo.com
```

### List records

The records defined for a zone can either be created in the zone file itself 
(see ns records in above example) or as sub objects.  To get a list of the 
sub objects retrieve them by:

```
curl http://localhost:8282/api/dns/zone/certplay.tk/records
["_acme-challenge"]
```

### Get complete record

A complete record can be retrieved by:

```
curl http://localhost:8282/api/dns/zone/certplay.tk/record/_acme-challenge
{"idnsName":"_acme-challenge","objectClass":["idnsRecord","top"],"tXTRecord":"XeVa9qRuEPrxQvZhPpJoSejE0AmR71Iee1W-SDv2gCU","dNSTTL":"60"}
```

## Get LetsEncrypt certificate for zone

```
curl http://localhost:8282/api/le/foo.com
```

---
_Source: https://npm.io/package/dnsmanager · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
