Exemple #1
0
        //文字列による初期化
        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);
        }
Exemple #2
0
        //ツールリストの初期化
        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);
                    }
                }
            }
        }
Exemple #3
0
        // 初期化
        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)生成
                }
            }
        }
Exemple #4
0
        //オプションリストの初期化
        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)); //メールボックス
            }
        }