diff options
author | Simon Rettberg | 2020-03-17 13:01:37 +0100 |
---|---|---|
committer | Simon Rettberg | 2020-03-17 13:01:37 +0100 |
commit | 2e70a0836173c9502ff5cddd849165d432a883cb (patch) | |
tree | 7e96df086ce728755dff66e88f125c8e6cef20fe /src/server/rpc.c | |
parent | [SERVER] Don't prefetch across hash blocks in BGS_HASHBLOCK mode (diff) | |
download | dnbd3-2e70a0836173c9502ff5cddd849165d432a883cb.tar.gz dnbd3-2e70a0836173c9502ff5cddd849165d432a883cb.tar.xz dnbd3-2e70a0836173c9502ff5cddd849165d432a883cb.zip |
[SERVER] Include build type and version in RPC
Added new query type q=version, which uses the STATS access rights.
Diffstat (limited to 'src/server/rpc.c')
-rw-r--r-- | src/server/rpc.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/server/rpc.c b/src/server/rpc.c index b66b8fe..12ad0dd 100644 --- a/src/server/rpc.c +++ b/src/server/rpc.c @@ -6,6 +6,7 @@ #include "image.h" #include "altservers.h" #include "../shared/sockhelper.h" +#include "../version.h" #include "fileutil.h" #include "picohttpparser/picohttpparser.h" #include "urldecode.h" @@ -259,7 +260,7 @@ static bool handleStatus(int sock, int permissions, struct field *fields, size_t { bool ok; bool stats = false, images = false, clients = false, space = false; - bool logfile = false, config = false, altservers = false; + bool logfile = false, config = false, altservers = false, version = false; #define SETVAR(var) if ( !var && STRCMP(fields[i].value, #var) ) var = true for (size_t i = 0; i < fields_num; ++i) { if ( !equals( &fields[i].name, &STR_Q ) ) continue; @@ -270,9 +271,10 @@ static bool handleStatus(int sock, int permissions, struct field *fields, size_t else SETVAR(logfile); else SETVAR(config); else SETVAR(altservers); + else SETVAR(version); } #undef SETVAR - if ( ( stats || space ) && !(permissions & ACL_STATS) ) { + if ( ( stats || space || version ) && !(permissions & ACL_STATS) ) { return sendReply( sock, "403 Forbidden", "text/plain", "No permission to access statistics", -1, keepAlive ); } if ( images && !(permissions & ACL_IMAGE_LIST) ) { @@ -308,6 +310,10 @@ static bool handleStatus(int sock, int permissions, struct field *fields, size_t statisticsJson = json_pack( "{sI}", "runId", randomRunId ); } + if ( version ) { + json_object_set_new( statisticsJson, "version", json_string( VERSION_STRING ) ); + json_object_set_new( statisticsJson, "build", json_string( TOSTRING( BUILD_TYPE ) ) ); + } if ( space ) { uint64_t spaceTotal = 0, spaceAvail = 0; file_freeDiskSpace( _basePath, &spaceTotal, &spaceAvail ); |