Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
http: add configurable cors origin
  • Loading branch information
perexg committed Sep 18, 2015
1 parent 1e1c8f1 commit 198ecc3
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 3 deletions.
41 changes: 41 additions & 0 deletions src/config.c
Expand Up @@ -1646,6 +1646,7 @@ void config_done ( void )
free(config.muxconf_path);
free(config.chicon_path);
free(config.picon_path);
free(config.cors_origin);
file_unlock(config_lock, config_lock_fd);
}

Expand All @@ -1669,6 +1670,38 @@ static void config_class_save(idnode_t *self)
config_save();
}

static int
config_class_cors_origin_set ( void *o, const void *v )
{
const char *s = v;
url_t u;

while (s && *s && *s <= ' ')
s++;
if (*s == '*') {
prop_sbuf[0] = '*';
prop_sbuf[1] = '\0';
} else {
memset(&u, 0, sizeof(u));
urlparse(s, &u);
if (u.scheme && (!strcmp(u.scheme, "http") || !strcmp(u.scheme, "https")) && u.host) {
if (u.port)
snprintf(prop_sbuf, PROP_SBUF_LEN, "%s://%s:%d", u.scheme, u.host, u.port);
else
snprintf(prop_sbuf, PROP_SBUF_LEN, "%s://%s", u.scheme, u.host);
} else {
prop_sbuf[0] = '\0';
}
urlreset(&u);
}
if (strcmp(prop_sbuf, config.cors_origin ?: "")) {
free(config.cors_origin);
config.cors_origin = strdup(prop_sbuf);
return 1;
}
return 0;
}

static const void *
config_class_language_get ( void *o )
{
Expand Down Expand Up @@ -1752,6 +1785,14 @@ const idclass_t config_class = {
.off = offsetof(config_t, server_name),
.group = 1
},
{
.type = PT_STR,
.id = "cors_origin",
.name = N_("HTTP CORS Origin"),
.set = config_class_cors_origin_set,
.off = offsetof(config_t, cors_origin),
.group = 1
},
{
.type = PT_STR,
.islist = 1,
Expand Down
1 change: 1 addition & 0 deletions src/config.h
Expand Up @@ -40,6 +40,7 @@ typedef struct config {
int tvhtime_update_enabled;
int tvhtime_ntp_enabled;
uint32_t tvhtime_tolerance;
char *cors_origin;
} config_t;

extern const idclass_t config_class;
Expand Down
9 changes: 6 additions & 3 deletions src/http.c
Expand Up @@ -38,6 +38,7 @@
#include "access.h"
#include "notify.h"
#include "channels.h"
#include "config.h"

#if ENABLE_ANDROID
#include <sys/socket.h>
Expand Down Expand Up @@ -237,9 +238,11 @@ http_send_header(http_connection_t *hc, int rc, const char *content,

if (hc->hc_version != RTSP_VERSION_1_0){
htsbuf_qprintf(&hdrs, "Server: HTS/tvheadend\r\n");
htsbuf_qprintf(&hdrs, "Access-Control-Allow-Origin: *\r\n");
htsbuf_qprintf(&hdrs, "Access-Control-Allow-Methods: POST, GET\r\n");
htsbuf_qprintf(&hdrs, "Access-Control-Allow-Headers: x-requested-with\r\n");
if (config.cors_origin && config.cors_origin[0]) {
htsbuf_qprintf(&hdrs, "Access-Control-Allow-Origin: %s\r\n", config.cors_origin);
htsbuf_qprintf(&hdrs, "Access-Control-Allow-Methods: POST, GET\r\n");
htsbuf_qprintf(&hdrs, "Access-Control-Allow-Headers: x-requested-with\r\n");
}
}

if(maxage == 0) {
Expand Down

0 comments on commit 198ecc3

Please sign in to comment.