A simple example of how to use libauc.
make sample sample config.xml internal guest guest
#include <libmacs.h> #include <stdio.h> #include <malloc.h> int main(int argc, char **argv) { int i, j; long int siz; char *skey, *uid, **pkeys, *pval, *ip, *port; void *mctx; macs_profile_type mpt; if (argc < 2 || (argc-2)%3) { printf("Usage: %s cf [method login password] ...\n",argv[0]); puts("\tWhere cf is the configuration file to use\n"); exit(1); } ip="0.0.0.0"; port="0"; mctx=macs_init(argv[1],MACS_AUS); if (!mctx) { puts("init failed."); return 1; } for (i=2; i < argc; i+=3) { printf("method:%s login:%s passwd:%s",argv[i],argv[i+1],argv[i+2]); skey=macs_login(mctx,argv[i],argv[i+1],argv[i+2],ip,port,-1); uid=macs_auth_sess(mctx,skey,ip,port); free(skey); if (uid) printf(" success, uid %s\n",uid); else { puts(" failed."); free(uid); continue; } fputs("Fetching core profile...",stdout); if ((pkeys=macs_upc_list(mctx,NULL,uid,MACS_TYPE_AUTO))) puts(" done."); else { puts(" failed."); free(uid); continue; } for (j=0; pkeys[j]; j++) { printf("\t%s:",pkeys[j]); mpt=MACS_TYPE_AUTO; pval=macs_upc_get(mctx,NULL,uid,pkeys[j],&mpt,&siz); if (!pval) puts(" failed."); else { printf(" %s\n",pval); free(pval); } free(pkeys[j]); } free(pkeys); free(uid); } macs_exit(mctx); return 0; }
1.2.16