source: trunk/include/sh_utils.h@ 280

Last change on this file since 280 was 214, checked in by katerina, 16 years ago

Rewrite mail subsystem for more flexibility (closes ticket #141).

File size: 6.1 KB
RevLine 
[1]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_UTILS_H
22#define SH_UTILS_H
23
24#include <stdarg.h>
25
26#include "slib.h"
27
28#include "sh_error.h"
29#include "sh_unix.h"
30
31#define S_FMT_STRING 1
32#define S_FMT_ULONG 2
33#define S_FMT_TIME 3
34#define S_FMT_LONG 4
35
36
37typedef struct ft_struc {
38 char fchar;
39 int type;
40 unsigned long data_ulong;
41 long data_long;
[214]42 char *data_str;
[1]43} st_format;
44
[132]45/* returns allocated string
46 */
[1]47char * sh_util_formatted (const char * fmt, st_format * ftab);
48
49typedef struct sh_timeout_struct {
50 UINT64 time_last;
51 UINT64 time_dist;
52 int flag_ok;
53} SH_TIMEOUT;
54
55int sh_util_timeout_check (SH_TIMEOUT * sh_timer);
56
57/* This is a maximally equidistributed combined Tausworthe
58 * generator.
59 */
[170]60UINT32 taus_get (void);
[1]61double taus_get_double (void *vstate); /* fast */
62int taus_seed (void);
63
[132]64/* returns allocated memory
65 */
[149]66char * sh_util_strdup (const char * str) SH_GNUC_MALLOC;
[132]67
68/* returns allocated memory
69 */
[149]70char * sh_util_strdup_l (const char * str, size_t len) SH_GNUC_MALLOC;
[132]71
72/* returns pointer within str
73 */
[1]74char * sh_util_strsep (char **str, const char *delim);
75
[132]76/* compactify verbose acl text, returns allocated memory
[68]77 */
78char * sh_util_acl_compact (char * buf, ssize_t len);
79
[1]80/* set signature type HASH-TIGER/HMAC-TIGER
81 */
[22]82int sh_util_sigtype (const char * c);
[1]83
84/* compute a signature
85 */
86char * sh_util_siggen (char * hexkey,
[138]87 char * text, size_t textlen,
88 char * sigbuf, size_t sigbuflen);
[1]89
90/* eval boolean input
91 */
[20]92int sh_util_flagval(const char * c, int * fval);
[1]93
94/* ask if a file should be updated (returns S_TRUE/S_FALSE)
95 */
96int sh_util_ask_update(char * path);
[20]97int sh_util_set_interactive(const char * str);
[1]98
99/* don't log output files
100 */
[22]101int sh_util_hidesetup(const char * c);
[1]102
[68]103/* valif utf-8 string
104 */
105int sh_util_valid_utf8 (const unsigned char * str);
106
107/* filenames are utf8
108 */
109int sh_util_obscure_utf8 (const char * c);
110
[1]111/* exceptions to obscure name check
112 */
[22]113int sh_util_obscure_ok (const char * str);
[1]114
[138]115/* output a hexchar[2]; i2h must be char[2]
[1]116 */
[138]117char * sh_util_charhex( unsigned char c, char * i2h );
[93]118
119/* read a hexchar, return int value (0-15)
120 */
[149]121int sh_util_hexchar( char c ) SH_GNUC_CONST;
[1]122
123/* change verifier
124 */
[20]125int sh_util_set_newkey (const char * str);
[1]126
127/* server mode
128 */
[20]129int sh_util_setserver (const char * dummy);
[1]130
131/* a simple compressor
132 */
[214]133size_t sh_util_compress (char * dest, char * src, size_t dest_size);
[1]134
135/* an even simpler en-/decoder
136 */
137void sh_util_encode (char * data, char * salt, int mode, char fill);
138
139/* copy len ( < 4) bytes from (char *) (long src) to (char *) dest,
140 * determine the four LSB's and use them (independent of sizeof(long))
141 */
142void sh_util_cpylong (char * dest, const char * src, int len );
143
144/* set timer for main loop
145 */
[20]146int sh_util_setlooptime (const char * str);
[1]147
148/* whether init or check the database
149 */
[20]150int sh_util_setchecksum (const char * str);
[1]151
152/* compare an in_string against a regular expression regex_str
153 return GOOD on successful match
154*/
155int sh_util_regcmp (char * regex_str, char * in_str);
156
157
158/* returns freshly allocated memory, return value should be free'd.
[132]159 * Argument list must be NULL terminated.
[1]160 */
[149]161char * sh_util_strconcat (const char * arg1, ...) SH_GNUC_MALLOC SH_GNUC_SENTINEL;
[1]162
163/* check if string is numeric only
164 */
[149]165int sh_util_isnum (const char *str) SH_GNUC_PURE;
[1]166
167/* init a key w/random string
168 */
169int sh_util_keyinit (char * buf, long size);
170
171
172/* returns freshly allocated memory, return value should be free'd
173 */
[34]174char * sh_util_dirname(const char * fullpath);
[1]175
176/* returns freshly allocated memory, return value should be free'd
177 */
[149]178char * sh_util_safe_name (const char * name) SH_GNUC_MALLOC SH_GNUC_PURE;
[1]179
[185]180char * sh_util_safe_name_keepspace (const char * name) SH_GNUC_MALLOC SH_GNUC_PURE;
181
[1]182/* check max size of printf result string
183 */
184int sh_util_printf_maxlength (const char * fmt, va_list vl);
185
186/* check for obscure filenames
187 */
188int sh_util_obscurename (ShErrLevel level, char * name, int flag);
189
190/* returns freshly allocated memory, return value should be free'd
191 */
[34]192char * sh_util_basename(const char * fullpath);
[1]193
[167]194/* required size (including terminating NULL) for string of strlen l
195 */
196#define SH_B64_SIZ(l) (1 + ((((l) + 2) / 3) * 4))
197
198/* return len of encoded string
199 */
200size_t sh_util_base64_enc (unsigned char * out, const unsigned char * instr,
201 size_t lin);
202
203/* return allocated encoded string in out, return its len
204 */
205size_t sh_util_base64_enc_alloc (char **out, const char *in, size_t inlen);
206
207/* return len of decoded string
208 */
209size_t sh_util_base64_dec (unsigned char *out, const unsigned char *in, size_t lin);
210
211/* return allocated decoded string in out, return its len
212 */
213size_t sh_util_base64_dec_alloc (unsigned char **out, const unsigned char *in, size_t lin);
214
[1]215#endif
Note: See TracBrowser for help on using the repository browser.