ldap2vocaluser.cxx
上传用户:sy_wanhua
上传日期:2013-07-25
资源大小:3048k
文件大小:6k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

C/C++

  1. /* ====================================================================
  2.  * The Vovida Software License, Version 1.0
  3.  *
  4.  * Copyright (c) 1999, 2000 Vovida Networks, Inc.  All rights reserved.
  5.  *
  6.  * Redistribution and use in source and binary forms, with or without
  7.  * modification, are permitted provided that the following conditions
  8.  * are met:
  9.  *
  10.  * 1. Redistributions of source code must retain the above copyright
  11.  *    notice, this list of conditions and the following disclaimer.
  12.  *
  13.  * 2. Redistributions in binary form must reproduce the above copyright
  14.  *    notice, this list of conditions and the following disclaimer in
  15.  *    the documentation and/or other materials provided with the
  16.  *    distribution.
  17.  *
  18.  * 3. The end-user documentation included with the redistribution,
  19.  *    if any, must include the following acknowledgment:
  20.  *       "This product includes software developed by Vovida Networks,
  21.  *        Inc. (http://www.vovida.org/)."
  22.  *    Alternately, this acknowledgment may appear in the software itself,
  23.  *    if and wherever such third-party acknowledgments normally appear.
  24.  *
  25.  * 4. The names "VOCAL", "Vovida Open Communication Application Library",
  26.  *    and "Vovida Open Communication Application Library (VOCAL)" must 
  27.  *    not be used to endorse or promote products derived from this 
  28.  *    software without prior written permission. For written permission, 
  29.  *    please contact vocal@vovida.org.
  30.  *
  31.  * 5. Products derived from this software may not be called "VOCAL",
  32.  *    nor may "VOCAL" appear in their name, without prior written
  33.  *    permission of Vovida Networks, Inc.
  34.  *
  35.  * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
  36.  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  37.  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  38.  * DISCLAIMED.  IN NO EVENT SHALL VOVIDA NETWORKS, INC. OR ITS 
  39.  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  40.  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  41.  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  42.  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  43.  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  44.  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  45.  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  46.  * SUCH DAMAGE.
  47.  * ====================================================================
  48.  *
  49.  * This software consists of voluntary contributions made by Vovida 
  50.  * Networks, Inc. and many individuals on behalf of Vovida Networks,
  51.  * Inc.  For more information on Vovida Networks, Inc., please see 
  52.  * <http://www.vovida.org/>.
  53.  *
  54.  */
  55. static const char* const ldap2vocaluser_cxx_Version =
  56.     "$Id: ldap2vocaluser.cxx,v 1.14 2001/04/22 05:36:42 icahoon Exp $";
  57. using namespace std;
  58. #include <iostream>
  59. #include <string>
  60. #if defined(__svr4__)
  61. #include <stdio.h>
  62. #endif
  63. #if defined(__linux__)
  64. #include <getopt.h>
  65. #endif
  66. #if defined(__FreeBSD__)
  67. #include "getopt.h"
  68. #endif
  69. #include "LDAP2Vuser.hxx"
  70. // MAIN 
  71. int
  72. main(int argc, char **argv)
  73. {
  74.     char c;
  75.     int passedhost = 0;
  76.     int passedport = 0;
  77.     int passedoutputdir = 0;
  78.     int passedbasedn = 0;
  79.     int passedbinddn = 0;
  80.     int passedbindpw = 0;
  81.     int passedhashkey = 0;
  82.     string ldaphost;
  83.     int ldapport;
  84.     int hashkey;
  85.     string outputdir;
  86.     string basedn;
  87.     string binddn;
  88.     string bindpw;
  89.     string usage = "Usage: ldap2vocaluser -h ldaphost -b basedn -d output_directory [-k hash_key] [-p ldap_port] [-D binddn -w password]";
  90.     while ((c = getopt( argc, argv, "h:p:b:d:k:D:w:" )) != EOF)
  91.     {
  92.         switch ( c )
  93.         {
  94.             case 'h':   // LDAP host
  95.             ldaphost = optarg;
  96.             passedhost = 1;
  97.             break;
  98.             case 'p':   // LDAP port
  99.             ldapport = atoi(optarg);
  100.             passedport = 1;
  101.             break;
  102.             case 'b':   // LDAP search root
  103.             basedn = optarg;
  104.             passedbasedn = 1;
  105.             break;
  106.             case 'd':   // Output directory
  107.             outputdir = optarg;
  108.             passedoutputdir = 1;
  109.             break;
  110.             case 'k':   // Hash Key
  111.             hashkey = atoi(optarg);
  112.             passedhashkey = 1;
  113.             break;
  114.             case 'D':   // Bind as Distingished Name
  115.             binddn = optarg;
  116.             passedbinddn = 1;
  117.             break;
  118.             case 'w':   // Bind password
  119.             bindpw = optarg;
  120.             passedbindpw = 1;
  121.             break;
  122.             default:
  123.             cerr << usage << endl;
  124.             exit( 1 );
  125.         }
  126.     }
  127.     // Check for all the required arguments
  128.     if (!(passedhost && passedbasedn && passedoutputdir))
  129.     {
  130.         cerr << usage << endl;
  131.         exit( 1 );
  132.     }
  133.     // Check if bind DN passed is coupled with bind PW
  134.     if ((passedbinddn && (!passedbindpw)) || 
  135.        (!passedbinddn && (passedbindpw)))
  136.     {
  137.         cerr << usage << endl;
  138.         exit( 1 );
  139.     }
  140.     // If LDAP Port is not supplied, set to default of 389
  141.     if (!passedport) 
  142.     {
  143.         ldapport = LDAP_PORT;
  144.     }
  145.     // If Hash Key is not supplied, set to default of 6
  146.     if (!passedhashkey) 
  147.     {
  148.         hashkey = 6;
  149.     }
  150.     // If bind DN and PW were passed, login to LDAP server
  151.     // as authenticated user.
  152.     if (passedbinddn)
  153.     {
  154.         LDAP2Vuser connection1(ldaphost, ldapport, basedn, 
  155.                                binddn, bindpw);
  156.         // Authenticated users can set search size limit to infinite
  157.         connection1.setSizelimit(0);
  158.         connection1.exportUsers(hashkey, outputdir);
  159.     }
  160.     else
  161.     {
  162.         LDAP2Vuser connection1(ldaphost, ldapport, basedn);
  163.         connection1.exportUsers(hashkey, outputdir);
  164.     }
  165.     return ( 0 );
  166. }