Module: kamailio
Branch: master
Commit: 9b9a4b283539f4575240737f2557ad84a4df9615
URL:
https://github.com/kamailio/kamailio/commit/9b9a4b283539f4575240737f2557ad8…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com>
Committer: Daniel-Constantin Mierla <miconda(a)gmail.com>
Date: 2022-01-24T09:49:02+01:00
core: added rpc command core.runinfo
- return runtime info: running version, uptime, ...
---
Modified: src/core/core_cmd.c
---
Diff:
https://github.com/kamailio/kamailio/commit/9b9a4b283539f4575240737f2557ad8…
Patch:
https://github.com/kamailio/kamailio/commit/9b9a4b283539f4575240737f2557ad8…
---
diff --git a/src/core/core_cmd.c b/src/core/core_cmd.c
index 8231e3b1b9..e4695bb251 100644
--- a/src/core/core_cmd.c
+++ b/src/core/core_cmd.c
@@ -370,6 +370,45 @@ static void core_info(rpc_t* rpc, void* c)
+static const char* core_runinfo_doc[] = {
+ "Runtime info - binary name, version, uptime, ...", /* Documentation string
*/
+ 0 /* Method signature(s) */
+};
+
+static void core_runinfo(rpc_t* rpc, void* c)
+{
+ void* s;
+ time_t now;
+ char buf[MAX_CTIME_LEN];
+ str snow;
+ snow.s = buf;
+ int uptime;
+
+ time(&now);
+
+ if (rpc->add(c, "{", &s) < 0) {
+ rpc->fault(c, 500, "Server failure");
+ return;
+ }
+ rpc->struct_add(s, "s", "name", ver_name);
+ rpc->struct_add(s, "s", "version", ver_version);
+ rpc->struct_add(s, "s", "sourceid", ver_id);
+ rpc->struct_add(s, "s", "compiler", ver_compiler);
+ rpc->struct_add(s, "s", "compiled", ver_compiled_time);
+ if(ctime_r(&now, snow.s)) {
+ snow.len = strlen(snow.s);
+ if(snow.len>2 && snow.s[snow.len-1]=='\n') snow.len--;
+ rpc->struct_add(s, "S", "time_now", &snow);
+ }
+ rpc->struct_add(s, "s", "time_started", up_since_ctime);
+ uptime = (int)(now-up_since);
+ rpc->struct_add(s, "d", "uptime_secs", uptime);
+ rpc->struct_printf(s, "utime_days", "%dd %dh %dm %ds",
+ uptime/86400, (uptime%86400)/3600, ((uptime%86400)%3600)/60,
+ ((uptime%86400)%3600)%60);
+
+}
+
static const char* core_uptime_doc[] = {
"Returns uptime of SIP server.", /* Documentation string */
0 /* Method signature(s) */
@@ -1079,6 +1118,8 @@ static rpc_export_t core_rpc_methods[] = {
0 },
{"core.info", core_info, core_info_doc,
0 },
+ {"core.runinfo", core_runinfo, core_runinfo_doc,
+ 0 },
{"core.uptime", core_uptime, core_uptime_doc,
0 },
{"core.ps", core_ps, core_ps_doc,
RET_ARRAY},
{"core.psx", core_psx, core_psx_doc,
RET_ARRAY},