Skip to content
Snippets Groups Projects
Commit c88172be authored by Jan Hák's avatar Jan Hák
Browse files

samples: add client for python, perl, and bash

parent 5976d0dc
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env perl
use Net::DBus;
use Net::DBus::Reactor;
my $bus = Net::DBus->system;
# Get a handle to the 'knotd' service
my $knotd = $bus->get_service("cz.nic.knotd");
# Get the device manager
my $knotd_interface = $knotd->get_object("/cz/nic/knotd", "cz.nic.knotd.events");
$knotd_interface->connect_to_signal('zone_updated', sub
{
my ($zone, $serial) = @_;
print "Zone $zone updated, SOA serial $serial\n";
});
# Main loop
Net::DBus::Reactor->main->run();
exit 0
#!/usr/bin/env python3
import dbus
import dbus.mainloop.glib
import signal
from gi.repository import GLib
def sigint_handler(sig, frame):
if sig == signal.SIGINT:
loop.quit()
else:
raise ValueError("Undefined handler for '{}'".format(sig))
def on_xfr_done(*args, **kwargs):
(zone, serial) = args
print("Zone %s updated, SOA serial %d" % (zone, serial))
if __name__ == '__main__':
signal.signal(signal.SIGINT, sigint_handler)
loop = dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
bus = dbus.SystemBus()
knotd = bus.get_object('cz.nic.knotd', '/cz/nic/knotd')
events_iface = dbus.Interface(knotd, dbus_interface='cz.nic.knotd.events')
events_iface.connect_to_signal("zone_updated", on_xfr_done)
loop = GLib.MainLoop()
loop.run()
#!/usr/bin/env bash
cb() {
echo "$1 [${@:2}]"
}
gdbus monitor --system --dest cz.nic.knotd --object-path /cz/nic/knotd \
| awk '/^\/cz\/nic\/knotd/ {
gsub("cz.nic.knotd.events.", "", $2);
tmp="";
for(i=3;i<=NF;++i) {
if( $i ~ /[\),]$/ ) tmp=tmp$i;
}
gsub("(^\()|(\)$)", "", tmp);
split(tmp, args, ",");
printf "%s ", $2;
for (i in args) printf "%s ", args[i];
print "";
fflush(stdout); }' \
| while read line; do \
cb ${line[@]}; \
done
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment