1 #include <stdio.h>
2 #include <string.h>
3 #include <netdb.h>
4 #include <sys/types.h>
5 #include <netinet/in.h>
6 #include <arpa/inet.h>
7 #include <sys/time.h>
8 #include <unistd.h>
9 #include "firemake.h"
10 #include "firedns.h"
11
12
do_firedns_aton4(char * string)13 void do_firedns_aton4(char * string) {
14 struct in_addr *inaddr4;
15
16 firestring_fprintf(stderr,"taking firedns_aton4(%s): ",string);
17 inaddr4 = firedns_aton4(string);
18 if (inaddr4 == NULL)
19 firestring_fprintf(stderr,"got NULL\n");
20 else
21 firestring_fprintf(stderr,"%d.%d.%d.%d/%s\n",((unsigned char *)&inaddr4->s_addr)[0],
22 ((unsigned char *)&inaddr4->s_addr)[1],
23 ((unsigned char *)&inaddr4->s_addr)[2],
24 ((unsigned char *)&inaddr4->s_addr)[3],
25 firedns_ntoa4(inaddr4));
26 }
27
do_firedns_getip4(char * string)28 void do_firedns_getip4(char * string) {
29 int fd;
30 fd_set s;
31 int n;
32 struct timeval tv;
33 char *m;
34 struct in_addr addr4;
35
36 firestring_fprintf(stderr,"taking firedns_getip4(%s): ",string);
37 fd = firedns_getip4(string);
38 firestring_fprintf(stderr,"%d\n",fd);
39 if (fd == -1)
40 return;
41 tv.tv_sec = 5;
42 tv.tv_usec = 0;
43 FD_ZERO(&s);
44 FD_SET(fd,&s);
45 n = select(fd + 1,&s,NULL,NULL,&tv);
46 m = firedns_getresult(fd);
47 if (m == NULL)
48 firestring_fprintf(stderr,"getting result: (null)\n");
49 else {
50 memcpy(&addr4,m,sizeof(struct in_addr));
51 firestring_fprintf(stderr,"getting result: %s\n",firedns_ntoa4(&addr4));
52 }
53 }
54
do_firedns_getip6(char * string)55 void do_firedns_getip6(char * string) {
56 int fd;
57 fd_set s;
58 int n;
59 struct timeval tv;
60 char *m;
61 struct in6_addr addr6;
62
63 firestring_fprintf(stderr,"taking firedns_getip6(%s): ",string);
64 fd = firedns_getip6(string);
65 firestring_fprintf(stderr,"%d\n",fd);
66 if (fd == -1)
67 return;
68 tv.tv_sec = 5;
69 tv.tv_usec = 0;
70 FD_ZERO(&s);
71 FD_SET(fd,&s);
72 n = select(fd + 1,&s,NULL,NULL,&tv);
73 m = firedns_getresult(fd);
74 if (m == NULL)
75 firestring_fprintf(stderr,"getting result: (null)\n");
76 else {
77 memcpy(&addr6,m,sizeof(struct in6_addr));
78 firestring_fprintf(stderr,"getting result: %s\n",firedns_ntoa6(&addr6));
79 }
80 }
81
do_firedns_gettxt(char * string)82 void do_firedns_gettxt(char * string) {
83 int fd;
84 fd_set s;
85 int n;
86 struct timeval tv;
87 char *m;
88
89 firestring_fprintf(stderr,"taking firedns_gettxt(%s): ",string);
90 fd = firedns_gettxt(string);
91 firestring_fprintf(stderr,"%d\n",fd);
92 if (fd == -1)
93 return;
94 tv.tv_sec = 5;
95 tv.tv_usec = 0;
96 FD_ZERO(&s);
97 FD_SET(fd,&s);
98 n = select(fd + 1,&s,NULL,NULL,&tv);
99 m = firedns_getresult(fd);
100 firestring_fprintf(stderr,"getting result: %s\n",m);
101 }
102
do_firedns_getmx(char * string)103 void do_firedns_getmx(char * string) {
104 int fd;
105 fd_set s;
106 int n;
107 struct timeval tv;
108 char *m;
109
110 firestring_fprintf(stderr,"taking firedns_getmx(%s): ",string);
111 fd = firedns_getmx(string);
112 firestring_fprintf(stderr,"%d\n",fd);
113 if (fd == -1)
114 return;
115 tv.tv_sec = 5;
116 tv.tv_usec = 0;
117 FD_ZERO(&s);
118 FD_SET(fd,&s);
119 n = select(fd + 1,&s,NULL,NULL,&tv);
120 m = firedns_getresult(fd);
121 firestring_fprintf(stderr,"getting result: %s\n",m);
122 }
123
do_firedns_getname4(char * string)124 void do_firedns_getname4(char * string) {
125 int fd;
126 fd_set s;
127 int n;
128 struct timeval tv;
129 char *m;
130 struct in_addr *addr4;
131
132 firestring_fprintf(stderr,"taking firedns_getname4(%s): ",string);
133 addr4 = firedns_aton4(string);
134 if (addr4 == NULL) {
135 firestring_fprintf(stderr,"(null)\n");
136 return;
137 }
138 fd = firedns_getname4(addr4);
139 firestring_fprintf(stderr,"%d\n",fd);
140 if (fd == -1)
141 return;
142 tv.tv_sec = 5;
143 tv.tv_usec = 0;
144 FD_ZERO(&s);
145 FD_SET(fd,&s);
146 n = select(fd + 1,&s,NULL,NULL,&tv);
147 m = firedns_getresult(fd);
148 firestring_fprintf(stderr,"getting result: %s\n",m);
149 }
150
do_firedns_getname6(char * string)151 void do_firedns_getname6(char * string) {
152 int fd;
153 fd_set s;
154 int n;
155 struct timeval tv;
156 char *m;
157 struct in6_addr *addr6;
158
159 firestring_fprintf(stderr,"taking firedns_getname6(%s): ",string);
160 addr6 = firedns_aton6(string);
161 if (addr6 == NULL) {
162 firestring_fprintf(stderr,"(null)\n");
163 return;
164 }
165 fd = firedns_getname6(addr6);
166 firestring_fprintf(stderr,"%d\n",fd);
167 if (fd == -1)
168 return;
169 tv.tv_sec = 5;
170 tv.tv_usec = 0;
171 FD_ZERO(&s);
172 FD_SET(fd,&s);
173 n = select(fd + 1,&s,NULL,NULL,&tv);
174 m = firedns_getresult(fd);
175 firestring_fprintf(stderr,"getting result: %s\n",m);
176 }
177
do_firedns_aton6(char * string)178 void do_firedns_aton6(char * string) {
179 struct in6_addr *inaddr6;
180
181 firestring_fprintf(stderr,"taking firedns_aton6(%s): ",string);
182 inaddr6 = firedns_aton6(string);
183 if (inaddr6 == NULL)
184 firestring_fprintf(stderr,"got NULL\n");
185 else
186 fprintf(stderr,"%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x\n",
187 inaddr6->s6_addr[0],
188 inaddr6->s6_addr[1],
189 inaddr6->s6_addr[2],
190 inaddr6->s6_addr[3],
191 inaddr6->s6_addr[4],
192 inaddr6->s6_addr[5],
193 inaddr6->s6_addr[6],
194 inaddr6->s6_addr[7],
195 inaddr6->s6_addr[8],
196 inaddr6->s6_addr[9],
197 inaddr6->s6_addr[10],
198 inaddr6->s6_addr[11],
199 inaddr6->s6_addr[12],
200 inaddr6->s6_addr[13],
201 inaddr6->s6_addr[14],
202 inaddr6->s6_addr[15]);
203 }
204
do_firedns_dnsbl_lookup(char * ip,char * string)205 void do_firedns_dnsbl_lookup(char * ip, char * string) {
206 int fd;
207 fd_set s;
208 int n;
209 struct timeval tv;
210 char *m;
211 struct in_addr *i;
212
213 i = firedns_aton4(ip);
214
215 firestring_fprintf(stderr,"taking firedns_dnsbl_lookup(%s,%s): ",ip,string);
216 fd = firedns_dnsbl_lookup_txt(i,string);
217 firestring_fprintf(stderr,"%d\n",fd);
218 if (fd == -1)
219 return;
220 tv.tv_sec = 5;
221 tv.tv_usec = 0;
222 FD_ZERO(&s);
223 FD_SET(fd,&s);
224 n = select(fd + 1,&s,NULL,NULL,&tv);
225 m = firedns_getresult(fd);
226 firestring_fprintf(stderr,"getting result: %s\n",m);
227 }
228
229
main()230 int main() {
231 do_firedns_aton4("1.2.3.4");
232 do_firedns_aton4("101.102.103.104");
233 do_firedns_aton4("bah");
234 do_firedns_aton4("1.2.3.400");
235 do_firedns_aton4("206.152.182.152");
236 do_firedns_aton4("206.152.182.152)");
237 do_firedns_aton4("ack started...");
238
239 do_firedns_aton6("::");
240 do_firedns_aton6("3ffe:b80:346:1:204:5aff:fece:7852");
241 do_firedns_aton6("fe80::204:5aff:fece:7852");
242 do_firedns_aton6("bah");
243
244 do_firedns_getip4("host.taconic.net");
245 do_firedns_getip4("celery.n.ml.org");
246 do_firedns_getip4("incandescent.mp3revolution.net");
247 do_firedns_getip4("dharr.stu.rpi.edu");
248 do_firedns_getip4("ftp.us.kernel.org");
249 do_firedns_getip4("cool.dk");
250
251 do_firedns_getip6("ftp.stealth.net");
252 do_firedns_getip6("www.ipv6.org");
253 do_firedns_getip6("z.ip6.int");
254
255 do_firedns_gettxt("2.0.0.127.inputs.orbz.org");
256 do_firedns_gettxt("2.0.0.127.outputs.orbz.org");
257 do_firedns_gettxt("2.0.0.127.bl.spamcop.net");
258 do_firedns_gettxt("2.0.0.127.relays.ordb.org");
259
260 do_firedns_getmx("spamcop.net");
261 do_firedns_getmx("penguinhosting.net");
262 do_firedns_getmx("taconic.net");
263 do_firedns_getmx("microsoft.com");
264 do_firedns_getmx("email.si");
265 do_firedns_getmx("cool.dk");
266
267 do_firedns_getname4("205.231.144.10");
268 do_firedns_getname4("208.171.237.190");
269 do_firedns_getname4("64.28.67.150");
270 do_firedns_getname4("64.90.162.91");
271
272 do_firedns_getname6("3FFE:0:1:0:0:0:C620:242");
273 do_firedns_getname6("2001:660:1180:1:192:134:0:49");
274 do_firedns_getname6("3FFE:50E:0:0:0:0:0:1");
275
276 do_firedns_dnsbl_lookup("127.0.0.2","list.dsbl.org");
277
278 return 0;
279 }
280