123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- #ifndef RVC_MOD_COMM_ENTITY_HELP_AGGERATE_HPP_
- #define RVC_MOD_COMM_ENTITY_HELP_AGGERATE_HPP_
- #include <string>
- #include <regex.h>
- #include "SimpleString.h"
- namespace SP
- {
- namespace Module
- {
- namespace Ulitily
- {
- bool IsValidUrl(const CSimpleStringA& value)
- {
- if (value.IsNullOrEmpty()) {
- return false;
- } else {
- std::string strUrl = SP::Utility::ToLower(value.GetData());
- regex_t reg;
- CSimpleStringA pattern = "^((https|http)://)";
- pattern += "(([0-9a-z_!~*\\'().&=+$%-]+: )?[0-9a-z_!~*\\'().&=+$%-]+@)?";
- pattern += "(([0-9]{1,3}\\.){3}[0-9]{1,3}";
- pattern += "|";
- pattern += "([0-9a-z_!~*\\'()-]+\\.)*";
- pattern += "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\\.";
- pattern += "[a-z]{2,6})";
- pattern += "(:[0-9]{1,4})?";
- pattern += "((/?)|";
- pattern += "(/[0-9a-z_!~*\\'().;?:@&=+$,%#-]+)+/?)$";
- int ret = regcomp(®, pattern, REG_EXTENDED | REG_NOSUB);
- if (ret) {
- char ebuff[256];
- regerror(ret, ®, ebuff, 256);
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("regex failed: %s", ebuff);
- return false;
- }
- ret = regexec(®, strUrl.c_str(), 0, NULL, 0);
- if (0 == ret) {
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("correct url format: %s", strUrl.c_str());
- return true;
- } else {
- char ebuff[256];
- regerror(ret, ®, ebuff, 256);
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("%s not match: %s", strUrl.c_str(), ebuff);
- return false;
- }
- }
- }
- bool IsNum(const std::string& value)
- {
- if (value.empty()) {
- return false;
- }
- regex_t reg;
- const std::string pattern = "^[0-9]+$";
- int ret = regcomp(®, pattern.c_str(), REG_EXTENDED | REG_NOSUB);
- if (ret) {
- char ebuff[256];
- regerror(ret, ®, ebuff, 256);
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("regex failed: %s", ebuff);
- return false;
- }
- ret = regexec(®, value.c_str(), 0, NULL, 0);
- if (0 == ret) {
- return true;
- } else {
- char ebuff[256];
- regerror(ret, ®, ebuff, 256);
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("%s not match: %s", value.c_str(), ebuff);
- return false;
- }
- }
- bool CheckIPv4(const std::string& value)
- {
- if (value.empty()) {
- return false;
- }
- std::vector<std::string> elems = SP::Utility::Split(value, '.');
- if (elems.size() != 4) {
- return false;
- }
- for (int i = 0; i < 4; i++) {
- if (!IsNum(elems[i])) {
- return false;
- }
- if (elems[i].find(' ') != std::string::npos) {
- return false;
- }
- if ((elems[i].find('0') == 0) && (elems[i].length() != 1)) {
- return false;
- }
- }
- if ((stoi(elems[0]) < 0 || stoi(elems[0]) > 255) ||
- (stoi(elems[1]) < 0 || stoi(elems[1]) > 255) ||
- (stoi(elems[2]) < 0 || stoi(elems[2]) > 255) ||
- (stoi(elems[3]) < 0 || stoi(elems[3]) > 255)) {
- return false;
- }
- return true;
- }
- }
- }
- }
- #endif //RVC_MOD_COMM_ENTITY_HELP_AGGERATE_HPP_
|