Example #1
0
        //サーバ(OneServer)の生成
        private void AddServer(Conf conf, OnePlugin onePlugin)
        {
            var protocol = (ProtocolKind)conf.Get("protocolKind");
            //ProtocolKind protocol = ProtocolKind.ValueOf((int) conf.Get("protocolKind"));

            BindAddr bindAddr = (BindAddr)conf.Get("bindAddress2");

            if (bindAddr.BindStyle != BindStyle.V4Only)
            {
                var oneBind = new OneBind(bindAddr.IpV6, protocol);
                var o       = onePlugin.CreateServer(kernel, conf, oneBind);
                if (o != null)
                {
                    Ar.Add((OneServer)o);
                }
            }
            if (bindAddr.BindStyle != BindStyle.V6Only)
            {
                var oneBind = new OneBind(bindAddr.IpV4, protocol);
                var o       = onePlugin.CreateServer(kernel, conf, oneBind);
                if (o != null)
                {
                    Ar.Add((OneServer)o);
                }
            }
        }
Example #2
0
        public void 文字列でnewしたBindAddrオブジェクトをToStringで確認する(string bindStr, string expected)
        {
            //setUp
            var sut = new BindAddr(bindStr);
            //exercise
            var actual = sut.ToString();

            //verify
            Assert.That(actual, Is.EqualTo(expected));
        }
Example #3
0
        public void Totostringによる確認()
        {
            //setUp
            var expected = "V4Only,INADDR_ANY,IN6ADDR_ANY_INIT";
            var sut      = new BindAddr();
            //exercise
            var actual = sut.ToString();

            //verify
            Assert.That(actual, Is.EqualTo(expected));
        }
Example #4
0
        public void パラメータBindStyle_ipv4_ipv6でnewしたBindAddrオブジェクトをToStringで確認する(
            BindStyle bindStyle, string ipV4, string ipV6, string expected)
        {
            //setUp
            var sut = new BindAddr(bindStyle, new Ip(ipV4), new Ip(ipV6));
            //exercise
            var actual = sut.ToString();

            //verify
            Assert.That(actual, Is.EqualTo(expected));
        }
Example #5
0
        public void CheckCompetitionによる競合があるかどうかの確認(string bindStr1, string bindStr2, bool expected)
        {
            //setUp
            var sut    = new BindAddr(bindStr1);
            var target = (bindStr2 == null) ? null : new BindAddr(bindStr2);

            //exercise
            var actual = sut.CheckCompetition(target);

            //verify
            Assert.That(actual, Is.EqualTo(expected));
        }
Example #6
0
        public void Equalsによる同一確認(string bindStr1, string bindStr2, bool expected)
        {
            //setUp
            var sut    = new BindAddr(bindStr1);
            var target = (bindStr2 == null) ? null : new BindAddr(bindStr2);

            //exercise
            var actual = sut.Equals(target);

            //verify
            Assert.That(actual, Is.EqualTo(expected));
        }
Example #7
0
        public byte[] ToBytes()
        {
            var buffer = new List <byte>();

            buffer.Add(Version);
            buffer.Add((byte)ReplyCode);
            buffer.Add(Reserved);
            buffer.Add((byte)AddrType);
            buffer.AddRange(BindAddr.GetAddressBytes());
            buffer.AddRange(BitConverter.GetBytes(IPAddress.HostToNetworkOrder(BindPort)).Skip(2));
            return(buffer.ToArray());
        }
Example #8
0
        public void CreateOneBindで生成される数の確認(string bindStr, ProtocolKind protocolKind, int count, string firstOneBind)
        {
            //stUp
            var sut      = new BindAddr(bindStr);
            var expected = count;

            //exercise
            var ar     = sut.CreateOneBind(protocolKind);
            var actual = ar.Length;

            //verify
            Assert.That(actual, Is.EqualTo(expected));
        }
Example #9
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)生成
                }
            }
        }
Example #10
0
        //出力ファイル(Option.ini)からの入力用<br>
        //不正な文字列があった場合は、無効行として無視される<br>
        public bool FromReg(String str)
        {
            if (str == null)
            {
                Value = null;
                return(false);
            }
            switch (OneCtrl.GetCtrlType())
            {
            case CtrlType.Dat:
                CtrlDat ctrlDat = (CtrlDat)OneCtrl;
                Dat     dat     = new Dat(ctrlDat.CtrlTypeList);
                if (!dat.FromReg(str))
                {
                    Value = null;
                    return(false);
                }
                //Ver5.8.7 Java fix Datの中にComboBoxが存在する場合の旧バージョンの変換
                foreach (var d in dat)
                {
                    for (int i = 0; i < ctrlDat.ListVal.Count; i++)
                    {
                        if (ctrlDat.ListVal[i].OneCtrl.GetCtrlType() == CtrlType.ComboBox)
                        {
                            int val;
                            if (!int.TryParse(d.StrList[i], out val))
                            {
                                //Ver5.7.x以前のデータ
                                OneVal dmy = new OneVal("dmy", null, Crlf.Nextline, ctrlDat.ListVal[i].OneCtrl);
                                if (dmy.FromRegConv(d.StrList[i]))
                                {
                                    d.StrList[i] = dmy.ToReg(false);
                                }
                            }
                        }
                    }
                }
                Value = dat;
                break;

            case CtrlType.CheckBox:
                try {
                    Value = Boolean.Parse(str);
                } catch {
                    Value = false;
                    return(false);
                }
                break;

            case CtrlType.Font:
                Value = null;
                var tmp = str.Split(',');
                if (tmp.Length == 3)
                {
                    try{
                        var family = new FontFamily(tmp[0]);
                        var size   = (float)Convert.ToDouble(tmp[1]);
                        var style  = (FontStyle)Enum.Parse(typeof(FontStyle), tmp[2]);
                        Value = new Font(family, size, style);
                    }catch (Exception) {
                        Value = null;
                    }
                }
                if (Value == null)
                {
                    return(false);
                }
                break;

            case CtrlType.Memo:
                Value = Util.SwapStr("\t", "\r\n", str);
                break;

            case CtrlType.File:
            case CtrlType.Folder:
            case CtrlType.TextBox:
                Value = str;
                break;

            case CtrlType.Hidden:
                try{
                    Value = Crypt.Decrypt(str);
                }
                catch (Exception) {
                    Value = "";
                    return(false);
                }
                break;

            case CtrlType.Radio:
                try{
                    Value = Int32.Parse(str);
                }catch (Exception) {
                    Value = 0;
                    return(false);
                }
                if ((int)Value < 0)
                {
                    Value = 0;
                    return(false);
                }
                break;

            case CtrlType.ComboBox:
                int max = ((CtrlComboBox)OneCtrl).Max;
                try {
                    var n = Int32.Parse(str);
                    if (n < 0 || max <= n)
                    {
                        Value = 0;
                        return(false);
                    }
                    Value = n;
                } catch {
                    Value = 0;
                    //Ver5.9.2 Ver5.7.x以前のデータのコンバート
                    OneVal dmy = new OneVal("dmy", null, Crlf.Nextline, OneCtrl);
                    if (dmy.FromRegConv(str))
                    {
                        int n;
                        Int32.TryParse(dmy.ToReg(false), out n);
                        if (n < 0 || max <= n)
                        {
                            Value = 0;
                            return(false);
                        }
                        Value = n;
                    }
                    return(false);
                }
                break;

            case CtrlType.Int:
                try {
                    Value = Int32.Parse(str);
                } catch {
                    Value = 0;
                    return(false);
                }
                break;

            case CtrlType.BindAddr:
                try{
                    Value = new BindAddr(str);
                }
                catch (ValidObjException) {
                    Value = 0;
                    return(false);
                }
                break;

            case CtrlType.AddressV4:
                try{
                    Value = new Ip(str);
                }
                catch (ValidObjException) {
                    Value = null;
                    return(false);
                }
                break;

            case CtrlType.TabPage:
            case CtrlType.Group:
                break;

            default:
                Value = 0;
                return(false);
                // "実装されていないCtrlTypeが指定されました OneVal.fromReg()"
            }
            return(true);
        }