//ログファイルへの追加 //oneLog 保存するログ(1行) //return 失敗した場合はfalseが返される public bool Append(OneLog oneLog) { //コンストラクタで初期化に失敗している場合、falseを返す if (_timer == null) { return(false); } lock (this){ try{ // セキュリティログは、表示制限に関係なく書き込む if (_secureLog != null && oneLog.IsSecure()) { _secureLog.Set(oneLog.ToString()); } // 通常ログの場合 if (_normalLog != null) { // ルール適用除外 もしくは 表示対象になっている場合 _normalLog.Set(oneLog.ToString()); } } catch (IOException) { return(false); } return(true); } }
public void isSecureによる確認_LogKind_SECUREでtrueが返る() { //setUp const LogKind logKind = LogKind.Secure; const bool expected = true; var sut = new OneLog(GetDateTime(), logKind, NameTag, ThreadId, RemoteHostname, MessageId, Message, DetailInfomation); //exercise var actual = sut.IsSecure(); //verify Assert.That(actual, Is.EqualTo(expected)); }
//ログファイルへの追加 //oneLog 保存するログ(1行) //return 失敗した場合はfalseが返される public bool Append(OneLog oneLog) { //コンストラクタで初期化に失敗している場合、falseを返す if (_timer == null){ return false; } lock (this){ try{ // セキュリティログは、表示制限に関係なく書き込む if (_secureLog != null && oneLog.IsSecure()){ _secureLog.Set(oneLog.ToString()); } // 通常ログの場合 if (_normalLog != null){ // ルール適用除外 もしくは 表示対象になっている場合 _normalLog.Set(oneLog.ToString()); } } catch (IOException){ return false; } return true; } }
//ログ出力 //Override可能(テストで使用) public void Set(LogKind logKind, SockObj sockBase, int messageNo, String detailInfomation) { //デバッグ等でkernelが初期化されていない場合、処理なし if (_logFile == null && _logView == null) { return; } //詳細ログが対象外の場合、処理なし if (logKind == LogKind.Detail) { if (!_useDetailsLog) { return; } } int threadId = GetCurrentThreadId(); //long threadId = Thread.currentThread().getId(); var message = _isJp ? "定義されていません" : "Message is not defined"; if (messageNo < 9000000) { if (_logger != null) { message = _logger.GetMsg(messageNo); //デリゲートを使用した継承によるメッセージ取得 } } else { //(9000000以上)共通番号の場合の処理 switch (messageNo) { case 9000000: message = _isJp ? "サーバ開始" : "Server started it"; break; case 9000001: message = _isJp ? "サーバ停止" : "Server stopped"; break; case 9000002: message = "_subThread() started."; break; case 9000003: message = "_subThread() stopped."; break; case 9000004: message = _isJp ? "同時接続数を超えたのでリクエストをキャンセルします" : "Because the number of connection exceeded it at the same time, the request was canceled."; break; case 9000005: message = _isJp ? "受信文字列が長すぎます(不正なリクエストの可能性があるため切断しました)" : "Reception character string is too long (cut off so that there was possibility of an unjust request in it)"; break; case 9000006: message = _isJp ? "このポートは、既に他のプログラムが使用しているため使用できません" : "Cannot use this port so that other programs already use it"; break; case 9000007: message = _isJp ? "callBack関数が指定されていません[UDP]" : "It is not appointed in callback function [UDP]"; break; case 9000008: message = _isJp ? "プラグインをインストールしました" : "setup initialize plugin"; break; //case 9000009: // message = _isJp ? "Socket.Bind()でエラーが発生しました。[TCP]" : "An error occurred in Socket.Bind() [TCP]"; // break; //case 9000010: // message = _isJp // ? "Socket.Listen()でエラーが発生しました。[TCP]" // : "An error occurred in Socket..Listen() [TCP]"; // break; case 9000011: message = "tcpQueue().Dequeue()=null"; break; case 9000012: message = "tcpQueue().Dequeue() SocektObjState != SOCKET_OBJ_STATE.CONNECT break"; break; case 9000013: message = "tcpQueue().Dequeue()"; break; // case 9000014: // message = "SendBinaryFile(string fileName) socket.Send()"; // break; // case 9000015: // message = "SendBinaryFile(string fileName,long rangeFrom,long rangeTo) socket.Send()"; // break; case 9000016: message = _isJp ? "このアドレスからの接続は許可されていません(ACL)" : "Connection from this address is not admitted.(ACL)"; break; case 9000017: message = _isJp ? "このアドレスからの接続は許可されていません(ACL)" : "Connection from this address is not admitted.(ACL)"; break; case 9000018: message = _isJp ? "この利用者のアクセスは許可されていません(ACL)" : "Access of this user is not admitted (ACL)"; break; case 9000019: message = _isJp ? "アイドルタイムアウト" : "Timeout of an idle"; break; case 9000020: message = _isJp ? "送信に失敗しました" : "Transmission of a message failure"; break; case 9000021: message = _isJp ? "ThreadBase::loop()で例外が発生しました" : "An exception occurred in ThreadBase::Loop()"; break; case 9000022: message = _isJp ? "ウインドウ情報保存ファイルにIOエラーが発生しました" : "An IO error occurred in a window information save file"; break; case 9000023: message = _isJp ? "証明書の読み込みに失敗しました" : "Reading of a certificate made a blunder"; break; case 9000024: message = _isJp ? "SSLの初期化に失敗しているためサーバは起動できません" : "A server cannot start in order to fail in initialization of SSL"; break; //case 9000025: message = isJp ? "ファイル(秘密鍵)が見つかりません" : "Private key is not found"; break; case 9000026: message = _isJp ? "ファイル(証明書)が見つかりません" : "A certificate is not found"; break; //case 9000027: message = isJp ? "OpenSSLのライブラリ(ssleay32.dll,libeay32.dll)が見つかりません" : "OpenSSL library (ssleay32.dll,libeay32.dll) is not found"; break; case 9000028: message = _isJp ? "SSLの初期化に失敗しています" : "Initialization of SSL made a blunder"; break; case 9000029: message = _isJp ? "指定された作業ディレクトリが存在しません" : "A work directory is not found"; break; case 9000030: message = _isJp ? "起動するサーバが見つかりません" : "A starting server is not found"; break; case 9000031: message = _isJp ? "ログファイルの初期化に失敗しました" : "Failed in initialization of logfile"; break; case 9000032: message = _isJp ? "ログ保存場所" : "a save place of LogFile"; break; case 9000033: message = _isJp ? "ファイル保存時にエラーが発生しました" : "An error occurred in a File save"; break; case 9000034: message = _isJp ? "ACL指定に問題があります" : "ACL configuration failure"; break; case 9000035: message = _isJp ? "Socket()でエラーが発生しました。[TCP]" : "An error occurred in Socket() [TCP]"; break; //case 9000036: // message = _isJp ? "Socket()でエラーが発生しました。[UDP]" : "An error occurred in Socket() [UDP]"; // break; case 9000037: message = _isJp ? "_subThread()で例外が発生しました" : "An exception occurred in _subThread()"; break; case 9000038: message = _isJp ? "【例外】" : "[Exception]"; break; case 9000039: message = _isJp ? "【STDOUT】" : "[STDOUT]"; break; case 9000040: message = _isJp ? "拡張SMTP適用範囲の指定に問題があります" : "ESMTP range configuration failure"; break; case 9000041: message = _isJp ? "disp2()で例外が発生しました" : "An exception occurred in disp2()"; break; case 9000042: message = _isJp ? "初期化に失敗しているためサーバを開始できません" : "Can't start a server in order to fail in initialization"; break; case 9000043: message = _isJp ? "クライアント側が切断されました" : "The client side was cut off"; break; case 9000044: message = _isJp ? "サーバ側が切断されました" : "The server side was cut off"; break; case 9000045: message = _isJp ? "「オプション(O)-ログ表示(L)-基本設定-ログの保存場所」が指定されていません" : "\"log save place\" is not appointed"; break; case 9000046: message = _isJp ? "socket.send()でエラーが発生しました" : "socket.send()"; break; case 9000047: message = _isJp ? "ユーザ名が無効です" : "A user name is null and void"; break; case 9000048: message = _isJp ? "ThreadBase::Loop()で例外が発生しました" : "An exception occurred in ThreadBase::Loop()"; break; case 9000049: message = _isJp ? "【例外】" : "[Exception]"; break; case 9000050: message = _isJp ? "ファイルにアクセスできませんでした" : "Can't open a file"; break; case 9000051: message = _isJp ? "インスタンスの生成に失敗しました" : "Can't create instance"; break; case 9000052: message = _isJp ? "名前解決に失敗しました" : "Non-existent domain"; break; case 9000053: message = _isJp ? "【例外】SockObj.Resolve()" : "[Exception] SockObj.Resolve()"; break; case 9000054: message = _isJp ? "Apache Killerによる攻撃の可能性があります" : "There is possibility of attack by Apache Killer in it"; break; case 9000055: message = _isJp ? "【自動拒否】「ACL」の禁止する利用者(アドレス)に追加しました" : "Add it to a deny list automatically"; break; case 9000056: message = _isJp ? "不正アクセスを検出しましたが、ACL「拒否」リストは追加されませんでした" : "I detected possibility of Attack, but the ACL [Deny] list was not added"; break; case 9000057: message = _isJp ? "【例外】" : "[Exception]"; break; case 9000058: message = _isJp ? "メールの送信に失敗しました" : "Failed in the transmission of a message of an email"; break; case 9000059: message = _isJp ? "メールの保存に失敗しました" : "Failed in a save of an email"; break; case 9000060: message = _isJp ? "【例外】" : "[Exception]"; break; case 9000061: message = _isJp ? "【例外】" : "[Exception]"; break; //case 9000061: // message = isJp ? "ファイルの作成に失敗しました" : "Failed in making of a file"; // break; } } var remoteHostname = (sockBase == null) ? "-" : sockBase.RemoteHostname; var oneLog = new OneLog(DateTime.Now, logKind, _nameTag, threadId, remoteHostname, messageNo, message, detailInfomation); // 表示制限にヒットするかどうかの確認 var isDisplay = true; if (!oneLog.IsSecure()) { //セキュリティログは表示制限の対象外 if (_logLimit != null) { isDisplay = _logLimit.IsDisplay(oneLog.ToString()); } } if (_logView != null && isDisplay) { //isDisplayの結果に従う _logView.Append(oneLog); } //Ver5.8.8 //LogViewの中で実行していたリモートクライアントへの送信をこちらに移動する //サービス起動の際に、ListViewがnullで、処理されないから //リモートクライアントへのログ送信 if (_kernel != null && _kernel.RemoteConnect != null && _kernel.ListServer != null) { //クライアントから接続されている場合 var sv = _kernel.ListServer.Get("Remote"); if (sv != null) { sv.Append(oneLog); } } if (_logFile != null) { if (_useLimitString) { //表示制限が有効な場合 if (isDisplay) { //isDisplayの結果に従う _logFile.Append(oneLog); } } else { //表示制限が無効な場合は、すべて保存される _logFile.Append(oneLog); } } }
//ログ出力 //Override可能(テストで使用) public void Set(LogKind logKind, SockObj sockBase, int messageNo, String detailInfomation) { //デバッグ等でkernelが初期化されていない場合、処理なし if (_logFile == null && _logView == null){ return; } //詳細ログが対象外の場合、処理なし if (logKind == LogKind.Detail){ if (!_useDetailsLog){ return; } } int threadId = GetCurrentThreadId(); //long threadId = Thread.currentThread().getId(); var message = _isJp ? "定義されていません" : "Message is not defined"; if (messageNo < 9000000){ if (_logger != null){ message = _logger.GetMsg(messageNo); //デリゲートを使用した継承によるメッセージ取得 } } else{ //(9000000以上)共通番号の場合の処理 switch (messageNo){ case 9000000: message = _isJp ? "サーバ開始" : "Server started it"; break; case 9000001: message = _isJp ? "サーバ停止" : "Server stopped"; break; case 9000002: message = "_subThread() started."; break; case 9000003: message = "_subThread() stopped."; break; case 9000004: message = _isJp ? "同時接続数を超えたのでリクエストをキャンセルします" : "Because the number of connection exceeded it at the same time, the request was canceled."; break; case 9000005: message = _isJp ? "受信文字列が長すぎます(不正なリクエストの可能性があるため切断しました)" : "Reception character string is too long (cut off so that there was possibility of an unjust request in it)"; break; case 9000006: message = _isJp ? "このポートは、既に他のプログラムが使用しているため使用できません" : "Cannot use this port so that other programs already use it"; break; case 9000007: message = _isJp ? "callBack関数が指定されていません[UDP]" : "It is not appointed in callback function [UDP]"; break; case 9000008: message = _isJp ? "プラグインをインストールしました" : "setup initialize plugin"; break; //case 9000009: // message = _isJp ? "Socket.Bind()でエラーが発生しました。[TCP]" : "An error occurred in Socket.Bind() [TCP]"; // break; //case 9000010: // message = _isJp // ? "Socket.Listen()でエラーが発生しました。[TCP]" // : "An error occurred in Socket..Listen() [TCP]"; // break; case 9000011: message = "tcpQueue().Dequeue()=null"; break; case 9000012: message = "tcpQueue().Dequeue() SocektObjState != SOCKET_OBJ_STATE.CONNECT break"; break; case 9000013: message = "tcpQueue().Dequeue()"; break; // case 9000014: // message = "SendBinaryFile(string fileName) socket.Send()"; // break; // case 9000015: // message = "SendBinaryFile(string fileName,long rangeFrom,long rangeTo) socket.Send()"; // break; case 9000016: message = _isJp ? "このアドレスからの接続は許可されていません(ACL)" : "Connection from this address is not admitted.(ACL)"; break; case 9000017: message = _isJp ? "このアドレスからの接続は許可されていません(ACL)" : "Connection from this address is not admitted.(ACL)"; break; case 9000018: message = _isJp ? "この利用者のアクセスは許可されていません(ACL)" : "Access of this user is not admitted (ACL)"; break; case 9000019: message = _isJp ? "アイドルタイムアウト" : "Timeout of an idle"; break; case 9000020: message = _isJp ? "送信に失敗しました" : "Transmission of a message failure"; break; case 9000021: message = _isJp ? "ThreadBase::loop()で例外が発生しました" : "An exception occurred in ThreadBase::Loop()"; break; case 9000022: message = _isJp ? "ウインドウ情報保存ファイルにIOエラーが発生しました" : "An IO error occurred in a window information save file"; break; case 9000023: message = _isJp ? "証明書の読み込みに失敗しました" : "Reading of a certificate made a blunder"; break; case 9000024: message = _isJp ? "SSLの初期化に失敗しているためサーバは起動できません" : "A server cannot start in order to fail in initialization of SSL"; break; //case 9000025: message = isJp ? "ファイル(秘密鍵)が見つかりません" : "Private key is not found"; break; case 9000026: message = _isJp ? "ファイル(証明書)が見つかりません" : "A certificate is not found"; break; //case 9000027: message = isJp ? "OpenSSLのライブラリ(ssleay32.dll,libeay32.dll)が見つかりません" : "OpenSSL library (ssleay32.dll,libeay32.dll) is not found"; break; case 9000028: message = _isJp ? "SSLの初期化に失敗しています" : "Initialization of SSL made a blunder"; break; case 9000029: message = _isJp ? "指定された作業ディレクトリが存在しません" : "A work directory is not found"; break; case 9000030: message = _isJp ? "起動するサーバが見つかりません" : "A starting server is not found"; break; case 9000031: message = _isJp ? "ログファイルの初期化に失敗しました" : "Failed in initialization of logfile"; break; case 9000032: message = _isJp ? "ログ保存場所" : "a save place of LogFile"; break; case 9000033: message = _isJp ? "ファイル保存時にエラーが発生しました" : "An error occurred in a File save"; break; case 9000034: message = _isJp ? "ACL指定に問題があります" : "ACL configuration failure"; break; case 9000035: message = _isJp ? "Socket()でエラーが発生しました。[TCP]" : "An error occurred in Socket() [TCP]"; break; //case 9000036: // message = _isJp ? "Socket()でエラーが発生しました。[UDP]" : "An error occurred in Socket() [UDP]"; // break; case 9000037: message = _isJp ? "_subThread()で例外が発生しました" : "An exception occurred in _subThread()"; break; case 9000038: message = _isJp ? "【例外】" : "[Exception]"; break; case 9000039: message = _isJp ? "【STDOUT】" : "[STDOUT]"; break; case 9000040: message = _isJp ? "拡張SMTP適用範囲の指定に問題があります" : "ESMTP range configuration failure"; break; case 9000041: message = _isJp ? "disp2()で例外が発生しました" : "An exception occurred in disp2()"; break; case 9000042: message = _isJp ? "初期化に失敗しているためサーバを開始できません" : "Can't start a server in order to fail in initialization"; break; case 9000043: message = _isJp ? "クライアント側が切断されました" : "The client side was cut off"; break; case 9000044: message = _isJp ? "サーバ側が切断されました" : "The server side was cut off"; break; case 9000045: message = _isJp ? "「オプション(O)-ログ表示(L)-基本設定-ログの保存場所」が指定されていません" : "\"log save place\" is not appointed"; break; case 9000046: message = _isJp ? "socket.send()でエラーが発生しました" : "socket.send()"; break; case 9000047: message = _isJp ? "ユーザ名が無効です" : "A user name is null and void"; break; case 9000048: message = _isJp ? "ThreadBase::Loop()で例外が発生しました" : "An exception occurred in ThreadBase::Loop()"; break; case 9000049: message = _isJp ? "【例外】" : "[Exception]"; break; case 9000050: message = _isJp ? "ファイルにアクセスできませんでした" : "Can't open a file"; break; case 9000051: message = _isJp ? "インスタンスの生成に失敗しました" : "Can't create instance"; break; case 9000052: message = _isJp ? "名前解決に失敗しました" : "Non-existent domain"; break; case 9000053: message = _isJp ? "【例外】SockObj.Resolve()" : "[Exception] SockObj.Resolve()"; break; case 9000054: message = _isJp ? "Apache Killerによる攻撃の可能性があります" : "There is possibility of attack by Apache Killer in it"; break; case 9000055: message = _isJp ? "【自動拒否】「ACL」の禁止する利用者(アドレス)に追加しました" : "Add it to a deny list automatically"; break; case 9000056: message = _isJp ? "不正アクセスを検出しましたが、ACL「拒否」リストは追加されませんでした" : "I detected possibility of Attack, but the ACL [Deny] list was not added"; break; case 9000057: message = _isJp ? "【例外】" : "[Exception]"; break; case 9000058: message = _isJp ? "メールの送信に失敗しました" : "Failed in the transmission of a message of an email"; break; case 9000059: message = _isJp ? "メールの保存に失敗しました" : "Failed in a save of an email"; break; case 9000060: message = _isJp ? "【例外】" : "[Exception]"; break; case 9000061: message = _isJp ? "【例外】" : "[Exception]"; break; //case 9000061: // message = isJp ? "ファイルの作成に失敗しました" : "Failed in making of a file"; // break; } } var remoteHostname = (sockBase == null) ? "-" : sockBase.RemoteHostname; var oneLog = new OneLog(DateTime.Now, logKind, _nameTag, threadId, remoteHostname, messageNo, message, detailInfomation); // 表示制限にヒットするかどうかの確認 var isDisplay = true; if (!oneLog.IsSecure()){ //セキュリティログは表示制限の対象外 if (_logLimit != null){ isDisplay = _logLimit.IsDisplay(oneLog.ToString()); } } if (_logView != null && isDisplay){ //isDisplayの結果に従う _logView.Append(oneLog); } //Ver5.8.8 //LogViewの中で実行していたリモートクライアントへの送信をこちらに移動する //サービス起動の際に、ListViewがnullで、処理されないから //リモートクライアントへのログ送信 if (_kernel != null && _kernel.RemoteConnect != null && _kernel.ListServer != null) { //クライアントから接続されている場合 var sv = _kernel.ListServer.Get("Remote"); if (sv != null) sv.Append(oneLog); } if (_logFile != null){ if (_useLimitString){ //表示制限が有効な場合 if (isDisplay){ //isDisplayの結果に従う _logFile.Append(oneLog); } } else{ //表示制限が無効な場合は、すべて保存される _logFile.Append(oneLog); } } }