From 816fdb93a2ff84769d5491b7fb0071d4c5f4386c Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 23 May 2017 12:02:27 +0200 Subject: [PATCH] http server: allow to change the 'Server:' header, fixes #3710 --- src/config.c | 13 +++++++++++++ src/config.h | 1 + src/http.c | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/config.c b/src/config.c index a46d0010d..c7c564fa4 100644 --- a/src/config.c +++ b/src/config.c @@ -1751,6 +1751,8 @@ config_boot ( const char *path, gid_t gid, uid_t uid ) htsmsg_destroy(config2); if (config.server_name == NULL || config.server_name[0] == '\0') config.server_name = strdup("Tvheadend"); + if (config.http_server_name == NULL || config.http_server_name[0] == '\0') + config.http_server_name = strdup("HTS/tvheadend"); if (!config_scanfile_ok) config_muxconfpath_notify(&config.idnode, NULL); } @@ -1773,6 +1775,7 @@ config_init ( int backup ) config.version = ARRAY_SIZE(config_migrate_table); tvh_str_set(&config.full_version, tvheadend_version); tvh_str_set(&config.server_name, "Tvheadend"); + tvh_str_set(&config.http_server_name, "HTS/tvheadend"); idnode_changed(&config.idnode); /* Perform migrations */ @@ -1788,6 +1791,7 @@ void config_done ( void ) /* note: tvhlog is inactive !!! */ free(config.wizard); free(config.full_version); + free(config.http_server_name); free(config.server_name); free(config.language); free(config.language_ui); @@ -2078,6 +2082,15 @@ const idclass_t config_class = { .off = offsetof(config_t, server_name), .group = 1 }, + { + .type = PT_STR, + .id = "http_server_name", + .name = N_("HTTP server name"), + .desc = N_("The server name for 'Server:' HTTP headers."), + .off = offsetof(config_t, http_server_name), + .opts = PO_HIDDEN | PO_EXPERT, + .group = 1 + }, { .type = PT_BOOL, .id = "hbbtv", diff --git a/src/config.h b/src/config.h index cef8e4b35..65c63f07a 100644 --- a/src/config.h +++ b/src/config.h @@ -40,6 +40,7 @@ typedef struct config { char *wizard; char *full_version; char *server_name; + char *http_server_name; char *language; char *info_area; char *language_ui; diff --git a/src/http.c b/src/http.c index 2d6c3c798..6319240ad 100644 --- a/src/http.c +++ b/src/http.c @@ -333,7 +333,7 @@ http_send_header(http_connection_t *hc, int rc, const char *content, http_ver2str(hc->hc_version), rc, http_rc2str(rc)); if (hc->hc_version != RTSP_VERSION_1_0){ - htsbuf_append_str(&hdrs, "Server: HTS/tvheadend\r\n"); + htsbuf_qprintf(&hdrs, "Server: %s\r\n", config.http_server_name ?: "HTV/tvheadend"); if (config.cors_origin && config.cors_origin[0]) { htsbuf_qprintf(&hdrs, "Access-Control-Allow-Origin: %s\r\n", config.cors_origin); htsbuf_append_str(&hdrs, "Access-Control-Allow-Methods: POST, GET, OPTIONS\r\n"); -- 2.47.3