FS-10060 [mod_v8] Add startup scripts support.
This commit is contained in:
parent
dcbd39cc26
commit
658b1f85f5
|
@ -239,4 +239,7 @@ libs/libpng/
|
||||||
libs/zlib/
|
libs/zlib/
|
||||||
|
|
||||||
libs/libav/
|
libs/libav/
|
||||||
libs/libx264/
|
libs/libx264/
|
||||||
|
|
||||||
|
Win32/*.msi
|
||||||
|
x64/*.msi
|
|
@ -1,5 +1,7 @@
|
||||||
<configuration name="v8.conf" description="Google V8 JavaScript Plug-Ins">
|
<configuration name="v8.conf" description="Google V8 JavaScript Plug-Ins">
|
||||||
<settings>
|
<settings>
|
||||||
|
<!-- <param name="startup-script" value="startup1.js"/> -->
|
||||||
|
<!-- <param name="startup-script" value="startup2.js"/> -->
|
||||||
<!-- <param name="xml-handler-script" value="directory.js"/> -->
|
<!-- <param name="xml-handler-script" value="directory.js"/> -->
|
||||||
<!-- <param name="xml-handler-bindings" value="directory"/> -->
|
<!-- <param name="xml-handler-bindings" value="directory"/> -->
|
||||||
<!-- <hook event="CUSTOM" subclass="sofia::register" script="catch-event.js"/> -->
|
<!-- <hook event="CUSTOM" subclass="sofia::register" script="catch-event.js"/> -->
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
<configuration name="v8.conf" description="Google V8 JavaScript Plug-Ins">
|
<configuration name="v8.conf" description="Google V8 JavaScript Plug-Ins">
|
||||||
<settings>
|
<settings>
|
||||||
|
<!-- <param name="startup-script" value="startup1.js"/> -->
|
||||||
|
<!-- <param name="startup-script" value="startup2.js"/> -->
|
||||||
<!-- <param name="xml-handler-script" value="directory.js"/> -->
|
<!-- <param name="xml-handler-script" value="directory.js"/> -->
|
||||||
<!-- <param name="xml-handler-bindings" value="directory"/> -->
|
<!-- <param name="xml-handler-bindings" value="directory"/> -->
|
||||||
<!-- <hook event="CUSTOM" subclass="sofia::register" script="catch-event.js"/> -->
|
<!-- <hook event="CUSTOM" subclass="sofia::register" script="catch-event.js"/> -->
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
<configuration name="v8.conf" description="Google V8 JavaScript Plug-Ins">
|
<configuration name="v8.conf" description="Google V8 JavaScript Plug-Ins">
|
||||||
<settings>
|
<settings>
|
||||||
|
<!-- <param name="startup-script" value="startup1.js"/> -->
|
||||||
|
<!-- <param name="startup-script" value="startup2.js"/> -->
|
||||||
<!-- <param name="xml-handler-script" value="directory.js"/> -->
|
<!-- <param name="xml-handler-script" value="directory.js"/> -->
|
||||||
<!-- <param name="xml-handler-bindings" value="directory"/> -->
|
<!-- <param name="xml-handler-bindings" value="directory"/> -->
|
||||||
<!-- <hook event="CUSTOM" subclass="sofia::register" script="catch-event.js"/> -->
|
<!-- <hook event="CUSTOM" subclass="sofia::register" script="catch-event.js"/> -->
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
<configuration name="v8.conf" description="Google V8 JavaScript Plug-Ins">
|
<configuration name="v8.conf" description="Google V8 JavaScript Plug-Ins">
|
||||||
<settings>
|
<settings>
|
||||||
|
<!-- <param name="startup-script" value="startup1.js"/> -->
|
||||||
|
<!-- <param name="startup-script" value="startup2.js"/> -->
|
||||||
<!-- <param name="xml-handler-script" value="directory.js"/> -->
|
<!-- <param name="xml-handler-script" value="directory.js"/> -->
|
||||||
<!-- <param name="xml-handler-bindings" value="directory"/> -->
|
<!-- <param name="xml-handler-bindings" value="directory"/> -->
|
||||||
<!-- <hook event="CUSTOM" subclass="sofia::register" script="catch-event.js"/> -->
|
<!-- <hook event="CUSTOM" subclass="sofia::register" script="catch-event.js"/> -->
|
||||||
|
|
|
@ -276,7 +276,35 @@ static switch_status_t load_modules(void)
|
||||||
switch_core_hash_init(&module_manager.load_hash);
|
switch_core_hash_init(&module_manager.load_hash);
|
||||||
|
|
||||||
if ((xml = switch_xml_open_cfg(cf, &cfg, NULL))) {
|
if ((xml = switch_xml_open_cfg(cf, &cfg, NULL))) {
|
||||||
switch_xml_t mods, ld, settings, param, hook;
|
switch_xml_t mods, ld;
|
||||||
|
|
||||||
|
if ((mods = switch_xml_child(cfg, "modules"))) {
|
||||||
|
for (ld = switch_xml_child(mods, "load"); ld; ld = ld->next) {
|
||||||
|
const char *val = switch_xml_attr_soft(ld, "module");
|
||||||
|
if (!zstr(val) && strchr(val, '.') && !strstr(val, ext) && !strstr(val, EXT)) {
|
||||||
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Invalid extension for %s\n", val);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
v8_load_module(SWITCH_GLOBAL_dirs.mod_dir, val);
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
switch_xml_free(xml);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Open of %s failed\n", cf);
|
||||||
|
}
|
||||||
|
|
||||||
|
return SWITCH_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void load_configuration(void)
|
||||||
|
{
|
||||||
|
const char *cf = "v8.conf";
|
||||||
|
switch_xml_t cfg, xml;
|
||||||
|
|
||||||
|
if ((xml = switch_xml_open_cfg(cf, &cfg, NULL))) {
|
||||||
|
switch_xml_t settings, param, hook;
|
||||||
|
|
||||||
if ((settings = switch_xml_child(cfg, "settings"))) {
|
if ((settings = switch_xml_child(cfg, "settings"))) {
|
||||||
for (param = switch_xml_child(settings, "param"); param; param = param->next) {
|
for (param = switch_xml_child(settings, "param"); param; param = param->next) {
|
||||||
|
@ -292,6 +320,11 @@ static switch_status_t load_modules(void)
|
||||||
switch_xml_bind_search_function(v8_fetch, switch_xml_parse_section_string(val), NULL);
|
switch_xml_bind_search_function(v8_fetch, switch_xml_parse_section_string(val), NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (!strcmp(var, "startup-script")) {
|
||||||
|
if (val) {
|
||||||
|
v8_thread_launch(val);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (hook = switch_xml_child(settings, "hook"); hook; hook = hook->next) {
|
for (hook = switch_xml_child(settings, "hook"); hook; hook = hook->next) {
|
||||||
|
@ -326,24 +359,12 @@ static switch_status_t load_modules(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((mods = switch_xml_child(cfg, "modules"))) {
|
|
||||||
for (ld = switch_xml_child(mods, "load"); ld; ld = ld->next) {
|
|
||||||
const char *val = switch_xml_attr_soft(ld, "module");
|
|
||||||
if (!zstr(val) && strchr(val, '.') && !strstr(val, ext) && !strstr(val, EXT)) {
|
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Invalid extension for %s\n", val);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
v8_load_module(SWITCH_GLOBAL_dirs.mod_dir, val);
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
switch_xml_free(xml);
|
switch_xml_free(xml);
|
||||||
|
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Open of %s failed\n", cf);
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Open of %s failed\n", cf);
|
||||||
}
|
}
|
||||||
|
|
||||||
return SWITCH_STATUS_SUCCESS;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int env_init(JSMain *js)
|
static int env_init(JSMain *js)
|
||||||
|
@ -1007,6 +1028,8 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_v8_load)
|
||||||
|
|
||||||
SWITCH_ADD_JSON_API(json_api_interface, "jsjson", "JSON JS Gateway", json_function, "");
|
SWITCH_ADD_JSON_API(json_api_interface, "jsjson", "JSON JS Gateway", json_function, "");
|
||||||
|
|
||||||
|
load_configuration();
|
||||||
|
|
||||||
/* indicate that the module should continue to be loaded */
|
/* indicate that the module should continue to be loaded */
|
||||||
return SWITCH_STATUS_NOUNLOAD;
|
return SWITCH_STATUS_NOUNLOAD;
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,6 +86,7 @@ void v8_remove_event_handler(void *event_handler);
|
||||||
static switch_xml_t v8_fetch(const char *section,
|
static switch_xml_t v8_fetch(const char *section,
|
||||||
const char *tag_name, const char *key_name, const char *key_value, switch_event_t *params, void *user_data);
|
const char *tag_name, const char *key_name, const char *key_value, switch_event_t *params, void *user_data);
|
||||||
static void v8_event_handler(switch_event_t *event);
|
static void v8_event_handler(switch_event_t *event);
|
||||||
|
void v8_thread_launch(const char *text);
|
||||||
|
|
||||||
#endif /* MOD_V8_H */
|
#endif /* MOD_V8_H */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue