33 #define URLBL_ONMATCH_CONTINUE 1 35 #define URLBL_RECURSE 2 53 if (name == NULL || strlen(name) == 0) {
58 if ((bl == NULL) || (strlen(bl) == 0)) {
63 if ((code != NULL) && (size <= 0)) {
76 memset(domain, 0,
sizeof (domain));
87 snprintf(s,
sizeof (s),
".%s", argv[argc]);
88 strlcat(domain, s,
sizeof (domain));
90 strlcat(domain,
".",
sizeof (domain));
91 strlcat(domain, bl,
sizeof (domain));
100 for (i = 0; i < a.
count; i++) {
118 while (pname != NULL && strlen(pname) > 0) {
119 snprintf(domain,
sizeof (domain),
"%s.%s", pname, bl);
124 for (i = 0; i < a.
count; i++) {
134 if (result || !recurse)
137 pname =
strchr(pname,
'.');
142 if (
strchr(pname,
'.') == NULL)
155 #define URLBL_LENX 64 179 static pthread_mutex_t urlbl_mutex = PTHREAD_MUTEX_INITIALIZER;
181 #define URLBL_LOCK() \ 182 if (pthread_mutex_lock(&urlbl_mutex) != 0) { \ 183 ZE_LogSysError("pthread_mutex_lock(urlbl_mutex)"); \ 186 #define URLBL_UNLOCK() \ 187 if (pthread_mutex_unlock(&urlbl_mutex) != 0) { \ 188 ZE_LogSysError("pthread_mutex_unlock(urlbl_mutex)"); \ 199 #define KEYVALUE "^[a-z0-9_-]+=[^ \t]+" 202 read_urlbl_line(v, arg)
206 char *s = (
char *) v;
213 memset(&r, 0,
sizeof (r));
220 n = strcspn(s,
" \t");
226 for (i = 0; i < argc; i++) {
277 for (j = 0; j < argxc; j++) {
300 for (j = 0; j < argxc; j++) {
319 if (strlen(r.
code) == 0)
341 r =
zm_RdFile(path, tag, read_urlbl_line, NULL);
357 memset(urlblCf.
urlbl, 0, sizeof (urlblCf.
urlbl));
381 memset(urlblCf.
urlbl, 0, sizeof (urlblCf.
urlbl));
401 printf(
"<DNS-URLBL>\n");
403 for (i = 0; i < urlblCf.
nb; i++) {
406 r = &urlblCf.
urlbl[i];
408 printf(
"%-20s odds=%.4f; score=%.3f; code=%s; onmatch=%s; recurse=%s\n",
413 printf(
"</DNS-URLBL>\n");
423 get_urlbl_rec(i, urlbl)
431 *urlbl = urlblCf.
urlbl[i];
450 if (name == NULL || strlen(name) == 0)
458 if (!get_urlbl_rec(i, &r))
475 for (j = 0; j < argc; j++) {
486 lodds += log(r.
odds);
504 urlbl->
odds = exp(lodds);
505 urlbl->
score = lscore;
void dns_free_hostarr(DNS_HOSTARR_T *mx)
int zm_RdFile(char *fname, char *tag, RDFILE_F f, void *arg)
bool check_dns_urlbl(char *name, char *bl, char *code, size_t size, bool recurse)
#define STRNCASEEQUAL(a, b, n)
#define ZE_LogMsgError(level,...)
bool zeStrRegex(char *, char *, long *, long *, bool)
#define URLBL_ONMATCH_CONTINUE
int zeStr2Tokens(char *, int, char **, char *)
bool read_conf_data_file(char *cfdir, char *fname, char *dfile, read_conf_data_file_F func)
DNS_HOST_T host[MAX_HOST]
uint32_t check_urlbl_table(char *id, char *name, urlbl_T *urlbl)
#define ZE_MessageInfo(level,...)
int zeSafeStrnCpy(char *, size_t, char *, size_t)
#define ZE_MessageWarning(level,...)
#define ZE_MessageError(level,...)
int dns_get_a(char *domain, DNS_HOSTARR_T *a)
#define STRCASEEQUAL(a, b)
bool load_urlbl_table(char *cfdir, char *fname)