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); }
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)); }
//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))); }
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(); }