Update README

This commit is contained in:
yo 2022-10-08 19:05:54 +02:00
parent 5f14f61b9f
commit 11eb7bfe79

View File

@ -3,7 +3,7 @@
Go Ldap API is an HTTP API to an LDAP backend. Go Ldap API is an HTTP API to an LDAP backend.
Only supporting read at the moment, maybe one day it will write, and break LDAP backends with ease and joy! Only supporting read at the moment, maybe one day it will write, and break LDAP backends with ease and joy!
## Usage ## Usage
Start glapi with parameters on command line: Start glapi with parameters on command line:
``` ```
glapi -ldap-host ldap://ldap.example.org -ldap-base-dn dc=example,dc=org -ldap-user cn=yo,dc=example,dc=org -ldap-pass 'here_is_the_password' glapi -ldap-host ldap://ldap.example.org -ldap-base-dn dc=example,dc=org -ldap-user cn=yo,dc=example,dc=org -ldap-pass 'here_is_the_password'
@ -14,20 +14,19 @@ or point it to a configuration file :
glapi -config glapi.env glapi -config glapi.env
``` ```
## Configuration file ## Configuration file
``̀` ```
LISTEN="127.0.0.1:8080" LISTEN="127.0.0.1:8080"
LDAP_HOST="ldap://ldap.example.org" LDAP_HOST="ldap://ldap.example.org"
LDAP_BASE_DN="dc=example,dc=org" LDAP_BASE_DN="dc=example,dc=org"
LDAP_USER="cn=yo,dc=example,dc=org" LDAP_USER="cn=yo,dc=example,dc=org"
LDAP_PASS='here_is_the_password' LDAP_PASS='here_is_the_password'
DEBUG=false
``` ```
## Querying API ## Querying API
Search LDAP entries through the whole subtree, specifying organizationalUnit, commnName, objectClass, attribute to retrieve. Search LDAP entries through the whole subtree, specifying organizationalUnit, commnName, objectClass, attribute to retrieve.
Each one of these parameters can be replaced by "ALL" to act like a wildcard. Each of these parameters can be replaced by "ALL" to act like a wildcard.
``̀` ```
% curl -u admin:admin http://127.0.0.1:8080/ou=domains/yo/person | jq % curl -u admin:admin http://127.0.0.1:8080/ou=domains/yo/person | jq
[ [
{ {
@ -128,8 +127,8 @@ userPassword: {SSHA}edited
[...] [...]
``` ```
Get operational attributes with "*,+" in attribute : Add operational attributes with "*,+":
``̀` ```
% curl -u admin:admin "http://127.0.0.1:8080/ALL/ALL/ALL/*,+?format=ldif" % curl -u admin:admin "http://127.0.0.1:8080/ALL/ALL/ALL/*,+?format=ldif"
dn: dc=example,dc=org dn: dc=example,dc=org
objectClass: organization objectClass: organization
@ -165,16 +164,17 @@ subschemaSubentry: cn=Subschema
hasSubordinates: FALSE hasSubordinates: FALSE
[...] [...]
`̀`` ```
### Output format ### Output format
Default output is in json. The following formats are supported, to be specified as a "format" query parameter: Default output is in json. The following formats are supported:
- json (default) - json (default)
- text (ini style) - text (ini style)
- ldif - ldif
- textvalue (only attribute values are returned) - textvalue (only attribute values are returned)
- textvalue-nodn ((only attribute values, no dn added, no linefeed between entries. To be used by Rspamd multimap module) - textvalue-nodn (only attribute values, no dn, no linefeed between entries. Made for Rspamd multimap module)
Specify with "format" query parameter:
``` ```
% curl -u admin:admin "http://127.0.0.1:8080/ou=domains/yo/person?format=text" % curl -u admin:admin "http://127.0.0.1:8080/ou=domains/yo/person?format=text"
dn=cn=yo,dc=example.org,ou=domains,dc=example,dc=org dn=cn=yo,dc=example.org,ou=domains,dc=example,dc=org
@ -206,14 +206,13 @@ uid: yo
``` ```
### Select attributes to get ### Select attributes to get
You can specify attributes to get by adding them in 4th position : You can select attributes to get by adding them in 4th position :
̀``` ```
% curl -u admin:admin "http://127.0.0.1:8080/ou=domains/yo/person/mail?format=textvalue" % curl -u admin:admin "http://127.0.0.1:8080/ou=domains/yo/person/mail?format=textvalue"
cn=yo,dc=example.org,ou=domains,dc=example,dc=org cn=yo,dc=example.org,ou=domains,dc=example,dc=org
yo@example.org yo@example.org
% curl -u admin:admin "http://127.0.0.1:8080/ou=domains/yo/person/mail?format=textvalue-nodn" % curl -u admin:admin "http://127.0.0.1:8080/ou=domains/yo/person/mail?format=textvalue-nodn"
yo@example.org yo@example.org
``` ```