public void Initialize(IConfig config)
{
m_config = config;
EnabledAPIs = new List<string>(config.GetString("AllowedAPIs", "LSL").ToLower().Split(','));
allowHTMLLinking = config.GetBoolean("AllowHTMLLinking", true);
#region Limitation configuration
m_allowFunctionLimiting = config.GetBoolean("AllowFunctionLimiting", false);
foreach (string kvp in config.GetKeys())
{
if (kvp.EndsWith ("_Limit", StringComparison.Ordinal))
{
string functionName = kvp.Remove(kvp.Length - 6);
LimitDef limitDef = new LimitDef();
string limitType = config.GetString(functionName + "_LimitType", "None");
string limitAlert = config.GetString(functionName + "_LimitAlert", "None");
string limitAction = config.GetString(functionName + "_LimitAction", "None");
int limitTimeScale = config.GetInt(functionName + "_LimitTimeScale", 0);
int limitMaxNumberOfTimes = config.GetInt(functionName + "_LimitMaxNumberOfTimes", 0);
int limitFunctionsOverTimeScale = config.GetInt(functionName + "_LimitFunctionsOverTimeScale", 0);
try
{
limitDef.Type = (LimitType) Enum.Parse(typeof (LimitType), limitType, true);
}
catch
{
}
try
{
limitDef.Alert = (LimitAlert) Enum.Parse(typeof (LimitAlert), limitAlert, true);
}
catch
{
}
try
{
limitDef.Action = (LimitAction) Enum.Parse(typeof (LimitAction), limitAction, true);
}
catch
{
}
limitDef.TimeScale = limitTimeScale;
limitDef.MaxNumberOfTimes = limitMaxNumberOfTimes;
limitDef.FunctionsOverTimeScale = limitFunctionsOverTimeScale;
m_functionsToLimit[functionName] = limitDef;
}
}
#endregion
m_threatLevelNone = new ThreatLevelDefinition(ThreatLevel.None,
UserSetHelpers.ParseUserSetConfigSetting(config, "NoneUserSet",
UserSet.None), this);
m_threatLevelNuisance = new ThreatLevelDefinition(ThreatLevel.Nuisance,
UserSetHelpers.ParseUserSetConfigSetting(config,
"NuisanceUserSet",
UserSet.None),
this);
m_threatLevelVeryLow = new ThreatLevelDefinition(ThreatLevel.VeryLow,
UserSetHelpers.ParseUserSetConfigSetting(config,
"VeryLowUserSet",
UserSet.None),
this);
m_threatLevelLow = new ThreatLevelDefinition(ThreatLevel.Low,
UserSetHelpers.ParseUserSetConfigSetting(config, "LowUserSet",
UserSet.None), this);
m_threatLevelModerate = new ThreatLevelDefinition(ThreatLevel.Moderate,
UserSetHelpers.ParseUserSetConfigSetting(config,
"ModerateUserSet",
UserSet.None),
this);
m_threatLevelHigh = new ThreatLevelDefinition(ThreatLevel.High,
UserSetHelpers.ParseUserSetConfigSetting(config, "HighUserSet",
UserSet.None), this);
m_threatLevelVeryHigh = new ThreatLevelDefinition(ThreatLevel.VeryHigh,
UserSetHelpers.ParseUserSetConfigSetting(config,
"VeryHighUserSet",
UserSet.None),
this);
m_threatLevelSevere = new ThreatLevelDefinition(ThreatLevel.Severe,
UserSetHelpers.ParseUserSetConfigSetting(config,
"SevereUserSet",
UserSet.None), this);
m_threatLevelNoAccess = new ThreatLevelDefinition(ThreatLevel.NoAccess,
UserSetHelpers.ParseUserSetConfigSetting(config,
"NoAccessUserSet",
UserSet.None),
this);
}