1999-05-04 01:52:29 +04:00
/*
Unix SMB / Netbios implementation .
Version 2.1 .
Copyright ( C ) Luke Kenneth Casson Leighton 1996 - 1999 ,
Copyright ( C ) Andrew Tridgell 1994 - 1999 ,
Copyright ( C ) Jean Francois Micouleau 1998 - 1999.
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation ; either version 2 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program ; if not , write to the Free Software
Foundation , Inc . , 675 Mass Ave , Cambridge , MA 0213 9 , USA .
*/
# ifdef SYSLOG
# undef SYSLOG
# endif
# include "includes.h"
# include "nterr.h"
extern int DEBUGLEVEL ;
# define DEBUG_TESTING
extern struct cli_state * smb_cli ;
extern FILE * out_hnd ;
/****************************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void cmd_eventlog ( struct client_info * info )
{
uint16 nt_pipe_fnum ;
1999-08-19 00:11:29 +04:00
BOOL res = True ;
BOOL res1 = True ;
1999-05-04 01:52:29 +04:00
POLICY_HND hnd ;
1999-08-19 00:11:29 +04:00
uint32 number = 0 ;
1999-05-04 01:52:29 +04:00
uint32 flags ;
uint32 offset ;
uint32 num_of_bytes ;
EVENTLOGRECORD ev ;
fstring journal ;
fstring temp ;
flags = EVENTLOG_READ_SEQUENTIAL | EVENTLOG_READ_BACKWARD ;
while ( next_token ( NULL , temp , NULL , sizeof ( temp ) ) )
{
fstrcpy ( journal , temp ) ;
}
/* open scheduler session. */
1999-08-19 00:11:29 +04:00
res1 = res1 ? cli_nt_session_open ( smb_cli , PIPE_EVENTLOG , & nt_pipe_fnum ) : False ;
1999-05-04 01:52:29 +04:00
1999-08-19 00:11:29 +04:00
res1 = res1 ? do_event_open ( smb_cli , nt_pipe_fnum , journal , & hnd ) : False ;
1999-05-04 01:52:29 +04:00
1999-08-19 00:11:29 +04:00
res = res1 ? do_event_numofeventlogrec ( smb_cli , nt_pipe_fnum , & hnd , & number ) : False ;
1999-05-04 01:52:29 +04:00
fprintf ( out_hnd , " Number of events: %d \n " , number ) ;
display_eventlog_eventrecord ( out_hnd , ACTION_HEADER , & ev ) ;
1999-08-19 00:11:29 +04:00
for ( offset = 0 ; offset < number & & res ; offset + + )
1999-05-04 01:52:29 +04:00
{
num_of_bytes = 0 ;
/* try once with a empty buffer */
res = res ? do_event_readeventlog ( smb_cli , nt_pipe_fnum , & hnd , number ,
flags , offset , & num_of_bytes , & ev ) : False ;
/* and try again with the correct size */
res = res ? do_event_readeventlog ( smb_cli , nt_pipe_fnum , & hnd , number ,
flags , offset , & num_of_bytes , & ev ) : False ;
display_eventlog_eventrecord ( out_hnd , ACTION_ENUMERATE , & ev ) ;
}
display_eventlog_eventrecord ( out_hnd , ACTION_FOOTER , & ev ) ;
1999-08-19 00:11:29 +04:00
res1 = res1 ? do_event_close ( smb_cli , nt_pipe_fnum , & hnd ) : False ;
1999-05-04 01:52:29 +04:00
/* close the session */
cli_nt_session_close ( smb_cli , nt_pipe_fnum ) ;
}