//文字列による初期化 public bool FromReg(String str) { Ar.Clear(); if (string.IsNullOrEmpty(str)) { return(false); } //Ver5.7.x以前のiniファイルをVer5.8用に修正する var tmp = Util.ConvValStr(str); str = tmp; // 各行処理 String[] lines = str.Split('\b'); if (lines.Length <= 0) { return(false); //"lines.length <= 0" } foreach (var l in lines) { var s = l; //OneDatの生成 OneDat oneDat; try{ oneDat = new OneDat(true, new String[_colMax], _isSecretList); } catch (ValidObjException) { return(false); } if (s.Split('\t').Length != _isSecretList.Length + 1) { // +1はenableカラムの分 //カラム数の不一致 return(false); } //fromRegによる初期化 if (oneDat.FromReg(s)) { Ar.Add(oneDat); continue; // 処理成功 } //処理失敗 Ar.Clear(); return(false); } return(true); }
//ツールリストの初期化 public void Initialize(Kernel kernel) { Ar.Clear(); //「ステータス表示」の追加 var nameTag = Path.GetFileNameWithoutExtension(Application.ExecutablePath); //Add((OneTool)Util.CreateInstance(kernel,Application.ExecutablePath, "Tool", new object[] { kernel, nameTag })); Add(new Tool(kernel, nameTag)); //OptionListを検索して初期化する foreach (var o in kernel.ListOption) { if (o.UseServer) { var oneTool = (OneTool)Util.CreateInstance(kernel, o.Path, "Tool", new object[] { kernel, o.NameTag }); if (oneTool != null) { Ar.Add(oneTool); } } } }
// 初期化 private void Initialize(ListPlugin listPlugin) { Ar.Clear(); //Java fix if (kernel.RunMode == RunMode.Remote) { return; } foreach (OneOption op in kernel.ListOption) { if (!op.UseServer) { //サーバオプション以外は対象外にする continue; } //プラグイン情報の検索 OnePlugin onePlugin = listPlugin.Get(op.NameTag); // if (onePlugin == null) { // //設計上の問題 // Util.RuntimeException(string.Format("ListServer.initialize() listPlugin.get(%s)==null", op.getNameTag())); // } if (op.NameTag.IndexOf("Web-") == 0) { //既に同一ポートで仮想サーバがリストされている場合はサーバの生成は行わない bool find = false; int port = (int)op.GetValue("port"); BindAddr bindAddr = (BindAddr)op.GetValue("bindAddress2"); foreach (OneServer sv in Ar) { if (sv.NameTag.IndexOf("Web-") == 0) { OneOption o = kernel.ListOption.Get(sv.NameTag); if (o != null) { //同一ポートの設定が既にリストされているかどうか if (port == (int)o.GetValue("port")) { // バインドアドレスが競合しているかどうか if (bindAddr.CheckCompetition((BindAddr)o.GetValue("bindAddress2"))) { find = true; break; } } } } } if (!find) { AddServer(new Conf(op), onePlugin); //サーバ(OneServer)生成 } } else { AddServer(new Conf(op), onePlugin); //サーバ(OneServer)生成 } } }
//オプションリストの初期化 private void Initialize(ListPlugin listPlugin) { Ar.Clear(); //固定的にBasicとLogを生成する const string executePath = ""; // Application.ExecutablePath Add(new OptionBasic(_kernel, executePath)); //「基本」オプション Add(new OptionLog(_kernel, executePath)); //「ログ」オプション foreach (var onePlugin in listPlugin) { var oneOption = onePlugin.CreateOption(_kernel, "Option", onePlugin.Name); if (oneOption.NameTag == "Web") { //WebServerの場合は、バーチャルホストごとに1つのオプションを初期化する OneOption o = onePlugin.CreateOption(_kernel, "OptionVirtualHost", "VirtualHost"); if (Add(o)) { var dat = (Dat)o.GetValue("hostList"); if (dat != null) { foreach (var e in dat) { if (e.Enable) { string name = string.Format("Web-{0}:{1}", e.StrList[1], e.StrList[2]); Add(onePlugin.CreateOption(_kernel, "Option", name)); } } } } } else if (oneOption.NameTag == "Tunnel") { //TunnelServerの場合は、1トンネルごとに1つのオプションを初期化する OneOption o = onePlugin.CreateOption(_kernel, "OptionTunnel", "TunnelList"); if (Add(o)) { var dat = (Dat)o.GetValue("tunnelList"); if (dat != null) { foreach (var e in dat) { if (e.Enable) { string name = string.Format("{0}:{1}:{2}:{3}", (e.StrList[0] == "0") ? "TCP" : "UDP", e.StrList[1], e.StrList[2], e.StrList[3]); Add(onePlugin.CreateOption(_kernel, "Option", String.Format("Tunnel-{0}", name))); } } } } } else { Add(oneOption); //DnsServerのプラグイン固有オプションの生成 if (oneOption.NameTag == "Dns") { OneOption o = onePlugin.CreateOption(_kernel, "OptionDnsDomain", "DnsDomain"); if (Add(o)) { var dat = (Dat)o.GetValue("domainList"); if (dat != null) { foreach (var e in dat) { if (e.Enable) { Add(onePlugin.CreateOption(_kernel, "OptionDnsResource", String.Format("Resource-{0}", e.StrList[0]))); } } } } } else if (oneOption.NameTag == "Smtp") { //Ver6.0.0 OneOption o = onePlugin.CreateOption(_kernel, "OptionMl", "Ml"); //var o = (OneOption)Util.CreateInstance(kernel, path, "OptionMl", new object[] { kernel, path, "Ml" }); if (Add(o)) { var dat = (Dat)o.GetValue("mlList"); if (dat != null) { foreach (var e in dat) { if (e.Enable) { Add(onePlugin.CreateOption(_kernel, "OptionOneMl", String.Format("Ml-{0}", e.StrList[0]))); } } } } } } } if (Get("Smtp") != null || Get("Pop") != null) { Add(new OptionMailBox(_kernel, Application.ExecutablePath)); //メールボックス } }