| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #include "CallStringMaker.h"
- #include "Config.h"
- #include "Log.h"
- #include "FsProxy.h"
- #include <regex>
- CCallStringMaker::CCallStringMaker(void)
- {
- }
- CCallStringMaker::~CCallStringMaker(void)
- {
- }
- bool CCallStringMaker::makeCallString(std::string & CallerNum, std::string & CalleeNum, std::string & CallString)
- {
- if (CFsProxy::GetInstance().getExten(atoi(CalleeNum.c_str())) != nullptr)
- return __make(CalleeNum, CallString);
- return __make(CallerNum,CalleeNum,CallString);
- }
- bool CCallStringMaker::makeCallStringWithDefault(std::string & CallerNum, std::string & CalleeNum, std::string & CallString)
- {
- return false;
- }
- bool CCallStringMaker::isMatchPrefix(const std::string & CalleeNum)
- {
- if (CFsProxy::GetInstance().getExten(atoi(CalleeNum.c_str())) != nullptr)
- return false;
- auto cfg = CConfig::GetInstance();
- cfg->gateWayPrefix();
- std::string reg;
- reg = boost::str(Format("^%s(.*)$") % cfg->gateWayPrefix());
- if (std::regex_match(CalleeNum, std::regex(reg)))
- return true;
- return false;
- }
- bool CCallStringMaker::__make(std::string & CallerNum, std::string & CalleeNum, std::string & CallString)
- {
- auto cfg = CConfig::GetInstance();
- cfg->gateWayPrefix();
- std::string reg;
- reg = boost::str(Format("^%s(.*)$") % cfg->gateWayPrefix());
- if (!std::regex_match(CalleeNum, std::regex(reg)))
- return false;
- if (CallerNum.empty())
- CallerNum = cfg->gateWayCaller();
- CalleeNum = std::regex_replace(CalleeNum, std::regex(reg), "$1");
- if (cfg->isDynamicGw()) {
- auto strGwIp = CFsProxy::GetInstance().getGwIP(cfg->gateWayAccount());
- CallString = boost::str(Format("sofia/internal/%s%s") % CalleeNum % strGwIp);
- }
- else {
- CallString = boost::str(Format("sofia/gateway/%s/%s") % cfg->gateWayAccount() % CalleeNum);
- }
- return true;
- }
- bool CCallStringMaker::__make(std::string & CalleeNum, std::string & CallString)
- {
- CallString = boost::str(Format("user/%s") % CalleeNum);
- return true;
- }
|