本文整理汇总了C#中Config.Load方法的典型用法代码示例。如果您正苦于以下问题:C# Config.Load方法的具体用法?C# Config.Load怎么用?C# Config.Load使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Config
的用法示例。
在下文中一共展示了Config.Load方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetConfig
/// <summary>
/// Loads an instance of Config from the Rules.config xml file
/// </summary>
/// <returns>The config.</returns>
public static Config GetConfig()
{
if (null == config) {
config = new Config ();
config.Load ();
}
return config;
}
示例2: Initialize
public virtual void Initialize()
{
MessageDispatcher.RegisterAssembly(Context.PluginAssembly);
if (UseConfig)
{
Config = new Config(ConfigPath);
Config.Load();
Config.BindAssembly(Context.PluginAssembly);
}
}
示例3: Main
static void Main(string[] args)
{
Config cfg = new Config("corr.cfg");
cfg.Load();
FilePath processor_path = cfg.Root["processor.path"].AsFilePath();
FilePath output_path = cfg.Root["output.path"].AsFilePath();
FilePath hdfs_path = cfg.Root["hdf.path"].AsFilePath();
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(hdfs_path.Path);
System.IO.FileInfo[] aryFi = di.GetFiles("*.hdf5", System.IO.SearchOption.TopDirectoryOnly);
Dictionary<string, string> info = new Dictionary<string,string>();
ExternalApp app = new ExternalApp();
app.Arguments = "--cfg task.cfg";
app.CheckSuccessMethod = CheckSuccessMethod.DONOTCHECK;
app.Executable = processor_path.Path + "MohidHDF5Processor.exe";
app.UseShell = false;
app.Verbose = false;
app.Wait = true;
app.WorkingDirectory = processor_path.Path;
int count = 1;
foreach (System.IO.FileInfo fi in aryFi)
{
Console.Write("{1}: Processing {0}...", fi.Name, count);
info["<<input>>"] = fi.FullName;
info["<<output>>"] = output_path.Path + fi.Name;
TextFile.Replace(processor_path.Path + "task.template", processor_path.Path + "task.cfg", ref info);
if (!app.Run())
{
Console.WriteLine("Failure when trying to correct file {0}", fi.Name);
Console.WriteLine("[FAIL]");
}
else
Console.WriteLine("[ OK ]");
count++;
}
}
示例4: CouponCodeGoCommand
protected void CouponCodeGoCommand(object sender, CommandEventArgs e)
{
string couponCode = CouponCodeEdit.Text;
using (Database db = new MySqlDatabase())
{
ClientInfo ci = db.GetClientInfo(Util.UserId);
if (db.CheckActivationCode(couponCode))
{
// Code is ok, raise the number of credits for this user
db.MarkActivationCode(couponCode, Util.UserId);
Config cfg = new Config();
cfg.Load(Server.MapPath("~/Config/trackprotect.config"));
long prodid = 0;
if (cfg["activationcode.productid"] != null)
prodid = Convert.ToInt64(cfg["activationcode.productid"]);
// Get the credits from the database
ProductInfo pi = db.GetProductById(prodid);
if (pi != null && pi.ProductId > 0)
{
// How many credits to issue
string transactionIdCoupon = string.Format("COUPON {0}", couponCode);
long orderId = db.CreateTransaction(Util.UserId, 0m, prodid, pi.Description);
db.UpdateTransaction(orderId.ToString(), "OK", "OK", "Payment Completed", "COUPON", couponCode, couponCode, transactionIdCoupon, "COUPON", 0m, pi, "EUR", Util.GetCountryIso2(ci.Country));
db.UpdateUserCredits(Util.UserId, prodid, pi.Credits);
db.AddCreditHistory(Util.UserId, prodid, pi.Credits, orderId);
Response.Redirect(string.Format("~/Member/CouponSuccess.aspx?cradd={0}", pi.Credits), false);
}
}
else
{
Response.Redirect(string.Format("~/Member/CouponFailure.aspx?couponcode={0}", couponCode), false);
}
}
}
示例5: LoadConfig
public bool LoadConfig(FileName config_file)
{
try
{
config_loaded = false;
config = new Config(config_file.FullPath);
config.Load();
config_root = config.Root;
//Save here the data that will be used across the class
data.Pin = config_root["pin_code", ""].AsString();
data.SMSCenter = config_root["sms_center"].AsString();
data.TimeOut = config_root["timeout", 10].AsInt() * 1000;
data.WaitTime = config_root["wait", 10].AsInt() * 1000;
data.Tries = config_root["tentatives", 2].AsInt();
data.Port = SMSEngine.GetNewPort();
ConfigNode port = config_root.ChildNodes.Find(delegate(ConfigNode node) { return node.Name == "port"; });
if (port == null)
throw new Exception("Block \"port\" not found");
data.Port.WriteTimeout = port["write_timeout", 10].AsInt() * 1000;
data.Port.ReadTimeout = port["read_timeout", 10].AsInt() * 1000;
data.Port.PortName = port["port_name"].AsString();
data.Port.BaudRate = port["baudrate", 9600].AsInt();
data.Port.DataBits = port["databits", 8].AsInt();
data.Port.Parity = (Parity) Enum.Parse(typeof(Parity), port["parity", "None"].AsString(), true);
data.Port.StopBits = (StopBits)Enum.Parse(typeof(StopBits), port["stopbits", "One"].AsString(), true);
data.Port.Handshake = (Handshake)Enum.Parse(typeof(Handshake), port["handshake", "RequestToSend"].AsString(), true);
data.Port.DtrEnable = port["dtr_enabled", true].AsBool();
data.Port.RtsEnable = port["rts_enabled", true].AsBool();
data.Port.NewLine = Environment.NewLine;
ConfigNode db = config_root.ChildNodes.Find(delegate(ConfigNode node) { return node.Name == "database"; });
if (db == null)
throw new Exception("Block \"database\" not found");
if (db.NodeData.ContainsKey("connection_string"))
{
data.DBName = "";
data.DBPath = "";
data.ConnectionString = db["connection_string"].AsString();
}
else
{
data.DBName = db["name"].AsString();
data.DBPath = db["path"].AsFilePath().Path;
data.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
data.DBPath + data.DBName +
";Persist Security Info=False";
}
config_loaded = true;
return true;
}
catch (Exception ex)
{
if (Debug)
Console.WriteLine("Engine.LoadConfig Exception: {0}", ex.Message);
if (config_root != null)
config_root = null;
return false;
}
}
示例6: Main
static void Main(string[] args)
{
CmdArgs cmdArgs = new CmdArgs(args);
Dictionary<String, String> replace_list = new Dictionary<string, string>();
DateTime end, actual_start, actual_end;
if (!cmdArgs.HasParameter("cfg"))
{
Console.WriteLine("Configuration file was not provided. Use --cfg [file] to provide one.");
Console.WriteLine("Operation Aborted.");
return;
}
Config cfg = new Config(cmdArgs.Parameter("cfg"));
if (!cfg.Load())
{
Console.WriteLine("Was not possible to load '" + cmdArgs.Parameter("cfg") + "'.");
if (!string.IsNullOrWhiteSpace(cfg.ExceptionMessage))
{
Console.WriteLine("The message returned was:");
Console.WriteLine(cfg.ExceptionMessage);
Console.WriteLine("Operation Aborted.");
return;
}
}
ConfigNode root = cfg.Root;
int id = root["start.id", 1].AsInt();
string template = root["template", "FillMatrix.template"].AsString();
string dateFormat = root["dateFormat.format", "yyyy-MM-dd HH:mm:ss"].AsString();
actual_start = root["start"].AsDateTime(dateFormat);
end = root["end"].AsDateTime(dateFormat);
int interval;
if (root.NodeData.ContainsKey("interval.days"))
{
interval = root["interval.days"].AsInt();
actual_end = actual_start.AddDays(interval);
}
else
{
interval = 10;
actual_end = end;
}
string interpolation = root["interpolation.method", "2"].AsString();
replace_list.Add("<<start>>", actual_start.ToString("yyyy M d H m s"));
replace_list.Add("<<end>>", actual_end.ToString("yyyy M d H m s"));
replace_list.Add("<<id>>", id.ToString());
replace_list.Add("<<interpolation>>", interpolation);
ExternalApp fillmatrix = new ExternalApp();
while (actual_end <= end)
{
TextFile.Replace(template, "FillMatrix.dat", ref replace_list);
fillmatrix.CheckSuccessMethod = CheckSuccessMethod.DONOTCHECK;
fillmatrix.Wait = true;
fillmatrix.WorkingDirectory = @".\";
fillmatrix.Executable = @".\fillmatrix.exe";
try
{
fillmatrix.Run();
}
catch (Exception ex)
{
Console.WriteLine("Erro detectado. Mensagem de erro:");
Console.WriteLine(ex.Message);
Console.WriteLine("ID : {0}", id.ToString());
Console.WriteLine("Start : {0}", actual_start.ToString());
Console.WriteLine("End : {0}", actual_end.ToString());
Console.WriteLine("");
}
id++;
actual_start = actual_end;
actual_end = actual_start.AddDays(14);
if (actual_start < end && actual_end > end)
actual_end = end;
replace_list["<<start>>"] = actual_start.ToString("yyyy M d H m s");
replace_list["<<end>>"] = actual_end.ToString("yyyy M d H m s");
replace_list["<<id>>"] = id.ToString();
}
}
示例7: SendQuotation
protected void SendQuotation(object sender, CommandEventArgs e)
{
long productId = 0;
int credits = 0;
if (QuotationAmount.Text.Length > 0)
{
int tmp = 0;
if (int.TryParse(QuotationAmount.Text, out tmp))
credits = tmp;
}
if (Session["quotation.pid"] != null)
productId = (long)Session["quotation.pid"];
if (credits > 0)
{
// Send e-mail with quotation request
Config cfg = new Config();
cfg.Load(Server.MapPath("~/Config/trackprotect.config"));
string emailTo = cfg["email.sales"];
StringBuilder body = new StringBuilder();
// Get user/client information
using (Database db = new MySqlDatabase())
{
long userId = Util.UserId;
UserInfo ui = db.GetUser(userId);
ClientInfo ci = db.GetClientInfo(userId);
body.Append("<html><head></head><body><p><div style=\"background-color:#E6E6E6;\"><table><tr><td>");
body.Append("<img src=\"" + ConfigurationManager.AppSettings["EmailHeaderLogo"] + "\" alt=\"logo\"/></td><td><span>");
body.Append("<a style=\"color:#E4510A; margin-left:450px;\" href=\"" + ConfigurationManager.AppSettings["EmailmailToLink"] + "\" >" + ConfigurationManager.AppSettings["EmailmailToLink"] + "</a>");
body.Append("<br><a style=\"color:#E4510A; margin-left:450px;\" href=\"" + ConfigurationManager.AppSettings["SiteNavigationLink"] + "\">" + ConfigurationManager.AppSettings["SiteNavigationLink"] + "</a>");
body.Append("</span></td></tr></table></div><br><br>");
body.Append(ci.GetFullName());
body.AppendFormat("heeft een offerte aangevraagd voor {0} credits.\r\n", QuotationAmount.Text);
body.AppendFormat("e-mail : {0}\r\n", ui.Email);
body.AppendFormat("e-mail receipt : {0}\r\n", ci.EmailReceipt);
body.AppendFormat("user-id : {0}\r\n", ui.UserId);
body.AppendFormat("client-id : {0}\r\n", ci.ClientId);
body.Append("<br><br><img src=\"" + ConfigurationManager.AppSettings["EmailFooterLogo"] + "\" alt=\"logo\"/>");
body.Append("<a href=\"" + ConfigurationManager.AppSettings["EmailFBlink"] + "\"><img src=\"" + ConfigurationManager.AppSettings["EmailFBLogo"] + "\" alt=\"facebook\"></img></a>");
body.Append("<a href=\"" + ConfigurationManager.AppSettings["EmailTwitterLink"] + "\"><img src=\"" + ConfigurationManager.AppSettings["EmailTwitterLogo"] + "\" alt=\"twitter\"></img></a>");
body.Append("<a href=\"" + ConfigurationManager.AppSettings["EmailSoundCloudLink"] + "\"><img src=\"" + ConfigurationManager.AppSettings["EmailSoundCloudLogo"] + "\" alt=\"soundcloud\"></img></a>");
body.Append("<br><br>Trackprotect is “a RHOS Initiative” – Robin Hood of Sound – A Sound Revolution.<br>");
if (productId == 0)
productId = 4;
db.CreateQuotation(ui.UserId, credits, productId, string.Format("Quotation for {0} credits", QuotationAmount.Text));
}
Util.SendEmail(new string[] { emailTo }, "[email protected]", Resources.Resource.Quotation, body.ToString(), new string[] { }, 0);
Response.Redirect("~/Member/QuotationSuccess.aspx", false);
}
else
{
ErrorMessage.Text = Resources.Resource.InvalidAmount;
}
}
示例8: LoadConfig
public bool LoadConfig()
{
cfg = new Config();
cfg.ConfigFile.FullName = "test.cfg";
return cfg.Load();
}
示例9: TestPotatoConfigWritten
public void TestPotatoConfigWritten() {
var instance = (PotatoController)new PotatoController() {
Shared = {
Variables = new VariableController().Execute() as VariableController,
Security = new SecurityController().Execute() as SecurityController,
Events = new EventsController().Execute() as EventsController,
Languages = new LanguageController().Execute() as LanguageController
}
}.Execute();
instance.Shared.Variables.Tunnel(CommandBuilder.VariablesSet(CommonVariableNames.PotatoConfigPassword, "PotatoConfigurationPassword").SetOrigin(CommandOrigin.Local));
instance.Connections.Add(new ConnectionController() {
ConnectionModel = new ConnectionModel() {
ProtocolType = new ProtocolType() {
Name = "Mock Protocol",
Provider = "Myrcon",
Type = "MockProtocol"
},
Hostname = "1.1.1.1",
Port = 27516,
Arguments = "",
Password = "password"
}
});
instance.WriteConfig();
var loadConfig = new Config();
loadConfig.Load(ConfigFileInfo);
var configCommand = loadConfig.RootOf<PotatoController>().Children<JObject>().Select(item => item.ToObject<IConfigCommand>(JsonSerialization.Minimal)).ToList().Last();
configCommand.Decrypt("PotatoConfigurationPassword");
Assert.AreEqual("PotatoAddConnection", configCommand.Command.Name);
Assert.AreEqual("Myrcon", configCommand.Command.Parameters[0].First<String>());
Assert.AreEqual("MockProtocol", configCommand.Command.Parameters[1].First<String>());
Assert.AreEqual("1.1.1.1", configCommand.Command.Parameters[2].First<String>());
Assert.AreEqual("27516", configCommand.Command.Parameters[3].First<String>());
Assert.AreEqual("password", configCommand.Command.Parameters[4].First<String>());
Assert.AreEqual("", configCommand.Command.Parameters[5].First<String>());
instance.Dispose();
}
示例10: Initialize
public static void Initialize()
{
if (Initialized)
return;
UIManager.Instance.SetBusy(true);
try
{
if (!Debugger.IsAttached) // the debugger handle the unhandled exceptions
AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;
AppDomain.CurrentDomain.ProcessExit += OnProcessExit;
UIManager.Instance.BusyMessage = "Load config ...";
Config = new Config(ConfigPath);
foreach (Assembly assembly in m_hierarchy)
{
Config.BindAssembly(assembly);
Config.RegisterAttributes(assembly);
}
Config.Load();
logger.Info("{0} loaded", Path.GetFileName(Config.FilePath));
UIManager.Instance.BusyMessage = "Loading D2O files ...";
ObjectDataManager.Instance.AddReaders(Path.Combine(GetDofusPath(), DofusDataPath));
I18NDataManager.Instance.DefaultLanguage = Languages.English;
I18NDataManager.Instance.AddReaders(Path.Combine(GetDofusPath(), DofusI18NPath));
IconsManager.Instance.Initialize(Path.Combine(GetDofusPath(), DofusItemIconPath));
UIManager.Instance.BusyMessage = "Starting redis server ...";
logger.Info("Starting redis server ...");
RedisServerHost.Instance.ExecutablePath = RedisServerExe;
RedisServerHost.Instance.StartOrFindProcess();
UIManager.Instance.BusyMessage = string.Format("Loading {0}...", MapsManager.MapsDataFile);
logger.Info("Loading {0}...", MapsManager.MapsDataFile);
ProgressionCounter progression = MapsManager.Instance.Initialize(Path.Combine(GetDofusPath(), DofusMapsD2P));
if (progression != null)
ExecuteProgress(progression);
UIManager.Instance.BusyMessage = "Loading maps positions ...";
logger.Info("Loading maps positions ...");
progression = MapsPositionManager.Instance.Initialize();
if (progression != null)
ExecuteProgress(progression);
UIManager.Instance.BusyMessage = "Loading submaps ...";
logger.Info("Loading submaps ...");
progression = SubMapsManager.Instance.Initialize();
if (progression != null)
ExecuteProgress(progression);
MITM = new MITM.MITM(new MITMConfiguration
{
FakeAuthHost = BotAuthHost,
FakeAuthPort = BotAuthPort,
FakeWorldHost = BotWorldHost,
FakeWorldPort = BotWorldPort,
RealAuthHost = RealAuthHost,
RealAuthPort = RealAuthPort
});
MessageDispatcher.DefineHierarchy(m_hierarchy);
foreach (Assembly assembly in m_hierarchy)
{
MessageDispatcher.RegisterSharedAssembly(assembly);
}
UIManager.Instance.BusyMessage = "Loading plugins ...";
PluginManager.Instance.LoadAllPlugins();
DispatcherTask = new DispatcherTask(new MessageDispatcher(), MITM);
DispatcherTask.Start(); // we have to start it now to dispatch the initialization msg
BotManager.Instance.Initialize();
var msg = new HostInitializationMessage();
DispatcherTask.Dispatcher.Enqueue(msg, MITM);
msg.Wait();
}
finally
{
UIManager.Instance.SetBusy(false);
}
Initialized = true;
}
示例11: FrmDBExportConfig_Load
private void FrmDBExportConfig_Load(object sender, EventArgs e)
{
// локализация модуля
string errMsg;
if (!Localization.UseRussian)
{
if (Localization.LoadDictionaries(appDirs.LangDir, "ModDBExport", out errMsg))
Translator.TranslateForm(this, "Scada.Server.Modules.DBExport.FrmDBExportConfig");
else
ScadaUiUtils.ShowError(errMsg);
}
// настройка элементов управления
lblInstruction.Top = treeView.Top;
// загрузка конфигурации
config = new Config(appDirs.ConfigDir);
if (File.Exists(config.FileName) && !config.Load(out errMsg))
ScadaUiUtils.ShowError(errMsg);
// создание копии конфигурации
configCopy = config.Clone();
// отображение конфигурации
ConfigToControls();
// снятие признака изменения конфигурации
Modified = false;
}
示例12: TestEnabledPluginSavedToConfig
public void TestEnabledPluginSavedToConfig() {
Guid connectionGuid = Guid.NewGuid();
Guid onePluginGuid = Guid.NewGuid();
Guid twoPluginGuid = Guid.NewGuid();
ICorePluginController plugins = new CorePluginController() {
Connection = new ConnectionController() {
ConnectionModel = new ConnectionModel() {
ConnectionGuid = connectionGuid
}
},
LoadedPlugins = new List<PluginModel>() {
new PluginModel() {
Name = "One",
IsEnabled = false,
PluginGuid = onePluginGuid
},
new PluginModel() {
Name = "Two",
IsEnabled = true,
PluginGuid = twoPluginGuid
}
}
};
IConfig config = new Config().Create<CorePluginController>();
plugins.WriteConfig(config);
config.Save(this.ConfigFile);
// Now load up the config and ensure it saved what we wanted it too.
var loadConfig = new Config();
loadConfig.Load(this.ConfigFile);
var commands = loadConfig.RootOf<CorePluginController>().Children<JObject>().Select(item => item.ToObject<IConfigCommand>(JsonSerialization.Minimal)).ToList();
Assert.AreEqual("PluginsEnable", commands[0].Command.Name);
Assert.AreEqual(connectionGuid, commands[0].Command.Scope.ConnectionGuid);
Assert.AreEqual(twoPluginGuid, commands[0].Command.Scope.PluginGuid);
}
示例13: TestSecurityWriteConfig
public void TestSecurityWriteConfig() {
var security = new SecurityController();
security.Tunnel(new Command() {
Origin = CommandOrigin.Local,
CommandType = CommandType.SecurityAddGroup,
Parameters = TestHelpers.ObjectListToContentList(new List<Object>() {
"GroupName"
})
});
security.Tunnel(new Command() {
Origin = CommandOrigin.Local,
CommandType = CommandType.SecurityGroupSetPermission,
Parameters = TestHelpers.ObjectListToContentList(new List<Object>() {
"GroupName",
"CustomPermission",
22
})
});
security.Tunnel(new Command() {
Origin = CommandOrigin.Local,
CommandType = CommandType.SecurityGroupSetPermission,
Parameters = TestHelpers.ObjectListToContentList(new List<Object>() {
"GroupName",
CommandType.VariablesSet,
77
})
});
security.Tunnel(new Command() {
Origin = CommandOrigin.Local,
CommandType = CommandType.SecurityGroupSetPermission,
Parameters = TestHelpers.ObjectListToContentList(new List<Object>() {
"GroupName",
CommandType.VariablesSetA,
88
})
});
security.Tunnel(new Command() {
Origin = CommandOrigin.Local,
CommandType = CommandType.SecurityGroupAddAccount,
Parameters = TestHelpers.ObjectListToContentList(new List<Object>() {
"GroupName",
"Phogue"
})
});
security.Tunnel(new Command() {
Origin = CommandOrigin.Local,
CommandType = CommandType.SecurityAccountSetPassword,
Parameters = TestHelpers.ObjectListToContentList(new List<Object>() {
"Phogue",
"password"
})
});
security.Tunnel(CommandBuilder.SecurityAccountAppendAccessToken("Phogue", Guid.Parse("f380eb1e-1438-48c0-8c3d-ad55f2d40538"), "Token Hash", DateTime.Parse("2024-04-14 20:51:00 PM")).SetOrigin(CommandOrigin.Local));
security.Tunnel(new Command() {
Origin = CommandOrigin.Local,
CommandType = CommandType.SecurityAccountSetPreferredLanguageCode,
Parameters = TestHelpers.ObjectListToContentList(new List<Object>() {
"Phogue",
"de-DE"
})
});
security.Tunnel(new Command() {
Origin = CommandOrigin.Local,
CommandType = CommandType.SecurityAccountAddPlayer,
Parameters = TestHelpers.ObjectListToContentList(new List<Object>() {
"Phogue",
CommonProtocolType.DiceBattlefield3,
"ABCDEF"
})
});
// Save a config of the language controller
var saveConfig = new Config();
saveConfig.Create(typeof(SecurityController));
security.WriteConfig(saveConfig);
saveConfig.Save(ConfigFileInfo);
// Load the config in a new config.
var loadConfig = new Config();
loadConfig.Load(ConfigFileInfo);
var commands = loadConfig.RootOf<SecurityController>().Children<JObject>().Select(item => item.ToObject<IConfigCommand>(JsonSerialization.Minimal)).ToList();
Assert.AreEqual("SecurityAddGroup", commands[0].Command.Name);
Assert.AreEqual("Guest", commands[0].Command.Parameters[0].First<String>());
Assert.AreEqual("SecurityAddGroup", commands[1].Command.Name);
Assert.AreEqual("GroupName", commands[1].Command.Parameters[0].First<String>());
Assert.AreEqual("SecurityGroupSetPermission", commands[2].Command.Name);
Assert.AreEqual("GroupName", commands[2].Command.Parameters[0].First<String>());
Assert.AreEqual(CommandType.VariablesSet.ToString(), commands[2].Command.Parameters[1].First<String>());
Assert.AreEqual("77", commands[2].Command.Parameters[2].First<String>());
Assert.AreEqual("SecurityGroupSetPermission", commands[3].Command.Name);
Assert.AreEqual("GroupName", commands[3].Command.Parameters[0].First<String>());
Assert.AreEqual(CommandType.VariablesSetA.ToString(), commands[3].Command.Parameters[1].First<String>());
Assert.AreEqual("88", commands[3].Command.Parameters[2].First<String>());
//.........这里部分代码省略.........
示例14: TestSecurityLoadConfig
public void TestSecurityLoadConfig() {
var saveSecurity = new SecurityController();
saveSecurity.Tunnel(new Command() {
Origin = CommandOrigin.Local,
CommandType = CommandType.SecurityAddGroup,
Parameters = TestHelpers.ObjectListToContentList(new List<Object>() {
"GroupName"
})
});
saveSecurity.Tunnel(new Command() {
Origin = CommandOrigin.Local,
CommandType = CommandType.SecurityGroupSetPermission,
Parameters = TestHelpers.ObjectListToContentList(new List<Object>() {
"GroupName",
"CustomPermission",
22
})
});
saveSecurity.Tunnel(new Command() {
Origin = CommandOrigin.Local,
CommandType = CommandType.SecurityGroupSetPermission,
Parameters = TestHelpers.ObjectListToContentList(new List<Object>() {
"GroupName",
CommandType.VariablesSet,
77
})
});
saveSecurity.Tunnel(new Command() {
Origin = CommandOrigin.Local,
CommandType = CommandType.SecurityGroupSetPermission,
Parameters = TestHelpers.ObjectListToContentList(new List<Object>() {
"GroupName",
CommandType.VariablesSetA,
88
})
});
saveSecurity.Tunnel(new Command() {
Origin = CommandOrigin.Local,
CommandType = CommandType.SecurityGroupAddAccount,
Parameters = TestHelpers.ObjectListToContentList(new List<Object>() {
"GroupName",
"Phogue"
})
});
saveSecurity.Tunnel(new Command() {
Origin = CommandOrigin.Local,
CommandType = CommandType.SecurityAccountSetPassword,
Parameters = TestHelpers.ObjectListToContentList(new List<Object>() {
"Phogue",
"password"
})
});
saveSecurity.Tunnel(CommandBuilder.SecurityAccountAppendAccessToken("Phogue", Guid.Parse("f380eb1e-1438-48c0-8c3d-ad55f2d40538"), "Token Hash", DateTime.Parse("2024-04-14 20:51:00 PM")).SetOrigin(CommandOrigin.Local));
saveSecurity.Tunnel(new Command() {
Origin = CommandOrigin.Local,
CommandType = CommandType.SecurityAccountSetPreferredLanguageCode,
Parameters = TestHelpers.ObjectListToContentList(new List<Object>() {
"Phogue",
"de-DE"
})
});
saveSecurity.Tunnel(new Command() {
Origin = CommandOrigin.Local,
CommandType = CommandType.SecurityAccountAddPlayer,
Parameters = TestHelpers.ObjectListToContentList(new List<Object>() {
"Phogue",
CommonProtocolType.DiceBattlefield3,
"ABCDEF"
})
});
// Save a config of the security controller
var saveConfig = new Config();
saveConfig.Create(typeof(SecurityController));
saveSecurity.WriteConfig(saveConfig);
saveConfig.Save(ConfigFileInfo);
// Load the config in a new config.
var loadSecurity = (SecurityController)new SecurityController().Execute();
var loadConfig = new Config();
loadConfig.Load(ConfigFileInfo);
loadSecurity.Execute(loadConfig);
var lastGroup = loadSecurity.Groups.LastOrDefault(group => @group.Name == "GroupName") ?? new GroupModel();
Assert.AreEqual("Guest", loadSecurity.Groups.First().Name);
Assert.AreEqual("GroupName", loadSecurity.Groups.Last().Name);
Assert.AreEqual(22, lastGroup.Permissions.First(permission => permission.Name == "CustomPermission").Authority);
Assert.AreEqual(77, lastGroup.Permissions.First(permission => permission.Name == CommandType.VariablesSet.ToString()).Authority);
Assert.AreEqual(88, lastGroup.Permissions.First(permission => permission.Name == CommandType.VariablesSetA.ToString()).Authority);
Assert.AreEqual("Phogue", loadSecurity.Groups.SelectMany(group => group.Accounts).First().Username);
Assert.AreEqual(Guid.Parse("f380eb1e-1438-48c0-8c3d-ad55f2d40538"), loadSecurity.Groups.SelectMany(group => group.Accounts).First().AccessTokens.First().Value.Id);
Assert.AreEqual("Token Hash", loadSecurity.Groups.SelectMany(group => group.Accounts).First().AccessTokens.First().Value.TokenHash);
Assert.AreEqual(DateTime.Parse("2024-04-14 20:51:00 PM"), loadSecurity.Groups.SelectMany(group => group.Accounts).First().AccessTokens.First().Value.LastTouched);
Assert.AreEqual("de-DE", loadSecurity.Groups.Last().Accounts.First().PreferredLanguageCode);
Assert.AreEqual(CommonProtocolType.DiceBattlefield3, loadSecurity.Groups.SelectMany(group => group.Accounts).SelectMany(account => account.Players).First().ProtocolType);
Assert.AreEqual("ABCDEF", loadSecurity.Groups.SelectMany(group => group.Accounts).SelectMany(account => account.Players).First().Uid);
//.........这里部分代码省略.........
示例15: LoadConfig
/// <summary> Loads configuration settings from a file called botsettings.txt </summary>
private void LoadConfig()
{
try {
config = new Config( "botsettings.txt" );
if( !config.Exists() ) {
using( StreamWriter sw = new StreamWriter( "botsettings.txt" ) ) {
sw.WriteLine("UseRemoteServer: false");
sw.WriteLine("RemotePort: ");
sw.WriteLine("RemotePassword: ");
sw.WriteLine("CommandsRequireOperator: true");
sw.WriteLine("ReconnectAfterKick: true");
sw.WriteLine("SaveMap: false");
sw.WriteLine("Operators:");
sw.WriteLine("#And now, a little explaination on what all these mean.");
sw.WriteLine("#UseRemoteServer - Allows remote clients to connect and perform actions on the bot / chat through it. By default, this is disabled." +
"If you choose to use the remote function, you may need to forward the port and/or add an exception to your firewall.");
sw.WriteLine("#RemotePort - The port the server will listen on for remote clients. It is fine to leave this blank if UseRemoteServer is false.");
sw.WriteLine("#RemotePassword - The password to use for verifying remote clients. " +
"If UseRemoteServer is true and this is blank, the password will be set to \"password\". ");
sw.WriteLine("#CommandsRequireOperators - This determines whether bot commands require the person who called them to be in the operators file." +
"Usually you would want this to be true.");
sw.WriteLine("#ReconnectAfterKick - This determines if the bot will reconnect after being kicked. Note that if the bot receives a kick packet before" +
"a ServerIdentification packet, it will abort, and assume it has been banned from connecting.");
sw.WriteLine("#SaveMap - This determines if the bot will save the map when the chunk packets are sent to it." +
"If this is true, it will be saved as a fCraft compatible map. (Large maps of 512 x 512 x 512 " +
"can use up to ~150 megabytes of RAM when saving, so be wary. After saving, memory usage should return to normal.");
sw.WriteLine( "#Operators: Comma separated list of operators, with no spaces. (e.g. test,test1,test2)" );
Events.RaiseConfigCreating( new ConfigCreatingEventArgs( config, sw ) );
}
}
config.Load();
if( !config.TryParseValueOrDefault( "useremoteserver", false, out UseRemoteServer ) )
Log( LogType.Warning, "Couldn't load value for useremoteserver from config. Setting to default value of false" );
if( UseRemoteServer ) {
int remotePort;
if( !config.TryParseValueOrDefault( "remoteport", 25561, out remotePort ) ) {
Log( LogType.Warning, "Couldn't load value for remoteport from config. Setting to default value of 25561" );
}
string remotePassword;
config.TryGetRawValue( "remotepassword", out remotePassword );
if( String.IsNullOrEmpty( remotePassword ) ) {
remotePassword = "password";
Log( LogType.Warning, "Couldn't load value for remotepassword from config. Setting to default value of \"password\"" );
}
server = new Server();
server.Start( this, remotePort, remotePassword );
}
if( !config.TryParseValueOrDefault( "commandsrequireoperator", true, out _requiresop ) )
Log( LogType.Warning, "Couldn't load value for commandsrequireoperator from config. Setting to default value of true" );
if( !config.TryParseValueOrDefault( "reconnectafterkick", true, out _reconnectonkick ) )
Log( LogType.Warning, "Couldn't load value for reconnectafterkick from config. Setting to default value of true" );
if( !config.TryParseValueOrDefault( "savemap", false, out _savemap ) )
Log( LogType.Warning, "Couldn't load value for savemap from config. Setting to default value of false" );
string rawUsers; // Comma separated.
config.TryGetRawValue( "operators", out rawUsers );
if( String.IsNullOrEmpty( rawUsers ) ) {
Log( LogType.Warning, "Couldn't load value for operators from config. Setting to default value of empty." );
} else {
string[] users = rawUsers.Split( ',' );
bool fixedNames = false;
for( int i = 0; i < users.Length; i++ ) {
if( users[i].IndexOf( ' ' ) != -1 ) {
fixedNames = true;
users[i] = users[i].Replace( " ", String.Empty );
}
}
if( fixedNames ) {
config.AddOrUpdateValue( "operators", String.Join( ",", users ) );
Log( LogType.BotActivity, "Fixed up spaces in the list of operators." );
config.Save();
}
Users.AddRange( users );
}
Events.RaiseConfigLoading( new ConfigLoadingEventArgs( config ) );
} catch( Exception e ) {
Log( LogType.Error, "Couldn't load config:", e.ToString() );
}
}