diff options
Diffstat (limited to 'src/torconfig.h')
-rw-r--r-- | src/torconfig.h | 318 |
1 files changed, 318 insertions, 0 deletions
diff --git a/src/torconfig.h b/src/torconfig.h new file mode 100644 index 0000000..88a0bae --- /dev/null +++ b/src/torconfig.h @@ -0,0 +1,318 @@ +/*************************************************************************** + * Copyright (C) 2006 - 2008 Robert Hogan * + * robert@roberthogan.net * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#include "torkconfig.h" + +TorkConfig* torkcon = TorkConfig::self(); + +/** Enumeration of types which option values can take */ +typedef enum config_type_t { + CONFIG_TYPE_STRING = 0, /**< An arbitrary string. */ + CONFIG_TYPE_UINT, /**< A non-negative integer less than MAX_INT */ + CONFIG_TYPE_BOOL, /**< A boolean value, expressed as 0 or 1. */ + CONFIG_TYPE_DUO, /**< two values from torkconfig required */ + CONFIG_TYPE_LINELIST, /**< Uninterpreted config lines */ +} config_type_t; + + +/** A variable allowed in the configuration file or on the command line. */ +typedef struct config_t { + bool (*groupcondition)(); /**<Group condition for config value */ + int (*configvalue)(); /**<Value in torkconfig */ + int (*configvaluetwo)(); /**<Second Value in torkconfig (in case of DUOs) */ + config_type_t type; /**< The type of the value. */ + const char *text; /**< Text for value. */ + const char *suffix; /**< Text for value. */ +} config_t; + + +/** An entry for config_vars: "The option <b>name</b> has type + * CONFIG_TYPE_<b>conftype</b>, and corresponds to + * or_options_t.<b>member</b>" + */ +#define MSG(groupcond, configval, configvaltwo, type, text, suffix) \ + { groupcond, configval, configvaltwo, type, text, suffix } + +/** Array of configuration options. Until we disallow nonstandard + * abbreviations, order is significant, since the first matching option will + * be chosen first. + */ +static config_t _tor_config[] = { + MSG((&TorkConfig::defaultMaxMinOptions), + (&TorkConfig::bandwidthBurst), + (&TorkConfig::bandwidthBurst), + CONFIG_TYPE_UINT, + "BandwidthBurst", + "KB"), + MSG((&TorkConfig::defaultMaxMinOptions), + (&TorkConfig::bandwidthRate), + NULL, + CONFIG_TYPE_UINT, + "BandwidthRate", + "KB"), + MSG((&TorkConfig::defaultMaxMinOptions), + (&TorkConfig::maxAdvertisedBandwidth), + NULL, + CONFIG_TYPE_UINT, + "MaxAdvertisedBandwidth", + "GB"), + MSG((&TorkConfig::defaultMaxMinOptions), + (&TorkConfig::maxCircuitDirtiness), + NULL, + CONFIG_TYPE_UINT, + "MaxCircuitDirtiness", + ""), + MSG((&TorkConfig::defaultMaxMinOptions), + (&TorkConfig::maxConn), + NULL, + CONFIG_TYPE_UINT, + "ConnLimit", + ""), + + MSG((&TorkConfig::defaultRunningNormalOptions), + (&TorkConfig::user), + NULL, + CONFIG_TYPE_STRING, + "User", + ""), + MSG((&TorkConfig::defaultRunningNormalOptions), + (&TorkConfig::group), + NULL, + CONFIG_TYPE_STRING, + "Group", + ""), + MSG((&TorkConfig::defaultRunningNormalOptions), + (&TorkConfig::outboundBindAddress), + NULL, + CONFIG_TYPE_STRING, + "OutboundBindAddress", + ""), + MSG((&TorkConfig::defaultRunningNormalOptions), + (&TorkConfig::dataDirectory), + NULL, + CONFIG_TYPE_STRING, + "dataDirectory", + ""), + MSG((&TorkConfig::defaultRunningNormalOptions), + (&TorkConfig::hashedControlPassword), + NULL, + CONFIG_TYPE_STRING, + "hashedControlPassword", + ""), + MSG((&TorkConfig::defaultRunningNormalOptions), + (&TorkConfig::cookieAuthentication), + NULL, + CONFIG_TYPE_STRING, + "cookieAuthentication", + ""), + + MSG((&TorkConfig::defaultServerIP), + (&TorkConfig::oRBindAddress), + NULL, + CONFIG_TYPE_STRING, + "oRBindAddress", + ""), + +/* MSG(NULL, + (&TorkConfig::oRPort), + NULL, + CONFIG_TYPE_UINT, + "ORPort", + ""), + + MSG((&TorkConfig::defaultServerPerformance), + (&TorkConfig::numCPUs), + NULL, + CONFIG_TYPE_UINT, + "numCPUs", + ""), + MSG((&TorkConfig::defaultServerPerformance), + (&TorkConfig::maxOnionsPending), + NULL, + CONFIG_TYPE_UINT, + "maxOnionsPending", + ""), + MSG((&TorkConfig::defaultServerPerformance), + (&TorkConfig::accountingMax), + NULL, + CONFIG_TYPE_UINT, + "accountingMax", + "bytes"),*/ +/* MSG((&TorkConfig::defaultServerPerformance), + (&TorkConfig::accountingStart), + NULL, + CONFIG_TYPE_STRING, + "accountingStart", + ""),*/ +/* MSG((&TorkConfig::defaultServerPerformance), + (&TorkConfig::shutDownWaitLength), + NULL, + CONFIG_TYPE_UINT, + "ShutDownWaitLength", + ""), + + MSG((NULL), + (&TorkConfig::newCircuitPeriod), + NULL, + CONFIG_TYPE_UINT, + "NewCircuitPeriod", + ""), + MSG((NULL), + (&TorkConfig::dirFetchPeriod), + NULL, + CONFIG_TYPE_UINT, + "DirFetchPeriod", + ""),*/ + MSG((NULL), + (&TorkConfig::dirServer), + NULL, + CONFIG_TYPE_STRING, + "DirServer", + ""), + MSG((NULL), + (&TorkConfig::entryNodes), + NULL, + CONFIG_TYPE_LINELIST, + "EntryNodes", + ""), + MSG((NULL), + (&TorkConfig::excludeNodes), + NULL, + CONFIG_TYPE_LINELIST, + "ExcludeNodes", + ""), + MSG((NULL), + (&TorkConfig::exitNodes), + NULL, + CONFIG_TYPE_STRING, + "ExitNodes", + ""), + MSG((NULL), + (&TorkConfig::entryNodes), + NULL, + CONFIG_TYPE_STRING, + "EntryNodes", + ""), + MSG((NULL), + (&TorkConfig::httpProxyPort), + (&TorkConfig::httpProxyHost), + CONFIG_TYPE_DUO, + "HttpProxy", + ""), + MSG((NULL), + (&TorkConfig::httpsProxyPort), + (&TorkConfig::httpsProxyHost), + CONFIG_TYPE_DUO, + "HttpsProxy", + ""), + MSG((NULL), + (&TorkConfig::httpProxyAuthenticatorUserName), + (&TorkConfig::httpProxyAuthenticatorPassword), + CONFIG_TYPE_DUO, + "HttpProxyAuthenticator", + ""), + MSG((NULL), + (&TorkConfig::httpsProxyAuthenticatorUserName), + (&TorkConfig::httpsProxyAuthenticatorPassword), + CONFIG_TYPE_DUO, + "HttpsProxyAuthenticator", + ""), + +/* MSG((NULL), + (&TorkConfig::keepalivePeriod), + NULL, + CONFIG_TYPE_UINT, + "KeepalivePeriod", + ""),*/ +/* MSG((NULL), + (&TorkConfig::longLivedPorts), + NULL, + CONFIG_TYPE_STRING, + "LongLivedPorts", + ""), + MSG((NULL), + (&TorkConfig::mapAddress), + NULL, + CONFIG_TYPE_STRING, + "MapAddress", + ""),*/ +/* MSG((NULL), + (&TorkConfig::numHelperNodes), + NULL, + CONFIG_TYPE_UINT, + "NumHelperNodes", + ""),*/ +/* MSG((NULL), + (&TorkConfig::reachableAddresses), + NULL, + CONFIG_TYPE_LINELIST, + "ReachableAddresses", + ""), + MSG((NULL), + (&TorkConfig::rendNodes), + NULL, + CONFIG_TYPE_LINELIST, + "RendNodes", + ""), + MSG((NULL), + (&TorkConfig::sOCKSBindAddressHost), + (&TorkConfig::sOCKSBindAddressPort), + CONFIG_TYPE_DUO, + "SOCKSBindAddress", + ":"), + MSG((NULL), + (&TorkConfig::sOCKSBindAddressMany), + NULL, + CONFIG_TYPE_LINELIST, + "SOCKSBindAddress", + "\nSOCKSBindAddress"), + MSG((NULL), + (&TorkConfig::sOCKSPolicy), + NULL, + CONFIG_TYPE_LINELIST, + "SOCKSPolicy", + ""),*/ +/* MSG((NULL), + (&TorkConfig::statusFetchPeriod), + NULL, + CONFIG_TYPE_UINT, + "StatusFetchPeriod", + ""),*/ +/* MSG((NULL), + (&TorkConfig::statusFetchPeriod), + NULL, + CONFIG_TYPE_BOOL, + "StrictExitNodes", + ""), + MSG((NULL), + (&TorkConfig::trackHostExits), + NULL, + CONFIG_TYPE_LINELIST, + "TrackHostExits", + ""),*/ + MSG((NULL), + (&TorkConfig::trackHostExitsExpire), + NULL, + CONFIG_TYPE_UINT, + "TrackHostExitsExpire", + ""), + +/* { NULL, NULL, NULL, NULL, NULL, NULL }*/ +}; +#undef MSG |