ze-filter  (ze-filter-0.8.0-develop-180218)
ze-rbwl-test.c
Go to the documentation of this file.
1 
2 /*
3  *
4  * ze-filter - Mail Server Filter for sendmail
5  *
6  * Copyright (c) 2001-2018 - Jose-Marcio Martins da Cruz
7  *
8  * Auteur : Jose Marcio Martins da Cruz
9  * jose.marcio.mc@gmail.org
10  *
11  * Historique :
12  * Creation : janvier 2002
13  *
14  * This program is free software, but with restricted license :
15  *
16  *
17  * This program is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20  *
21  * More details about ze-filter license can be found at ze-filter
22  * web site : http://foss.jose-marcio.org
23  */
24 
25 #include <ze-sys.h>
26 #include <ze-filter.h>
27 
28 int
29 main(argc, argv)
30  int argc;
31  char **argv;
32 {
33  int res = 0;
34  extern int ze_logLevel;
35 
36  configure("ze-rbwl-test", conf_file, FALSE);
37 
39  ze_logLevel = 10;
40 
41  {
42  char *ip, *name;
43  int netclass;
44  char class[64];
45 
46  iprbwl_T rbwl;
47 
48  int flag = 0;
49  char *result = NULL;
50  int c;
51 
52  const char *args = "i:h:t:l:v";
53 
54  ip = "0.0.0.0";
55  name = "localhost";
56 
57  while ((c = getopt(argc, argv, args)) != -1) {
58  switch (c) {
59  case 'i':
60  ip = optarg;
61  break;
62  case 'h':
63  name = optarg;
64  break;
65  case 'v':
66  ze_logLevel++;
67  break;
68  case 'l':
69  ze_logLevel = atoi(optarg);
70  break;
71  default:
72  (void) fprintf(stderr, "-> Unknown command line option : %c\n", c);
73  exit(1);
74  }
75  }
76 
77  if (ze_logLevel > 11) {
78 #if 0
79 #define HOSTNAME_REGEX "^[a-z0-9.-]+\\.[a-z]{2,6}$"
80 #else
81 #define HOSTNAME_REGEX DOMAINNAME_REGEX
82 #endif
83 
84  ZE_MessageInfo(10, "* HOSTNAME_REGEX %s", HOSTNAME_REGEX);
85  if (zeStrRegex(name, HOSTNAME_REGEX, NULL, NULL, TRUE))
86  ZE_MessageInfo(10, "* %s is a domain name", name);
87  else
88  ZE_MessageInfo(10, "* %s isn't a domain name", name);
89  }
90 
91  netclass = GetClientNetClass(ip, name, NULL, NULL, 0);
92  strlcpy(class, NET_CLASS_LABEL(netclass), sizeof (class));
93 
94  memset(&rbwl, 0, sizeof (rbwl));
95  flag = check_iprbwl_table("00000000.000", ip, name, &rbwl);
96  if (flag > 0)
97  strlcpy(class, rbwl.netclass, sizeof (class));
98 
99  ZE_MessageInfo(0, "Client IP address : %s", ip);
100  ZE_MessageInfo(0, "Client hostname : %s", name);
101  ZE_MessageInfo(0, "Client NET class : %02X %s", netclass, class);
102 
103  result = STRNULL(result, "...");
104 
105  ZE_MessageInfo(0, "RESULT = %2d %s", flag, result);
106  }
107 
108  return 0;
109 }
int main(int argc, char **argv)
Definition: ze-rbwl-test.c:29
int ze_logLevel
Definition: zeSyslog.c:34
#define STRNULL(x, r)
Definition: macros.h:81
int GetClientNetClass(char *ip, char *name, netclass_T *class, char *label, size_t sz)
Definition: ze-netclass.c:49
void zeLog_SetOutput(bool, bool)
Definition: zeSyslog.c:490
#define FALSE
Definition: macros.h:160
#define strlcpy
Definition: zeString.h:32
bool zeStrRegex(char *, char *, long *, long *, bool)
Definition: zeStrings.c:544
char netclass[20]
Definition: ze-dns-iprbwl.h:39
#define HOSTNAME_REGEX
#define ZE_MessageInfo(level,...)
Definition: zeSyslog.h:90
#define TRUE
Definition: macros.h:157
char * conf_file
Definition: ze-cf.c:38
int configure(char *, char *, bool)
Definition: ze-cf.c:1203
uint32_t check_iprbwl_table(char *id, char *ip, char *name, iprbwl_T *rbwl)
#define NET_CLASS_LABEL(class)
Definition: ze-netclass.h:57