IncomingConnectionValidator.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #include "IncomingConnectionValidator.hpp"
  2. #include <boost/algorithm/string.hpp>
  3. using namespace std;
  4. sip::IncomingConnectionValidator::IncomingConnectionValidator(std::string validUriExpression)
  5. : validUriExpression(validUriExpression),
  6. logger(log4cpp::Category::getInstance("IncomingConnectionValidator")) {
  7. vector<string> separateUris;
  8. boost::split(separateUris, validUriExpression, boost::is_any_of("\t "));
  9. for (auto &uri : separateUris) {
  10. boost::replace_all(uri, ".", "\\.");
  11. boost::replace_all(uri, "*", "[\\+\\.\\w]*");
  12. uriRegexVec.push_back(boost::regex(uri));
  13. }
  14. }
  15. bool sip::IncomingConnectionValidator::validateUri(std::string uri) {
  16. return true;
  17. boost::regex addressRegex("[\"\\+\\w\\. ]*<?sip:([\\+\\w\\.]+@[\\w\\.]+)>?");
  18. boost::smatch s;
  19. if (not boost::regex_match(uri, s, addressRegex)) {
  20. logger.warn("URI has invalid format: %s", uri.c_str());
  21. return false;
  22. }
  23. string rawAddress = s[1].str();
  24. for (auto &reg : uriRegexVec) {
  25. if (boost::regex_match(rawAddress, s, reg)) {
  26. logger.info("URI %s is valid.", rawAddress.c_str());
  27. return true;
  28. }
  29. }
  30. logger.info("URI %s not valid.", rawAddress.c_str());
  31. return false;
  32. }