#include "ldapconf_defs.h"#include <confdb.h>#include "fields.h"Go to the source code of this file.
Functions | |
| void | ldapsearch () |
| void | ldapedit () |
| void | ldap_useredit () |
| void | ldap_passwd_tool () |
| int | ldaplist (SSTRINGS&lst,SSTRING&choice) |
| void | ldap_formclient (const char *profile_name) |
|
|
Definition at line 33 of file ldapclient.cc. 00034 {
00035
00036 LDAPOBJECT lc; /* LDAP client object */
00037
00038 /* default */
00039
00040 int ret = 0;
00041
00042 /* Draw dialog */
00043
00044 DIALOG dia;
00045 dia.newf_str (MSG_U(F_API_FILTER,"Filter"),lc.filter);
00046 dia.newf_str (MSG_U(F_API_ATTR,"Show attributes"),lc.attr);
00047 dia.newf_chk (MSG_U(F_LDIF_FORMAT,"LDIF format"),lc.ldif_format,"");
00048 dia.newf_title ("",MSG_U(I_LDAPBIND,"Binding"));
00049 dia.newf_str (MSG_R(F_API_BASE),lc.base);
00050 dia.newf_str (MSG_R(F_API_HOST),lc.host);
00051 dia.newf_str (MSG_R(F_API_PORT),lc.port);
00052 dia.newf_str (MSG_R(F_API_DN),lc.binddn);
00053 dia.newf_str (MSG_R(F_API_PW),lc.bindpw);
00054 dia.newf_title ("",MSG_U(I_LDAPOPTIONS,"Results"));
00055 dia.newf_str ("DN",lc.dn);
00056 dia.setbutinfo (MENU_USR1,MSG_U(B_SEARCH,"Search")
00057 ,MSG_U(X_SEARCH,"Search"));
00058 SSTRINGS key_list,at_vals,oc_vals;
00059 int n = lc.at_list(key_list);
00060 dia.newf_title ("","Attributes");
00061 for (int i=0; i<n; i++){
00062 const char *key = key_list.getitem(i)->get();
00063 at_vals.add( new SSTRING (lc.at_get(key)));
00064 dia.newf_str (key_list.getitem(i)->get(),*at_vals.getitem(i));
00065 }
00066
00067 n = lc.oc_list(oc_vals);
00068 dia.newf_title ("","Objectclass");
00069 for (int i=0; i<n; i++){
00070 dia.newf_str ("objectclass",*oc_vals.getitem(i));
00071 }
00072 int nof = 0;
00073 while (1) {
00074 MENU_STATUS code = dia.edit (MSG_U(T_API_OBJECT,"LDAP database client")
00075 ,MSG_U(I_API_OBJECT
00076 ,"This is a small database client for testing of your LDAP system.\n It will use the settings from the LDAP client config by default.\n You may specify other settings here if needed.")
00077 ,help_ldap
00078 ,nof
00079 ,MENUBUT_USR1|MENUBUT_CANCEL);
00080 /* Exit */
00081 if (code == MENU_CANCEL || code == MENU_ESCAPE){
00082 break;
00083 }
00084 /* Save */
00085 else if (code == MENU_ACCEPT){
00086 }
00087 /* Search */
00088 else if (code == MENU_USR1){
00089 dia.save();
00090
00091 SSTRINGS dnlist;
00092 ret = lc.search_list(dnlist);
00093
00094 SSTRING choice;
00095 ldaplist(dnlist,choice);
00096 lc.filter.setfrom(choice.get());
00097 ret = lc.search();
00098 dia.reload();
00099 // ldapedit()
00100 }
00101 }
00102 }
|
|
|
Definition at line 109 of file ldapclient.cc. 00110 {
00111 int ret = 0;
00112 int nof = 0;
00113 SSTRING uid="";
00114 LDAPOBJECT lc; /* LDAP client object */
00115
00116 /* Draw dialog */
00117 DIALOG *dia;
00118 while (1) {
00119 dia = new DIALOG;
00120 dia->newf_str (MSG_U(F_EDIT_USER,"Username"),uid);
00121 dia->newf_title ("",MSG_R(I_LDAPBIND));
00122 dia->newf_str (MSG_R(F_API_BASE),lc.base);
00123 dia->newf_str (MSG_R(F_API_HOST),lc.host);
00124 dia->newf_str (MSG_R(F_API_DN),lc.binddn);
00125 dia->newf_str (MSG_R(F_API_PW),lc.bindpw);
00126 dia->newf_title ("",MSG_R(I_LDAPOPTIONS));
00127 dia->newf_str ("DN",lc.dn);
00128 dia->newf_title ("","Attributes");
00129 for (int i=0; i<lc.atlist.getnb(); i++){
00130 dia->newf_str ("",*lc.atlist.getitem(i));
00131 }
00132 dia->newf_title ("","Objectclass");
00133 for (int i=0; i<lc.oclist.getnb(); i++){
00134 dia->newf_str ("",*lc.oclist.getitem(i));
00135 }
00136 /* Wait for dialog */
00137 dia->setbutinfo (MENU_USR1,MSG_R(B_SEARCH)
00138 ,MSG_R(X_SEARCH));
00139 dia->setbutinfo (MENU_USR2,MSG_R(B_MOD)
00140 ,MSG_R(X_MOD));
00141
00142 MENU_STATUS code = dia->edit (MSG_U(T_LDAP_EDIT,"LDAP editor")
00143 ,MSG_U(I_LDAP_EDIT
00144 ,"This is a small database LDAP editor")
00145 ,help_ldapuser
00146 ,nof
00147 ,MENUBUT_USR1|MENUBUT_USR2|MENUBUT_CANCEL);
00148
00149 if (code == MENU_CANCEL || code == MENU_ESCAPE){ /* Exit */
00150 delete dia;
00151 break;
00152 } else if (code == MENU_ACCEPT){ /* Save */
00153 dia->save();
00154 } else if (code == MENU_USR1){ /* Search */
00155 dia->save();
00156
00157 char buf[100];
00158 sprintf(buf,"uid=%s",uid.get());
00159 lc.filter.setfrom(buf);
00160 ret = lc.search();
00161 } else if (code == MENU_USR2){
00162 dia->save();
00163 ret = lc.modify();
00164 }
00165 delete dia;
00166 }
00167 }
|
|
|
Definition at line 174 of file ldapclient.cc. 00175 {
00176 LDAPOBJECT lc; /* LDAP client object */
00177 int ret = 0;
00178 int nof = 0;
00179 SSTRING uid="";
00180 SSTRING base="";
00181 SSTRING host="";
00182 SSTRING passwd="";
00183 SSTRING cn="";
00184 SSTRING givenname="";
00185 SSTRING sn="";
00186 SSTRING o="";
00187 SSTRING ou="";
00188 SSTRING mail="";
00189 SSTRING phone="";
00190 SSTRING cellphone="";
00191 SSTRING homephone="";
00192 SSTRING homeurl="";
00193 SSTRING telephonenumber="";
00194
00195 /* Draw dialog */
00196 DIALOG *dia;
00197 while (1) {
00198 if (lc.at_get("mail") != NULL) { mail.setfrom(lc.at_get("mail")); }
00199 if (lc.at_get("givenname") != NULL) { givenname.setfrom(lc.at_get("givenname")); }
00200 if (lc.at_get("sn") != NULL) { sn.setfrom(lc.at_get("sn")); }
00201 if (lc.at_get("phone") != NULL) { phone.setfrom(lc.at_get("phone")); }
00202 if (lc.at_get("cellphone") != NULL) { cellphone.setfrom(lc.at_get("cellphone")); }
00203 if (lc.at_get("homephone") != NULL) { homephone.setfrom(lc.at_get("homephone")); }
00204 if (lc.at_get("homeurl") != NULL) {homeurl.setfrom(lc.at_get("homeurl")); }
00205 if (lc.at_get("telephonenumber") != NULL) { telephonenumber.setfrom(lc.at_get("telephonenumber")); }
00206 if (lc.at_get("o") != NULL) { o.setfrom(lc.at_get("o")); }
00207 if (lc.at_get("ou") != NULL) {ou.setfrom(lc.at_get("ou")); }
00208
00209 dia = new DIALOG;
00210 dia->newf_str (MSG_U(F_USERNAME,"Account"),uid);
00211 dia->newf_title(MSG_U(F_RESULT,"Data"),1,"","");
00212 dia->newf_str(MSG_U(F_GIVENNAME,"Firstname"),givenname);
00213 dia->newf_str(MSG_U(F_SN,"Lastname"),sn);
00214 dia->newf_str(MSG_U(F_MAIL,"Email"),mail);
00215 dia->newf_str(MSG_U(F_TELEPHONE,"Telephone"),telephonenumber);
00216 dia->newf_str(MSG_U(F_PHONE,"Work phone"),phone);
00217 dia->newf_str(MSG_U(F_HOMEPHONE,"Home phone"),homephone);
00218 dia->newf_str(MSG_U(F_CELLPHONE,"Cellular phone"),cellphone);
00219 dia->newf_str(MSG_U(F_HOMEURL,"Homepage URL"),homeurl);
00220 dia->newf_str(MSG_U(F_O,"Organization"),o);
00221 dia->newf_title(MSG_U(F_BINDING,"Binding"),1,"","");
00222 dia->newf_pass (MSG_U(F_PASSWD,"Password"),lc.bindpw);
00223 dia->newf_str (MSG_U(F_SERVER,"Server"),lc.host);
00224 dia->newf_str (MSG_U(F_BASE,"Base"),lc.base);
00225 /* dia->newf_str(MSG_U(F_OU,"Department"),ou); */
00226
00227 /*
00228 for (int i=0; i<lc.attributes.getnb(); i++){
00229 dia->newf_str ("",*lc.attributes.getitem(i));
00230 }
00231 dia->newf_title ("","Objectclass");
00232 for (int i=0; i<lc.objectclasses.getnb(); i++){
00233 dia->newf_str ("",*lc.objectclasses.getitem(i));
00234 }
00235 */
00236 /* Wait for dialog */
00237 dia->setbutinfo (MENU_USR1,MSG_R(B_SEARCH)
00238 ,MSG_R(X_SEARCH));
00239 dia->setbutinfo (MENU_USR2,MSG_U(B_MOD,"Modify")
00240 ,MSG_U(X_MOD,"Modify"));
00241
00242 MENU_STATUS code = dia->edit (MSG_U(T_USEREDIT,"LDAP userinfo")
00243 ,MSG_U(I_USEREDIT
00244 ,"Use this dialog to update your personal info")
00245 ,help_ldapuser
00246 ,nof
00247 ,MENUBUT_USR1|MENUBUT_USR2|MENUBUT_CANCEL);
00248
00249 if (code == MENU_CANCEL || code == MENU_ESCAPE){ /* Exit */
00250 delete dia;
00251 break;
00252 } else if (code == MENU_ACCEPT){ /* Save */
00253 dia->save();
00254 } else if (code == MENU_USR1){ /* Search */
00255 dia->save();
00256
00257 char buf[100];
00258 sprintf(buf,"uid=%s",uid.get());
00259 lc.filter.setfrom(buf);
00260 ret = lc.search();
00261 } else if (code == MENU_USR2){
00262 dia->save();
00263 lc.binddn=lc.dn;
00264 lc.at_set("mail",mail.get());
00265 lc.at_set("givenname",givenname.get());
00266 lc.at_set("sn",sn.get());
00267 lc.at_set("phone",phone.get());
00268 lc.at_set("homephone",homephone.get());
00269 lc.at_set("cellphone",cellphone.get());
00270 lc.at_set("homeurl",homeurl.get());
00271 lc.at_set("telephonenumber",telephonenumber.get());
00272 lc.at_set("o",o.get());
00273 lc.at_set("ou",ou.get());
00274 ret = lc.modify();
00275 }
00276 delete dia;
00277 }
00278 }
|
|
|
Definition at line 285 of file ldapclient.cc. 00286 {
00287 LDAPOBJECT lc; /* LDAP client object */
00288 int ret = 0;
00289 int nof = 0;
00290 SSTRING uid="";
00291 SSTRING base="";
00292 SSTRING host="";
00293 SSTRING passwd="";
00294 SSTRING passwd2="";
00295
00296 /* Draw dialog */
00297 DIALOG *dia;
00298 dia = new DIALOG;
00299 dia->newf_title("",MSG_U(F_PASSWORD_BINDING,"Binding"));
00300 dia->newf_str (MSG_U(F_PASSWORD_DN,"Username"),uid);
00301 dia->newf_pass (MSG_U(F_PASSWORD_PW1,"Password"),passwd);
00302 dia->newf_pass (MSG_U(F_PASSWORD_PW2,"Repeat"),passwd2);
00303 dia->newf_str (MSG_U(F_PASSWORD_SERVER,"Server"),host);
00304 dia->newf_str (MSG_U(F_PASSWORD_BASE,"Base"),base);
00305
00306 /* Wait for dialog */
00307 MENU_STATUS code = dia->edit (MSG_U(T_PASSWORD,"LDAP passwd")
00308 ,MSG_U(I_PASSWORD
00309 ,"Use this dialog to update your password")
00310 ,help_ldapuser
00311 ,nof
00312 ,MENUBUT_CANCEL);
00313
00314 if (code == MENU_CANCEL || code == MENU_ESCAPE){ /* Exit */
00315 delete dia;
00316 return;
00317 } else if (code == MENU_ACCEPT){ /* Save */
00318 dia->save();
00319 lc.binddn=lc.dn;
00320 lc.at_set("UserPasswd",passwd.get());
00321 ret = lc.modify();
00322 }
00323 delete dia;
00324
00325 }
|
|
|
Definition at line 332 of file ldapclient.cc. Referenced by ldap_form_search(), ldap_formclient(), and ldapsearch(). 00333 {
00334 DIALOG_LISTE *dia = NULL;
00335 int nof = 0;
00336 while (1){
00337 if (dia == NULL){
00338 dia = new DIALOG_LISTE;
00339 int n = lst.getnb();
00340 dia->newf_head ("",MSG_U(F_DNLIST,"Search result"));
00341 for (int i=0; i<n; i++){
00342 dia->new_menuitem (lst.getitem(i)->get(),"");
00343 }
00344 }
00345 MENU_STATUS code = dia->editmenu (MSG_U(T_DNLIST,"Select")
00346 ,MSG_U(I_DNLIST,"Select one")
00347 ,help_ldapuser
00348 ,nof
00349 ,0);
00350 if (code == MENU_QUIT || code == MENU_ESCAPE){
00351 break;
00352 }
00353 else if (nof >=0 && nof < lst.getnb()){
00354 choice = lst.getitem(nof)->get();
00355 break;
00356 }
00357 }
00358 delete dia;
00359 return nof;
00360 }
|
|
|
Definition at line 368 of file ldapclient.cc. 00369 {
00370 SSTRING form_key;
00371
00372 int nof = 0;
00373
00374 CONFDB c_ldapconf(f_ldapconf);
00375
00376 char fpath[PATH_MAX];
00377 /* Load profile */
00378
00379 sprintf(fpath,"%s/%s",PROFILE_DIR,profile_name);
00380 CONFIG_FILE f_profile (fpath,help_ldap
00381 ,CONFIGF_MANAGED|CONFIGF_OPTIONAL
00382 ,"root","root",0600
00383 ,subsys_ldap);
00384 CONFDB c_profile (f_profile);
00385
00386 SSTRING bind_name = c_profile.getval ("profile","bind","formclient");
00387 SSTRING form_name = c_profile.getval ("profile","form","formclient");
00388 SSTRING dn_prefix = c_profile.getval ("profile","prefix","ou=People");
00389 SSTRING primary_key = c_profile.getval ("profile","primarykey","uid");
00390 // char user_access = c_profile.getvalnum ("profile","access",0);
00391
00392 /* Load binding */
00393
00394 sprintf (fpath,"%s/%s",DBBIND_DIR,bind_name.get());
00395 CONFIG_FILE f_bind (fpath,help_ldap
00396 ,CONFIGF_MANAGED|CONFIGF_OPTIONAL
00397 ,"root","root",0600
00398 ,subsys_ldap);
00399 CONFDB c_bind (f_bind);
00400
00401 /* Load form */
00402
00403 sprintf (fpath,"%s/%s",DBFORM_DIR,form_name.get());
00404 CONFIG_FILE f_form (fpath,help_ldap
00405 ,CONFIGF_MANAGED|CONFIGF_OPTIONAL
00406 ,"root","root",0600
00407 ,subsys_ldap);
00408 CONFDB c_form (f_form);
00409
00410 /* Set default binding */
00411 SSTRING bindhost = c_bind.getval("ldap","host");
00412 SSTRING bindbase = c_bind.getval("ldap","base");
00413 SSTRING binddn = c_bind.getval("ldap","binddn");
00414 SSTRING bindpw;
00415 // bindpw = c_bind.getval("ldap","bindpw");
00416
00417 DIALOG dia;
00418 dia.newf_title ("","Profile");
00419 dia.newf_title ("",profile_name);
00420
00421 /* Form key */
00422 dia.newf_str (MSG_R(I_FORM_KEY),form_key);
00423 /* Form data */
00424 dia.newf_title (MSG_R(I_FORM_DATA),1,"",MSG_R(I_FORM_DATA));
00425 dia.newf_title ("",form_name.get());
00426 FIELD_DEFS defs(&c_form);
00427 defs.read();
00428 defs.setupdia(dia);
00429 /* Binding */
00430 dia.newf_title(MSG_R(F_BINDING),1,"",MSG_R(F_BINDING));
00431 dia.newf_title ("",bind_name.get());
00432 dia.newf_str (MSG_R(F_API_BASE),bindbase);
00433 dia.newf_str (MSG_R(F_API_HOST),bindhost);
00434 dia.newf_str (MSG_R(F_API_DN),binddn);
00435 dia.newf_pass (MSG_R(F_API_PW),bindpw);
00436
00437 /* Extra buttons */
00438 dia.setbutinfo (MENU_USR1,MSG_R(B_SEARCH),MSG_R(X_SEARCH));
00439 dia.setbutinfo (MENU_USR2,MSG_R(B_MOD),MSG_R(X_MOD));
00440
00441 LDAPOBJECT ldap;
00442 while (1) {
00443 //defs.loadval (ldap,form_key.get());
00444 dia.reload();
00445
00446 MENU_STATUS code = dia.edit (MSG_R(T_FORM_CLIENT)
00447 ,MSG_R(I_FORM_CLIENT)
00448 ,help_formclient
00449 ,nof
00450 ,MENUBUT_USR1|MENUBUT_USR2|MENUBUT_CANCEL|MENUBUT_ADD|MENUBUT_DEL);
00451
00452 // Save dialog entries
00453 dia.save();
00454
00455 /* Update ldap binding */
00456 ldap.host.setfrom(bindhost);
00457 ldap.base.setfrom(bindbase);
00458 ldap.binddn.setfrom(binddn);
00459 if ( bindpw.is_empty() ) { // Use password from profile if not specified by user
00460 ldap.bindpw.setfrom(c_bind.getval("ldap","bindpw")); }
00461 else {
00462 ldap.bindpw.setfrom(bindpw); }
00463
00464 /* Refresh dialog */
00465 if (code == MENU_CANCEL || code == MENU_ESCAPE){ /* Exit */
00466 break;
00467 } else if (code == MENU_USR1 || code == MENU_ACCEPT){ /* Search */
00468 SSTRINGS dnlist;
00469 ldap.filter.setfromf("uid=%s",form_key.get());
00470 int n = ldap.search_list_val(dnlist,"uid");
00471 if (n > 1) { // Multiple results
00472 SSTRING choice;
00473 ldaplist(dnlist,choice);
00474 ldap.base.setfromf("%s,%s",dn_prefix.get(),bindbase.get());
00475 ldap.filter.setfromf("uid=%s",choice.get());
00476 ldap.search();
00477 }
00478 ldap.search();
00479 form_key.setfrom(ldap.at_get("uid"));
00480 } else if (code == MENU_ADD){ /* Add new entry */
00481 char name[100];
00482 if (dialog_inputbox(MSG_U(T_NEWENTRY,"New entry")
00483 ,MSG_U(I_NEWENTRY
00484 ,"Enter the value for the key attribute")
00485 ,help_formclient,name)==MENU_ACCEPT){
00486 /* Check if this entry exist */
00487 form_key.setfrom(name);
00488 ldap.filter.setfromf("%s=%s",primary_key.get(),name);
00489 int n = ldap.search();
00490 if ( n < 1) { /* Add new entry */
00491 ldap.dn.setfromf("%s=%s,%s,%s",primary_key.get(),name,dn_prefix.get(),ldap.base.get());
00492 ldap.at_set("uid",name);
00493 ldap.at_set("cn",name); // For Netscape search
00494 ldap.oc_add("top");
00495 // ldap.oc_add("person");
00496 ldap.oc_add("account");
00497 ldap.oc_add("posixAccount");
00498 ldap.add();
00499 }
00500 } else {
00501 break;
00502 }
00503 } else if (code == MENU_USR2){ /* Modify */
00504 /* Check if this entry exist */
00505 ldap.filter.setfromf("%s=%s",primary_key.get(),form_key.get());
00506 int n = ldap.search();
00507 if ( n == 1) {
00508 //defs.saveval (ldap,form_key.get());
00509 ldap.modify();
00510 }
00511 } else if (code == MENU_DEL){ /* Delete */
00512 ldap.del();
00513 }
00514 }
00515 }
|
1.2.1 written by Dimitri van Heesch,
© 1997-2000