source: trunk/include/sh_files.h@ 505

Last change on this file since 505 was 488, checked in by katerina, 9 years ago

Fix for tickets #386 (silent check) and #387 (linux audit support).

File size: 7.1 KB
Line 
1/* SAMHAIN file system integrity testing */
2/* Copyright (C) 1999, 2000 Rainer Wichmann */
3/* */
4/* This program is free software; you can redistribute it */
5/* and/or modify */
6/* it under the terms of the GNU General Public License as */
7/* published by */
8/* the Free Software Foundation; either version 2 of the License, or */
9/* (at your option) any later version. */
10/* */
11/* This program is distributed in the hope that it will be useful, */
12/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
13/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
14/* GNU General Public License for more details. */
15/* */
16/* You should have received a copy of the GNU General Public License */
17/* along with this program; if not, write to the Free Software */
18/* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
19
20#ifndef SH_FILES_H
21#define SH_FILES_H
22
23void sh_audit_mark (const char * file);
24void sh_audit_commit ();
25void sh_audit_delete_all ();
26char * sh_audit_fetch (char * file, time_t mtime, time_t ctime, char * result, size_t rsize);
27
28struct sh_dirent {
29 char * sh_d_name;
30 struct sh_dirent * next;
31};
32
33/* Fix the check flags
34 */
35void sh_files_fixup_mask (int class, unsigned long * check_flags);
36
37/* Dequote a filename in the config file
38 */
39char * sh_files_parse_input(const char * str_s, size_t * len);
40
41/* Check whether a file is in the config
42 */
43char * sh_files_findfile(const char * path);
44
45/* Find the most specific directory in the config
46 */
47char * sh_files_find_mostspecific_dir(const char * path);
48
49/* free a directory listing
50 */
51void kill_sh_dirlist (struct sh_dirent * dirlist);
52
53#ifdef NEED_ADD_DIRENT
54/* add an entry to a directory listing
55 */
56struct sh_dirent * addto_sh_dirlist (struct dirent * thisEntry,
57 struct sh_dirent * dirlist);
58#endif
59
60/* register exceptions to hardlink check
61 */
62int sh_files_hle_reg (const char * str);
63
64/* Check for new files/dirs matching configured glob patterns.
65 */
66void sh_files_check_globPatterns();
67
68/* Check for new files (only) matching configured glob patterns.
69 */
70void sh_files_check_globFilePatterns();
71
72/* check the setup
73 */
74int sh_files_test_setup (void);
75
76/* check if allignore
77 */
78int sh_files_is_allignore (char * str);
79
80/* activate hardlink check
81 */
82int sh_files_check_hardlinks (const char * opt);
83
84/* check rsrc fork (Mac OS X)
85 */
86int sh_files_use_rsrc(const char * str);
87
88/* set recursion depth
89 */
90int sh_files_setrec (void);
91
92/* report only once
93 */
94int sh_files_reportonce(const char * c);
95
96/* report full details
97 */
98int sh_files_fulldetail(const char * c);
99
100/* reset the 'checked' flag
101 */
102void sh_dirs_reset(void);
103
104/* reset the 'checked' flag
105 */
106void sh_files_reset(void);
107
108/* set maximum recursion level
109 */
110int sh_files_setrecursion (const char * flag_s);
111
112/* select a directory stack 2=Two, else One (standard)
113 */
114int set_dirList (int which);
115
116/* push a directory on the stack USER0
117 */
118int sh_files_pushdir_user0 (const char * dirName);
119
120/* push a directory on the stack USER1
121 */
122int sh_files_pushdir_user1 (const char * dirName);
123
124/* push a directory on the stack USER2
125 */
126int sh_files_pushdir_user2 (const char * dirName);
127
128/* push a directory on the stack USER3
129 */
130int sh_files_pushdir_user3 (const char * dirName);
131
132/* push a directory on the stack USER4
133 */
134int sh_files_pushdir_user4 (const char * dirName);
135
136/* push a directory on the stack PRELINK
137 */
138int sh_files_pushdir_prelink (const char * dirName);
139
140/* push a directory on the stack ATTR
141 */
142int sh_files_pushdir_attr (const char * dirName);
143
144/* push a directory on the stack READONLY
145 */
146int sh_files_pushdir_ro (const char * dirName);
147
148/* push a directory on the stack LOGFILE
149 */
150int sh_files_pushdir_log (const char * dirName);
151
152/* push a directory on the stack GROWING LOGFILE
153 */
154int sh_files_pushdir_glog (const char * dirName);
155
156/* push a directory on the stack IGNORE NONE
157 */
158int sh_files_pushdir_noig (const char * dirName);
159
160/* push a directory on the stack IGNORE ALL
161 */
162int sh_files_pushdir_allig (const char * dirName);
163
164
165/* push a file on the stack USER0
166 */
167int sh_files_pushfile_user0 (const char * dirName);
168
169/* push a file on the stack USER1
170 */
171int sh_files_pushfile_user1 (const char * dirName);
172
173/* push a file on the stack USER2
174 */
175int sh_files_pushfile_user2 (const char * dirName);
176
177/* push a file on the stack USER3
178 */
179int sh_files_pushfile_user3 (const char * dirName);
180
181/* push a file on the stack USER4
182 */
183int sh_files_pushfile_user4 (const char * dirName);
184
185/* push a file on the stack PRELINK
186 */
187int sh_files_pushfile_prelink (const char * dirName);
188
189/* push a file on the stack ATTR
190 */
191int sh_files_pushfile_attr (const char * dirName);
192
193/* push a file on the stack READONLY
194 */
195int sh_files_pushfile_ro (const char * dirName);
196
197/* push a file on the stack LOGFILE
198 */
199int sh_files_pushfile_log (const char * dirName);
200
201/* push a file on the stack GROWING LOGFILE
202 */
203int sh_files_pushfile_glog (const char * dirName);
204
205/* push a file on the stack IGNORE NONE
206 */
207int sh_files_pushfile_noig (const char * dirName);
208
209/* push a file on the stack IGNORE ALL
210 */
211int sh_files_pushfile_allig (const char * dirName);
212
213
214/* check directories on the stack
215 */
216unsigned long sh_dirs_chk (int which);
217
218/* check files on the stack
219 */
220unsigned long sh_files_chk (void);
221
222int sh_files_delglobstack (void);
223
224int sh_files_deldirstack (void);
225
226int sh_files_delfilestack (void);
227
228/* redefine policies
229 */
230int sh_files_redef_user0(const char * str);
231int sh_files_redef_user1(const char * str);
232int sh_files_redef_user2(const char * str);
233int sh_files_redef_user3(const char * str);
234int sh_files_redef_user4(const char * str);
235int sh_files_redef_prelink(const char * str);
236int sh_files_redef_readonly(const char * str);
237int sh_files_redef_loggrow(const char * str);
238int sh_files_redef_logfiles(const char * str);
239int sh_files_redef_attributes(const char * str);
240int sh_files_redef_noignore(const char * str);
241int sh_files_redef_allignore(const char * str);
242
243ShFileType sh_files_filecheck (int class, unsigned long check_flags,
244 const char * dirName,
245 const char * infileName,
246 int * reported,
247 int rsrcflag);
248
249int sh_files_checkdir (int iclass, unsigned long check_flags,
250 int idepth, char * iname,
251 char * relativeName);
252
253int sh_files_search_file(char * name, int * class,
254 unsigned long *check_flags, int * reported);
255int sh_files_search_dir(char * name, int * class,
256 unsigned long *check_flags, int *reported,
257 int * rdepth);
258void sh_files_set_file_reported(const char * name);
259void sh_files_clear_file_reported(const char * name);
260
261#endif
262
263
264
265
Note: See TracBrowser for help on using the repository browser.