diff options
author | David Schleef <ds@schleef.org> | 2013-02-23 17:10:44 -0800 |
---|---|---|
committer | David Schleef <ds@schleef.org> | 2013-02-23 17:10:44 -0800 |
commit | 7373b0330d5c41f171a7a49214adc88040ddfdf7 (patch) | |
tree | e4df76928aaddded8ea406d3d5693491022d0cd1 | |
parent | 1b4376d9c5e586fa96bdca620307d00d0c193edc (diff) |
Add kiosk address checking
-rw-r--r-- | gst-streaming-server/gss-server.c | 25 | ||||
-rw-r--r-- | gst-streaming-server/gss-server.h | 2 |
2 files changed, 27 insertions, 0 deletions
diff --git a/gst-streaming-server/gss-server.c b/gst-streaming-server/gss-server.c index f0d5dfa..0f6f711 100644 --- a/gst-streaming-server/gss-server.c +++ b/gst-streaming-server/gss-server.c @@ -47,6 +47,7 @@ enum PROP_MAX_CONNECTIONS, PROP_MAX_RATE, PROP_ADMIN_HOSTS_ALLOW, + PROP_KIOSK_HOSTS_ALLOW, PROP_REALM, PROP_ADMIN_TOKEN, PROP_ENABLE_HTML5_VIDEO, @@ -65,6 +66,7 @@ enum #define DEFAULT_MAX_CONNECTIONS 10000 #define DEFAULT_MAX_RATE 100000 #define DEFAULT_ADMIN_HOSTS_ALLOW "0.0.0.0/0" +#define DEFAULT_KIOSK_HOSTS_ALLOW "" /* This is the result of soup_auth_domain_digest_encode_password ("admin", * "GStreamer Streaming Server", "admin"); */ #define DEFAULT_ADMIN_TOKEN "f09e5ebc80c348d2ccf8a59a8cd37827" @@ -230,6 +232,10 @@ gss_server_init (GssServer * server) server->admin_arl = gss_addr_range_list_new_from_string (server->admin_hosts_allow, TRUE, TRUE); + server->kiosk_hosts_allow = g_strdup (DEFAULT_KIOSK_HOSTS_ALLOW); + server->kiosk_arl = + gss_addr_range_list_new_from_string (server->kiosk_hosts_allow, FALSE, + FALSE); server->admin_token = g_strdup (DEFAULT_ADMIN_TOKEN); server->realm = g_strdup (DEFAULT_REALM); server->enable_html5_video = DEFAULT_ENABLE_HTML5_VIDEO; @@ -282,6 +288,7 @@ gss_server_finalize (GObject * object) g_free (server->server_hostname); g_free (server->realm); g_free (server->admin_hosts_allow); + g_free (server->kiosk_hosts_allow); g_free (server->admin_token); g_free (server->archive_dir); g_free (server->cas_server); @@ -339,6 +346,12 @@ gss_server_class_init (GssServerClass * server_class) "Allowed Hosts (admin)", "Allowed Hosts (admin)", DEFAULT_ADMIN_HOSTS_ALLOW, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + g_object_class_install_property (G_OBJECT_CLASS (server_class), + PROP_KIOSK_HOSTS_ALLOW, g_param_spec_string ("kiosk-hosts-allow", + "Allowed Hosts (kiosk)", "IP addresses or address ranges listed " + "here will automatically be given access to the kiosk group.", + DEFAULT_KIOSK_HOSTS_ALLOW, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); #if 0 /* Don't want to expose this yet */ g_object_class_install_property (G_OBJECT_CLASS (server_class), @@ -440,6 +453,15 @@ gss_server_set_property (GObject * object, guint prop_id, TRUE, TRUE); } break; + case PROP_KIOSK_HOSTS_ALLOW: + if (strcmp (server->kiosk_hosts_allow, g_value_get_string (value))) { + g_free (server->kiosk_hosts_allow); + server->kiosk_hosts_allow = g_value_dup_string (value); + server->kiosk_arl = + gss_addr_range_list_new_from_string (server->kiosk_hosts_allow, + FALSE, FALSE); + } + break; case PROP_ADMIN_TOKEN: g_free (server->admin_token); server->admin_token = g_value_dup_string (value); @@ -507,6 +529,9 @@ gss_server_get_property (GObject * object, guint prop_id, case PROP_ADMIN_HOSTS_ALLOW: g_value_set_string (value, server->admin_hosts_allow); break; + case PROP_KIOSK_HOSTS_ALLOW: + g_value_set_string (value, server->kiosk_hosts_allow); + break; case PROP_ADMIN_TOKEN: g_value_set_string (value, server->admin_token); break; diff --git a/gst-streaming-server/gss-server.h b/gst-streaming-server/gss-server.h index 72e9e09..fd59820 100644 --- a/gst-streaming-server/gss-server.h +++ b/gst-streaming-server/gss-server.h @@ -66,6 +66,7 @@ struct _GssServer int max_connections; int max_rate; char *admin_hosts_allow; + char *kiosk_hosts_allow; char *realm; char *cas_server; gboolean enable_html5_video; @@ -110,6 +111,7 @@ struct _GssServer void *add_warnings_priv; GssAddrRangeList *admin_arl; + GssAddrRangeList *kiosk_arl; }; struct _GssServerClass |