218 lines
6.8 KiB
C++
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 */ |