gluon-mesh-vpn-fastd: announce peer status using statistics.d

This adds basic peer statistics to statistics.d:

    "mesh_vpn": {
      "muehlentor": {
        "established": 23.8 // seconds
      },
      "huextertor": null,
      "holstentor": null
    }
This commit is contained in:
Nils Schneider 2015-02-02 01:42:54 +01:00
parent 1df94acf98
commit 1c694d1a53
1 changed files with 32 additions and 0 deletions

View File

@ -0,0 +1,32 @@
local nixio = require('nixio')
local ltn12 = require('luci.ltn12')
local json = require('luci.json')
local uci = require('luci.model.uci').cursor()
local socket_path = uci:get('fastd', 'mesh_vpn', 'status_socket')
local fastd_sock = nixio.socket('unix', 'stream')
if not fastd_sock:connect(socket_path) then
return nil
end
decoder = json.Decoder()
ltn12.pump.all(ltn12.source.file(fastd_sock), decoder:sink())
local status = decoder:get()
local output = {}
for key, peer in pairs(status.peers) do
local name, valid = peer.name:gsub('^mesh_vpn_backbone_peer_', '')
if valid == 1 then
if peer.connection then
output[name] = {}
output[name].established = peer.connection.established/1000
else
output[name] = json.null
end
end
end
return output