diff options
author | Daniil Baturin <daniil@baturin.org> | 2018-05-14 06:10:04 +0200 |
---|---|---|
committer | Daniil Baturin <daniil@baturin.org> | 2018-05-14 06:10:04 +0200 |
commit | 860b229fe00998d2dd2d020d7dc847f99e709c26 (patch) | |
tree | 7e0b63c4b12ef82dbd7922dc963327ff8adf5a65 | |
parent | 1e79af9f4684425a02427dd9146b1e4d38a93cb4 (diff) | |
download | vyos-1x-860b229fe00998d2dd2d020d7dc847f99e709c26.tar.gz vyos-1x-860b229fe00998d2dd2d020d7dc847f99e709c26.zip |
T564: initial implementation of the DNS forwarding op mode commands.
-rw-r--r-- | Makefile | 1 | ||||
-rw-r--r-- | op-mode-definitions/dns-forwarding.xml | 39 | ||||
-rwxr-xr-x | src/op-mode/vyos-dns-forwarding-statistics.py | 24 | ||||
-rwxr-xr-x | src/op-mode/vyos-restart-dns-forwarding.sh | 8 |
4 files changed, 72 insertions, 0 deletions
@@ -23,6 +23,7 @@ op_mode_definitions: # XXX: delete top level op mode node.def's that now live in other packages rm -f $(OP_TMPL_DIR)/show/node.def + rm -f $(OP_TMPL_DIR)/show/dns/node.def rm -f $(OP_TMPL_DIR)/reset/node.def rm -f $(OP_TMPL_DIR)/restart/node.def diff --git a/op-mode-definitions/dns-forwarding.xml b/op-mode-definitions/dns-forwarding.xml new file mode 100644 index 000000000..96fa1a6f4 --- /dev/null +++ b/op-mode-definitions/dns-forwarding.xml @@ -0,0 +1,39 @@ +<?xml version="1.0"?> + +<interfaceDefinition> + <node name="show"> + <children> + <node name="dns"> + <children> + <node name="forwarding"> + <properties> + <help>Show DNS forwarding information</help> + </properties> + <children> + <leafNode name="statistics"> + <properties> + <help>Show DNS forwarding statistics</help> + </properties> + <command>${vyos_bindir}/vyos-dns-forwarding-statistics.py</command> + </leafNode> + </children> + </node> + </children> + </node> + </children> + </node> + <node name="restart"> + <children> + <node name="dns"> + <children> + <leafNode name="forwarding"> + <properties> + <help>Restart DNS forwarding service</help> + </properties> + <command>${vyos_bindir}/vyos-restart-dns-forwarding.sh</command> + </leafNode> + </children> + </node> + </children> + </node> +</interfaceDefinition> diff --git a/src/op-mode/vyos-dns-forwarding-statistics.py b/src/op-mode/vyos-dns-forwarding-statistics.py new file mode 100755 index 000000000..3d1e30aee --- /dev/null +++ b/src/op-mode/vyos-dns-forwarding-statistics.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python3 + +import subprocess +import jinja2 + +PDNS_CMD='/usr/bin/rec_control' + +OUT_TMPL_SRC = """ +DNS forwarding statistics: + +Cache entries: {{ cache_entries -}} +Cache size: {{ cache_size }} kbytes + +""" + + +if __name__ == '__main__': + data = {} + + data['cache_entries'] = subprocess.check_output([PDNS_CMD, 'get cache-entries']).decode() + data['cache_size'] = "{0:.2f}".format( int(subprocess.check_output([PDNS_CMD, 'get cache-bytes']).decode()) / 1024 ) + + tmpl = jinja2.Template(OUT_TMPL_SRC) + print(tmpl.render(data)) diff --git a/src/op-mode/vyos-restart-dns-forwarding.sh b/src/op-mode/vyos-restart-dns-forwarding.sh new file mode 100755 index 000000000..12106fcc1 --- /dev/null +++ b/src/op-mode/vyos-restart-dns-forwarding.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +if cli-shell-api exists service dns forwarding; then + echo "Restarting the DNS forwarding service" + systemctl restart pdns-recursor +else + echo "DNS forwarding is not configured" +fi |