(* a test program for ldap_ooclient

   Copyright (C) 2004 Eric Stokes, and The California State University
   at Northridge

   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   This library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with this library; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
   USA
*)

open Ldap_types
open Ldap_url
open Ldap_funclient
open Ldap_ooclient
open Ldif_oo
open Arg
open Printf

let _ =
  (* stuff to handle command line args *)
  let usg = "testoo -H <ldapurl> -D <dn> -w <pass> -b <base> <filter>" in
  let host = ref "" in
  let port = ref 389 in
  let binddn = ref "" in
  let cred = ref "" in
  let base = ref "" in
  let filter = ref "" in
  let set_host x = host := x in
  let set_port x = port := x in
  let set_binddn x = binddn := x in
  let set_cred x = cred := x in
  let set_base x = base := x in
  let set_filter x = filter := x in
  let spec = [("-H", String(set_host), "host");
	      ("-D", String(set_binddn), "dn to bind with");
	      ("-w", String(set_cred), "password to use when binding");
	      ("-b", String(set_base), "search base")] in


    (* do the ldap part *)
    if (Array.length Sys.argv) > 9 then
      (parse spec set_filter usg;
       let ldap = new ldapcon [!host] in
       let ldif = new ldif () in
	 ldap#bind  !binddn ~cred: !cred;
	 Ldap_ooclient.iter
	   (fun e -> ldif#write_entry e)
	   (ldap#search_a ~base: !base !filter))
    else
      usage spec usg
