You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tork/src/torconfig.h

319 lines
9.3 KiB

/***************************************************************************
* 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