/* * UDP Syntax: [src op port] [dst op port] */ static int ParseUdpOrTcp(int argc, char const *const *argv, const struct protoent *pe, struct filterent *tgt) { tgt->f_srcop = tgt->f_dstop = OP_NONE; tgt->f_estab = tgt->f_syn = tgt->f_finrst = 0; if (argc >= 3 && !strcmp(*argv, "src")) { tgt->f_srcop = filter_Nam2Op(argv[1]); if (tgt->f_srcop == OP_NONE) { log_Printf(LogWARN, "ParseUdpOrTcp: bad operator\n"); return 0; } if (pe == NULL) return 0; tgt->f_srcport = ParsePort(argv[2], pe->p_name); if (tgt->f_srcport == 0) return 0; argc -= 3; argv += 3; } if (argc >= 3 && !strcmp(argv[0], "dst")) { tgt->f_dstop = filter_Nam2Op(argv[1]); if (tgt->f_dstop == OP_NONE) { log_Printf(LogWARN, "ParseUdpOrTcp: bad operator\n"); return 0; } if (pe == NULL) return 0; tgt->f_dstport = ParsePort(argv[2], pe->p_name); if (tgt->f_dstport == 0) return 0; argc -= 3; argv += 3; } if (pe && pe->p_proto == IPPROTO_TCP) { for (; argc > 0; argc--, argv++) if (!strcmp(*argv, "estab")) tgt->f_estab = 1; else if (!strcmp(*argv, "syn")) tgt->f_syn = 1; else if (!strcmp(*argv, "finrst")) tgt->f_finrst = 1; else break; } if (argc > 0) { log_Printf(LogWARN, "ParseUdpOrTcp: bad src/dst port syntax: %s\n", *argv); return 0; } return 1; }
std::string CHttpUrl::ParseDomainName(boost::string_ref const &url, size_t &index) { for (size_t i = 0; i != url.size(); ++i) { if (url[i] == '/') { index += i; return std::string(url.substr(0, i)); } if (url[i] == ':') { m_port = ParsePort(url, i + 1); return std::string(url.substr(0, i)); } } index += url.size(); return std::string(url); }
const char *ParseHostDetails(const char *Data,char **Host,char **Port,char **User, char **Password) { char *Token=NULL, *wptr; const char *ptr, *tptr; if (Port) *Port=CopyStr(*Port, ""); if (Host) *Host=CopyStr(*Host, ""); if (User) *User=CopyStr(*User, ""); if (Password) *Password=CopyStr(*Password, ""); ptr=strrchr(Data,'@'); if (ptr) { //in some cases there will be an '@' in the username, so GETTOKEN_QUOTES //should handle any @ which is prefixed with a \ to quote it out ptr=GetToken(Data,"@",&Token, GETTOKEN_QUOTES); if (User) { tptr=GetToken(Token,":",User,0); if (StrValid(tptr)) *Password=CopyStr(*Password,tptr); } } else ptr=Data; ptr=GetToken(ptr,"/",&Token,0); ptr=ParsePort(Token, Port); if (Host) { if (*Token=='[') { wptr=strrchr(Token,']'); if (wptr) *wptr='\0'; tptr=Token+1; } else tptr=Token; *Host=CopyStr(*Host, tptr); } DestroyString(Token); return(ptr); }
sparks::shared_ptr<INetworkListener> CListenerFactory::CreateListener( const std::string& address, sparks::shared_ptr<CThread> spThread ) { int nStartPos = 0; std::string ip; std::string type; sparks::int32 port = 0; if (ParseType(address, &nStartPos, type)) { if (ParseIPAddress(address, &nStartPos, ip)) { if (ParsePort(address, &nStartPos, port)) { // ½âÎö¸÷¸÷uri×ֶΠ} } } if (type == "tcp" && ip.length() && port != 0) { boost::asio::ip::tcp::endpoint point(boost::asio::ip::address::from_string(ip), port); return sparks::shared_ptr<INetworkListener>(new CTcpListener(spThread->GetIOService(), point)); } return sparks::shared_ptr<INetworkListener>(); }
const char* wxURI::ParseAuthority(const char* uri) { // authority = [ userinfo "@" ] host [ ":" port ] if ( uri[0] == '/' && uri[1] == '/' ) { //skip past the two slashes uri += 2; // ############# DEVIATION FROM RFC ######################### // Don't parse the server component for file URIs if(m_scheme != "file") { //normal way uri = ParseUserInfo(uri); uri = ParseServer(uri); return ParsePort(uri); } } return uri; }