2.2.6 ディレクトリ情報の操作
組み込み関数$LDAPACSを使用すると、ディレクトリサービスへの接続認証、検索、エントリの取得、属性の取得などができます。
ここでは、組み込み関数$LDAPACSで使用できる関数およびオブジェクト操作規則について説明します。
(1) 組み込み関数$LDAPACSで使用できる関数
組み込み関数$LDAPACSで使用できる関数と機能を次の表に示します。
|
関数名 |
機能 |
|---|---|
|
CONNECT |
ディレクトリサービスへの接続認証 |
|
CONVERT |
ディレクトリ情報の検索用文字列への変換 |
|
DISCONNECT |
ディレクトリサービスとの接続解除 |
|
FIRSTENTRY |
最初に検索されたエントリの取得 |
|
FREEENTRY |
エントリの解放 |
|
FREERESULT |
検索結果の解放 |
|
GETDN |
エントリのDNの取得 |
|
NEXTENTRY |
2番目以降に検索されたエントリの取得 |
|
SEARCH |
ディレクトリサービスの検索 |
|
SELECTVALUE |
属性値の取得 |
各関数の機能、記述形式、パラメーター、および戻り値については、「5. アクセス定義ファイルに記述する組み込み関数」の$LDAPACS(ディレクトリ情報へのアクセス関数)を参照してください。
(3) オブジェクトのメモリ管理構造
|
|
LDAPOBJ、LDAPRST、LDAPENT、およびLDAPATRは、その下位すべてのオブジェクトを管理します。そのため、LDAPOBJ、LDAPRST、LDAPENT、およびLDAPATRを解放すると、その下位のすべてのオブジェクトも解放されます。なお、KEYNAME、LDAPVAL、DN、SELVALなどの最下位文字列は、オブジェクト自身の解放はできません。
(4) 記述例
組み込み関数$LDAPACSの記述例を次に示します。
[VAR]
STATUS
MSG
HOST
PORT
FILTER
BASE
SCOPE
FIRST
LDOBJ
LDRST
LDENT
DN
NAME
[SET_VALUE]
HOST = 'localhost'
PORT = '389'
BASE = 'ou=people,o=xxxxxxx.co.jp'
SCOPE= 'LDAP_SCOPE_ONELEVEL'
[SET_VALUE]
$LDAPACS('CONNECT',LDOBJ,HOST,PORT,'','') # CONNECT
STATUS = $GETSTATUS()
[SET_VALUE]
FILTER = '(&(objectclass=*)(title;lang-ja='
FILTER = FILTER+$LDAPACS('CONVERT','主任') # CONVERT
FILTER = FILTER+'))'
# FILETER=(&(objectclass=*)(title;lang-ja=\E4\B8\BB\E4\BB\BB))
$LDAPACS('SEARCH',LDRST,LDOBJ,BASE,FILTER,SCOPE) # SEARCH
FIRST = 1
[DO]
[IF]
FIRST = 1
[THEN]
[SET_VALUE]
$LDAPACS('FIRSTENTRY',LDENT,LDRST) # GET FIRST ENTRY
STATUS = $GETSTATUS()
FIRST = 0
[ELSE]
[SET_VALUE]
$LDAPACS('NEXTENTRY',LDENT,LDRST) # GET NEXT ENTRY
STATUS = $GETSTATUS()
[IF_END]
[IF]
STATUS = NORMAL
[THEN]
[SET_VALUE]
$LDAPACS('GETDN',DN,LDENT) # GET DN
$LDAPACS('SELECTVALUE',NAME,LDENT,'cn') # GET VALUE OF CN
MSG='DN ['+DN+'] is '+NAME
$ECHO(MSG)
$LDAPACS('FREEENTRY',LDENT) # FREE ENTRY OBJECT
[ELSE]
[SET_VALUE]
$BREAK()
[IF_END]
[DO_END]
[SET_VALUE]
$LDAPACS('FREERESULT',LDRST) # FREE SEARCH OBJECT
[SET_VALUE]
$LDAPACS('DISCONNECT',LDOBJ) # FREE LDAP OBJECT