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