コード例 #1
0
 private void OnObjectChanged(ObjectChangedEventArgs args)
 {
     if (ObjectChanged != null)
     {
         ObjectChanged(this, args);
     }
 }
コード例 #2
0
        static void notifier_ObjectChanged(object sender, ObjectChangedEventArgs e)
        {
            SearchResultEntry result = e.Result;

            logger.Info("Changed:" + result.DistinguishedName);

            if (!isUserAccount(result))
            {
                logger.Info("Not a user Account");
                return;
            }

            if (logger.IsDebugEnabled)
            {
                foreach (string attrib in e.Result.Attributes.AttributeNames)
                {
                    foreach (var item in e.Result.Attributes[attrib].GetValues(typeof(string)))
                    {
                        logger.DebugFormat("\t{0}: {1}", attrib, item);
                    }
                }
            }

            var samAccountName = result.Attributes["samAccountName"].GetValues(typeof(string)).Cast <string>().First <string>();

            /// ユーザーを作成しようとしたが,必須項目が入力されていなかったり,
            /// パスワードの要件が満たされなかった場合,変更イベントは送信されるが,
            /// その後アカウントが存在しない状況が発生する.
            /// そういった状況を避けるため,30秒後に再度クエリを実行し,ユーザーアカウントが取得できることを確認する.
            System.Threading.Thread.Sleep(30000);
            if (!searcher.isExist(samAccountName))
            {
                logger.InfoFormat(@"{0} の変更要求を受け取りましたが,ディレクトリ上に見つかりませんでした.", samAccountName);
                return;
            }


            ///
            if (HistoryManager.isExist(samAccountName))
            {
                logger.Info(samAccountName + @" は作成済みキャッシュにあります.");
                return;
            }

            try
            {
                invokeCommand(samAccountName);
                HistoryManager.add(samAccountName, true);
            }
            catch (Exception exception)
            {
                logger.Error("コマンド実行エラー", exception);
            }
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: kazuki-ma/FSCX
        static void notifier_ObjectChanged(object sender, ObjectChangedEventArgs e)
        {
            SearchResultEntry result = e.Result;

            logger.Info("Changed:" + result.DistinguishedName);

            if (! isUserAccount(result))
            {
                logger.Info("Not a user Account");
                return;
            }

            if (logger.IsDebugEnabled)
            {
                foreach (string attrib in e.Result.Attributes.AttributeNames)
                {
                    foreach (var item in e.Result.Attributes[attrib].GetValues(typeof(string)))
                    {
                        logger.DebugFormat("\t{0}: {1}", attrib, item);
                    }
                }
            }

            var samAccountName = result.Attributes["samAccountName"].GetValues(typeof(string)).Cast<string>().First<string>();

            /// ユーザーを作成しようとしたが,必須項目が入力されていなかったり,
            /// パスワードの要件が満たされなかった場合,変更イベントは送信されるが,
            /// その後アカウントが存在しない状況が発生する.
            /// そういった状況を避けるため,30秒後に再度クエリを実行し,ユーザーアカウントが取得できることを確認する.
            System.Threading.Thread.Sleep(30000);
            if (!searcher.isExist(samAccountName))
            {
                logger.InfoFormat(@"{0} の変更要求を受け取りましたが,ディレクトリ上に見つかりませんでした.", samAccountName);
                return;
            }


            ///
            if (HistoryManager.isExist(samAccountName))
            {
                logger.Info(samAccountName + @" は作成済みキャッシュにあります.");
                return;
            }

            try
            {
                invokeCommand(samAccountName);
                HistoryManager.add(samAccountName, true);
            }
            catch (Exception exception)
            {
                logger.Error("コマンド実行エラー", exception);
            }
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: kazuki-ma/FSCX
 private void OnObjectChanged(ObjectChangedEventArgs args)
 {
     if (ObjectChanged != null)
     {
         ObjectChanged(this, args);
     }
 }