private bool JobPass(Session session, String password) { //�܂�USER�R�}���h���������Ă��Ȃ��ꍇ if (session.UserName == null) { session.StringSend("503 Login with USER first."); return(true); } //���[�U��� session.OneUser = _listUser.Get(session.UserName); if (session.OneUser == null) { //�����ȃ��[�U�̏ꍇ Logger.Set(LogKind.Secure, session.SockCtrl, 14, string.Format("USER:{0} PASS:{1}", session.UserName, password)); } else { //�p�X���[�h�m�F bool success = false; // *�̏ꍇ�AAnonymous�ڑ��Ƃ��ď������� if (session.OneUser.Password == "*") { //oneUser.UserName = string.Format("{0}(ANONYMOUS)",oneUser.UserName); Logger.Set(LogKind.Normal, session.SockCtrl, 5, string.Format("{0}(ANONYMOUS) {1}", session.OneUser.UserName, password)); success = true; } else if (session.OneUser.Password == password) { Logger.Set(LogKind.Secure, session.SockCtrl, 6, string.Format("{0}", session.OneUser.UserName)); success = true; } if (success) { //�ȉ��A�p�X���[�h�F�ɐ��������ꍇ�̏��� //�z�[���f�B���N�g���̑��݊m�F //�T�[�o�N���i�^�c�j���Ƀf�B���N�g�����폜����Ă���\��������̂ŁA���̎��_�Ŋm�F���� if (Util.Exists(session.OneUser.HomeDir) != ExistsKind.Dir) { //�z�[���f�B���N�g�������݂��܂���i�������p���ł��Ȃ����ߐؒf���܂��� Logger.Set(LogKind.Error, session.SockCtrl, 2, string.Format("userName={0} hoemDir={1}", session.OneUser.UserName, session.OneUser.HomeDir)); return(false); } //���O�C������ �i�J�����g�f�B���N�g���́A�z�[���f�B���N�g���ŏ����������j session.CurrentDir = new CurrentDir(session.OneUser.HomeDir, _listMount); session.StringSend(string.Format("230 User {0} logged in.", session.UserName)); return(true); } //�ȉ��F�؎��s���� Logger.Set(LogKind.Secure, session.SockCtrl, 15, string.Format("USER:{0} PASS:{1}", session.UserName, password)); } var reservationTime = (int)Conf.Get("reservationTime"); //�u���[�g�t�H�[�X�h�~�̂��߂̃E�G�C�g(5�b) for (int i = 0; i < reservationTime / 100 && IsLife(); i++) { Thread.Sleep(100); } //�F�Ɏ��s�����ꍇ�̏��� session.StringSend("530 Login incorrect."); return(true); }
private bool JobPass(Session session, String password) { //まだUSERコマンドが到着していない場合 if (session.UserName == null) { session.StringSend("503 Login with USER first."); return(true); } //ユーザ情報検索 session.OneUser = _listUser.Get(session.UserName); if (session.OneUser == null) { //無効なユーザの場合 Logger.Set(LogKind.Secure, session.SockCtrl, 14, string.Format("USER:{0} PASS:{1}", session.UserName, password)); } else { //パスワード確認 bool success = false; // *の場合、Anonymous接続として処理する if (session.OneUser.Password == "*") { //oneUser.UserName = string.Format("{0}(ANONYMOUS)",oneUser.UserName); Logger.Set(LogKind.Normal, session.SockCtrl, 5, string.Format("{0}(ANONYMOUS) {1}", session.OneUser.UserName, password)); success = true; } else if (session.OneUser.Password == password) { Logger.Set(LogKind.Secure, session.SockCtrl, 6, string.Format("{0}", session.OneUser.UserName)); success = true; } if (success) { //以下、パスワード認証に成功した場合の処理 //ホームディレクトリの存在確認 //サーバ起動(運営)中にディレクトリが削除されている可能性があるので、この時点で確認する if (Util.Exists(session.OneUser.HomeDir) != ExistsKind.Dir) { //ホームディレクトリが存在しません(処理が継続できないため切断しました Logger.Set(LogKind.Error, session.SockCtrl, 2, string.Format("userName={0} hoemDir={1}", session.OneUser.UserName, session.OneUser.HomeDir)); return(false); } //ログイン成功 (カレントディレクトリは、ホームディレクトリで初期化される) session.CurrentDir = new CurrentDir(session.OneUser.HomeDir, _listMount); session.StringSend(string.Format("230 User {0} logged in.", session.UserName)); return(true); } //以下認証失敗処理 Logger.Set(LogKind.Secure, session.SockCtrl, 15, string.Format("USER:{0} PASS:{1}", session.UserName, password)); } var reservationTime = (int)Conf.Get("reservationTime"); //ブルートフォース防止のためのウエイト(5秒) for (int i = 0; i < reservationTime / 100 && IsLife(); i++) { Thread.Sleep(100); } //認証に失敗した場合の処理 session.StringSend("530 Login incorrect."); return(true); }