1#
2# RCS: $Id: Makefile.in,v 1.130 2020/10/12 16:13:14 root Exp root $
3
4SHELL=/bin/sh
5
6.SUFFIXES:
7.SUFFIXES: .c .o .pl .pm .pod .html .man
8
9RUNAS   = @ufdb_user@
10
11CC	= @CC@
12CXX     = @CXX@
13CPP	= @CPP@
14LEX	= @LEX@
15YACC	= @BISON@
16PERL	= @PERL@
17MKDIR   = @top_srcdir@/mkinstalldirs
18CHOWN   = chown $(RUNAS)
19INSTALL	= @INSTALL@        # -o $(RUNAS)
20INSTALL_DATA = @INSTALL_DATA@
21INSTALL_PROGRAM = @INSTALL_PROGRAM@
22
23RM = rm -f
24# SOLARIS_LIBS= -lsocket -lnsl -lrt -L /opt/csw/lib
25
26CFLAGS	= @CFLAGS@  -Wall -Wextra
27CXXFLAGS= @CXXFLAGS@  -Wall -Wextra
28CPPFLAGS= @CPPFLAGS@
29LDFLAGS	= @LDFLAGS@
30LIBS	= @LIBS@
31DEFS	= @DEFS@
32DPDK_LIBS= @DPDK_LIBS@
33SOLARIS_LIBS = @SOLARIS_LIBS@
34
35# The following flags are tuned for Linux 2.6 on Intel with gcc 3.3.6
36INCLUDES         = -I.. -I. -I$(srcdir)
37MALLOC_DEBUG     = # MALLOC_CHECK_=2
38CFLAGS_PROFILING = # -pg -g -O2 # -finline-limit=1
39CFLAGS_DEBUG     = -O0 -g -ggdb # -O0 -g  -DUFDB_FREE_MEMORY # -DUFDB_DO_DEBUG
40LINK_DEBUG	 = # -lmemusage
41LINK_DEBUG	 = # -static # -static-libgcc -static
42CFLAGS_OPT	 = # -Wall -O2 -momit-leaf-frame-pointer # -march=pentium4
43XXCFLAGS         = -Wall -O2 -momit-leaf-frame-pointer # -minline-all-stringops
44XXXCFLAGS  	 = -Wall -DUFDB_DBFORMAT_3=1 $(CFLAGS_OPT) -I. \
45                   $(CFLAGS_DEBUG) $(CFLAGS_PROFILING)
46XXXLDFLAGS       = $(CFLAGS_PROFILING) $(CFLAGS_DEBUG) $(LINK_DEBUG)
47
48CCOMPILE         = $(CC) $(INCLUDES) $(CFLAGS)
49COMPILE          = $(CC) $(INCLUDES) $(CFLAGS)
50LINK             = $(CC) $(CFLAGS) $(LDFLAGS) -o $@
51
52top_srcdir = @top_srcdir@
53srcdir     = @srcdir@
54VPATH      = @srcdir@
55
56prefix	    = @prefix@
57exec_prefix = @exec_prefix@
58bindir	    = @ufdb_bindir@
59piddir	    = @ufdb_piddir@
60logdir	    = @ufdb_logdir@
61cfgdir	    = @ufdb_config@
62syscfgfile  = @ufdb_sysconfigfile@
63dbhome      = @ufdb_dbhome@
64images_dir  = @ufdb_images_dir@
65
66
67UFDBOBJS= \
68	  engine.o  \
69          ufdbbase.o ufdbdaemon.o sgDiv.o crypt.o grammar.o lex.yy.o ufdbLookup.o ufdblib.o \
70	  sgLog.o ufdbLogConfig.o \
71	  ufdbglobals.o ufdbdb.o ufdbUserlist.o ufdbIPlist.o \
72	  ufdbchkport.o httpsQueue.o \
73	  ufdbHostnames.o \
74	  ufdbHashtable.o
75
76first:  ufdbGenTable
77	@echo
78	@echo "or maybe you want to type 'make all' (see the Reference Manual)"
79
80all::
81	@echo making $@ in `basename \`pwd\``
82
83all::	$(UFDBOBJS) ufdbGenTable ufdbhttpd ufdbAnalyse daemon \
84		ufdb_analyse_urls.pl ufdb_analyse_users.pl ufdb_top_urls.pl ufdb_top_users.pl
85	@echo making $? in `basename \`pwd\``
86
87ufdbGuard:	main.o ufdbguard.o $(UFDBOBJS)
88	$(LINK) main.o ufdbguard.o $(UFDBOBJS) $(LIBS)
89
90conf: grammar.o lex.yy.o
91	$(CCOMPILE) -o conf grammar.o lex.yy.o
92
93ufdbguard.o:	ufdbguard.c sg.h ufdb.h
94	$(COMPILE) -c ufdbguard.c
95
96main.o:	main.c sg.h ufdb.h
97	$(COMPILE) -c main.c
98
99sgLog.o:	sgLog.c sg.h ufdb.h
100	$(COMPILE) -c sgLog.c
101
102sgDiv.o: sgDiv.c sg.h ufdb.h
103	$(COMPILE) -c sgDiv.c
104
105httpserver.o: httpserver.c ufdb.h ufdblib.h httpserver.h version.h
106	$(COMPILE) -c httpserver.c
107
108ufdbAnalyse.o: ufdbAnalyse.c ufdb.h ufdblib.h
109	$(COMPILE) -c ufdbAnalyse.c
110
111ufdbchkport.o: ufdbchkport.c ufdbchkport.h ufdb.h
112	$(COMPILE) -c ufdbchkport.c
113
114ufdbHostnames.o: ufdbHostnames.c ufdbHostnames.h ufdb.h
115	$(COMPILE) -c ufdbHostnames.c
116
117ufdbbase.o: ufdbbase.c ufdb.h
118	$(COMPILE) -c ufdbbase.c
119
120crypt.o: crypt.c ufdb.h
121	$(COMPILE) -I. -c crypt.c
122
123ufdbdaemon.o: ufdbdaemon.c ufdb.h
124	$(COMPILE) -c ufdbdaemon.c
125
126engine.o: engine.c ufdb.h sg.h ufdblib.h ufdbdb.h ufdbchkport.h   # ufdbdb3.h
127	$(COMPILE) -c engine.c
128
129ufdbLookup.o: ufdbLookup.c ufdb.h
130	$(COMPILE) -c ufdbLookup.c
131
132ufdblib.o: ufdblib.c ufdblib.h ufdb.h
133	$(COMPILE) -c ufdblib.c
134
135ufdbdb.o: ufdbdb.c strcmpurlpart.static.c ufdbdb.h ufdb.h sg.h   # ufdbdb3.h ufdbParseTable3.c
136	$(COMPILE) -c ufdbdb.c
137
138ufdbParseTable3.c: ufdbdb.h ufdbdb3.h
139	touch ufdbParseTable3.c
140
141httpsQueue.o: httpsQueue.c httpsQueue.h ufdb.h
142	$(COMPILE) -c httpsQueue.c
143
144ufdbHhashtable.o: ufdbHashtable.c ufdbHashtable.h ufdb.h
145	$(COMPILE) -c ufdbHashtable.c
146
147lex.yy.o: lex.yy.c grammar.tab.h sg.h ufdb.h
148	$(CCOMPILE) -D_XOPEN_SOURCE=600 -D__EXTENSIONS__=1 -D_DEFAULT_SOURCE=1 -D_BSD_SOURCE=1 -c lex.yy.c
149
150grammar.o: grammar.tab.c grammar.tab.h sg.h ufdb.h
151	$(CCOMPILE) -D_XOPEN_SOURCE=600 -D__EXTENSIONS__=1 -D_DEFAULT_SOURCE=1 -D_BSD_SOURCE=1 -c grammar.tab.c
152
153lex.yy.c: sg.l sg.h ufdb.h grammar.tab.h
154	-$(LEX) sg.l
155	if [ ! -s lex.yy.c ]; then cp lex.yy.c.flex lex.yy.c ; fi
156
157lex.yy.c.flex: sg.l sg.h ufdb.h
158	-$(LEX) sg.l
159	mv -f lex.yy.c lex.yy.c.flex
160
161grammar.tab.c grammar.tab.h: grammar.y
162	-$(YACC) -d -Wall grammar.y
163	if [ ! -s grammar.tab.c ] ; then cp grammar.tab.c.bison grammar.tab.c;  cp grammar.tab.h.bison grammar.tab.h; fi
164
165grammar.tab.c.bison grammar.tab.h.bison: grammar.y
166	-$(YACC) -d -Wall grammar.y
167	mv -f grammar.tab.c grammar.tab.c.bison
168	mv -f grammar.tab.h grammar.tab.h.bison
169
170#
171# Dependencies for installing
172#
173
174daemon: $(UFDBOBJS)
175	cd mtserver; $(MAKE)
176
177ufdbhttpd: ufdbhttpd.o httpserver.o ufdbglobals.o ufdbbase.o ufdblib.o crypt.o ufdbdaemon.o ufdblocks.o
178	$(LINK) ufdbhttpd.o httpserver.o ufdbglobals.o ufdbbase.o ufdblib.o crypt.o ufdbdaemon.o ufdblocks.o $(LIBS)
179
180perftest1: perftest1.o ufdbbase.o ufdblib.o sgLog.o crypt.o
181	$(LINK) perftest1.o ufdbbase.o ufdblib.o sgLog.o crypt.o $(LIBS)
182
183skype:  ufdbpeek
184	./ufdbpeek -S 212.187.172.36 ; echo
185	./ufdbpeek -S 201.21.44.109 ; echo
186	./ufdbpeek -S 195.46.253.219 ; echo
187	./ufdbpeek -S 189.60.178.218 ; echo
188	./ufdbpeek -S 189.4.48.216 ; echo
189	./ufdbpeek -S 127.0.0.1 ; echo
190	./ufdbpeek -S 201.37.252.147 ; echo
191	:
192	./ufdbpeek -S 189.110.217.176 ; echo
193	./ufdbpeek -S 201.83.213.173 ; echo
194	./ufdbpeek -S 201.82.126.39 ; echo
195	./ufdbpeek -S 201.83.213.173 ; echo
196	./ufdbpeek -S 201.82.126.39 ; echo
197	./ufdbpeek -S 201.68.248.132 ; echo
198	:
199	./ufdbpeek -S 190.162.54.100 ; echo
200	./ufdbpeek -S 190.254.192.114 ; echo
201	./ufdbpeek -S 190.19.192.98 ; echo
202	./ufdbpeek -S 186.83.240.8 ; echo
203	./ufdbpeek -S 190.247.17.35 ; echo
204	:
205	./ufdbpeek -S 209.211.201.45 ; echo
206
207
208
209iptst: iptst.o ufdbbase.o ufdblib.o crypt.o sgLog.o
210	$(LINK) iptst.o ufdbbase.o ufdblib.o crypt.o sgLog.o $(LIBS)
211
212ipt: iptst
213	LANG=en_US.UTF-8 iptst
214
215install::	 install.bin install.etc install.pid install.security install.checks install.log
216	@echo making $@ in `basename \`pwd\``
217	@echo
218	@echo "=================================================================="
219	@echo "ufdbGuard daemon runs with user id" $(RUNAS)
220	@echo "ufdbGuard binaries are installed in" $(bindir)
221	@echo "ufdbGuard configuration file is installed in" $(cfgdir)
222	@echo "ufdbGuard system configuration file is installed in" $(syscfgfile)
223	@echo "=================================================================="
224	@echo
225
226uninstall::	 uninstall.bin
227	@echo making $@ in `basename \`pwd\``
228
229install.bin: ufdbGenTable ufdbAnalyse ufdbhttpd createdirs install.mt install.images install.update install.debug
230	@echo making $@ in `basename \`pwd\``
231	$(INSTALL_PROGRAM) ufdbConvertDB $(DESTDIR)$(bindir)/ufdbConvertDB
232	$(INSTALL_PROGRAM) ufdbGenTable $(DESTDIR)$(bindir)/ufdbGenTable
233	$(INSTALL_PROGRAM) ufdbAnalyse $(DESTDIR)$(bindir)/ufdbAnalyse
234	$(INSTALL_PROGRAM) ufdbhttpd $(DESTDIR)$(bindir)/ufdbhttpd
235	$(INSTALL_PROGRAM) ufdb_analyse_urls.pl $(DESTDIR)$(bindir)/ufdb_analyse_urls
236	$(INSTALL_PROGRAM) ufdb_analyse_users.pl $(DESTDIR)$(bindir)/ufdb_analyse_users
237	$(INSTALL_PROGRAM) ufdb_top_urls.pl $(DESTDIR)$(bindir)/ufdb_top_urls
238	$(INSTALL_PROGRAM) ufdb_top_users.pl $(DESTDIR)$(bindir)/ufdb_top_users
239	@if [ -f ufdbpeek ] ; then $(INSTALL_PROGRAM) ufdbpeek $(DESTDIR)$(bindir)/ufdbpeek ; fi
240	@if [ -f $(DESTDIR)$(cfgdir)/ufdbGuard.conf ] ; then echo "$(DESTDIR)$(cfgdir)/ufdbGuard.conf already exists." ; else $(INSTALL_DATA) ufdbGuard.conf $(DESTDIR)$(cfgdir)/ufdbGuard.conf.sample ; fi
241
242install.pid::
243	if [ $(piddir) != /var/tmp ] ; then $(INSTALL) -d $(DESTDIR)$(piddir) ; fi
244
245install.update::
246	./copy_user_params $(DESTDIR)$(bindir)/ufdbUpdate ufdbUpdate
247	$(INSTALL_PROGRAM) ufdbUpdate $(DESTDIR)$(bindir)/ufdbUpdate
248	$(INSTALL_PROGRAM) ufdbDLstatus $(DESTDIR)$(bindir)/ufdbDLstatus
249
250install.security::
251	echo "Installing SSL root certificates"
252	$(INSTALL_DATA) security/cacerts  $(DESTDIR)$(dbhome)/security/cacerts.sample
253
254install.etc::
255	sh ./install_etcfiles.sh $(DESTDIR)$(cfgdir) $(DESTDIR)$(bindir)
256
257install.debug::
258	-if [ -x /usr/bin/debuginfo-install ] ; then /usr/bin/debuginfo-install glibc ; fi
259
260install.checks::
261	# -@./check_config_file $(DESTDIR)$(cfgdir)/ufdbGuard.conf
262	-@./check_dns "@NSLOOKUP@" "@HOST@" "@DIG@"
263	-@./check_gdb "@GDB@"
264
265install.log::
266	-@if [ "$(DESTDIR)" = "" ] ; then \
267	   sh ./install_log.sh $(RUNAS) $(prefix) $(DESTDIR)$(bindir) $(DESTDIR)$(logdir) $(DESTDIR)$(cfgdir) $(DESTDIR)$(images_dir) $(DESTDIR)$(dbhome) $(DESTDIR)$(syscfgfile) ;  \
268	fi
269
270createdirs::
271	echo "Creating directories ..."
272	$(INSTALL) -d $(DESTDIR)$(bindir)
273	$(INSTALL) -o $(RUNAS) -d $(DESTDIR)$(logdir)
274	$(INSTALL) -d $(DESTDIR)$(cfgdir)
275	$(INSTALL) -d $(DESTDIR)`dirname $(syscfgfile)`
276	$(INSTALL) -o $(RUNAS) -d $(DESTDIR)$(dbhome)
277	$(INSTALL) -o $(RUNAS) -d $(DESTDIR)$(dbhome)/security
278	$(INSTALL) -d $(DESTDIR)$(images_dir)
279
280uninstall.bin::
281	@echo making $@ in `basename \`pwd\``
282	$(RM) $(DESTDIR)$(bindir)/ufdbGuard
283	$(RM) $(DESTDIR)$(bindir)/ufdbguardd
284	$(RM) $(DESTDIR)$(bindir)/ufdbsignal
285	$(RM) $(DESTDIR)$(bindir)/ufdbgclient
286	$(RM) $(DESTDIR)$(bindir)/ufdbhttpd
287	$(RM) $(DESTDIR)$(bindir)/ufdb_analyse_urls
288	$(RM) $(DESTDIR)$(bindir)/ufdb_analyse_users
289	$(RM) $(DESTDIR)$(bindir)/ufdb_top_urls
290	$(RM) $(DESTDIR)$(bindir)/ufdb_top_users
291
292
293install.mt::
294	( cd mtserver ; $(MAKE) )
295	$(INSTALL_PROGRAM) mtserver/ufdbguardd  $(DESTDIR)$(bindir)/ufdbguardd
296	$(INSTALL_PROGRAM) mtserver/ufdbgclient $(DESTDIR)$(bindir)/ufdbgclient
297	$(INSTALL_PROGRAM) mtserver/ufdb-pstack $(DESTDIR)$(bindir)/ufdb-pstack
298	-@echo "ignore the next error from chown when building a package as non-root user"
299	-$(RM) $(DESTDIR)$(bindir)/ufdbsignal ; \
300		$(INSTALL_PROGRAM) mtserver/ufdbsignal  $(DESTDIR)$(bindir)/ufdbsignal  ; \
301		chown root $(DESTDIR)$(bindir)/ufdbsignal  ;  \
302		chmod +s $(DESTDIR)$(bindir)/ufdbsignal
303
304install.images::
305	$(INSTALL_DATA) images/forbidden-normal-de.png $(DESTDIR)$(images_dir)/forbidden-normal-de.png
306	$(INSTALL_DATA) images/forbidden-normal-en.png $(DESTDIR)$(images_dir)/forbidden-normal-en.png
307	$(INSTALL_DATA) images/forbidden-normal-es.png $(DESTDIR)$(images_dir)/forbidden-normal-es.png
308	$(INSTALL_DATA) images/forbidden-normal-fr.png $(DESTDIR)$(images_dir)/forbidden-normal-fr.png
309	$(INSTALL_DATA) images/forbidden-normal-it.png $(DESTDIR)$(images_dir)/forbidden-normal-it.png
310	$(INSTALL_DATA) images/forbidden-normal-nl.png $(DESTDIR)$(images_dir)/forbidden-normal-nl.png
311	$(INSTALL_DATA) images/forbidden-normal-pl.png $(DESTDIR)$(images_dir)/forbidden-normal-pl.png
312	$(INSTALL_DATA) images/forbidden-normal-pt.png $(DESTDIR)$(images_dir)/forbidden-normal-pt.png
313	$(INSTALL_DATA) images/forbidden-normal-tr.png $(DESTDIR)$(images_dir)/forbidden-normal-tr.png
314	$(INSTALL_DATA) images/forbidden-normal-sv.png $(DESTDIR)$(images_dir)/forbidden-normal-sv.png
315	$(INSTALL_DATA) images/no-ads.png      $(DESTDIR)$(images_dir)/no-ads.png
316	$(INSTALL_DATA) images/smallcross.png  $(DESTDIR)$(images_dir)/smallcross.png
317	$(INSTALL_DATA) images/square.png      $(DESTDIR)$(images_dir)/square.png
318	$(INSTALL_DATA) images/transparent.png $(DESTDIR)$(images_dir)/transparent.png
319	$(INSTALL_DATA) images/default.flv     $(DESTDIR)$(images_dir)/default.flv
320	$(INSTALL_DATA) images/default.mp3     $(DESTDIR)$(images_dir)/default.mp3
321	$(INSTALL_DATA) images/default.wmv     $(DESTDIR)$(images_dir)/default.wmv
322	$(INSTALL_DATA) images/default.mpeg    $(DESTDIR)$(images_dir)/default.mpeg
323
324update::
325	@echo making $@ in `basename \`pwd\``
326
327update:: lex.yy.c.flex grammar.tab.c.bison grammar.tab.h.bison
328
329tu:
330	./copy_user_params $(DESTDIR)$(bindir)/ufdbUpdate ufdbUpdate
331
332#
333# Dependencies for cleanup
334#
335
336clean::
337	@echo making $@ in `basename \`pwd\``
338	$(RM) *~ *.bak core core.* *.log *.log.[0-9] *.error
339	$(RM) *.o grammar.tab.c grammar.tab.h ufdbGuard ufdbGenTable ufdbAnalyse ufdbPrintTable ufdbhttpd
340	$(RM) ufdbGenTable2 ufdbGenTable3
341	$(RM) ipv6 iptst rwtest lex.yy.c
342	$(RM) gentable.cg.out gentable.cg.report* vt.log vt2.log
343	$(RM) ttt domains*.ufdb domains*.stderr print*.out gmon.out
344	$(RM) ttt.p1 ttt.in1 ttt.p2 ttt.in2 ttt.p3 ttt.in3
345	$(RM) ufdb_analyse_urls.pl ufdb_analyse_users.pl ufdb_top_urls.pl ufdb_top_users.pl
346	@- ( cd mtserver  &&  $(MAKE) clean )
347
348realclean:: clean
349	@echo making $@ in `basename \`pwd\``
350	$(RM) ufdbpeek limtest
351	$(RM) TAGS tags *.orig
352	$(RM) *.ufdb perftest1
353	$(RM) nohup.out v1.out v2.out v2.stderr v3.out v3v.out v4.out d4.out d4.prof d3.out d3.prof
354	$(RM) e1.out u2.out u00.out u0.out v00.out s2.out p33.prof t3.prof 100000.out
355	$(RM) install.log
356
357distclean:: realclean
358	@echo making $@ in `basename \`pwd\``
359	$(RM) Makefile sg.h ufdb.h config.h ufdbUpdate ufdbConvertDB ufdbGuard.conf
360	$(RM) init.ufdbguard install_etcfiles.sh version.h
361	$(RM) d0.ufdb d1.ufdb d2.ufdb
362	-cd mtserver ;  $(MAKE) distclean
363
364apidistclean: distclean
365	@echo making $@ in `basename \`pwd\``
366	-cd api ;  $(MAKE) distclean
367
368grab: ufdbGrab
369	./ufdbGrab $(DESTDIR)$(cfgdir) $(DESTDIR)$(logdir)
370
371#
372# Dependencies for maintenance
373#
374
375subdir = src
376
377Makefile: Makefile.in ../config.status
378	cd .. && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
379
380ufdb.h: ufdb.h.in ../config.status
381	cd .. && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
382
383sg.h: sg.h.in ../config.status
384	cd .. && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
385
386ufdbConvertDB: ufdbConvertDB.in ../config.status
387	cd .. && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
388
389ufdbUpdate: ufdbUpdate.in ../config.status
390	cd .. && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
391
392install_etcfiles.sh: install_etcfiles.sh.in ../config.status
393	cd .. && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
394
395init.ufdbguard: init.ufdbguard.in ../config.status
396	cd .. && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
397
398ctags:
399	ctags *.y *.l sg*.c strcmpurlpart.static.c engine.c crypt.c genTable.c genTable3.c printTable.c ufdbpeek.c ufdb*c ufdbHashtable.c http*.c *.h
400
401rwtest.o: rwtest.c
402	gcc -O0 -c rwtest.c
403
404rwtest: rwtest.o
405	$(LINK) $(LINK_DEBUG) rwtest.o -lpthread
406
407ufdbGenTable: genTable.o ufdbglobals.o ufdbbase.o ufdblib.o ufdbdb.o crypt.o
408	$(LINK) $(LINK_DEBUG) genTable.o ufdbglobals.o ufdbbase.o ufdblib.o ufdbdb.o crypt.o -lbz2 -lz $(DPDK_LIBS) $(SOLARIS_LIBS)  # $(LIBS)
409
410ufdbGenTable.static: remove.ufdbGenTable genTable.o ufdbglobals.o ufdbbase.o ufdblib.o crypt.o
411	$(LINK) $(LINK_DEBUG) -static-libgcc -static genTable.o ufdbglobals.o ufdbbase.o ufdblib.o crypt.o -lbz2 -lz $(DPDK_LIBS) $(SOLARIS_LIBS)
412	mv ufdbGenTable.static ufdbGenTable
413
414ufdb_analyse_urls.pl: ufdb_analyse_urls.pl.in
415	cd .. && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
416
417ufdb_analyse_users.pl: ufdb_analyse_users.pl.in
418	cd .. && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
419
420ufdb_top_urls.pl: ufdb_top_urls.pl.in
421	cd .. && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
422
423ufdb_top_users.pl: ufdb_top_users.pl.in
424	cd .. && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
425
426genTable.o:: genTable.c strcmpurlpart.static.c ufdbdb.h ufdb.h ufdblib.h    # genTable3.c ufdbdb3.h
427# 	gcc  -O0 -g -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=1 -fstack-protector-all    -c -o genTable2.o genTable2.c
428
429genTable3.c: ufdbdb.h ufdbdb3.h
430	touch genTable3.c
431
432ufdbdb.s: ufdbdb.c Makefile sh.h ufdb.h ufdblib.h
433	gcc -g -O3 -march=core2 -mtune=core2 -c ufdbdb.c -S -dA
434
435dd: ufdbGenTable2
436	-rm genTable2.o
437	@echo "      run -DD -d domains0.in -u urls0.in"
438	@echo "      run -DD -d domains2.in "
439	MALLOC_CHECK_=2 gdb -ix ./.gdbrc ./ufdbGenTable2
440
441ddv: ufdbGenTable2
442	valgrind --verbose --vgdb=yes --db-attach=yes --log-file=vt.log --leak-check=no --tool=memcheck ./ufdbGenTable2 -d domains3.in 2>vt2.log
443
444g2 ufdbGenTable2: genTable2.o ufdbbase.o ufdblib.o ufdbdb.o crypt.o
445	$(LINK) $(LINK_DEBUG) genTable2.o ufdbbase.o ufdblib.o ufdbdb.o crypt.o -lbz2 -lz $(SOLARIS_LIBS)  # $(LIBS)
446
447ddt: ufdbGenTable ufdbGenTable2
448	: time ./ufdbGenTable -d /tmp/domains -u /tmp/urls 2>/dev/null
449	time ./ufdbGenTable2 -F 2.1 -p -n -d /tmp/domains -u /tmp/urls 2>/dev/null
450
451remove.ufdbGenTable:
452	-rm -f ufdbGenTable
453
454ufdbAnalyse: ufdbAnalyse.o ufdbglobals.o ufdblib.o ufdbbase.o crypt.o ufdblocks.o
455	$(LINK) $(LINK_DEBUG) ufdbAnalyse.o ufdbglobals.o ufdblib.o ufdbbase.o crypt.o ufdblocks.o -lbz2 -lz -lpthread $(SOLARIS_LIBS)
456
457ufdbPrintTable: printTable.o ufdbglobals.o ufdblib.o ufdbdb.o ufdbbase.o crypt.o
458	$(LINK) $(LINK_DEBUG) printTable.o ufdbglobals.o ufdblib.o ufdbdb.o ufdbbase.o crypt.o -lbz2 -lz  # $(LIBS)
459
460ufdbpeek: ufdbpeek.o ufdbchkport.o ufdbHashtable.o httpsQueue.o ufdbglobals.o ufdblib.o ufdbdb.o ufdbbase.o ufdblocks.o ufdbdaemon.o sgLog.o crypt.o grammar.o lex.yy.o engine.o ufdbUserlist.o ufdbIPlist.o ufdbLookup.o sgDiv.o
461	$(LINK) $(LINK_DEBUG) ufdbpeek.o ufdbchkport.o ufdbHashtable.o httpsQueue.o ufdbglobals.o ufdblib.o ufdbdb.o ufdbbase.o ufdblocks.o ufdbdaemon.o sgLog.o crypt.o grammar.o lex.yy.o engine.o ufdbUserlist.o ufdbIPlist.o ufdbLookup.o sgDiv.o  \
462	-L/usr/local/lib  $(LIBS)
463
464t7: ufdbhttpd
465	ufdbhttpd -d -p 9999 -I /local/squid/images -l .
466
467t7d: t7k ufdbhttpd
468	echo "   run -D -d -p 9999 -I /local/squid/images -l ."
469	gdb ufdbhttpd
470
471t7p: ufdbpeek
472	-valgrind  --partial-loads-ok=no  --verbose --track-fds=yes --tool=memcheck ./ufdbpeek -d 12.130.81.218
473	# -valgrind  --partial-loads-ok=no  --verbose --track-fds=yes --tool=memcheck ./ufdbpeek www.lotuslive.com
474
475t7k:
476	-killall ufdbhttpd
477
478t77:
479	wget -q -O - --header='Accept-Language: it' "http://localhost:8081/cgi-bin/URLblocked.cgi?admin=Marcus&mode=transparent&category=adult&clientuser=paulo&url=www.sex.com"
480	@echo
481	wget -q -O - --header='Accept-Language: nl' "http://localhost:8081/cgi-bin/URLblocked.cgi?admin=Marcus Kool&mode=transparent&category=adult&clientuser=jan&clientgroup=allSystems&url=www.sex.com"
482	@echo
483
484t8: ufdbpeek
485	./ufdbpeek www.ibm.com
486
487t9: ufdbpeek
488	./ufdbpeek alice.sni.velox.ch
489	./ufdbpeek bob.sni.velox.ch
490	./ufdbpeek www.blogger.com
491	./ufdbpeek forge.ogf.org
492	./ufdbpeek forge.gridforum.org
493	./ufdbpeek en.wiki.aktivix.org
494	./ufdbpeek www.urlfilterdb.com
495	./ufdbpeek Webmail.Xs4all.nl
496	./ufdbpeek gna.org
497	./ufdbpeek www.microsoft.com
498	./ufdbpeek www.ibm.com
499	./ufdbpeek www.goedkopen.nl
500	./ufdbpeek powerlink.emc.com
501	./ufdbpeek mijn.postbank.nl
502	./ufdbpeek safe2login.com
503	./ufdbpeek secure.soligor.com
504	./ufdbpeek www.openca.org
505	./ufdbpeek www.verisign.com
506	./ufdbpeek apps.lotuslive.com
507	./ufdbpeek www.lotuslive.com
508
509
510t: ufdbGenTable
511	-ufdbGenTable -F 2.1 -DD -k abcdefghijklmnop -t test0t -d domains0.in -u urls0.in 2>domains0.stderr
512	cat domains0.stderr
513
514tcg: ufdbGenTable
515	MALLOC_ARENA_MAX=15 valgrind --tool=callgrind --collect-bus=yes --collect-systime=yes  \
516		--callgrind-out-file=gentable.cg.out \
517		./ufdbGenTable2 -n -q -F 2.0 -d domains3.in -u urls3.in
518	callgrind_annotate --tree=both gentable.cg.out  *.c > gentable.cg.report
519
520ts: ufdbGenTable
521	-ufdbGenTable -n -s -k abcdefghijklmnop -t test0t -d domains0.in -u urls0.in 2>domains0.stderr
522	cat domains0.stderr
523
524g0: ufdbGenTable
525	-valgrind  --partial-loads-ok=no  --verbose --track-fds=yes --tool=memcheck ufdbGenTable -n -k abcdefghijklmnop -t test0t -d domains0.in -u urls0.in 2>domains0.stderr
526	cat domains0.stderr
527
528g3: ufdbGenTable
529	-valgrind  --partial-loads-ok=no  --verbose --track-fds=yes --tool=memcheck \
530		./ufdbGenTable -D -Z -S -W -F 3.0 -n -d api/db3/p2p/domains -u api/db3/p2p/urls -t p2p 2>domains0.stderr
531	echo cat domains0.stderr
532
533g: ufdbGenTable
534	@echo "run -d domains0.in"
535	-$(MALLOC_DEBUG) ufdbGenTable
536	cat domains0.stderr
537
538t1: ufdbGenTable
539	-$(MALLOC_DEBUG) ./ufdbGenTable -F 3.0 -n -t t1 -d domains1.in -u urls1.in 2>domains1.stderr
540	cat domains1.stderr
541
542t2: ufdbGenTable domains2.in urls2.in
543	-$(MALLOC_DEBUG) ./ufdbGenTable -F 3.0 -n -t t2 -d domains2.in -u urls2.in 2>domains2.stderr
544	tail -20 domains2.stderr
545
546t3: ufdbGenTable
547	-/usr/bin/time ./ufdbGenTable -F 3.0 -q -n -t t3 -d domains3.in -u urls3.in 2>domains3.stderr
548	: -gprof --brief ./ufdbGenTable > t3.prof
549	tail -20 domains3.stderr
550
551t3b: ufdbGenTable
552	-/usr/bin/time ./ufdbGenTable -F 2.0 -q -n -t t4 -d /tmp/ddd -u /tmp/uuu  2>domains3b.stderr
553	-gprof --brief ./ufdbGenTable > t3b.prof
554	tail -20 domains3b.stderr
555
556t3d: ufdbGenTable
557	echo run -F 2.0 -q -n -t t4 -d /tmp/ddd -u /tmp/uuu
558	-gdb ./ufdbGenTable
559
560optgt: genTable.c
561	rm -f genTable.o
562	CFLAGS="-O3 -minline-all-stringops -I/usr/include"  $(MAKE) -e genTable.o
563	 $(MAKE) ufdbGenTable.static
564
565
566t3c: ufdbGenTable
567	-time ufdbGenTable -C -n -t t3 -d domains3.in -u urls3.in 2>domains3.stderr
568	tail -20 domains3.stderr
569
570t4: ufdbGenTable
571	-valgrind --verbose --freelist-vol=200000 --leak-resolution=med --partial-loads-ok=no --show-reachable=yes --leak-check=full --track-fds=yes --tool=memcheck ufdbGenTable -n -t vt3 -d domains3.in -u urls3.in 2>domains3.stderr
572	tail -20 domains3.stderr
573
574t5: ufdbGenTable
575	-/usr/bin/time ./ufdbGenTable -F 3.0 -n -t t3 -d domains5.in -u urls5.in  2>domains5.stderr
576	: -gprof --brief ./ufdbGenTable > t5.prof
577	tail -20 domains5.stderr
578
579p: ufdbPrintTable
580	-time ufdbPrintTable domains0.in.ufdb
581
582pd: ufdbPrintTable
583	-ufdbPrintTable -d domains0.in.ufdb
584
585p0: ufdbPrintTable
586	-valgrind --verbose --freelist-vol=200000 --leak-resolution=med --partial-loads-ok=no --show-reachable=yes --leak-check=full --track-fds=yes --tool=memcheck ufdbPrintTable -d /tmp/domains.ufdb
587
588pg: ufdbPrintTable
589	@echo "run domains0.in.ufdb"
590	@echo "run domains2.in.ufdb"
591	@echo "run domains2.in.ufdb.3.0-fewlabels"
592	-$(MALLOC_DEBUG) gdb ./ufdbPrintTable
593
594p1: ufdbPrintTable
595	-$(MALLOC_DEBUG) ./ufdbPrintTable domains1.in.ufdb >print1.out
596	sort print1.out >ttt.p1
597	sort domains1.in urls1.in | uniq | tr '[A-Z]' '[a-z]' > ttt.in1
598	diff -C1 ttt.p1 ttt.in1
599
600p2: ufdbPrintTable
601	-$(MALLOC_DEBUG) time ./ufdbPrintTable domains2.in.ufdb >print2.out
602	sort print2.out >ttt.p2
603	sort domains2.in urls2.in | uniq | tr '[A-Z]' '[a-z]' > ttt.in2
604	diff -C1 ttt.p2 ttt.in2
605
606
607p3: ufdbPrintTable
608	-time ./ufdbPrintTable domains3.in.ufdb >print3.out
609	sort print3.out >ttt.p3
610	sort domains3.in urls3.in | uniq | tr '[A-Z]' '[a-z]' > ttt.in3
611	diff -C1 ttt.p3 ttt.in3
612
613p5: ufdbPrintTable
614	-time ./ufdbPrintTable domains5.in.ufdb >print5.out
615	sort print5.out >ttt.p5
616	sort domains5.in urls5.in | uniq | tr '[A-Z]' '[a-z]' > ttt.in5
617	diff -C1 ttt.p5 ttt.in5
618
619p33: ufdbPrintTable
620	-rm -f gmon.out
621	-time ufdbPrintTable domains3.in.ufdb >print3.out
622	-gprof --brief ./ufdbPrintTable > p33.prof
623	tail -20 print3.out
624
625pa: ufdbPrintTable
626	-time ufdbPrintTable /local/squid/blacklists/adult/domains.ufdb >printa.out
627	tail -20 printa.out
628
629u00: ufdbGuard
630	-ufdbGuard -c ./ufdbGuard.conf < test2.in > u00.out 2>&1
631
632u0: ufdbGuard
633	-echo "http://web64.trial.de 10.1.1.44/- - GET" | ufdbGuard  -c /local/squid/etc/ufdbGuard.conf
634
635u1: ufdbGuard
636#	-echo "http://www.reallynosex.com 10.1.1.44/- - GET" | ufdbGuard -d -c /local/squid/etc/ufdbGuard.conf
637#	-echo "http://www.sexycompany.com 10.1.1.44/- - GET" | ufdbGuard -d -c /local/squid/etc/ufdbGuard.conf
638	-echo "http://snarf.google.nl 10.1.1.44/- - GET" | ufdbGuard -d -c /local/squid/etc/ufdbGuard.conf
639	-echo "http://www.google.nl 10.1.1.44/- - GET" | ufdbGuard -d -c /local/squid/etc/ufdbGuard.conf
640	-echo "http://news.google.nl 10.1.1.44/pc-foo-bar-foor-bar-foor-bar.urlfilterdb.com john.doe GET" | ufdbGuard -d -c /local/squid/etc/ufdbGuard.conf
641	-echo "http://fup.news.google.nl 10.1.1.44/- john.with-a-long-middle-name.doe/oursquiddomain GET" | ufdbGuard -d -c /local/squid/etc/ufdbGuard.conf
642	-echo "http://chat.terra.com.br:3456/blah 10.1.1.44/- - GET" | ufdbGuard -d -c /local/squid/etc/ufdbGuard.conf
643	-echo "http://web64.trial.de 10.1.1.44/- - GET" | ufdbGuard -d -c /local/squid/etc/ufdbGuard.conf
644
645u2: ufdbGuard
646	-rm -f gmon.out
647	-./ufdbGuard  -d -c /local/squid/etc/ufdbGuard.conf < test2.in > u2.out 2>&1
648	-grep "time " u2.out
649	-gprof --brief ./ufdbGuard > u2.prof
650
651e1: ufdbGuard
652	-$(MALLOC_DEBUG) ufdbGuard -d -c /local/squid/etc/ufdbGuard.conf < e1.in > e1.out 2>&1
653	-grep "time " e1.out
654
655d2: ufdbGuard
656	@echo "run -d -c /local/squid/etc/ufdbGuard.conf < test2.in"
657	@echo "http://www.google.nl 10.1.1.44/- - GET"
658	-$(MALLOC_DEBUG) gdb ufdbGuard
659
660d3: ufdbGuard
661	-rm -f gmon.out
662	-$(MALLOC_DEBUG) ufdbGuard -d -c /local/squid/etc/ufdbGuardP.conf < test2.in > d3.out 2>&1
663	-gprof --brief ufdbGuard > d3.prof
664	-grep "time " d3.out
665
666d4: ufdbGuard
667	-rm -f gmon.out
668	-ufdbGuard  -c /local/squid/etc/ufdbGuard.conf < 100000 > d4.out 2>&1
669	-gprof --brief ufdbGuard > d4.prof
670	-grep "time " d4.out
671
672v00: ufdbGuard
673	-valgrind --verbose --leak-check=full --show-reachable=yes --tool=memcheck ufdbGuard  -c /local/squid/etc/ufdbGuardV.conf < test2.in > v00.out 2>&1
674
675# --leak-check=full
676v1: ufdbGuard
677	-valgrind --verbose --tool=memcheck ufdbGuard -d -c /local/squid/etc/ufdbGuardV.conf < test2.in > v1.out 2>&1
678	# -valgrind --verbose --tool=memcheck ufdbGuard -d -c sampleufdbGuard.conf < test2.in > v1.out 2>&1
679	-grep "time " v1.out
680
681v2: ufdbGenTable
682	-valgrind --verbose --track-fds=yes --tool=memcheck ufdbGenTable -t t1 -d domains1.in 2>v2.stderr
683
684v3: ufdbGuard
685	- ./ufdbGuard -d -c sampleufdbGuard.conf < test3.in > v3.out 2>&1
686
687perftest:
688	- ./ufdbGuard -c squidGuard.conf < 100000 > 100000.out 2>&1
689	-grep -e "ufdbGuard ready" -e "ufdbGuard stopped" -e " processed .* requests" ufdbGuard.log | tail -n 3
690
691
692
693v3v: ufdbGuard
694	-valgrind --verbose --tool=memcheck --leak-check=full --show-reachable=yes ufdbGuard -d -c sampleufdbGuard.conf < test3v.in > v3v.out 2>&1
695
696v4: ufdbGuard
697	-ufdbGuard -d -c /local/squid/etc/ufdbGuardP.conf < test3.in > v4.out 2>&1
698
699DD=/local/squid/blacklists
700gt: ufdbGenTable
701	for class in always_allow always_deny \
702	             ads adult adult0 audio-video chat dating drugs entertain exceptions finance forum \
703	             gambling games illegal jobs mobile-phone news private proxies \
704		     shops sports travel violence warez webmail ; \
705	do \
706	   if [ $(DD)/$$class/domains.ufdb -ot $(DD)/$$class/domains  -o       \
707	        $(DD)/$$class/domains.ufdb -ot $(DD)/$$class/urls     ] ; then \
708	      echo $$class ... ; \
709	      ufdbGenTable -n -t $$class -d $(DD)/$$class/domains -u $(DD)/$$class/urls ; \
710	   fi ; \
711	done
712
713
714ccversion:
715	$(CC) --version
716
717g2953:
718	$(MAKE) clean
719	CC=/usr/local/gcc/2.95.3/bin/gcc $(MAKE) -e $(MAKEFLAGS) ccversion all ufdbPrintTable
720
721g344:
722	$(MAKE) clean
723	CC=/usr/local/gcc/3.4.4/bin/gcc $(MAKE) -e $(MAKEFLAGS) ccversion all ufdbPrintTable
724
725g401:
726	$(MAKE) clean
727	CC=/usr/local/gcc/4.0.1/bin/gcc $(MAKE) -e $(MAKEFLAGS) ccversion all ufdbPrintTable
728
729g411:
730	$(MAKE) clean
731	CC=/usr/local/gcc/4.1.1/bin/gcc $(MAKE) -e $(MAKEFLAGS) ccversion all ufdbPrintTable
732
733qinst:
734	/etc/init.d/squid stop
735	/etc/init.d/ufdb stop
736	$(MAKE) install
737	/etc/init.d/ufdb start
738	/etc/init.d/squid start
739
740cppsymbols:
741	$(CC) $(CFLAGS) -dM -E - < /dev/null  |   \
742	sort -k2
743	echo
744
745