218 lines
6.8 KiB
C++

//----------------------------------------------------------------------------
//
// Copyright (C) Intel Corporation, 2007 - 2008.
//
// File: ConfigFormat.h
//
// Contents: Configures the formats needed to configure the MPS.
//
// Notes:
//----------------------------------------------------------------------------
#ifndef CONFIG_FORMATS_H
#define CONFIG_FORMATS_H
//------------------
// Includes
//------------------
#include "CanonicalHash.h"
#include "MPS_Utils.h"
#include <ace/SString.h>
#include <string.h>
using namespace std;
//------------------
// Defines
//------------------
// Define the section and element names that are
// supposed to be found in the configuration file
#define ADVANCED_SECTION "Advanced"
#define THREAD_NUMBER_ELEMENT "ThreadNumber"
#define MAXIMUM_WINDOW_SIZE_ELEMENT "MaximumWindowSize"
#define MINIMUM_WINDOW_SIZE_ELEMENT "MinimumWindowSize"
#define MAX_QUEUE_SIZE_ELEMENT "MaxQueueSize"
#define MAX_CHANNELS_ELEMENT "MaxChannels"
#define MAX_TUNNEL_TIMEOUT_ELEMENT "MaxTunnelTimeout"
#define MAX_BUFFER_SIZE_ELEMENT "MaxBufferSize"
#define NETWORK_SECTION "NETWORK"
#define AMT_LISTEN_IP_ELEMENT "AMTListenIP"
#define AMT_LISTEN_PORT_ELEMENT "AMTListenPort"
#define MC_HTTP_LISTEN_IP_ELEMENT "HttpListenIP"
#define MC_HTTP_LISTEN_PORT_ELEMENT "HttpListenPort"
#define MC_SOCKS_LISTEN_IP_ELEMENT "SocksListenIP"
#define MC_SOCKS_LISTEN_PORT_ELEMENT "SocksListenPort"
#define MC_SOAP_LISTEN_IP_ELEMENT "SOAPListenIP"
#define MC_SOAP_LISTEN_PORT_ELEMENT "SOAPListenPort"
//#define MC_SOCKS_LISTEN_INET_ELEMENT "SocksListenINET"
#define LOGGER_SECTION "Logger"
#define HEADING_ELEMENT "Heading"
#define LOG_FILE_PATH_ELEMENT "LogFilePath"
#define LOG_FILE_NAME_ELEMENT "LogFileName"
#define LOG_FILE_SIZE_ELEMENT "LogFileMaxSize"
#define TRACE_LEVEL_ELEMENT "TraceLevel"
#define LOG_FILE_MAX_FILES_ELEMENT "LogFileMaxFiles"
#define AMT_AUTHENTICATE_SECTION "AMT_Authenticate"
#define SOCKS_AUTHENTICATE_SECTION "Socks_Authenticate"
#define SOAP_AUTHENTICATE_SECTION "SOAP_Authentication"
#define NEED_AUTHENTICATE_ELEMENT "NeedAuthentication"
#define DLL_NAME_ELEMENT "DllName"
#define DLL_PARAMETERS_ELEMENT "DllParameters"
#define NOTIFICATION_AUTHENTICATION_SECTION "Notification_Authentication"
#define NEED_NOTIFICATION_AUTH_ELEMENT "NeedNotificationAuthentication"
#define USERNAME_ELEMENT "Username"
#define PASSWORD_ELEMENT "Password"
#define FILTERING_SECTION "Filtering"
#define FILTER_UNAUTHORIZED_SERVERS_ELEMENT "FilterUnauthorizedServers"
#define FILES_SECTION "Files"
#define NOTIFICATION_LIST_ELEMENT "NotificationList"
#define AUTHORIZED_SERVERS_LIST_ELEMENT "AuthorizedServersList"
#define MANAGEMENT_INTERFACE_SECTION "Management_Interface"
#define MAX_ENUM_ELEMENTS_ELEMENT "MaxEnumElements"
#define ENUM_CTX_TIMEOUT_ELEMENT "EnumCtxTimeout"
#define MAX_CONCURRENT_ENUMS_ELEMENT "MaxConcurrentEnums"
#define MAX_SUBSCRIBERS_ELEMENT "MaxSubscribers"
// Set up default values for optional parameters:
#define MAXIMUM_WINDOW_SIZE_DEFAULT "131072"
#define MINIMUM_WINDOW_SIZE_DEFAULT "8192"
#define MAX_QUEUE_SIZE_DEFAULT "16777216"
#define MAX_CHANNELS_DEFAULT "12"
#define MAX_BUFFER_SIZE_DEFAULT "16"
#define MAX_TUNNEL_TIMEOUT_DEFAULT "23400"
#if defined (ACE_WIN32) && !defined (ACE_LACKS_WIN32_SERVICES) && defined (_SERVICE)
#define THREAD_NUMBER_DEFAULT "500"
#else
#define THREAD_NUMBER_DEFAULT "100"
#endif /* ACE_WIN32 && !(ACE_LACKS_WIN32_SERVICES) && (_SERVICE)*/
#define MC_HTTP_LISTEN_IP_DEFAULT "10.212.212.80"
#define MC_SOAP_LISTEN_IP_DEFAULT "10.212.212.80"
#define MC_SOAP_LISTEN_PORT_DEFAULT "7793"
#define AMT_DLL_NAME_DEFAULT ""
#define SOCKS_DLL_NAME_DEFAULT ""
#define SOAP_DLL_NAME_DEFAULT ""
#define AMT_DLL_PARAMETERS_DEFAULT ""
#define SOCKS_DLL_PARAMETERS_DEFAULT ""
#define SOAP_DLL_PARAMETERS_DEFAULT ""
#define NOTIFICATION_USERNAME_DEFAULT "user"
#define NOTIFICATION_PASSWORD_DEFAULT "pass"
#define TRACE_LEVEL_DEFAULT "INFO|ERROR|WARNING"
#define LOG_FILE_PATH_DEFAULT "logs/"
#define LOG_FILE_NAME_DEFAULT "mps.log"
#define LOG_FILE_SIZE_DEFAULT "10000"
#if defined (ACE_WIN32)
#define NOTIFICATION_LIST_DEFAULT "conf\\NotificationList.config"
#define AUTHORIZED_SERVERS_LIST_DEFAULT "conf\\AuthorizedServersList.config"
#else
#define NOTIFICATION_LIST_DEFAULT "conf/NotificationList.config"
#define AUTHORIZED_SERVERS_LIST_DEFAULT "conf/AuthorizedServersList.config"
#endif
#define LOG_FILE_MAX_FILES_DEFAULT "100"
#define MAX_ENUM_ELEMENTS_DEFAULT "50"
#define ENUM_CTX_TIMEOUT_DEFAULT "500"
#define MAX_CONCURRENT_ENUMS_DEFAULT "10"
#define MAX_SUBSCRIBERS_DEFAULT "30"
//------------------
// Enums
//------------------
// The four available format types enum
enum FORMAT_TYPES
{
STATIC_MANDATORY = 0,
STATIC_OPTIONAL,
DYNAMIC_MANDATORY,
DYNAMIC_OPTIONAL
};
// The element types that can be used
enum ELEMENT_TYPES_ENUM
{
IP_TYPE = 0,
PORT_TYPE,
INET_TYPE,
STRING_TYPE,
MC_LIST_TYPE,
AUTHERIZED_SERVERS_LIST_TYPE,
AUTHENTICATE_TYPE,
UNSIGNED_INT_TYPE,
LOG_LEVELS_TYPE,
TIME_T_TYPE,
BOOL_TYPE,
BAD_TYPE = -1
};
//------------------
// Classes
//------------------
// A class that encapsulates an element type
class Element_Type_Enum
{
public:
Element_Type_Enum(ELEMENT_TYPES_ENUM elem_type) : elem_type_(elem_type) {}
ELEMENT_TYPES_ENUM getElementType() const { return elem_type_; }
private:
ELEMENT_TYPES_ENUM elem_type_;
};
// A class that expands the Element_Type_Enum class with a default value for that element type
class Element_Type_Enum_and_Default_Val : public Element_Type_Enum
{
public:
Element_Type_Enum_and_Default_Val(ELEMENT_TYPES_ENUM elem_type, const ACE_TString &typeVal)
: Element_Type_Enum(elem_type), typeVal_(typeVal) {}
ACE_TString getTypeVal() const { return typeVal_; }
private:
ACE_TString typeVal_;
};
// A canonical hash which represents the available configuration format
typedef Canonical_Hash < ACE_TString, ACE_TString,
Element_Type_Enum *, ACE_TString_compare, ACE_TString_compare > Format;
// A singelton class which holds all the formats, initializes them, and provide access to them
class ConfigFormats
{
public:
// Return pointer to Singleton.
static const ConfigFormats * instance();
// Dtor
~ConfigFormats();
// Returns a const pointer to the format specified by type
const Format * getFormat(FORMAT_TYPES type) const;
private:
// private ctor
ConfigFormats();
// cleans the Format, deleting all the elements within it.
void cleanFormat(Format * format);
// ConfigFormats Singleton instance.
static ConfigFormats * instance_;
Format * format_static_mandatory_;
Format * format_static_optional_;
Format * format_dynamic_mandatory_;
Format * format_dynamic_optional_;
};
#endif /* CONFIG_FORMATS_H */