| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- /* Create list user for 3proxy ACL from LDAP server
- (c) Kirill Lopuchov lopuchov@mail.ru
- */
- #include <stdio.h>
- #include <ldap.h>
- /*Create list user for 3proxy ACL from LDAP server*/
- /* argv[1] = server
- argv[2] = basedn
- argv[3] = user_attribute
- argv[4] = filter
- argv[5] = user
- argv[6] = password
- */
- main(int argc, char *argv[])
- {
- LDAP *ld = NULL;
- LDAPMessage *res = NULL;
- LDAPMessage *msg = NULL;
- BerElement *ber;
- char *getattr,**vals;
- char *attrs[] = { NULL, NULL };
- int i, rc = -1;
- int lderrno;
- unsigned char tmpbuf[1000];
- if ( argc < 6 )
- {
- printf ("Create 3proxy ACL userlist from ldap server.\ngetldapuser < ldapserver sbasedn user_attribute filter user password > \n");
- printf ("Example: getldapuser 192.168.0.1 dc=domain,dc=com cn (memberOf=cn=internet,cn=Users,dc=domain,dc=com) cn=admin,cn=users,dc=domain,dc=com password \n");
- }
-
- else
- {
- attrs[0]=strdup(argv[3]);
- /* init ldap ------------------------ */
- ld = ldap_init( argv[1] , 389 );
- if ( ld == NULL )
- {
- /*perror( "ldap_init" );*/
- printf("Error init ldap") ;
- exit(1);
- }
-
- /* connect ------------------------ */
-
- rc = ldap_bind_s( ld, argv[5], argv[6], LDAP_AUTH_SIMPLE );
- if ( rc != LDAP_SUCCESS )
- {
- ldap_perror( ld, "Error ldap_bind" );
- }
- /* search ------------------------ */
-
- rc = ldap_search_s( ld,argv[2], LDAP_SCOPE_SUBTREE,
- argv[4], attrs, 0, &res );
- /* get val ------------------------*/
- rc=ldap_count_entries(ld,res);
- if (rc > 0)
- {
- msg=ldap_first_entry(ld, res);
- getattr=ldap_first_attribute(ld, msg, &ber);
- while (rc > 0)
- {
- vals=ldap_get_values(ld, msg, getattr);
- if (vals != NULL && vals[0] != NULL )
- {
- i=ldap_count_values(vals);
- while(i>0)
- {
- printf("%s",vals[0]);
- i--;
- if (rc > 1) { printf(",",vals[0]); }
- }
- ldap_value_free(vals);
- }
- msg=ldap_next_entry(ld, msg);
- rc--;
- }
- } //end if (rc>0)
-
- ldap_memfree(res);
- ldap_unbind(ld);
- }/*end else*/
- }
|