Exemplo n.º 1
0
    public static void Main(String[] args)
    {
        if (args.Length != 3)
        {
            Console.WriteLine(
                "Usage:   mono EdirEventSample <host name> <login dn>"
                + " <password> ");
            Console.WriteLine(
                "Example: mono EdirEventSample Acme.com \"cn=admin,o=Acme\""
                + " secret ");
            Environment.Exit(0);
        }

        int    ldapPort    = LdapConnection.DEFAULT_PORT;
        int    ldapVersion = LdapConnection.Ldap_V3;
        String ldapHost    = args[0];
        String loginDN     = args[1];
        String password    = args[2];

        LdapResponseQueue queue = null;

        LdapConnection lc = new LdapConnection();

        try
        {
            // connect to the server
            lc.Connect(ldapHost, ldapPort);

            // authenticate to the server
            lc.Bind(ldapVersion, loginDN, password);

            //Create an Array of EdirEventSpecifier
            EdirEventSpecifier[] specifier = new EdirEventSpecifier[1];

            //Register for all Add Value events.
            specifier[0] =
                new EdirEventSpecifier(EdirEventType.EVT_CREATE_ENTRY,
                                       //Generate an Value Event of Type Add Value
                                       EdirEventResultType.EVT_STATUS_ALL
                                       //Generate Event for all status
                                       );

            //Create an MonitorEventRequest using the specifiers.
            MonitorEventRequest requestoperation =
                new MonitorEventRequest(specifier);

            //Send the request to server and get the response queue.
            queue = lc.ExtendedOperation(requestoperation, null, null);
        }

        catch (LdapException e)
        {
            Console.WriteLine("Error: " + e.ToString());
            try
            {
                lc.Disconnect();
            }
            catch (LdapException e2)
            {
                Console.WriteLine("Error: " + e2.ToString());
            }
            Environment.Exit(1);
        }

        catch (Exception e)
        {
            Console.WriteLine("Error: " + e.ToString());
        }

        Console.WriteLine("Monitoring the events for {0} minutes..", TIME_OUT_IN_MINUTES);
        Console.WriteLine();

        //Set the timeout value
        timeOut = DateTime.Now.AddMinutes(TIME_OUT_IN_MINUTES);

        try
        {
            //Monitor till the timeout happens
            while (DateTime.Now.CompareTo(timeOut) < 0)
            {
                if (!checkForAChange(queue))
                {
                    break;
                }
                System.Threading.Thread.Sleep(10);
            }
        }

        catch (System.IO.IOException e)
        {
            Console.WriteLine(e.Message);
        }

        catch (System.Threading.ThreadInterruptedException e)
        {
            Console.WriteLine(e.Message);
        }

        //disconnect from the server before exiting
        try
        {
            lc.Abandon(queue);             //abandon the search
            lc.Disconnect();
        }

        catch (LdapException e)
        {
            Console.WriteLine();
            Console.WriteLine("Error: " + e.ToString());
        }

        Environment.Exit(0);
    }     // end main
Exemplo n.º 2
0
    protected void Execute(string ldapHost,
                           string ldapPort,
                           string loginDN,
                           string password)
    {
        // Connect to the LDAP Server
        LdapConnection connection = new LdapConnection();

        try
        {
            connection.Connect(ldapHost, int.Parse(ldapPort));
            connection.Bind(loginDN, password);
        }
        catch (Exception e)
        {
            Console.WriteLine("Exception occurred: {0}", e.Message);
            try
            {
                connection.Disconnect();
            }
            catch (Exception e2)
            {
            }
            Environment.Exit(1);
        }

        Console.WriteLine(STARTING_PROMPT);

        EdirEventSpecifier[] specifier = new EdirEventSpecifier[1];
        specifier[0] = new EdirEventSpecifier(
            EdirEventType.EVT_CREATE_ENTRY,
            EdirEventResultType.EVT_STATUS_ALL
            //, we could have optionally specified a filter here like "(attributeName=city)"
            );

        // Make an object of EdirEventSource
        EdirEventSource objEventSource = new EdirEventSource(specifier, connection);

        // register for events
        objEventSource.EdirEvent += new EdirEventSource.EdirEventHandler(MyEdirEventHandler);

        // Another listener can be easily added
        objEventSource.EdirEvent += new EdirEventSource.EdirEventHandler(MyEdirEventHandler02);

        // Add a listener for generic directory event
        objEventSource.DirectoryEvent += new EdirEventSource.DirectoryEventHandler(MyDirectoryEventHandler);

        // Add a listener for exception event
        objEventSource.DirectoryExceptionEvent += new EdirEventSource.DirectoryExceptionEventHandler(MyDirectoryExceptionEventHandler);

        string input;
        bool   bContinue;

        do
        {
            Console.WriteLine(QUIT_PROMPT);
            input     = Console.ReadLine();
            bContinue = (input != null) && !(input.StartsWith("q")) && !(input.StartsWith("Q"));
        } while(bContinue);

        // time to unregister
        objEventSource.EdirEvent -= new EdirEventSource.EdirEventHandler(MyEdirEventHandler);

        objEventSource.EdirEvent -= new EdirEventSource.EdirEventHandler(MyEdirEventHandler02);

        objEventSource.DirectoryEvent -= new EdirEventSource.DirectoryEventHandler(MyDirectoryEventHandler);

        objEventSource.DirectoryExceptionEvent -= new EdirEventSource.DirectoryExceptionEventHandler(MyDirectoryExceptionEventHandler);

        // Disconnect
        try
        {
            connection.Disconnect();
        }
        catch (Exception e)
        {
        }
    }