HttpsClientTransport::HttpsClientTransport(const HttpsEndpoint & httpsEndpoint) : 
        TcpClientTransport(httpsEndpoint.getIp(), httpsEndpoint.getPort())
    {
        std::vector<FilterPtr> wireFilters;

        // HTTP framing.
        wireFilters.push_back( FilterPtr( new HttpFrameFilter(
            getRemoteAddr().getIp(), 
            getRemoteAddr().getPort())));

        // SSL.
        ClientStub * pClientStub = getTlsClientStubPtr();
        RCF_ASSERT(pClientStub);

        FilterPtr sslFilterPtr;

#if RCF_FEATURE_SSPI==1 && RCF_FEATURE_OPENSSL==1

        if (pClientStub->getSslImplementation() == Si_Schannel)
        {
            sslFilterPtr.reset( new SchannelFilter(pClientStub) );
        }
        else
        {
            RCF_ASSERT(pClientStub->getSslImplementation() == Si_OpenSsl);
            sslFilterPtr.reset( new OpenSslEncryptionFilter(pClientStub) );
        }

#elif RCF_FEATURE_SSPI==1

        sslFilterPtr.reset( new SchannelFilter(pClientStub) );

#elif RCF_FEATURE_OPENSSL==1

        sslFilterPtr.reset( new OpenSslEncryptionFilter(pClientStub) );

#endif

        if (!sslFilterPtr)
        {
            RCF_THROW( Exception(_RcfError_SslNotSupported()) );
        }

        wireFilters.push_back(sslFilterPtr);

        // HTTP CONNECT filter for passing through a proxy.
        wireFilters.push_back( FilterPtr( new HttpConnectFilter(
            getRemoteAddr().getIp(), 
            getRemoteAddr().getPort())));

        setWireFilters(wireFilters);
    }
Пример #2
0
bool
PPPStats::isUp()
{
  struct ifreq ifreq;
 
  memset( &ifreq, 0, sizeof (ifreq));
  sprintf( ifreq.ifr_ifrn.ifrn_name, "ppp%d", pppDev );

  if (ioctl (soc, SIOCGIFFLAGS, (caddr_t) & ifreq) == 0)
  {
    if ((ifreq.ifr_flags & (IFF_UP|IFF_RUNNING)) != 0) 
    {
      if (!pppUp) 
      {
        pppUp = true;
        emit pppStatus( true );
        getRemoteAddr();
      }
           
      return true;
    }
  }
  
  if (pppUp) 
  {
    pppUp = false;
    emit pppStatus( false );
    emit remoteAddr( "n/a" );
  }
  
  return false;
}
Пример #3
0
		int handleRead(NINA::NINAHandle)
		{
			mSize  = getPeer().receive(mBuf, BUFSIZE);
			if (mSize == 0) {
				std::cout << "Client " << getRemoteAddr().getHostAddr() << " disconnected" << std::endl;
				delete this;
				return 1;
			}
			else {
				mBuf[mSize] = '\0';
				std::cout << "Received : " << mBuf << std::endl;
				NINA::Reactor<POLICY>::getSingleton().registerHandler(this, NINA::Events::WRITE);
			}
			return 0;
		}
Пример #4
0
void MakeSessionFiles(s_info * info)
{
	char str[80];

/* Generate File Names Based on the REMOTE IP ADDR */
	info->pREMOTE_ADDR = strdup(getRemoteAddr());

	info->pGNUPLOT =
	    strdup(strcat(strcpy(str, CALL_GNUPLOT), info->pREMOTE_ADDR));
	info->pFILENAME_T_OUT =
	    strdup(strcat(strcpy(str, FILENAME_T_OUT), info->pREMOTE_ADDR));
	info->pFILENAME_RAW_OUT =
	    strdup(strcat(strcpy(str, FILENAME_RAW_OUT), info->pREMOTE_ADDR));
	info->pFILENAME_GNUPLT =
	    strdup(strcat(strcpy(str, FILENAME_GNUPLT), info->pREMOTE_ADDR));

	return;
};
Пример #5
0
		int init()
		{
			NINA::Reactor<POLICY>::getSingleton().registerHandler(this, NINA::Events::READ);
			std::cout << "Client joined : " << getRemoteAddr().getHostAddr() << std::endl;
			return 0;
		}