Esempio n. 1
0
/*
 *	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;
}
Esempio n. 2
0
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);
}
Esempio n. 3
0
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);
}
Esempio n. 4
0
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>();
}
Esempio n. 5
0
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;
}