Mixes for Privacy and Anonymity in the Internet
Classes | Defines | Typedefs | Functions
CACmdLnOptions.hpp File Reference

Classes

class  CACmdLnOptions

Defines

#define REGEXP_BUFF_SIZE   4096
#define DEFAULT_TARGET_PORT   6544
#define DEFAULT_CONFIG_FILE   "default.xml"
#define MIN_INFOSERVICES   1
#define WITH_SUBTREE   true
#define WITHOUT_SUBTREE   (!(WITHSUBTREE))
#define OPTIONS_NODE_GENERAL   "General"
#define OPTIONS_NODE_MIX_TYPE   "MixType"
#define OPTIONS_NODE_MIX_NAME   "MixName"
#define OPTIONS_NODE_MIX_ID   "MixID"
#define OPTIONS_NODE_DYNAMIC_MIX   "Dynamic"
#define OPTIONS_NODE_MIN_CASCADE_LENGTH   "MinCascadeLength"
#define OPTIONS_NODE_CASCADE_NAME   "CascadeName"
#define OPTIONS_NODE_USER_ID   "UserID"
#define OPTIONS_NODE_FD_NR   "NrOfFileDescriptors"
#define OPTIONS_NODE_DAEMON   "Daemon"
#define OPTIONS_NODE_MAX_USERS   "MaxUsers"
#define OPTIONS_NODE_PAYMENT_REMINDER   "PaymentReminderProbability"
#define OPTIONS_NODE_LOGGING   "Logging"
#define OPTIONS_NODE_LOGGING_CONSOLE   "Console"
#define OPTIONS_NODE_LOGGING_FILE   "File"
#define OPTIONS_ATTRIBUTE_LOGGING_MAXFILESIZE   "MaxFileSize"
#define OPTIONS_ATTRIBUTE_LOGGING_MAXFILES   "MaxFiles"
#define LOGGING_MAXFILES_DEFAULT   10
#define OPTIONS_NODE_SYSLOG   "Syslog"
#define OPTIONS_NODE_ENCRYPTED_LOG   "EncryptedLog"
#define OPTIONS_NODE_LOGGING_KEYINFO   "KeyInfo"
#define OPTIONS_NODE_DESCRIPTION   "Description"
#define OPTIONS_ATTRIBUTE_NAME_FOR_CASCADE   "forCascade"
#define OPTIONS_VALUE_OPERATOR_NAME   "Operator"
#define OPTIONS_VALUE_MIX_NAME   "Mix"
#define OPTIONS_VALUE_NAMETYPE_DEFAULT   OPTIONS_VALUE_MIX_NAME
#define OPTIONS_NODE_CERTIFICATE_LIST   "Certificates"
#define OPTIONS_NODE_OWN_CERTIFICATE   "OwnCertificate"
#define OPTIONS_NODE_OWN_OPERATOR_CERTIFICATE   "OperatorOwnCertificate"
#define OPTIONS_NODE_NEXT_MIX_CERTIFICATE   "NextMixCertificate"
#define OPTIONS_NODE_NEXT_OPERATOR_CERTIFICATE   "NextOperatorCertificate"
#define OPTIONS_NODE_PREV_MIX_CERTIFICATE   "PrevMixCertificate"
#define OPTIONS_NODE_PREV_OPERATOR_CERTIFICATE   "PrevOperatorCertificate"
#define OPTIONS_NODE_TRUSTED_ROOT_CERTIFICATES   "TrustedRootCertificates"
#define OPTIONS_NODE_MIX_CERTIFICATE_VERIFICATION   "MixCertificateVerification"
#define OPTIONS_NODE_X509DATA   "X509Data"
#define OPTIONS_NODE_X509_CERTIFICATE   "X509Certificate"
#define OPTIONS_NODE_X509_PKCS12   "X509PKCS12"
#define OPTIONS_NODE_SIGNATURE   "Signature"
#define OPTIONS_NODE_ACCOUNTING   "Accounting"
#define OPTIONS_NODE_PRICE_CERTIFICATE   "PriceCertificate"
#define OPTIONS_NODE_PAYMENT_INSTANCE   CAXMLBI::getXMLElementName()
#define OPTIONS_NODE_AI_SOFT_LIMIT   "SoftLimit"
#define OPTIONS_NODE_AI_HARD_LIMIT   "HardLimit"
#define OPTIONS_NODE_SETTLE_IVAL   "SettleInterval"
#define OPTIONS_NODE_PREPAID_IVAL   "PrepaidInterval"
#define OPTIONS_NODE_PREPAID_IVAL_KB   "PrepaidIntervalKbytes"
#define OPTIONS_NODE_AI_DB   "Database"
#define OPTIONS_NODE_AI_DB_HOST   "Host"
#define OPTIONS_NODE_AI_DB_PORT   "Port"
#define OPTIONS_NODE_AI_DB_NAME   "DBName"
#define OPTIONS_NODE_AI_DB_USER   "Username"
#define OPTIONS_NODE_AI_DB_PASSW   "Password"
#define OPTIONS_DEFAULT_PREPAID_IVAL   3000000
#define OPTIONS_NODE_NETWORK   "Network"
#define OPTIONS_NODE_INFOSERVICE_LIST   "InfoServices"
#define OPTIONS_NODE_INFOSERVICE   "InfoService"
#define OPTIONS_NODE_ALLOW_AUTO_CONF   "AllowAutoConfiguration"
#define OPTIONS_NODE_LISTENER_INTERFACES   CAListenerInterface::XML_ELEMENT_CONTAINER_NAME
#define OPTIONS_NODE_NEXT_MIX   "NextMix"
#define OPTIONS_NODE_NETWORK_PROTOCOL   "NetworkProtocol"
#define OPTIONS_NODE_IP   "IP"
#define OPTIONS_NODE_PROXY_LIST   "Proxies"
#define OPTIONS_NODE_PROXY   "Proxy"
#define OPTIONS_NODE_PROXY_TYPE   "ProxyType"
#define OPTIONS_NODE_SERVER_MONITORING   "ServerMonitoring"
#define OPTIONS_NODE_VISIBLE_ADDRESS_LIST   "VisibleAddresses"
#define OPTIONS_NODE_VISIBLE_ADDRESS   "VisibleAddress"
#define OPTIONS_NODE_LISTENER_INTERFACE_LIST   CAListenerInterface::XML_ELEMENT_CONTAINER_NAME
#define OPTIONS_NODE_LISTENER_INTERFACE   CAListenerInterface::XML_ELEMENT_NAME
#define OPTIONS_NODE_KEEP_ALIVE   "KeepAlive"
#define OPTIONS_NODE_KEEP_ALIVE_SEND_IVAL   "SendInterval"
#define OPTIONS_NODE_KEEP_ALIVE_RECV_IVAL   "ReceiveInterval"
#define OPTIONS_NODE_IP   "IP"
#define OPTIONS_NODE_HOST   "Host"
#define OPTIONS_NODE_PORT   "Port"
#define OPTIONS_NODE_FILE   "File"
#define OPTIONS_NODE_RESSOURCES   "Ressources"
#define OPTIONS_NODE_UNLIMIT_TRAFFIC   "UnlimitTraffic"
#define OPTIONS_NODE_BYTES_PER_IVAL   "BytesPerIntervall"
#define OPTIONS_NODE_DELAY_IVAL   "Intervall"
#define OPTIONS_NODE_LATENCY   "Latency"
#define OPTIONS_NODE_TNCS_OPTS   "TermsAndConditionsOptions"
#define OPTIONS_NODE_TNCS_TEMPLATES   "Templates"
#define OPTIONS_NODE_TNCS_TEMPLATE   "Template"
#define OPTIONS_NODE_TNCS   "TermsAndConditions"
#define OPTIONS_NODE_TNCS_TRANSLATION   "TCTranslation"
#define OPTIONS_NODE_TNCS_TRANSLATION_IMPORTS   "TCTranslationImports"
#define OPTIONS_NODE_TNCS_OPERATOR   "Operator"
#define OPTIONS_ATTRIBUTE_TNC_DATE   "date"
#define OPTIONS_ATTRIBUTE_TNC_SERIAL   "serial"
#define OPTIONS_ATTRIBUTE_TNC_VERSION   "version"
#define OPTIONS_ATTRIBUTE_TNC_LOCALE   "locale"
#define OPTIONS_ATTRIBUTE_TNC_TEMPLATE_TYPE   "type"
#define OPTIONS_ATTRIBUTE_TNC_ID   "id"
#define OPTIONS_ATTRIBUTE_TNC_TEMPLATE_REFID   "referenceId"
#define OPTIONS_ATTRIBUTE_TNC_DEFAULT_LANG_DEFINED   "default"
#define OPTIONS_ATTRIBUTE_TNC_DEFAULT_LANG   "defaultLang"
#define OPTIONS_NODE_CRIME_DETECTION   "CrimeDetection"
#define OPTIONS_NODE_CRIME_REGEXP_URL   "RegExpURL"
#define OPTIONS_NODE_CRIME_REGEXP_PAYLOAD   "RegExpPayload"
#define OPTIONS_NODE_CRIME_SURVEILLANCE_IP   "SurveillanceIP"
#define OPTIONS_NODE_CRIME_SURVEILLANCE_ACCOUNT   "PayAccountNumber"
#define OPTIONS_ATTRIBUTE_LOG_PAYLOAD   "logPayload"
#define MIXINFO_NODE_PARENT   "Mix"
#define MIXINFO_NODE_MIX_NAME   "Name"
#define MIXINFO_NODE_SOFTWARE   "Software"
#define MIXINFO_NODE_VERSION   "Version"
#define MIXINFO_NODE_PAYMENTREMINDER   "PaymentReminderProbability"
#define MIXINFO_ATTRIBUTE_MIX_ID   "id"
#define LOG_NODE_NOT_FOUND(Nodename)   CAMsg::printMsg(LOG_CRIT,"No \"%s\" node found in configuration file!\n", (Nodename))
#define LOG_NODE_EMPTY_OR_INVALID(Nodename)   CAMsg::printMsg(LOG_CRIT,"Node \"%s\" is empty or has invalid content!\n", (Nodename))
#define LOG_NODE_WRONG_PARENT(Parentname, Childname)   CAMsg::printMsg(LOG_CRIT,"\"%s\" is the wrong parent for Node \"%s\"\n", (Parentname), (Childname))
#define ASSERT_PARENT_NODE_NAME(Parentname, NameToMatch, Childname)
#define ASSERT_GENERAL_OPTIONS_PARENT(Parentname, Childname)   ASSERT_PARENT_NODE_NAME(Parentname, OPTIONS_NODE_GENERAL, Childname)
#define ASSERT_CERTIFICATES_OPTIONS_PARENT(Parentname, Childname)   ASSERT_PARENT_NODE_NAME(Parentname, OPTIONS_NODE_CERTIFICATE_LIST, Childname)
#define ASSERT_ACCOUNTING_OPTIONS_PARENT(Parentname, Childname)   ASSERT_PARENT_NODE_NAME(Parentname, OPTIONS_NODE_ACCOUNTING, Childname)
#define ASSERT_NETWORK_OPTIONS_PARENT(Parentname, Childname)   ASSERT_PARENT_NODE_NAME(Parentname, OPTIONS_NODE_NETWORK, Childname)
#define ASSERT_CRIME_DETECTION_OPTIONS_PARENT(Parentname, Childname)   ASSERT_PARENT_NODE_NAME(Parentname, OPTIONS_NODE_CRIME_DETECTION, Childname)
#define MAIN_OPTION_SETTERS_NR   8
#define GENERAL_OPTIONS_NR   12
#define MAX_CERTIFICATE_OPTIONS_NR   6
#define ACCOUNTING_OPTIONS_NR   7
#define NETWORK_OPTIONS_NR   5
#define TERMS_AND_CONDITIONS_OPTIONS_NR   2

Typedefs

typedef SINT32(CACmdLnOptions::* optionSetter_pt )(DOMElement *)

Functions

THREAD_RETURN threadReConfigure (void *param)
 Thread that does the actual reconfigure work.
SINT32 setRegExpressions (DOMElement *rootElement, const char *const childElementName, regex_t **regExContainer, UINT32 *regExNr)

Define Documentation

#define ACCOUNTING_OPTIONS_NR   7
#define ASSERT_ACCOUNTING_OPTIONS_PARENT (   Parentname,
  Childname 
)    ASSERT_PARENT_NODE_NAME(Parentname, OPTIONS_NODE_ACCOUNTING, Childname)
#define ASSERT_CERTIFICATES_OPTIONS_PARENT (   Parentname,
  Childname 
)    ASSERT_PARENT_NODE_NAME(Parentname, OPTIONS_NODE_CERTIFICATE_LIST, Childname)
#define ASSERT_CRIME_DETECTION_OPTIONS_PARENT (   Parentname,
  Childname 
)    ASSERT_PARENT_NODE_NAME(Parentname, OPTIONS_NODE_CRIME_DETECTION, Childname)
#define ASSERT_GENERAL_OPTIONS_PARENT (   Parentname,
  Childname 
)    ASSERT_PARENT_NODE_NAME(Parentname, OPTIONS_NODE_GENERAL, Childname)
#define ASSERT_NETWORK_OPTIONS_PARENT (   Parentname,
  Childname 
)    ASSERT_PARENT_NODE_NAME(Parentname, OPTIONS_NODE_NETWORK, Childname)
#define ASSERT_PARENT_NODE_NAME (   Parentname,
  NameToMatch,
  Childname 
)
Value:
if(!equals((Parentname), (NameToMatch) ))       \
  {                         \
    char *parentName = XMLString::transcode(Parentname); \
    LOG_NODE_WRONG_PARENT(parentName, Childname); \
    XMLString::release(&parentName);        \
    return E_UNKNOWN;               \
  }

Referenced by CACmdLnOptions::addVisibleAddresses().

#define DEFAULT_CONFIG_FILE   "default.xml"

Referenced by CACmdLnOptions::parse().

#define DEFAULT_TARGET_PORT   6544

Referenced by CACmdLnOptions::parse().

#define GENERAL_OPTIONS_NR   12
#define LOG_NODE_EMPTY_OR_INVALID (   Nodename)    CAMsg::printMsg(LOG_CRIT,"Node \"%s\" is empty or has invalid content!\n", (Nodename))
#define LOG_NODE_NOT_FOUND (   Nodename)    CAMsg::printMsg(LOG_CRIT,"No \"%s\" node found in configuration file!\n", (Nodename))
#define LOG_NODE_WRONG_PARENT (   Parentname,
  Childname 
)    CAMsg::printMsg(LOG_CRIT,"\"%s\" is the wrong parent for Node \"%s\"\n", (Parentname), (Childname))
#define LOGGING_MAXFILES_DEFAULT   10
#define MAIN_OPTION_SETTERS_NR   8
#define MIN_INFOSERVICES   1
#define MIXINFO_ATTRIBUTE_MIX_ID   "id"
#define MIXINFO_NODE_MIX_NAME   "Name"
#define MIXINFO_NODE_PARENT   "Mix"
#define MIXINFO_NODE_PAYMENTREMINDER   "PaymentReminderProbability"
#define MIXINFO_NODE_SOFTWARE   "Software"
#define MIXINFO_NODE_VERSION   "Version"
#define NETWORK_OPTIONS_NR   5
#define OPTIONS_ATTRIBUTE_LOG_PAYLOAD   "logPayload"
#define OPTIONS_ATTRIBUTE_LOGGING_MAXFILES   "MaxFiles"
#define OPTIONS_ATTRIBUTE_LOGGING_MAXFILESIZE   "MaxFileSize"
#define OPTIONS_ATTRIBUTE_NAME_FOR_CASCADE   "forCascade"
#define OPTIONS_ATTRIBUTE_TNC_DATE   "date"
#define OPTIONS_ATTRIBUTE_TNC_DEFAULT_LANG   "defaultLang"
#define OPTIONS_ATTRIBUTE_TNC_ID   "id"
#define OPTIONS_ATTRIBUTE_TNC_LOCALE   "locale"
#define OPTIONS_ATTRIBUTE_TNC_SERIAL   "serial"
#define OPTIONS_ATTRIBUTE_TNC_TEMPLATE_REFID   "referenceId"
#define OPTIONS_ATTRIBUTE_TNC_VERSION   "version"
#define OPTIONS_DEFAULT_PREPAID_IVAL   3000000
#define OPTIONS_NODE_ACCOUNTING   "Accounting"
#define OPTIONS_NODE_AI_DB   "Database"
#define OPTIONS_NODE_AI_DB_HOST   "Host"
#define OPTIONS_NODE_AI_DB_NAME   "DBName"
#define OPTIONS_NODE_AI_DB_PASSW   "Password"
#define OPTIONS_NODE_AI_DB_PORT   "Port"
#define OPTIONS_NODE_AI_DB_USER   "Username"
#define OPTIONS_NODE_AI_HARD_LIMIT   "HardLimit"
#define OPTIONS_NODE_AI_SOFT_LIMIT   "SoftLimit"
#define OPTIONS_NODE_ALLOW_AUTO_CONF   "AllowAutoConfiguration"
#define OPTIONS_NODE_BYTES_PER_IVAL   "BytesPerIntervall"
#define OPTIONS_NODE_CASCADE_NAME   "CascadeName"
#define OPTIONS_NODE_CERTIFICATE_LIST   "Certificates"
#define OPTIONS_NODE_CRIME_DETECTION   "CrimeDetection"
#define OPTIONS_NODE_CRIME_REGEXP_PAYLOAD   "RegExpPayload"
#define OPTIONS_NODE_CRIME_REGEXP_URL   "RegExpURL"
#define OPTIONS_NODE_CRIME_SURVEILLANCE_ACCOUNT   "PayAccountNumber"
#define OPTIONS_NODE_CRIME_SURVEILLANCE_IP   "SurveillanceIP"
#define OPTIONS_NODE_DAEMON   "Daemon"
#define OPTIONS_NODE_DELAY_IVAL   "Intervall"
#define OPTIONS_NODE_DESCRIPTION   "Description"
#define OPTIONS_NODE_DYNAMIC_MIX   "Dynamic"
#define OPTIONS_NODE_ENCRYPTED_LOG   "EncryptedLog"
#define OPTIONS_NODE_FD_NR   "NrOfFileDescriptors"
#define OPTIONS_NODE_FILE   "File"
#define OPTIONS_NODE_GENERAL   "General"
#define OPTIONS_NODE_HOST   "Host"
#define OPTIONS_NODE_INFOSERVICE   "InfoService"
#define OPTIONS_NODE_INFOSERVICE_LIST   "InfoServices"
#define OPTIONS_NODE_IP   "IP"
#define OPTIONS_NODE_IP   "IP"
#define OPTIONS_NODE_KEEP_ALIVE   "KeepAlive"
#define OPTIONS_NODE_KEEP_ALIVE_RECV_IVAL   "ReceiveInterval"
#define OPTIONS_NODE_KEEP_ALIVE_SEND_IVAL   "SendInterval"
#define OPTIONS_NODE_LATENCY   "Latency"
#define OPTIONS_NODE_LOGGING   "Logging"
#define OPTIONS_NODE_LOGGING_CONSOLE   "Console"
#define OPTIONS_NODE_LOGGING_FILE   "File"
#define OPTIONS_NODE_LOGGING_KEYINFO   "KeyInfo"
#define OPTIONS_NODE_MAX_USERS   "MaxUsers"
#define OPTIONS_NODE_MIN_CASCADE_LENGTH   "MinCascadeLength"
#define OPTIONS_NODE_MIX_CERTIFICATE_VERIFICATION   "MixCertificateVerification"
#define OPTIONS_NODE_MIX_ID   "MixID"
#define OPTIONS_NODE_MIX_NAME   "MixName"
#define OPTIONS_NODE_MIX_TYPE   "MixType"
#define OPTIONS_NODE_NETWORK   "Network"
#define OPTIONS_NODE_NETWORK_PROTOCOL   "NetworkProtocol"
#define OPTIONS_NODE_NEXT_MIX   "NextMix"
#define OPTIONS_NODE_NEXT_MIX_CERTIFICATE   "NextMixCertificate"
#define OPTIONS_NODE_NEXT_OPERATOR_CERTIFICATE   "NextOperatorCertificate"
#define OPTIONS_NODE_OWN_CERTIFICATE   "OwnCertificate"
#define OPTIONS_NODE_OWN_OPERATOR_CERTIFICATE   "OperatorOwnCertificate"
#define OPTIONS_NODE_PAYMENT_REMINDER   "PaymentReminderProbability"
#define OPTIONS_NODE_PORT   "Port"
#define OPTIONS_NODE_PREPAID_IVAL   "PrepaidInterval"
#define OPTIONS_NODE_PREPAID_IVAL_KB   "PrepaidIntervalKbytes"
#define OPTIONS_NODE_PREV_MIX_CERTIFICATE   "PrevMixCertificate"
#define OPTIONS_NODE_PREV_OPERATOR_CERTIFICATE   "PrevOperatorCertificate"
#define OPTIONS_NODE_PRICE_CERTIFICATE   "PriceCertificate"
#define OPTIONS_NODE_PROXY   "Proxy"
#define OPTIONS_NODE_PROXY_LIST   "Proxies"
#define OPTIONS_NODE_PROXY_TYPE   "ProxyType"
#define OPTIONS_NODE_RESSOURCES   "Ressources"
#define OPTIONS_NODE_SERVER_MONITORING   "ServerMonitoring"
#define OPTIONS_NODE_SETTLE_IVAL   "SettleInterval"
#define OPTIONS_NODE_SIGNATURE   "Signature"
#define OPTIONS_NODE_SYSLOG   "Syslog"
#define OPTIONS_NODE_TNCS   "TermsAndConditions"
#define OPTIONS_NODE_TNCS_OPERATOR   "Operator"
#define OPTIONS_NODE_TNCS_OPTS   "TermsAndConditionsOptions"
#define OPTIONS_NODE_TNCS_TEMPLATE   "Template"
#define OPTIONS_NODE_TNCS_TEMPLATES   "Templates"
#define OPTIONS_NODE_TNCS_TRANSLATION   "TCTranslation"
#define OPTIONS_NODE_TNCS_TRANSLATION_IMPORTS   "TCTranslationImports"
#define OPTIONS_NODE_TRUSTED_ROOT_CERTIFICATES   "TrustedRootCertificates"
#define OPTIONS_NODE_UNLIMIT_TRAFFIC   "UnlimitTraffic"
#define OPTIONS_NODE_USER_ID   "UserID"
#define OPTIONS_NODE_VISIBLE_ADDRESS   "VisibleAddress"
#define OPTIONS_NODE_VISIBLE_ADDRESS_LIST   "VisibleAddresses"
#define OPTIONS_NODE_X509_CERTIFICATE   "X509Certificate"
#define OPTIONS_NODE_X509_PKCS12   "X509PKCS12"
#define OPTIONS_NODE_X509DATA   "X509Data"
#define OPTIONS_VALUE_MIX_NAME   "Mix"
#define OPTIONS_VALUE_OPERATOR_NAME   "Operator"
#define REGEXP_BUFF_SIZE   4096
#define WITH_SUBTREE   true
#define WITHOUT_SUBTREE   (!(WITHSUBTREE))

Typedef Documentation

typedef SINT32(CACmdLnOptions::* optionSetter_pt)(DOMElement *)

Function Documentation

SINT32 setRegExpressions ( DOMElement *  rootElement,
const char *const  childElementName,
regex_t **  regExContainer,
UINT32 regExNr 
)
THREAD_RETURN threadReConfigure ( void *  param)

Thread that does the actual reconfigure work.

Only one is running at the same time.

Parameters:
parampointer to a t_CMNDLN_REREAD_PARAMS stuct containing a CACmdLnOptions object pointer and a CMix object pointer.

References E_SUCCESS, CACmdLnOptions::m_bIsRunReConfigure, CACmdLnOptions::m_strConfigFile, pMix, CAMsg::printMsg(), CACmdLnOptions::processXmlConfiguration(), CACmdLnOptions::readXmlConfiguration(), CAMix::reconfigure(), CACmdLnOptions::setNewValues(), and THREAD_RETURN_SUCCESS.