|
Mixe for Privacy and Anonymity in the Internet
|
#include <CAListenerInterface.hpp>
Public Member Functions | |
| CAListenerInterface (const CAListenerInterface &l) | |
| CAListenerInterface & | operator= (const CAListenerInterface &) |
| ~CAListenerInterface (void) | |
| NetworkType | getType () const |
| SINT32 | getHostName (UINT8 *buff, UINT32 bufflen) const |
| CASocketAddr * | getAddr () const |
| bool | isHidden () const |
| bool | isVirtual () const |
| char * | getHostname () |
| SINT32 | toDOMElement (DOMElement *&elem, XERCES_CPP_NAMESPACE::DOMDocument *ownerDoc) const |
Static Public Member Functions | |
| static CAListenerInterface * | getInstance (const DOMNode *node) |
| static CAListenerInterface ** | getInstance (DOMElement *a_elemListenerInterfaces, UINT32 &r_length) |
| static CAListenerInterface * | getInstance (NetworkType type, const UINT8 *path) |
| static CAListenerInterface * | getInstance (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 | |
| CASocketAddr * | m_pAddr |
| UINT8 * | m_strHostname |
| NetworkType | m_Type |
| bool | m_bHidden |
| bool | m_bVirtual |
Definition at line 6 of file CAListenerInterface.hpp.
| CAListenerInterface::CAListenerInterface | ( | void | ) | [private] |
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().
{
m_bHidden=false;
m_bVirtual=false;
m_strHostname=NULL;
m_pAddr=NULL;
m_Type=UNKNOWN_NETWORKTYPE;
}
| CAListenerInterface::CAListenerInterface | ( | const CAListenerInterface & | l | ) | [inline] |
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;
}
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;
}
| CASocketAddr* CAListenerInterface::getAddr | ( | ) | const [inline] |
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().
| SINT32 CAListenerInterface::getHostName | ( | UINT8 * | buff, |
| UINT32 | bufflen | ||
| ) | const |
| char* CAListenerInterface::getHostname | ( | ) | [inline] |
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;
}
| 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;
}
| 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
}
| 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;
}
| NetworkType CAListenerInterface::getType | ( | ) | const [inline] |
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] |
Definition at line 56 of file CAListenerInterface.hpp.
References m_bVirtual.
Referenced by CACmdLnOptions::createSockets(), CAMiddleMix::init(), CALastMix::init(), and CAFirstMix::initOnce().
{
return m_bVirtual;
}
| 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;
}
bool CAListenerInterface::m_bHidden [private] |
Definition at line 71 of file CAListenerInterface.hpp.
Referenced by CAListenerInterface(), getInstance(), and isHidden().
bool CAListenerInterface::m_bVirtual [private] |
Definition at line 72 of file CAListenerInterface.hpp.
Referenced by CAListenerInterface(), getInstance(), and isVirtual().
CASocketAddr* CAListenerInterface::m_pAddr [private] |
Definition at line 68 of file CAListenerInterface.hpp.
Referenced by CAListenerInterface(), getAddr(), getInstance(), toDOMElement(), and ~CAListenerInterface().
UINT8* CAListenerInterface::m_strHostname [private] |
Definition at line 69 of file CAListenerInterface.hpp.
Referenced by CAListenerInterface(), getHostname(), getInstance(), toDOMElement(), and ~CAListenerInterface().
NetworkType CAListenerInterface::m_Type [private] |
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().
1.7.6.1