home *** CD-ROM | disk | FTP | other *** search
/ Network Support Encyclopedia 96-1 / novell-nsepro-1996-1-cd2.iso / download / netware / dn511.exe / AUDITC.CPP < prev    next >
C/C++ Source or Header  |  1995-02-10  |  2KB  |  96 lines

  1. /*
  2. ** AUDITC <container>
  3. **
  4. **    Login as container auditor and list entries in the audit file.
  5. **
  6. **    Author: John Buckle, Asia Pacific Support Centre, Novell Australia.
  7. */
  8.  
  9. extern unsigned _stklen = 8192;
  10.  
  11. # include <stdio.h>
  12. # include <conio.h>
  13. # include <io.h>
  14.  
  15. # include <dscontext.h>
  16. # include <dslocale.h>
  17. # include <dsconn.h>
  18. # include <dsaudit.h>
  19.  
  20. int main(int argc, char * argv[])
  21. {
  22.     if (argc != 2){
  23.         fprintf(stderr,"usage: AUDITC container-context\n") ;
  24.         return 0 ;
  25.         }
  26.  
  27.     DSLocale  dsLocale ;
  28.     DSContext dsContext ;
  29.  
  30.     if (dsLocale.status()){
  31.         printf("Cannot initialise unicode - 0x%X\n",dsLocale.status()) ;
  32.         return 0 ;
  33.         }
  34.     if (dsContext.status()){
  35.         printf("Cannot create context - 0x%X\n",dsContext.status()) ;
  36.         return 0 ;
  37.         }
  38.  
  39.     NWCONN_HANDLE    conn ;
  40.     DWORD        objectID ;
  41.     char        buffer[1024] ;
  42.     char        name[256] ;
  43.     WORD        retSize ;
  44.  
  45.     dsContext.AuditGetObjectID(argv[1],conn,objectID) ;
  46.     if (dsContext.status()){
  47.         printf("Cannot get audit object ID - 0x%X\n",dsContext.status()) ;
  48.         return 0 ;
  49.         }
  50.  
  51.     DSAudit dsAudit(dsContext,conn) ;
  52.     if (dsAudit.status()){
  53.         printf("Cannot create audit object - 0x%X\n",dsAudit.status()) ;
  54.         return 0 ;
  55.         }
  56.     char *    password = getpass("Audit password: ") ;
  57.  
  58.     if (dsAudit.LoginAsContainerAuditor(objectID,(BYTE*)password)){
  59.         printf("Cannot login as auditor - 0x%X\n",dsAudit.status()) ;
  60.         return 0 ;
  61.         }
  62.     dsAudit.InitAuditFileRead(0) ;
  63.     if (dsAudit.status())
  64.         printf("Initialisation failed - 0x%X\n",dsAudit.status()) ;
  65.  
  66.     WORD        count = 0 ;
  67.     ftime *        date ;
  68.     AuditDSRecord *    audit = (AuditDSRecord *) buffer ;
  69.  
  70.     while (dsAudit.ReadAuditingFileRecord(buffer,sizeof(buffer),retSize) == 0){
  71.         if (retSize > 0){
  72.             count ++ ; date = (ftime *) & audit->dosDateTime ;
  73.             if (dsAudit.MapIDToName(audit->userID,name))
  74.                 sprintf(name,"0x%X",dsAudit.status()) ;
  75.  
  76.             printf("EventID           %d\n",audit->eventTypeID) ;
  77.             printf("User ID           %08lX %s\n",audit->userID,name) ;
  78.             printf("Time              %02u/%02u/%02u %02u:%02u:%02u\n",
  79.                     date->ft_day, date->ft_month,date->ft_year,
  80.                     date->ft_hour,date->ft_min,  date->ft_tsec*2) ;
  81.             }
  82.         }
  83.     printf("\n%d records read\n",count) ;
  84.  
  85.     if (dsAudit.status())
  86.         printf("Reading failed - 0x%X\n",dsAudit.status()) ;
  87.  
  88.     if (dsAudit.LogoutAsAuditor()){
  89.         printf("Cannot logout as auditor - 0x%X\n",dsAudit.status()) ;
  90.         return 0 ;
  91.         }
  92.  
  93.     return 0 ;
  94. }
  95.  
  96.