From 74c64339556362ab70e99976a90aca54e31b2c27 Mon Sep 17 00:00:00 2001 From: Andrey Volk Date: Tue, 24 Dec 2024 14:46:13 +0300 Subject: [PATCH] [mod_yaml] Remove from tree --- Makefile.am | 4 - build/modules.conf.in | 1 - build/modules.conf.most | 1 - .../autoload_configs/modules.conf.xml | 2 - .../vanilla/autoload_configs/modules.conf.xml | 2 - conf/vanilla/yaml/extensions.yaml | 4 - conf/vanilla/yaml/mod_yaml.yaml | 6 - configure.ac | 4 - debian/bootstrap.sh | 2 - debian/control-modules | 5 - src/mod/languages/mod_yaml/Makefile.am | 18 - src/mod/languages/mod_yaml/mod_yaml.c | 529 ------------------ 12 files changed, 578 deletions(-) delete mode 100644 conf/vanilla/yaml/extensions.yaml delete mode 100644 conf/vanilla/yaml/mod_yaml.yaml delete mode 100644 src/mod/languages/mod_yaml/Makefile.am delete mode 100644 src/mod/languages/mod_yaml/mod_yaml.c diff --git a/Makefile.am b/Makefile.am index 09574caa6c..840d114c65 100644 --- a/Makefile.am +++ b/Makefile.am @@ -588,10 +588,6 @@ libs/srtp/libsrtp.la: libs/srtp libs/srtp/.update $(SRTP_SRC) ## ## helper targets ## -yaml-files: - @echo `mkdir $(DESTDIR)$(confdir)/yaml 2>/dev/null` - $(INSTALL) -m 644 $(switch_srcdir)/conf/default/yaml/*.yaml $(DESTDIR)$(confdir)/yaml - vm-sync: test -d $(DESTDIR)$(confdir) || $(mkinstalldirs) $(DESTDIR)$(confdir) test -d $(DESTDIR)$(confdir)/lang || $(mkinstalldirs) $(DESTDIR)$(confdir)/lang diff --git a/build/modules.conf.in b/build/modules.conf.in index 4ce889c3ae..07830a2615 100755 --- a/build/modules.conf.in +++ b/build/modules.conf.in @@ -108,7 +108,6 @@ languages/mod_lua #languages/mod_python #languages/mod_python3 #languages/mod_v8 -#languages/mod_yaml loggers/mod_console #loggers/mod_graylog2 loggers/mod_logfile diff --git a/build/modules.conf.most b/build/modules.conf.most index b0c6cf5673..18278732a4 100755 --- a/build/modules.conf.most +++ b/build/modules.conf.most @@ -103,7 +103,6 @@ languages/mod_managed languages/mod_perl languages/mod_python3 #languages/mod_v8 -languages/mod_yaml loggers/mod_console loggers/mod_graylog2 loggers/mod_logfile diff --git a/conf/insideout/autoload_configs/modules.conf.xml b/conf/insideout/autoload_configs/modules.conf.xml index f03dfb749c..267ff4b602 100755 --- a/conf/insideout/autoload_configs/modules.conf.xml +++ b/conf/insideout/autoload_configs/modules.conf.xml @@ -6,8 +6,6 @@ - - diff --git a/conf/vanilla/autoload_configs/modules.conf.xml b/conf/vanilla/autoload_configs/modules.conf.xml index 6363e233cb..ad37dc9b15 100755 --- a/conf/vanilla/autoload_configs/modules.conf.xml +++ b/conf/vanilla/autoload_configs/modules.conf.xml @@ -6,8 +6,6 @@ - - diff --git a/conf/vanilla/yaml/extensions.yaml b/conf/vanilla/yaml/extensions.yaml deleted file mode 100644 index f74fcf2e3d..0000000000 --- a/conf/vanilla/yaml/extensions.yaml +++ /dev/null @@ -1,4 +0,0 @@ -default: - ${destination_number} =~ (9664): - set: foo=bar - playback: ${hold_music} diff --git a/conf/vanilla/yaml/mod_yaml.yaml b/conf/vanilla/yaml/mod_yaml.yaml deleted file mode 100644 index 65f1b05dda..0000000000 --- a/conf/vanilla/yaml/mod_yaml.yaml +++ /dev/null @@ -1,6 +0,0 @@ -settings: -#look for foo.conf.yaml when foo.conf is looked for in the xml - bind_config: true - - - diff --git a/configure.ac b/configure.ac index 579af2795e..0013e481eb 100755 --- a/configure.ac +++ b/configure.ac @@ -1330,9 +1330,6 @@ PKG_CHECK_MODULES([SQLITE], [sqlite3 >= 3.6.20]) PKG_CHECK_MODULES([CURL], [libcurl >= 7.19]) PKG_CHECK_MODULES([PCRE], [libpcre >= 7.8]) PKG_CHECK_MODULES([SPEEX], [speex >= 1.2rc1 speexdsp >= 1.2rc1]) -PKG_CHECK_MODULES([YAML], [yaml-0.1 >= 0.1.4],[ - AM_CONDITIONAL([HAVE_YAML],[true])],[ - AC_MSG_RESULT([no]); AM_CONDITIONAL([HAVE_YAML],[false])]) PKG_CHECK_MODULES([LDNS], [libldns-fs >= 1.6.6],[ AM_CONDITIONAL([HAVE_LDNS],[true])],[ PKG_CHECK_MODULES([LDNS], [libldns >= 1.6.6],[ @@ -2204,7 +2201,6 @@ AC_CONFIG_FILES([Makefile src/mod/languages/mod_python/Makefile src/mod/languages/mod_python3/Makefile src/mod/languages/mod_v8/Makefile - src/mod/languages/mod_yaml/Makefile src/mod/languages/mod_basic/Makefile src/mod/loggers/mod_console/Makefile src/mod/loggers/mod_graylog2/Makefile diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 2938661c50..3700891c20 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -655,7 +655,6 @@ Depends: \${misc:Depends}, freeswitch (= \${binary:Version}), freeswitch-mod-lua (= \${binary:Version}), freeswitch-mod-perl (= \${binary:Version}), freeswitch-mod-python3 (= \${binary:Version}), - freeswitch-mod-yaml (= \${binary:Version}), freeswitch-mod-console (= \${binary:Version}), freeswitch-mod-logfile (= \${binary:Version}), freeswitch-mod-syslog (= \${binary:Version}), @@ -873,7 +872,6 @@ Depends: \${misc:Depends}, freeswitch (= \${binary:Version}), freeswitch-mod-lua-dbg (= \${binary:Version}), freeswitch-mod-perl-dbg (= \${binary:Version}), freeswitch-mod-python3-dbg (= \${binary:Version}), - freeswitch-mod-yaml-dbg (= \${binary:Version}), freeswitch-mod-console-dbg (= \${binary:Version}), freeswitch-mod-logfile-dbg (= \${binary:Version}), freeswitch-mod-syslog-dbg (= \${binary:Version}), diff --git a/debian/control-modules b/debian/control-modules index 3a9aa9c5b6..9229654cb7 100755 --- a/debian/control-modules +++ b/debian/control-modules @@ -558,11 +558,6 @@ Description: mod_v8 Adds mod_v8. Build-Depends: git, libv8-6.1-dev -Module: languages/mod_yaml -Description: mod_yaml - Adds mod_yaml. -Build-Depends: libyaml-dev, libglib2.0-dev - ## mod/loggers Module: loggers/mod_console diff --git a/src/mod/languages/mod_yaml/Makefile.am b/src/mod/languages/mod_yaml/Makefile.am deleted file mode 100644 index 9d02a0fbc1..0000000000 --- a/src/mod/languages/mod_yaml/Makefile.am +++ /dev/null @@ -1,18 +0,0 @@ -include $(top_srcdir)/build/modmake.rulesam -MODNAME=mod_yaml - -if HAVE_YAML - -mod_LTLIBRARIES = mod_yaml.la -mod_yaml_la_SOURCES = mod_yaml.c -mod_yaml_la_CFLAGS = $(AM_CFLAGS) -mod_yaml_la_CPPFLAGS = $(AM_CPPFLAGS) $(YAML_CFLAGS) -mod_yaml_la_LIBADD = $(switch_builddir)/libfreeswitch.la $(YAML_LIBS) -mod_yaml_la_LDFLAGS = -avoid-version -module -no-undefined -shared - -else -install: error -all: error -error: - $(error You must install libyaml-dev to build mod_yaml) -endif diff --git a/src/mod/languages/mod_yaml/mod_yaml.c b/src/mod/languages/mod_yaml/mod_yaml.c deleted file mode 100644 index 4c824e7137..0000000000 --- a/src/mod/languages/mod_yaml/mod_yaml.c +++ /dev/null @@ -1,529 +0,0 @@ -/* - * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2014, Anthony Minessale II - * - * Version: MPL 1.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * - * The Initial Developer of the Original Code is - * Anthony Minessale II - * Portions created by the Initial Developer are Copyright (C) - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * - * Anthony Minessale II - - * - * mod_yaml.c -- YAML Module - * - */ -#include -#include - -SWITCH_MODULE_LOAD_FUNCTION(mod_yaml_load); -SWITCH_MODULE_DEFINITION(mod_yaml, mod_yaml_load, NULL, NULL); - -static void print_error(yaml_parser_t *parser) -{ - switch (parser->error) { - case YAML_MEMORY_ERROR: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Memory error: Not enough memory for parsing\n"); - break; - - case YAML_READER_ERROR: - if (parser->problem_value != -1) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Reader error: %s: #%X at %d\n", parser->problem, - parser->problem_value, (int) parser->problem_offset); - } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Reader error: %s at %d\n", parser->problem, (int) parser->problem_offset); - } - break; - - case YAML_SCANNER_ERROR: - if (parser->context) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Scanner error: %s at line %d, column %d\n" - "%s at line %d, column %d\n", parser->context, - (int) parser->context_mark.line + 1, (int) parser->context_mark.column + 1, - parser->problem, (int) parser->problem_mark.line + 1, (int) parser->problem_mark.column + 1); - } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Scanner error: %s at line %d, column %d\n", - parser->problem, (int) parser->problem_mark.line + 1, (int) parser->problem_mark.column + 1); - } - break; - - case YAML_PARSER_ERROR: - if (parser->context) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Parser error: %s at line %d, column %d\n" - "%s at line %d, column %d\n", parser->context, - (int) parser->context_mark.line + 1, (int) parser->context_mark.column + 1, - parser->problem, (int) parser->problem_mark.line + 1, (int) parser->problem_mark.column + 1); - } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Parser error: %s at line %d, column %d\n", - parser->problem, (int) parser->problem_mark.line + 1, (int) parser->problem_mark.column + 1); - } - break; - - default: - /* Couldn't happen. */ - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Internal error\n"); - break; - } -} - - -static switch_xml_t parse_file(FILE * input, const char *file_name) -{ - yaml_parser_t parser; - yaml_event_t event = { 0 }; - char *scalar_data; - int done = 0; - int depth = 0; - char name[128] = ""; - char value[128] = ""; - char category[128] = ""; - int nv = 0, p_off = 0; - switch_xml_t xml, param, top, current = NULL; - - yaml_parser_initialize(&parser); - yaml_parser_set_input_file(&parser, input); - - - if (!(xml = switch_xml_new("document"))) { - return NULL; - } - - switch_xml_set_attr_d(xml, "type", "freeswitch/xml"); - current = switch_xml_add_child_d(xml, "section", 0); - switch_xml_set_attr_d(current, "name", "configuration"); - - top = switch_xml_add_child_d(current, "configuration", 0); - switch_xml_set_attr_d(top, "name", file_name); - - while (!done) { - if (!yaml_parser_parse(&parser, &event)) { - print_error(&parser); - break; - } else { - switch (event.type) { - case YAML_MAPPING_START_EVENT: - depth++; - break; - case YAML_MAPPING_END_EVENT: - depth--; - break; - case YAML_STREAM_END_EVENT: - done = 1; - break; - case YAML_SCALAR_EVENT: - scalar_data = (char *) event.data.scalar.value; - switch (depth) { - case 1: - if (!(current = switch_xml_add_child_d(top, scalar_data, depth - 1))) { - done = 1; - } - switch_set_string(category, scalar_data); - nv = 0; - p_off = 0; - break; - case 2: - if (current) { - if (nv == 0) { - switch_set_string(name, scalar_data); - nv++; - } else { - switch_set_string(value, scalar_data); - param = switch_xml_add_child_d(current, "param", p_off++); - switch_xml_set_attr_d_buf(param, "name", name); - switch_xml_set_attr_d(param, "value", scalar_data); - nv = 0; - } - } - break; - } - - break; - default: - break; - } - } - - yaml_event_delete(&event); - } - - yaml_parser_delete(&parser); - - if (input) { - fclose(input); - } -#ifdef DEBUG_XML - if (xml) { - char *foo = switch_xml_toxml(xml, SWITCH_FALSE); - printf("%s\n", foo); - free(foo); - } -#endif - - return xml; - -} - -static switch_xml_t yaml_fetch(const char *section, - const char *tag_name, const char *key_name, const char *key_value, switch_event_t *params, void *user_data) -{ - char *path; - FILE *input; - switch_xml_t xml = NULL; - - path = switch_mprintf("%s/yaml/%s.yaml", SWITCH_GLOBAL_dirs.conf_dir, key_value); - if ((input = fopen(path, "r"))) { - xml = parse_file(input, key_value); - } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "cannot open %s\n", path); - } - - switch_safe_free(path); - return xml; -} - - -static switch_caller_extension_t *parse_dp(FILE * input, switch_core_session_t *session, switch_caller_profile_t *caller_profile) -{ - yaml_parser_t parser; - yaml_event_t event = { 0 }; - char *scalar_data; - int done = 0; - int depth = 0; - char name[128] = ""; - char value[128] = ""; - char category[128] = ""; - char *last_field = NULL; - int nv = 0; - switch_caller_extension_t *extension = NULL; - switch_channel_t *channel = switch_core_session_get_channel(session); - int context_hit = 0; - int proceed = 0; - switch_regex_t *re = NULL; - int ovector[30]; - int parens = 0; - - if (!caller_profile) { - if (!(caller_profile = switch_channel_get_caller_profile(channel))) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Obtaining Profile!\n"); - return NULL; - } - } - - if (!caller_profile->context) { - caller_profile->context = "default"; - } - - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Processing %s->%s@%s\n", - caller_profile->caller_id_name, caller_profile->destination_number, caller_profile->context); - - yaml_parser_initialize(&parser); - yaml_parser_set_input_file(&parser, input); - - while (!done) { - if (!yaml_parser_parse(&parser, &event)) { - print_error(&parser); - break; - } else { - switch (event.type) { - case YAML_MAPPING_START_EVENT: - depth++; - break; - case YAML_MAPPING_END_EVENT: - depth--; - break; - case YAML_STREAM_END_EVENT: - done = 1; - break; - case YAML_SCALAR_EVENT: - scalar_data = (char *) event.data.scalar.value; - switch (depth) { - case 1: - switch_set_string(category, scalar_data); - context_hit = (!strcasecmp(category, caller_profile->context)); - nv = 0; - break; - case 2: - if (context_hit) { - char *field = switch_core_session_strdup(session, scalar_data); - char *p, *e, *expression = NULL, *field_expanded = NULL, *expression_expanded = NULL; - const char *field_data = NULL; - - parens = 0; - proceed = 0; - switch_regex_safe_free(re); - - if ((p = strstr(field, "=~"))) { - *p = '\0'; - e = p - 1; - while (*e == ' ') { - *e-- = '\0'; - } - e = p + 2; - while (*e == ' ') { - *e++ = '\0'; - } - expression = e; - } - - if (field && expression) { - if ((expression_expanded = switch_channel_expand_variables(channel, expression)) == expression) { - expression_expanded = NULL; - } else { - expression = expression_expanded; - } - - if (strchr(field, '$')) { - if ((field_expanded = switch_channel_expand_variables(channel, field)) == field) { - field_expanded = NULL; - field_data = field; - } else { - field_data = field_expanded; - } - } else { - field_data = switch_caller_get_field_by_name(caller_profile, field); - } - if (!field_data) { - field_data = ""; - } - switch_safe_free(last_field); - last_field = strdup(field_data); - - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "test conditions %s(%s) =~ /%s/\n", field, field_data, expression); - if (!(proceed = switch_regex_perform(field_data, expression, &re, ovector, sizeof(ovector) / sizeof(ovector[0])))) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Regex mismatch\n"); - } - - if (strchr(expression, '(')) { - parens++; - } - - switch_safe_free(field_expanded); - switch_safe_free(expression_expanded); - } - } - break; - case 3: - if (nv == 0) { - if (!strcasecmp(scalar_data, "exit")) { - yaml_event_delete(&event); - goto end; - } - switch_set_string(name, scalar_data); - nv++; - } else { - switch_set_string(value, scalar_data); - nv = 0; - if (proceed) { - uint32_t len = 0; - char *substituted = NULL; - char *app_data; - - - if (!extension) { - extension = switch_caller_extension_new(session, "YAML", caller_profile->destination_number); - switch_assert(extension); - } - - if (parens) { - len = (uint32_t) (strlen(value) + strlen(last_field) + 10) * proceed; - switch_zmalloc(substituted, len); - switch_perform_substitution(re, proceed, value, last_field, substituted, len, ovector); - app_data = substituted; - } else { - app_data = value; - } - - switch_caller_extension_add_application(session, extension, name, app_data); - switch_safe_free(substituted); - } - } - break; - } - - break; - default: - break; - } - } - - yaml_event_delete(&event); - } - - end: - - switch_safe_free(last_field); - switch_regex_safe_free(re); - yaml_parser_delete(&parser); - - if (input) { - fclose(input); - } -#ifdef DEBUG_XML - if (xml) { - char *foo = switch_xml_toxml(xml, SWITCH_FALSE); - printf("%s\n", foo); - free(foo); - } -#endif - - return extension; - -} - -SWITCH_STANDARD_DIALPLAN(yaml_dialplan_hunt) -{ - switch_caller_extension_t *extension = NULL; - char *alt_path = (char *) arg; - char *path = NULL; - FILE *input; - - if (!zstr(alt_path)) { - path = strdup(alt_path); - } else { - path = switch_mprintf("%s/yaml/extensions.yaml", SWITCH_GLOBAL_dirs.conf_dir); - } - - if ((input = fopen(path, "r"))) { - extension = parse_dp(input, session, caller_profile); - } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error opening %s\n", path); - } - - switch_safe_free(path); - return extension; -} - - -static switch_status_t do_config(void) -{ - yaml_parser_t parser; - yaml_event_t event = { 0 }; - char *path; - const char *cfg = "mod_yaml.yaml"; - FILE *input; - switch_status_t status = SWITCH_STATUS_FALSE; - char *scalar_data; - int done = 0; - int depth = 0; - char name[128] = ""; - char value[128] = ""; - char category[128] = ""; - int nv = 0; - - path = switch_mprintf("%s/yaml/%s", SWITCH_GLOBAL_dirs.conf_dir, cfg); - - if (!(input = fopen(path, "r"))) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error opening %s\n", path); - goto end; - } - - yaml_parser_initialize(&parser); - yaml_parser_set_input_file(&parser, input); - - while (!done) { - if (!yaml_parser_parse(&parser, &event)) { - print_error(&parser); - break; - } else { - switch (event.type) { - case YAML_MAPPING_START_EVENT: - depth++; - break; - case YAML_MAPPING_END_EVENT: - depth--; - break; - case YAML_STREAM_END_EVENT: - done = 1; - break; - case YAML_SCALAR_EVENT: - scalar_data = (char *) event.data.scalar.value; - switch (depth) { - case 1: - switch_set_string(category, scalar_data); - nv = 0; - break; - case 2: - if (nv == 0) { - switch_set_string(name, scalar_data); - nv++; - } else { - switch_set_string(value, scalar_data); - if (!strcasecmp(category, "settings")) { - if (!strcasecmp(name, "bind_config") && switch_true_buf(value)) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Binding To XML Config\n"); - switch_xml_bind_search_function(yaml_fetch, switch_xml_parse_section_string("config"), NULL); - } - } - nv = 0; - } - break; - } - - break; - default: - break; - } - } - - yaml_event_delete(&event); - } - - yaml_parser_delete(&parser); - status = SWITCH_STATUS_SUCCESS; - - end: - - if (input) { - fclose(input); - } - - switch_safe_free(path); - - return status; - -} - -SWITCH_MODULE_LOAD_FUNCTION(mod_yaml_load) -{ - switch_dialplan_interface_t *dp_interface; - - /* connect my internal structure to the blank pointer passed to me */ - *module_interface = switch_loadable_module_create_module_interface(pool, modname); - - if (do_config() != SWITCH_STATUS_SUCCESS) { - return SWITCH_STATUS_TERM; - } - - SWITCH_ADD_DIALPLAN(dp_interface, "YAML", yaml_dialplan_hunt); - - /* indicate that the module should continue to be loaded */ - return SWITCH_STATUS_SUCCESS; -} - - -/* For Emacs: - * Local Variables: - * mode:c - * indent-tabs-mode:t - * tab-width:4 - * c-basic-offset:4 - * End: - * For VIM: - * vim:set softtabstop=4 shiftwidth=4 tabstop=4 noet: - */