source: trunk/include/sh_hash.h @ 458

Last change on this file since 458 was 458, checked in by katerina, 7 years ago

Fix for ticket #358 (repetitive lstat warning) and #359 (reporting of added/deleted top level directories).

File size: 4.9 KB
Line 
1/* SAMHAIN file system integrity testing                                   */
2/* Copyright (C) 1999 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
21#ifndef SH_HASH_H
22#define SH_HASH_H
23
24#include <limits.h>
25
26#include "samhain.h"
27#include "sh_unix.h"
28#include "sh_error.h"
29
30/* convert to policy string
31 */
32const char * sh_hash_getpolicy(int class);
33
34/* format a uint64
35 */
36char * sh_hash_size_format(void);
37
38/* report on a missing file
39 */
40int hashreport_missing( char *fullpath, int level);
41
42/* remove internal db record for a file
43 */
44void sh_hash_remove (const char * path);
45
46/* write database to stdout
47 */
48int sh_hash_pushdata_stdout (const char * str);
49
50/* version string for database
51 */
52int sh_hash_version_string(const char * str);
53
54/* Dont report on ctm/mtm change for directories
55 */
56int sh_hash_loosedircheck(const char * str);
57
58/* List database content
59 */
60int sh_hash_list_db (const char * db_file);
61
62/* List database content for a single file
63 */
64int set_list_file (const char * c);
65
66/* List database content with full detail
67 */
68int set_full_detail (const char * c);
69
70/* List database content with full detail, comma delimited
71 */
72int set_list_delimited (const char * c);
73
74/* Read the database from disk.
75 */
76void sh_hash_init (void);
77
78/* Check whether a file is present in the database.
79 */
80int sh_hash_have_it (const char * newname);
81
82/* Get a file if it is present in the database.
83 * If fileHash != NULL also return checksum.
84 */
85int sh_hash_get_it (const char * newname, file_type * tmpFile, char * fileHash);
86
87/* Delete the database from memory.
88 */
89void sh_hash_hashdelete (void);
90
91/* Insert a file into the database.
92 */ 
93void sh_hash_pushdata (file_type * buf, char * fileHash);
94
95/* reset sh_hash_pushdata to use 'update' in daemon mode
96 */
97void sh_hash_pushdata_reset (void);
98
99/* Insert a file into the in-memory database.
100 */ 
101void sh_hash_pushdata_memory (file_type * theFile, char * fileHash);
102
103/* Get file flags from in-memory database
104 */
105int sh_hash_getflags (char * filename);
106
107/* Set file flags in in-memory database
108 */
109int sh_hash_setflags (char * filename, int flags);
110
111/* Set a file flag in in-memory database
112 */
113void sh_hash_set_flag  (char * filename, int flag);
114
115/* Unset a file flag in in-memory database
116 */
117void sh_hash_clear_flag (char * filename, int flag_to_set);
118
119/* Compare a file with its status in the database.
120 */ 
121int sh_hash_compdata (int class, file_type * theFile, char * fileHash,
122                      char * policy_override, int severity_override);
123
124/* Search for files in the database that have been deleted from disk.
125 */
126void sh_hash_unvisited (ShErrLevel level);
127
128/* Search for unvisited entries in the database, custom error handler.
129 */
130void sh_hash_unvisited_custom (char prefix, void(*handler)(const char * key));
131
132/* Set a file's status to 'visited'. This is required for
133 * files that should be ignored, and may be present in the
134 * database, but not on disk.
135 */
136int sh_hash_set_visited (char * newname);
137
138/* As above, but only set the 'visited' flag
139 */
140int sh_hash_set_visited_true (char * newname);
141
142/* cause the record to be deleted without a 'missing' message
143 */
144int sh_hash_set_missing (char * newname);
145
146/* Make a complete directory tree invisible
147 */
148int hash_remove_tree (char * s);
149
150/* Make every entry visible
151 */
152int hash_full_tree (void); 
153
154/* Insert data.
155 * 'key' -> path
156 * 'str' -> binary with size 'size'
157 */
158struct store2db {
159  UINT64 val0;
160  UINT64 val1;
161  UINT64 val2;
162  UINT64 val3;
163  char   checksum[KEY_LEN+1];
164  unsigned char * str;
165  int size;
166};
167
168void sh_hash_push2db (const char * key, struct store2db * save);
169
170
171/* Retrieve data
172 */
173char * sh_hash_db2pop (const char * key,  struct store2db * get);
174
175
176/* Write out database
177 */
178int sh_hash_writeout(void);
179#endif
Note: See TracBrowser for help on using the repository browser.