Software / code / prosody-modules
Comparison
mod_nodeinfo2/mod_nodeinfo2.lua @ 3705:5d3d8b75dee9
mod_nodeinfo2: Expose service metadata per NodeInfo2
https://git.feneas.org/jaywink/nodeinfo2
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Tue, 25 Jun 2019 09:05:59 +0200 |
| child | 3706:36b645e94325 |
comparison
equal
deleted
inserted
replaced
| 3704:c6563625f60e | 3705:5d3d8b75dee9 |
|---|---|
| 1 local json = require "util.json"; | |
| 2 local array = require "util.array"; | |
| 3 | |
| 4 module:depends("http"); | |
| 5 | |
| 6 local total_users = 0; | |
| 7 for _ in require "core.usermanager".users(module.host) do | |
| 8 total_users = total_users + 1; | |
| 9 end | |
| 10 | |
| 11 module:provides("http", { | |
| 12 default_path = "/.well-known/x-nodeinfo2"; | |
| 13 route = { | |
| 14 GET = function (event) | |
| 15 event.response.headers.content_type = "application/json"; | |
| 16 return json.encode({ | |
| 17 version = "1.0"; | |
| 18 server = { | |
| 19 baseUrl = module:http_url("","/"); | |
| 20 name = module.host; | |
| 21 software = "Prosody"; | |
| 22 version = prosody.version; | |
| 23 }; | |
| 24 --[[ | |
| 25 organization = { | |
| 26 name = ""; | |
| 27 contact = ""; | |
| 28 account = ""; | |
| 29 }; | |
| 30 --]] | |
| 31 protocols = array { | |
| 32 "xmpp", | |
| 33 }; | |
| 34 --[[ | |
| 35 services = { | |
| 36 inbound = array { | |
| 37 "irc"; | |
| 38 }; | |
| 39 outbound = array { | |
| 40 }; | |
| 41 }; | |
| 42 --]] | |
| 43 openRegistrations = module:get_option_boolean("allow_registration", false); | |
| 44 usage = { | |
| 45 users = { | |
| 46 total = total_users; | |
| 47 -- activeHalfyear = 1; | |
| 48 -- activeMonth = 1; | |
| 49 -- activeWeek = 1; | |
| 50 }; | |
| 51 -- localPosts = 0; | |
| 52 -- localComments = 0; | |
| 53 }; | |
| 54 }); | |
| 55 end; | |
| 56 } | |
| 57 }); | |
| 58 |