Mixe for Privacy and Anonymity in the Internet
Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes
CAListenerInterface Class Reference

#include <CAListenerInterface.hpp>

Collaboration diagram for CAListenerInterface:
[legend]

List of all members.

Public Member Functions

 CAListenerInterface (const CAListenerInterface &l)
CAListenerInterfaceoperator= (const CAListenerInterface &)
 ~CAListenerInterface (void)
NetworkType getType () const
SINT32 getHostName (UINT8 *buff, UINT32 bufflen) const
CASocketAddrgetAddr () const
bool isHidden () const
bool isVirtual () const
char * getHostname ()
SINT32 toDOMElement (DOMElement *&elem, XERCES_CPP_NAMESPACE::DOMDocument *ownerDoc) const

Static Public Member Functions

static CAListenerInterfacegetInstance (const DOMNode *node)
static CAListenerInterface ** getInstance (DOMElement *a_elemListenerInterfaces, UINT32 &r_length)
static CAListenerInterfacegetInstance (NetworkType type, const UINT8 *path)
static CAListenerInterfacegetInstance (NetworkType type, const UINT8 *hostnameOrIP, UINT16 port)

Static Public Attributes

static const char * XML_ELEMENT_CONTAINER_NAME = "ListenerInterfaces"
static const char * XML_ELEMENT_NAME = "ListenerInterface"

Private Member Functions

 CAListenerInterface (void)

Private Attributes

CASocketAddrm_pAddr
UINT8m_strHostname
NetworkType m_Type
bool m_bHidden
bool m_bVirtual

Detailed Description

Definition at line 6 of file CAListenerInterface.hpp.


Constructor & Destructor Documentation

Definition at line 42 of file CAListenerInterface.cpp.

References m_bHidden, m_bVirtual, m_pAddr, m_strHostname, m_Type, and UNKNOWN_NETWORKTYPE.

Referenced by getInstance().

Definition at line 12 of file CAListenerInterface.hpp.

References CASocketAddr::clone(), m_bHidden, m_bVirtual, m_pAddr, m_strHostname, and m_Type.

        {
          m_Type=l.m_Type;
          m_bHidden=l.m_bHidden;
          m_bVirtual=l.m_bVirtual;
          if(l.m_pAddr!=NULL)
            m_pAddr=l.m_pAddr->clone();
          else
            m_pAddr=NULL;
          if(l.m_strHostname!=NULL)
            {
              UINT32 i=strlen((char*)l.m_strHostname);
              m_strHostname=new UINT8[i+1];
              memcpy(m_strHostname,l.m_strHostname,i);
              m_strHostname[i]=0;
            }
          else
            m_strHostname=NULL;
        }

Here is the call graph for this function:

Definition at line 51 of file CAListenerInterface.cpp.

References m_pAddr, and m_strHostname.

  {
    delete m_pAddr;
    m_pAddr = NULL;
    delete[] m_strHostname;
    m_strHostname = NULL;
  }

Member Function Documentation

Definition at line 47 of file CAListenerInterface.hpp.

References CASocketAddr::clone(), and m_pAddr.

Referenced by CACmdLnOptions::createSockets(), CALocalProxy::init(), CAMiddleMix::init(), and CALastMix::init().

        {
          return m_pAddr->clone();
        }

Here is the call graph for this function:

SINT32 CAListenerInterface::getHostName ( UINT8 buff,
UINT32  bufflen 
) const

Definition at line 60 of file CAListenerInterface.hpp.

References m_strHostname.

{ return (char*)m_strHostname; }
CAListenerInterface * CAListenerInterface::getInstance ( const DOMNode *  node) [static]

elemListenerInterface.getNodeName().equals("ListenerInterface"))

Definition at line 154 of file CAListenerInterface.cpp.

References CAListenerInterface(), E_SUCCESS, getDOMChildByName(), getDOMElementAttribute(), getDOMElementValue(), HTTP_TCP, m_bHidden, m_bVirtual, m_pAddr, m_strHostname, m_Type, RAW_TCP, RAW_UNIX, SSL_TCP, SSL_UNIX, and strtrim().

Referenced by getInstance(), CACmdLnOptions::parse(), CACmdLnOptions::parseInfoServices(), CACmdLnOptions::setInfoServices(), and CACmdLnOptions::setListenerInterfaces().

  {
    if( elemListenerInterface==NULL||
        elemListenerInterface->getNodeType()!=DOMNode::ELEMENT_NODE)//||
      return NULL;
    CAListenerInterface* pListener=new CAListenerInterface();
    getDOMElementAttribute(elemListenerInterface,"hidden",pListener->m_bHidden);
    getDOMElementAttribute(elemListenerInterface,"virtual",pListener->m_bVirtual);
    DOMNode* elemType=NULL;
    getDOMChildByName(elemListenerInterface,"NetworkProtocol",elemType,false);
    if (elemType == NULL)
    {
      getDOMChildByName(elemListenerInterface,"Type",elemType,false);
    }
    UINT32 tmpLen = 255;
    UINT8 tmpBuff[255];
    if (elemType != NULL)
    {
      if(getDOMElementValue(elemType,tmpBuff,&tmpLen)!=E_SUCCESS)
        goto ERR;
      strtrim(tmpBuff);
      if(strcmp((char*)tmpBuff,"RAW/TCP")==0)
        pListener->m_Type=RAW_TCP;
      else if(strcmp((char*)tmpBuff,"RAW/UNIX")==0)
        pListener->m_Type=RAW_UNIX;
      else if(strcmp((char*)tmpBuff,"SSL/TCP")==0)
        pListener->m_Type=SSL_TCP;
      else if(strcmp((char*)tmpBuff,"SSL/UNIX")==0)
        pListener->m_Type=SSL_UNIX;
      else if (strcmp((char*)tmpBuff,"HTTP/TCP")==0)
      {
        pListener->m_Type=HTTP_TCP;
      }
      else
        goto ERR;
    }
    else
    {
      // infoservice old style <= config version 0.61
      pListener->m_Type=HTTP_TCP;
    }
    if(pListener->m_Type==SSL_TCP||pListener->m_Type==RAW_TCP
       ||pListener->m_Type==HTTP_TCP)
      { 
        DOMNode* elemIP=NULL;
        DOMElement* elemPort=NULL;
        DOMNode* elemHost=NULL;
        getDOMChildByName(elemListenerInterface,"Port",elemPort,false);
        UINT32 port;
        if(getDOMElementValue(elemPort,&port)!=E_SUCCESS)
          goto ERR;
        pListener->m_pAddr=new CASocketAddrINet;
        getDOMChildByName(elemListenerInterface,"IP",elemIP,false);
        if(elemIP!=NULL)
          {
            UINT8 buffIP[50];
            UINT32 buffIPLen=50;
            if(getDOMElementValue(elemIP,buffIP,&buffIPLen)!=E_SUCCESS)
              goto ERR;
            if(((CASocketAddrINet*)pListener->m_pAddr)->setAddr(buffIP,(UINT16)port)!=E_SUCCESS)
              goto ERR;
          }
        getDOMChildByName(elemListenerInterface,"Host",elemHost,false);
        tmpLen=255;                   
        if(getDOMElementValue(elemHost,tmpBuff,&tmpLen)==E_SUCCESS)
          {
            tmpBuff[tmpLen]=0;
            if(elemIP==NULL&&((CASocketAddrINet*)pListener->m_pAddr)->setAddr(tmpBuff,(UINT16)port)!=E_SUCCESS)
              goto ERR;
            pListener->m_strHostname=new UINT8[tmpLen+1];
            memcpy(pListener->m_strHostname,tmpBuff,tmpLen);
            pListener->m_strHostname[tmpLen]=0;
          }
        else if(elemIP==NULL)
          goto ERR;
      }
    else
      #ifdef HAVE_UNIX_DOMAIN_PROTOCOL
        {
          DOMElement* elemFile=NULL;
          getDOMChildByName(elemListenerInterface,"File",elemFile,false);
          tmpLen=255;
          if(getDOMElementValue(elemFile,tmpBuff,&tmpLen)!=E_SUCCESS)
            goto ERR;
          tmpBuff[tmpLen]=0;
          strtrim(tmpBuff);
          pListener->m_pAddr=new CASocketAddrUnix;
          if(((CASocketAddrUnix*)pListener->m_pAddr)->setPath((char*)tmpBuff)!=E_SUCCESS)
            goto ERR;
          pListener->m_strHostname=NULL;
        }
      #else
        goto ERR;
      #endif
    return pListener;
ERR:
    delete pListener;
    pListener = NULL;
    return NULL;
}

Here is the call graph for this function:

CAListenerInterface ** CAListenerInterface::getInstance ( DOMElement *  a_elemListenerInterfaces,
UINT32 r_length 
) [static]

Definition at line 91 of file CAListenerInterface.cpp.

References getElementsByTagName(), getInstance(), and XML_ELEMENT_NAME.

{
  CAListenerInterface** interfaces = NULL;
  if(a_elemListenerInterfaces!=NULL)
  {
    DOMNodeList* nlListenerInterfaces =
      getElementsByTagName(a_elemListenerInterfaces,CAListenerInterface::XML_ELEMENT_NAME);
    r_length=nlListenerInterfaces->getLength();
    if(r_length>0)
    {
      interfaces=new CAListenerInterface*[r_length];
      UINT32 aktInterface=0;
      for(UINT32 i=0;i<r_length;i++)
      {
        DOMNode* elemListenerInterface;
        elemListenerInterface=nlListenerInterfaces->item(i);
        CAListenerInterface* pListener=CAListenerInterface::getInstance(elemListenerInterface);
        if(pListener!=NULL)
        {
          interfaces[aktInterface++]=pListener;
        }
      }
      r_length=aktInterface;
    }
  } 
  else
  {
    r_length = 0;
    interfaces=NULL;
  }
      
  return interfaces;
}

Here is the call graph for this function:

CAListenerInterface * CAListenerInterface::getInstance ( NetworkType  type,
const UINT8 path 
) [static]

Definition at line 59 of file CAListenerInterface.cpp.

References CAListenerInterface(), m_pAddr, m_Type, RAW_UNIX, SSL_UNIX, and type.

  {
    #ifdef HAVE_UNIX_DOMAIN_PROTOCOL
      if( (type!=RAW_UNIX&&type!=SSL_UNIX)||
          file==NULL)
        return NULL;
      CAListenerInterface* pListener=new CAListenerInterface();
      pListener->m_Type=type;
      pListener->m_pAddr=new CASocketAddrUnix();
      ((CASocketAddrUnix*)pListener->m_pAddr)->setPath((const char*)file);
      return pListener;
    #else
      return NULL;
    #endif
  }

Here is the call graph for this function:

CAListenerInterface * CAListenerInterface::getInstance ( NetworkType  type,
const UINT8 hostnameOrIP,
UINT16  port 
) [static]

Definition at line 75 of file CAListenerInterface.cpp.

References CAListenerInterface(), E_SUCCESS, m_pAddr, m_Type, RAW_TCP, SSL_TCP, and type.

  {
    if( (type!=RAW_TCP&&type!=SSL_TCP))
      return NULL;
    CAListenerInterface* pListener=new CAListenerInterface();
    pListener->m_Type=type;
    pListener->m_pAddr=new CASocketAddrINet();
    if(((CASocketAddrINet*)pListener->m_pAddr)->setAddr(hostnameOrIP,port)!=E_SUCCESS)
      {
        delete pListener;
        pListener=NULL;
      }
    return pListener;
  }

Here is the call graph for this function:

Definition at line 41 of file CAListenerInterface.hpp.

References m_Type.

Referenced by CAMix::initMixCascadeInfo().

        {
          return m_Type;
        }
bool CAListenerInterface::isHidden ( ) const [inline]

Definition at line 52 of file CAListenerInterface.hpp.

References m_bHidden.

Referenced by CACmdLnOptions::createSockets(), and CAMix::initMixCascadeInfo().

        {
          return m_bHidden;
        }
bool CAListenerInterface::isVirtual ( ) const [inline]
CAListenerInterface& CAListenerInterface::operator= ( const CAListenerInterface )
SINT32 CAListenerInterface::toDOMElement ( DOMElement *&  elem,
XERCES_CPP_NAMESPACE::DOMDocument *  ownerDoc 
) const

Definition at line 127 of file CAListenerInterface.cpp.

References createDOMElement(), E_SUCCESS, m_pAddr, m_strHostname, and setDOMElementValue().

Referenced by CAMix::initMixCascadeInfo().

  {
    elemListenerInterface=createDOMElement(ownerDoc,"ListenerInterface");
    DOMElement* elem=createDOMElement(ownerDoc,"Type");
    elemListenerInterface->appendChild(elem);
    setDOMElementValue(elem,(UINT8*)"RAW/TCP");
    elem=createDOMElement(ownerDoc,"Port");
    elemListenerInterface->appendChild(elem);
    UINT32 port=((CASocketAddrINet*)m_pAddr)->getPort();
    setDOMElementValue(elem,port);
    elem=createDOMElement(ownerDoc,"Host");
    elemListenerInterface->appendChild(elem);
    UINT8 ip[50];
    if(m_strHostname!=NULL)
      setDOMElementValue(elem,m_strHostname);
    else 
      {
        ((CASocketAddrINet*)m_pAddr)->getIPAsStr(ip,50);
        setDOMElementValue(elem,ip);
      }
    elem=createDOMElement(ownerDoc,"IP");
    elemListenerInterface->appendChild(elem);
    ((CASocketAddrINet*)m_pAddr)->getIPAsStr(ip,50);
    setDOMElementValue(elem,ip);
    return E_SUCCESS;
  }

Here is the call graph for this function:


Member Data Documentation

Definition at line 71 of file CAListenerInterface.hpp.

Referenced by CAListenerInterface(), getInstance(), and isHidden().

Definition at line 72 of file CAListenerInterface.hpp.

Referenced by CAListenerInterface(), getInstance(), and isVirtual().

Definition at line 70 of file CAListenerInterface.hpp.

Referenced by CAListenerInterface(), getInstance(), and getType().

const char * CAListenerInterface::XML_ELEMENT_CONTAINER_NAME = "ListenerInterfaces" [static]

Definition at line 63 of file CAListenerInterface.hpp.

Referenced by CACmdLnOptions::parseInfoServices().

const char * CAListenerInterface::XML_ELEMENT_NAME = "ListenerInterface" [static]

Definition at line 64 of file CAListenerInterface.hpp.

Referenced by getInstance().


The documentation for this class was generated from the following files: