Skip to content

Commit 48b8c73

Browse files
RDKDEV-999:Xdial-Parse-authorized-domains
1 parent 82bc176 commit 48b8c73

File tree

2 files changed

+39
-74
lines changed

2 files changed

+39
-74
lines changed

server/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ else()
3636
endif()
3737
pkg_search_module (SOUP REQUIRED libsoup-2.4)
3838
pkg_search_module (XML2 REQUIRED libxml-2.0)
39+
pkg_search_module (JSON-C REQUIRED json-c)
3940

4041
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -g")
4142
set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS} ")
@@ -90,6 +91,7 @@ target_link_libraries (gdial-server
9091
${GSSDP_LIBRARIES}
9192
${SOUP_LIBRARIES}
9293
${XML2_LIBRARIES}
94+
${JSON-C_LIBRARIES}
9395
gdial-plat
9496
uuid
9597
)

server/main.c

Lines changed: 37 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
#include <stdio.h>
2424
#include <glib.h>
2525
#include <libsoup/soup.h>
26+
#include <json-c/json.h>
27+
#include <json-c/json_object.h>
28+
#include <json-c/json_object_iterator.h>
2629

2730
#include "gdial-config.h"
2831
#include "gdial-debug.h"
@@ -186,7 +189,20 @@ static void gdial_quit_thread(int signum)
186189
usleep(50000); //Sleeping 50 ms to allow existing request to finish processing.
187190
g_print(" calling g_main_loop_quit loop_: %p \r\n",loop_);
188191
if(loop_)g_main_loop_quit(loop_);
192+
}
189193

194+
static char* get_app_name(const char *config_name)
195+
{
196+
static int prefix_len = strlen("/apps/");
197+
static int suffix_len = strlen("/dial_data");
198+
199+
int size = strlen(config_name);
200+
int app_name_size = size - (prefix_len + suffix_len);
201+
char *app_name = malloc(app_name_size + 1);
202+
strncpy(app_name, config_name + prefix_len, app_name_size);
203+
app_name[app_name_size] = '\0';
204+
205+
return app_name;
190206
}
191207

192208
int main(int argc, char *argv[]) {
@@ -285,89 +301,36 @@ int main(int argc, char *argv[]) {
285301
}
286302
else {
287303
g_print("app_list to be enabled from command line %s\r\n", options_.app_list);
288-
size_t app_list_len = strlen(options_.app_list);
289-
gchar *app_list_low = g_ascii_strdown(options_.app_list, app_list_len);
290-
if (g_strstr_len(app_list_low, app_list_len, "netflix")) {
291-
g_print("netflix is enabled from cmdline\r\n");
292-
GList *allowed_origins = g_list_prepend(NULL, ".netflix.com");
293-
gdial_rest_server_register_app(dial_rest_server, "Netflix", NULL, NULL, TRUE, TRUE, allowed_origins);
294-
g_list_free(allowed_origins);
295-
}
296-
else {
297-
g_print("netflix is not enabled from cmdline\r\n");
298-
}
299304

300-
if (g_strstr_len(app_list_low, app_list_len, "youtube")) {
301-
g_print("youtube is enabled from cmdline\r\n");
302-
GList *allowed_origins = g_list_prepend(NULL, ".youtube.com");
303-
gdial_rest_server_register_app(dial_rest_server, "YouTube", NULL, NULL, TRUE, TRUE, allowed_origins);
304-
g_list_free(allowed_origins);
305-
}
306-
else {
307-
g_print("youtube is not enabled from cmdline\r\n");
308-
}
305+
struct json_object *root = json_tokener_parse(options_.app_list);
306+
struct json_object_iterator it = json_object_iter_begin(root);
307+
struct json_object_iterator it_end = json_object_iter_end(root);
309308

310-
if (g_strstr_len(app_list_low, app_list_len, "youtubetv")) {
311-
g_print("youtubetv is enabled from cmdline\r\n");
312-
GList *allowed_origins = g_list_prepend(NULL, ".youtube.com");
313-
gdial_rest_server_register_app(dial_rest_server, "YouTubeTV", NULL, NULL, TRUE, TRUE, allowed_origins);
314-
g_list_free(allowed_origins);
315-
}
316-
else {
317-
g_print("youtubetv is not enabled from cmdline\r\n");
318-
}
309+
while (!json_object_iter_equal(&it, &it_end)) {
310+
const char *config_name = json_object_iter_peek_name(&it);
311+
const char *app_name = get_app_name(config_name);
312+
g_print("%s is enabled from cmdline\r\n", app_name);
319313

320-
if (g_strstr_len(app_list_low, app_list_len, "youtubekids")) {
321-
g_print("youtubekids is enabled from cmdline\r\n");
322-
GList *allowed_origins = g_list_prepend(NULL, ".youtube.com");
323-
gdial_rest_server_register_app(dial_rest_server, "YouTubeKids", NULL, NULL, TRUE, TRUE, allowed_origins);
324-
g_list_free(allowed_origins);
325-
}
326-
else {
327-
g_print("youtubekids is not enabled from cmdline\r\n");
328-
}
314+
struct json_object *origins = json_object_iter_peek_value(&it);
315+
int arraylen = json_object_array_length(origins);
329316

330-
if (g_strstr_len(app_list_low, app_list_len, "amazoninstantvideo")) {
331-
g_print("AmazonInstantVideo is enabled from cmdline\r\n");
332-
GList *allowed_origins = g_list_prepend(NULL, ".amazonprime.com");
333-
gdial_rest_server_register_app(dial_rest_server, "AmazonInstantVideo", NULL, NULL, TRUE, TRUE, allowed_origins);
334-
g_list_free(allowed_origins);
335-
}
336-
else {
337-
g_print("AmazonInstantVideo is not enabled from cmdline\r\n");
338-
}
317+
GList *allowed_origins = NULL;
318+
for (int i = 0; i < arraylen; i++) {
319+
struct json_object *origin = json_object_array_get_idx(origins, i);
320+
char *origin_value = g_strdup(json_object_get_string(origin));
321+
g_print("\t origin %s\r\n", origin_value);
339322

340-
if (g_strstr_len(app_list_low, app_list_len, "spotify")) {
341-
g_print("spotify is enabled from cmdline\r\n");
342-
GList *app_prefixes= g_list_prepend(NULL, "com.spotify");
343-
GList *allowed_origins = g_list_prepend(NULL, ".spotify.com");
344-
gdial_rest_server_register_app(dial_rest_server, "com.spotify.Spotify.TV", app_prefixes, NULL, TRUE, TRUE, allowed_origins);
345-
g_list_free(allowed_origins);
346-
g_list_free(app_prefixes);
347-
}
348-
else {
349-
g_print("spotify is not enabled from cmdline\r\n");
350-
}
323+
allowed_origins = g_list_prepend(allowed_origins, origin_value);
324+
}
351325

352-
if (g_strstr_len(app_list_low, app_list_len, "pairing")) {
353-
g_print("pairing is enabled from cmdline\r\n");
354-
GList *allowed_origins = g_list_prepend(NULL, ".comcast.com");
355-
gdial_rest_server_register_app(dial_rest_server, "Pairing", NULL, NULL, TRUE, TRUE, allowed_origins);
356-
g_list_free(allowed_origins);
357-
}
358-
else {
359-
g_print("pairing is not enabled from cmdline\r\n");
360-
}
326+
gdial_rest_server_register_app(dial_rest_server, app_name, NULL, NULL, TRUE, TRUE, allowed_origins);
327+
g_list_free_full(allowed_origins, g_free);
328+
free(app_name);
361329

362-
if (g_strstr_len(app_list_low, app_list_len, "system")) {
363-
g_print("system is enabled from cmdline\r\n");
364-
gdial_rest_server_register_app(dial_rest_server, "system", NULL, NULL, TRUE, TRUE, NULL);
365-
}
366-
else {
367-
g_print("system is not enabled from cmdline\r\n");
330+
json_object_iter_next(&it);
368331
}
369332

370-
g_free(app_list_low);
333+
json_object_put(root);
371334
}
372335

373336
g_signal_connect(dial_rest_server, "invalid-uri", G_CALLBACK(signal_handler_rest_server_invalid_uri), NULL);

0 commit comments

Comments
 (0)