Пример #1
0
        public String ChangeTag(String src)
        {
            var tagList = new[] { "$h", "$v", "$p", "$d", "$a", "$s" };

            foreach (var tag in tagList)
            {
                while (true)
                {
                    var index = src.IndexOf(tag);
                    if (index == -1)
                    {
                        break;
                    }
                    var tmp1 = src.Substring(0, index);
                    var tmp2 = "";
                    switch (tag)
                    {
                    case "$h":
                        var serverName = ServerName;
                        tmp2 = serverName == "" ? "localhost" : serverName;
                        break;

                    case "$v":
                        tmp2 = Ver.Version();
                        break;

                    case "$p":
                        tmp2 = Define.ApplicationName();
                        break;

                    case "$d":
                        tmp2 = Define.Date();
                        break;

                    case "$a":
                        var localAddress = LocalAddress.GetInstance();
                        tmp2 = localAddress.RemoteStr();
                        //tmp2 = Define.ServerAddress();
                        break;

                    case "$s":
                        tmp2 = ServerName;
                        break;

                    default:
                        Util.RuntimeException(string.Format("undefind tag = {0}", tag));
                        break;
                    }
                    var tmp3 = src.Substring(index + 2);
                    src = tmp1 + tmp2 + tmp3;
                }
            }
            return(src);
        }
Пример #2
0
        public void RemoteStrで取得したテキストで改めてLocalAddressを生成して同じかどうかを確認()
        {
            //setUp
            var localAddress = LocalAddress.GetInstance();
            var expected     = localAddress.RemoteStr();

            //exercise
            var sut    = new LocalAddress(expected);
            var actual = sut.RemoteStr();

            //verify
            Assert.That(actual, Is.EqualTo(expected));
        }
Пример #3
0
        //OneValとしてサーバ基本設定を作成する
        protected OneVal CreateServerOption(ProtocolKind protocolKind, int port, int timeout, int multiple)
        {
            var list = new ListVal();

            list.Add(new OneVal("protocolKind", protocolKind, Crlf.Contonie, new CtrlComboBox(_isJp ? "プロトコル"
                                : "Protocol", new [] { "TCP", "UDP" }, 60)));
            list.Add(new OneVal("port", port, Crlf.Nextline, new CtrlInt(_isJp ? "クライアントから見たポート" : "Port (from client side)", 5)));
            var localAddress = LocalAddress.GetInstance();
            var v4           = localAddress.V4;
            var v6           = localAddress.V6;

            list.Add(new OneVal("bindAddress2", new BindAddr(), Crlf.Nextline, new CtrlBindAddr(_isJp ? "待ち受けるネットワーク": "Bind Address", v4, v6)));
            list.Add(new OneVal("useResolve", false, Crlf.Nextline, new CtrlCheckBox((_isJp ? "クライアントのホスト名を逆引きする": "Reverse pull of host name from IP address"))));
            list.Add(new OneVal("useDetailsLog", true, Crlf.Contonie, new CtrlCheckBox(_isJp ? "詳細ログを出力する": "Use Details Log")));
            list.Add(new OneVal("multiple", multiple, Crlf.Contonie, new CtrlInt(_isJp ? "同時接続数" : "A repetition thread", 5)));
            list.Add(new OneVal("timeOut", timeout, Crlf.Nextline, new CtrlInt(_isJp ? "タイムアウト(秒)" : "Timeout", 6)));
            return(new OneVal("GroupServer", null, Crlf.Nextline, new CtrlGroup(_isJp ? "サーバ基本設定" : "Server Basic Option", list)));
        }
Пример #4
0
        SockTcp _sockTcp;//�����Ő錾����ꍇ�A�}���`�X���b�h�ł͎g�p�ł��Ȃ�
        override protected void OnSubThread(SockObj sockObj)
        {
            _sockTcp = (SockTcp)sockObj;

            //*************************************************************
            // �p�X���[�h�F��
            //*************************************************************
            var password = (string)Conf.Get("password");

            if (password == "")
            {
                Logger.Set(LogKind.Normal, _sockTcp, 5, "");
            }
            else  //�p�X���[�h�F�؂��K�v�ȏꍇ
            {
                var challengeStr = Inet.ChallengeStr(10);//�`�������W������̐���

                RemoteData.Send(_sockTcp, RemoteDataKind.DatAuth, challengeStr);

                //�p�X���[�h�̉����҂�
                var success = false;//Ver5.0.0-b14
                while (IsLife() && _sockTcp.SockState == Bjd.sock.SockState.Connect)
                {
                    var o = RemoteData.Recv(_sockTcp, this);
                    if (o != null)
                    {
                        if (o.Kind == RemoteDataKind.CmdAuth)
                        {
                            //�n�b�V��������̍쐬�iMD5�j
                            var md5Str = Inet.Md5Str(password + challengeStr);
                            if (md5Str != o.Str)
                            {
                                Logger.Set(LogKind.Secure, _sockTcp, 4, "");

                                //DOS�΍� 3�b�Ԃ͎��̐ڑ���󂯕t���Ȃ�
                                //for (int i = 0; i < 30 && life; i++) {
                                //    Thread.Sleep(100);
                                //}
                                //tcpObj.Close();//���̐ڑ��͔j�������
                                //return;
                            }
                            else
                            {
                                success = true;//Ver5.0.0-b14
                            }
                            break;
                        }
                    }
                    else
                    {
                        Thread.Sleep(500);
                    }
                }
                //Ver5.0.0-b14
                if (!success)
                {
                    //�F�؎��s�i�p�X���[�h�L�����Z���E�p�X���[�h�Ⴂ�E�����ؒf�j
                    //DOS�΍� 3�b�Ԃ͎��̐ڑ���󂯕t���Ȃ�
                    for (var i = 0; i < 30 && IsLife(); i++)
                    {
                        Thread.Sleep(100);
                    }
                    _sockTcp.Close();//���̐ڑ��͔j�������
                    return;
                }
            }

            //*************************************************************
            // �F�؊���
            //*************************************************************

            Logger.Set(LogKind.Normal, _sockTcp, 1, string.Format("address={0}", _sockTcp.RemoteAddress.Address));

            //�o�[�W����/���O�C�������̑��M
            RemoteData.Send(_sockTcp, RemoteDataKind.DatVer, Kernel.Ver.VerData());

            //kernel.LocalAddress��Remote����������
            RemoteData.Send(_sockTcp, RemoteDataKind.DatLocaladdress, LocalAddress.GetInstance().RemoteStr());

            //�I�v�V�����̑��M
            var    optionFileName = string.Format("{0}\\Option.ini", Kernel.ProgDir());
            string optionStr;

            using (var sr = new StreamReader(optionFileName, Encoding.GetEncoding("Shift_JIS"))) {
                optionStr = sr.ReadToEnd();
                sr.Close();
            }
            RemoteData.Send(_sockTcp, RemoteDataKind.DatOption, optionStr);
            Kernel.RemoteConnect = new Bjd.remote.RemoteConnect(_sockTcp); //�����[�g�N���C�A���g�ڑ��J�n
            Kernel.View.SetColor();                                        //�E�C���h�F�̏�����

            while (IsLife() && _sockTcp.SockState == Bjd.sock.SockState.Connect)
            {
                var o = RemoteData.Recv(_sockTcp, this);
                if (o == null)
                {
                    continue;
                }
                //�R�}���h�́A���ׂăL���[�Ɋi�[����
                _queue.Enqueue(o);
                if (_queue.Count == 0)
                {
                    GC.Collect();
                    Thread.Sleep(500);
                }
                else
                {
                    Cmd(_queue.Dequeue());
                }
            }

            Kernel.RemoteConnect = null;//�����[�g�N���C�A���g�ڑ��I��

            Logger.Set(LogKind.Normal, _sockTcp, 2, string.Format("address={0}", _sockTcp.RemoteAddress.Address));
            Kernel.View.SetColor();//�E�C���h�F�̏�����

            _sockTcp.Close();
        }