388 lines
9.7 KiB
C++

//----------------------------------------------------------------------------
//
// Copyright (C) Intel Corporation, 2007 - 2008.
//
// File: OptionsUtils.cpp
//
// Contents: Utility file which allows easy access to Options elements.
//
// Notes:
//----------------------------------------------------------------------------
//------------------
// Includes
//------------------
#include "OptionsUtils.h"
#include "CommonOptions.h"
#include "Options.h"
//------------------
// functions
//------------------
const unsigned int * getMaximumWindowSize()
{
return CommonOptions::instance().getMaximumWinSize();
}
const unsigned int * getMinimumWindowSize()
{
return CommonOptions::instance().getMinimumWinSize();
}
const unsigned int * getThreadNumber()
{
Options * options = Options::instance();
if (options == NULL)
{
return NULL;
}
return options -> getValue<unsigned int>(ADVANCED_SECTION, THREAD_NUMBER_ELEMENT);
}
const unsigned int * getMaxQueueSize()
{
return CommonOptions::instance().getMaxQueueSize();
}
const unsigned int * getMaxChannels()
{
return CommonOptions::instance().getMaxChannels();
}
const time_t * getMaxTunnelTimeout()
{
return CommonOptions::instance().getMaxTunnelTimeout();
}
const unsigned short * getAMTListenPort()
{
Options * options = Options::instance();
if (options == NULL)
{
return NULL;
}
return options -> getValue<unsigned short>(NETWORK_SECTION, AMT_LISTEN_PORT_ELEMENT);
}
//const ACE_INET_Addr * getAMTListenINET4()
//{
// Options * options = Options::instance();
// if (options == NULL)
// {
// return NULL;
// }
// return options -> getValue<ACE_INET_Addr>(NETWORK_SECTION, AMT_LISTEN_INET4_ELEMENT);
//}
//const ACE_INET_Addr * getAMTListenINET6()
//{
// Options * options = Options::instance();
// if (options == NULL)
// {
// return NULL;
// }
// return options -> getValue<ACE_INET_Addr>(NETWORK_SECTION, AMT_LISTEN_INET6_ELEMENT);
//}
const ACE_TString * getMCSocksListenIP()
{
return CommonOptions::instance().getMCSocksListenIP();
}
//const ACE_TString * getMCSocksListenIPv6()
//{
// return CommonOptions::instance().getMCSocksListenIPv6();
//}
const unsigned short * getMCSocksListenPort()
{
Options * options = Options::instance();
if (options == NULL)
{
return NULL;
}
return options -> getValue<unsigned short>(NETWORK_SECTION, MC_SOCKS_LISTEN_PORT_ELEMENT);
}
//const ACE_INET_Addr * getMCSocksListenINET()
//{
// Options * options = Options::instance();
// if (options == NULL)
// {
// return NULL;
// }
// return options -> getValue<ACE_INET_Addr>(NETWORK_SECTION, MC_SOCKS_LISTEN_INET_ELEMENT);
//}
const unsigned short * getMCHttpListenPort()
{
Options * options = Options::instance();
if (options == NULL)
{
return NULL;
}
return options -> getValue<unsigned short>(NETWORK_SECTION, MC_HTTP_LISTEN_PORT_ELEMENT);
}
const ACE_TString * getHeading()
{
Options * options = Options::instance();
if (options == NULL)
{
return NULL;
}
return options -> getValue<ACE_TString>(LOGGER_SECTION, HEADING_ELEMENT);
}
const ACE_TString * getTraceLevel()
{
Options * options = Options::instance();
if (options == NULL)
{
return NULL;
}
return options -> getValue<ACE_TString>(LOGGER_SECTION, TRACE_LEVEL_ELEMENT);
}
const ACE_TString * getLogFilePath()
{
Options * options = Options::instance();
if (options == NULL)
{
return NULL;
}
return options -> getValue<ACE_TString>(LOGGER_SECTION, LOG_FILE_PATH_ELEMENT);
}
const ACE_TString * getLogFileName()
{
Options * options = Options::instance();
if (options == NULL)
{
return NULL;
}
return options -> getValue<ACE_TString>(LOGGER_SECTION, LOG_FILE_NAME_ELEMENT);
}
const unsigned int * getLogFileSize()
{
Options * options = Options::instance();
if (options == NULL)
{
return NULL;
}
return options -> getValue<unsigned int>(LOGGER_SECTION, LOG_FILE_SIZE_ELEMENT);
}
const unsigned int * getLogFileMaxFiles()
{
Options * options = Options::instance();
if (options == NULL)
{
return NULL;
}
return options -> getValue<unsigned int>(LOGGER_SECTION, LOG_FILE_MAX_FILES_ELEMENT);
}
const bool * getAmtNeedAuthentication()
{
Options * options = Options::instance();
if (options == NULL)
{
return NULL;
}
return options -> getValue<bool>(AMT_AUTHENTICATE_SECTION, NEED_AUTHENTICATE_ELEMENT);
}
const ACE_TString * getAmtDllName()
{
Options * options = Options::instance();
if (options == NULL)
{
return NULL;
}
return options -> getValue<ACE_TString>(AMT_AUTHENTICATE_SECTION, DLL_NAME_ELEMENT);
}
const ACE_TString * getAmtDllParameters()
{
Options * options = Options::instance();
if (options == NULL)
{
return NULL;
}
return options -> getValue<ACE_TString>(AMT_AUTHENTICATE_SECTION, DLL_PARAMETERS_ELEMENT);
}
const bool * getSocksNeedAuthentication()
{
Options * options = Options::instance();
if (options == NULL)
{
return NULL;
}
return options -> getValue<bool>(SOCKS_AUTHENTICATE_SECTION, NEED_AUTHENTICATE_ELEMENT);
}
const ACE_TString * getSocksDllName()
{
Options * options = Options::instance();
if (options == NULL)
{
return NULL;
}
return options -> getValue<ACE_TString>(SOCKS_AUTHENTICATE_SECTION, DLL_NAME_ELEMENT);
}
const ACE_TString * getSocksDllParameters()
{
Options * options = Options::instance();
if (options == NULL)
{
return NULL;
}
return options -> getValue<ACE_TString>(SOCKS_AUTHENTICATE_SECTION, DLL_PARAMETERS_ELEMENT);
}
const MCList * getMCSubscribersList()
{
Options * options = Options::instance();
if (options == NULL)
{
return NULL;
}
return options -> getValue<MCList>(NOTIFICATION_LIST_ELEMENT, NOTIFICATION_LIST_ELEMENT);
}
const AuthServerHash * getAutherizedServersHash()
{
Options * options = Options::instance();
if (options == NULL)
{
return NULL;
}
return options -> getValue<AuthServerHash>(AUTHORIZED_SERVERS_LIST_ELEMENT, AUTHORIZED_SERVERS_LIST_ELEMENT);
}
MCList * getChangableMCSubscribersList()
{
Options * options = Options::instance();
if (options == NULL)
{
return NULL;
}
return options -> getValueChangable<MCList>(NOTIFICATION_LIST_ELEMENT, NOTIFICATION_LIST_ELEMENT);
}
AuthServerHash * getChangableAutherizedServersHash()
{
Options * options = Options::instance();
if (options == NULL)
{
return NULL;
}
return options -> getValueChangable<AuthServerHash>(AUTHORIZED_SERVERS_LIST_ELEMENT, AUTHORIZED_SERVERS_LIST_ELEMENT);
}
const bool * getMCNeedAuthentication()
{
Options * options = Options::instance();
if (options == NULL)
{
return NULL;
}
return options -> getValue<bool>(NOTIFICATION_AUTHENTICATION_SECTION, NEED_NOTIFICATION_AUTH_ELEMENT);
}
const ACE_TString * getMCUsername()
{
Options * options = Options::instance();
if (options == NULL)
{
return NULL;
}
return options -> getValue<ACE_TString>(NOTIFICATION_AUTHENTICATION_SECTION, USERNAME_ELEMENT);
}
const ACE_TString * getMCPassword()
{
Options * options = Options::instance();
if (options == NULL)
{
return NULL;
}
return options -> getValue<ACE_TString>(NOTIFICATION_AUTHENTICATION_SECTION, PASSWORD_ELEMENT);
}
const bool * getAuthServersListNeeded()
{
Options * options = Options::instance();
if (options == NULL)
{
return NULL;
}
return options -> getValue<bool>(FILTERING_SECTION, FILTER_UNAUTHORIZED_SERVERS_ELEMENT);
}
STATUS fillCommonElements()
{
CommonOptions::instance().setMaximumWinSize(
Options::instance()->getValue<unsigned int>(ADVANCED_SECTION, MAXIMUM_WINDOW_SIZE_ELEMENT));
CommonOptions::instance().setMinimumWinSize(
Options::instance()->getValue<unsigned int>(ADVANCED_SECTION, MINIMUM_WINDOW_SIZE_ELEMENT));
CommonOptions::instance().setMaxQueueSize(
Options::instance()->getValue<unsigned int>(ADVANCED_SECTION, MAX_QUEUE_SIZE_ELEMENT));
CommonOptions::instance().setMaxChannels(
Options::instance()->getValue<unsigned int>(ADVANCED_SECTION, MAX_CHANNELS_ELEMENT));
CommonOptions::instance().setMaxTunnelTimeout(
Options::instance()->getValue<time_t>(ADVANCED_SECTION, MAX_TUNNEL_TIMEOUT_ELEMENT));
CommonOptions::instance().setMCSocksListenIP(
Options::instance()->getValue<ACE_TString>(NETWORK_SECTION, MC_SOCKS_LISTEN_IP_ELEMENT));
//CommonOptions::instance().setMCSocksListenIPv4(
// Options::instance()->getValue<ACE_TString>(NETWORK_SECTION, MC_SOCKS_LISTEN_IPv4_ELEMENT));
//CommonOptions::instance().setMCSocksListenIPv6(
// Options::instance()->getValue<ACE_TString>(NETWORK_SECTION, MC_SOCKS_LISTEN_IPv6_ELEMENT));
return STATUS_SUCCESS;
}
STATUS getListenINET(const ACE_TCHAR* section, const ACE_TCHAR* elementIP, const ACE_TCHAR* elementPort,
ACE_INET_Addr& address)
{
Options * options = Options::instance();
if (options == NULL)
{
return STATUS_FAILURE;
}
const ACE_TString &ip = *(options->getValue<ACE_TString>(section, elementIP));
const unsigned short &port = *(options->getValue<unsigned short>(section, elementPort));
if (&port == NULL || &ip == NULL || address.set(port, ip.c_str()) != STATUS_SUCCESS)
{
return STATUS_FAILURE;
}
return STATUS_SUCCESS;
}
STATUS getAMTListenINET(ACE_INET_Addr& address)
{
return getListenINET(NETWORK_SECTION, AMT_LISTEN_IP_ELEMENT, AMT_LISTEN_PORT_ELEMENT, address);
}
//STATUS getAMTListenINETv4(ACE_INET_Addr& address)
//{
// return getListenINET(NETWORK_SECTION, AMT_LISTEN_IPv4_ELEMENT, AMT_LISTEN_PORT_ELEMENT, address);
//}
//
//STATUS getAMTListenINETv6(ACE_INET_Addr& address)
//{
// return getListenINET(NETWORK_SECTION, AMT_LISTEN_IPv6_ELEMENT, AMT_LISTEN_PORT_ELEMENT, address);
//}
//STATUS getSocksListenINETv4(ACE_INET_Addr& address)
//{
// return getListenINET(NETWORK_SECTION, MC_SOCKS_LISTEN_IP_ELEMENT, MC_SOCKS_LISTEN_PORT_ELEMENT, address);
//}
//
//STATUS getSocksListenINETv6(ACE_INET_Addr& address)
//{
// return getListenINET(NETWORK_SECTION, MC_SOCKS_LISTEN_IP_ELEMENT, MC_SOCKS_LISTEN_PORT_ELEMENT, address);
//}