SUPPORT-8592. Добавлен location для получения номера версии приложения
This commit is contained in:
parent
5a4ee2cb69
commit
3acd286ae0
4 changed files with 97 additions and 0 deletions
60
src/modules/service_version.c
Normal file
60
src/modules/service_version.c
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
#include "service_version.h"
|
||||
|
||||
#include "version.h"
|
||||
|
||||
#include "fcgisrv/fcgi_utils.h"
|
||||
|
||||
#include "utils/logger.h"
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
|
||||
#define VERSION_TEXT \
|
||||
"Content-type: text/plain" CRLF CRLF \
|
||||
APP_VERSION
|
||||
|
||||
static const str_t VERSION_CONF_DEFAULT_LOCATION = str_t_const("/version");
|
||||
|
||||
|
||||
int
|
||||
version_conf_load(version_conf_t *conf)
|
||||
{
|
||||
LOG_TRACE("version_conf_load enter");
|
||||
|
||||
assert(conf != NULL);
|
||||
|
||||
conf->location = &VERSION_CONF_DEFAULT_LOCATION;
|
||||
|
||||
LOG_TRACE("version_conf_load exit");
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
version_conf_clear(version_conf_t *conf)
|
||||
{
|
||||
LOG_TRACE("version_conf_load enter");
|
||||
|
||||
if (conf != NULL) {
|
||||
conf->location = NULL;
|
||||
}
|
||||
|
||||
LOG_TRACE("version_conf_load exit");
|
||||
}
|
||||
|
||||
fcgi_handler_status_t
|
||||
fcgi_version_handler(FCGX_Request* request, void* ctx)
|
||||
{
|
||||
LOG_TRACE("fcgi_version_handler enter");
|
||||
|
||||
assert(request != NULL);
|
||||
|
||||
if (request == NULL) {
|
||||
LOG_ERROR("fcgi_version_handler failed: request is NULL");
|
||||
return HANDLER_ERROR;
|
||||
}
|
||||
|
||||
FCGX_FPrintF(request->out, VERSION_TEXT);
|
||||
|
||||
LOG_TRACE("fcgi_version_handler exit");
|
||||
return HANDLER_SUCCESS;
|
||||
}
|
||||
22
src/modules/service_version.h
Normal file
22
src/modules/service_version.h
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#ifndef SERVICE_VERSION_H_INCLUDED
|
||||
#define SERVICE_VERSION_H_INCLUDED
|
||||
|
||||
|
||||
#include "fcgisrv/fcgi_server.h"
|
||||
|
||||
#include "utils/str_t.h"
|
||||
|
||||
|
||||
typedef struct version_conf_s {
|
||||
const str_t *location;
|
||||
|
||||
} version_conf_t;
|
||||
|
||||
|
||||
int version_conf_load(version_conf_t *conf);
|
||||
void version_conf_clear(version_conf_t *conf);
|
||||
|
||||
fcgi_handler_status_t fcgi_version_handler(FCGX_Request* request, void* ctx);
|
||||
|
||||
|
||||
#endif // SERVICE_VERSION_H_INCLUDED
|
||||
|
|
@ -166,6 +166,11 @@ service_manager_load_conf(const char* config_file_name, service_manager_conf_t*
|
|||
goto error;
|
||||
}
|
||||
|
||||
if (version_conf_load(&services_cf->version_cf)) {
|
||||
LOG_ERROR("Show version service configuraton loading failed");
|
||||
goto error;
|
||||
}
|
||||
|
||||
conf_file_close_file(conf_file);
|
||||
|
||||
LOG_TRACE("service_manager_load_conf exit with success");
|
||||
|
|
@ -185,6 +190,7 @@ service_manager_clear_conf(service_manager_conf_t* services_cf)
|
|||
{
|
||||
assert(services_cf != NULL);
|
||||
|
||||
version_conf_clear(&services_cf->version_cf);
|
||||
sign_conf_clear(&services_cf->sign_cf);
|
||||
verify_conf_clear(&services_cf->verify_cf);
|
||||
fcgi_clear_conf(&services_cf->fcgi_cf);
|
||||
|
|
@ -256,6 +262,13 @@ init_services(service_manager_t* services, const service_manager_conf_t* service
|
|||
goto error;
|
||||
}
|
||||
|
||||
/* show version service */
|
||||
if (register_service(services, services_cf, fcgi_version_handler, NULL,
|
||||
services_cf->version_cf.location)) {
|
||||
LOG_ERROR("Could not register 'show version service'");
|
||||
goto error;
|
||||
}
|
||||
|
||||
/* run fastcgi server */
|
||||
if (fcgi_run_server(services->hfcgi) != 0) {
|
||||
LOG_ERROR("Could not run FastCGI server");
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
#include "modules/service_sign.h"
|
||||
#include "modules/service_verify.h"
|
||||
#include "modules/service_version.h"
|
||||
|
||||
struct service_s;
|
||||
|
||||
|
|
@ -48,6 +49,7 @@ typedef struct service_manager_conf_s {
|
|||
main_conf_t main_cf;
|
||||
sign_conf_t sign_cf;
|
||||
verify_conf_t verify_cf;
|
||||
version_conf_t version_cf;
|
||||
|
||||
} service_manager_conf_t;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue