diff --git a/.gitignore b/.gitignore index 2d0effae96..1df535d36c 100644 --- a/.gitignore +++ b/.gitignore @@ -145,7 +145,6 @@ Release/ /src/mod/applications/mod_nibblebill/Makefile /src/mod/applications/mod_osp/Makefile /src/mod/applications/mod_osp/Makefile.in -/src/mod/applications/mod_rss/Makefile /src/mod/applications/mod_snipe_hunt/Makefile /src/mod/applications/mod_test/test/Makefile /src/mod/applications/mod_test/test/Makefile.in diff --git a/Freeswitch.2017.sln b/Freeswitch.2017.sln index 764bd54daa..c021c7c855 100644 --- a/Freeswitch.2017.sln +++ b/Freeswitch.2017.sln @@ -79,7 +79,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "autoload_configs", "autoloa conf\vanilla\autoload_configs\logfile.conf.xml = conf\vanilla\autoload_configs\logfile.conf.xml conf\vanilla\autoload_configs\modules.conf.xml = conf\vanilla\autoload_configs\modules.conf.xml conf\vanilla\autoload_configs\openmrcp.conf.xml = conf\vanilla\autoload_configs\openmrcp.conf.xml - conf\vanilla\autoload_configs\rss.conf.xml = conf\vanilla\autoload_configs\rss.conf.xml conf\vanilla\autoload_configs\sofia.conf.xml = conf\vanilla\autoload_configs\sofia.conf.xml conf\vanilla\autoload_configs\switch.conf.xml = conf\vanilla\autoload_configs\switch.conf.xml conf\vanilla\autoload_configs\syslog.conf.xml = conf\vanilla\autoload_configs\syslog.conf.xml @@ -199,8 +198,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xml_rpc", "src\mod\xml_ {BED7539C-0099-4A14-AD5D-30828F15A171} = {BED7539C-0099-4A14-AD5D-30828F15A171} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_rss", "src\mod\applications\mod_rss\mod_rss.2017.vcxproj", "{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_conference", "src\mod\applications\mod_conference\mod_conference.2017.vcxproj", "{C24FB505-05D7-4319-8485-7540B44C8603}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dptools", "src\mod\applications\mod_dptools\mod_dptools.2017.vcxproj", "{B5881A85-FE70-4F64-8607-2CAAE52669C6}" @@ -716,17 +713,6 @@ Global {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Win32.Build.0 = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|x64.ActiveCfg = Release|x64 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|x64.Build.0 = Release|x64 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|Win32.ActiveCfg = Release|x64 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|x64.ActiveCfg = Release|x64 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|x64.Build.0 = Release|x64 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Win32.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Win32.Build.0 = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|x64.ActiveCfg = Debug|x64 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|x64.Build.0 = Debug|x64 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Win32.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Win32.Build.0 = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|x64.ActiveCfg = Release|x64 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|x64.Build.0 = Release|x64 {C24FB505-05D7-4319-8485-7540B44C8603}.All|Win32.ActiveCfg = Release|x64 {C24FB505-05D7-4319-8485-7540B44C8603}.All|x64.ActiveCfg = Release|x64 {C24FB505-05D7-4319-8485-7540B44C8603}.All|x64.Build.0 = Release|x64 @@ -2467,7 +2453,6 @@ Global {30A5B29C-983E-4580-9FD0-D647CCDCC7EB} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} {1C453396-D912-4213-89FD-9B489162B7B5} = {A7AB4405-FDB7-4853-9FBB-1516B1C3D80A} {CBEC7225-0C21-4DA8-978E-1F158F8AD950} = {F69A4A6B-9360-4EBB-A280-22AA3C455AC5} - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} {C24FB505-05D7-4319-8485-7540B44C8603} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} {B5881A85-FE70-4F64-8607-2CAAE52669C6} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} {05515420-16DE-4E63-BE73-85BE85BA5142} = {9ADF1E48-2F5C-4ED7-A893-596259FABFE0} diff --git a/build/modules.conf.in b/build/modules.conf.in index e3d752bdbb..da1ae46552 100755 --- a/build/modules.conf.in +++ b/build/modules.conf.in @@ -34,7 +34,6 @@ applications/mod_httapi #applications/mod_prefix #applications/mod_rad_auth #applications/mod_redis -#applications/mod_rss applications/mod_signalwire applications/mod_sms #applications/mod_snapshot diff --git a/build/modules.conf.most b/build/modules.conf.most index 9ab256e24a..18823a0386 100755 --- a/build/modules.conf.most +++ b/build/modules.conf.most @@ -34,7 +34,6 @@ applications/mod_oreka applications/mod_prefix #applications/mod_rad_auth applications/mod_redis -applications/mod_rss applications/mod_signalwire applications/mod_sms applications/mod_snapshot diff --git a/conf/curl/autoload_configs/rss.conf.xml b/conf/curl/autoload_configs/rss.conf.xml deleted file mode 100644 index f8c4f6d2b4..0000000000 --- a/conf/curl/autoload_configs/rss.conf.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/conf/insideout/autoload_configs/modules.conf.xml b/conf/insideout/autoload_configs/modules.conf.xml index 62d7f31b48..9290d072b5 100755 --- a/conf/insideout/autoload_configs/modules.conf.xml +++ b/conf/insideout/autoload_configs/modules.conf.xml @@ -85,7 +85,6 @@ - diff --git a/conf/insideout/autoload_configs/rss.conf.xml b/conf/insideout/autoload_configs/rss.conf.xml deleted file mode 100644 index f8c4f6d2b4..0000000000 --- a/conf/insideout/autoload_configs/rss.conf.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/conf/vanilla/autoload_configs/modules.conf.xml b/conf/vanilla/autoload_configs/modules.conf.xml index 8bdf873a76..0c3c99c710 100755 --- a/conf/vanilla/autoload_configs/modules.conf.xml +++ b/conf/vanilla/autoload_configs/modules.conf.xml @@ -120,7 +120,6 @@ - diff --git a/conf/vanilla/autoload_configs/rss.conf.xml b/conf/vanilla/autoload_configs/rss.conf.xml deleted file mode 100644 index f8c4f6d2b4..0000000000 --- a/conf/vanilla/autoload_configs/rss.conf.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/configure.ac b/configure.ac index 89ed163568..4b252ce07b 100755 --- a/configure.ac +++ b/configure.ac @@ -2121,7 +2121,6 @@ AC_CONFIG_FILES([Makefile src/mod/applications/mod_rad_auth/Makefile src/mod/applications/mod_random/Makefile src/mod/applications/mod_redis/Makefile - src/mod/applications/mod_rss/Makefile src/mod/applications/mod_skel/Makefile src/mod/applications/mod_signalwire/Makefile src/mod/applications/mod_sms/Makefile diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index eacc07ce7b..6c0ea0b7b7 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -540,7 +540,6 @@ Recommends: freeswitch-mod-oreka (= \${binary:Version}), freeswitch-mod-pgsql (= \${binary:Version}), freeswitch-mod-redis (= \${binary:Version}), - freeswitch-mod-rss (= \${binary:Version}), freeswitch-mod-sms (= \${binary:Version}), freeswitch-mod-snapshot (= \${binary:Version}), freeswitch-mod-spandsp (= \${binary:Version}), @@ -624,7 +623,6 @@ Depends: \${misc:Depends}, freeswitch (= \${binary:Version}), freeswitch-mod-pgsql (= \${binary:Version}), freeswitch-mod-png (= \${binary:Version}), freeswitch-mod-redis (= \${binary:Version}), - freeswitch-mod-rss (= \${binary:Version}), freeswitch-mod-signalwire (= \${binary:Version}), freeswitch-mod-shout (= \${binary:Version}), freeswitch-mod-sms (= \${binary:Version}), @@ -849,7 +847,6 @@ Depends: \${misc:Depends}, freeswitch (= \${binary:Version}), freeswitch-mod-pgsql-dbg (= \${binary:Version}), freeswitch-mod-png-dbg (= \${binary:Version}), freeswitch-mod-redis-dbg (= \${binary:Version}), - freeswitch-mod-rss-dbg (= \${binary:Version}), freeswitch-mod-sms-dbg (= \${binary:Version}), freeswitch-mod-snapshot-dbg (= \${binary:Version}), freeswitch-mod-spandsp-dbg (= \${binary:Version}), diff --git a/debian/control-modules b/debian/control-modules index b20538ee1c..d44af60e36 100755 --- a/debian/control-modules +++ b/debian/control-modules @@ -178,10 +178,6 @@ Description: Redis limit backend This module provides a mechanism to use Redis as a backend data store. -Module: applications/mod_rss -Description: RSS browser - This module provides an RSS browser. - Module: applications/mod_skel Description: Adds mod_skel Adds mod_skel. diff --git a/freeswitch.spec b/freeswitch.spec index 2c0a001677..1844c37ecf 100755 --- a/freeswitch.spec +++ b/freeswitch.spec @@ -468,15 +468,6 @@ Requires: %{name} = %{version}-%{release} Provides FreeSWITCH mod_redis, access to the redis key value pair db system from FreeSWITCH -%package application-rss -Summary: FreeSWITCH mod_rss -Group: System/Libraries -Requires: %{name} = %{version}-%{release} - -%description application-rss -Provides FreeSWITCH mod_rss, edisrse and read an XML based RSS feed, then read -the entries aloud via a TTS engine - %package application-signalwire Summary: FreeSWITCH mod_signalwire Group: System/Libraries @@ -1191,7 +1182,6 @@ Requires: freeswitch-application-limit Requires: freeswitch-application-memcache Requires: freeswitch-application-nibblebill Requires: freeswitch-application-redis -Requires: freeswitch-application-rss Requires: freeswitch-application-signalwire Requires: freeswitch-application-sms Requires: freeswitch-application-snapshot @@ -1271,7 +1261,7 @@ APPLICATION_MODULES_DE+="applications/mod_esl" APPLICATION_MODULES_FR="applications/mod_fifo applications/mod_fsk applications/mod_fsv applications/mod_hash \ applications/mod_httapi applications/mod_http_cache applications/mod_lcr applications/mod_limit \ applications/mod_memcache applications/mod_mongo applications/mod_nibblebill applications/mod_rad_auth \ - applications/mod_redis applications/mod_rss " + applications/mod_redis " APPLICATION_MODULES_SZ="applications/mod_signalwire applications/mod_sms applications/mod_snapshot \ applications/mod_spandsp applications/mod_spy \ @@ -1769,7 +1759,6 @@ fi %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/pre_load_modules.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/presence_map.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/redis.conf.xml -%config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/rss.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/rtmp.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/shout.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/signalwire.conf.xml @@ -1925,9 +1914,6 @@ fi %files application-redis %{MODINSTDIR}/mod_redis.so* -%files application-rss -%{MODINSTDIR}/mod_rss.so* - %files application-signalwire %{MODINSTDIR}/mod_signalwire.so* diff --git a/src/mod/applications/mod_rss/Makefile.am b/src/mod/applications/mod_rss/Makefile.am deleted file mode 100644 index 718ea0d0eb..0000000000 --- a/src/mod/applications/mod_rss/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ -include $(top_srcdir)/build/modmake.rulesam -MODNAME=mod_rss - -mod_LTLIBRARIES = mod_rss.la -mod_rss_la_SOURCES = mod_rss.c -mod_rss_la_CFLAGS = $(AM_CFLAGS) -mod_rss_la_LIBADD = $(switch_builddir)/libfreeswitch.la -mod_rss_la_LDFLAGS = -avoid-version -module -no-undefined -shared diff --git a/src/mod/applications/mod_rss/conf/autoload_configs/rss.conf.xml b/src/mod/applications/mod_rss/conf/autoload_configs/rss.conf.xml deleted file mode 100644 index f8c4f6d2b4..0000000000 --- a/src/mod/applications/mod_rss/conf/autoload_configs/rss.conf.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/mod/applications/mod_rss/conf/dialplan/rss.xml b/src/mod/applications/mod_rss/conf/dialplan/rss.xml deleted file mode 100644 index 3cd2b17567..0000000000 --- a/src/mod/applications/mod_rss/conf/dialplan/rss.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/mod/applications/mod_rss/mod_rss.2017.vcxproj b/src/mod/applications/mod_rss/mod_rss.2017.vcxproj deleted file mode 100644 index 5e121057c2..0000000000 --- a/src/mod/applications/mod_rss/mod_rss.2017.vcxproj +++ /dev/null @@ -1,141 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - mod_rss - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4} - mod_rss - Win32Proj - - - - DynamicLibrary - MultiByte - $(DefaultPlatformToolset) - - - DynamicLibrary - MultiByte - $(DefaultPlatformToolset) - - - DynamicLibrary - MultiByte - $(DefaultPlatformToolset) - - - DynamicLibrary - MultiByte - $(DefaultPlatformToolset) - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - - - - WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;%(PreprocessorDefinitions) - - - - - false - - - - - - - X64 - - - WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;%(PreprocessorDefinitions) - - - - - false - - - MachineX64 - - - - - - - - - false - - - - - - - X64 - - - - - - - false - - - MachineX64 - - - - - - - - {f6c55d93-b927-4483-bb69-15aef3dd2dff} - false - - - {202d7a4e-760d-4d0e-afa1-d7459ced30ff} - false - - - - - - \ No newline at end of file diff --git a/src/mod/applications/mod_rss/mod_rss.c b/src/mod/applications/mod_rss/mod_rss.c deleted file mode 100644 index 16cd35412b..0000000000 --- a/src/mod/applications/mod_rss/mod_rss.c +++ /dev/null @@ -1,649 +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 - * Bret McDanel - * - * - * mod_rss.c -- RSS Browser - * - */ -#include - -SWITCH_MODULE_LOAD_FUNCTION(mod_rss_load); -SWITCH_MODULE_DEFINITION(mod_rss, mod_rss_load, NULL, NULL); - -typedef enum { - SFLAG_INSTRUCT = (1 << 0), - SFLAG_INFO = (1 << 1), - SFLAG_MAIN = (1 << 2) -} SFLAGS; - -/* helper object */ -struct dtmf_buffer { - int32_t index; - uint32_t flags; - int32_t speed; - char voice[80]; - switch_speech_handle_t *sh; -}; - -#define TTS_MEAN_SPEED 170 -#define TTS_MAX_ENTRIES 99 -#define TTS_DEFAULT_ENGINE "flite" -#define TTS_DEFAULT_VOICE "slt" - -#define MATCH_COUNT - -struct rss_entry { - uint8_t inuse; - char *title_txt; - char *description_txt; - char *subject_txt; - char *dept_txt; -}; - -#ifdef MATCH_COUNT -static uint32_t match_count(char *str, uint32_t max) -{ - char tstr[80] = ""; - uint32_t matches = 0, x = 0; - uint32_t len = (uint32_t) strlen(str); - - for (x = 0; x < max; x++) { - switch_snprintf(tstr, sizeof(tstr), "%u", x); - if (!strncasecmp(str, tstr, len)) { - matches++; - } - } - return matches; -} -#endif - - -/* - dtmf handler function you can hook up to be executed when a digit is dialed during playback - if you return anything but SWITCH_STATUS_SUCCESS the playback will stop. -*/ -static switch_status_t on_dtmf(switch_core_session_t *session, void *input, switch_input_type_t itype, void *buf, unsigned int buflen) -{ - switch (itype) { - case SWITCH_INPUT_TYPE_DTMF:{ - switch_dtmf_t *dtmf = (switch_dtmf_t *) input; - struct dtmf_buffer *dtb; - dtb = (struct dtmf_buffer *) buf; - - switch (dtmf->digit) { - case '#': - switch_set_flag(dtb, SFLAG_MAIN); - return SWITCH_STATUS_BREAK; - case '6': - dtb->index++; - return SWITCH_STATUS_BREAK; - case '4': - dtb->index--; - return SWITCH_STATUS_BREAK; - case '*': - if (switch_test_flag(dtb->sh, SWITCH_SPEECH_FLAG_PAUSE)) { - switch_clear_flag(dtb->sh, SWITCH_SPEECH_FLAG_PAUSE); - } else { - switch_set_flag(dtb->sh, SWITCH_SPEECH_FLAG_PAUSE); - } - break; - case '5': - switch_core_speech_text_param_tts(dtb->sh, "voice", "next"); - switch_set_flag(dtb, SFLAG_INFO); - return SWITCH_STATUS_BREAK; - case '9': - switch_core_speech_text_param_tts(dtb->sh, "voice", dtb->voice); - switch_set_flag(dtb, SFLAG_INFO); - return SWITCH_STATUS_BREAK; - case '2': - if (dtb->speed < 260) { - dtb->speed += 30; - switch_core_speech_numeric_param_tts(dtb->sh, "speech/rate", dtb->speed); - switch_set_flag(dtb, SFLAG_INFO); - return SWITCH_STATUS_BREAK; - } - break; - case '7': - dtb->speed = TTS_MEAN_SPEED; - switch_core_speech_numeric_param_tts(dtb->sh, "speech/rate", dtb->speed); - switch_set_flag(dtb, SFLAG_INFO); - return SWITCH_STATUS_BREAK; - case '8': - if (dtb->speed > 80) { - dtb->speed -= 30; - switch_core_speech_numeric_param_tts(dtb->sh, "speech/rate", dtb->speed); - switch_set_flag(dtb, SFLAG_INFO); - return SWITCH_STATUS_BREAK; - } - break; - case '0': - switch_set_flag(dtb, SFLAG_INSTRUCT); - return SWITCH_STATUS_BREAK; - } - } - break; - default: - break; - } - return SWITCH_STATUS_SUCCESS; -} - -SWITCH_STANDARD_APP(rss_function) -{ - switch_channel_t *channel = switch_core_session_get_channel(session); - switch_status_t status; - const char *err = NULL; - struct dtmf_buffer dtb = { 0 }; - switch_xml_t xml = NULL, item, xchannel = NULL; - struct rss_entry entries[TTS_MAX_ENTRIES] = { {0} }; - uint32_t i = 0; - char *title_txt = "", *description_txt = "", *rights_txt = ""; - switch_codec_t speech_codec; - char *engine = TTS_DEFAULT_ENGINE; - char *voice = TTS_DEFAULT_VOICE; - char *timer_name = NULL; - switch_speech_handle_t sh; - switch_speech_flag_t flags = SWITCH_SPEECH_FLAG_NONE; - switch_timer_t timer = { 0 }, *timerp = NULL; - uint32_t last; - char *mydata = NULL; - char *filename = NULL; - char *argv[3], *feed_list[TTS_MAX_ENTRIES] = { 0 }, *feed_names[TTS_MAX_ENTRIES] = { - 0}; - int feed_index = 0; - const char *cf = "rss.conf"; - switch_xml_t cfg, cxml, feeds, feed; - char buf[1024] = ""; - int32_t jumpto = -1; - uint32_t matches = 0; - switch_input_args_t args = { 0 }; - const char *vcf = NULL; - char *chanvars = switch_channel_build_param_string(channel, NULL, NULL); - switch_codec_implementation_t read_impl = { 0 }; - uint32_t rate, interval, channels; - switch_core_session_get_read_impl(session, &read_impl); - interval = read_impl.microseconds_per_packet / 1000; - - if ((vcf = switch_channel_get_variable(channel, "rss_alt_config"))) { - cf = vcf; - } - - if (!(cxml = switch_xml_open_cfg(cf, &cfg, NULL))) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Open of %s failed\n", cf); - return; - } - switch_safe_free(chanvars); - - if ((feeds = switch_xml_child(cfg, "feeds"))) { - for (feed = switch_xml_child(feeds, "feed"); feed; feed = feed->next) { - char *name = (char *) switch_xml_attr_soft(feed, "name"); - char *expanded = NULL; - char *idx = feed->txt; - - if ((expanded = switch_channel_expand_variables(channel, idx)) == idx) { - expanded = NULL; - } else { - idx = expanded; - } - - if (!name) { - name = "Error No Name."; - } - - feed_list[feed_index] = switch_core_session_strdup(session, idx); - switch_safe_free(expanded); - - if ((expanded = switch_channel_expand_variables(channel, name)) == name) { - expanded = NULL; - } else { - name = expanded; - } - feed_names[feed_index] = switch_core_session_strdup(session, name); - switch_safe_free(expanded); - feed_index++; - - } - } - - switch_xml_free(cxml); - - switch_channel_answer(channel); - - if (!zstr(data)) { - if ((mydata = switch_core_session_strdup(session, data))) { - switch_separate_string(mydata, ' ', argv, sizeof(argv) / sizeof(argv[0])); - - if (argv[0]) { - engine = argv[0]; - if (argv[1]) { - voice = argv[1]; - if (argv[2]) { - jumpto = atoi(argv[2]); - } - } - } - } - } - - if (!feed_index) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "No Feeds Specified!\n"); - return; - } - - if (switch_channel_media_ready(channel)) { - rate = read_impl.actual_samples_per_second; - channels = read_impl.number_of_channels; - } else { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "Codec Error!\n"); - return; - } - - memset(&sh, 0, sizeof(sh)); - if (switch_core_speech_open(&sh, engine, voice, rate, interval, channels, &flags, switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Invalid TTS module!\n"); - return; - } - - if (switch_core_codec_init(&speech_codec, - "L16", - NULL, - NULL, - (int) rate, - interval, - 1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL, - switch_core_session_get_pool(session)) == SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Raw Codec Activated\n"); - } else { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Raw Codec Activation Failed L16@%uhz 1 channel %dms\n", rate, interval); - flags = 0; - switch_core_speech_close(&sh, &flags); - return; - } - - if (timer_name) { - if (switch_core_timer_init(&timer, timer_name, interval, (int) (rate / 50), switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Setup timer failed!\n"); - switch_core_codec_destroy(&speech_codec); - flags = 0; - switch_core_speech_close(&sh, &flags); - return; - } - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Setup timer success %u bytes per %d ms!\n", (rate / 50) * 2, interval); - - /* start a thread to absorb incoming audio */ - switch_core_service_session(session); - timerp = &timer; - } - - while (switch_channel_ready(channel)) { - int32_t len = 0, idx = 0; - char cmd[3]; - main_menu: - filename = NULL; - len = 0; - *cmd = '\0'; - title_txt = description_txt = rights_txt = ""; - - if (jumpto > -1) { - switch_snprintf(cmd, sizeof(cmd), "%d", jumpto); - jumpto = -1; - } else { - switch_core_speech_flush_tts(&sh); - switch_ivr_sleep(session, 500, SWITCH_FALSE, NULL); - -#ifdef MATCH_COUNT - switch_snprintf(buf + len, sizeof(buf) - len, "%s", - ", Main Menu." - "Select one of the following news sources, or press 0 to exit. "); -#else - switch_snprintf(buf + len, sizeof(buf) - len, "%s", - ",Main Menu. " - "Select one of the following news sources, followed by the pound key or press 0 to exit. "); -#endif - len = (int32_t) strlen(buf); - - for (idx = 0; idx < feed_index; idx++) { - switch_snprintf(buf + len, sizeof(buf) - len, "%d: %s. />", idx + 1, feed_names[idx]); - len = (int32_t) strlen(buf); - } - - args.input_callback = NULL; - args.buf = cmd; - args.buflen = sizeof(cmd); - status = switch_ivr_speak_text_handle(session, &sh, &speech_codec, timerp, buf, &args); - if (status != SWITCH_STATUS_SUCCESS && status != SWITCH_STATUS_BREAK) { - goto finished; - } - } - if (*cmd != '\0') { - int32_t x; - char *p; - - if (strchr(cmd, '0')) { - break; - } - - if ((p = strchr(cmd, '#'))) { - *p = '\0'; -#ifdef MATCH_COUNT - /* Hmmm... I know there are no more matches so I don't *need* them to press pound but - I already told them to press it. Will this confuse people or not? Let's make em press - pound unless this define is enabled for now. - */ - } else if (match_count(cmd, feed_index) > 1) { -#else - } else { -#endif - char term; - char *cp; - switch_size_t blen = sizeof(cmd) - strlen(cmd); - - cp = cmd + blen; - switch_ivr_collect_digits_count(session, cp, blen, blen, "#", &term, 5000, 0, 0); - } - - x = atoi(cmd) - 1; - - if (x > -1 && x < feed_index) { - filename = feed_list[x]; - } else if (matches > 1) { - - } else { - args.input_callback = NULL; - args.buf = NULL; - args.buflen = 0; - status = switch_ivr_speak_text_handle(session, &sh, &speech_codec, timerp, "I'm sorry. That is an Invalid Selection. ", &args); - if (status != SWITCH_STATUS_SUCCESS && status != SWITCH_STATUS_BREAK) { - goto finished; - } - } - } - - if (!filename) { - continue; - } - - if (!(xml = switch_xml_parse_file(filename))) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Open of %s failed\n", filename); - goto finished; - } - - err = switch_xml_error(xml); - - if (!zstr(err)) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "Error [%s]\n", err); - goto finished; - } - - if ((xchannel = switch_xml_child(xml, "channel"))) { - switch_xml_t title, description, rights; - - if ((title = switch_xml_child(xchannel, "title"))) { - title_txt = title->txt; - } - - if ((description = switch_xml_child(xchannel, "description"))) { - description_txt = description->txt; - } - - if ((rights = switch_xml_child(xchannel, "dc:rights"))) { - rights_txt = rights->txt; - } - } - - - if (!(item = switch_xml_child(xml, "item"))) { - if (xchannel) { - item = switch_xml_child(xchannel, "item"); - } - } - - memset(entries, 0, sizeof(entries)); - - for (i = 0; item; item = item->next) { - switch_xml_t title, description, subject, dept; - char *p; - - entries[i].inuse = 1; - entries[i].title_txt = NULL; - entries[i].description_txt = NULL; - entries[i].subject_txt = NULL; - entries[i].dept_txt = NULL; - - if ((title = switch_xml_child(item, "title"))) { - entries[i].title_txt = title->txt; - } - - if ((description = switch_xml_child(item, "description"))) { - char *t, *e; - entries[i].description_txt = description->txt; - for (;;) { - if (!(t = strchr(entries[i].description_txt, '<'))) { - break; - } - if (!(e = strchr(t, '>'))) { - break; - } - - memset(t, 32, ++e - t); - } - } - - if ((subject = switch_xml_child(item, "dc:subject"))) { - entries[i].subject_txt = subject->txt; - } - - if ((dept = switch_xml_child(item, "slash:department"))) { - entries[i].dept_txt = dept->txt; - } - - if (entries[i].description_txt && (p = strchr(entries[i].description_txt, '<'))) { - *p = '\0'; - } -#ifdef _STRIP_SOME_CHARS_ - for (p = entries[i].description_txt; *p; p++) { - if (*p == '\'' || *p == '"' || *p == ':') { - *p = ' '; - } - } -#endif - i++; - } - - if (switch_channel_ready(channel)) { - switch_time_exp_t tm; - char date[80] = ""; - switch_size_t retsize; - char dtmf[5] = ""; - - switch_time_exp_lt(&tm, switch_micro_time_now()); - switch_strftime_nocheck(date, &retsize, sizeof(date), "%I:%M %p", &tm); - - switch_ivr_sleep(session, 500, SWITCH_FALSE, NULL); - - switch_snprintf(buf, sizeof(buf), - ",%s. %s. %s. local time: %s, Press 0 for options, 5 to change voice, or pound to return to the main menu. ", - title_txt, description_txt, rights_txt, date); - args.input_callback = NULL; - args.buf = dtmf; - args.buflen = sizeof(dtmf); - status = switch_ivr_speak_text_handle(session, &sh, &speech_codec, timerp, buf, &args); - if (status != SWITCH_STATUS_SUCCESS && status != SWITCH_STATUS_BREAK) { - goto finished; - } - if (*dtmf != '\0') { - switch (*dtmf) { - case '0': - switch_set_flag(&dtb, SFLAG_INSTRUCT); - break; - case '#': - goto main_menu; - } - } - } - - for (last = 0; last < TTS_MAX_ENTRIES; last++) { - if (!entries[last].inuse) { - last--; - break; - } - } - - dtb.index = 0; - dtb.sh = &sh; - dtb.speed = TTS_MEAN_SPEED; - //switch_set_flag(&dtb, SFLAG_INFO); - switch_copy_string(dtb.voice, voice, sizeof(dtb.voice)); - while (entries[0].inuse && switch_channel_ready(channel)) { - while (switch_channel_ready(channel)) { - uint8_t cont = 0; - - if (dtb.index >= TTS_MAX_ENTRIES) { - dtb.index = 0; - } - if (dtb.index < 0) { - dtb.index = last; - } - - if (!entries[dtb.index].inuse) { - dtb.index = 0; - continue; - } - if (switch_channel_ready(channel)) { - char tmpbuf[1024] = ""; - uint32_t tmplen = 0; - - if (switch_test_flag(&dtb, SFLAG_MAIN)) { - switch_clear_flag(&dtb, SFLAG_MAIN); - goto main_menu; - } - if (switch_test_flag(&dtb, SFLAG_INFO)) { - switch_clear_flag(&dtb, SFLAG_INFO); - switch_snprintf(tmpbuf + tmplen, sizeof(tmpbuf) - tmplen, "%s %s. I am speaking at %u words per minute. ", sh.engine, sh.voice, - dtb.speed); - tmplen = (uint32_t) strlen(tmpbuf); - } - - if (switch_test_flag(&dtb, SFLAG_INSTRUCT)) { - switch_clear_flag(&dtb, SFLAG_INSTRUCT); - cont = 1; - switch_snprintf(tmpbuf + tmplen, sizeof(tmpbuf) - tmplen, "%s", - "Press star to pause or resume speech. " - "To go to the next item, press six. " - "To go back, press 4. " - "Press two to go faster, eight to slow down, or 7 to resume normal speed. " - "To change voices, press five. To restore the original voice press 9. " - "To hear these options again, press zero or press pound to return to the main menu. "); - } else { - switch_snprintf(tmpbuf + tmplen, sizeof(tmpbuf) - tmplen, "Story %d. ", dtb.index + 1); - tmplen = (uint32_t) strlen(tmpbuf); - - if (entries[dtb.index].subject_txt) { - switch_snprintf(tmpbuf + tmplen, sizeof(tmpbuf) - tmplen, "Subject: %s. ", entries[dtb.index].subject_txt); - tmplen = (uint32_t) strlen(tmpbuf); - } - - if (entries[dtb.index].dept_txt) { - switch_snprintf(tmpbuf + tmplen, sizeof(tmpbuf) - tmplen, "From the %s department. ", entries[dtb.index].dept_txt); - tmplen = (uint32_t) strlen(tmpbuf); - } - - if (entries[dtb.index].title_txt) { - switch_snprintf(tmpbuf + tmplen, sizeof(tmpbuf) - tmplen, "%s", entries[dtb.index].title_txt); - } - } - switch_core_speech_flush_tts(&sh); - args.input_callback = on_dtmf; - args.buf = &dtb; - args.buflen = sizeof(dtb); - status = switch_ivr_speak_text_handle(session, &sh, &speech_codec, timerp, tmpbuf, &args); - if (status == SWITCH_STATUS_BREAK) { - continue; - } else if (status != SWITCH_STATUS_SUCCESS) { - goto finished; - } - - if (cont) { - continue; - } - - if (entries[dtb.index].description_txt) { - args.input_callback = on_dtmf; - args.buf = &dtb; - args.buflen = sizeof(dtb); - status = switch_ivr_speak_text_handle(session, &sh, &speech_codec, timerp, entries[dtb.index].description_txt, &args); - } - if (status == SWITCH_STATUS_BREAK) { - continue; - } else if (status != SWITCH_STATUS_SUCCESS) { - goto finished; - } - } - - dtb.index++; - } - } - } - - finished: - switch_core_speech_close(&sh, &flags); - switch_core_codec_destroy(&speech_codec); - - if (timerp) { - /* End the audio absorbing thread */ - switch_core_thread_session_end(session); - switch_core_timer_destroy(&timer); - } - - switch_xml_free(xml); - switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE); -} - - -SWITCH_MODULE_LOAD_FUNCTION(mod_rss_load) -{ - switch_application_interface_t *app_interface; - - /* connect my internal structure to the blank pointer passed to me */ - *module_interface = switch_loadable_module_create_module_interface(pool, modname); - SWITCH_ADD_APP(app_interface, "rss", NULL, NULL, rss_function, NULL, SAF_NONE); - - /* 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: - */ diff --git a/src/mod/applications/mod_rss/script/news.js b/src/mod/applications/mod_rss/script/news.js deleted file mode 100644 index d6dea0dc29..0000000000 --- a/src/mod/applications/mod_rss/script/news.js +++ /dev/null @@ -1,12 +0,0 @@ -if (session.ready()) { - session.answer(); - session.speak("cepstral","David","Please wait while we refresh the RSS feeds.") - - fetchURLFile("http://weather.yahooapis.com/forecastrss?p=60610","rss/weather.rss"); - fetchURLFile("http://rss.news.yahoo.com/rss/topstories","rss/yahootop.rss"); - fetchURLFile("http://rss.news.yahoo.com/rss/science","rss/yahoosci.rss"); - fetchURLFile("http://rss.news.yahoo.com/rss/business","rss/yahoobus.rss"); - fetchURLFile("http://rss.news.yahoo.com/rss/entertainment","rss/yahooent.rss"); - fetchURLFile("http://rss.slashdot.org/Slashdot/slashdot","rss/slashdot.rss"); - fetchURLFile("http://www.freeswitch.org/xml.php","rss/freeswitch.rss"); -} diff --git a/w32/Setup/Setup.2017.wixproj b/w32/Setup/Setup.2017.wixproj index 0dfef658bb..fe6522bbc1 100644 --- a/w32/Setup/Setup.2017.wixproj +++ b/w32/Setup/Setup.2017.wixproj @@ -289,14 +289,6 @@ Binaries;Content;Satellites INSTALLFOLDER - - mod_rss - {b69247fa-ecd6-40ed-8e44-5ca6c3baf9a4} - True - True - Binaries;Content;Satellites - INSTALLFOLDER - mod_signalwire {b19ae6fc-bfff-428d-b483-3bbeaeccc618}