mirror of https://github.com/sipwise/sems.git
Don't bail out on missing config options, rather than using some invalid defaults. Also only check for existence of sound files in the places where they are needed for optimization purposes. Use macros to clean up redundant code. Change-Id: I9cd0e9b44e850bca509043d21ad2c3f8f60b8473changes/65/7165/2
parent
cd20d43797
commit
f40a8b932a
@ -0,0 +1,684 @@
|
||||
Index: sems/apps/sw_vsc/SW_Vsc.cpp
|
||||
===================================================================
|
||||
--- sems.orig/apps/sw_vsc/SW_Vsc.cpp 2016-07-21 12:55:32.091065992 +0200
|
||||
+++ sems/apps/sw_vsc/SW_Vsc.cpp 2016-07-21 13:22:56.987148286 +0200
|
||||
@@ -154,114 +154,102 @@
|
||||
if (m_patterns.audioPath[m_patterns.audioPath.length() - 1] != '/' )
|
||||
m_patterns.audioPath += "/";
|
||||
|
||||
+ // MT#20649: don't fail if announcements are missing;
|
||||
m_patterns.failAnnouncement = cfg.getParameter("error_announcement", "");
|
||||
if (m_patterns.failAnnouncement.empty())
|
||||
{
|
||||
- ERROR("ErrorAnnouncement file not set\n");
|
||||
- return -1;
|
||||
+ ERROR("error_announcement file not set\n");
|
||||
}
|
||||
m_patterns.unknownAnnouncement = cfg.getParameter("unknown_announcement", "");
|
||||
if (m_patterns.unknownAnnouncement.empty())
|
||||
{
|
||||
- ERROR("UnknownAnnouncement file not set\n");
|
||||
- return -1;
|
||||
+ ERROR("unknown_announcement file not set\n");
|
||||
}
|
||||
m_patterns.cfuOnAnnouncement = cfg.getParameter("cfu_on_announcement", "");
|
||||
if (m_patterns.cfuOnAnnouncement.empty())
|
||||
{
|
||||
- ERROR("CfuOnAnnouncement file not set\n");
|
||||
- return -1;
|
||||
+ ERROR("cfu_on_announcement file not set\n");
|
||||
}
|
||||
m_patterns.cfuOffAnnouncement = cfg.getParameter("cfu_off_announcement", "");
|
||||
if (m_patterns.cfuOffAnnouncement.empty())
|
||||
{
|
||||
- ERROR("CfuOffAnnouncement file not set\n");
|
||||
- return -1;
|
||||
+ ERROR("cfu_off_announcement file not set\n");
|
||||
}
|
||||
m_patterns.cfbOnAnnouncement = cfg.getParameter("cfb_on_announcement", "");
|
||||
if (m_patterns.cfbOnAnnouncement.empty())
|
||||
{
|
||||
- ERROR("CfbOnAnnouncement file not set\n");
|
||||
- return -1;
|
||||
+ ERROR("cfb_on_announcement file not set\n");
|
||||
}
|
||||
m_patterns.cfbOffAnnouncement = cfg.getParameter("cfb_off_announcement", "");
|
||||
if (m_patterns.cfbOffAnnouncement.empty())
|
||||
{
|
||||
- ERROR("CfbOffAnnouncement file not set\n");
|
||||
- return -1;
|
||||
+ ERROR("cfb_off_announcement file not set\n");
|
||||
}
|
||||
m_patterns.cftOnAnnouncement = cfg.getParameter("cft_on_announcement", "");
|
||||
if (m_patterns.cftOnAnnouncement.empty())
|
||||
{
|
||||
- ERROR("CftOnAnnouncement file not set\n");
|
||||
- return -1;
|
||||
+ ERROR("cft_on_announcement file not set\n");
|
||||
}
|
||||
m_patterns.cftOffAnnouncement = cfg.getParameter("cft_off_announcement", "");
|
||||
if (m_patterns.cftOffAnnouncement.empty())
|
||||
{
|
||||
- ERROR("CftOffAnnouncement file not set\n");
|
||||
- return -1;
|
||||
+ ERROR("cft_off_announcement file not set\n");
|
||||
}
|
||||
m_patterns.cfnaOnAnnouncement = cfg.getParameter("cfna_on_announcement", "");
|
||||
if (m_patterns.cfnaOnAnnouncement.empty())
|
||||
{
|
||||
- ERROR("CfnaOnAnnouncement file not set\n");
|
||||
- return -1;
|
||||
+ ERROR("cfna_on_announcement file not set\n");
|
||||
}
|
||||
m_patterns.cfnaOffAnnouncement = cfg.getParameter("cfna_off_announcement", "");
|
||||
if (m_patterns.cfnaOffAnnouncement.empty())
|
||||
{
|
||||
- ERROR("CfnaOffAnnouncement file not set\n");
|
||||
- return -1;
|
||||
+ ERROR("cfna_off_announcement file not set\n");
|
||||
}
|
||||
m_patterns.speedDialAnnouncement = cfg.getParameter("speed_dial_announcement", "");
|
||||
if (m_patterns.speedDialAnnouncement.empty())
|
||||
{
|
||||
- ERROR("SpeedDialAnnouncement file not set\n");
|
||||
- return -1;
|
||||
+ ERROR("speed_dial_announcement file not set\n");
|
||||
}
|
||||
m_patterns.reminderOnAnnouncement = cfg.getParameter("reminder_on_announcement", "");
|
||||
if (m_patterns.reminderOnAnnouncement.empty())
|
||||
{
|
||||
- ERROR("ReminderOnAnnouncement file not set\n");
|
||||
- return -1;
|
||||
+ ERROR("reminder_on_announcement file not set\n");
|
||||
}
|
||||
m_patterns.reminderOffAnnouncement = cfg.getParameter("reminder_off_announcement", "");
|
||||
if (m_patterns.reminderOffAnnouncement.empty())
|
||||
{
|
||||
- ERROR("ReminderOffAnnouncement file not set\n");
|
||||
- return -1;
|
||||
+ ERROR("reminder_off_announcement file not set\n");
|
||||
}
|
||||
m_patterns.blockinclirOnAnnouncement = cfg.getParameter("blockinclir_on_announcement", "");
|
||||
if (m_patterns.blockinclirOnAnnouncement.empty())
|
||||
{
|
||||
- ERROR("BlockinclirOnAnnouncement file not set\n");
|
||||
- return -1;
|
||||
+ ERROR("blockinclir_on_announcement file not set\n");
|
||||
}
|
||||
m_patterns.blockinclirOffAnnouncement = cfg.getParameter("blockinclir_off_announcement", "");
|
||||
if (m_patterns.blockinclirOffAnnouncement.empty())
|
||||
{
|
||||
- ERROR("BlockinclirOffAnnouncement file not set\n");
|
||||
- return -1;
|
||||
+ ERROR("blockinclir_off_announcement file not set\n");
|
||||
}
|
||||
|
||||
+ // We could set a default in cfg.getParameter, but we really want to log the error
|
||||
+ // if the pattern in question is not set:
|
||||
|
||||
m_patterns.voicemailNumber = cfg.getParameter("voicemail_number", "");
|
||||
if (m_patterns.voicemailNumber.empty())
|
||||
{
|
||||
- ERROR("voicemailNumber is empty\n");
|
||||
- return -1;
|
||||
+ ERROR("voicemail_number not set\n");
|
||||
+ m_patterns.voicemailNumber = "invalid_default_value";
|
||||
}
|
||||
|
||||
cfuOnPattern = cfg.getParameter("cfu_on_pattern", "");
|
||||
if (cfuOnPattern.empty())
|
||||
{
|
||||
- ERROR("CfuOnPattern is empty\n");
|
||||
- return -1;
|
||||
+ ERROR("cfu_on_pattern is empty\n");
|
||||
+ cfuOnPattern = "invalid_default_value";
|
||||
}
|
||||
if (regcomp(&m_patterns.cfuOnPattern, cfuOnPattern.c_str(), REG_EXTENDED | REG_NOSUB))
|
||||
{
|
||||
- ERROR("CfuOnPattern failed to compile ('%s'): %s\n",
|
||||
+ ERROR("cfu_on_pattern failed to compile ('%s'): %s\n",
|
||||
cfuOnPattern.c_str(),
|
||||
strerror(errno));
|
||||
return -1;
|
||||
@@ -270,12 +258,12 @@
|
||||
cfuOffPattern = cfg.getParameter("cfu_off_pattern", "");
|
||||
if (cfuOffPattern.empty())
|
||||
{
|
||||
- ERROR("CfuOffPattern is empty\n");
|
||||
- return -1;
|
||||
+ ERROR("cfu_off_pattern is empty\n");
|
||||
+ cfuOffPattern = "invalid_default_value";
|
||||
}
|
||||
if (regcomp(&m_patterns.cfuOffPattern, cfuOffPattern.c_str(), REG_EXTENDED | REG_NOSUB))
|
||||
{
|
||||
- ERROR("CfuOffPattern failed to compile ('%s'): %s\n",
|
||||
+ ERROR("cfu_off_pattern failed to compile ('%s'): %s\n",
|
||||
cfuOffPattern.c_str(),
|
||||
strerror(errno));
|
||||
return -1;
|
||||
@@ -284,12 +272,12 @@
|
||||
cfbOnPattern = cfg.getParameter("cfb_on_pattern", "");
|
||||
if (cfbOnPattern.empty())
|
||||
{
|
||||
- ERROR("CfbOnPattern is empty\n");
|
||||
- return -1;
|
||||
+ ERROR("cfb_on_pattern is empty\n");
|
||||
+ cfbOnPattern = "invalid_default_value";
|
||||
}
|
||||
if (regcomp(&m_patterns.cfbOnPattern, cfbOnPattern.c_str(), REG_EXTENDED | REG_NOSUB))
|
||||
{
|
||||
- ERROR("CfbOnPattern failed to compile ('%s'): %s\n",
|
||||
+ ERROR("cfb_on_pattern failed to compile ('%s'): %s\n",
|
||||
cfbOnPattern.c_str(),
|
||||
strerror(errno));
|
||||
return -1;
|
||||
@@ -298,27 +286,26 @@
|
||||
cfbOffPattern = cfg.getParameter("cfb_off_pattern", "");
|
||||
if (cfbOffPattern.empty())
|
||||
{
|
||||
- ERROR("CfbOffPattern is empty\n");
|
||||
- return -1;
|
||||
+ ERROR("cfb_off_pattern is empty\n");
|
||||
+ cfbOffPattern = "invalid_default_value";
|
||||
}
|
||||
if (regcomp(&m_patterns.cfbOffPattern, cfbOffPattern.c_str(), REG_EXTENDED | REG_NOSUB))
|
||||
{
|
||||
- ERROR("CfbOffPattern failed to compile ('%s'): %s\n",
|
||||
+ ERROR("cfb_off_pattern failed to compile ('%s'): %s\n",
|
||||
cfbOffPattern.c_str(),
|
||||
strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
-
|
||||
cftOnPattern = cfg.getParameter("cft_on_pattern", "");
|
||||
if (cftOnPattern.empty())
|
||||
{
|
||||
- ERROR("CftOnPattern is empty\n");
|
||||
- return -1;
|
||||
+ ERROR("cft_on_pattern is empty\n");
|
||||
+ cftOnPattern = "invalid_default_value";
|
||||
}
|
||||
if (regcomp(&m_patterns.cftOnPattern, cftOnPattern.c_str(), REG_EXTENDED | REG_NOSUB))
|
||||
{
|
||||
- ERROR("CftOnPattern failed to compile ('%s'): %s\n",
|
||||
+ ERROR("cft_on_pattern failed to compile ('%s'): %s\n",
|
||||
cftOnPattern.c_str(),
|
||||
strerror(errno));
|
||||
return -1;
|
||||
@@ -327,12 +314,12 @@
|
||||
cftOffPattern = cfg.getParameter("cft_off_pattern", "");
|
||||
if (cftOffPattern.empty())
|
||||
{
|
||||
- ERROR("CftOffPattern is empty\n");
|
||||
- return -1;
|
||||
+ ERROR("cft_off_pattern is empty\n");
|
||||
+ cftOffPattern = "invalid_default_value";
|
||||
}
|
||||
if (regcomp(&m_patterns.cftOffPattern, cftOffPattern.c_str(), REG_EXTENDED | REG_NOSUB))
|
||||
{
|
||||
- ERROR("CftOffPattern failed to compile ('%s'): %s\n",
|
||||
+ ERROR("cft_off_pattern failed to compile ('%s'): %s\n",
|
||||
cftOffPattern.c_str(),
|
||||
strerror(errno));
|
||||
return -1;
|
||||
@@ -341,12 +328,12 @@
|
||||
cfnaOnPattern = cfg.getParameter("cfna_on_pattern", "");
|
||||
if (cfnaOnPattern.empty())
|
||||
{
|
||||
- ERROR("CfnaOnPattern is empty\n");
|
||||
- return -1;
|
||||
+ ERROR("cfna_on_pattern is empty\n");
|
||||
+ cfnaOnPattern = "invalid_default_value";
|
||||
}
|
||||
if (regcomp(&m_patterns.cfnaOnPattern, cfnaOnPattern.c_str(), REG_EXTENDED | REG_NOSUB))
|
||||
{
|
||||
- ERROR("CfnaOnPattern failed to compile ('%s'): %s\n",
|
||||
+ ERROR("cfna_on_pattern failed to compile ('%s'): %s\n",
|
||||
cfnaOnPattern.c_str(),
|
||||
strerror(errno));
|
||||
return -1;
|
||||
@@ -355,12 +342,12 @@
|
||||
cfnaOffPattern = cfg.getParameter("cfna_off_pattern", "");
|
||||
if (cfnaOffPattern.empty())
|
||||
{
|
||||
- ERROR("CfnaOffPattern is empty\n");
|
||||
- return -1;
|
||||
+ ERROR("cfna_off_pattern is empty\n");
|
||||
+ cfnaOffPattern = "invalid_default_value";
|
||||
}
|
||||
if (regcomp(&m_patterns.cfnaOffPattern, cfnaOffPattern.c_str(), REG_EXTENDED | REG_NOSUB))
|
||||
{
|
||||
- ERROR("CfnaOffPattern failed to compile ('%s'): %s\n",
|
||||
+ ERROR("cfna_off_pattern failed to compile ('%s'): %s\n",
|
||||
cfnaOffPattern.c_str(),
|
||||
strerror(errno));
|
||||
return -1;
|
||||
@@ -369,43 +356,41 @@
|
||||
speedDialPattern = cfg.getParameter("speed_dial_pattern", "");
|
||||
if (speedDialPattern.empty())
|
||||
{
|
||||
- ERROR("SpeedDialPattern is empty\n");
|
||||
- return -1;
|
||||
+ ERROR("speed_dial_pattern is empty\n");
|
||||
+ speedDialPattern = "invalid_default_value";
|
||||
}
|
||||
if (regcomp(&m_patterns.speedDialPattern, speedDialPattern.c_str(), REG_EXTENDED | REG_NOSUB))
|
||||
{
|
||||
- ERROR("SpeedDialPattern failed to compile ('%s'): %s\n",
|
||||
+ ERROR("speed_dial_pattern failed to compile ('%s'): %s\n",
|
||||
speedDialPattern.c_str(),
|
||||
strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
-
|
||||
reminderOnPattern = cfg.getParameter("reminder_on_pattern", "");
|
||||
if (reminderOnPattern.empty())
|
||||
{
|
||||
- ERROR("ReminderOnPattern is empty\n");
|
||||
- return -1;
|
||||
+ ERROR("reminder_on_pattern is empty\n");
|
||||
+ reminderOnPattern = "invalid_default_value";
|
||||
}
|
||||
if (regcomp(&m_patterns.reminderOnPattern, reminderOnPattern.c_str(), REG_EXTENDED | REG_NOSUB))
|
||||
{
|
||||
- ERROR("ReminderOnPattern failed to compile ('%s'): %s\n",
|
||||
+ ERROR("reminder_on_pattern failed to compile ('%s'): %s\n",
|
||||
reminderOnPattern.c_str(),
|
||||
strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
-
|
||||
reminderOffPattern = cfg.getParameter("reminder_off_pattern", "");
|
||||
if (reminderOffPattern.empty())
|
||||
{
|
||||
- ERROR("ReminderOffPattern is empty\n");
|
||||
- return -1;
|
||||
+ ERROR("reminder_off_pattern is empty\n");
|
||||
+ reminderOffPattern = "invalid_default_value";
|
||||
}
|
||||
if (regcomp(&m_patterns.reminderOffPattern, reminderOffPattern.c_str(),
|
||||
REG_EXTENDED | REG_NOSUB))
|
||||
{
|
||||
- ERROR("ReminderOffPattern failed to compile ('%s'): %s\n",
|
||||
+ ERROR("reminder_off_pattern failed to compile ('%s'): %s\n",
|
||||
reminderOffPattern.c_str(),
|
||||
strerror(errno));
|
||||
return -1;
|
||||
@@ -414,28 +399,27 @@
|
||||
blockinclirOnPattern = cfg.getParameter("blockinclir_on_pattern", "");
|
||||
if (blockinclirOnPattern.empty())
|
||||
{
|
||||
- ERROR("BlockinclirOnPattern is empty\n");
|
||||
- return -1;
|
||||
+ ERROR("blockinclir_on_pattern is empty\n");
|
||||
+ blockinclirOnPattern = "invalid_default_value";
|
||||
}
|
||||
if (regcomp(&m_patterns.blockinclirOnPattern, blockinclirOnPattern.c_str(), REG_EXTENDED | REG_NOSUB))
|
||||
{
|
||||
- ERROR("BlockinclirOnPattern failed to compile ('%s'): %s\n",
|
||||
+ ERROR("blockinclir_on_pattern failed to compile ('%s'): %s\n",
|
||||
blockinclirOnPattern.c_str(),
|
||||
strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
-
|
||||
blockinclirOffPattern = cfg.getParameter("blockinclir_off_pattern", "");
|
||||
if (blockinclirOffPattern.empty())
|
||||
{
|
||||
- ERROR("BlockinclirOffPattern is empty\n");
|
||||
- return -1;
|
||||
+ ERROR("blockinclir_off_pattern is empty\n");
|
||||
+ blockinclirOffPattern = "invalid_default_value";
|
||||
}
|
||||
if (regcomp(&m_patterns.blockinclirOffPattern, blockinclirOffPattern.c_str(),
|
||||
REG_EXTENDED | REG_NOSUB))
|
||||
{
|
||||
- ERROR("BlockinclirOffPattern failed to compile ('%s'): %s\n",
|
||||
+ ERROR("blockinclir_off_pattern failed to compile ('%s'): %s\n",
|
||||
blockinclirOffPattern.c_str(),
|
||||
strerror(errno));
|
||||
return -1;
|
||||
@@ -1123,124 +1107,21 @@
|
||||
|
||||
|
||||
failAnnouncement = m_patterns->audioPath + lang + m_patterns->failAnnouncement;
|
||||
- if (!file_exists(failAnnouncement))
|
||||
+ if (m_patterns->failAnnouncement.empty() || !file_exists(failAnnouncement))
|
||||
{
|
||||
ERROR("ErrorAnnouncement file does not exist ('%s').\n",
|
||||
failAnnouncement.c_str());
|
||||
throw AmSession::Exception(500, "could not get failed announcement");
|
||||
}
|
||||
unknownAnnouncement = m_patterns->audioPath + lang + m_patterns->unknownAnnouncement;
|
||||
- if (!file_exists(unknownAnnouncement))
|
||||
+ if (m_patterns->unknownAnnouncement.empty() || !file_exists(unknownAnnouncement))
|
||||
{
|
||||
ERROR("UnknownAnnouncement file does not exist ('%s').\n",
|
||||
unknownAnnouncement.c_str());
|
||||
filename = failAnnouncement;
|
||||
goto out;
|
||||
}
|
||||
- cfuOnAnnouncement = m_patterns->audioPath + lang + m_patterns->cfuOnAnnouncement;
|
||||
- if (!file_exists(cfuOnAnnouncement))
|
||||
- {
|
||||
- ERROR("CfuOnAnnouncement file does not exist ('%s').\n",
|
||||
- cfuOnAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
- cfuOffAnnouncement = m_patterns->audioPath + lang + m_patterns->cfuOffAnnouncement;
|
||||
- if (!file_exists(cfuOffAnnouncement))
|
||||
- {
|
||||
- ERROR("CfuOffAnnouncement file does not exist ('%s').\n",
|
||||
- cfuOffAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
- cfbOnAnnouncement = m_patterns->audioPath + lang + m_patterns->cfbOnAnnouncement;
|
||||
- if (!file_exists(cfbOnAnnouncement))
|
||||
- {
|
||||
- ERROR("CfbOnAnnouncement file does not exist ('%s').\n",
|
||||
- cfbOnAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
- cfbOffAnnouncement = m_patterns->audioPath + lang + m_patterns->cfbOffAnnouncement;
|
||||
- if (!file_exists(cfbOffAnnouncement))
|
||||
- {
|
||||
- ERROR("CfbOffAnnouncement file does not exist ('%s').\n",
|
||||
- cfbOffAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
- cftOnAnnouncement = m_patterns->audioPath + lang + m_patterns->cftOnAnnouncement;
|
||||
- if (!file_exists(cftOnAnnouncement))
|
||||
- {
|
||||
- ERROR("CftOnAnnouncement file does not exist ('%s').\n",
|
||||
- cftOnAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
- cftOffAnnouncement = m_patterns->audioPath + lang + m_patterns->cftOffAnnouncement;
|
||||
- if (!file_exists(cftOffAnnouncement))
|
||||
- {
|
||||
- ERROR("CftOffAnnouncement file does not exist ('%s').\n",
|
||||
- cftOffAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
- cfnaOnAnnouncement = m_patterns->audioPath + lang + m_patterns->cfnaOnAnnouncement;
|
||||
- if (!file_exists(cfnaOnAnnouncement))
|
||||
- {
|
||||
- ERROR("CfnaOnAnnouncement file does not exist ('%s').\n",
|
||||
- cfnaOnAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
- cfnaOffAnnouncement = m_patterns->audioPath + lang + m_patterns->cfnaOffAnnouncement;
|
||||
- if (!file_exists(cfnaOffAnnouncement))
|
||||
- {
|
||||
- ERROR("CfnaOffAnnouncement file does not exist ('%s').\n",
|
||||
- cfnaOffAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
- speedDialAnnouncement = m_patterns->audioPath + lang + m_patterns->speedDialAnnouncement;
|
||||
- if (!file_exists(speedDialAnnouncement))
|
||||
- {
|
||||
- ERROR("SpeedDialAnnouncement file does not exist ('%s').\n",
|
||||
- speedDialAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
- reminderOnAnnouncement = m_patterns->audioPath + lang + m_patterns->reminderOnAnnouncement;
|
||||
- if (!file_exists(reminderOnAnnouncement))
|
||||
- {
|
||||
- ERROR("ReminderOnAnnouncement file does not exist ('%s').\n",
|
||||
- reminderOnAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
- reminderOffAnnouncement = m_patterns->audioPath + lang + m_patterns->reminderOffAnnouncement;
|
||||
- if (!file_exists(reminderOffAnnouncement))
|
||||
- {
|
||||
- ERROR("ReminderOffAnnouncement file does not exist ('%s').\n",
|
||||
- reminderOffAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
- blockinclirOnAnnouncement = m_patterns->audioPath + lang + m_patterns->blockinclirOnAnnouncement;
|
||||
- if (!file_exists(blockinclirOnAnnouncement))
|
||||
- {
|
||||
- ERROR("BlockinclirOnAnnouncement file does not exist ('%s').\n",
|
||||
- blockinclirOnAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
- blockinclirOffAnnouncement = m_patterns->audioPath + lang + m_patterns->blockinclirOffAnnouncement;
|
||||
- if (!file_exists(blockinclirOffAnnouncement))
|
||||
- {
|
||||
- ERROR("BlockinclirOffAnnouncement file does not exist ('%s').\n",
|
||||
- blockinclirOffAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
+
|
||||
|
||||
my_handler = mysql_init(NULL);
|
||||
if (!mysql_real_connect(my_handler,
|
||||
@@ -1278,6 +1159,15 @@
|
||||
if ((ret = regexec(&m_patterns->cfuOnPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
+ cfuOnAnnouncement = m_patterns->audioPath + lang + m_patterns->cfuOnAnnouncement;
|
||||
+ if (m_patterns->cfuOnAnnouncement.empty() || !file_exists(cfuOnAnnouncement))
|
||||
+ {
|
||||
+ ERROR("CfuOnAnnouncement file does not exist ('%s').\n",
|
||||
+ cfuOnAnnouncement.c_str());
|
||||
+ filename = failAnnouncement;
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
u_int64_t attId = getAttributeId(my_handler, "cfu");
|
||||
if (!attId)
|
||||
{
|
||||
@@ -1349,6 +1239,15 @@
|
||||
if ((ret = regexec(&m_patterns->cfuOffPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
+ cfuOffAnnouncement = m_patterns->audioPath + lang + m_patterns->cfuOffAnnouncement;
|
||||
+ if (m_patterns->cfuOffAnnouncement.empty() || !file_exists(cfuOffAnnouncement))
|
||||
+ {
|
||||
+ ERROR("CfuOffAnnouncement file does not exist ('%s').\n",
|
||||
+ cfuOffAnnouncement.c_str());
|
||||
+ filename = failAnnouncement;
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
if (!deleteCFMap(my_handler, subId, SW_VSC_DESTSET_CFU, "cfu"))
|
||||
{
|
||||
filename = failAnnouncement;
|
||||
@@ -1395,6 +1294,15 @@
|
||||
if ((ret = regexec(&m_patterns->cfbOnPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
+ cfbOnAnnouncement = m_patterns->audioPath + lang + m_patterns->cfbOnAnnouncement;
|
||||
+ if (m_patterns->cfbOnAnnouncement.empty() || !file_exists(cfbOnAnnouncement))
|
||||
+ {
|
||||
+ ERROR("CfbOnAnnouncement file does not exist ('%s').\n",
|
||||
+ cfbOnAnnouncement.c_str());
|
||||
+ filename = failAnnouncement;
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
u_int64_t attId = getAttributeId(my_handler, "cfb");
|
||||
if (!attId)
|
||||
{
|
||||
@@ -1466,6 +1374,15 @@
|
||||
if ((ret = regexec(&m_patterns->cfbOffPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
+ cfbOffAnnouncement = m_patterns->audioPath + lang + m_patterns->cfbOffAnnouncement;
|
||||
+ if (m_patterns->cfbOffAnnouncement.empty() || !file_exists(cfbOffAnnouncement))
|
||||
+ {
|
||||
+ ERROR("CfbOffAnnouncement file does not exist ('%s').\n",
|
||||
+ cfbOffAnnouncement.c_str());
|
||||
+ filename = failAnnouncement;
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
if (!deleteCFMap(my_handler, subId, SW_VSC_DESTSET_CFB, "cfb"))
|
||||
{
|
||||
filename = failAnnouncement;
|
||||
@@ -1512,6 +1429,15 @@
|
||||
if ((ret = regexec(&m_patterns->cftOnPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
+ cftOnAnnouncement = m_patterns->audioPath + lang + m_patterns->cftOnAnnouncement;
|
||||
+ if (m_patterns->cftOnAnnouncement.empty() || !file_exists(cftOnAnnouncement))
|
||||
+ {
|
||||
+ ERROR("CftOnAnnouncement file does not exist ('%s').\n",
|
||||
+ cftOnAnnouncement.c_str());
|
||||
+ filename = failAnnouncement;
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
u_int64_t attId = getAttributeId(my_handler, "cft");
|
||||
if (!attId)
|
||||
{
|
||||
@@ -1621,6 +1547,15 @@
|
||||
if ((ret = regexec(&m_patterns->cftOffPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
+ cftOffAnnouncement = m_patterns->audioPath + lang + m_patterns->cftOffAnnouncement;
|
||||
+ if (m_patterns->cftOffAnnouncement.empty() || !file_exists(cftOffAnnouncement))
|
||||
+ {
|
||||
+ ERROR("CftOffAnnouncement file does not exist ('%s').\n",
|
||||
+ cftOffAnnouncement.c_str());
|
||||
+ filename = failAnnouncement;
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
if (!deleteCFMap(my_handler, subId, SW_VSC_DESTSET_CFT, "cft"))
|
||||
{
|
||||
filename = failAnnouncement;
|
||||
@@ -1692,6 +1627,15 @@
|
||||
if ((ret = regexec(&m_patterns->cfnaOnPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
+ cfnaOnAnnouncement = m_patterns->audioPath + lang + m_patterns->cfnaOnAnnouncement;
|
||||
+ if (m_patterns->cfnaOnAnnouncement.empty() || !file_exists(cfnaOnAnnouncement))
|
||||
+ {
|
||||
+ ERROR("CfnaOnAnnouncement file does not exist ('%s').\n",
|
||||
+ cfnaOnAnnouncement.c_str());
|
||||
+ filename = failAnnouncement;
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
u_int64_t attId = getAttributeId(my_handler, "cfna");
|
||||
if (!attId)
|
||||
{
|
||||
@@ -1763,6 +1707,15 @@
|
||||
if ((ret = regexec(&m_patterns->cfnaOffPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
+ cfnaOffAnnouncement = m_patterns->audioPath + lang + m_patterns->cfnaOffAnnouncement;
|
||||
+ if (m_patterns->cfnaOffAnnouncement.empty() || !file_exists(cfnaOffAnnouncement))
|
||||
+ {
|
||||
+ ERROR("CfnaOffAnnouncement file does not exist ('%s').\n",
|
||||
+ cfnaOffAnnouncement.c_str());
|
||||
+ filename = failAnnouncement;
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
if (!deleteCFMap(my_handler, subId, SW_VSC_DESTSET_CFNA, "cfna"))
|
||||
{
|
||||
filename = failAnnouncement;
|
||||
@@ -1809,6 +1762,15 @@
|
||||
if ((ret = regexec(&m_patterns->speedDialPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
+ speedDialAnnouncement = m_patterns->audioPath + lang + m_patterns->speedDialAnnouncement;
|
||||
+ if (m_patterns->speedDialAnnouncement.empty() || !file_exists(speedDialAnnouncement))
|
||||
+ {
|
||||
+ ERROR("SpeedDialAnnouncement file does not exist ('%s').\n",
|
||||
+ speedDialAnnouncement.c_str());
|
||||
+ filename = failAnnouncement;
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
string slot = string("*") + req.user.substr(4, 1);
|
||||
if (!number2uri(req, my_handler, uuid, subId, domain, domId, 5,
|
||||
uri, username))
|
||||
@@ -1839,6 +1801,15 @@
|
||||
if ((ret = regexec(&m_patterns->reminderOnPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
+ reminderOnAnnouncement = m_patterns->audioPath + lang + m_patterns->reminderOnAnnouncement;
|
||||
+ if (m_patterns->reminderOnAnnouncement.empty() || !file_exists(reminderOnAnnouncement))
|
||||
+ {
|
||||
+ ERROR("ReminderOnAnnouncement file does not exist ('%s').\n",
|
||||
+ reminderOnAnnouncement.c_str());
|
||||
+ filename = failAnnouncement;
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
int hour, min;
|
||||
string tim; char c_tim[6] = "";
|
||||
hour = atoi(req.user.substr(4, 2).c_str());
|
||||
@@ -1885,6 +1856,15 @@
|
||||
if ((ret = regexec(&m_patterns->reminderOffPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
+ reminderOffAnnouncement = m_patterns->audioPath + lang + m_patterns->reminderOffAnnouncement;
|
||||
+ if (m_patterns->reminderOffAnnouncement.empty() || !file_exists(reminderOffAnnouncement))
|
||||
+ {
|
||||
+ ERROR("ReminderOffAnnouncement file does not exist ('%s').\n",
|
||||
+ reminderOffAnnouncement.c_str());
|
||||
+ filename = failAnnouncement;
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
if (!deleteReminder(my_handler, subId))
|
||||
{
|
||||
filename = failAnnouncement;
|
||||
@@ -1906,10 +1886,18 @@
|
||||
}
|
||||
|
||||
|
||||
- // block in clir
|
||||
if ((ret = regexec(&m_patterns->blockinclirOnPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
+ blockinclirOnAnnouncement = m_patterns->audioPath + lang + m_patterns->blockinclirOnAnnouncement;
|
||||
+ if (m_patterns->blockinclirOnAnnouncement.empty() || !file_exists(blockinclirOnAnnouncement))
|
||||
+ {
|
||||
+ ERROR("BlockinclirOnAnnouncement file does not exist ('%s').\n",
|
||||
+ blockinclirOnAnnouncement.c_str());
|
||||
+ filename = failAnnouncement;
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
std::string val = "1";
|
||||
u_int64_t attId = getAttributeId(my_handler, "block_in_clir");
|
||||
if (!attId)
|
||||
@@ -1957,6 +1945,15 @@
|
||||
if ((ret = regexec(&m_patterns->blockinclirOffPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
+ blockinclirOffAnnouncement = m_patterns->audioPath + lang + m_patterns->blockinclirOffAnnouncement;
|
||||
+ if (m_patterns->blockinclirOffAnnouncement.empty() || !file_exists(blockinclirOffAnnouncement))
|
||||
+ {
|
||||
+ ERROR("BlockinclirOffAnnouncement file does not exist ('%s').\n",
|
||||
+ blockinclirOffAnnouncement.c_str());
|
||||
+ filename = failAnnouncement;
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
u_int64_t attId = getAttributeId(my_handler, "block_in_clir");
|
||||
if (!attId)
|
||||
{
|
||||
@ -0,0 +1,553 @@
|
||||
Index: sems/apps/sw_vsc/SW_Vsc.cpp
|
||||
===================================================================
|
||||
--- sems.orig/apps/sw_vsc/SW_Vsc.cpp 2016-07-21 16:00:25.721737956 +0200
|
||||
+++ sems/apps/sw_vsc/SW_Vsc.cpp 2016-07-21 16:06:05.734333422 +0200
|
||||
@@ -73,6 +73,38 @@
|
||||
#define SW_VSC_DESTSET_CFT "cft_by_vsc"
|
||||
#define SW_VSC_DESTSET_CFNA "cfna_by_vsc"
|
||||
|
||||
+#define CHECK_ANNOUNCEMENT_CONFIG(member, config_var) \
|
||||
+ m_patterns.member = cfg.getParameter(config_var, ""); \
|
||||
+ if (m_patterns.member.empty()) \
|
||||
+ { \
|
||||
+ ERROR(config_var " file not set\n"); \
|
||||
+ }
|
||||
+
|
||||
+#define COMPILE_MATCH_PATTERN(member, config_var) \
|
||||
+ member = cfg.getParameter(config_var, ""); \
|
||||
+ if (member.empty()) \
|
||||
+ { \
|
||||
+ ERROR(config_var " is empty\n"); \
|
||||
+ member = "invalid_default_value"; \
|
||||
+ } \
|
||||
+ if (regcomp(&m_patterns.member, member.c_str(), REG_EXTENDED | REG_NOSUB)) \
|
||||
+ { \
|
||||
+ ERROR(config_var " failed to compile ('%s'): %s\n", \
|
||||
+ member.c_str(), \
|
||||
+ strerror(errno)); \
|
||||
+ return -1; \
|
||||
+ }
|
||||
+
|
||||
+#define CHECK_ANNOUNCEMENT_PATH(member, config_var) \
|
||||
+ member = m_patterns->audioPath + lang + m_patterns->member; \
|
||||
+ if (m_patterns->member.empty() || !file_exists(member)) \
|
||||
+ { \
|
||||
+ ERROR(config_var " file does not exist ('%s').\n", \
|
||||
+ member.c_str()); \
|
||||
+ filename = failAnnouncement; \
|
||||
+ goto out; \
|
||||
+ }
|
||||
+
|
||||
EXPORT_SESSION_FACTORY(SW_VscFactory, MOD_NAME);
|
||||
|
||||
SW_VscFactory::SW_VscFactory(const string &_app_name)
|
||||
@@ -154,82 +186,22 @@
|
||||
if (m_patterns.audioPath[m_patterns.audioPath.length() - 1] != '/' )
|
||||
m_patterns.audioPath += "/";
|
||||
|
||||
- // MT#20649: don't fail if announcements are missing;
|
||||
- m_patterns.failAnnouncement = cfg.getParameter("error_announcement", "");
|
||||
- if (m_patterns.failAnnouncement.empty())
|
||||
- {
|
||||
- ERROR("error_announcement file not set\n");
|
||||
- }
|
||||
- m_patterns.unknownAnnouncement = cfg.getParameter("unknown_announcement", "");
|
||||
- if (m_patterns.unknownAnnouncement.empty())
|
||||
- {
|
||||
- ERROR("unknown_announcement file not set\n");
|
||||
- }
|
||||
- m_patterns.cfuOnAnnouncement = cfg.getParameter("cfu_on_announcement", "");
|
||||
- if (m_patterns.cfuOnAnnouncement.empty())
|
||||
- {
|
||||
- ERROR("cfu_on_announcement file not set\n");
|
||||
- }
|
||||
- m_patterns.cfuOffAnnouncement = cfg.getParameter("cfu_off_announcement", "");
|
||||
- if (m_patterns.cfuOffAnnouncement.empty())
|
||||
- {
|
||||
- ERROR("cfu_off_announcement file not set\n");
|
||||
- }
|
||||
- m_patterns.cfbOnAnnouncement = cfg.getParameter("cfb_on_announcement", "");
|
||||
- if (m_patterns.cfbOnAnnouncement.empty())
|
||||
- {
|
||||
- ERROR("cfb_on_announcement file not set\n");
|
||||
- }
|
||||
- m_patterns.cfbOffAnnouncement = cfg.getParameter("cfb_off_announcement", "");
|
||||
- if (m_patterns.cfbOffAnnouncement.empty())
|
||||
- {
|
||||
- ERROR("cfb_off_announcement file not set\n");
|
||||
- }
|
||||
- m_patterns.cftOnAnnouncement = cfg.getParameter("cft_on_announcement", "");
|
||||
- if (m_patterns.cftOnAnnouncement.empty())
|
||||
- {
|
||||
- ERROR("cft_on_announcement file not set\n");
|
||||
- }
|
||||
- m_patterns.cftOffAnnouncement = cfg.getParameter("cft_off_announcement", "");
|
||||
- if (m_patterns.cftOffAnnouncement.empty())
|
||||
- {
|
||||
- ERROR("cft_off_announcement file not set\n");
|
||||
- }
|
||||
- m_patterns.cfnaOnAnnouncement = cfg.getParameter("cfna_on_announcement", "");
|
||||
- if (m_patterns.cfnaOnAnnouncement.empty())
|
||||
- {
|
||||
- ERROR("cfna_on_announcement file not set\n");
|
||||
- }
|
||||
- m_patterns.cfnaOffAnnouncement = cfg.getParameter("cfna_off_announcement", "");
|
||||
- if (m_patterns.cfnaOffAnnouncement.empty())
|
||||
- {
|
||||
- ERROR("cfna_off_announcement file not set\n");
|
||||
- }
|
||||
- m_patterns.speedDialAnnouncement = cfg.getParameter("speed_dial_announcement", "");
|
||||
- if (m_patterns.speedDialAnnouncement.empty())
|
||||
- {
|
||||
- ERROR("speed_dial_announcement file not set\n");
|
||||
- }
|
||||
- m_patterns.reminderOnAnnouncement = cfg.getParameter("reminder_on_announcement", "");
|
||||
- if (m_patterns.reminderOnAnnouncement.empty())
|
||||
- {
|
||||
- ERROR("reminder_on_announcement file not set\n");
|
||||
- }
|
||||
- m_patterns.reminderOffAnnouncement = cfg.getParameter("reminder_off_announcement", "");
|
||||
- if (m_patterns.reminderOffAnnouncement.empty())
|
||||
- {
|
||||
- ERROR("reminder_off_announcement file not set\n");
|
||||
- }
|
||||
- m_patterns.blockinclirOnAnnouncement = cfg.getParameter("blockinclir_on_announcement", "");
|
||||
- if (m_patterns.blockinclirOnAnnouncement.empty())
|
||||
- {
|
||||
- ERROR("blockinclir_on_announcement file not set\n");
|
||||
- }
|
||||
- m_patterns.blockinclirOffAnnouncement = cfg.getParameter("blockinclir_off_announcement", "");
|
||||
- if (m_patterns.blockinclirOffAnnouncement.empty())
|
||||
- {
|
||||
- ERROR("blockinclir_off_announcement file not set\n");
|
||||
- }
|
||||
+ CHECK_ANNOUNCEMENT_CONFIG(failAnnouncement, "error_announcement");
|
||||
+ CHECK_ANNOUNCEMENT_CONFIG(unknownAnnouncement, "unknown_announcement");
|
||||
+ CHECK_ANNOUNCEMENT_CONFIG(cfuOnAnnouncement, "cfu_on_announcement");
|
||||
+ CHECK_ANNOUNCEMENT_CONFIG(cfuOffAnnouncement, "cfu_off_announcement");
|
||||
+ CHECK_ANNOUNCEMENT_CONFIG(cfbOnAnnouncement, "cfb_on_announcement");
|
||||
+ CHECK_ANNOUNCEMENT_CONFIG(cfbOffAnnouncement, "cfb_off_announcement");
|
||||
+ CHECK_ANNOUNCEMENT_CONFIG(cftOnAnnouncement, "cft_on_announcement");
|
||||
+ CHECK_ANNOUNCEMENT_CONFIG(cftOffAnnouncement, "cft_off_announcement");
|
||||
+ CHECK_ANNOUNCEMENT_CONFIG(cfnaOnAnnouncement, "cfna_on_announcement");
|
||||
+ CHECK_ANNOUNCEMENT_CONFIG(cfnaOffAnnouncement, "cfna_off_announcement");
|
||||
+ CHECK_ANNOUNCEMENT_CONFIG(speedDialAnnouncement, "speed_dial_announcement");
|
||||
+ CHECK_ANNOUNCEMENT_CONFIG(reminderOnAnnouncement, "reminder_on_announcement");
|
||||
+ CHECK_ANNOUNCEMENT_CONFIG(reminderOffAnnouncement, "reminder_off_announcement");
|
||||
+ CHECK_ANNOUNCEMENT_CONFIG(blockinclirOnAnnouncement, "blockinclir_on_announcement");
|
||||
+ CHECK_ANNOUNCEMENT_CONFIG(blockinclirOffAnnouncement, "blockinclir_off_announcement");
|
||||
+
|
||||
|
||||
// We could set a default in cfg.getParameter, but we really want to log the error
|
||||
// if the pattern in question is not set:
|
||||
@@ -241,189 +213,19 @@
|
||||
m_patterns.voicemailNumber = "invalid_default_value";
|
||||
}
|
||||
|
||||
- cfuOnPattern = cfg.getParameter("cfu_on_pattern", "");
|
||||
- if (cfuOnPattern.empty())
|
||||
- {
|
||||
- ERROR("cfu_on_pattern is empty\n");
|
||||
- cfuOnPattern = "invalid_default_value";
|
||||
- }
|
||||
- if (regcomp(&m_patterns.cfuOnPattern, cfuOnPattern.c_str(), REG_EXTENDED | REG_NOSUB))
|
||||
- {
|
||||
- ERROR("cfu_on_pattern failed to compile ('%s'): %s\n",
|
||||
- cfuOnPattern.c_str(),
|
||||
- strerror(errno));
|
||||
- return -1;
|
||||
- }
|
||||
-
|
||||
- cfuOffPattern = cfg.getParameter("cfu_off_pattern", "");
|
||||
- if (cfuOffPattern.empty())
|
||||
- {
|
||||
- ERROR("cfu_off_pattern is empty\n");
|
||||
- cfuOffPattern = "invalid_default_value";
|
||||
- }
|
||||
- if (regcomp(&m_patterns.cfuOffPattern, cfuOffPattern.c_str(), REG_EXTENDED | REG_NOSUB))
|
||||
- {
|
||||
- ERROR("cfu_off_pattern failed to compile ('%s'): %s\n",
|
||||
- cfuOffPattern.c_str(),
|
||||
- strerror(errno));
|
||||
- return -1;
|
||||
- }
|
||||
-
|
||||
- cfbOnPattern = cfg.getParameter("cfb_on_pattern", "");
|
||||
- if (cfbOnPattern.empty())
|
||||
- {
|
||||
- ERROR("cfb_on_pattern is empty\n");
|
||||
- cfbOnPattern = "invalid_default_value";
|
||||
- }
|
||||
- if (regcomp(&m_patterns.cfbOnPattern, cfbOnPattern.c_str(), REG_EXTENDED | REG_NOSUB))
|
||||
- {
|
||||
- ERROR("cfb_on_pattern failed to compile ('%s'): %s\n",
|
||||
- cfbOnPattern.c_str(),
|
||||
- strerror(errno));
|
||||
- return -1;
|
||||
- }
|
||||
-
|
||||
- cfbOffPattern = cfg.getParameter("cfb_off_pattern", "");
|
||||
- if (cfbOffPattern.empty())
|
||||
- {
|
||||
- ERROR("cfb_off_pattern is empty\n");
|
||||
- cfbOffPattern = "invalid_default_value";
|
||||
- }
|
||||
- if (regcomp(&m_patterns.cfbOffPattern, cfbOffPattern.c_str(), REG_EXTENDED | REG_NOSUB))
|
||||
- {
|
||||
- ERROR("cfb_off_pattern failed to compile ('%s'): %s\n",
|
||||
- cfbOffPattern.c_str(),
|
||||
- strerror(errno));
|
||||
- return -1;
|
||||
- }
|
||||
-
|
||||
- cftOnPattern = cfg.getParameter("cft_on_pattern", "");
|
||||
- if (cftOnPattern.empty())
|
||||
- {
|
||||
- ERROR("cft_on_pattern is empty\n");
|
||||
- cftOnPattern = "invalid_default_value";
|
||||
- }
|
||||
- if (regcomp(&m_patterns.cftOnPattern, cftOnPattern.c_str(), REG_EXTENDED | REG_NOSUB))
|
||||
- {
|
||||
- ERROR("cft_on_pattern failed to compile ('%s'): %s\n",
|
||||
- cftOnPattern.c_str(),
|
||||
- strerror(errno));
|
||||
- return -1;
|
||||
- }
|
||||
-
|
||||
- cftOffPattern = cfg.getParameter("cft_off_pattern", "");
|
||||
- if (cftOffPattern.empty())
|
||||
- {
|
||||
- ERROR("cft_off_pattern is empty\n");
|
||||
- cftOffPattern = "invalid_default_value";
|
||||
- }
|
||||
- if (regcomp(&m_patterns.cftOffPattern, cftOffPattern.c_str(), REG_EXTENDED | REG_NOSUB))
|
||||
- {
|
||||
- ERROR("cft_off_pattern failed to compile ('%s'): %s\n",
|
||||
- cftOffPattern.c_str(),
|
||||
- strerror(errno));
|
||||
- return -1;
|
||||
- }
|
||||
-
|
||||
- cfnaOnPattern = cfg.getParameter("cfna_on_pattern", "");
|
||||
- if (cfnaOnPattern.empty())
|
||||
- {
|
||||
- ERROR("cfna_on_pattern is empty\n");
|
||||
- cfnaOnPattern = "invalid_default_value";
|
||||
- }
|
||||
- if (regcomp(&m_patterns.cfnaOnPattern, cfnaOnPattern.c_str(), REG_EXTENDED | REG_NOSUB))
|
||||
- {
|
||||
- ERROR("cfna_on_pattern failed to compile ('%s'): %s\n",
|
||||
- cfnaOnPattern.c_str(),
|
||||
- strerror(errno));
|
||||
- return -1;
|
||||
- }
|
||||
-
|
||||
- cfnaOffPattern = cfg.getParameter("cfna_off_pattern", "");
|
||||
- if (cfnaOffPattern.empty())
|
||||
- {
|
||||
- ERROR("cfna_off_pattern is empty\n");
|
||||
- cfnaOffPattern = "invalid_default_value";
|
||||
- }
|
||||
- if (regcomp(&m_patterns.cfnaOffPattern, cfnaOffPattern.c_str(), REG_EXTENDED | REG_NOSUB))
|
||||
- {
|
||||
- ERROR("cfna_off_pattern failed to compile ('%s'): %s\n",
|
||||
- cfnaOffPattern.c_str(),
|
||||
- strerror(errno));
|
||||
- return -1;
|
||||
- }
|
||||
-
|
||||
- speedDialPattern = cfg.getParameter("speed_dial_pattern", "");
|
||||
- if (speedDialPattern.empty())
|
||||
- {
|
||||
- ERROR("speed_dial_pattern is empty\n");
|
||||
- speedDialPattern = "invalid_default_value";
|
||||
- }
|
||||
- if (regcomp(&m_patterns.speedDialPattern, speedDialPattern.c_str(), REG_EXTENDED | REG_NOSUB))
|
||||
- {
|
||||
- ERROR("speed_dial_pattern failed to compile ('%s'): %s\n",
|
||||
- speedDialPattern.c_str(),
|
||||
- strerror(errno));
|
||||
- return -1;
|
||||
- }
|
||||
-
|
||||
- reminderOnPattern = cfg.getParameter("reminder_on_pattern", "");
|
||||
- if (reminderOnPattern.empty())
|
||||
- {
|
||||
- ERROR("reminder_on_pattern is empty\n");
|
||||
- reminderOnPattern = "invalid_default_value";
|
||||
- }
|
||||
- if (regcomp(&m_patterns.reminderOnPattern, reminderOnPattern.c_str(), REG_EXTENDED | REG_NOSUB))
|
||||
- {
|
||||
- ERROR("reminder_on_pattern failed to compile ('%s'): %s\n",
|
||||
- reminderOnPattern.c_str(),
|
||||
- strerror(errno));
|
||||
- return -1;
|
||||
- }
|
||||
-
|
||||
- reminderOffPattern = cfg.getParameter("reminder_off_pattern", "");
|
||||
- if (reminderOffPattern.empty())
|
||||
- {
|
||||
- ERROR("reminder_off_pattern is empty\n");
|
||||
- reminderOffPattern = "invalid_default_value";
|
||||
- }
|
||||
- if (regcomp(&m_patterns.reminderOffPattern, reminderOffPattern.c_str(),
|
||||
- REG_EXTENDED | REG_NOSUB))
|
||||
- {
|
||||
- ERROR("reminder_off_pattern failed to compile ('%s'): %s\n",
|
||||
- reminderOffPattern.c_str(),
|
||||
- strerror(errno));
|
||||
- return -1;
|
||||
- }
|
||||
-
|
||||
- blockinclirOnPattern = cfg.getParameter("blockinclir_on_pattern", "");
|
||||
- if (blockinclirOnPattern.empty())
|
||||
- {
|
||||
- ERROR("blockinclir_on_pattern is empty\n");
|
||||
- blockinclirOnPattern = "invalid_default_value";
|
||||
- }
|
||||
- if (regcomp(&m_patterns.blockinclirOnPattern, blockinclirOnPattern.c_str(), REG_EXTENDED | REG_NOSUB))
|
||||
- {
|
||||
- ERROR("blockinclir_on_pattern failed to compile ('%s'): %s\n",
|
||||
- blockinclirOnPattern.c_str(),
|
||||
- strerror(errno));
|
||||
- return -1;
|
||||
- }
|
||||
-
|
||||
- blockinclirOffPattern = cfg.getParameter("blockinclir_off_pattern", "");
|
||||
- if (blockinclirOffPattern.empty())
|
||||
- {
|
||||
- ERROR("blockinclir_off_pattern is empty\n");
|
||||
- blockinclirOffPattern = "invalid_default_value";
|
||||
- }
|
||||
- if (regcomp(&m_patterns.blockinclirOffPattern, blockinclirOffPattern.c_str(),
|
||||
- REG_EXTENDED | REG_NOSUB))
|
||||
- {
|
||||
- ERROR("blockinclir_off_pattern failed to compile ('%s'): %s\n",
|
||||
- blockinclirOffPattern.c_str(),
|
||||
- strerror(errno));
|
||||
- return -1;
|
||||
- }
|
||||
+ COMPILE_MATCH_PATTERN(cfuOnPattern, "cfu_on_pattern");
|
||||
+ COMPILE_MATCH_PATTERN(cfuOffPattern, "cfu_off_pattern");
|
||||
+ COMPILE_MATCH_PATTERN(cfbOnPattern, "cfb_on_pattern");
|
||||
+ COMPILE_MATCH_PATTERN(cfbOffPattern, "cfb_off_pattern");
|
||||
+ COMPILE_MATCH_PATTERN(cftOnPattern, "cft_on_pattern");
|
||||
+ COMPILE_MATCH_PATTERN(cftOffPattern, "cft_off_pattern");
|
||||
+ COMPILE_MATCH_PATTERN(cfnaOnPattern, "cfna_on_pattern");
|
||||
+ COMPILE_MATCH_PATTERN(cfnaOffPattern, "cfna_off_pattern");
|
||||
+ COMPILE_MATCH_PATTERN(speedDialPattern, "speed_dial_pattern");
|
||||
+ COMPILE_MATCH_PATTERN(reminderOnPattern, "reminder_on_pattern");
|
||||
+ COMPILE_MATCH_PATTERN(reminderOffPattern, "reminder_off_pattern");
|
||||
+ COMPILE_MATCH_PATTERN(blockinclirOnPattern, "blockinclir_on_pattern");
|
||||
+ COMPILE_MATCH_PATTERN(blockinclirOffPattern, "blockinclir_off_pattern");
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1159,14 +961,7 @@
|
||||
if ((ret = regexec(&m_patterns->cfuOnPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
- cfuOnAnnouncement = m_patterns->audioPath + lang + m_patterns->cfuOnAnnouncement;
|
||||
- if (m_patterns->cfuOnAnnouncement.empty() || !file_exists(cfuOnAnnouncement))
|
||||
- {
|
||||
- ERROR("CfuOnAnnouncement file does not exist ('%s').\n",
|
||||
- cfuOnAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
+ CHECK_ANNOUNCEMENT_PATH(cfuOnAnnouncement, "cfu_on_announcement");
|
||||
|
||||
u_int64_t attId = getAttributeId(my_handler, "cfu");
|
||||
if (!attId)
|
||||
@@ -1239,14 +1034,7 @@
|
||||
if ((ret = regexec(&m_patterns->cfuOffPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
- cfuOffAnnouncement = m_patterns->audioPath + lang + m_patterns->cfuOffAnnouncement;
|
||||
- if (m_patterns->cfuOffAnnouncement.empty() || !file_exists(cfuOffAnnouncement))
|
||||
- {
|
||||
- ERROR("CfuOffAnnouncement file does not exist ('%s').\n",
|
||||
- cfuOffAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
+ CHECK_ANNOUNCEMENT_PATH(cfuOffAnnouncement, "cfu_off_announcement");
|
||||
|
||||
if (!deleteCFMap(my_handler, subId, SW_VSC_DESTSET_CFU, "cfu"))
|
||||
{
|
||||
@@ -1294,14 +1082,7 @@
|
||||
if ((ret = regexec(&m_patterns->cfbOnPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
- cfbOnAnnouncement = m_patterns->audioPath + lang + m_patterns->cfbOnAnnouncement;
|
||||
- if (m_patterns->cfbOnAnnouncement.empty() || !file_exists(cfbOnAnnouncement))
|
||||
- {
|
||||
- ERROR("CfbOnAnnouncement file does not exist ('%s').\n",
|
||||
- cfbOnAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
+ CHECK_ANNOUNCEMENT_PATH(cfbOnAnnouncement, "cfb_on_announcement");
|
||||
|
||||
u_int64_t attId = getAttributeId(my_handler, "cfb");
|
||||
if (!attId)
|
||||
@@ -1374,14 +1155,7 @@
|
||||
if ((ret = regexec(&m_patterns->cfbOffPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
- cfbOffAnnouncement = m_patterns->audioPath + lang + m_patterns->cfbOffAnnouncement;
|
||||
- if (m_patterns->cfbOffAnnouncement.empty() || !file_exists(cfbOffAnnouncement))
|
||||
- {
|
||||
- ERROR("CfbOffAnnouncement file does not exist ('%s').\n",
|
||||
- cfbOffAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
+ CHECK_ANNOUNCEMENT_PATH(cfbOffAnnouncement, "cfb_off_announcement");
|
||||
|
||||
if (!deleteCFMap(my_handler, subId, SW_VSC_DESTSET_CFB, "cfb"))
|
||||
{
|
||||
@@ -1429,14 +1203,7 @@
|
||||
if ((ret = regexec(&m_patterns->cftOnPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
- cftOnAnnouncement = m_patterns->audioPath + lang + m_patterns->cftOnAnnouncement;
|
||||
- if (m_patterns->cftOnAnnouncement.empty() || !file_exists(cftOnAnnouncement))
|
||||
- {
|
||||
- ERROR("CftOnAnnouncement file does not exist ('%s').\n",
|
||||
- cftOnAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
+ CHECK_ANNOUNCEMENT_PATH(cftOnAnnouncement, "cft_on_announcement");
|
||||
|
||||
u_int64_t attId = getAttributeId(my_handler, "cft");
|
||||
if (!attId)
|
||||
@@ -1547,14 +1314,7 @@
|
||||
if ((ret = regexec(&m_patterns->cftOffPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
- cftOffAnnouncement = m_patterns->audioPath + lang + m_patterns->cftOffAnnouncement;
|
||||
- if (m_patterns->cftOffAnnouncement.empty() || !file_exists(cftOffAnnouncement))
|
||||
- {
|
||||
- ERROR("CftOffAnnouncement file does not exist ('%s').\n",
|
||||
- cftOffAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
+ CHECK_ANNOUNCEMENT_PATH(cftOffAnnouncement, "cft_off_announcement");
|
||||
|
||||
if (!deleteCFMap(my_handler, subId, SW_VSC_DESTSET_CFT, "cft"))
|
||||
{
|
||||
@@ -1627,14 +1387,7 @@
|
||||
if ((ret = regexec(&m_patterns->cfnaOnPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
- cfnaOnAnnouncement = m_patterns->audioPath + lang + m_patterns->cfnaOnAnnouncement;
|
||||
- if (m_patterns->cfnaOnAnnouncement.empty() || !file_exists(cfnaOnAnnouncement))
|
||||
- {
|
||||
- ERROR("CfnaOnAnnouncement file does not exist ('%s').\n",
|
||||
- cfnaOnAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
+ CHECK_ANNOUNCEMENT_PATH(cfnaOnAnnouncement, "cfna_on_announcement");
|
||||
|
||||
u_int64_t attId = getAttributeId(my_handler, "cfna");
|
||||
if (!attId)
|
||||
@@ -1707,14 +1460,7 @@
|
||||
if ((ret = regexec(&m_patterns->cfnaOffPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
- cfnaOffAnnouncement = m_patterns->audioPath + lang + m_patterns->cfnaOffAnnouncement;
|
||||
- if (m_patterns->cfnaOffAnnouncement.empty() || !file_exists(cfnaOffAnnouncement))
|
||||
- {
|
||||
- ERROR("CfnaOffAnnouncement file does not exist ('%s').\n",
|
||||
- cfnaOffAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
+ CHECK_ANNOUNCEMENT_PATH(cfnaOffAnnouncement, "cfna_off_announcement");
|
||||
|
||||
if (!deleteCFMap(my_handler, subId, SW_VSC_DESTSET_CFNA, "cfna"))
|
||||
{
|
||||
@@ -1762,14 +1508,7 @@
|
||||
if ((ret = regexec(&m_patterns->speedDialPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
- speedDialAnnouncement = m_patterns->audioPath + lang + m_patterns->speedDialAnnouncement;
|
||||
- if (m_patterns->speedDialAnnouncement.empty() || !file_exists(speedDialAnnouncement))
|
||||
- {
|
||||
- ERROR("SpeedDialAnnouncement file does not exist ('%s').\n",
|
||||
- speedDialAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
+ CHECK_ANNOUNCEMENT_PATH(speedDialAnnouncement, "speed_dial_announcement");
|
||||
|
||||
string slot = string("*") + req.user.substr(4, 1);
|
||||
if (!number2uri(req, my_handler, uuid, subId, domain, domId, 5,
|
||||
@@ -1801,14 +1540,7 @@
|
||||
if ((ret = regexec(&m_patterns->reminderOnPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
- reminderOnAnnouncement = m_patterns->audioPath + lang + m_patterns->reminderOnAnnouncement;
|
||||
- if (m_patterns->reminderOnAnnouncement.empty() || !file_exists(reminderOnAnnouncement))
|
||||
- {
|
||||
- ERROR("ReminderOnAnnouncement file does not exist ('%s').\n",
|
||||
- reminderOnAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
+ CHECK_ANNOUNCEMENT_PATH(reminderOnAnnouncement, "reminder_on_announcement");
|
||||
|
||||
int hour, min;
|
||||
string tim; char c_tim[6] = "";
|
||||
@@ -1856,14 +1588,7 @@
|
||||
if ((ret = regexec(&m_patterns->reminderOffPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
- reminderOffAnnouncement = m_patterns->audioPath + lang + m_patterns->reminderOffAnnouncement;
|
||||
- if (m_patterns->reminderOffAnnouncement.empty() || !file_exists(reminderOffAnnouncement))
|
||||
- {
|
||||
- ERROR("ReminderOffAnnouncement file does not exist ('%s').\n",
|
||||
- reminderOffAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
+ CHECK_ANNOUNCEMENT_PATH(reminderOffAnnouncement, "reminder_off_announcement");
|
||||
|
||||
if (!deleteReminder(my_handler, subId))
|
||||
{
|
||||
@@ -1889,14 +1614,7 @@
|
||||
if ((ret = regexec(&m_patterns->blockinclirOnPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
- blockinclirOnAnnouncement = m_patterns->audioPath + lang + m_patterns->blockinclirOnAnnouncement;
|
||||
- if (m_patterns->blockinclirOnAnnouncement.empty() || !file_exists(blockinclirOnAnnouncement))
|
||||
- {
|
||||
- ERROR("BlockinclirOnAnnouncement file does not exist ('%s').\n",
|
||||
- blockinclirOnAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
+ CHECK_ANNOUNCEMENT_PATH(blockinclirOnAnnouncement, "blockinclir_on_announcement");
|
||||
|
||||
std::string val = "1";
|
||||
u_int64_t attId = getAttributeId(my_handler, "block_in_clir");
|
||||
@@ -1945,14 +1663,7 @@
|
||||
if ((ret = regexec(&m_patterns->blockinclirOffPattern,
|
||||
req.user.c_str(), 0, 0, 0)) == 0)
|
||||
{
|
||||
- blockinclirOffAnnouncement = m_patterns->audioPath + lang + m_patterns->blockinclirOffAnnouncement;
|
||||
- if (m_patterns->blockinclirOffAnnouncement.empty() || !file_exists(blockinclirOffAnnouncement))
|
||||
- {
|
||||
- ERROR("BlockinclirOffAnnouncement file does not exist ('%s').\n",
|
||||
- blockinclirOffAnnouncement.c_str());
|
||||
- filename = failAnnouncement;
|
||||
- goto out;
|
||||
- }
|
||||
+ CHECK_ANNOUNCEMENT_PATH(blockinclirOffAnnouncement, "blockinclir_off_announcement");
|
||||
|
||||
u_int64_t attId = getAttributeId(my_handler, "block_in_clir");
|
||||
if (!attId)
|
||||
Loading…
Reference in new issue