Active Directory/Search for a user: Difference between revisions
Content added Content deleted
(added Perl programming solution) |
(→{{header|Phix}}: added syntax colouring the hard way) |
||
Line 434: | Line 434: | ||
=={{header|Phix}}== |
=={{header|Phix}}== |
||
{{trans|C}} |
{{trans|C}} |
||
<lang Phix> |
<!--<lang Phix>--> |
||
<span style="color: #008080;">include</span> <span style="color: #000000;">builtins</span><span style="color: #0000FF;">/</span><span style="color: #000000;">ldap</span><span style="color: #0000FF;">.</span><span style="color: #000000;">e</span> |
|||
constant servers = { |
|||
<span style="color: #008080;">constant</span> <span style="color: #000000;">servers</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span> |
|||
"ldap.somewhere.com", |
|||
<span style="color: #008000;">"ldap.somewhere.com"</span><span style="color: #0000FF;">,</span> |
|||
} |
|||
<span style="color: #0000FF;">}</span> |
|||
--... |
|||
<span style="color: #000080;font-style:italic;">--...</span> |
|||
string name="name", password="passwd" |
|||
<span style="color: #004080;">string</span> <span style="color: #000000;">name</span><span style="color: #0000FF;">=</span><span style="color: #008000;">"name"</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">password</span><span style="color: #0000FF;">=</span><span style="color: #008000;">"passwd"</span> |
|||
--... |
|||
<span style="color: #000080;font-style:italic;">--...</span> |
|||
for i=1 to length(servers) do |
|||
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">servers</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span> |
|||
atom ld = ldap_init(servers[i]) |
|||
<span style="color: #004080;">atom</span> <span style="color: #000000;">ld</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">ldap_init</span><span style="color: #0000FF;">(</span><span style="color: #000000;">servers</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">])</span> |
|||
integer res = ldap_simple_bind_s(ld, name, password) |
|||
<span style="color: #004080;">integer</span> <span style="color: #000000;">res</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">ldap_simple_bind_s</span><span style="color: #0000FF;">(</span><span style="color: #000000;">ld</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">name</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">password</span><span style="color: #0000FF;">)</span> |
|||
printf(1,"%s: %d [%s]\n",{servers[i],res,ldap_err_desc(res)}) |
|||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"%s: %d [%s]\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">servers</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">],</span><span style="color: #000000;">res</span><span style="color: #0000FF;">,</span><span style="color: #000000;">ldap_err_desc</span><span style="color: #0000FF;">(</span><span style="color: #000000;">res</span><span style="color: #0000FF;">)})</span> |
|||
if res=LDAP_SUCCESS then |
|||
<span style="color: #008080;">if</span> <span style="color: #000000;">res</span><span style="color: #0000FF;">=</span><span style="color: #000000;">LDAP_SUCCESS</span> <span style="color: #008080;">then</span> |
|||
{res, atom pMsg} = ldap_search_s(ld, "dc=somewhere,dc=com", LDAP_SCOPE_SUBTREE, |
|||
<span style="color: #0000FF;">{</span><span style="color: #000000;">res</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">atom</span> <span style="color: #000000;">pMsg</span><span style="color: #0000FF;">}</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">ldap_search_s</span><span style="color: #0000FF;">(</span><span style="color: #000000;">ld</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"dc=somewhere,dc=com"</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">LDAP_SCOPE_SUBTREE</span><span style="color: #0000FF;">,</span> |
|||
-- search for all persons whose names start with joe or shmoe |
|||
" |
<span style="color: #000080;font-style:italic;">-- search for all persons whose names start with joe or shmoe</span> |
||
<span style="color: #008000;">"(&(objectclass=person)(|(cn=joe*)(cn=shmoe*)))"</span><span style="color: #0000FF;">,</span> |
|||
<span style="color: #004600;">NULL</span><span style="color: #0000FF;">,</span> <span style="color: #000080;font-style:italic;">-- return all attributes</span> |
|||
0) -- want both types and values of attrs |
|||
<span style="color: #000000;">0</span><span style="color: #0000FF;">)</span> <span style="color: #000080;font-style:italic;">-- want both types and values of attrs |
|||
-- arduously do stuff here to result, with ldap_first_message(), ldap_parse_result(), etc. |
-- arduously do stuff here to result, with ldap_first_message(), ldap_parse_result(), etc.</span> |
||
ldap_msgfree(pMsg) -- free messages (embedded NULL check) |
|||
<span style="color: #000000;">ldap_msgfree</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pMsg</span><span style="color: #0000FF;">)</span> <span style="color: #000080;font-style:italic;">-- free messages (embedded NULL check)</span> |
|||
end if |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span> |
|||
--... after done with it... |
|||
<span style="color: #000080;font-style:italic;">--... after done with it...</span> |
|||
ldap_unbind(ld) |
|||
<span style="color: #000000;">ldap_unbind</span><span style="color: #0000FF;">(</span><span style="color: #000000;">ld</span><span style="color: #0000FF;">)</span> |
|||
⚫ | |||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span> |
|||
⚫ | |||
{{out}} |
{{out}} |
||
Note the code inside res=LDAP_SUCCESS has not been tested beyond compiling succesfully, see also |
Note the code inside res=LDAP_SUCCESS has not been tested beyond compiling succesfully, see also |