summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@baturin.org>2018-05-14 06:10:04 +0200
committerDaniil Baturin <daniil@baturin.org>2018-05-14 06:10:04 +0200
commit860b229fe00998d2dd2d020d7dc847f99e709c26 (patch)
tree7e0b63c4b12ef82dbd7922dc963327ff8adf5a65
parent1e79af9f4684425a02427dd9146b1e4d38a93cb4 (diff)
downloadvyos-1x-860b229fe00998d2dd2d020d7dc847f99e709c26.tar.gz
vyos-1x-860b229fe00998d2dd2d020d7dc847f99e709c26.zip
T564: initial implementation of the DNS forwarding op mode commands.
-rw-r--r--Makefile1
-rw-r--r--op-mode-definitions/dns-forwarding.xml39
-rwxr-xr-xsrc/op-mode/vyos-dns-forwarding-statistics.py24
-rwxr-xr-xsrc/op-mode/vyos-restart-dns-forwarding.sh8
4 files changed, 72 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index ad7107d3d..c328d6a8d 100644
--- a/Makefile
+++ b/Makefile
@@ -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