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>include builtins/ldap.e
<!--<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
"(&(objectclass=person)(|(cn=joe*)(cn=shmoe*)))",
<span style="color: #000080;font-style:italic;">-- search for all persons whose names start with joe or shmoe</span>
NULL, -- return all attributes
<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>
end for</lang>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<!--</lang>-->
{{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